FIGAROH: a Python toolbox for dynamic identification and geometric calibration of robots and humans

Thanh D. V. Nguyen1,2, Vincent Bonnet1, Maxime Sabbah1, Maxime Gautier3, Pierre Fernbach2, Florent Lamiraux1
1LAAS-CNRS, CNRS, Université Paul Sabatier, Toulouse, France 2TOWARD S.A.S, Toulouse, France 3LS2N, Université de Nantes, Nantes, France

Abstract

The accuracy of the geometric and dynamic models for robots and humans is crucial for simulation, control, and motion analysis. For example, joint torque, which is a function of geometric and dynamic parameters, is a critical variable that heavily impacts the performance of model-based control, or that can motivate a clinical decision after a biomechanical analysis. Fortunately, these models can be identified using extensive works from literature. However, for a non-expert, building an identification model and designing an experimentation plan, which should not require long hours and/or lead to poor results, is not a trivial task, especially for anthropometric structures such as humanoids or humans that need frequent update. In this work, we propose a unified framework for geometric calibration and dynamic identification in the form of a Python open-source toolbox. Besides identification model building and data processing, the toolbox can automatically generate exciting postures and motions to minimize the experimental burden from the robot, measurements, and environment description. The possibilities of this toolbox are exemplified with several datasets of human, humanoid, and serial robots.

Features

FIGAROH Features Flowchart

FIGAROH provides a comprehensive suite of tools for robot calibration and identification:

Dynamic Identification

  • Advanced Model Support: Dynamic models including friction, actuator inertia, joint torque offsets
  • Optimal Trajectory Generation: Continuous exciting trajectories with constraint handling
  • Smart Data Processing: Automated filtering and pre-processing pipelines
  • Multiple Algorithms: Selection of parameter estimation methods (LS, WLS, TLS)
  • Physical Consistency: Physically consistent inertial parameters for URDF updates

Geometric Calibration

  • Complete Kinematic Models: Full-set kinematic parameter estimation
  • Optimal Configuration: Automated calibration posture selection via combinatorial optimization
  • Flexible Sensing: Support for various sensors (cameras, motion capture, planar constraints)
  • Custom Kinematic Chains: Adaptable to different robot structures
  • URDF Integration: Direct model parameter updates

Configuration Management

  • Unified YAML Format: Single configuration system for all workflows
  • Template Inheritance: Reusable configuration templates
  • Automatic Format Detection: Seamless legacy compatibility
  • Parameter Mapping: Advanced conversion between configuration formats
  • Validation System: Comprehensive configuration validation

Enhanced Tools

  • Modern Regressor Builder: Object-oriented, extensible regressor computation
  • Advanced Visualization: Rich plotting and analysis tools
  • Error Handling: Robust error management and reporting
  • Results Management: Structured result storage and analysis

Installation

Quick Installation (Recommended)

Install the core FIGAROH package with all dependencies (except for cyipopt):

pip install figaroh

Development Installation

For development or local installation from source, choose one of these methods:

Method 1: Direct pip installation (Simple)
git clone https://github.com/thanhndv212/figaroh-plus.git
cd figaroh
pip install -e .
Method 2: Conda environment (Recommended for the use of cyipopt)
git clone https://github.com/thanhndv212/figaroh-plus.git
cd figaroh
# Create conda environment with optimized C++ libraries
conda env create -f environment.yml
conda activate figaroh-dev

The conda environment automatically installs:

  • Python 3.12
  • cyipopt (C++ optimization library via conda-forge)
  • All other dependencies via pip

Examples

Complete examples and tutorials are available in a separate repository: figaroh-examples

The repository provides comprehensive examples demonstrating FIGAROH's capabilities across different robot types:

Robot-Specific Examples
  • SOARM: Custom robot example showcasing geometric calibration workflows, including camera calibration and optimal configuration generation for precision pose estimation
  • Staubli TX40: Industrial manipulator example focused on dynamic inertial parameter identification, demonstrating advanced regressor building and parameter estimation algorithms
  • TALOS: Humanoid robot example for whole-body geometric calibration, including torso-arm calibration and multi-sensor fusion for accurate kinematic modeling
  • TIAGo: Mobile manipulator example combining dynamic identification, geometric calibration, and mobile base modeling, showing integrated approaches for complex robot systems
  • UR10: Universal Robot manipulator example for geometric calibration using RealSense camera and checkerboard patterns, demonstrating vision-based calibration techniques
Supporting Infrastructure
  • Shared Infrastructure: Common base classes, configuration management, error handling, and optimized data processing utilities used across all examples
  • Models: Complete URDF descriptions and robot model files for all supported robots, including custom modifications for calibration
  • Web Interface: Interactive web-based visualization and analysis tools for exploring calibration results and robot performance
  • Templates: Reusable configuration templates and schemas for quick setup and customization of new robot implementations

Each robot example includes:

  • Configuration files with validation schemas
  • Sample experimental data and measurement files
  • Complete calibration and identification workflows
  • Optimal configuration and trajectory generation scripts
  • Result visualization and analysis tools
  • URDF model updates with identified parameters

Citations

If you use FIGAROH in your research, please cite the following papers:

Main Reference

@inproceedings{nguyen2023figaroh,
  title={FIGAROH: a Python toolbox for dynamic identification and geometric calibration of robots and humans},
  author={Nguyen, Dinh Vinh Thanh and Bonnet, Vincent and Maxime, Sabbah and Gautier, Maxime and Fernbach, Pierre and others},
  booktitle={IEEE-RAS International Conference on Humanoid Robots},
  pages={1--8},
  year={2023},
  address={Austin, TX, United States},
  doi={10.1109/Humanoids57100.2023.10375232},
  url={https://hal.science/hal-04234676v2}
}

Related Work

@inproceedings{nguyen2024improving,
  title={Improving Operational Accuracy of a Mobile Manipulator by Modeling Geometric and Non-Geometric Parameters},
  author={Nguyen, Thanh D. V. and Bonnet, V. and Fernbach, P. and Flayols, T. and Lamiraux, F.},
  booktitle={2024 IEEE-RAS 23rd International Conference on Humanoid Robots (Humanoids)},
  pages={965--972},
  year={2024},
  address={Nancy, France},
  doi={10.1109/Humanoids58906.2024.10769790}
}
@techreport{nguyen2025humanoid,
  title={Humanoid Robot Whole-body Geometric Calibration with Embedded Sensors and a Single Plane},
  author={Nguyen, Thanh D V and Bonnet, Vincent and Fernbach, Pierre and Daney, David and Lamiraux, Florent},
  year={2025},
  institution={HAL},
  url={https://hal.science/hal-05169055}
}