惯性测量单元 (IMU)

惯性测量单元 (IMU)#

Imu 模拟传统惯性测量单元输出的两种量:

  • ang_vel_b :相对于世界的角速度 [rad/s],以 IMU 坐标系表示。

  • lin_acc_b :固有线加速度 [m/s²],以 IMU 坐标系表示。

固有加速度是加速度计实际测量的量。自由落体时它为零;传感器静止、受到支撑而抵抗重力时,它指向上方,大小为 \(g\) 。这与 位姿、速度与加速度(PVA)传感器 报告的坐标加速度不同。

决定 IMU 固有加速度的力

配置传感器#

将传感器附着到刚体,或刚体下方的固定子坐标系。 offset 设置测量坐标系相对于父坐标系的位置和方向。

from isaaclab.sensors import ImuCfg

base_imu = ImuCfg(
    prim_path="{ENV_REGEX_NS}/Robot/base/imu",
    update_period=0.0,
    offset=ImuCfg.OffsetCfg(
        pos=(0.0, 0.0, 0.05),
        rot=(0.0, 0.0, 0.0, 1.0),
    ),
    debug_vis=True,
)

这两个数据字段都是 ProxyArray 缓冲区。对于 E 个环境,其 Torch 视图形状为 (E, 3) :

imu_data = scene["base_imu"].data
angular_velocity = imu_data.ang_vel_b.torch
proper_acceleration = imu_data.lin_acc_b.torch

加速度估计依赖连续的仿真状态。请同时重置场景及其传感器,避免将求导历史带入下一回合。传感器更新周期应与使用该测量值的控制循环兼容。

IMU 加速度调试可视化

完整的可运行示例名为 imu :

uv run --extra isaacsim isaaclab example imu