A system identification routine for IsaacLab and Mujoco, to estimate motor parameters, inertia, mass, and center of mass. It provides scripts for data collection on the real robot (the robot should be in the air with the base fixed if a quadruped, or on a table if a manipulator). This repo interfaces directly with Pace and the new sys-id functionality of Mujoco.
The models (usd and xml) identified so far can be found in the folder robot_model.
| Robot | last modified XML | last modified USD | Identified |
|---|---|---|---|
| a2 | 2026-09-30 | 2026-09-30 | ✓ |
| aliengo | 2026-09-30 | 2026-09-30 | ✓ |
| b2 | 2026-09-30 | 2026-09-30 | |
| go2 | 2026-09-30 | 2026-09-30 | ✓ |
| hyqreal2 | 2026-09-30 | 2026-09-30 | X |
| pegasus | 2026-09-30 | 2026-09-30 | |
| piper_l | 2026-09-20 | 2026-09-30 | ✓ |
| z1 | 2026-09-19 | 2026-09-30 | ✓ |
-
install miniforge (x86_64 or arm64 depending on your platform) or pixi - the latter for full reproducibility.
-
create an environment using the file in the folder deploy/installation:
# for conda
conda env create -f mamba_environment.yaml
conda activate sim2real_robot_identification_env
# for pixi
pixi shell --manifest-path deploy/installation/pixi.toml - install IsaacLab if you need it
This repo works best with unitree-ros2-dls for communicating with unitree go2, b2, a2, and z1 robots, and with piper-ros2-dls2 for the agilex piper arm.
-
Choose the robot and the gains in the config file or add yours in the robot_model folder.
-
In the xml of your robot, add two keyframe (sys_id_1, sys_id_2) to define the start and end point of the chirp trajectory (see here for an example)
-
Runs one of the following files
python3 run_collection_quadruped_ros2.py
python3 run_collection_manipulator_ros2.py- Inside the script
startCollection
trajectory- Close the script
ctrl+c- Visualize your runned trajectory
python3 datasets/replay_dataset_quadruped.py
python3 datasets/replay_dataset_manipulator.py
python3 datasets/plot_joint_trajectories.pyAdd a new task for a new robot. Then
python3 sysid_isaaclab/my_fit.py --headlesspython3 sysid_mujoco/my_fit.py PRs are very welcome (search for TODO in the issue, or add what you like)!
This repository is maintained by Giulio Turrisi and Lorenzo Amatucci.

