Isaac GR00T N1.7
Results at a Glance
- A first test of the latest NVIDIA Isaac GR00T N1.7 VLA model on the Trossen Stationary AI did not go smoothly! The robot learned the policy but it shook so violently it looked like it might destroy itself. EMA low-pass filtering, a longer action chunk, and some action clipping got it smoothed out.
- After training on a transfer-cube dataset with only red cubes, a GR00T model was able to generalize the task to other cube colors.
Very First Experiment
We trained an Isaac GR00T N1.7 model on our red cube dataset for 30K training steps. As shown in Fig 1, the model successfully learned to transfer the cube, and it also generalized to other cube colors. This is our best result. Initially, the robot shook violently, but after some trial and error, we were able to smooth out the robot using a combination of EMA low-pass filtering, an increase in the action chunk length to 32, and robot action clipping. See the next section for implementation details. Note that our ACT models also required action clipping to smooth out their trajectories, while our openpi models did not seem to need any smoothing or clipping.
- EMA low-pass filtering: At run time, actions
atare filtered usinga't = α*at + (1-α)*a't-1, wherea'is the filtered action that is sent to the robot. After some trial and error, the best value wasα=0.25. - Action chunk size: The best model was trained with the action chunk size set to 32 in the config file,
trossen_ai_config_h32.py. Also, theopen_loop_horizonoption was set to 32 when running the robot usingmain_gr00t_trossen.py. The longer action chunks seem to be less noisy and also more reliable. - Action clipping: The Trossen robot parameter,
max_relative_target, was set to0.1which keeps the maximum change in any action — joint value — below 0.1 radians. At this value, clipping happens only once in a while, but when it does, it prevents sudden large movements. - Real-time chunking: Introduced by Physical Intelligence, Real-Time Action Chunking (RTC) is designed to interpolate successive action chunks to create a smooth, consistent trajectory. GR00T has the RTC machinery, but to use it requires some mods to
gr00t/policy/gr00t_policy.pyand additions toexamples/trossen_ai/main_gr00t_trossen.py. We tried RTC to solve the robot shaking problem but it did not help. We believe this is because intra-chunk noise was a bigger problem than inter-chunk discontinuities.
Implementation Details
The code here uses our fork of Isaac GR00T N1.7. At the moment, the latest code is in the develop branch. The commands below are not an exhaustive set of instructions. You first need to install our develop branch or install the original repository directly from GR00T, and then cut and paste our mods in if you want to use them. We did not add any dependencies not in the original GR00T repository.
trossen_ai_config_h32.py: modality.json file inside the meta directory of each lerobot dataset, as in our transfer-cube dataset. Here is our modality.json file:--dataset-path. Therefore, we used huggingface-cli download to move our dataset to demo_data/ before training.open_loop_horizon to 24 because the last 8 steps out of 32 are overlap steps which should not be run. Otherwise, those actions would be either repeated or partly repeated by the first 8 steps of the next chunk: