Proposal
Add a PhysX-compatible get_jacobians() to isaaclab_newton's ArticulationView so DifferentialInverseKinematicsAction works on Newton, and drop the PhysX pin that's been used as a workaround in IK env configs (e.g. the Franka reach IK envs).
Motivation
DifferentialInverseKinematicsAction reads the Jacobian via self._asset.root_view.get_jacobians(). PhysX has it; Newton's ArticulationView (from newton.selection) only exposes eval_jacobian(), which returns the spatial Jacobian — so the existing call site doesn't work as-is on Newton, regardless of which robot is being used.
The current workaround is to pin affected envs to PhysX. The Franka reach IK envs do this explicitly:
# IK control is not supported with Newton physics; use PhysX only.
self.sim.physics = PhysxCfg(bounce_threshold_velocity=0.2)
It would be nice to remove that carve-out so IK envs run on either backend.
Alternatives
A clear and concise description of any alternative solutions or features you've considered, if any.
Build Info
Describe the versions where you are observing the missing feature in:
- Isaac Lab Version: 4.6.22
isaaclab_newton Version: 0.5.25
Additional context
- Subclass
newton.selection.ArticulationView in isaaclab_newton.assets.articulation and add get_jacobians().
- Inside it, call
eval_jacobian(state), then convert spatial to geometric per body
- Return a
wp.array so the existing wp.to_torch(...) path in task_space_actions.py keeps working unchanged.
- Re-export the adapter from
isaaclab_newton.assets.articulation so Articulation picks it up instead of Newton's class directly.
Checklist
Acceptance Criteria
(May be refined)
Proposal
Add a PhysX-compatible
get_jacobians()toisaaclab_newton'sArticulationViewsoDifferentialInverseKinematicsActionworks on Newton, and drop the PhysX pin that's been used as a workaround in IK env configs (e.g. the Franka reach IK envs).Motivation
DifferentialInverseKinematicsActionreads the Jacobian viaself._asset.root_view.get_jacobians(). PhysX has it; Newton'sArticulationView(fromnewton.selection) only exposeseval_jacobian(), which returns the spatial Jacobian — so the existing call site doesn't work as-is on Newton, regardless of which robot is being used.The current workaround is to pin affected envs to PhysX. The Franka reach IK envs do this explicitly:
It would be nice to remove that carve-out so IK envs run on either backend.
Alternatives
A clear and concise description of any alternative solutions or features you've considered, if any.
Build Info
Describe the versions where you are observing the missing feature in:
isaaclab_newtonVersion: 0.5.25Additional context
newton.selection.ArticulationViewinisaaclab_newton.assets.articulationand addget_jacobians().eval_jacobian(state), then convert spatial to geometric per bodywp.arrayso the existingwp.to_torch(...)path intask_space_actions.pykeeps working unchanged.isaaclab_newton.assets.articulationsoArticulationpicks it up instead of Newton's class directly.Checklist
Acceptance Criteria
(May be refined)
isaaclab_newton'sArticulationView.get_jacobians()matches PhysX's shape and convention for fixed- and floating-base articulations.DifferentialInverseKinematicsActionruns on Newton without changes to its call site.