GR00T N1.7 DROID
gr00t-droid · policy template by NVIDIA · 7 absolute joint positions and the gripper at 15 Hz · L4. Each version below is fixed once published, newest first.
seq init gr00t-droid gives the stable version, seq init gr00t-droid@beta the beta, and seq init gr00t-droid@v<N> any version below that is not withdrawn. A deployment made from this template names the version it runs in seq policy versions and on its page in the console; seq policy upgrade moves it to the newer stable one.
-
v7beta
A deployment of this version runs on one card type, the L4: a worker starts only on an L4, never on an A100.
Needs sequence-ai 0.34.19 or later, on your machine and on the robot:
pip install -U sequence-ai, which brings Pillow for the robot.policy.pydeclaresgpu="L4", where v6 listed["L4", "A100-40GB"]: a deployment names one card type. To run on another card, name that one instead.README.mdsays so where it spoke of the A100.- The image, its frozen files, the weights, the contract and the serving code are v6's.
Use v7
# start a policy from this version, then deploy it seq init gr00t-droid@v7 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v7 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init gr00t-droid@v7 my-policy
-
The image installs Isaac-GR00T from
third_party/Isaac-GR00T, the copy in your folder, and everything else only from this version's frozen files, which the platform keeps: v5's packages, the same on any day.Needs sequence-ai 0.34.19 or later, on your machine and on the robot:
pip install -U sequence-ai, which brings Pillow for the robot.policy.pycopies Isaac-GR00T'spyproject.toml,LICENSEandgr00t/fromthird_party/Isaac-GR00Tinto the image and installs them, editable at/opt/Isaac-GR00Tas before: change Isaac-GR00T there and deploy again, and your deployment runs your GR00T.third_party/README.mdlists what goes into the image.- Everything else comes from
/seq/frozen(.template_files("gr00t-droid", version=6)), with no index: the basenvidia/cuda:12.8.0-runtime-ubuntu22.04by digest, the system packages as.debfiles, and every Python package with its sha256 checked againstrequirements-policy.lock.frozen.tomlsays what is frozen. - The Python packages are the ones v5's image holds (
pins-policy.txt): 146 from PyPI and PyTorch's index - the versions Isaac-GR00T's lock file names, torch 2.9.0 for CUDA 12.8 and TensorRT 10.15 among them - and flash-attn 2.8.3 from its release. typing-extensions is 4.16.0, as v5 put it forward over the lock's 4.15; uv, which v5 took at its newest when its image was built, is pinned at 0.13.0. The build installs nothing from PyPI or GitHub. - TensorRT's libraries are frozen as the wheel NVIDIA publishes (4.3 GB): PyPI holds only a stub that downloads that wheel while the image builds, as v5's build did.
- uv installs them, as it did for v5: flash-attn's release wheel names a version in its file name (2.8.3+cu12torch2.9cxx11abiTRUE) that its metadata does not (2.8.3), and pip refuses it.
policy.pynames the Isaac-GR00T commit in full,51d4c89f72fda44cbf77285c6a8114b52676b8a1.client.pystops when it is imported, sayingpip install -U sequence-ai, if sequence-ai is older than 0.34.19 or Pillow is missing, instead of at the robot's first frame.- To add a package or change a version, add your own step after the template's (
.uv_pip_install(...)); it installs from PyPI as any image does. - The weights, the contract and the serving code are as in v5.
Use v6
# start a policy from this version, then deploy it seq init gr00t-droid@v6 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v6 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init gr00t-droid@v6 my-policy
-
The source the image builds from comes with the template: Isaac-GR00T at the commit the image pins, in third_party/, with its license.
Needs sequence-ai 0.34.12 or later, on your machine and on the robot, with Pillow on the robot:
pip install -U sequence-aibrings both.third_party/Isaac-GR00T/: https://github.com/NVIDIA/Isaac-GR00T at commit51d4c89f72fda44cbf77285c6a8114b52676b8a1. Its submodules underexternal_dependencies/are left out (the image clones without them); a file kept with Git LFS is its pointer; two links to folders are listed inthird_party/README.mdinstead.- The image, its weights and what it installs are as in v4.
Use v5
# start a policy from this version, then deploy it seq init gr00t-droid@v5 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v5 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init gr00t-droid@v5 my-policy
-
The robot fits each camera frame and makes each command with the SDK's own helpers, as policy.py declares them.
Needs sequence-ai 0.34.12 or later, on your machine and on the robot, with Pillow on the robot:
pip install -U sequence-aibrings both.client.pycallspolicy.prepare_imagefor each frame (resize="pad",filter="bilinear", as policy.py declares) andpolicy.to_commandfor each step, instead of its own copies of them: itsresize_with_pad,encode,to_commandandto_commandsare gone.policy.pydeclares how each camera's frame is fitted, 320x180 with padding and bilinear filtering as NVIDIA's DROID client resizes, and the gripper's threshold,binarize={7: 0.5}. The same frames and steps give the same JPEGs and commands as v3.preprocesstakes the connected policy first:preprocess(policy, exterior=..., wrist=..., ...). One chunk at a time ispolicy.to_commands(policy.predict(...))[:OPEN_LOOP_HORIZON].- A deployment of this version checks every frame and never resizes one: a frame that is not 320x180 is refused with a 400 that names the call that fits it.
- Under an older sequence-ai,
policy.pyandclient.pystop with a sentence that names 0.34.12, instead of an error about unknown fields.
Use v4
# start a policy from this version, then deploy it seq init gr00t-droid@v4 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v4 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init gr00t-droid@v4 my-policy
-
v3stable
client.pygainsto_command(step)forrun(). The policy declares no action bounds, so the platform passes the joint targets as the model gave them; the served code is unchanged.Needs sequence-ai 0.31.0 or later; on the robot, Pillow.
client.pygainsto_command(step): one step asrun()hands it toact, the gripper made 0 or 1 at 0.5.to_commandsisto_commandon each step of a chunk.- The README's example is the
run()loop:connect,wait_until_ready(), thenrun(observe=..., act=lambda action: robot.step(to_command(action))), which plays the first 15 steps of each chunk at 15 Hz and fetches the next chunk while they play, as NVIDIA's DROID loop does.predict()withto_commandsstays as the one-chunk form. - With no bounds declared, your joint-position controller and its joint limits hold the joint targets, as the README now says.
policy.pyand the image are v2's.
Use v3
# start a policy from this version, then deploy it seq init gr00t-droid@v3 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v3 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init gr00t-droid@v3 my-policy
In the console, Deploy deploys this version: the console deploys the stable one.
-
The README says
client.pyneeds Pillow on the robot, which sequence-ai does not bring:pip install sequence-ai pillow.Needs sequence-ai 0.31.0 or later; on the robot, Pillow.
client.pyimports Pillow to fit the camera frames before they are sent, so on a robot with sequence-ai alonefrom client import preprocessfailed withNo module named 'PIL'. The README's "Use it" now says what to install.- README only: the code and the image are v1's.
Use v2
# start a policy from this version, then deploy it seq init gr00t-droid@v2 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v2 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init gr00t-droid@v2 my-policy
-
The first version: NVIDIA's GR00T N1.7 post-trained on DROID as a policy, an exterior and a wrist camera, the joints, gripper and end-effector pose in, a 40-step chunk of 7 joint positions and the gripper at 15 Hz out.
Needs sequence-ai 0.31.0 or later; on the robot, Pillow.
seq deploy policy.pydeploys it on an L4, or an A100 40 GB when no L4 is free, as one worker (max_gpus=1: a second robot waits) withcpu=1.25andmemory=14. Its weights, NVIDIA's DROID checkpoint and the Cosmos-Reason2-2B backbone it is built on, are copied from the platform's own copy: no Hugging Face account needed.client.pyfits each frame to 320x180 with padding as NVIDIA's client does, turns DROID'scartesian_position(XYZ Euler angles) into the quaternion pose the observation carries, and makes the gripper 0 or 1 at 0.5 (to_commands). Run the first 15 steps of a chunk (OPEN_LOOP_HORIZON), then ask again.- On the worker the pose becomes GR00T's 9 numbers the way its DROID training data was built, and
loadchecks that conversion against GR00T's own before the worker serves anyone. - On an L4 the model loads in 47 s and holds 6.3 GiB of the card; a warm call took 0.34-0.90 s from the robot, and a robot's first call waited about 80 s for its worker (measured on the platform).
- Licensed by NVIDIA under the NVIDIA Open Model License (
LICENSE), with the attributions inNOTICE; GR00T runs with NVIDIA's Isaac-GR00T code (Apache-2.0) at a pinned commit.
Use v1
# start a policy from this version, then deploy it seq init gr00t-droid@v1 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v1 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init gr00t-droid@v1 my-policy