1 论文
团队:上海AI lab,上海交通大学,浙江大学等
网页链接:https://why618188.github.io/beamdojo
2 背景
双足机器人在非平坦路面的行走很有挑战性,因为要求行走到安全的区域,并且保持稳定。
- 传统基于优化的方法。非常消耗算力 a significant computational burden for online planning;而且对于模型假设的扰动非常敏感react sensitively to violation of model assumptions,也就是精确建模很难。
- 基于学习的方法仍然性能不够好,因为(1)落足点奖励稀疏(sparse foothold rewards),只有在完成抬升和落地后才能有奖励(only after completing a full sub-process, eg lifting and landing a foot),对于该过程中的状态难以评估(difficult to assign credit to specific states and actions);(2)训练过程比较低效(inefficient learning process),因为训练初期,走错一次就终止了,学习不到什么东西(misstep often leads to early termination during training)
相比之下,现在有四足机器人在这方面有很多研究,将足建模为点point。但是对于双足机器人来说,足需要建模为多边形polygon。
3 方案
3.1 输入,输出与可观测的状态
3.1.1 输入commands
分为3维:
- 目标纵向速度
- 目标横向速度
- 目标角速度
3.1.2 输出关节位置
输出12维:下肢关节位置target joint positions for the 12 low-body joints
3.1.3 可观测状态——本体观测和外部观测
本体可以观测到64维proprioception:
- 3个方向角速度
- 3个方向重力加速度分量
- 29维关节位置
- 29维关节速度
外部可以观测到225维exterioception:
- 15x15,间距0.1m(前后左右1.5m)的grid maps
3.2 奖励设计
3.2.1 落足点奖励 Foothold reward
该论文采用了基于采样的落足点奖励方法。在足平面上均匀采样n个点,获取这n个点的高程信息,如果其高程d小于某个阈值,则会导致惩罚。
注意:通过采样的方法,落足点奖励是连续的。
该奖励用来鼓励足和安全地形接触面越大越好。
3.2.2.3 连续落足点奖励比二元的成功要更高
经过实验,将落足点改成二元奖励,即采样的安全点数>p%,则奖励为1,否则为0。这样的效果更差。因为必须要达到某个阈值才能有奖励,无法gradually encourage模型学习落足。
3.2.3 移动奖励 Locomotion reward
移动奖励是一系列奖励/惩罚的加权和。
- 指令跟踪惩罚:速度和角速度误差惩罚,用来鼓励模型跟踪command,用指数函数e^(-x)
- 直立不稳定惩罚:高度,重力在xy的分量(鼓励模型站直),垂向速度(鼓励模型站定),xy方向角速度(不歪斜),用二次函数
- 动作不平滑惩罚:action的离散型一阶导数和二阶导数,用二次函数
- 关节运动过快过大惩罚:关节速度/加速度,用二次函数,超过位置/速度阈值,用ReLU
- 不节能惩罚:功率
- 足部:足底与地面不平行惩罚(防止落地不稳),用一次函数,走远奖励(两脚位置差越大越好,ReLU,脚悬空的时间越长越好,一次函数),脚抬得太高太低惩罚,用二次函数
3.3 PPO
3.3.1 critic
该论文创新性地使用了2个critic
- 一个critic给出连续密集的移动价值the dense locomotion value
- 另一个critic给出稀疏的落脚点价值the sparse foothold value
针对各个critic:
- 采用TD loss进行更新。其中,折算系数gamma=0.99。
- 优势函数采用广义优势估计。其中,平衡参数(balancing parameter)lambda=0.95。
汇总各critic的广义优势估计,得到最终的优势函数
- 各cric的广义优势估计进行归一化( - batch维度的均值, / batch维度的标准差)
- 归一化后的广义优势估计加权求和,其中移动的优势估计权重w1=1.0,落脚点的优势估计权重w2=0.25
3.3.2 actor
更新策略,其中clip=0.2
3.3.2 double-critic让成功率变高
double critic,比single critic,成功率提高。比如Stepping Stones:
- medium成功率:83.00% -> 95.67%
- hard成功率:55.67% -> 91.67%
3.4 训练方法
该论文使用了2个阶段的强化学习训练。第一阶段是为了鼓励模型学习到走路,第二个阶段是鼓励模型在危险的,多变的环境中学习走路。
3.4.1 第一阶段,预训练,软地形限制soft terrain dynamics constraints
这一阶段比较巧妙地解耦了实际地形和机器人看到的地形
- 实际地形是平整的地形falt terrain,这样机器人如果走到凹陷区域,也不会摔倒,就可以避免导致早终止early termination,从而进行有效的探索encourage full trial-and-error exploration。
- 机器人看到的是有有各种凹陷的地形,如果踩到了对应位置,从奖励层面,会有相应的惩罚。
通过这样的方式能够高效地训练,让机器人意识到地形不同所带来的影响develop terrain-awareness skills。
反之,传统的方法很难学习到安全落脚的能力 extemely difficult to acquire safe foothold samples when learning from scratch。
3.4.2 第二阶段,微调,硬地形限制hard terrain dynamics constraints
在第二阶段,实际地形也包含了各种凹陷区域,和机器人看到的一样。如果摔倒了,那就会摔倒,产生termination。
3.4.3 分成2阶段成功率明显提高
分成2阶段,比不分成2阶段,成功率明显提高。比如Stepping Stones:
- medium成功率:65.33% -> 95.67%
- hard成功率:42.00% -> 91.67%
3.5 环境设计
该论文设计了5种地形,第一种简单,后面4种更难,但是我个人觉得难度并非递进:
- 地形1:Stones everywhere
- 地形2:Stepping stones
- 地形3:Balancing beams
- 地形4:Stepping Beams
- 地形5:Gaps
其中,第一阶段训练采用地形1,第二阶段训练采用地形2和3。只有连续三次通过了某地形,才会进入下一个地形。
评测用地形2,3,4和5。其中4和5是训练中从未见过的。
3.6 Sim2Real
仿真到现实的gap主要在于2个方面
- 仿真和现实的输入对齐。仿真输入地形图,现实采用基于Lidar的地形高度图 LiDAR-based elevation map。其次,由于里程计不准确,噪声和抖动的因素,在仿真中也添加类似的噪声。
- 环境,自身状态扰动。采用域随机化domain randomization,本质是对关键观测添加噪声Noise is injected into observations, humanoid physical properties, and terrain dynamics.
3.6.1 仿真配置与评价指标
IsaacGym
评价指标:
- 成功率:成功比例
- 通过率:一轮走过的距离 / 总距离(8m)
- 落脚点误差:落脚点在危险区域的比例average proportion of foot samples landing outside the intended foothold areas
3.6.2 实际配置
该论文采用
- 宇树机器人G1
- 芯片用Jetson Orin NX,100tops
- LiDAR采用大疆子公司觅道(Livox)的Mid-360 LiDAR,价格4k。高程图输出10Hz。
- IMU
- PD Controller,控制频率500Hz。PD控制器接收模型输出的关节位置信息。
3.6.3 仿真中高程图加噪使成功率提升
加噪方法:
- 垂向噪声。给高程图的高度用添加均匀分布的垂向噪声,模拟LiDAR的噪声。
- 旋转噪声。给高程图沿xyz3个方向添加噪声,模拟里程计的噪声odometry inaccuracies。为什么不是IMU的?因为IMU才有角速度测量?
- 落足点噪声。给落足点添加噪声,模拟LiDAR处理的平滑影响?this simulates the smoothing effect that occurs during processing of LiDAR elevation data
- 高程图不更新。高程图随机地采用前一时间步的结果,模拟delay。
实际效果:以Stepping stones为例:
- 成功率:1/5 -> 4/
- 通过率:38.2% -> 92.18%
4 结论
- 机器人对地形具备泛化性,zero-shot转移到新场景(未见过的地形4和5)。
- 训练效率高于消融实验版本。本模型在训练到2k iter时,就已经达到了最难的terrain(Level6),无double critic的版本在5k达到,无soft dyn的版本在7k达到,naive版本达不到最难的terrain,停留在Level6。
- 具备良好的鲁棒性:(1)负重;(2)外力击打;(3)在位置地形的情况下,如果踏空了也能调整回来。