Downloads · 30 days
0
Hrishnugg/groot-recode-bimanual-v2-lora
groot-recode-bimanual-v2-lora is a machine learning model from Hrishnugg. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
This repository contains a LoRA adapter for NVIDIA's GR00T N1.5 model, fine-tuned for bimanual SO-101 robot arms performing pick-and-place tasks.
Downloads · 30 days
0
Access
Public
Updated Nov 20, 2025
Repo size
13.1 MB
Likes
0
Public
Click a slice to open those files.
.safetensors13.1 MB · 97%
From the Hugging Face model README
This repository contains a LoRA adapter for NVIDIA's GR00T N1.5 model, fine-tuned for bimanual SO-101 robot arms performing pick-and-place tasks.
Configuration:
Hardware:
# Clone Isaac-GR00T repository
git clone https://github.com/NVIDIA-Omniverse/Isaac-GR00T
cd Isaac-GR00T
# Install dependencies
conda create -n groot python=3.10
conda activate groot
pip install -e .[base]
pip install flash-attn==2.8.2 # Required for GR00T
# Download this adapter
huggingface-cli download Hrishnugg/groot-recode-bimanual-v2-lora \
--local-dir ./adapters/recode-bimanual-v2
from gr00t.model.policy import Gr00tPolicy
import numpy as np
# Load base model + LoRA adapter
policy = Gr00tPolicy.from_checkpoint(
checkpoint_path="./adapters/recode-bimanual-v2", # Your LoRA adapter
embodiment_tag="new_embodiment",
data_config="recode_data_config:RecodeBimanualDataConfig"
)
# Prepare observations
observations = {
"video.left_gripper": left_camera_image, # Shape: (1, 480, 640, 3)
"video.right_gripper": right_camera_image, # Shape: (1, 480, 640, 3)
"video.top": top_camera_image, # Shape: (1, 480, 640, 3)
"state.left_arm": left_arm_joint_positions, # Shape: (1, 5)
"state.left_gripper": left_gripper_position, # Shape: (1, 1)
"state.right_arm": right_arm_joint_positions, # Shape: (1, 5)
"state.right_gripper": right_gripper_position, # Shape: (1, 1)
"annotation.human.task_description": ["Grab the red cube and put it in a red basket"]
}
# Get action prediction (returns 64-step horizon, use first step)
actions = policy.get_action(observations)
action_t0 = actions["action"][0] # Shape: (12,) - first timestep
# Extract per-arm commands
left_arm_cmd = action_t0[0:5] # 5 joint angles
left_gripper_cmd = action_t0[5] # Gripper position
right_arm_cmd = action_t0[6:11] # 5 joint angles
right_gripper_cmd = action_t0[11] # Gripper position
# Send to robot
robot.set_left_arm_position(left_arm_cmd)
robot.set_left_gripper(left_gripper_cmd)
robot.set_right_arm_position(right_arm_cmd)
robot.set_right_gripper(right_gripper_cmd)
Start server:
python scripts/inference_service.py \
--server \
--model_path ./adapters/recode-bimanual-v2 \
--embodiment_tag new_embodiment \
--data_config recode_data_config:RecodeBimanualDataConfig \
--denoising_steps 4 \
--port 5555
Connect client:
from gr00t.eval.service import ExternalRobotInferenceClient
client = ExternalRobotInferenceClient(host="localhost", port=5555)
actions = client.get_action(observations)
This adapter expects specific data configuration matching the training setup. Create recode_data_config.py:
from gr00t.experiment.data_config import BaseDataConfig
from gr00t.data.transform.base import ComposedModalityTransform
# ... (full config from training)
Or download from this repository.
Due to the diffusion model's 4 denoising steps (for real-time performance), predictions may have high-frequency noise. We strongly recommend temporal smoothing during deployment:
# Exponential moving average
alpha = 0.3 # 70% smoothing
smoothed_action = alpha * new_action + (1 - alpha) * previous_action
See eval_bimanual_lerobot.py in this repository for full implementation.
Cameras must match training configuration:
left_gripper: Wrist camera on left arm (640x480 @ 30fps)right_gripper: Wrist camera on right arm (640x480 @ 30fps)top: Overhead camera (640x480 @ 30fps)12D continuous:
Open-loop Evaluation (on training data):
Deployment:
Built using NVIDIA Isaac GR00T:
@software{isaac_groot_2025,
title = {NVIDIA Isaac GR00T},
author = {NVIDIA Corporation},
year = {2025},
url = {https://github.com/NVIDIA-Omniverse/Isaac-GR00T}
}
Apache 2.0 (following GR00T base model)
For issues or questions, please contact the repository owner.