File size: 9,475 Bytes
700dd75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
# Troubleshooting

Common issues and solutions. If your problem isn't listed here, check the
[GitHub issues](https://github.com/NVlabs/GR00T-WholeBodyControl/issues) page.

---

## 1. `ModuleNotFoundError: No module named 'isaaclab'`

**Symptom:** Training or eval script exits immediately with an import error.

**Cause:** Isaac Lab is not installed, or you're running in the wrong Python
environment. Isaac Lab is not a pip dependency — it must be installed separately.

**Fix:**

1. Install Isaac Lab following the
   [official guide](https://isaac-sim.github.io/IsaacLab/main/source/setup/installation/index.html).
2. Make sure you activate the correct conda/venv environment before running:
   ```bash
   conda activate env_isaaclab  # or whatever you named it
   python -c "import isaaclab; print(isaaclab.__version__)"
   ```

---

## 2. Mesh files are tiny text files (Git LFS not installed)

**Symptom:** Simulation crashes or renders an invisible/broken robot. Mesh files
(`.stl`, `.STL`) are ~130 bytes and contain text like `version https://git-lfs.github.com/spec/v1`.

**Cause:** The repo was cloned without Git LFS. Large files (meshes, ONNX models)
are stored via Git LFS and need to be fetched separately.

**Fix:**

```bash
sudo apt install git-lfs
git lfs install
git lfs pull
```

Verify: `ls -la gear_sonic/data/assets/robot_description/urdf/g1/main.urdf` should
be ~60KB+, not ~130 bytes.

---

## 3. `RuntimeError: size mismatch` when loading a checkpoint

**Symptom:** Training or eval crashes with errors like:
```
size mismatch for actor_module.decoders.g1_dyn.module.0.weight:
  copying a param with shape torch.Size([2048, 994]) from checkpoint,
  the shape in current model is torch.Size([4096, 994])
```

**Cause:** The experiment config defines a different network architecture than
what the checkpoint was trained with. Common when the config overrides
`hidden_dims` to a different size.

**Fix:** Make sure the experiment config matches the checkpoint's architecture.
Check the `config.yaml` saved alongside the checkpoint for the correct
`hidden_dims`, encoder/decoder settings, etc. The released `sonic_release`
checkpoint uses:

```yaml
decoders:
  g1_dyn:
    params:
      module_config_dict:
        layer_config:
          hidden_dims: [2048, 2048, 1024, 1024, 512, 512]
```

---

## 4. `trl` / `transformers` version conflict during pip install

**Symptom:** `pip install -e "gear_sonic/[training]"` fails with a dependency
resolution error about incompatible `transformers` versions.

**Cause:** `trl==0.28.0` requires `transformers>=4.56.2`. If you have an older
`transformers` pinned or installed, pip cannot resolve.

**Fix:**

```bash
pip install -e "gear_sonic/[training]" --upgrade
```

Or install in a fresh environment. If you need a specific `transformers` version
for another project, use a separate venv for SONIC training.

---

## 5. TensorRT build fails (`TensorRT_ROOT` not set)

**Symptom:** CMake error during C++ deployment build:
```
Could not find a package configuration file provided by "TensorRT"
```

**Cause:** The `TensorRT_ROOT` environment variable is not set, or TensorRT is
not installed.

**Fix:**

1. Download the correct TensorRT version (TAR package, not DEB):

   | Platform | TensorRT Version |
   |---|---|
   | x86_64 (Desktop) | **10.13** (required) |
   | Jetson / G1 onboard Orin | **10.7** (required; JetPack 6) |

2. Extract and set the environment variable:
   ```bash
   export TensorRT_ROOT=$HOME/TensorRT
   echo 'export TensorRT_ROOT=$HOME/TensorRT' >> ~/.bashrc
   ```

---

## 6. Motion file path errors (`FileNotFoundError` or empty motion library)

**Symptom:** Training crashes with `FileNotFoundError` on a motion path, or starts
but logs `0 motions loaded`.

**Cause:** The experiment config has placeholder paths (e.g.,
`data/motion_lib_bones_seed/robot_filtered`) that don't exist on your machine.
Motion data paths must be provided on the command line.

**Fix:** Always pass motion data paths explicitly:

```bash
python gear_sonic/train_agent_trl.py \
    +exp=manager/universal_token/all_modes/sonic_release \
    ++manager_env.commands.motion.motion_lib_cfg.motion_file=<path/to/robot_filtered> \
    ++manager_env.commands.motion.motion_lib_cfg.smpl_motion_file=<path/to/smpl_filtered>
```

For quick testing, download the sample data from HuggingFace:

```bash
hf download nvidia/GEAR-SONIC --include "sample_data/*" --local-dir .
```

---

## 7. Body name errors (`RuntimeError: body 'xxx' not found`)

**Symptom:** Isaac Lab crashes with an error about a body/joint name not found
in the robot's articulation.

**Cause:** A config YAML references a body name that doesn't exist on your robot.
This commonly happens when using G1 configs with a different robot (e.g., H2).

**Fix:** Check which body name failed and find where it's referenced:

```bash
grep -rn "the_failing_body_name" gear_sonic/config/
```

Override the body name in your experiment config, or check the
[Training on New Embodiments](new_embodiments.md) guide for the full list of
config files that reference body names.

---

## 8. Robot explodes or falls immediately on first frame

**Symptom:** The robot ragdolls, flies away, or collapses instantly when
simulation starts.

**Cause:** Usually one of:

- **Init state height is wrong** — the robot spawns inside the ground or too high.
  Check `init_state.pos` in your robot config (the z-value is spawn height).
- **KP/KD values are wrong** — if stiffness (KP) is too low, joints have no
  holding torque. If too high, the simulation becomes unstable. See
  [Training on New Embodiments](new_embodiments.md) for tuning guidance.
- **Action scale is too large** — the policy outputs move joints too aggressively.
  Reduce `action_scale` values.
- **Default joint angles are wrong** — the robot starts in an impossible pose.
  Check `init_state.joint_pos` matches a stable standing configuration.

**Debug:** Run with `num_envs=1 headless=False` and watch the first few frames.

---

## 9. Robot behaves weirdly during deployment (wrong TensorRT version)

**Symptom:** The robot stands but moves erratically, drifts, or produces
unnatural motions during C++ deployment — even though the same checkpoint works
correctly in Isaac Lab or MuJoCo simulation.

**Cause:** You are using a different TensorRT version than required. TensorRT
version mismatches produce **silently wrong inference results** — the model runs
without errors but outputs incorrect actions.

**Fix:** You **must** use the exact TensorRT versions:

| Platform | Required Version |
|---|---|
| x86_64 (Desktop) | **TensorRT 10.13** |
| Jetson / G1 onboard Orin | **TensorRT 10.7** (JetPack 6) |

Verify your version:

```bash
echo $TensorRT_ROOT
ls $TensorRT_ROOT/lib/libnvinfer.so*
```

If the version is wrong, download the correct one from
[NVIDIA Developer](https://developer.nvidia.com/tensorrt/download/10x) and
rebuild the C++ deployment binary.

---

## 10. `ChannelFactory create domain error` in MuJoCo sim

**Symptom:** `run_sim_loop.py` crashes with:
```
[ChannelFactory] create domain error. msg: Occurred upon initialisation
of a cyclonedds.domain.Domain
```

**Cause:** CycloneDDS domain initialization conflict. The SimulatorFactory
reinitializes a channel that was already created.

**Fix:** This is a known issue ([#77](https://github.com/NVlabs/GR00T-WholeBodyControl/issues/77)).
Workaround: comment out the duplicate channel init in the simulator factory,
or ensure no other DDS process is using the same domain on your machine.

---

## 11. SMPL tracking is unstable or drifts

**Symptom:** The robot follows G1 motion tracking well but drifts or becomes
unstable when using SMPL encoder inputs.

**Cause:** SMPL data may have mismatched coordinate conventions (y-up vs z-up),
incorrect joint ordering, or the SMPL-to-robot retargeting quality is poor.

**Fix:**

- Verify `smpl_y_up: true` is set in your config if your SMPL data uses y-up
  coordinates.
- Check that the SMPL PKL files have the correct shape: `smpl_joints` should be
  `(T, 24, 3)`.
- Try training with `smpl_motion_file: dummy` first to confirm the robot
  encoder works before adding SMPL.

---

## 12. MuJoCo viewer renders incorrectly in Docker

**Symptom:** MuJoCo window is black, garbled, or shows rendering artifacts when
running inside Docker on a machine with an Intel display controller.

**Cause:** GPU passthrough or display driver conflict between the Intel iGPU and
NVIDIA dGPU inside Docker.

**Fix:** Force NVIDIA GPU rendering:

```bash
export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME=nvidia
```

Or run with `--gpus all -e DISPLAY=$DISPLAY` in your Docker run command. See
[#25](https://github.com/NVlabs/GR00T-WholeBodyControl/issues/25) for details.

---

## 13. `deploy.sh` fails to bind ZMQ port 5557 on Orin

**Symptom:** `deploy.sh` exits with a ZMQ bind error on port 5557.

**Cause:** A Unitree system service (`iphone_server.service`) is already listening on port 5557.

**Fix:**

```bash
sudo systemctl stop iphone_server.service
```

Then re-run the deployment. The service restarts on the next boot; to keep it stopped across reboots use `sudo systemctl disable iphone_server.service`.

---

## Still stuck?

- Search [existing issues](https://github.com/NVlabs/GR00T-WholeBodyControl/issues)
- Open a [new issue](https://github.com/NVlabs/GR00T-WholeBodyControl/issues/new)
  with your error message, Python version, and OS