CAUTION: This page documents a 3-bus draft architecture. For this build variant, follow this page exclusively.

1. Build Overview

This guide walks you through building an XLeRobot platform with 2x SO-101 follower arms, a neck assembly, omni-wheel base, and an NVIDIA Jetson compute node.

The 3-Bus Separation

We use three independent motor buses to simplify wiring and isolate power faults.

BusSubsystem
Bus 1Left arm
Bus 2Right arm
Bus 3Neck and wheel base

2. Print Settings

Parts were designed for consumer printers. Download the pre-configured XLeRobot Print Profiles (.3mf) ↗ to get started.

NOTE: The wheel-base connector may need Z scaling only to balance the load across the wheels.

3. Assembly

A) Cart & Wheel Base

Start with the IKEA RÅSKOG Assembly Manual ↗, then proceed to the Wheel-Base Integration Steps ↗.

B) Arms & Neck

Complete the SO-101 Follower Arm Assembly ↗. Crucial: Install wrist camera attachments before closing the wrist stack.

4. Motor Configuration & IDs

Configure motors using Bambot (GUI) ↗. ID assignment must be unique per bus.

BusRecommended IDsMapping Notes
Bus 1 (Left Arm)1-6SO-101 follower mapping
Bus 2 (Right Arm)1-6Valid due to bus separation
Bus 3 (Neck & Wheels)7-117-8 Neck, 9-11 Wheels
Identify Motor Ports
# Identify active serial ports
$ python lerobot/find_port.py

# Grant serial permissions on Linux
$ sudo chmod 666 /dev/ttyACM0
TIP: Label each motor with a marker after configuration (e.g. L-1, R-1).

5. Hardware Calibration & Validation

Validate your physical assembly to ensure wiring is secure and IK accuracy is maintained.

A) Joint Control Sanity Check

Test Joint Movements
$ python 0_so100_keyboard_joint_control.py

B) Mechanical IK Calibration

Verify the gripper reaches the expected location. Check for loose servo horns if accuracy is low.

Verify IK Accuracy
$ python 1_so100_keyboard_ee_control.py

Hardware validated? Move on to software configuration.

Next Step: Software Setup ↗