仿真中训练,现实中奔跑:强化学习如何教会机器狗“走路”?
论文摘要本文提出了一种创新的方法,通过在仿真中训练强化学习策略并成功迁移到物理系统,使ANYmal四足机器人掌握了动态、敏捷的运动技能。核心突破在于构建了一个高保真混合仿真器,它结合了精确的刚体动力学模型和一个从真实数据中学习而来的“执行器网络”,后者准确模拟了复杂电机(串联弹性执行器)的真实动态响应。这种方法有效弥合了“仿真-现实”差距。在仿真中,使用信任域策略优化算法训练策略网络,并结合课程学
翻译和解读ETH Zurich让ANYmal四足机器人学会奔跑、抗干扰、摔倒自恢复的里程碑工作(原文标题是Learning Agile and Dynamic Motor Skills for Legged Robots)
论文相关视频:
Movie S1
Movie S2
Movie S3
Movie S4
Movie S5
Movie S6
Movie S7
原文链接
本文在一些概念上加上了个人的见解,主要用于帮助大家克服英文文献阅读的困难,想要更加准确可以看看原文,如有不当请指正。
一.概述
腿部机器人是机器人学领域的最大挑战之一。 动物所展现的动态与敏捷动作,无法通过现有的人工设计方法进行模仿。一个有吸引力的替代方案是强化学习,它需要极少的专门设计,并能促进控制策略的自然演化。然而,迄今为止,针对腿部机器人的强化学习研究主要局限于仿真环境,仅有少数相对简单的实例被部署到真实系统上。其主要原因在于,使用真实机器人(尤其是需要动态平衡的系统)进行训练既复杂又昂贵。在目前的工作中,我们报告了一种在仿真环境中训练神经网络策略,并将其迁移到先进腿部系统的新方法。 借此,我们利用了快速、自动化且低成本的数据生成方案。该方法被应用于ANYmal机器人——一个复杂的中型犬大小的四足系统。使用在仿真中训练的策略,这台四足机器实现了超越以往方法的行走技能: ANYmal能够精准且高效地跟随高层级的身体速度指令,以比以往更快的速度奔跑,并且即使在复杂姿态下也能从跌倒中恢复。
二.引言
与履带式/轮式机器人相比,腿式机器人系统在崎岖地形和复杂杂乱环境应用中具有吸引人的替代优势。它们可以自由选择与环境的接触点,使其能够克服与腿长相当的障碍。凭借这些能力,腿式机器人有朝一日或可在森林和山地进行人员救援,爬楼梯在建筑工地运送货物,检查非结构化的地下隧道,并探索其他星球。腿式系统有潜力执行人类和动物能够完成的任何体力活动。
为了让我们更接近这一未来愿景,各种腿式系统正在被开发。波士顿动力公司推出了一系列配备液压执行器的机器人[1, 2]。这类机器人由于使用能量密度高的传统燃料驱动,在运行方面具有优势。然而,此类系统无法小型化(通常 > 40公斤),且会产生烟雾和噪音,限制了它们在户外环境的应用。另一类腿式系统配备电动执行器,更适合室内环境。MIT Cheetah [3] 是此类中最有前景的腿式系统之一。它是一款快速、高效、强大的四足机器人,采用了先进的驱动技术设计。但它主要是一个为速度优化的研究平台,在电池续航、转向能力、机械鲁棒性及户外适用性方面尚未得到全面评估。
波士顿动力新推出的机器人 SpotMini 也由电动执行器驱动,专为室内外应用设计。尽管细节尚未公开,但其一系列公开演示和媒体报道[4]都令人信服地证明了其在实际操作中的适用性。本工作所使用的平台 ANYmal [5] 是另一款由电动执行器驱动、前景广阔的四足机器人。其仿生执行器设计使其能抗冲击,同时允许在关节处进行精确的扭矩测量。然而,复杂的执行器设计增加了成本并限制了机器人的功率输出。
为这些硬件平台设计控制算法仍然极具挑战。从控制角度看,这些机器人是高维、非光滑系统,具有许多物理约束。接触点随时间变化,且取决于正在执行的机动动作,因此无法预先指定。机器人的解析模型通常不精确,会导致动力学不确定性。复杂的传感器套件和多个软件层给信息传递带来了噪声和延迟。传统的控制理论往往不足以有效处理这些问题。为应对这一复杂问题而开发的专门控制方法,通常需要冗长的设计过程和艰巨的参数调整。
控制实体腿式系统最流行的方法是模块化控制器设计。这种方法将控制问题分解为更小的子模块,这些子模块在很大程度上解耦,因此更易于管理。每个模块基于模板动力学[6]或启发式方法,并为下一个模块生成参考值。例如,一些流行的方法[7-10]使用一个基于模板动力学的控制模块,将机器人近似为一个带无质量肢体的点质量,以计算下一个足部落点位置。给定落点位置后,下一个模块计算供足部跟随的参数化轨迹。最后一个模块使用简单的比例-积分-微分控制器跟踪该轨迹。由于这些模块的输出是物理量,例如身体高度或足部轨迹,因此每个模块可以单独进行手动调整。此类方法已取得了令人瞩目的成果。Kalakrishnan等人[11]展示了四足机器人在挑战性地形上的稳健运动:迄今为止,这仍是崎岖地形运动的最先进技术。最近,Bellicoso等人[12]通过类似的控制器设计,展示了动态步态、它们之间的平滑过渡以及敏捷的户外运动能力。
然而,尽管模块化设计具有吸引人的特性,但也存在局限。首先,建模细节的有限性制约了模型的准确性。这一固有缺点通常通过将每个模块的操作状态域限制在近似有效的小范围内来缓解。实际上,此类约束会导致性能上的显著妥协,例如加速缓慢、身体姿态固定直立以及肢体速度受限。其次,模块化控制器的设计极其费力。训练有素的工程师需要花费数月时间开发控制器,并为每个新机器人甚至每个新机动动作,艰苦地手动调整每个模块的控制参数。例如,此类跑步和攀爬控制器的架构可能截然不同,并且是分开设计和调试的。
更近期,人们提出了轨迹优化方法以缓解上述问题。 在这些方法中,控制器被分为两个模块:规划与跟踪。规划模块使用刚体动力学和数值优化来计算机器人为了达到期望目标应遵循的最优路径。然后,跟踪模块被用来跟随该路径。一般来说,对于具有许多未指定接触点的复杂刚体模型进行轨迹优化,超出了当前优化技术的能力。因此,在实践中,会采用一系列近似来降低复杂性。一些方法将接触动力学近似为平滑的[13, 14],使动力学可微分。值得注意的是,Neunert等人[13]证明了此类方法可用于控制物理四足机器人。其他方法[15]预先指定接触时序,并求解动力学保持平滑的轨迹段。少数方法旨在以极少或无需近似的方式解决此问题[16, 17]。这些方法可以利用硬接触模型发现步态模式(即接触序列),并已为二维机器人系统展示了自动运动生成能力,但与任何其他轨迹优化方法一样,可能的接触点是先验指定的。虽然比模块化设计更自动化,但现有的优化方法性能仍逊于最先进的模块化控制器。主要问题在于,数值轨迹优化仍然具有挑战性,需要调整参数,并且在许多情况下可能产生次优解。此外,优化必须在机器人执行时进行,这使得这些方法计算成本高昂。这个问题通常通过降低精度或在强大的外部机器上运行优化来解决,但这两种方案都引入了各自的限制。而且,系统仍由两个不相互适应的独立模块组成,这需要对跟踪器进行手动调整;然而,对于一个具有许多意外接触的欠驱动系统来说,准确跟踪快速运动几乎是不可能的。
像强化学习这样的数据驱动方法,承诺通过直接从经验中学习有效的控制器来克服先前基于模型方法的局限。强化学习的理念是通过试错收集数据,并自动调整控制器以优化代表任务的给定成本(或奖励)函数。这个过程是全自动的,可以从传感器读数到低级控制信号对控制器进行端到端的优化,从而实现高度敏捷和高效的控制器。其缺点在于,强化学习通常需要与系统进行极其漫长的交互来学习复杂技能——通常是数周或数月的实时执行[18]。此外,在训练过程中,控制器可能表现出突然和混乱的行为,导致操作复杂性和安全问题。因此,将学习方法直接应用于物理腿式系统是复杂的,并且仅在相对简单稳定的平台[19]或有限场景[20]中得以演示。
由于在物理系统上训练的困难,强化学习在腿式运动方面的多数高级应用仅限于仿真。强化学习领域近期的创新使得为复杂的腿式模型训练运动策略成为可能。Levine和Koltun[21]结合学习和轨迹优化,为模拟的二维步行器训练了一个运动控制器。Schulman等人[22]使用演员-评论家方法为一个类似的二维步行器训练了运动策略。更近期的工作获得了完整的三维运动策略[23-26]。在这些论文中,动画角色在仿真中实现了卓越的运动技能。
鉴于强化学习在仿真环境中取得的成就,一个自然的问题是:这些习得的策略能否部署到物理系统上?不幸的是,这种从仿真到现实的迁移受到了现实差距的阻碍——即仿真与真实系统在动力学和感知方面的差异。弥合现实差距主要有两种方法。第一种是通过解析方法或数据驱动方法来提高仿真保真度;后者也被称为系统辨识[27-32]。第二种方法是接受仿真的不完美性,旨在使控制器对系统属性的变化具有鲁棒性,从而实现更好的迁移。这种鲁棒性可以通过随机化仿真的各个方面来实现:采用随机策略[33]、随机化动力学[34-37]、向观测添加噪声[38]、以及用随机扰动干扰系统。两种方法都能改进迁移效果;然而,前者操作繁琐且通常无法实现,而后者可能影响策略的性能。因此,在实践中,两者通常结合使用。例如,Tan等人近期的研究[35]通过使用精确的解析执行器模型和动力学随机化,展示了名为Minitaur的四足系统上运动策略成功的仿真到现实迁移。尽管取得了令人印象深刻的结果,但Tan等人[35]的方法关键依赖于执行器的精确解析建模,这对于直接驱动执行器(如Minitaur所用)是可能的,但对于更复杂的执行器则不然,例如在大型腿式系统中常用的伺服电机、串联弹性执行器(其实就是像现在的关节电机)和液压缸。
在本工作中,我们为复杂大型腿式系统(如ANYmal机器人[5])开发了一种实用的方法,用于自主学习和迁移敏捷、动态的运动技能。与[35]中使用的机器人相比,ANYmal的腿长相对于其占地面积要大得多,使其更具动态性、静态稳定性更差,因此也更难控制。此外,它配备了12个SEA(串联弹性执行器),这些执行器难以控制,且不存在足够精确的解析模型。Gehring等人[39]曾尝试对SEA进行解析建模,但正如我们将展示的,他们的模型对于训练高性能运动控制器来说精度不足。
我们的方法总结在图1中。我们在仿真方面的关键见解是,可以通过将代表已知铰接系统和接触动力学的经典模型与能够处理复杂驱动特性的学习方法相结合,来实现效率和真实性(图1,步骤1和2)。ANYmal通过高质量滚珠轴承连接的刚性连杆,非常接近于一个可以用已知物理原理[40]建模的理想化多体系统。然而,这个解析模型并不包含将执行器指令映射到作用于刚体系统上的广义力的机制集:执行器动力学、由多个硬件和软件层引入的控制信号延迟、低级控制器动力学以及关节处的柔顺性/阻尼。由于这些机制几乎不可能精确建模,我们通过一个深度网络以端到端的方式——从指令动作到产生的扭矩——学习这种相应的映射关系。我们通过自监督学习在物理系统上学习这个"执行器网络",并在仿真循环中使用它来模拟ANYmal的12个关节中的每一个。关键的是,包括刚体仿真和执行器网络在内的完整混合仿真器,每秒可运行近50万次时间步长,这使得仿真能以大约实时速度的1000倍运行。大约一半的运行时间用于评估执行器网络,其余的计算则通过我们内部的仿真器高效执行,该仿真器利用了Hwangbo等人[41]的快速接触求解器、用于计算铰接系统动态特性的高效递归算法(复合刚体算法和递归牛顿-欧拉算法)[40],以及一个快速碰撞检测库[42]。得益于高效的软件实现,我们训练时不需要任何特殊的计算硬件,例如多CPU或多GPU服务器。本文中呈现的所有训练过程均在一台配备单个CPU和单个GPU的个人计算机上完成,且没有一个训练过程超过11小时。
我们使用混合仿真器通过强化学习(图1,步骤3)训练控制器。该控制器由一个多层感知器表示,它以机器人状态历史为输入,并输出关节位置目标。为强化学习指定不同的奖励函数可以产生适用于不同目标任务的控制策略。
训练后的控制器随后直接部署到物理系统上(图1,步骤4)。与现有的基于模型的控制方法不同,我们提出的方法在运行时计算效率极高。本工作中使用的简单网络在单个CPU线程上的推断时间仅为25微秒,这大约仅占实验所用机器人板载可用计算资源的0.1%。相比之下,基于模型的控制方法通常需要外部计算机才能以足够高的频率运行[13, 15]。此外,通过简单地替换网络参数集,学习到的控制器就能展现出截然不同的行为。尽管这些行为是分开训练的,但它们共享相同的代码库:只有高层任务描述根据所需行为而改变。相反,大多数现有控制器都是针对特定任务的,几乎必须为每项新机动动作从头开始开发。
我们将所提出的方法应用于学习若干复杂的运动技能,并将其部署到物理四足机器人上。首先,与在同一硬件上运行的最佳先前控制器相比,该控制器使ANYmal机器人能够更准确、更节能地跟踪基座速度指令。其次,该控制器使机器人跑得比以往任何时候都快,将ANYmal之前的速度记录提高了25%。该控制器可以在硬件极限下运行,并将性能推向极致。第三,我们学习了一个控制器用于从跌倒中动态恢复。这个动作对现有方法来说异常具有挑战性,因为它涉及多个未事先定义的内部与外部接触。它需要精细地协调所有肢体的动作,并且必须利用动量来动态翻转机器人。据我们所知,此前从未在复杂度相当的足式机器人上实现过此类恢复技能。

图片解释:
- 1.随机性的刚性身体建模
- 2.使用真实数据训练关于执行器的网络
- 3.强化学习模型通过仿真模型给到的机器人状态,输出动作给执行器的网络,执行器网络输出扭矩,扭矩执行到仿真模型上,得到神经网络模型
- 4.将仿真得到的强化学习模型部署到真实的机器人系统上
三.命令条件下的运动
在大多数实际场景中,机器人的运动由高层导航指令引导,例如期望的运动方向和速度。这些指令可由上层规划算法或用户通过遥操作提供。利用我们的方法,我们训练了一种运动策略,能够在运行时遵循此类指令,根据需要调整步态,且无需事先知道指令序列和时间安排。一条指令包含三个分量:前进速度、侧向速度和偏航角速度。
我们首先通过使用操纵杆发送随机指令,对学习到的运动策略进行定性评估。此外,在实验过程中,我们多次外力推击机器人躯干以施加干扰。产生的行为如影片S2所示。视频展示了大约40秒的鲁棒指令跟随过程。我们还对该策略进行了长达五分钟的测试,未出现任何一次失败,这证明了学习策略的鲁棒性。
训练好的策略在其训练所用的指令分布范围内表现稳定,能够处理指令速度的任意随机组合。虽然在训练期间,前进指令速度是从区间U(-1,1) m/s中采样的,但当将前进指令速度设为略高(1.23 m/s)而其他指令速度设为零时,训练好的策略可稳定达到1.2 m/s的实测前进速度。
接下来,我们通过用随机采样的指令驱动机器人,定量评估这一学习到的运动策略。指令的采样方式如S2节所述。机器人每两秒接收一个新指令,在此期间指令保持恒定。测试持续30秒,总共执行15次随机指令切换,包括从零速度开始的初始切换。基座速度图如图S1所示。平均线速度误差为0.143 m/s,平均偏航角速度误差为0.174 rad/s。
现在,我们将学习到的控制器与现有可用于ANYmal的最佳运动控制器[12]进行比较。在此实验中,我们使用了飞行小跑步态(即具有完全腾空相位的小跑),因为这是唯一能稳定达到1.0 m/s前进速度的步态。我们使用了相同的速度指令配置文件,产生的基座速度如图S2所示。基于模型的控制器平均线速度误差为0.231 m/s,平均偏航角速度误差为0.278 rad/s。给定相同的指令配置文件,基于模型的控制器在线速度上的跟踪误差比我们学习到的控制器高出约95%,在偏航角速度上高出约60%。此外,我们学习到的控制器平均使用了更低的扭矩(8.23 Nm 对比 11.7 Nm)和更低的机械功率(78.1 W 对比 97.3 W)。影片S3展示了学习策略和基于模型策略的实验对比。
控制性能也在前向奔跑中进行了评估和比较。为此,我们连续发送了四个不同速度指令(0.25, 0.5, 0.75, 和 1.0 m/s)的阶跃输入,每个持续4.5秒。结果,包括与先前方法[12]的对比,展示在图2中。图2A展示了学习控制器自主涌现出的飞行小跑步态。请注意,对于低速指令,此腾空相位会消失,ANYmal会表现出步行小跑,如影片S2所示。即使没有指定步态模式,学习到的策略也展现出了小跑——一种在四足动物中常见的步态模式。图2B展示了策略在仿真中和真实机器人上的速度跟踪精度。请注意,观测速度在指令速度附近的振荡是腿式系统(包括人类[43])中的一个已知现象。就平均速度而言,学习策略在真实机器人上的误差为2.2%,比仿真中高1.1%。
图2C、2D和2E在精度和效率方面将学习控制器与Bellicoso等人[12]的方法进行了比较。我们使用了[12]中的两种步态进行比较:飞行小跑(唯一能达到1 m/s的步态)和动态侧向行走(能效最高的步态)。首先,我们在图2C中比较了不同指令速度下的速度误差。在所有指令速度下,学习控制器都比先前的控制器更准确:与动态侧向行走相比,准确度提高1.5到2.5倍;与飞行小跑相比,提高5到7倍(具体倍数取决于速度)。图2D展示了机械功率输出随实测速度的变化。学习控制器的性能与动态侧向行走相似,并且比飞行小跑高效1.2到2.5倍(取决于速度)。最后,图2E绘制了平均实测扭矩大小与实测速度的关系。在这方面,学习控制器明显比两种先前的步态更高效,根据速度不同,使用的扭矩少23%到36%。这种效率的巨大提升是可能的,因为学习到的控制器以膝盖伸直10至15度的标准姿态行走。在Bellicoso等人的方法中无法将标准姿态调整到这种程度,因为这会急剧增加失败(跌倒)率。
接下来,我们将我们的方法与两种简化替代方案进行比较:使用理想执行器模型训练,以及使用分析执行器模型训练。理想执行器模型假设执行器内部的所有控制器和硬件具有无限带宽和零延迟。分析模型则使用运行在执行器上的实际控制器代码,并结合从实验和计算机辅助设计工具中辨识出的动力学参数。一些参数,如延迟、阻尼和摩擦力,是通过手动调整来增加预测扭矩相对于实验数据的准确性。每种方法的策略训练过程与我们的方法相同。
这两种替代方法均未能让机器人迈出一步而不跌倒。产生的运动如影片S4和S5所示。我们观察到肢体剧烈抖动,很可能是因为未能正确考虑各种延迟。即使分析模型包含了使用真实数据调整的多个延迟源,当执行器带宽有限时,精确建模所有延迟源也十分复杂。串联弹性执行器机制会产生与幅值相关的机械响应时间,手动调整延迟参数变得非常困难。我们对分析模型调整了超过一周,但收效甚微。
- 图A:机器人的四足接触态与非接触态
- 其他图:该机器人的速度,功耗,速度差值与扭矩值对比曲线
四.高速运动
在上一节中,我们评估了学习控制器的通用性和鲁棒性。现在我们专注于在接近硬件极限的条件下运行,以达到尽可能高的速度。“高速”的概念通常依赖于硬件本身。在这方面,有一些腿式机器人表现卓越。Park 等人 [44] 展示了 MIT Cheetah 能以超过 5.0 m/s 的速度进行完整的三维腿式运动。据报道,波士顿动力的 WildCat 速度可达 8.5 m/s [45]。这些机器人专为尽可能快地奔跑而设计,而 ANYmal 的设计目标则是稳健、可靠和多功能。ANYmal 目前的速度记录是 1.2 m/s,这是使用飞行小跑步态实现的 [12]。虽然这看起来可能不算很快,但它比该平台之前的速度记录 [39] 提高了 50%。在尊重硬件所有限制的前提下,通过传统控制器设计达到这样的速度是具有挑战性的。
我们采用所提出的方法训练了一个高速运动控制器。通过在物理系统上逐步将指令速度增加到 1.6 m/s 并在前进 10 米后降为零,对该控制器进行了测试。前进速度以及关节速度/扭矩如图 3 所示。当指令设为 1.6 m/s 时,ANYmal 在仿真中达到了 1.58 m/s,在物理系统上达到了 1.5 m/s。所有速度值均通过至少 3 个步态周期的平均计算得出。该控制器同时用到了最大扭矩(40 Nm)和如图 3B 和 3C 所示的物理系统最大关节速度(12 rad/s)。这表明学习到的策略能够充分利用硬件的全部能力来实现目标。对于大多数现有方法来说,在规划时考虑硬件限制是非常具有挑战性的,而在真实系统上可靠地执行该计划则更加困难。即使是先进的方法 [12, 46],由于其规划模块的局限性,也无法在规划过程中限制驱动。其控制器中的各个模块并不知道后续阶段的约束,因此,它们的输出可能无法在物理系统上实现。
我们的高速控制器所产生的步态模式(如图 3D 所示)与指令条件化运动控制器所表现出的步态截然不同。它接近于飞行小跑步态,但具有明显更长的腾空阶段和不对称的腾空阶段持续时间。这不是自然界中常见的步态模式,我们推测这是完成此任务的多个接近最优的解决方案模式之一。该策略的行为在影片 S6 中进行了展示。

- 图A,B,C是速度,关节速度以及扭矩的示意图
- 图D是各个关节接触态与非接触态的示意图
五.从跌落中恢复
腿式系统在移动时会改变接触点,因此容易发生跌倒。如果腿式机器人跌倒后无法自主恢复到直立姿态,则需要操作员进行人工干预。因此,实现跌倒后的自主恢复功能极具价值。一种可能的方案是将恢复行为设计为可简单回放、经过精细调校的关节轨迹——部分商用系统已采用这种方法[47]。此类轨迹通常需要繁重的手动调试,且由于在运动规划或控制中未考虑动力学因素,其执行耗时往往很长。有些机器人的设计使其无需恢复功能或恢复过程非常简单[48,49],但对于更大型、更复杂的机器而言,这类设计可能难以实现。Morimoto等人[50]曾演示在真实机器人上学习站起动作,但该演示仅采用简单的三连杆结构,尚未扩展到实际复杂系统。
如动物所展现的,跌倒后快速灵活的恢复需要能处理多个未定义接触点的动态运动。我们四足机器人的碰撞模型极为复杂:它由41个碰撞体构成,包括立方体、圆柱体和球体等多种几何形态(见图1步骤1)。为此类模型规划可行轨迹极其困难,即使进行仿真也充满挑战——因为存在大量内部接触。我们采用Hwangbo等人[41]的方法,因其能以数值稳定的方式处理这类仿真。
运用本文提出的方法,我们训练了一套恢复策略并在真实机器人上进行了测试。如影片S7所示,我们将ANYmal置于九种随机构型中并激活控制器。测试涵盖了多种挑战性场景:包括接近完全倒置的构型(位姿8),以及更复杂的接触场景——例如机器人腿部相互交叠支撑的状态(位姿2和4)。在所有测试中,ANYmal均成功实现自主翻转站立。图4展示了其中一组示例动作。这些敏捷的动态行为表明,我们的方法能够为那些传统方法难以甚至无法解决的任务,学习到高性能的控制策略。
图片展示了基于学习的自恢复在真实机器人的实现,使用该方法可以在一个随机的跌落情况下,在三秒之内完成恢复
六.一些讨论
本文提出的基于学习的控制方法,仅通过在仿真中进行训练,且无需在实体机器人上进行繁琐调优,就实现了运动技能的新高度。该系统实现了比现有技术更精准、更高能效的运动。它打破了之前的速度记录,提升了25%,并且学会了通过动态翻滚身体,持续地将机器人恢复到可运行姿态。
现有的控制器是由工程师手工创建的。必须设计一个具备足够复杂度的模型,并且需要开发、测试和调整控制策略。这个过程通常需要数月,并且每个不同的机动动作都必须重复此过程。相比之下,本工作中使用的仿真和学习框架适用于任何刚体系统。对于新任务的应用,我们的方法只需要一个任务描述,该描述包括成本函数、初始状态分布和随机化设置。
在我们的方法中,学习到的执行器动态显著缩小了现实差距,而随机化建模则引导策略变得足够保守。恢复任务在硬件上的首次尝试就取得了成功。随后,我们通过放宽关节速度约束,将成功率进一步提高到100%。本文展示的结果是在实体系统上进行实验的第二天获得的。相比之下,由于需要许多模型抽象层以使计算易于处理,先前的方法通常无法在控制复杂的腿式系统时利用复杂的执行器模型。因此,它们常常需要在性能和依赖于精心调校的低级控制器之间做出妥协。例如,在被测试的基于模型的控制器[12]中,低级控制器(例如轨迹跟踪控制器和全身控制器)必须进行大量调优,以弥补执行器的不完善性。
学习到的策略对硬件变化(例如磨损造成的)也具有鲁棒性。所有控制策略都在真实机器人上测试了超过三个月且未作任何修改。在此期间,机器人被频繁使用,运行了许多控制器,包括本文展示的这些。期间也引入了许多硬件更改:不同的机器人配置(总计增加约2.0公斤重量),以及一个弹簧刚度是原版三倍的新型驱动器。即使在此条件下,本文展示的所有策略都表现稳健。
在计算成本方面,我们的方法相较于先前方法具有优势。虽然它需要一台普通台式电脑进行数小时的训练,但在机器人上进行推理仅需不到25微秒(使用单CPU线程)。我们的方法将几乎所有的计算成本转移到了训练阶段,而在训练阶段我们可以使用外部计算资源。先前的控制器通常需要多两个数量级的机载计算能力。这些苛刻的要求限制了控制器的复杂程度,从而限制了其整体性能。
使用直接输出关节级指令的策略网络为我们的方法带来了另一个优势。与许多先前方法在机器人的奇异构型下存在数值问题不同,我们的策略可以在任何构型下进行评估。因此,我们的方法无需使用特殊方法(例如分支条件)来解决此类问题。
尽管我们的方法在很大程度上实现了高性能策略的自动发现,但它仍然需要一些人类专业知识。必须为每项任务设计和调整成本函数和初始状态分布。对于一个既深刻理解任务又熟悉强化学习的人来说,针对本文展示的运动策略,这个过程大约需要两天时间。虽然这仍然需要相当多的时间,但所有必要的调优都发生在仿真中。因此,随着计算技术的发展,开发时间将持续减少。相比之下,采用模型抽象的先前控制器不可避免地需要更长的开发时间,并且通常需要在真实系统上进行大量调优。开发恢复策略花了大约一周时间,这主要是因为一些安全问题(例如高冲击、快速摆腿、与脆弱部件的碰撞等)不太直观地嵌入到成本函数中。实现站立行为与其他任务一样简单。然而,为了实现本文所展示的安全且鲁棒的行为,成本函数不得不被多次调整。开发时间较长的另一个原因是,它是由一个此前没有任何真实机器人经验的人训练的。
要为新的机器人训练策略,必须进行必要的建模工作。这包括使用CAD模型进行刚体建模,以及使用执行器网络进行执行器建模。前者通常可以通过现代CAD软件自动化,而后者如果所有必要的软件/硬件基础设施(例如,日志记录、回归、扭矩测量)都已就位,则很容易实现。否则,这也会占用相当一部分开发时间。此外,存在少数表现出耦合动态特性的执行器类型(例如,共享单个蓄能器的液压执行器)。对于这些系统,独立地学习各个执行器可能无法获得足够的精度。通过对执行器动力学的深入理解,可以预先估计适当的历史配置,并根据验证误差进一步调整。相比之下,为ANYmal构建一个解析执行器模型至少需要三周,即使文献中已有非常相似的模型[39]被研究过。该模型还有更多的参数,其中许多无法通过测量或数据手册准确获得。因此,它比构建一个执行器网络需要更多的调优。
在本研究过程中,我们观察到了我们方法的另一个局限。在单次训练中得到的单一神经网络表现出单一层面的行为,无法泛化到多个任务。在策略网络中引入层次结构可以解决这个问题,这是未来工作的一个有望的方向[25]。
该图片展示了该论文中整个“仿真到现实”强化学习控制系统的核心架构–混合仿真器,将精确的物理仿真,数据驱动的执行器模型和强化学习策略三者无缝整合,形成了一个高效又保真的训练环境
- 策略网络(整张图的右下部分,英文是Policy net)
- 功能:这是强化学习训练出的智能控制器,它的任务是根据机器人当前的状态,决定应该执行什么动作
- 输入:
- body pose
- body twist
- joint state
- joint state history
- previous action
- command
- 结构:一个拥有128和256个节点的两层神经网络,使用
tanh激活函数。 - 输出:十二个关节的目标位置值
- 执行器网络(图片的右上部分,英文是Actuator Net)
- 功能:是一个从真实机器人数据中学习而来的神经网络模型。它精确模拟了真实电机(SEA)的复杂动态特性,包括延迟、摩擦、弹性等。它的存在是弥合“现实差距”的核心。
- 结构:一个拥有4层、每层32个节点的深度网络,使用计算高效的
softsign激活函数。 - 输出:十二个关节的扭矩值
- 刚体仿真(图片的左上角部分,英文是Rigid-body simulation)
- 功能:是一个快速精确的物理引擎,基于经典的牛顿力学,计算机器人的刚体动力学和环境接触力学
- 输入:从执行器网络得到的12个关节的预测力矩(Torque)
- 运算:根据输入的扭矩,物理引擎计算机器人的运动方程,计算出下一刻机器人的新状态
- 输出:
- body pose 和 body twist:新的身体姿态和身体速度
- joint state 和 joint state history:新的关节位置,速度及其历史记录
- 这些输出作为策略网络在下一个控制循环的输入,形成一个闭环
七.刚体动力学建模
为了在合理时间内高效训练复杂策略并将其迁移到现实世界,我们需要一个既快速又精确的仿真平台。对于行走机器人而言,最大的挑战之一在于间歇性接触的动力学。为此,我们采用了我们先前工作中提出的刚体接触求解器[41]。该接触求解器采用硬接触模型,完全遵循库仑摩擦锥约束。这种建模技术能够精确捕捉一组刚体与环境发生硬接触时的真实动力学行为。该求解器不仅精确,而且速度极快,在普通台式机上能为模拟的四足机器人每秒生成约90万个时间步。由于训练复杂策略需要数亿个样本,这个求解器是我们工作的关键所在。
连杆的惯性参数根据CAD模型估算。由于未建模的线缆和电子设备,我们预计估算误差最高可达20% 左右。为了应对此类建模不准确性,我们通过使用30个不同的ANYmal模型进行训练来增强策略的鲁棒性,这些模型的惯性属性是随机采样的。具体而言,质心位置、连杆质量以及关节位置分别通过添加从U(−2, 2) cm、U(−15, 15) %和 U(−2, 2) cm区间采样的噪声进行随机化。
八.执行器建模
执行器是腿式系统的核心部件。快速、强劲、轻量且高精度的执行器通常能造就动态、多功能且敏捷的机器人。大多数腿式系统由液压执行器[51]或带齿轮的电机[3]驱动,有些甚至包含专门的机械柔顺性设计[5, 52]。这些执行器有一个共同点:极其难以精确建模。它们的动态特性涉及非线性和不连续的耗散,包含级联反馈回路以及许多甚至无法直接观测的内部状态。Gehring等人[39]对SEA执行器建模进行了深入研究。他们的模型包含近一百个参数,这些参数必须通过实验估计或假设数据手册正确。这个过程既容易出错又耗时。此外,许多制造商无法提供足够详细的产品描述,因此构建解析模型可能并不可行。
为此,我们采用监督学习来获取一个动作到扭矩的关系,该关系囊括了一个控制循环内所有软件和硬件的动态。更具体地说,我们训练一个“执行器网络”,它根据位置误差和速度的历史数据,输出关节的估计扭矩。位置误差是指令位置减去实际位置。在本工作中,我们假设各执行器的动态相互独立,因此可以分别为每个执行器学习一个模型。对于其他类型的驱动方式(例如,共享一个公共大蓄能器的液压执行器可能表现出耦合动态),这一假设可能不成立,此时使用一个代表多个执行器的大型网络可能更合适。
由于执行器的内部状态无法直接测量,我们只能部分观测到它们的状态。我们假设,给定位置误差和速度的历史数据,网络能够被训练以估计这些内部状态,否则所提供的信息根本不足以充分控制机器人。本文使用的执行器是旋转且径向对称的,在给定位置误差的情况下,绝对角位置并不重要。我们使用的历史数据包括当前状态以及对应 t-0.01秒和 t-0.02秒的两个过去状态。历史窗口的长度应足够长,以覆盖所有通信延迟与机械响应时间之和。*实践中,确切的输入配置(如历史长度)会根据验证误差进行调整。由于网络非常小,这个调参过程通常不超过一天。
九.数据收集与网络训练
为了训练该网络,我们收集了一个包含关节位置误差、关节速度和扭矩的数据集。我们使用了一个简单的参数化控制器,它以正弦波的形式生成足端轨迹;相应的关节位置通过逆运动学计算得出。在数据收集期间,足端持续与地面建立或断开接触,从而使生成的轨迹大致模仿了运动控制器所遵循的轨迹。为了获得丰富的数据集,我们改变了足端轨迹的幅度(5-10厘米)和频率(1-25赫兹),并在数据收集过程中手动干扰机器人。我们发现,激励信号必须覆盖广泛的频率谱,否则训练出的模型即使在训练阶段也会产生不自然的振荡。数据收集耗时不到4分钟,因为可以从ANYmal上12个相同的执行器并行收集数据。数据以400赫兹的频率采集,因此生成的数据集包含超过一百万个样本。大约90% 的数据用于训练,其余用于验证。
执行器网络是一个多层感知机,具有3个隐藏层,每层32个单元。在测试了两种常见的平滑有界激活函数——tanh和softsign[53]之后,我们选择了 softsign激活函数,因为它计算效率更高且能提供平滑的映射。使用softsign评估所有12个关节的执行器网络耗时12.2微秒,而使用tanh则为31.6微秒。由此可见,tanh激活函数会导致更高的计算成本,因此不太受青睐。两种激活函数产生的验证误差大致相同。使用softsign函数的验证结果如图6所示。训练好的网络能够近乎完美地根据验证数据预测扭矩,而理想执行器模型则无法做出合理的预测(此处“理想模型”假设无通信延迟且执行器具有无限带宽,可瞬时生成任何指令扭矩)。训练好的模型在验证集上的平均误差为0.740 Nm,这与扭矩测量的分辨率(0.2 Nm)相差不大,并且远小于理想执行器模型的误差(3.55 Nm)。其在测试数据(即,使用训练好的运动策略收集的数据)上的预测误差显著更高(0.966 Nm),但仍远低于理想模型(5.74 Nm)。
十.强化学习
π ∗ = argmax π E τ ( π ) [ ∑ t = 0 ∞ γ t r t ] \pi^{*} = \underset{\pi}{\operatorname{argmax}} \mathbb{E}_{\boldsymbol{\tau}(\pi)} \left[ \sum_{t=0}^{\infty} \gamma^{t} r_{t} \right]\qquad π∗=πargmaxEτ(π)[t=0∑∞γtrt]

我们将控制问题在离散时间中表述。在每一个时间步 t,智能体获得一个观测ot∈O,执行一个动作 at∈A,并获得一个标量奖励rt∈R。我们交替使用奖励和成本,成本即奖励的负数。我们用Ot=⟨ot,ot−1,…,ot−h⟩表示最近观测的元组。智能体根据一个随机策略π(at∣Ot)选择动作,该策略是在给定最近观测条件下动作的分布。目标是找到一个策略,最大化无限时间范围内折扣奖励总和的期望值。
其中 γ∈(0,1)是折扣因子,τ(π)是策略π下的轨迹分布(该分布既依赖于策略也依赖于环境动态)。在我们的设定中,观测是提供给控制器的机器人状态测量值,动作是发送给执行器的位置指令,而奖励的设定是为了诱导出期望的行为。
多种强化学习算法可以应用于这个指定的策略优化问题。我们选择了信任域策略优化算法 [22],这是一种策略梯度算法,已被证明能在仿真中学习运动策略 [54]。它几乎不需要参数调优;对于本文中展示的所有学习过程,我们仅使用了默认参数(如 [22, 54] 中提供的)。我们使用了该算法的一个快速定制实现 [55]。这种高效的实现以及快速的刚体仿真 [41] 使我们能够在大约四小时内生成和处理大约2.5亿个状态转移。如果一个策略的平均性能在300次TRPO迭代内没有提高超过某个任务特定的阈值,则学习过程终止。
十一.观测与动作
我们方法中的观测应在真实机器人上可观测(即能从测量值推断)且与任务相关。关节角度、速度和机体运动旋量都是可观测且高度相关的。测量机体方向并不简单,因为使用惯性测量单元只能观测到方向中的两个自由度。可观测的自由度集合与 S2(或一个单位向量)形成双射,该单位向量可以解释为在IMU坐标系中表示的重力向量方向。我们将这个单位向量记为 ϕg。基座的高度不是直接可观测的,但我们可以从腿部运动学估计它,假设地面是平坦的。我们基于一个一维卡尔曼滤波器实现了一个简单的高度估计器,与现有的状态估计器 [56] 协同工作。然而,由于当机器人不是用脚站立时无法使用这个高度估计器,我们在训练从跌倒中恢复时移除了高度观测。
在 t=tk时刻的完整观测定义为 ok=⟨ϕg,rz,v,ω,ϕ,ϕ,Θ,ak−1,C⟩,其中 rz、v和 ω分别是基座的高度、线速度和角速度,ϕ和 ϕ是关节的位置和速度,Θ是稀疏采样的关节状态历史,ak−1是上一个动作,而 C是指令。关节状态历史在 t=tk−0.01s和 t=tk−0.02s时刻采样。
关节状态历史对于训练运动策略至关重要。我们推测这是由于它能实现接触检测。检测接触的另一种方法是使用能提供可靠接触状态估计的力传感器。然而,此类传感器会增加末端执行器的重量,从而降低机器人的能量效率。确切的历史配置是通过分析策略的最终性能凭经验找到的。
我们的策略输出低阻抗的关节位置指令,我们发现在许多任务中这非常有效。Peng 等人 [57] 发现,这样的控制器在训练速度和最终控制性能上都能优于扭矩控制器。尽管在它们之间总是存在一个双射映射,但两种动作参数化具有不同的平滑度,因此训练难度也不同。此外,位置策略在训练中具有优势,因为它开始时是一个站立控制器,而扭矩控制器最初会产生许多导致跌倒的轨迹。因此,我们将策略网络用作一个阻抗控制器。我们的网络输出一个单一的位置参考值,该值使用固定增益(比例增益 kp=50Nm/rad,微分增益 kd=0.1Nm/rad/s)和零目标速度转换为扭矩。位置增益的选择大致是扭矩的标称范围(±30Nm)除以运动的标称范围(±0.6rad)。这确保了策略网络对扭矩和位置具有相似的输出范围。速度增益被选择得足够高,以防止真实机器人上出现不必要的振荡。根据我们的经验,最终的运动性能对增益的小幅变化具有鲁棒性。例如,将位置增益增加到 80 Nm/rad 不会显著改变性能。(插入一点点解释:双射这里可以理解为映射,先解释第一个双射,惯性测量单元可以准确的测量出重力加速度相对于自身的方向,pitch,roll方向和重力加速度方向的夹角是高度相关的,而yaw垂直于重力加速度方向,所以只有两个自由度的集合和重力加速度方向是构成双射的。第二个双射是值假如对一个电机使用位置控制或者是力矩控制,位置控制的输出会对应着一个扭矩值,同理扭矩控制也会对应着一个位置值,它们之间也是一一对应的,故也是双射)
请注意,我们在这里使用的位置策略与机器人技术中常用的位置控制器不同。当位置参考是时间索引时,位置控制器有时在性能上会受到限制,这意味着存在一个假设位置计划将被高精度遵循的高层控制器。这是扭矩控制器在腿式机器人学中流行起来的主要原因。然而,正如许多其他强化学习文献中一样,我们的控制策略是状态索引的,因此不受常见 PD 控制器局限性的影响。该策略被训练为能够预见到位置误差会发生,甚至利用它们来产生加速度和交互力。(再插入亿点点解释:传统的位置控制(时间索引),就像一个忠实的轨迹跟踪器,工作原理是:有一个高层规划器生成一条随时间变化的理想关节轨迹。底层控制器如PD控制器的唯一目标就是尽全力消除实际位置与这条预设轨迹之间的误差,局限在于它假设世界是确定且模型完美的,一旦遇到意外如地面不平整,它仍然会僵硬的执行原来的轨迹,将任何偏移都视为需要对抗的误差,所以容易产生失稳或者振荡。RL的位置策略(状态索引)就像是一个动力学的利用者,不过它的输出接口是位置罢了,工作原理是:没有一条预设的轨迹,策略网络根据当前完整的传感器状态,直接实时计算出一个关节目标位置,这个目标是为当前瞬间量身定制的。策略在训练中学会了机器人动力学,它输出目标位置时,已经预见并主动利用了电机无法瞬间到位而产生的误差,比如可以这样,它通过设置一个稍微超前的目标,诱发电机产生加速运动,从而间接生成完成任务所需的关节力和机体加速度,它不是在控制位置,而是通过位置指令这个手柄,直接控制力和运动,误差是其达成的工具)
此外,得益于运动学随机化,训练好的策略并不仅仅依赖于运动学:策略不可避免地需要学会对环境施加适当的冲量以实现运动。这使得我们的策略更加鲁棒,因为已知基于冲量的控制方法对系统变化和模型不准确性更具抵抗力 [44]。
十二.策略训练细节
本文提出的控制策略完全在仿真环境中训练。为了仅使用仿真数据训练出高性能的策略,我们遵循了通用的以及针对特定问题的训练流程。在此,我们将详细描述这些流程并解释其背后的原理。
针对运动的控制策略训练在文献中已被多次演示 [22, 24, 25]。然而,许多已训练的策略并未表现出自然的运动模式,并且它们能否在物理系统上正常工作非常值得怀疑。一些研究者已经注意到,简单直接的方法无法生成外观自然且能量高效的运动行为 [58]。对关节扭矩和速度施加较低的惩罚会导致不自然的运动,而较高的惩罚则会导致站立行为。产生站立行为的主要原因是当运动伴随高惩罚时,站立本身就已经是一个良好的局部最优解。
我们通过引入课程解决了这个问题:使用课程学习,我们塑造初始的成本函数形态,使得策略被强烈吸引至运动策略,随后再精修运动以满足其他标准。我们通过一个乘法课程因子来调整成本项和扰动的系数,从而生成一个简单的课程。我们定义了一个描述课程进度的课程因子:kc=k0∈(0,1)对应于课程开始,kc=1对应于最终难度级别。中间值通过 kc,j+1←(kc,j)kd计算,其中 kd∈(0,1)是推进速率,描述了达到最终难度的速度,而 j是强化学习训练的迭代索引。在给定的参数区间内,课程因子序列单调递增并渐近收敛于1。我们推测,任何遵循这些标准的其他更新规则也会产生相似的学习性能。所有成本项都乘以这个课程因子,除了与目标直接相关的成本项(即,在指令条件化运动和高速运动任务中的基座速度误差成本,以及在恢复任务中的基座方向成本)。这样,机器人首先学习如何达成目标,然后学习如何满足各种约束。这项技术与 Bengio 等人 [59] 提出的课程学习相关,后者是逐步引入难度更大的样本。我们没有改变样本,而是通过改变目标函数来控制训练难度。对于所有训练任务,我们使用 k0=0.3和 kd=0.997。参数 k0的选择应能防止初始阶段倾向于静止站立。通过观察强化学习算法最初的一百次迭代,可以轻松地调整此参数。参数 kd的选择使得课程因子在训练结束时几乎达到1(或 ∼0.9)。虽然所需的迭代次数无法先验得知,但已有足够多的强化学习应用文献(包括本文)可以为用户提供必要的参考。
我们根据训练好的控制器在仿真中的定性表现,为每个任务单独调整了折扣因子 γ(公式 (1))。在训练指令条件化控制器和高速控制器时,我们使用 γ=0.9988,对应的半衰期为 5.77 秒。我们也成功地用更低的半衰期(∼2秒)训练出了几乎同等性能的策略,但它们表现出不太自然的站立姿态。在训练恢复控制器时,我们使用 γ=0.993,对应的半衰期为 4.93 秒。足够高的折扣因子会导致更自然的站立姿态,因为它对维持站立所需的扭矩的惩罚小于对运动(运动产生的扭矩、关节速度和其他量)的惩罚。然而,过高的折扣因子可能导致收敛缓慢,因此应根据任务适当调整。对于指令条件化运动和高速运动训练,TRPO 在 9 天的仿真时间内完成了训练,这对应于 4 小时的实时计算。对于跌倒恢复训练,TRPO 花费了 79 天的仿真时间,对应于 11 小时的实时计算。
对于指令条件化运动和高速运动,我们使用三个期望的机体速度值来表示一个指令:前进速度、侧向速度和转向速率。在训练期间,指令从预定义的区间内随机采样(详见表格 S1 和 S2),并采用 S3 节中定义的成本函数。机器人的初始状态以相等的概率从先前的轨迹或随机分布中采样(见表 S3)。这种初始化过程生成了包含复杂状态转移的数据,并使训练出的控制器更加鲁棒。每条轨迹持续 6 秒,除非机器人提前到达终止状态。终止有两种可能:违反关节限位或基座撞击地面。一旦终止,智能体会收到一个值为 1 的成本惩罚并被重新初始化。终止成本的值没有经过调整:由于只有成本系数之间的比值对最终性能重要,我们调整其他成本项以与此终端值协同工作。
对于跌倒恢复训练,ANYmal 模型的碰撞体在尺寸和位置上被随机化。导致不现实内部碰撞的样本会被移除。成本函数和初始状态分布分别在 S4 节和图 S3 中描述。训练此任务需要 S4 节中描述的专用初始化方法,因为简单的采样常常导致模型部件相互穿透,从而使动力学变得不真实。为此,我们从 1.0 米的高度以随机的方向和关节位置丢下 ANYmal,运行仿真 1.2 秒,然后使用最终状态作为初始化。
另一个关键细节是,在真实机器人上无法直接测量关节速度。它们是通过对位置信号进行数值微分计算得出的,这会产生有噪声的估计。我们在训练期间向关节速度测量值注入强加性噪声(U(−0.5,0.5)rad/s)来模拟这种不完美。通过这种方式,我们确保学习到的策略对不准确的速度测量具有鲁棒性。我们还向观测到的基座线速度(U(−0.08,0.08)m/s)和角速度(U(−0.16,0.16)rad/s)添加了训练噪声。其余观测值是无噪声的。有趣的是,即使理论上策略网络可以通过观测位置的有界差分来推断速度,但从观测中完全移除速度会导致训练完全失败。我们用网络训练的非凸性使得适当的输入预处理变得重要这一事实来解释此现象。出于类似原因,在大多数学习过程中,输入归一化是必要的。
我们使用一个具有两个隐藏层的多层感知器来实现策略,隐藏层单元数分别为 256 和 128,并使用 tanh 非线性激活函数(图 5)。我们发现激活函数对物理系统上的性能有很大影响。即使两种使用不同激活函数的训练策略在仿真中表现相似,它们在现实世界中的性能也可能差异很大。我们的解释是,无界激活函数(如 ReLU)可能会降低真实机器人的性能,因为当机器人到达训练期间未曾访问过的状态时,动作可能具有非常大的幅值。有界激活函数(如 tanh)在受到扰动时会产生攻击性较低的轨迹。我们认为 softsign 函数也有类似效果,但由于我们强化学习框架 [55] 中的一个实现问题,未能在策略网络中进行测试。
- 课程因子kc:
- 这是一个从
k0(如0.3) 开始,随着训练迭代j,按公式kc,j+1 = (kc,j)^kd(kd如0.997)慢慢向1靠近的变量。它决定了“约束惩罚”的力度 - 第一阶段(kc很小):把除了核心目标(比如速度误差、别摔倒)之外的所有惩罚(关节超限、扭矩太大、耗能太高)都乘以这个小不点
kc,让这些惩罚变得几乎没感觉。可以理解为:先动起来再说 - 第二阶段(kc逐渐增大):随着
kc慢慢涨到1,所有约束惩罚的力度逐渐恢复。这时候策略已经学会了基础的移动和平衡,开始自我优化,学着用更小的扭矩、更优雅的姿态、更节能的方式去完成同样的移动目标。 - 这解决了强化学习探索初期奖励稀疏的难题。初期目标明确(动起来),让策略快速找到正反馈;后期再精细雕琢行为。
k0选0.3就是防止它一开始觉得站着不动最省事儿;kd选0.997是为了让这个“骗局”慢慢揭穿,在训练结束时(约2000万步后)kc刚好涨到差不多0.9,完成平滑过渡。
- 这是一个从
- 折扣因子γ(时间尺度调节器):
- γ高时,看重未来,更多的在优化一个很长时间窗口的总收益
- γ低时,更加短视,在跌到恢复任务里是好事,因为需要对当前失衡状态作出更快更猛烈的反映
- 训练环境
- 指令随机化:不是教它走一个固定速度,而是在每一段训练(每个episode)开始时,随机抽一个目标速度(前进、横向、转弯)。逼它学会一个能覆盖整个速度范围的通用运动策略,而不是一个点上的特化技能。
- 状态初始化随机化:
- 一半概率从之前的正常轨迹里随机截取一个状态开始。这保证了训练的连续性。
- 一半概率从一个完全随机的、乱七八糟的状态(比如关节拧巴着、身体歪着)开始。这迫使策略必须学会从各种奇葩的、接近摔倒的状态下恢复并进入正常运动。
- 噪声注入
- 仿真里传感器数据是完美的。现实中,关节速度是靠对位置信号求导算出来的,噪声巨大;状态估计器给出的机体速度也有误差。
- 解决方案:在训练时,主动给观测值加噪声
- 关节速度观测:加上高斯分布,幅值为0.5rad/s的噪声
- 机体速度观测:在线速度和角速度也加上显著的随机噪声
- 网络设计和激活函数
- 架构:两层MLP(256->128),这个规模足够表达复杂策略,不至于过拟合或者难以训练
- 激活函数:为什么选择tanh
- 在实验中试过ReLU,在仿真中表现可能差不多
- ReLU激活后结果是无界的,当机器人进入一个训练时从未见过的极端状态,ReLU网络可能产生巨大无比的异常输出,危险
- Tanh的输出严格被压缩在[-1,1]之间,即使输入状态再奇怪,输出动作也被限制在安全范围内
十三.真实物理系统上的部署
我们使用图1步骤四所示的ANYmal机器人[5]来展示本方法的实际应用性。ANYmal是一款犬型大小的四足机器人,重约32公斤。每条腿长约55厘米,具有三个驱动自由度,即髋关节外展/内收、髋关节屈曲/伸展和膝关节屈曲/伸展。
ANYmal配备了12个串联弹性执行器(SEA)[60, 61]。一个SEA由一个电机、一个高减速比传动装置、一个弹性元件以及两个用于测量弹簧形变和输出位置的旋转编码器组成。在本工作中,我们在关节级执行器上使用了一个具有低反馈增益的关节级PD控制器。
这是ANYmal机器人的执行器模块。执行器的动力学包含多个串联的组成部分,如下所述。首先,位置指令通过一个PD控制器转换为期望扭矩。随后,根据期望扭矩,通过一个PID控制器计算出期望电流。接着,期望电流通过一个磁场定向控制器(FOC)转换为相电压,从而在传动装置的输入端产生扭矩。传动装置的输出连接到一个弹性元件,其变形最终在关节处产生扭矩[39]。这些高度复杂的动力学引入了许多我们无法直接访问的隐藏内部状态,并使我们的控制问题复杂化。
从我们的混合仿真中获得一个已训练策略的参数集后,在真实系统上的部署是直接的。一个定制的MLP实现和训练好的参数集被移植到机器人的机载PC上。该网络以200赫兹的频率进行评估(用于指令条件化/高速运动),或以100赫兹的频率进行评估(用于从跌倒中恢复)。我们发现性能对控制频率出人意料地不敏感。例如,恢复动作是在20赫兹下训练的,但当我们将控制频率提高到100赫兹时,性能是相同的。之所以能做到这一点,是因为翻转起身行为涉及较低的关节速度(大多低于6弧度/秒)。更动态的行为(例如,运动)通常需要更高的控制频率才能获得足够的性能。实验中使用了更高的频率(100赫兹),因为它产生的可听噪音更小。即使在100赫兹下,网络评估也仅使用了单个CPU核心可用计算资源的0.25%。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)