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 flagsidentification.py— dynamic parameter identificationoptimal_config.py— D-optimal calibration configuration generationoptimal_trajectory.py— exciting trajectory generation for identificationutils/ur10_tools.py—UR10Calibration/UR10Identification, theBaseCalibration/BaseIdentificationsubclassesconfig/ur10_unified_config.yaml— extendsmanipulator_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¶
- Calibration Walkthrough / Identification Walkthrough for the theory behind these scripts.
- Full README with problem statement, math, and expected accuracy figures: figaroh-examples/examples/ur10/README.md