




LeKiwi Mobile Base
About this program
LeKiwi — Mobile Base for SO-ARM100
LeKiwi is a three-wheeled omnidirectional mobile base designed to carry the SO-ARM100 (or its sibling Koch arm) around a real environment. Add a 5-DOF teleop arm on top, put a camera on the base and the wrist, and you have a low-cost mobile manipulation platform compatible with the entire LeRobot stack.
Why "kiwi"?
Kiwi drive — three omniwheels at 120° — gives you true holonomic motion: the base can translate in any direction and rotate independently, no slewing required. That's huge for teleop demos where a human operator is driving with a joystick and expects the base to move "like a spaceship," not like a car.
What you get
- Three-wheel kiwi drive with omniwheels on custom-printed hubs
- Feetech servo drive (this Print All set uses the Feetech
servo_wheel_hub; a Dynamixel-specific hub/mount set exists upstream if you use Dynamixel servos) - Raspberry Pi + optional Jetson Orin compute cage printed onto the base plate
- Battery compartment sized for standard 3S/4S LiPo packs
- Servo-controller mount and base-mounted webcam holder
- Mounting pattern on the top plate that drops directly into an SO-ARM100 base
What you do with it
- Mobile teleoperation: leader arm drives the follower arm, joystick drives the base. Stream both from a laptop anywhere on the network.
- Mobile imitation learning: extend LeRobot's episode recorder to include base velocities. The existing Diffusion Policy and ACT models have been adapted by the community to condition on base state.
- Multi-camera observation: base camera sees the environment, wrist camera sees the task. Both go into the policy.
- Classroom mobile robotics: cheap, printable, and works with commodity servos.
Printed parts
~12 printed parts (sandwich base plate, 3× drive mounts + wheel hubs, Pi/Jetson cages, battery tray, camera mounts, SO-ARM100 base shim); see Print Files. Note: modified_base_arm is a replacement SO-ARM100 base shim that lets the arm sit flush on the base plate — required if you are mounting the arm on this base.
Attribution & license
- Designer: SIGRobotics-UIUC (Student Interest Group on Robotics, University of Illinois Urbana-Champaign)
- Upstream: https://github.com/SIGRobotics-UIUC/LeKiwi
- License: Apache 2.0
- Ecosystem: LeRobot
Links
- Upstream repo: https://github.com/SIGRobotics-UIUC/LeKiwi
- SO-ARM100 (arm to mount on top): https://github.com/TheRobotStudio/SO-ARM100
- LeRobot stack: https://github.com/huggingface/lerobot
Build Guide
Step-by-step assembly guide: github.com/SIGRobotics-UIUC/LeKiwi/blob/main/Assembly.md
Printing
This Print All set is the Feetech build of the LeKiwi base — it maps to the root 3DPrintMeshes/ folder of the upstream SIGRobotics-UIUC/LeKiwi repo (the dynamixel_specific/, URDF/, and 5V/wired extras are intentionally excluded).
| Part | Qty | Notes |
|---|---|---|
| base_plate_layer1.stl | 1 | Sandwich base, lower layer |
| base_plate_layer2.stl | 1 | Sandwich base, upper layer |
| drive_motor_mount.stl | 3 | One per wheel — kiwi drive has 3 wheels |
| servo_wheel_hub.stl | 3 | One per omniwheel hub |
| battery_mount.stl | 1 | 3S/4S LiPo tray |
| servo_controller_mount.stl | 1 | Waveshare bus-servo driver mount |
| base_camera_mount.stl | 1 | Base webcam holder |
| wrist_camera_mount.stl | 1 | Wrist webcam holder |
| modified_base_arm.stl | 1 | SO-ARM100 base shim (required if mounting the arm) |
| pi_case_top.stl | 1 | Raspberry Pi case (default compute) |
| pi_case_bottom.stl | 1 | Raspberry Pi case (default compute) |
| jetson_holder.stl | 1 (optional) | Alternative compute mount — only if using a Jetson Orin instead of the Pi |
Print-multiples: drive_motor_mount and servo_wheel_hub each print x3 (three-wheel kiwi drive). Everything else is x1.
Compute mount — pick one: the Raspberry Pi case (pi_case_top + pi_case_bottom) is the default and matches the BOM. The jetson_holder is a mutually-exclusive alternative for a Jetson Orin build — print it instead of the Pi case, not in addition. (The list keeps both so either build is possible; you don’t print all three.)
Total for a standard Feetech + Pi build: 15 prints (9 single parts incl. the Pi case + 3× drive mount + 3× wheel hub; the Jetson holder is optional/alternative).
🖨 Print Files (12)
base_plate_layer1.stl
base_plate_layer2.stl
drive_motor_mount.stl
servo_wheel_hub.stl
battery_mount.stl
pi_case_top.stl
Required Hardware
LeKiwi Mobile Base Parts
| Item | Qty | Notes | Source |
|---|---|---|---|
| Feetech STS3215 servo (12 V) | 3 | Drive motors for the kiwi base | AliExpress |
| Omni wheel, 4 in | 3 | Holonomic (kiwi) drive | Amazon |
| Waveshare Bus Servo Adapter | 1 | Drives the STS3215 bus | Amazon |
| Raspberry Pi 5 | 1 | Main compute | Amazon |
| 12 V 5 A Li-ion battery | 1 | 12 V version; or 65 W laptop power bank for 5 V version | Amazon |
| USB camera | 2 | Workspace + wrist camera | Amazon |
| 3D-printed base chassis | 1 set | Side panels, motor mounts, camera mounts — STLs in repo | — |
| M3 screw/nut assortment | 1 kit | Frame assembly | Amazon |
Add a SO-ARM101 arm (see its program page) to make the full LeKiwi mobile manipulator.
B