Open-Source Research Platform

Two arms, a mobile base, and the computer on board.

XLeRobot-Pro is a two-arm mobile robot that costs $1,247 in parts. It adds a Jetson Orin Nano Super to XLeRobot, so you can record demonstrations, train a policy, and run it on the robot, on battery, without a separate computer.

XLeRobot-Pro removing a screw from an electric-vehicle battery pack under teleoperation, next to an industrial arm

Why XLeRobot-Pro?

Two-arm mobile robots that carry their own computer have mostly cost tens of thousands of dollars. XLeRobot brought the hardware down to about $660, but at that price it runs its learned policies on a separate laptop. XLeRobot-Pro moves training and inference onto the robot itself.

The frame is an IKEA RÅSKOG steel cart. The arms, neck, and mounts are printed in PLA, and everything else is off the shelf. Two changes made the added load work: the arms moved to their own power outlet instead of sharing servo buses with the head and wheels, and the printed arm links have thicker walls.

This overview video comes from an earlier version of the project. Where its on-screen numbers differ from the measurements on this page, the page is current.

Teleoperation Imitation Learning Onboard Training VLA Inference

System Capabilities

The Hugging Face LeRobot framework records demonstrations, trains policies, and runs them on the Jetson. An ACT policy trained on the robot in under an hour lifted a bottle in 49 of 50 trials on battery (one arm, one fixed bottle position). The ten tasks below were done by VR teleoperation with all computation on board.

Ten two-arm tasks done by VR teleoperation with onboard compute: pencil insertion, drill pickup, container opening, toaster use, screw removal, whiteboard wiping, peg-in-hole insertion, coffee filter removal, block sorting, and drawer opening

VR Teleoperation

An operator drives both arms from a VR headset, using hand tracking or controllers. The interface builds on Open-TeleVision.

Mapping

RTAB-Map builds a visual map from the RealSense, and Nav2 plans paths in it. This part of the stack runs on the robot but has not been evaluated.

Hardware Architecture

What's on the Robot

Everything is a part you can buy or print. These are the pieces that changed from XLeRobot, or that matter most when you build one.

SO-101 Arms

Two SO-101 arms, each with five joints and a gripper. Each arm reaches a little over 40 cm.

SO-101 robotic arm

Fin-Ray End-Effectors

TPU Fin-Ray fingers bend around what they hold. Under teleoperation they seated and lifted five test objects (a plastic apple, a cube, a drill, a water bottle, and a screwdriver) in 74 of 75 attempts; the one miss was the 17 g apple.

Fin-ray end-effector

Stronger Printed Arm Links

Load-bearing links are printed with 4 perimeters instead of 2, at the same 15% infill. In cantilever tests the arms failed at 18.5 N instead of 11.1 N (+67%), and the break moved from the printed link to the servo. The cost is 80 g per arm.

Mass and failure load for three print profiles

Compute and Power

A Jetson Orin Nano Super sits in a ducted enclosure at the center of the chassis, with a RealSense D435 on the neck. The arms, the head and wheels, and the Jetson each draw from their own outlet on one Anker SOLIX C300 DC. In XLeRobot's wiring, each arm shares a servo bus with the head or the wheels, and moving an arm and the head together collapsed that bus supply in 5 of 5 stress trials. With the arms on their own outlet and the firmware limits, the supply held in all 5.

Power layout: the 12 V car outlet feeds the arms, one USB-C outlet feeds the head and wheels, and another feeds the Jetson

Software Stack & Algorithms

The software pairs classical control for scripted reaching with learned policies trained on the robot.

Inverse Kinematics (IK) via Pink

Pink, an inverse kinematics library built on Pinocchio, turns target positions into joint angles for the color-target reaching demo, solving each step as a quadratic program on a single-arm model.

Teleoperated peg-in-hole task, close-up

SLAM & Navigation

A ROS 2 pipeline with RTAB-Map and the RealSense D435 handles mapping and localization, and Nav2 plans and follows paths on 2D costmaps. It runs on the robot, but its accuracy has not been evaluated.

Map of the lab built with RTAB-Map

Visual Perception

A color detector (HSV thresholding and contours) finds the target in a RealSense frame and converts its 3D center into the arm's base frame, so IK can reach it.

Color segmentation vision processing

LeRobot Integration

LeRobot handles recording, training, and deployment. These are the policy timings on the Jetson in MAXN SUPER mode, from the paper:

PolicyDenoising stepsTime per pass
ACT (100-action chunk)–104.5 ms
Diffusion Policy10540 ms
SmolVLA (450M)10997 ms
SmolVLA (450M)2363 ms

Two steps is faster but not free: over a 30-minute run it drew 3.2 W more module power than ten, and the GPU clock sagged about 9% late in the run. Task success at two steps was not tested.

Hardware Overview & Specifications

These are the measured numbers from the paper, with the conditions they hold under.

System Specifications

Parts Cost
$1,247
Height
1.20 m
Arm Reach
> 40 cm
Shoulder Hold
0.7 kg for 30 min
Mobility
3 Omni Wheels
Power Station
288 Wh

Known Limitations

Fixed Height Holds Are Time-Limited Holding Measured on One Servo Policy Tested at One Object Pose Bimanual Coordination Not Quantified Navigation Not Evaluated

How long a shoulder can hold a load depends on the load. With the load 18.6 cm from the joint, 0.7 kg held for the full 30 minutes, 0.8 kg reached the 65 °C stop after 27.8 minutes, 0.9 kg after 22.1 minutes, and 1 kg slipped. These holds come from one servo on battery, started warm, in a 24.4 °C room. Projected from whole-percent charge readings, the battery would last about 13–16 hours under continuous SmolVLA inference and about 17 hours holding loads.

Credits & Acknowledgements

Project Creators

Artemis Shaw, Chen Liu, Justin Costa, Rane Gray, Alina Skowronek, Kevin Diaz, Nam Bui, Nikolaus Correll.

Core Frameworks

Ready to start?

Start Building ↗