LeRobot documentation
Política do GR00T
Política do GR00T
GR00T é uma família de modelos de fundação da NVIDIA para raciocínio e habilidades generalizadas de robôs humanóides. Trata-se de uma política de interação com o ambiente que aceita entrada multimodal, incluindo linguagem, imagens e propriocepção, para executar tarefas de manipulação em diversos ambientes.
O LeRobot integra o GR00T N1.7 por meio do tipo de política groot.
Mudança que quebra compatibilidade: o suporte a GR00T N1.5 foi removido do LeRobot, e as versões atuais suportam apenas GR00T N1.7. Checkpoints e configs do N1.5 são rejeitados com uma nota de migração. Para continuar usando um checkpoint do N1.5, fixe a última versão que o suporta:
pip install 'lerobot==0.5.1'. Para usar a versão atual, migre para GR00T N1.7 (modelo basenvidia/GR00T-N1.7-3B).
Visão geral do modelo
O GR00T N1.7 utiliza um backbone Cosmos-Reason2/Qwen3-VL e fornece checkpoints para SimplerEnv, DROID e LIBERO.
Desenvolvedores e pesquisadores podem realizar pós-treino do GR00T com seus próprios dados reais ou sintéticos para adaptá-lo a robôs humanoides ou tarefas específicas.
O GR00T usa codificadores pré-treinados de visão e linguagem com um transformer de ações de correspondência de fluxo para modelar um conjunto de ações condicionado à visão, à linguagem e à propriocepção.
Seu forte desempenho se deve ao treinamento em um conjunto de dados humanoide extenso e diversificado, que inclui:
- Dados reais capturados de robôs.
- Dados sintéticos gerados usando o NVIDIA Isaac GR00T Blueprint.
- Dados de vídeo em escala de internet.
Essa abordagem permite que o modelo seja altamente adaptável por meio de pós-treino para incorporações, tarefas e ambientes específicos.
Requisitos de instalação
GR00T é destinado a sistemas com aceleração por GPU da NVIDIA. Instale o LeRobot com o extra GR00T:
pip install "lerobot[groot]"Para uma verificação de origem:
pip install -e ".[groot]"Uso
Para usar o GR00T N1.7:
--policy.type=groot
Treinamento
Exemplo de Comando de Treinamento
Aqui está um comando completo de treinamento para fazer o ajuste fino do modelo base GR00T no seu próprio conjunto de dados:
Este comando utiliza a flag new_embodiment, que é usada para o robô SO-101, leia mais sobre como o GR00T lida com diferentes embodiments..
# install extra deps for training
pip install "lerobot[training]"
hf auth login
# Trackio needs no login for local runs; pass --trackio.space_id=<user>/<space> to sync runs to a Hugging Face Space.
export DATASET_NAME=your_data_set
export HF_USER=your_hf_username
export DATASET=$HF_USER/$DATASET_NAME
export REPO_ID="${DATASET}_GR00T17" #this is the model that will be uploaded to huggingface
export OUTPUT_DIR=outputs/train/$REPO_ID
lerobot-train \
--dataset.repo_id=$DATASET \
--dataset.image_transforms.enable=true \
--policy.type=groot \
--policy.device=cuda \
--policy.base_model_path=nvidia/GR00T-N1.7-3B \
--policy.embodiment_tag=new_embodiment \
--policy.chunk_size=16 \
--policy.n_action_steps=16 \
--policy.use_relative_actions=true \
--policy.relative_exclude_joints='["gripper"]' \
--policy.use_bf16=true \
--policy.push_to_hub=true \
--policy.repo_id=$REPO_ID \
--seed=42 \
--batch_size=64 \
--steps=20000 \
--save_checkpoint=true \
--save_freq=5000 \
--use_policy_training_preset=true \
--env_eval_freq=0 \
--eval_steps=0 \
--log_freq=10 \
--output_dir=$OUTPUT_DIR \
--job_name=$DATASET \
--trackio.enable=true \
--trackio.disable_artifact=true
Resultados de Desempenho
Resultados do Benchmark LIBERO
Siga as instruções de configuração do LIBERO antes de executar
lerobot-eval.
O GR00T N1.7 demonstrou um desempenho robusto na suíte de benchmarks LIBERO. Para reproduzir os resultados do LeRobot, siga as instruções na seção LIBERO.
Treinar no LIBERO
Exemplo de comando de treinamento para uma suíte LIBERO (aqui libero_spatial):
IMAGE_TRANSFORMS='{
"brightness": {"weight": 1.0, "type": "ColorJitter", "kwargs": {"brightness": [0.7, 1.3]}},
"contrast": {"weight": 1.0, "type": "ColorJitter", "kwargs": {"contrast": [0.6, 1.4]}},
"saturation": {"weight": 1.0, "type": "ColorJitter", "kwargs": {"saturation": [0.5, 1.5]}},
"hue": {"weight": 1.0, "type": "ColorJitter", "kwargs": {"hue": [-0.08, 0.08]}}
}'
lerobot-train \
--dataset.repo_id=IPEC-COMMUNITY/libero_spatial_no_noops_1.0.0_lerobot \
--dataset.root=/datasets/libero_spatial \
--dataset.revision=main \
--dataset.video_backend=pyav \
--dataset.image_transforms.enable=true \
--dataset.image_transforms.max_num_transforms=4 \
--dataset.image_transforms.tfs="$IMAGE_TRANSFORMS" \
--policy.type=groot \
--policy.base_model_path=nvidia/GR00T-N1.7-3B \
--policy.embodiment_tag=libero_sim \
--policy.push_to_hub=false \
--policy.use_relative_actions=false \
--policy.max_steps=20000 \
--batch_size=320 \
--steps=20000 \
--save_freq=2000 \
--env_eval_freq=0 \
--eval_steps=0 \
--log_freq=10 \
--trackio.enable=true \
--trackio.project=lerobot \
--trackio.disable_artifact=true \
--num_workers=4 \
--prefetch_factor=2 \
--persistent_workers=true \
--output_dir=$OUTPUT_DIR \
--job_name=$JOB_NAMEIsso seguirá a receita encontrada aqui.
Resultados do GR00T N1.7 LIBERO
Resultados preliminares da integração do LeRobot (GR00T-LeRobot, eval.n_episodes >= 50 por suíte):
| Suite | Taxa de sucesso | Checkpoint |
|---|---|---|
| LIBERO Spatial | 95% | nvidia/gr00t17-lerobot-libero_spatial-640 |
| Objeto LIBERO | 100% | nvidia/gr00t17-lerobot-libero_object-640 |
| Objetivo do LIBERO | 98% | nvidia/gr00t17-lerobot-libero_goal-640 |
| LIBERO 10 (Long) | 93% | nvidia/gr00t17-lerobot-libero_10-640 |
| Média | 96.5% |
export MODEL_ID=your_trained_model_on_huggingface
lerobot-eval \
--policy.path=$MODEL_ID \
--policy.embodiment_tag=libero_sim \
--env.type=libero \
--env.task=libero_spatial \
--eval.n_episodes=50Use eval.n_episodes >= 50 por suite ao relatar as taxas de sucesso.
Avalie em sua configuração de hardware
Depois de treinar seu modelo usando seus parâmetros, você pode executar inferência em sua tarefa de ponta final. Siga as instruções em Policy Deployment (lerobot-rollout). Por exemplo:
# install extra deps for roullout and real hardware
pip install "lerobot[feetech,viz]"
export MODEL_ID=your_trained_model_on_huggingface
# make sure that camera index matches your setup!
# find index using `uv run lerobot-find-cameras opencv`
WRIST_CAM='wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30, fourcc: "MJPG"}'
FRONT_CAM='front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: "MJPG"}'
export ROBOT_CAMERAS="{ $WRIST_CAM, $FRONT_CAM }"
export ROBOT_ID=follower_robot
export ROBOT_PORT=/dev/ttyACM0
# Set --inference.rtc.enabled=False if RTC causes inference instability
uv run lerobot-rollout \
--strategy.type=base \
--policy.path=$MODEL_ID \
--policy.base_model_path=nvidia/GR00T-N1.7-3B \
--policy.n_action_steps=8 \
--robot.type=so101_follower \
--robot.port=$ROBOT_PORT \
--robot.id=$ROBOT_ID \
--robot.cameras="$ROBOT_CAMERAS" \
--task="place the vial in the rack" \
--duration=60 \
--device=cuda \
--display_data=true \
--inference.type=rtc \
--inference.rtc.enabled=True \
--inference.rtc.execution_horizon=8 \
--inference.queue_threshold=0O valor de
inference.queue_thresholdnão deve exceder 5 para garantir uma inferência estável.
Licença
O GR00T N1.7 é lançado sob o NVIDIA Open Model License Agreement.
Update on GitHub