位姿、速度与加速度(PVA)传感器

位姿、速度与加速度(PVA)传感器#

Pva 读取坐标系的运动学真值状态。它适用于特权观测、状态估计,以及需要比惯性传感器测量内容更多的控制输入。如果观测应遵循加速度计和陀螺仪的约定,请使用 惯性测量单元 (IMU) 。

传感器可以直接附着到刚体,也可以附着到具有刚体祖先节点的固定子 prim。后一种情况下,Isaac Lab 会将子节点的固定变换与配置的传感器偏移组合。

测量约定#

对于 E 个环境,每个向量的形状为 (E, 3) 。位姿形状为 (E, 7) ,分量顺序为 (x, y, z, qx, qy, qz, qw) 。

缓冲区

坐标系和单位

含义

pose_w

世界坐标系;[m,无单位]

传感器位置和方向

projected_gravity_b

传感器坐标系;无单位

投影到传感器坐标系中的单位重力方向

lin_vel_b

传感器坐标系;[m/s]

相对于世界的线速度

ang_vel_b

传感器坐标系;[rad/s]

相对于世界的角速度

lin_acc_b

传感器坐标系;[m/s²]

坐标线加速度;静止时为零,自由落体时为 \(-g\)

ang_acc_b

传感器坐标系;[rad/s²]

相对于世界的角加速度

配置和读取传感器#

from isaaclab.sensors import PvaCfg

base_state = PvaCfg(
    prim_path="{ENV_REGEX_NS}/Robot/base",
    update_period=0.0,
    offset=PvaCfg.OffsetCfg(pos=(0.0, 0.0, 0.05)),
)

数据字段为 ProxyArray 缓冲区。仅在需要 Torch 操作时将它们转换为 Torch 视图:

pva_data = scene["base_state"].data
pose_w = pva_data.pose_w.torch
linear_velocity = pva_data.lin_vel_b.torch
coordinate_acceleration = pva_data.lin_acc_b.torch

与 IMU 一样,加速度使用连续仿真更新中的状态计算。请在回合边界同时重置场景和传感器状态。

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

uv run --extra isaacsim isaaclab example pva