Skip to content

UR10

Fixed-base 6-DOF manipulator. The most complete example in the gallery — all four workflows are implemented end to end. → source folder

What's included

  • calibration.py — kinematic calibration, combined with URDF export and viser visual validation behind flags
  • identification.py — dynamic parameter identification
  • optimal_config.py — D-optimal calibration configuration generation
  • optimal_trajectory.py — exciting trajectory generation for identification
  • utils/ur10_tools.pyUR10Calibration / UR10Identification, the BaseCalibration/BaseIdentification subclasses
  • config/ur10_unified_config.yaml — extends manipulator_robot.yaml

Run

cd examples/ur10

# Kinematic calibration (full pipeline: calibrate → plot → save → export → viser viz)
python calibration.py
python calibration.py --calibrate-only      # solve only, skip URDF export
python calibration.py --update-model        # export URDF from a saved result

# Dynamic identification (html-report + verify on by default)
python identification.py
python identification.py --config config/UR10-007.yaml --verify --html-report

# Optimal experiment design
python optimal_config.py -n 20              # → results/ur10_optimal_configurations.yaml
python optimal_trajectory.py                # → results/ur10_optimal_trajectory.{yaml,csv}

All saved files are timestamped: data/calibration/calibration_results_{ts}.npz, urdf/ur10_robot_modified_{ts}.urdf.

Outputs

results/ contains calibration_report.html, identification_report.html, identification_verification.json, plus torque-comparison plots (torque_compare_per_joint.png). See Reporting & Verification for what these contain.

See also