Robotic Systems

Robotic Systems · teaching-draft · v0.2.0

4. Mass, inverse dynamics, and Jacobian APIs

Aim

Cross-check engine queries using identities rather than independent reimplementations of every recursive algorithm.

Time: about 120 minutes. Start with the linked lectures and the course notation contract. The reference program is complete and runnable; your work is to explain it, modify it, and test the results.

Run from this repository

uv sync --locked
uv run --locked python practices/p04-dynamics-apis/run.py

The program writes configuration, MuJoCo version, and metrics to outputs/p04-dynamics-apis/metrics.json. Experiments with a time history also write trajectory.csv. These are generated results and are not source material.

Use a separate configuration and output directory for each variation:

uv run --locked python practices/p04-dynamics-apis/run.py --config practices/p04-dynamics-apis/config.yml --output outputs/p04-dynamics-apis/baseline

Keep the original configuration as the baseline. Record all changes in your report; avoid changing several physical and numerical parameters at once.

Tasks

  1. Inspect M, c, passive force, and acceleration at a fixed state.
  2. Recover each M column from inverse-dynamics differences.
  3. Check the forward force residual with all modeled force contributions.
  4. Compare the tool Jacobian against centered tangent-space finite differences.

Expected checks

M is symmetric positive definite. The inverse-dynamics reconstruction and force residual should be very small. Jacobian finite differences require refreshing kinematics after every perturbation.

Submission

Submit your YAML configuration, a short explanation of the equations and assumptions, labeled plots or numerical comparisons with units, and a paragraph explaining a failure or limitation. Include the exact run command. The weekly practice rubric awards 40% for correctness and checks, 30% for the controlled comparison, 20% for interpretation, and 10% for reproducibility.

Extension

Run the optional Pinocchio comparison in Practice 7. Explain the role of RNEA, CRBA, and ABA rather than treating every high-level engine call as the same algorithm.

Reading

Pinocchio algorithms · MuJoCo API · MIT multibody dynamics