isaaclab_newton.sim.schemas

Contents

isaaclab_newton.sim.schemas#

Sub-module containing Newton schema configuration exports.

Newton-targeted schema configuration classes. Each cfg below extends a solver-common base in isaaclab.sim.schemas with Newton-namespaced attributes (newton:*) or solver-specific attributes (mjc:* for Newton’s MuJoCo solver). MuJoCo cfgs subclass their Newton counterpart because MuJoCo is one of Newton’s solver options.

See Schema Configuration Classes for the design and when to use each class.

Newton-targeted (family roots)

NewtonDeformableBodyPropertiesCfg

Newton-specific properties to apply to a deformable body.

NewtonRigidBodyPropertiesCfg

Newton-targeted rigid body properties.

NewtonJointDrivePropertiesCfg

Newton-targeted joint drive properties.

NewtonCollisionPropertiesCfg

Newton-specific collision properties.

NewtonMeshCollisionPropertiesCfg

Newton-specific mesh collision properties.

NewtonMaterialPropertiesCfg

Newton-specific rigid body material properties.

NewtonArticulationRootPropertiesCfg

Newton-specific articulation root properties.

MuJoCo-solver-specific

MujocoRigidBodyPropertiesCfg

MuJoCo-solver-specific rigid body properties.

MujocoJointDrivePropertiesCfg

MuJoCo-solver-specific joint drive properties.

Deformable Body#

class isaaclab_newton.sim.schemas.NewtonDeformableBodyPropertiesCfg[source]#

Bases: DeformableBodyPropertiesBaseCfg

Newton-specific properties to apply to a deformable body.

Currently empty. Backend-specific fields can be added here when Newton exposes a registered deformable body property schema.

The newton: namespace is reserved here so future Newton-native deformable-body fields can be added without an API change.

See modify_deformable_body_properties() for more information.

Schema define and modify functions remain unified in isaaclab.sim.schemas.

Rigid Body#

class isaaclab_newton.sim.schemas.NewtonRigidBodyPropertiesCfg[source]#

Bases: RigidBodyBaseCfg

Newton-targeted rigid body properties.

Base class for cfgs that author rigid-body attributes consumed by any of Newton’s solver options (MuJoCo, XPBD, Featherstone, Semi-implicit, Kamino). Newton has no native newton:* rigid-body attributes today, so this class is currently empty — solver-specific subclasses (e.g., MujocoRigidBodyPropertiesCfg) carry the actual fields.

The newton: namespace is reserved here so future Newton-native rigid-body fields can be added without an API change.

See modify_rigid_body_properties() for more information.

Attributes:

rigid_body_enabled

Whether to enable or disable the rigid body.

kinematic_enabled

Determines whether the body is kinematic or not.

disable_gravity

Disable gravity for the body.

rigid_body_enabled: bool | None#

Whether to enable or disable the rigid body.

kinematic_enabled: bool | None#

Determines whether the body is kinematic or not.

A kinematic body is a body that is moved through animated poses or through user defined poses. The simulation still derives velocities for the kinematic body based on the external motion.

For more information on kinematic bodies, please refer to the documentation.

disable_gravity: bool | None#

Disable gravity for the body.

PhysX honors this per-body via physxRigidBody:disableGravity: setting True excludes the body from world gravity integration.

Newton currently consumes the same USD attribute at the scene level – Newton’s importer reads physxRigidBody:disableGravity on the scene prim and uses it to drive the scene-wide builder.gravity flag (import_usd.py:1212). Per-body intent is therefore partially honored on Newton: whichever rigid body has the attribute authored ends up controlling scene-wide gravity, and other bodies cannot be selectively excluded.

The field is placed on the base because the user-facing intent (per-body gravity exclusion for markers, sensors, kinematic targets) is universal physics and PhysX honors it fully. Closing the Newton gap is a kernel-level fix (introduce Model.body_disable_gravity boolean array consumed by the integrator) that does not require a cfg-API change.

class isaaclab_newton.sim.schemas.MujocoRigidBodyPropertiesCfg[source]#

Bases: NewtonRigidBodyPropertiesCfg

MuJoCo-solver-specific rigid body properties.

Extends NewtonRigidBodyPropertiesCfg with body-level gravity compensation, consumed only when running Newton’s MuJoCo solver.

See modify_rigid_body_properties() for more information.

Note

If the values are None, they are not modified.

Attributes:

gravcomp

Gravity compensation scale for the body [dimensionless].

rigid_body_enabled

Whether to enable or disable the rigid body.

kinematic_enabled

Determines whether the body is kinematic or not.

disable_gravity

Disable gravity for the body.

gravcomp: float | None#

Gravity compensation scale for the body [dimensionless].

0.0 = no compensation; 1.0 = full compensation. Written to mjc:gravcomp on the rigid-body prim. Body-level gravcomp must be set for joint-level actuatorgravcomp to have any effect.

rigid_body_enabled: bool | None#

Whether to enable or disable the rigid body.

kinematic_enabled: bool | None#

Determines whether the body is kinematic or not.

A kinematic body is a body that is moved through animated poses or through user defined poses. The simulation still derives velocities for the kinematic body based on the external motion.

For more information on kinematic bodies, please refer to the documentation.

disable_gravity: bool | None#

Disable gravity for the body.

PhysX honors this per-body via physxRigidBody:disableGravity: setting True excludes the body from world gravity integration.

Newton currently consumes the same USD attribute at the scene level – Newton’s importer reads physxRigidBody:disableGravity on the scene prim and uses it to drive the scene-wide builder.gravity flag (import_usd.py:1212). Per-body intent is therefore partially honored on Newton: whichever rigid body has the attribute authored ends up controlling scene-wide gravity, and other bodies cannot be selectively excluded.

The field is placed on the base because the user-facing intent (per-body gravity exclusion for markers, sensors, kinematic targets) is universal physics and PhysX honors it fully. Closing the Newton gap is a kernel-level fix (introduce Model.body_disable_gravity boolean array consumed by the integrator) that does not require a cfg-API change.

Joint Drive#

class isaaclab_newton.sim.schemas.NewtonJointDrivePropertiesCfg[source]#

Bases: JointDriveBaseCfg

Newton-targeted joint drive properties.

Base class for cfgs that author joint-drive attributes consumed by any of Newton’s solver options. Newton has no native newton:* joint-drive attributes today, so this class is currently empty — solver-specific subclasses (e.g., MujocoJointDrivePropertiesCfg) carry the actual fields.

The newton: namespace is reserved here so future Newton-native joint-drive fields can be added without an API change.

See modify_joint_drive_properties() for more information.

Attributes:

drive_type

Joint drive type to apply.

max_force

Maximum force/torque that can be applied to the joint [N for linear joints, N-m for angular joints].

max_effort

Deprecated alias for max_force.

stiffness

Stiffness of the joint drive.

damping

Damping of the joint drive.

ensure_drives_exist

If True, ensure every joint has a non-zero drive so that physics backends (e.g. Newton) create proper actuators for it.

max_joint_velocity

Maximum velocity of the joint [m/s for linear joints, rad/s for angular joints].

max_velocity

Deprecated alias for max_joint_velocity.

drive_type: Literal['force', 'acceleration'] | None#

Joint drive type to apply.

If the drive type is “force”, then the joint is driven by a force. If the drive type is “acceleration”, then the joint is driven by an acceleration (usually used for kinematic joints).

max_force: float | None#

Maximum force/torque that can be applied to the joint [N for linear joints, N-m for angular joints].

Writes drive:<linear|angular>:physics:maxForce via UsdPhysics.DriveAPI.

max_effort: float | None#

Deprecated alias for max_force.

Deprecated since version 4.6.25: Use max_force instead. The cfg field is renamed so its snake_case name maps identity-style to the USD camelCase attribute (maxForce on UsdPhysics.DriveAPI). The alias is forwarded to max_force in __post_init__() and will be removed in 4.0.

stiffness: float | None#

Stiffness of the joint drive.

The unit depends on the joint model:

  • For linear joints, the unit is kg-m/s^2 (N/m).

  • For angular joints, the unit is kg-m^2/s^2/rad (N-m/rad).

damping: float | None#

Damping of the joint drive.

The unit depends on the joint model:

  • For linear joints, the unit is kg-m/s (N-s/m).

  • For angular joints, the unit is kg-m^2/s/rad (N-m-s/rad).

ensure_drives_exist: bool#

If True, ensure every joint has a non-zero drive so that physics backends (e.g. Newton) create proper actuators for it.

When a USD asset defines PhysicsDriveAPI with stiffness=0 and damping=0, some backends treat the joint as passive (no PD control). Enabling this flag writes a minimal stiffness (1e-3) to any drive whose stiffness and damping are both zero, guaranteeing that the backend recognises the drive as active. The actual gains are expected to be overridden later by the actuator model.

max_joint_velocity: float | None#

Maximum velocity of the joint [m/s for linear joints, rad/s for angular joints].

Notes

Today this writes physxJoint:maxJointVelocity (a PhysX add-on schema attribute). Newton’s USD importer consumes the same attribute via its PhysX-bridge resolver and populates Model.joint_velocity_limit; the PhysX engine consumes it natively. The Kamino solver honors the limit at the simulation step. The XPBD, Featherstone, and Semi-implicit Newton solvers import the value but do not consume it in their kernels; the MuJoCo (MJC) solver explicitly drops it. When Newton ships newton:maxJointVelocity as a registered applied API, the writer namespace will switch transparently and this docstring caveat will be removed.

max_velocity: float | None#

Deprecated alias for max_joint_velocity.

Deprecated since version 4.6.25: Use max_joint_velocity instead. The cfg field is renamed so its snake_case name maps identity-style to the USD camelCase attribute (physxJoint:maxJointVelocity). The alias is forwarded to max_joint_velocity in __post_init__() and will be removed in 4.0.

class isaaclab_newton.sim.schemas.MujocoJointDrivePropertiesCfg[source]#

Bases: NewtonJointDrivePropertiesCfg

MuJoCo-solver-specific joint drive properties.

Extends NewtonJointDrivePropertiesCfg with joint-level gravity compensation routing, consumed only when running Newton’s MuJoCo solver.

See modify_joint_drive_properties() for more information.

Note

If the values are None, they are not modified.

Attributes:

actuatorgravcomp

Route gravity compensation forces through the actuator channel.

drive_type

Joint drive type to apply.

max_force

Maximum force/torque that can be applied to the joint [N for linear joints, N-m for angular joints].

max_effort

Deprecated alias for max_force.

stiffness

Stiffness of the joint drive.

damping

Damping of the joint drive.

ensure_drives_exist

If True, ensure every joint has a non-zero drive so that physics backends (e.g. Newton) create proper actuators for it.

max_joint_velocity

Maximum velocity of the joint [m/s for linear joints, rad/s for angular joints].

max_velocity

Deprecated alias for max_joint_velocity.

actuatorgravcomp: bool | None#

Route gravity compensation forces through the actuator channel.

When True, compensation forces go to qfrc_actuator (subject to force limits). Requires body-level MujocoRigidBodyPropertiesCfg.gravcomp. Written to mjc:actuatorgravcomp via MjcJointAPI.

drive_type: Literal['force', 'acceleration'] | None#

Joint drive type to apply.

If the drive type is “force”, then the joint is driven by a force. If the drive type is “acceleration”, then the joint is driven by an acceleration (usually used for kinematic joints).

max_force: float | None#

Maximum force/torque that can be applied to the joint [N for linear joints, N-m for angular joints].

Writes drive:<linear|angular>:physics:maxForce via UsdPhysics.DriveAPI.

max_effort: float | None#

Deprecated alias for max_force.

Deprecated since version 4.6.25: Use max_force instead. The cfg field is renamed so its snake_case name maps identity-style to the USD camelCase attribute (maxForce on UsdPhysics.DriveAPI). The alias is forwarded to max_force in __post_init__() and will be removed in 4.0.

stiffness: float | None#

Stiffness of the joint drive.

The unit depends on the joint model:

  • For linear joints, the unit is kg-m/s^2 (N/m).

  • For angular joints, the unit is kg-m^2/s^2/rad (N-m/rad).

damping: float | None#

Damping of the joint drive.

The unit depends on the joint model:

  • For linear joints, the unit is kg-m/s (N-s/m).

  • For angular joints, the unit is kg-m^2/s/rad (N-m-s/rad).

ensure_drives_exist: bool#

If True, ensure every joint has a non-zero drive so that physics backends (e.g. Newton) create proper actuators for it.

When a USD asset defines PhysicsDriveAPI with stiffness=0 and damping=0, some backends treat the joint as passive (no PD control). Enabling this flag writes a minimal stiffness (1e-3) to any drive whose stiffness and damping are both zero, guaranteeing that the backend recognises the drive as active. The actual gains are expected to be overridden later by the actuator model.

max_joint_velocity: float | None#

Maximum velocity of the joint [m/s for linear joints, rad/s for angular joints].

Notes

Today this writes physxJoint:maxJointVelocity (a PhysX add-on schema attribute). Newton’s USD importer consumes the same attribute via its PhysX-bridge resolver and populates Model.joint_velocity_limit; the PhysX engine consumes it natively. The Kamino solver honors the limit at the simulation step. The XPBD, Featherstone, and Semi-implicit Newton solvers import the value but do not consume it in their kernels; the MuJoCo (MJC) solver explicitly drops it. When Newton ships newton:maxJointVelocity as a registered applied API, the writer namespace will switch transparently and this docstring caveat will be removed.

max_velocity: float | None#

Deprecated alias for max_joint_velocity.

Deprecated since version 4.6.25: Use max_joint_velocity instead. The cfg field is renamed so its snake_case name maps identity-style to the USD camelCase attribute (physxJoint:maxJointVelocity). The alias is forwarded to max_joint_velocity in __post_init__() and will be removed in 4.0.

Collision#

class isaaclab_newton.sim.schemas.NewtonCollisionPropertiesCfg[source]#

Bases: CollisionBaseCfg

Newton-specific collision properties.

Extends CollisionBaseCfg with Newton-native contact geometry attributes.

See modify_collision_properties() for more information.

Note

If the values are None, they are not modified.

Attributes:

contact_margin

Outward inflation of the collision surface [m].

contact_gap

Additional contact detection gap [m].

collision_enabled

Whether to enable or disable collisions.

contact_offset

Contact offset for the collision shape [m].

rest_offset

Rest offset for the collision shape [m].

contact_margin: float | None#

Outward inflation of the collision surface [m].

Extends the effective collision surface outward. Sum of both bodies’ margins is used for collision detection. Essential for thin shells and cloth. Written to newton:contactMargin via NewtonCollisionAPI. Range: [0, inf).

contact_gap: float | None#

Additional contact detection gap [m].

AABBs are expanded by this value; contacts detected earlier to avoid tunneling. Written to newton:contactGap via NewtonCollisionAPI. Set to -inf to use Newton’s builder default. Range: [0, inf).

collision_enabled: bool | None#

Whether to enable or disable collisions.

Writes physics:collisionEnabled via UsdPhysics.CollisionAPI.

contact_offset: float | None#

Contact offset for the collision shape [m].

The collision detector generates contact points as soon as two shapes get closer than the sum of their contact offsets. This quantity should be non-negative which means that contact generation can potentially start before the shapes actually penetrate.

Writes physxCollision:contactOffset. Newton’s USD importer consumes the same attribute via its PhysX-bridge resolver.

rest_offset: float | None#

Rest offset for the collision shape [m].

The rest offset quantifies how close a shape gets to others at rest, At rest, the distance between two vertically stacked objects is the sum of their rest offsets. If a pair of shapes have a positive rest offset, the shapes will be separated at rest by an air gap.

Writes physxCollision:restOffset. Newton’s USD importer consumes the same attribute via its PhysX-bridge resolver.

class isaaclab_newton.sim.schemas.NewtonMeshCollisionPropertiesCfg[source]#

Bases: NewtonCollisionPropertiesCfg, MeshCollisionBaseCfg

Newton-specific mesh collision properties.

Extends NewtonCollisionPropertiesCfg with convex-hull vertex limit.

See modify_mesh_collision_properties() for more information.

Note

If the values are None, they are not modified.

Attributes:

max_hull_vertices

Maximum vertices in the convex hull approximation [dimensionless].

mesh_approximation_name

"none".

collision_enabled

Whether to enable or disable collisions.

contact_offset

Contact offset for the collision shape [m].

rest_offset

Rest offset for the collision shape [m].

contact_margin

Outward inflation of the collision surface [m].

contact_gap

Additional contact detection gap [m].

max_hull_vertices: int | None#

Maximum vertices in the convex hull approximation [dimensionless].

Only relevant when physics:approximation = "convexHull". Written to newton:maxHullVertices via NewtonMeshCollisionAPI. Set to -1 to use as many vertices as needed for a perfect hull.

mesh_approximation_name: str#

“none”.

Writes physics:approximation via UsdPhysics.MeshCollisionAPI. Refer to schemas.MESH_APPROXIMATION_TOKENS for available options.

Type:

Name of mesh collision approximation method. Default

collision_enabled: bool | None#

Whether to enable or disable collisions.

Writes physics:collisionEnabled via UsdPhysics.CollisionAPI.

contact_offset: float | None#

Contact offset for the collision shape [m].

The collision detector generates contact points as soon as two shapes get closer than the sum of their contact offsets. This quantity should be non-negative which means that contact generation can potentially start before the shapes actually penetrate.

Writes physxCollision:contactOffset. Newton’s USD importer consumes the same attribute via its PhysX-bridge resolver.

rest_offset: float | None#

Rest offset for the collision shape [m].

The rest offset quantifies how close a shape gets to others at rest, At rest, the distance between two vertically stacked objects is the sum of their rest offsets. If a pair of shapes have a positive rest offset, the shapes will be separated at rest by an air gap.

Writes physxCollision:restOffset. Newton’s USD importer consumes the same attribute via its PhysX-bridge resolver.

contact_margin: float | None#

Outward inflation of the collision surface [m].

Extends the effective collision surface outward. Sum of both bodies’ margins is used for collision detection. Essential for thin shells and cloth. Written to newton:contactMargin via NewtonCollisionAPI. Range: [0, inf).

contact_gap: float | None#

Additional contact detection gap [m].

AABBs are expanded by this value; contacts detected earlier to avoid tunneling. Written to newton:contactGap via NewtonCollisionAPI. Set to -inf to use Newton’s builder default. Range: [0, inf).

Material#

class isaaclab_newton.sim.schemas.NewtonMaterialPropertiesCfg[source]#

Bases: RigidBodyMaterialBaseCfg

Newton-specific rigid body material properties.

Extends RigidBodyMaterialBaseCfg with Newton-native friction attributes.

See spawn_rigid_body_material() for more information.

Note

If the values are None, they are not modified.

Attributes:

torsional_friction

Torsional friction coefficient (resistance to spinning at a contact point) [dimensionless].

func

Function to use for creating the material.

static_friction

The static friction coefficient.

dynamic_friction

The dynamic friction coefficient.

restitution

The restitution coefficient.

rolling_friction

Rolling friction coefficient (resistance to rolling motion) [dimensionless].

torsional_friction: float | None#

Torsional friction coefficient (resistance to spinning at a contact point) [dimensionless].

Written to newton:torsionalFriction via NewtonMaterialAPI. Range: [0, inf).

func: Callable | str#

Function to use for creating the material.

static_friction: float#

The static friction coefficient. Defaults to 0.5.

dynamic_friction: float#

The dynamic friction coefficient. Defaults to 0.5.

restitution: float#

The restitution coefficient. Defaults to 0.0.

rolling_friction: float | None#

Rolling friction coefficient (resistance to rolling motion) [dimensionless].

Written to newton:rollingFriction via NewtonMaterialAPI. Range: [0, inf).

Articulation Root#

class isaaclab_newton.sim.schemas.NewtonArticulationRootPropertiesCfg[source]#

Bases: ArticulationRootBaseCfg

Newton-specific articulation root properties.

Extends ArticulationRootBaseCfg with Newton-native self-collision control.

See modify_articulation_root_properties() for more information.

Note

If the values are None, they are not modified.

Attributes:

articulation_enabled

Whether to enable or disable the articulation.

fix_root_link

Whether to fix the root link of the articulation.

self_collision_enabled

Whether self-collisions between bodies in this articulation are enabled.

articulation_enabled: bool | None#

Whether to enable or disable the articulation.

PhysX honors this per-articulation at sim time via physxArticulation:articulationEnabled: setting False makes PhysX skip the articulation in its solver passes.

On Newton, the field is read by the IsaacLab Newton wrapper at spawn time (isaaclab_newton/assets/rigid_object/rigid_object.py:1035) as a guard against accidentally spawning a RigidObject over a prim that still has ArticulationRootAPI applied; setting False suppresses the guard error. The Newton solver itself does not consult the flag at sim time.

Placed on the solver-common class because the user-facing intent is universal and both PhysX (sim-time) and the IL Newton wrapper (spawn-time) honor it.

Whether to fix the root link of the articulation.

  • If set to None, the root link is not modified.

  • If the articulation already has a fixed root link, this flag will enable or disable the fixed joint.

  • If the articulation does not have a fixed root link, this flag will create a fixed joint between the world frame and the root link. The joint is created with the name “FixedJoint” under the articulation prim.

Note

This is a non-USD schema property. It is handled by the modify_articulation_root_properties() function.

self_collision_enabled: bool | None#

Whether self-collisions between bodies in this articulation are enabled.

Written to newton:selfCollisionEnabled via NewtonArticulationRootAPI. Newton’s resolver checks this native attribute first before falling back to physxArticulation:enabledSelfCollisions.