Open-source Leader Arm
Based on published sources · Not tested by us ·
License: Apache-2.0 · Details by part
Overview
Unpowered 3D-printed six-joint leader arm read by AS5600 encoders through an ESP32, used to teleoperate an SO-ARM follower in MuJoCo or through LeRobot. [S001]
This project replaces the servo-driven LeRobot leader arm with an unpowered, 3D-printed arm whose six joints are read by AS5600 magnetic encoders. An ESP32 streams the joint angles to a host, which drives a follower. It is an input device: it has no actuators of its own and needs a separate SO-ARM follower, physical or simulated. This entry is source research only; nothing was printed, flashed or run. [S001]
Specifications
| Detail | Description |
|---|---|
| Type | Passive six-joint leader arm with encoder-instrumented joints and a handle; no actuators. Reported by source [S001] · Checked 2026-10-05 |
| Intended users | SO-ARM100/101 and LeRobot users comfortable with hand-wiring I2C modules, flashing an ESP32 and running Python plugins Editorial assessment [S001] · Checked 2026-10-05 |
| Assembly | 25-step README guide using step images; encoders for joints 0 and 5 attach early and the other four last; rubber band spans two housings. Reported by source [S001] · Checked 2026-10-05 |
| Calibration | Hold the leader in its reference pose with the follower at rest and press Enter to zero the encoders; defaults live in config_encoder_leader.py. Reported by source [S001] [S007] · Checked 2026-10-05 |
| Operating system | Windows (COM ports in examples); Linux and macOS (/dev/ttyUSB0 noted) Reported by source [S001] · Checked 2026-10-05 |
| Computer needed | A PC running Python 3.10 or newer; the README notes integrated graphics limit simulated recording to about 30 fps. No minimum specification stated beyond the Python requirement and the frame-rate note. Editorial assessment [S001] [S006] · Checked 2026-10-05 |
3D preview
Preview not available yet. Design-source links are available. A configuration-matched assembly and its file-level reuse scope have not yet been reviewed for a hosted preview.
Model sources
Design-source links are available. A configuration-matched assembly and its file-level reuse scope have not yet been reviewed for a hosted preview.
Assembly and use
Who it suits
It suits SO-ARM100/101 users who want a cheaper, lighter leader and can wire I2C modules by hand. The README says the arm is currently tested against a simulated SO-ARM in MuJoCo and also gives LeRobot commands for a physical so101_follower. The inspected sources do not include a test report for a physical follower; the README links an independent build write-up that was not reviewed here. [S001]
Configuration to reconcile
- Electronics: six AS5600 encoders with diametric magnets, a TCA9548A I2C multiplexer (the AS5600 has a fixed 0x36 address), an ESP32, 608 bearings, 28 AWG wire and a perfboard. The wiring tables put the multiplexer on ESP32 pins 18 and 19 and give each joint its own channel. [S001] [S004]
- Printing: 19 unique and 49 total parts in PLA at 0.2 mm layers and 15% infill, without supports. Each bearing_housing needs a mid-print pause at 10 mm to insert a bearing. STL, STEP and a Bambu Lab A1 3MF are in the repository. [S001] [S005]
- Firmware: firmware.ino uses only the Arduino Wire library, prints a per-channel magnet diagnosis at boot, then streams six comma-separated raw readings at 100 Hz over 115200-baud serial, with -1 for an unreadable channel. [S001] [S004]
- Software: two Python plugins register an encoder_leader teleoperator and a MuJoCo SO-ARM100 robot for LeRobot; standalone scripts drive MuJoCo without LeRobot. Both plugin packages are version 0.1.0, need Python 3.10 or newer and depend on an unpinned lerobot. Simulation also needs the trs_so_arm100 model from MuJoCo Menagerie. [S001] [S006]
Calibration is a single alignment: hold the leader in its reference pose while the follower is at rest, then press Enter. The plugin's default home angles, joint ranges and directions are fixed values in config_encoder_leader.py, so a different follower build may need them adjusted; that was not tested. [S001] [S007]
Cost scope
The README lists 2,619 INR (about US$27.45) for encoders, bearings, multiplexer, ESP32, wire, screws and perfboard, excluding printed parts. These are the maintainer's Indian prices with their own conversion, not re-quoted. The follower arm, its controller and power supply, the host computer and filament are excluded. The README's comparison of six servos at about $24 each is the author's estimate, not a sourced SO-101 price. [S001]
Licenses and gaps
A single Apache-2.0 LICENSE sits at the repository root; no separate hardware, firmware or documentation license or NOTICE file was identified. Purchased modules and the MuJoCo Menagerie model keep their own terms. [S003] [S005]
No published release was identified at retrieval (the releases API returned none); this entry covers commit 3cf2ee4 from September 15, 2026, which had 129 GitHub stars at retrieval, a dated popularity signal only. Gripper handling, joint-limit fit with a physical SO-101, encoder accuracy and latency remain unverified. [S002]
Cost
| Version | Price |
|---|---|
| Leader arm electronics and hardware, commit 3cf2ee4 README BOM | INR 2619.00 [S001] Parts estimate |
India (upstream INR prices) · Checked 2026-10-05
| Included | 6× AS5600 encoder with diametric magnet; 6× 608 bearing; TCA9548A multiplexer; ESP32; 28 AWG silicone wire; 60 M3×10 screws; Perfboard |
|---|---|
| Not included | 3D-printed parts and filament; Follower arm, its controller and power supply; Host computer; Shipping, taxes and assembly labor |
| Stock | Supplier stock not rechecked. |
| Delivery and tax | Not established. |
Price details
Maintainer-published INR component total with the README's own conversion of about US$27.45; not re-quoted.
India (upstream INR prices) · Checked 2026-10-05 · Quantity 1
Printed parts, an SO-ARM follower (physical or simulated) and a host PC.
Source files and licenses
CAD, wiring documentation, firmware and plugins are in one repository under a root Apache-2.0 license file; the follower and purchased modules are outside scope.
| Layer | Availability / license |
|---|---|
| mechanical design | available · Apache-2.0 STEP, STL, 3MF and GLB files under cad_files; root Apache-2.0 is the only license file identified, with no hardware-specific license. [S003] [S005] |
| electronics | available · Apache-2.0 Wiring diagram and pin tables for off-the-shelf modules on perfboard; no PCB design. Purchased modules keep their own terms. [S001] [S003] |
| firmware | available · Apache-2.0 Single Arduino sketch using the built-in Wire library; ESP32 board-support and toolchain terms are separate. [S003] [S004] |
| software | available · Apache-2.0 Two LeRobot plugins and standalone MuJoCo scripts; lerobot, MuJoCo and Menagerie model terms are separate. [S003] [S006] |
| documentation | available · Apache-2.0 README with BOM, wiring, print settings and assembly images. [S001] [S003] |
Teleoperation input device; no trained models distributed.
No dataset distributed; users record their own.
References
Links identify the documentation and revisions used in this profile. Access dates record when each source was retrieved.
- S001 · Matheshwaranpitchai / open-source-leader-arm contributors
Open-source Leader Arm README
Accessed 2026-10-05 · README.md at 3cf2ee41e645afe1173dda79914ffe31e174d7a6Source notes
Purpose, test status, BOM, wiring, print settings, firmware, LeRobot and standalone software use, assembly steps.
- S002 · Matheshwaranpitchai / open-source-leader-arm contributors
Repository revision and acquisition metadata
Accessed 2026-10-05 · 3cf2ee41e645afe1173dda79914ffe31e174d7a6; commit date 2026-09-15T19:25:21Z; manifest retrieved 2026-10-05Source notes
No published release; default-branch commit snapshot archived; dated repository popularity.
- S003 · Matheshwaranpitchai / open-source-leader-arm contributors
Repository license
Accessed 2026-10-05 · LICENSE (Apache License 2.0 text)Source notes
Root Apache-2.0 license file; only license file identified.
- S004 · Matheshwaranpitchai / open-source-leader-arm contributors
ESP32 encoder firmware
Accessed 2026-10-05 · firmware/firmware.inoSource notes
I2C multiplexer and AS5600 read loop, boot diagnosis and 100 Hz serial stream.
- S005 · Matheshwaranpitchai / open-source-leader-arm contributors
Pinned archive file inventory
Accessed 2026-10-05 · Complete filename inventory of 3cf2ee41e645afe1173dda79914ffe31e174d7a6 archive (78 members); not a printability testSource notes
CAD (STEP, STL, 3MF, GLB), docs images, firmware and two LeRobot plugin packages; one license file.
- S006 · Matheshwaranpitchai / open-source-leader-arm contributors
LeRobot plugin package metadata
Accessed 2026-10-05 · lerobot_teleoperator_encoder_leader/pyproject.toml and lerobot_robot_mujoco_so_arm/pyproject.tomlSource notes
Package names, versions, Python requirement and unpinned lerobot dependency.
- S007 · Matheshwaranpitchai / open-source-leader-arm contributors
Encoder leader default configuration
Accessed 2026-10-05 · config_encoder_leader.pySource notes
Joint names, default home angles, directions, joint ranges, port and baud rate.
Correction guidance · Discussion is not enabled · Profile format 0.7.0-draft.5
Change history
2026-10-05 — Created from Growbotics-listing lead; all claims checked against preserved upstream sources. No physical build or test.