IImuSensor#

Fully qualified name: isaacsim::sensors::experimental::physics::IImuSensor

struct IImuSensor#

Carbonite interface for managing C++ IMU sensors.

Provides engine-agnostic IMU simulation using IPrimDataReader for rigid body velocities and Pose.h for sensor world transforms. Supports configurable rolling average filters and gravity inclusion.

The plugin is self-driving: it subscribes to PhysX simulation events (eResumed / eStopped) and physics step events internally, so it initializes, discovers sensors, and processes each substep without any Python relay.

Lifecycle:

  1. acquire via carb::getCachedInterface or pybind11 acquire function

  2. createSensor() for each IsaacImuSensor prim (plugin self-initializes on eResumed)

  3. getSensorReading() to read data (sensors update automatically each substep)

  4. shutdown() on extension unload

Public Functions

virtual void shutdown() = 0#

Shut down the manager, destroying all sensors and freeing resources.

virtual bool createSensor(const char *primPath) = 0#

Create an IMU sensor for the given IsaacImuSensor prim.

Finds the parent rigid body by walking up the prim hierarchy and creates an IRigidBodyDataView for velocity data. If a sensor already exists for this prim path the call succeeds without creating a duplicate.

Parameters:

primPath – USD path to the IsaacImuSensor prim.

Returns:

true on success (sensor created or already exists), false on failure.

virtual void removeSensor(const char *primPath) = 0#

Remove a sensor and free its resources.

Parameters:

primPath – USD path used when the sensor was created.

virtual ImuSensorReading getSensorReading(
const char *primPath,
bool readGravity,
) = 0#

Get the latest reading for a sensor.

Parameters:
  • primPath – USD path used when the sensor was created.

  • readGravity – If true, include gravity in acceleration output.

Returns:

Sensor reading. isValid is false if sensor is disabled or not found.