当前位置: 首页 > news >正文

多智能体强化学习实现四足机器人协同跳跃

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算法主要基于三个考量:

  1. CTDE(集中训练分散执行)架构能有效解决信用分配问题,通过集中式critic网络评估全局状态,同时保持策略执行的分散性
  2. 近端策略优化(PPO)的clip机制能保证训练稳定性,避免多智能体场景中常见的策略崩溃
  3. 共享网络参数设计可加速策略收敛,特别适合这种角色不对称但动力学相似的机器人对

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]本方案
成功率(%)00.1992.8
高度差(m)0.120.110.74
目标误差(m)1.111.410.25
峰值高度(m)0.941.541.77
功率消耗(W)95.3/24.8333.0/37.456.7/4.44

5.2 现实世界表现

在无任何调参的情况下,仿真策略直接部署到实体机器人:

  • 0.9m平台:成功率98%
  • 1.2m平台:成功率93%
  • 1.5m平台:成功率85%
  • 前空翻动作:成功率72%

关键数据指标:

  • 最大足端高度:1.1m(单机0.45m)
  • 水平定位误差:<0.3m
  • 能量效率:较单机方案提升6-8倍

6. 经验总结

成功关键因素

  1. 机械设计:Robot L背部平台采用蜂窝结构,质量仅3.2kg却可承受1500N冲击力
  2. 时序对齐:通过以太网硬件同步,确保两机控制指令延迟<1ms
  3. 着陆缓冲:Robot J小腿添加3D打印阻尼器,减小着陆冲击

典型故障模式

  1. 过早起跳:表现为Robot J在未获足够初速时离地
    • 对策:在正则项中增加起飞时机惩罚
  2. 空中碰撞:两机器人肢体接触导致姿态失控
    • 对策:在奖励函数中添加相对距离约束
  3. 着陆振荡:平台弹性导致二次弹起
    • 对策:增加着陆后0.5s的关节刚度

参数调优建议

  1. 课程阶段过渡:监控10步滑动平均奖励,增长<5%时触发下一阶段
  2. 重力变化梯度:建议按7.0→8.0→8.5→9.0→9.81m/s²分五步过渡
  3. 延迟课程范围:最终阶段应覆盖[0.8,1.8]s,比训练时更宽以增强鲁棒性

这个项目证实了无通信协作在动态任务中的可行性。未来可扩展方向包括:

  • 三机器人金字塔式跳跃
  • 动态障碍物规避跳跃
  • 异构机器人协作(如四足+轮式)
http://www.jsqmd.com/news/753451/

相关文章:

  • AgentMesh:基于文件系统的多AI智能体协同开发协议
  • JAVA-实战8 Redis实战项目—雷神点评(3)订单
  • 图像拼接、AR定位核心技:单应性矩阵的‘四点参数化’到底怎么用?附OpenCV与深度学习两种实现
  • 告别ZooKeeper依赖!用kafbat-ui(原kafka-ui)一站式管理Kafka 3.3.1+ KRaft集群
  • Python 爬虫数据处理:爬取富文本内容清理与格式优化
  • Python Django开发者转向微信小程序:从架构理解到第一行代码的完整准备指南
  • 你不是金鱼——Spring AI 聊天记忆从“重启即失忆”到 MySQL 持久化的生产级改造实录
  • VS2022新手必看:手把手教你搞定EasyX的graphics.h头文件缺失问题
  • python msgpack
  • Python 爬虫数据处理:时序爬取数据趋势分析与展示
  • 手把手图解:Linux 0.11 启动时那场关键的‘内存大搬家’(从 0x10000 到 0x0)
  • Altium Designer 22 新手避坑指南:从原理图到PCB的10个关键设置(附快捷键清单)
  • 3步构建Windows任务栏透明化工具TranslucentTB的容器化开发环境
  • 从UE5的坐标转换函数出发,手把手带你复现一个简易的3D拾取Demo(C++/蓝图)
  • 为什么你的IAsyncEnumerable在Azure Functions中内存暴涨300%?C# 13新配置项AsyncStreamOptions.BufferCapacity正在悄悄改写GC命运
  • 65周作业
  • TTP223触摸模块的5个常见坑与避坑指南:从模式切换、电平匹配到驱动能力详解
  • C#/.NET 6下用NModbus4快速搭建Modbus TCP从站(附完整源码与ModbusPoll测试)
  • 避开MATLAB优化这些坑:fminsearch和fmincon初值设置与全局最优解搜寻指南
  • 2026 全国防水公司 TOP5 权威排名 - 企业资讯
  • 快手网页版扫码登录的Python逆向手记:我是如何‘抓’出那三个关键接口的
  • 为什么92%的C#医疗系统在FHIR 2026适配中卡在Resource Validation?——基于HL7官方Test Server压测的.NET源码级调试日志解密
  • 如何用Python快速接入Taotoken并调用多个大模型API
  • STM32MP257D异构计算模块MYC-LD25X解析与应用
  • 基于MCP协议的邮件设计自动化:AI驱动的高兼容性邮件模板生成
  • 多模态旋转位置编码原理与医疗影像应用实践
  • 企业如何利用多模型聚合能力优化内部知识问答系统
  • AI厨房管家:用Git工作流与LLM打造可复现的智能食谱系统
  • Python 爬虫高级实战:多环境爬虫配置统一管理方案
  • TCGA数据实战:用sva和limma搞定批次效应,附COAD/READ结肠癌数据完整R代码