Quick answer: Set ArticulationBody.solverIterations to 20+ on each body. Lower fixedDeltaTime to 0.01 if needed. Articulation drift is a solver iteration count problem.

A robotic arm built with ArticulationBody has its end effector slowly drift away from the intended pose over a minute of simulation. Small per-tick errors compound. The arm is built correctly; the solver isn’t converging tight enough.

Articulation Solver

ArticulationBody uses PhysX’s articulated joint solver, which is a reduced-coordinate formulation tighter than ConfigurableJoint but still iterative. Each tick, the solver runs N iterations refining positions; with too few iterations, residual constraint error remains and accumulates as drift.

The Fix

// On each body in the chain
articulationBody.solverIterations = 24;
articulationBody.solverVelocityIterations = 8;

Default solverIterations is 6, velocity is 1. Bumping to 24/8 dramatically reduces drift for typical robotic chains. Cost: roughly 3× articulation CPU per body.

Project-Level Defaults

Edit → Project Settings → Physics → Default Solver Iterations. Setting these higher applies to all new ArticulationBodies. Per-body overrides as above for specific tight chains.

Fixed Timestep

Lower fixedDeltaTime from 0.02 to 0.01:

Time.fixedDeltaTime = 0.01f;

Doubles simulation steps per second; halves per-step error. Cost: double physics CPU. Combine with iteration tuning for stable robotic motion.

Joint Drives

For positional drives, the Force Limit and Damping play a role. Lower damping = bouncier; higher = slower but stable. For robotics, start with Damping = Force/10.

Verifying

Set a target pose. Let the simulation run for 60 seconds. Drift should be sub-millimeter. With default settings, drift is often visible (centimeters). Compare runs with and without tuning to confirm.

“Articulation solver iterations are the main lever for drift. Default 6 is too few for tight chains; 20+ is normal for robotics.”

For VR hands or precise IK setups, even higher iteration counts (32–48) are common — players notice millimeter drift on their own hands.