--- license: apache-2.0 tags: - robotics - manipulation - lerobot - groot - nvidia - lora - pick-and-place base_model: nvidia/GR00T-N1.5-3B datasets: - so101-safe-worker pipeline_tag: robotics --- # GR00T Pick and Place Cube v1 A fine-tuned **NVIDIA GR00T N1.5** model for robotic pick-and-place manipulation tasks. ## Model Description This model was fine-tuned using **LoRA** (Low-Rank Adaptation) on the SO-101 robot arm dataset for cube pick-and-place tasks. ### Training Details | Parameter | Value | |-----------|-------| | Base Model | nvidia/GR00T-N1.5-3B | | Fine-tuning Method | LoRA | | LoRA Rank | 64 | | LoRA Alpha | 16 | | Training Steps | 50,000 | | Batch Size | 8 | | Dataset | 21,557 episodes / 1.9M frames | | Task | Pick up cube and place in bin | | Cameras | Front + Wrist (128x128) | | Action Space | 4D (x, y, z, gripper) | ### Performance - **Training Loss**: 1.17 → 0.12 (90% reduction) - **Evaluation Success Rate**: ~60% (with proper action unnormalization) ## Usage ```python from lerobot.policies.groot.modeling_groot import GrootPolicy # Load the model policy = GrootPolicy.from_pretrained("gpudad/groot-pick-place-cube-v1") policy.to("cuda") policy.eval() # Use for inference action = policy.select_action(observation_batch) ``` ### Important: Action Unnormalization The model outputs actions in normalized [-1, 1] space. For the SO-101 robot: - XYZ: [-1, 1] - Gripper: needs mapping from [-1, 1] to [0, 2] ```python # Unnormalize actions action_min = torch.tensor([-1, -1, -1, 0]) action_max = torch.tensor([1, 1, 1, 2]) unnormalized = (action + 1) / 2 * (action_max - action_min) + action_min ``` ## Framework Trained using [LeRobot](https://github.com/huggingface/lerobot) 🤖 ## License Apache 2.0 (same as base GR00T model)