Add a Physics Backend
This guide extends Isaac Lab with a new physics backend. Read Backend architecture for the factory-dispatch and portable-interface design that this extension implements.
Prerequisites
Before starting, identify the engine’s lifecycle, native data ownership, and
the assets and sensors it can support. The backend must provide a
~isaaclab.physics.PhysicsManager implementation and follow the module
layout expected by ~isaaclab.utils.backend_utils.FactoryBase.
Create the backend package
Create an extension package using the backend name in its package path. For
example, a backend named mybackend uses this layout:
Implement the physics manager
The manager must expose a ~isaaclab.scene_data.SceneDataBackend so
~isaaclab.scene_data.SceneDataProvider can read the backend’s body
transforms in the Warp-native format consumed by renderers and visualizers.
Define the physics configuration
Define a ~isaaclab.physics.PhysicsCfg subclass that identifies the
manager class and holds backend-specific settings:
Register the backend key
FactoryBase does not derive a new backend key from an arbitrary physics
manager class name. Add the manager prefix to the core selector in
isaaclab.utils.backend_utils before factories can resolve assets and
sensors for the backend:
The existing _get_package_name() convention maps the mybackend key to
the isaaclab_mybackend package used above. If the integration uses another
package name, add an explicit case to _get_package_name() as well.
FactoryBase.register() only caches the concrete class after this key and
package mapping has selected and imported the backend module; calling it alone
does not register a new physics-manager prefix.
Implement assets and sensors
Each supported asset or sensor extends the matching base class in
isaaclab. The implementation class name must match the factory’s expected
name. Use lazy_export() in package __init__.py files. Once the core
backend-key mapping is in place, the factory imports these modules by package
and module-path convention and caches their implementation classes.
Validate backend discovery
FactoryBase maps isaaclab.assets.articulation to
isaaclab_mybackend.assets.articulation after the registered
mybackend key is selected from the active physics manager. Verify the
configured discovery path with the following checklist:
- Construct the backend configuration.
- Initialize a minimal simulation with that configuration.
- Instantiate one asset supported by the backend.
- Step the simulation once.
- Close the simulation cleanly.