Robotic Systems

Robotic Systems · teaching-draft · v0.2.0

6. Collision, friction, and support forces

Aim

Check contact geometry and force response against a simple sliding model.

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/p06-contact/run.py

The program writes configuration, MuJoCo version, and metrics to outputs/p06-contact/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/p06-contact/run.py --config practices/p06-contact/config.yml --output outputs/p06-contact/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 the translation-only block and explain why rotation is locked for this benchmark.
  2. Allow the block to settle, then initialize a horizontal velocity.
  3. Compare sliding distance with the ideal Coulomb estimate and resting force with mg.
  4. Sweep friction, solref, and timestep separately. Report penetration and contact counts.

Expected checks

The final support force should be close to 9.81 N for the 1 kg model. The ideal stopping-distance estimate is a reference, not an exact prediction for every regularized solver configuration.

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

Restore rotation and compare a box with a sphere. Explain why rolling invalidates the sliding-only analytical benchmark.

Reading

MuJoCo computation · Drake hydroelastic