Implementation:Google deepmind Mujoco MJWarp Sensor
| Knowledge Sources | |
|---|---|
| Domains | Physics_Simulation, GPU_Computing, NVIDIA_Warp |
| Last Updated | 2026-02-15 04:00 GMT |
Overview
MJWarp Sensor evaluates all sensor types (position, velocity, acceleration, touch, energy) on the GPU and writes values to the sensor data array.
Description
This module implements GPU-accelerated sensor evaluation for all MuJoCo sensor types organized by computation stage: position-dependent sensors (sensor_pos), velocity-dependent sensors (sensor_vel), and acceleration-dependent sensors (sensor_acc). It supports joint, tendon, actuator, body frame, site frame, subtree, contact, touch, tactile, rangefinder, magnetometer, camera projection, and clock sensors. The module also computes potential and kinetic energy. Sensor values are written with optional cutoff clamping based on sensor data type.
Usage
Called at multiple stages during forward dynamics: sensor_pos after position computations, sensor_vel after velocity computations, and sensor_acc after acceleration and constraint computations. Energy functions energy_pos and energy_vel are called for energy monitoring.
Code Reference
Source Location
- Repository: Google_deepmind_Mujoco
- File: mjx/mujoco/mjx/third_party/mujoco_warp/_src/sensor.py
- Lines: 1-2856
Key Functions
# Primary entry points by computation stage
def sensor_pos(m: Model, d: Data)
def sensor_vel(m: Model, d: Data)
def sensor_acc(m: Model, d: Data)
# Energy computation
def energy_pos(m: Model, d: Data)
def energy_vel(m: Model, d: Data)
# Output helpers
def _write_scalar(sensor_type, sensor_datatype, sensor_adr, sensor_cutoff, sensorid, sensor, out)
def _write_vector(...)
# Sensor evaluation functions (selection)
def _joint_pos(...)
def _tendon_pos(...)
def _actuator_pos(...)
def _ball_quat(...)
def _frame_pos(...)
def _frame_axis(...)
def _frame_quat(...)
def _accelerometer(...)
def _gyro(...)
def _velocimeter(...)
def _magnetometer(...)
def _sensor_rangefinder_init(...)
def _sensor_touch(...)
def _sensor_tactile(...)
Import
from mujoco.mjx.third_party.mujoco_warp._src.sensor import sensor_pos
from mujoco.mjx.third_party.mujoco_warp._src.sensor import sensor_vel
from mujoco.mjx.third_party.mujoco_warp._src.sensor import sensor_acc
from mujoco.mjx.third_party.mujoco_warp._src.sensor import energy_pos
from mujoco.mjx.third_party.mujoco_warp._src.sensor import energy_vel
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| m | Model | Yes | Warp model with sensor definitions, types, addresses, and cutoffs |
| d | Data | Yes | Warp simulation data with positions, velocities, accelerations, and contacts |
Outputs
| Name | Type | Description |
|---|---|---|
| d.sensordata | wp.array2d | Sensor values written at addresses specified by sensor_adr |
| d.energy | wp.array2d | Potential and kinetic energy values |