本页深入解析 atom01 人形机器人在 MuJoCo 仿真环境中的传感器体系架构,涵盖本体感觉传感器的全覆盖配置、IMU 惯性测量单元的六维空间感知设计,以及噪声模型与物理截止参数的工程考量。理解这一传感器层的设计决策,是后续进行强化学习观测空间构建、状态估计器开发以及 Sim2Real 迁移的关键前提。
Sources: atom01.xml, atom01_terrain.xml
传感器架构总览
atom01 的传感器系统遵循分层感知设计哲学:以本体感觉(Proprioception)实现关节级状态透明,以 IMU 实现躯干级空间姿态感知。整个系统包含 75 个独立传感器通道,分为两大类别:69 个执行器关联传感器覆盖全部 23 个驱动关节的位置、速度与力矩,6 个 IMU 空间传感器部署于基座连杆质心处,提供六自由度位姿与运动学量测。
graph TD
A[传感器系统 75通道] --> B[本体感觉传感器 69通道]
A --> C[IMU空间传感器 6通道]
B --> D[actuatorpos 23<br/>关节位置]
B --> E[actuatorvel 23<br/>关节速度]
B --> F[actuatorfrc 23<br/>执行器力矩]
C --> G[framequat<br/>姿态四元数]
C --> H[framepos<br/>全局位置]
C --> I[gyro<br/>角速度]
C --> J[velocimeter<br/>线速度]
C --> K[accelerometer<br/>线加速度]
C --> L[magnetometer<br/>磁场方向]
两类传感器均通过 MJCF 的 <sensor> 元素显式声明,这一设计使得仿真观测空间与真实机器人传感器接口保持同构,便于强化学习策略的训练与部署。URDF 模型中未定义任何传感元素,因此所有感知能力均由 MuJoCo 原生 MJCF 模型提供。
Sources: atom01.xml
执行器传感系统:关节级本体感觉
执行器传感器群构成机器人的本体感觉神经末梢,为每个驱动关节同步输出位置、速度与力矩三类信号。23 个执行器(6 下肢 × 2 + 躯干 1 + 5 上肢 × 2)各自对应三个传感器,形成完整的关节状态反馈矩阵。
| 传感器类型 | 元素名 | 数量 | 物理含义 | 噪声配置 |
|---|---|---|---|---|
actuatorpos |
*_p |
23 | 执行器位置(rad) | 无显式噪声 |
actuatorvel |
*_v |
23 | 执行器速度(rad/s) | 无显式噪声 |
actuatorfrc |
*_f |
23 | 执行器输出力矩(N·m) | noise="1e-3" |
所有执行器传感器均携带 user="13" 属性,该标记在 MuJoCo 中通常用于用户自定义数据分类或下游观测空间索引,暗示这些传感器可能被统一打包为维度 13 的观测向量组,供强化学习训练框架按固定步长抽取。力矩传感器显式配置了 1e-3 级别的高斯噪声,而位置与速度传感器保持理想量测,这反映了实际机器人中编码器精度通常远高于电流/力矩估计精度的物理现实。
Sources: atom01.xml
IMU 惯性测量单元配置
IMU 并非直接依附于刚体,而是通过一个名为 imu 的 Site 几何锚点间接定义。该 Site 附着于 base_link 躯干,位置处于局部坐标系原点 pos="0.0 0 0.0",尺寸半径 0.01,即模型质心偏置处。所有空间传感器均引用此 Site 作为量测参考点,确保姿态、位置、速度、加速度四组数据在空间与时间维度上严格同步。
flowchart LR
base_link[base_link 躯干] -->|包含| imu_site[imu Site<br/>pos=0,0,0<br/>size=0.01]
imu_site -->|引用| ori[framequat<br/>orientation]
imu_site -->|引用| pos[framepos<br/>position]
imu_site -->|引用| gyro[gyro<br/>angular-velocity]
imu_site -->|引用| vel[velocimeter<br/>linear-velocity]
imu_site -->|引用| acc[accelerometer<br/>linear-acceleration]
imu_site -->|引用| mag[magnetometer<br/>magnetometer]
IMU 的六通道传感器配置如下表所示:
| 传感器名 | MuJoCo 类型 | 量测物理量 | 噪声标准差 | 截止阈值 | 维度 |
|---|---|---|---|---|---|
orientation |
framequat |
全局姿态四元数 | 0.001 |
— | 4 |
position |
framepos |
全局位置(世界坐标) | 0.001 |
— | 3 |
angular-velocity |
gyro |
局部角速度(rad/s) | 0.005 |
34.9 |
3 |
linear-velocity |
velocimeter |
局部线速度(m/s) | 0.001 |
30 |
3 |
linear-acceleration |
accelerometer |
局部线加速度(m/s²) | 0.005 |
157 |
3 |
magnetometer |
magnetometer |
局部磁场方向 | 未配置 | — | 3 |
值得关注的工程细节在于:姿态四元数与全局位置使用了 framequat 和 framepos 两种帧级传感器,它们直接返回 Site 在世界坐标系下的绝对朝向与平移;而角速度、线速度、线加速度则使用了局部坐标系传感器(gyro、velocimeter、accelerometer),其输出在 Site 的局部坐标系下表达。这种混合坐标设计意味着下游控制器或状态估计器必须执行显式的坐标变换,不能直接将位置微分等同于 velocimeter 读数。
此外,角速度、线速度与线加速度均配置了 cutoff 属性,分别设定为 34.9 rad/s、30 m/s 与 157 m/s²。该参数在 MuJoCo 中定义传感器的物理量程上限,超出此范围的量测将被饱和截断,模拟真实 MEMS 传感器的满量程特性。对于人形机器人而言,157 m/s² 的加速度量程约等价于 16 g,足以覆盖行走、奔跑乃至跳跃工况;34.9 rad/s 的角速度量程约为 333°/s,可覆盖快速转身与摔倒恢复场景。
Sources: atom01.xml, atom01.xml
双场景传感器一致性
atom01.xml(平地场景)与 atom01_terrain.xml(地形场景)在传感器配置层面保持逐字节一致。两者的 <sensor> 段落从元素类型、命名规范、噪声参数到 user 标记完全相同,唯一的差异在于世界体中的地形几何定义与机器人初始高度。这种一致性确保了强化学习策略在不同仿真场景间迁移时,观测空间的分布不发生漂移,避免了因传感器参数差异导致的域随机化失效。
| 对比维度 | 平地场景 atom01.xml | 地形场景 atom01_terrain.xml |
|---|---|---|
| 传感器通道总数 | 75 | 75 |
| IMU Site 位置 | base_link 原点 |
base_link 原点 |
执行器传感器 user 标记 |
全部为 13 |
全部为 13 |
| 力矩传感器噪声 | 1e-3 |
1e-3 |
| IMU 噪声/截止参数 | 完全相同 | 完全相同 |
Sources: atom01.xml, atom01_terrain.xml
与 URDF 模型的感知能力对比
atom01 的 URDF 描述文件不包含任何 <sensor> 或等效传感声明。URDF 标准本身对传感器的支持局限于视觉与碰撞几何的静态定义,无法表达 MuJoCo 中 gyro、accelerometer 等动态物理传感器。因此,任何依赖 IMU 数据或关节力矩反馈的控制算法,必须基于 MJCF 模型进行仿真开发与验证。
| 能力维度 | URDF (atom01.urdf) | MJCF (atom01.xml) |
|---|---|---|
| 关节位置反馈 | ❌ 无原生支持 | ✅ actuatorpos |
| 关节速度反馈 | ❌ 无原生支持 | ✅ actuatorvel |
| 关节力矩反馈 | ❌ 无原生支持 | ✅ actuatorfrc |
| IMU 姿态 | ❌ 无原生支持 | ✅ framequat |
| IMU 加速度 | ❌ 无原生支持 | ✅ accelerometer |
| 噪声与量程建模 | ❌ 不支持 | ✅ noise / cutoff |
这一差异进一步解释了本项目采用双轨模型策略的动机:URDF 承担 ROS / Gazebo 生态的兼容职责,MJCF 则承载 MuJoCo 高保真物理仿真与传感器建模的核心任务。关于两种模型格式的深层映射关系,可参考后续专门章节。
Sources: atom01.urdf
传感器数据流与控制闭环
从控制架构视角审视,75 通道传感器数据在 MuJoCo 的每一步仿真中通过 mjData.sensordata 数组按声明顺序扁平输出。其逻辑索引顺序为:先排列全部 actuatorpos(23 维),再排列全部 actuatorvel(23 维),随后是 actuatorfrc(23 维),最后是 IMU 六通道(orientation 4 维 + position 3 维 + angular-velocity 3 维 + linear-velocity 3 维 + linear-acceleration 3 维 + magnetometer 3 维),总计 75 维标量数据。
这一紧凑布局使得强化学习策略网络可以低延迟地读取完整状态向量,无需在 Python 层执行复杂的 XML 查询。对于开发状态估计器(如 EKF、UKF)的工程师而言,framequat 与 gyro 的组合可直接用于姿态滤波,framepos 与 linear-velocity 的组合可用于位置-速度联合估计,而 actuatorfrc 则可作为接触检测与动力学辨识的辅助输入。
Sources: atom01.xml
推荐阅读路径
掌握传感器配置后,建议继续深入以下关联主题:
- MJCF 模型设计原理 — 理解 compiler、option、default 等全局配置如何影响传感器数值精度
- 执行器与控制接口 — 探究与传感器一一对应的 23 个 motor 执行器的控制限幅与齿轮比设计
- 平地与地形仿真场景对比 — 了解传感器一致的前提下,地形几何与初始条件如何改变机器人动力学
- URDF 到 MJCF 的映射与差异 — 全面梳理两种模型描述在关节、惯性、碰撞与传感四方面的能力边界差异
- 强化学习训练集成要点 — 学习如何将 75 维传感器输出构建为策略网络的观测空间与奖励函数