Proposal
Add Newton backend support for :class:~isaaclab_contrib.assets.Multirotor so ARL drone assets and tasks can run with the newton_mjwarp physics backend in addition to PhysX.
The current Multirotor implementation is directly tied to PhysX instead of being registered through the backend factory pattern used by core assets. In particular:
source/isaaclab_contrib/isaaclab_contrib/assets/multirotor/multirotor.py imports Articulation from isaaclab_physx.assets.articulation.
source/isaaclab_contrib/isaaclab_contrib/assets/multirotor/multirotor_data.py imports ArticulationData from isaaclab_physx.assets.articulation.articulation_data.
Multirotor._apply_combined_wrench() applies thrust through the PhysX view method root_view.apply_forces_and_torques_at_position().
- ARL task configs currently import and assign
PhysxCfg directly, so they cannot expose a Newton preset cleanly.
The requested change is to make Multirotor backend-dispatchable, either by using the existing public isaaclab.assets.Articulation / ArticulationData factories where possible or by introducing a Multirotor-specific factory registration with PhysX and Newton implementations. The Newton implementation should apply the computed body-frame wrench through the Newton-compatible external wrench path, such as the existing WrenchComposer flow used by backend-dispatched articulations, instead of calling a PhysX-only root view API.
Motivation
scripts/demos/arl_robot_1.py and the drone tasks in isaaclab_tasks.contrib.drone_arl depend on MultirotorCfg and the Multirotor asset. Because Multirotor subclasses the PhysX articulation directly, selecting Newton for these tasks is currently blocked at the asset layer.
Build Info
Describe the versions where you are observing the missing feature in:
Checklist
Acceptance Criteria
Add the criteria for which this task is considered done. If not known at issue creation time, you can add this once the issue is assigned.
Proposal
Add Newton backend support for :class:
~isaaclab_contrib.assets.Multirotorso ARL drone assets and tasks can run with thenewton_mjwarpphysics backend in addition to PhysX.The current Multirotor implementation is directly tied to PhysX instead of being registered through the backend factory pattern used by core assets. In particular:
source/isaaclab_contrib/isaaclab_contrib/assets/multirotor/multirotor.pyimportsArticulationfromisaaclab_physx.assets.articulation.source/isaaclab_contrib/isaaclab_contrib/assets/multirotor/multirotor_data.pyimportsArticulationDatafromisaaclab_physx.assets.articulation.articulation_data.Multirotor._apply_combined_wrench()applies thrust through the PhysX view methodroot_view.apply_forces_and_torques_at_position().PhysxCfgdirectly, so they cannot expose a Newton preset cleanly.The requested change is to make Multirotor backend-dispatchable, either by using the existing public
isaaclab.assets.Articulation/ArticulationDatafactories where possible or by introducing a Multirotor-specific factory registration with PhysX and Newton implementations. The Newton implementation should apply the computed body-frame wrench through the Newton-compatible external wrench path, such as the existingWrenchComposerflow used by backend-dispatched articulations, instead of calling a PhysX-only root view API.Motivation
scripts/demos/arl_robot_1.pyand the drone tasks inisaaclab_tasks.contrib.drone_arldepend onMultirotorCfgand the Multirotor asset. Because Multirotor subclasses the PhysX articulation directly, selecting Newton for these tasks is currently blocked at the asset layer.Build Info
Describe the versions where you are observing the missing feature in:
Checklist
Acceptance Criteria
Add the criteria for which this task is considered done. If not known at issue creation time, you can add this once the issue is assigned.
MultirotorCfg.class_typesupports thenewton_mjwarpbackend.