Skip to content

Commit 89e5bbe

Browse files
committed
docs: document PACE workflow in README (usage, acknowledgement)
1 parent 6254940 commit 89e5bbe

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,37 @@ BeyondMimic for Unitree G1:
256256
python scripts/reinforcement_learning/rsl_rl/play.py --task=RobotLab-Isaac-BeyondMimic-Flat-Unitree-G1-v0 --num_envs 2
257257
```
258258

259+
PACE for actuator system identification:
260+
261+
PACE (Precise Adaptation through Continuous Evolution) estimates physical actuator and joint parameters (armature, viscous friction, static/dynamic friction, encoder bias, command delay) from chirp-excitation data using CMA-ES, then lets you apply those parameters back into your simulation for higher-fidelity sim-to-real transfer. This integration ports the upstream [leggedrobotics/pace-sim2real](https://github.com/leggedrobotics/pace-sim2real) into `robot_lab` and registers a demo task `Isaac-Pace-Anymal-D-v0`. See the [PACE documentation](https://pace.filipbjelonic.com) for theoretical background and the [paper](https://arxiv.org/pdf/2509.06342).
262+
263+
> [!NOTE]
264+
> PACE is developed against Isaac Sim 5.0+. On Isaac Sim 4.5 the joint viscous friction setter is silently ignored, which degrades identification quality.
265+
266+
- Step 1: collect chirp excitation data (or place real-robot recordings at `data/<robot_name>/chirp_data.pt`)
267+
268+
```bash
269+
python scripts/pace/data_collection.py --headless --task=Isaac-Pace-Anymal-D-v0
270+
```
271+
272+
Output: `data/anymal_d_sim/chirp_data.pt` containing `{time, dof_pos, des_dof_pos}`.
273+
274+
- Step 2: run the CMA-ES parameter fit
275+
276+
```bash
277+
python scripts/pace/fit.py --headless --task=Isaac-Pace-Anymal-D-v0 --num_envs=4096
278+
```
279+
280+
Output: `logs/pace/anymal_d_sim/<timestamp>/{config.pt, mean_xxx.pt, best_trajectory.pt}` plus a TensorBoard run.
281+
282+
- Step 3: visualize the best trajectory and score curve
283+
284+
```bash
285+
python scripts/pace/plot_trajectory.py --plot_trajectory --plot_score --robot_name=anymal_d_sim
286+
```
287+
288+
To set up PACE for a new robot, follow the upstream [PACE basics tutorial](https://pace.filipbjelonic.com/tutorials/basics): create a per-robot env_cfg under `source/robot_lab/robot_lab/tasks/manager_based/pace/config/<robot>/` and register a new `Isaac-Pace-<Robot>-v0` task. The actuator model `PaceDCMotor`/`PaceDCMotorCfg` lives at `robot_lab.actuators` and the optimizer `CMAESOptimizer` at `robot_lab.tasks.manager_based.pace.optim`.
289+
259290
Others (**Experimental**)
260291

261292
- Train AMP Dance for Unitree G1
@@ -468,3 +499,4 @@ The project uses some code from the following open-source code repositories:
468499

469500
- [linden713/humanoid_amp](https://github.com/linden713/humanoid_amp)
470501
- [HybridRobotics/whole_body_tracking](https://github.com/HybridRobotics/whole_body_tracking)
502+
- [leggedrobotics/pace-sim2real](https://github.com/leggedrobotics/pace-sim2real) — PACE actuator system identification (`robot_lab.actuators.PaceDCMotor`, `robot_lab.tasks.manager_based.pace`, `scripts/pace/`).

0 commit comments

Comments
 (0)