Robotics
LeRobot
Safetensors
smolvla

About this model (SO-101 cube stacking project, 2026-09)

What it is. SmolVLA fine-tuned from lerobot/smolvla_base on 216 real teleoperated episodes (176 demonstrations + 40 DAgger corrections, two language conditions: "Pick up the orange cube and place it on top of the red cube" / "Take the orange cube off the red cube and put it on the table"). Run with Real-Time Chunking (RTC) at 30 Hz, motor P gain 16, no calibration grid visible. This is policy v4, the best real-demonstration policy of the project.

Measured results (10 trials each). Stack 9/10 and unstack 7/10 in the original room (09-21); stack 4/10 in-distribution and 0/10 out-of-distribution after moving to a new desk (09-29); counterfactual (already stacked → no action) 5/5.

Known limits. Trained on one desk, one lighting setup, one arm. Fails on mirrored or far placements and when the calibration grid is visible. Learned the arm's slow tracking at P 16 (oscillates at P 48).

Project. Full write-up, daily research log, code and comparison with a classical pipeline and sim-to-real policies: GitHub repository https://github.com/GGOMOONG/so101-cube-stacking. Author: moonbeards.

Model Card for smolvla

SmolVLA is a compact, efficient vision-language-action model that achieves competitive performance at reduced computational costs and can be deployed on consumer-grade hardware.

smolvla architecture

This policy has been trained and pushed to the Hub using LeRobot.

Learn how to train and run it in the LeRobot smolvla guide, or browse the full documentation.


Model Details

  • License: apache-2.0
  • Fine-tuned from: lerobot/smolvla_base
  • Robot type: so_follower
  • Cameras: top, wrist

Inputs & Outputs

The policy consumes these observation features and produces these action features.

Inputs

Feature Type Shape
observation.state STATE (6,)
observation.images.camera1 VISUAL (3, 256, 256)
observation.images.camera2 VISUAL (3, 256, 256)
observation.images.camera3 VISUAL (3, 256, 256)

Outputs

Feature Type Shape
action ACTION (6,)

Training Dataset

  • Repository: moonbeards/color_cube_stack_unstack2_dagger2
  • Episodes: 216
  • Frames: 102557
  • Frame rate: 30 FPS
  • Task(s): "Pick up the orange cube and place it on top of the red cube", "Pick up the orange cube from the top of the red cube and place it on the table"

Training Configuration

Setting Value
Training steps 10000
Batch size 64
Optimizer adamw
Learning rate 0.0001
Seed 1000
LeRobot version 0.6.2

How to Get Started with the Model

New to LeRobot? These guides cover the full workflow:

The short version to run and train this policy:

Run the policy on your robot

lerobot-rollout \
  --strategy.type=base \
  --robot.type=so_follower \
  --robot.port=<your_robot_port> \
  --robot.cameras="{ <camera_1>: {type: opencv, index_or_path: <index_or_path>, width: 640, height: 480, fps: 30}, <camera_2>: {type: opencv, index_or_path: <index_or_path>, width: 640, height: 480, fps: 30}}" \
  --policy.path=moonbeards/smolvla_color_cube_stack_unstack2_v4 \
  --task="Pick up the orange cube and place it on top of the red cube" \
  --duration=60

Replace the remaining <...> placeholders with your own values: --robot.port and the camera names/indices are specific to your machine, and the camera names must match the observation keys this policy was trained on.

When --strategy.type=base is used the script doesn't record the episodes. Skipping duration will make the policy run indefinitely. For more information look at rollout documentation.

Train your own policy

This policy type is usually fine-tuned from the pretrained base model lerobot/smolvla_base:

lerobot-train \
  --dataset.repo_id=${HF_USER}/<dataset> \
  --policy.path=lerobot/smolvla_base \
  --output_dir=outputs/train/<policy_repo_id> \
  --job_name=lerobot_training \
  --policy.device=cuda \
  --policy.repo_id=${HF_USER}/<policy_repo_id> \
  --wandb.enable=true

Writes checkpoints to outputs/train/<policy_repo_id>/checkpoints/.


Evaluation

No evaluation results have been provided for this policy yet.


Citation

If you use this policy, please cite the method linked in the description above, along with LeRobot:

@misc{cadene2024lerobot,
    author = {Cadene, Remi and Alibert, Simon and Soare, Alexander and Gallouedec, Quentin and Zouitine, Adil and Palma, Steven and Kooijmans, Pepijn and Aractingi, Michel and Shukor, Mustafa and Aubakirova, Dana and Russi, Martino and Capuano, Francesco and Pascal, Caroline and Choghari, Jade and Moss, Jess and Wolf, Thomas},
    title = {LeRobot: State-of-the-art Machine Learning for Real-World Robotics in Pytorch},
    howpublished = "\url{https://github.com/huggingface/lerobot}",
    year = {2024}
}
Downloads last month
140
Safetensors
Model size
0.5B params
Tensor type
F32
·
BF16
·
Video Preview
loading

Model tree for moonbeards/smolvla_color_cube_stack_unstack2_v4

Dataset used to train moonbeards/smolvla_color_cube_stack_unstack2_v4

Paper for moonbeards/smolvla_color_cube_stack_unstack2_v4