Tutorial 4: Joint drive tuning#

Tutorial

Collision pairs are filtered. Next, set the torque and velocity limits that determine how strongly and how quickly each joint can move. Limits above the real hardware specification make simulated grasps and controllers unrealistic; limits that are too low make the hand weak or sluggish.

Learning Objectives#

In this tutorial, you will:

  • Understand how Newton mimic joints model the underactuated finger mechanism.

  • Compute maximum joint torque from the Inspire Hand specifications.

  • Set maximum joint velocity from the Inspire Hand specifications.

The palm-finger specifications used here are a 10 N maximum grip force and a 260 deg/s maximum bend speed.

Prerequisites#

Mimic joints#

The Inspire Hand uses mimic joints to model its underactuated mechanism. A single motor drives a follower joint through a fixed gear ratio and offset. For example, right_index_2_joint follows right_index_1_joint.

This tutorial uses the Newton physics API. Newton authors the relationship in physics.usda with NewtonMimicAPI attributes such as newton:mimicCoef0, newton:mimicCoef1, and newton:mimicJoint. Newton mimic constraints are non-compliant by default, so no additional setup is required before gain tuning.

Note

PhysX mimic joints can expose Natural Frequency and Damping Ratio for compliant behavior. Those settings are outside the scope of this tutorial.

Configure maximum joint torque#

Maximum drive force is torque for a revolute joint. It limits how much force the finger can apply at contact. Derive it from the manufacturer’s grip force and the distance from the joint to the fingertip.

Torque = Force × Distance

For the little finger, the maximum force is 10 N. The distance from right_little_1_joint to the fingertip is 0.045 m + 0.039 m.

Little finger torque: 10 × (0.045 + 0.039) = 0.84 Nm.

The mimic chain has two joints, so multiply by two:

Little finger maximum drive force: 0.84 × 2 = 1.68 Nm.

  1. In the Layer tab, click the Insert Sublayer icon.

Layer panel with the Insert Sublayer icon highlighted.
  1. In the file dialog, navigate to payloads/Physics/, select physx.usda, and click Open.

File dialog with physx.usda selected.
  1. Expand the layer tree, right-click physics.usda, and select Set Authoring Layer.

Context menu for setting physics.usda as the authoring layer.
  1. In the Stage panel, select inspire_hand/Physics/right_little_1_joint.

  2. In Drive, set Max Force to 1.68.

Drive section with Max Force set to 1.68 for right_little_1_joint.
  1. Click the blue files icon next to physics.usda (Authoring Layer) to save the change.

Layer panel with the save icon for physics.usda.

Apply maximum velocity#

Maximum joint velocity prevents the solver from commanding motion that real hardware cannot achieve. Set the palm-finger limit from the 260 deg/s bend-speed specification.

  • Realism — Simulated motion matches the hardware envelope.

  • Stability — The solver avoids velocity spikes that can destabilize the hand.

  1. In the Layer tab, right-click physx.usda and select Set Authoring Layer.

Context menu for setting physx.usda as the authoring layer.

The active physx.usda layer is highlighted green.

physx.usda highlighted as the active authoring layer.
  1. In the Stage panel, select inspire_hand/Physics/right_little_1_joint.

  2. In the Property panel, open Raw USD Properties > Advanced and set Maximum Joint Velocity to 260.

Advanced drive properties with Maximum Joint Velocity set to 260 degrees per second.
  1. Press Play to observe the velocity cap, then press Stop.

Little finger moving with its maximum joint velocity limited.
  1. Click the blue files icon next to physx.usda (Authoring Layer) to save the change.

Layer panel with the save icon for physx.usda.

Warning

Maximum Joint Velocity writes physxJoint:maxJointVelocity, which only PhysX reads directly. The Newton backend resolves the limit from newton:velocityLimit first and falls back to physxJoint:maxJointVelocity only when nothing is authored there. A joint that already carries an authored newton:velocityLimitinf included, which means unlimited — ignores this cap under Newton. Author the matching newton:velocityLimit when both backends must honor the same cap. See the PhysX layer notes in Tutorial 1.

Note

Open Isaac/Samples/Rigging/Inspire/module_4_end/inspire_hand/inspire_hand.usda before starting Tutorial 5. This checkpoint includes the mimic-joint and drive-limit configuration for the full hand.

Summary#

This tutorial covered:

  • Newton mimic joints, which model the hand’s underactuated finger kinematics without extra compliance setup.

  • Computing and setting maximum joint torque from grip force and fingertip distance.

  • Setting maximum joint velocity from the hardware specification.

Next Steps#

Continue to Tutorial 5: Joint gains tuning to tune drive stiffness and damping with the Gain Tuner.

Back to Gallery View