Pose Velocity Acceleration (PVA) Sensor#
A Pva reads a frame’s ground-truth pose, velocity, and acceleration
for control, state estimation, or privileged observations. Use an Inertial Measurement Unit (IMU) for
accelerometer and gyroscope measurements.
The sensor can attach directly to a rigid body or to a fixed child prim beneath a rigid-body ancestor. In the latter case, Isaac Lab composes the child’s fixed transform with the configured sensor offset.
Measurement contract#
For E environments, every vector has shape (E, 3). The pose has shape (E, 7) in
(x, y, z, qx, qy, qz, qw) order.
Buffer |
Frame and units |
Meaning |
|---|---|---|
|
World; [m, unitless] |
Sensor position and orientation |
|
Sensor; unitless |
Unit gravity direction projected into the sensor frame |
|
Sensor; [m/s] |
Linear velocity relative to the world |
|
Sensor; [rad/s] |
Angular velocity relative to the world |
|
Sensor; [m/s²] |
Coordinate linear acceleration; zero at rest and \(-g\) in free fall |
|
Sensor; [rad/s²] |
Angular acceleration relative to the world |
Configure and read the sensor#
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)),
)
The data fields are ProxyArray buffers. Convert them to Torch views only
where Torch operations are required:
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
Like the IMU, acceleration uses state from consecutive simulation updates. Reset the scene and sensor state together at episode boundaries.
A complete runnable example is available as pva:
uv run --extra isaacsim isaaclab example pva