跳转到内容

uBotMuJoCo

uBotMuJoCo 是规划中的物理插件,目前尚未发布。

规划中 尚未发布,计划版本 0.1.0

简介
用 MuJoCo 计算关节型机器人的物理,结果映射回 UE。
需要的插件
uBotCore ^0.1.0
引擎插件
无
提供
Physics.MuJoCo、Body.Articulated
用在这些组合里
还没有组合包含它

UE 自带的 Chaos 是游戏物理,接触、摩擦和关节的精度不够做抓取这类任务。uBotMuJoCo 让 MuJoCo 计算机器人的物理,算完把位姿写回 UE,画面、传感器和 ROS 2 照常工作。

Chaos 仍是默认的物理引擎,不会被替换:MuJoCo 只负责交给它的物体,场景里其他物体还由 Chaos 计算。用的是原版 UE 5.5,不需要改引擎。

在 uBot Manager 里它显示为「规划中」,按钮是「暂不可用」,现在不能安装。

能力标签 含义
Physics.MuJoCo 由 MuJoCo 计算一部分物体的物理,按仿真时钟步进,结果写回 UE
Body.Articulated 关节型机器人:机械臂、足式机器人等,第一版只做这一类

计划的工作方式:

环节 做法
步进 跟随 uBotCore 的仿真时钟,每个 UE 帧跑几个 MuJoCo 子步。暂停时不步进,单步时推进一帧
每帧顺序 时钟推进 → 写入控制指令 → MuJoCo 子步 → 位姿写回 UE 组件 → 传感器采样,传感器读到的总是这一帧算完的状态
写回 UE 由 MuJoCo 计算的组件不再由 Chaos 模拟,只接收位姿;保留查询用的碰撞,相机和激光雷达照常看得到
场景同步 静止的物体(地面、墙、桌子)复制一份碰撞体给 MuJoCo;Chaos 里移动的物体作为运动学物体同步过去,它能推动 MuJoCo 里的物体,自己不受反作用
坐标 MuJoCo 和 ROS 一样是右手系、Z 轴朝上、单位米,沿用 uBotCore 现有的 UE 与 ROS 转换,见坐标系与单位
模型 从 MJCF 或 URDF 导入,同时生成 UE 里的显示模型和 MuJoCo 模型

使用时有两条限制:

  • 会互相碰撞的物体要放在同一个物理引擎里。比如机械臂和它要抓的物体都交给 MuJoCo;跨引擎的接触只能单向近似,不在计划之内。
  • UE 里一次仍然只运行一个场景,大规模并行训练放在纯 MuJoCo 里做。同一份 MJCF 模型在 MuJoCo 里训练、在 UE 里加上画面和传感器验证,两边用的是同一个模型。

尚未确定:组件和蓝图类的名称与属性,关节级指令(位置、速度、力矩)的接口,支持的 MuJoCo 版本。

  • uBotCore:按包索引,它只依赖 uBotCore 0.1.x。计划在 uBotCore 的扩展点注册机制里声明一个“物理后端”扩展点,以后别的物理引擎也接在这里。
  • uBotSensor:传感器从组件位姿计算速度和加速度,不读物理引擎,所以装在 MuJoCo 机器人上的传感器不用改。计划再加一个可选的数据来源,让 IMU 直接读 MuJoCo 算出的加速度。
  • uBotROS:机器人实现 UBot Velocity Commandable 后,ROS 2 的 cmd_vel 就能驱动它,uBotROS 不用改,见接收 cmd_vel。
  • uBotLearning:Learning Agents 在 UE 里训练;uBotMuJoCo 走的是另一条路,在纯 MuJoCo 里训练,在 UE 里验证。
  • 现在就用 Chaos 搭机器人(Physics Asset 和 Physics Constraint),把控制写在实现了 UBot Velocity Commandable 的对象上,见插件之间怎么对接。以后物理换成 MuJoCo 时,调用它的蓝图和 ROS 端不用改。
  • 传感器照常装在机器人的组件上,见传感器通用用法。
  • 需要精确接触的任务,先在 MuJoCo 里单独做;把同一份 MJCF 留好,uBotMuJoCo 发布后直接导入。
  • uBotMuJoCo 发布后,用 Chaos 搭的机器人要不要改、怎么改,尚未确定。