Skip to content

[Proposal] Add Newton Backend Support for Multirotor Asset #6141

@YizeWang

Description

@YizeWang

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

  • I have checked that there is no similar issue in the repo (required)

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_type supports the newton_mjwarp backend.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions