> This page is for version Release 3.0 (default).
> For other versions, use one of these documentation indexes:
> - Release 3.0 (default): https://docs.nvidia.com/isaaclab/3.0/llms.txt
> - Release 2.3: https://docs.nvidia.com/isaaclab/2.3/llms.txt
> - Release 2.2: https://docs.nvidia.com/isaaclab/2.2/llms.txt
> - Release 2.1: https://docs.nvidia.com/isaaclab/2.1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/isaaclab/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/isaaclab/_mcp/server.

# Pose Velocity Acceleration (PVA) Sensor

A `~sensors.Pva` reads the ground-truth kinematic state of a frame. Use it for privileged
observations, state estimation, or control inputs that require more than an inertial sensor measures.
Use an [imu](/source/concepts/sensors/imu) when the observation should follow accelerometer and gyroscope conventions.

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                                                            |
| --------------------- | --------------------- | ------------------------------------------------------------------ |
| `pose_w`              | World; \[m, unitless] | Sensor position and orientation                                    |
| `projected_gravity_b` | Sensor; unitless      | Unit gravity direction projected into the sensor frame             |
| `lin_vel_b`           | Sensor; \[m/s]        | Linear velocity relative to the world                              |
| `ang_vel_b`           | Sensor; \[rad/s]      | Angular velocity relative to the world                             |
| `lin_acc_b`           | Sensor; \[m/s²]       | Coordinate linear acceleration; zero at rest and $-g$ in free fall |
| `ang_acc_b`           | Sensor; \[rad/s²]     | Angular acceleration relative to the world                         |

## Configure and read the sensor

```python
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 `~isaaclab.utils.warp.ProxyArray` buffers. Convert them to Torch views only
where Torch operations are required:

```python
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`:

```bash
uv run --extra isaacsim isaaclab example pva
```