Open-APEX (Open-Sourced Affordable Printed Extensible eXchangeable-tool Robotic Arm) solves the trilemma of affordability, reproducibility, and extensibility. A deterministic control stack built on accessible 3D-printing.
🌐 Website: open-apex.org
Engineering-level Reliability at Campus Cost
Robotics platforms limit research when they force a compromise between cost and capability. Open-APEX breaks this barrier. We deliver a 6-DoF arm, strict deterministic safety, and an open VLA-ready pipeline — proving that affordability does not require sacrificing reproducibility or extensibility.
A complete 6-DOF robotic arm platform — including structure, actuation, power, safety systems, and workspace furniture — for less than the price of a single university textbook bundle.
- PETG chassis optimized for FDM — prints on common campus machines (0.4 mm nozzle, 0.2 mm layer height)
- Total printed mass: 930.41 g, filament cost: ~SGD 15
- All joints use identical 42 mm stepper motors (SGD 8 each) on a shared RS-485 daisy-chain bus
- Drag-and-drop 3D control powered by Ursina engine
- Online inverse kinematics synchronization between digital twin and physical arm
- PnP calibration for camera-to-arm alignment
- Two execution modes: Simul (real-time) and Preview-First (safe teaching)
- Damped Least Squares (DLS) IK for singularity stability
- Joint clamping and distance-aware target extrapolation
- Hardware E-Stop with three isolated electrical domains (24V / 5V / 3.3V)
- Magnetic quick-release — swap grippers, probes, and sensors without rewiring
- ESP32 Master-Slave wireless communication for tool control
- Strict dock/undock power sequencing for safety
- Flask trajectory server for stateless on-demand replanning
- ZMQ PUB/SUB for high-speed module synchronization
- Separated visualization traffic from deterministic hardware traffic
- Full autonomy loop from human intent to physical actuation
- VLA-ready architecture for AI-driven manipulation research
- Python 3.12 with required packages (ursina, roboticstoolbox-python, flask, zmq, numpy, pyserial, spatialmath)
- USB-TTL adapter connected to the robotic arm
python main.pyThis launches both the Flask trajectory server and the Ursina-based 3D control UI.
- Mount the arm base on a rigid board (≥20mm thickness, ≥30cm × 30cm)
- Connect 24-28V DC power supply (≥15A)
- Connect USB-TTL module and note the COM port
- Calibrate magnetic encoders on first power-up via the UI menu
| Key | Action |
|---|---|
| Arrow Keys | Move end effector (X/Y) |
| Page Up/Down | Move end effector (Z) |
| Home | Return to home position |
| J/L/I/K/,/. | Rotate end effector |
| Drag 3D arrows | Set target position |
| Click sphere | Execute trajectory |
├── main.py # Entry point — launches server + UI
├── openapexFlaskServer.py # Flask trajectory server (IK solver)
├── openapexUI.py # Ursina 3D control interface
├── openapexVirtual.py # Digital twin visualization
├── openapexCommander.py # ZMQ publisher + serial commander
├── openapexTargetTool.py # 3D target navigation widget
├── busservo/ # Bus servo (gripper) driver
├── zdtstepper/ # ZDT stepper motor protocol
├── tools/ # JSON config & UART port managers
├── model/ # 3D model files (.glb)
├── model2/ # Alternative 3D models (.glb)
├── font/ # UI fonts
├── audio/ # Audio assets
├── ico/ # Application icon
└── param/ # Configuration files
Open-APEX is built in the open. Every contribution — from a one-line typo fix to a new end-effector module — helps the platform grow.
- 🐛 Report Issues — Search existing issues, use templates, include reproduction steps
- 🔀 Submit a PR — Fork, branch from
main, keep PRs focused - 📋 Community Guidelines — Be respectful, prioritize clarity, include BOM updates for hardware PRs
Chen Guoyi
📧 guoyi@comp.nus.edu.sg
🏫 NUS School of Computing
© 2026 Open-APEX.org — All rights reserved.
Supported by National University of Singapore (NUS).