多智能体强化学习实现四足机器人协同跳跃
1. 项目概述
在四足机器人领域,单体的运动能力始终受到物理尺寸、驱动功率和能量效率等固有因素的限制。香港大学ARC实验室与EngineAI团队提出的"Co-jump"项目,通过多智能体强化学习(MARL)技术,让两台四足机器人无需外部通信即可实现协同跳跃,突破单体物理极限。这项研究首次实现了1.5米高度的无通信协同跳跃,其中跳跃机器人(Robot J)的足端高度达到1.1米,相比单机0.45米的跳跃能力提升了144%。
项目创新性地采用MAPPO(多智能体近端策略优化)算法框架,结合渐进式课程学习策略,解决了机械耦合系统中的稀疏奖励探索难题。系统仅依赖本体感知(关节角度、角速度、基座姿态等),无需视觉输入或预设动作模板,就能自主演化出精确的时空协调策略。这种去中心化的协作模式,为野外搜救、工业巡检等通信受限场景下的群体机器人应用提供了新思路。
2. 核心设计思路
2.1 问题建模与算法选型
项目将协同跳跃任务建模为Dec-POMDP(分散式部分可观测马尔可夫决策过程),这是处理多智能体协作问题的标准框架。每个机器人只能获取本体的52维观测向量,包括:
- 基座角速度(3维)
- 重力向量(3维)
- 关节角度和速度(各12维)
- 上一步动作(12维)
- 运动指令(4维)
- 目标物体信息(6维)
选择MAPPO算法主要基于三个考量:
- CTDE(集中训练分散执行)架构能有效解决信用分配问题,通过集中式critic网络评估全局状态,同时保持策略执行的分散性
- 近端策略优化(PPO)的clip机制能保证训练稳定性,避免多智能体场景中常见的策略崩溃
- 共享网络参数设计可加速策略收敛,特别适合这种角色不对称但动力学相似的机器人对
2.3 奖励函数设计
奖励函数采用三重结构设计,权重系数经网格搜索确定为α_task=1, α_regu=1, α_coop=1:
任务奖励(r_task):
- 高度跟踪奖励:使用tol函数(公式4)鼓励飞行阶段达到指令高度
- 水平速度跟踪:误差在0.2m/s内得满分
- 偏航角速度跟踪:误差在0.1rad/s内得满分
- 足端收腿奖励:飞行阶段足端离地高度>15cm
- 接触维持奖励:初始/着陆阶段保持足部接触
正则化奖励(r_regu):
- 姿态偏差惩罚:滚转/偏航角超过π/12时触发
- 关节加速度惩罚:系数2.5e-7
- 关节速度惩罚:系数1.0e-4
- 扭矩惩罚:Robot J系数2.5e-5,Robot L系数2.5e-6
- 动作平滑惩罚:二阶差分惩罚系数0.1
协作奖励(r_coop):
- 高度差奖励:两机器人高度差>0.6m时触发
- 俯仰角惩罚:Robot J俯仰角<0或>π/4时触发
- 成功奖励:40分一次性奖励
- 跌落惩罚:Robot J基座高度<0.4m时触发
关键技巧:tol函数采用长尾核设计(公式5),当状态量超出目标区间[bl, bu]时,奖励值按1/(z√(1/v-1))²+1衰减,其中z为归一化偏差。这种设计在边界处(v=0.2)提供平滑过渡,避免奖励突变导致的训练不稳定。
3. 课程学习策略
3.1 四阶段渐进式训练
重力课程: 初始重力加速度设为7.0m/s²,分三阶段(15k/20k/25k步)增至9.81m/s²。这解决探索瓶颈——在标准重力下,随机策略几乎无法产生足够高度的跳跃获得奖励信号。降低重力后,相同动作能产生更高跳跃,使策略更容易发现正反馈路径。
目标课程:
- 初始固定目标(高度0.8m,偏航0°)
- 成功率达25k次后,每阶段增加15°偏航直至90°
- 随后以0.1m为增量提升高度至1.0m
- 最终阶段拓展到1.6m(适配Js01的负载能力)
初始化课程: Robot J初始位置从1.0m高处线性降至0.77m,姿态从直立渐变为俯卧。这种设计避免直接接触导致的局部最优——初始自由落体阶段让Robot J有时间调整姿态,比强制接触初始化成功率提升97.7%。
延迟课程: 在仿真中,两机器人直接堆叠会引发不真实的瞬态振荡。通过引入1.0-1.6秒的随机延迟(动作保持为零),模拟真实世界的静态组装过程。这显著提升了sim2real的转移成功率。
3.2 领域随机化配置
为实现鲁棒的仿真到现实转移,训练时对以下参数进行随机化:
单体动力学参数:
- 静摩擦系数:[0.6,1.0]
- 动摩擦系数:[0.5,0.9]
- 推力扰动:±5N
- 扭矩扰动:±0.5Nm
- 执行器延时:[0,10]ms
- 质心偏移:±2cm
- 电机刚度增益:[0.9,1.1]
交互参数:
- 通信延迟:[0,5]ms
- 相对位置偏移:±2cm
- 相对偏航偏移:±0.08rad
4. 实现细节
4.1 网络架构
Actor和Critic网络采用相同结构的4层MLP:
- 隐藏层维度:[512,512,256,128]
- 激活函数:ELU
- 控制频率:50Hz
- 批量大小:4096环境并行
- 训练设备:NVIDIA RTX 4080 Super
4.2 硬件部署
机器人配置:
- 发射者(Robot L):EngineAI Js01(90kg)
- 关节PD增益:Kp=200, Kd=5.0
- 最大扭矩:120Nm
- 跳跃者(Robot J):Unitree Go2(15kg)
- 关节PD增益:Kp=40, Kd=1.2
- 最大扭矩:30Nm
控制系统:
- 主控:AMD Ryzen 7 7435H
- 通信:千兆以太网
- 实时性:动作计算+传输延迟<20ms
5. 性能评估
5.1 定量指标对比
在1.2m高度任务中,与单机基线对比:
| 指标 | 课程跳跃[3] | OmniNet[17] | 本方案 |
|---|---|---|---|
| 成功率(%) | 0 | 0.19 | 92.8 |
| 高度差(m) | 0.12 | 0.11 | 0.74 |
| 目标误差(m) | 1.11 | 1.41 | 0.25 |
| 峰值高度(m) | 0.94 | 1.54 | 1.77 |
| 功率消耗(W) | 95.3/24.8 | 333.0/37.4 | 56.7/4.44 |
5.2 现实世界表现
在无任何调参的情况下,仿真策略直接部署到实体机器人:
- 0.9m平台:成功率98%
- 1.2m平台:成功率93%
- 1.5m平台:成功率85%
- 前空翻动作:成功率72%
关键数据指标:
- 最大足端高度:1.1m(单机0.45m)
- 水平定位误差:<0.3m
- 能量效率:较单机方案提升6-8倍
6. 经验总结
成功关键因素:
- 机械设计:Robot L背部平台采用蜂窝结构,质量仅3.2kg却可承受1500N冲击力
- 时序对齐:通过以太网硬件同步,确保两机控制指令延迟<1ms
- 着陆缓冲:Robot J小腿添加3D打印阻尼器,减小着陆冲击
典型故障模式:
- 过早起跳:表现为Robot J在未获足够初速时离地
- 对策:在正则项中增加起飞时机惩罚
- 空中碰撞:两机器人肢体接触导致姿态失控
- 对策:在奖励函数中添加相对距离约束
- 着陆振荡:平台弹性导致二次弹起
- 对策:增加着陆后0.5s的关节刚度
参数调优建议:
- 课程阶段过渡:监控10步滑动平均奖励,增长<5%时触发下一阶段
- 重力变化梯度:建议按7.0→8.0→8.5→9.0→9.81m/s²分五步过渡
- 延迟课程范围:最终阶段应覆盖[0.8,1.8]s,比训练时更宽以增强鲁棒性
这个项目证实了无通信协作在动态任务中的可行性。未来可扩展方向包括:
- 三机器人金字塔式跳跃
- 动态障碍物规避跳跃
- 异构机器人协作(如四足+轮式)
