Engineering-level Reliability at Campus Cost

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.

The Open-APEX Vision

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.

The Trilemma Solved

Designed to break the barriers of deployment in educational laboratories.

Affordable Reproducible Extensible Open-APEX

Explore the Robotics Landscape

Hover and click anywhere across the overlapping geometric regions on the Venn Diagram to reveal mapping of current market solutions, their limitations, and where Open-APEX fits.

Select a region to begin.

Built for Under SGD 203

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.

Category Item Unit Cost Qty Subtotal
Actuation System
Joint Motors (with cable, bearing, MCU)SGD 106SGD 60
Gripper Servo MotorSGD 51SGD 5
Structure
3D Printed Parts (Full Set, PETG)SGD 151SGD 15
Communication
RS485-UART ConverterSGD 11SGD 1
Electrical & Power
Aviation ConnectorSGD 31SGD 3
Electromagnet (24V, demagnetization)SGD 51SGD 5
4-Channel Relay ModuleSGD 81SGD 8
Emergency Stop SwitchSGD 51SGD 5
230V to 24V Power AdapterSGD 151SGD 15
Indicators
24V Indicator LightsSGD 33SGD 9
24V RGB Status LightSGD 91SGD 9
Mechanical Setup
PVC Pipe (3m)SGD 121SGD 12
PVC ConnectorsSGD 32SGD 6
IKEA TableSGD 501SGD 50
Total SGD 203

Interactive Hardware Explorer

Examine the individual PETG structural components and joint configurations in real-time 3D.

Component Breakdown

Task Management Demonstration

Programming complex, non-trivial task sequences quickly and without writing code.

01

Initialization & Setup

The objective requires absolute precision: sticking a blue gum stick onto a microscopic magnet perfectly, with absolutely no human interaction during runtime. We begin by verifying serial communications, enabling joint brakes, and safely recording the robot's physical Home Point.

02

Digital Twin Waypoint Registration

Teaching by dragging. By simply clicking on the simulated Ursina 3D arm and dragging it to the desired coordinate, the physical robotic arm mirrors the movement flawlessly. We set our target waypoint directly in the virtual interface.

03

Grasp Sequence Programming

We choreograph the intricate end-effector steps: open grip, approach target, test structural repeatability by checking alignment, and closing the grip. Every individual action is logged as a sequential node in our task pipeline.

04

Autonomous Full-Cycle Execution

The sequence is locked. The system executes the entire trajectory: approaching the target wall, hitting the microscopic magnet, releasing the stick, retracting safely, and returning to the home position entirely autonomously.

System Capabilities

Engineering-grade architecture distilled into a practical laboratory package.

Standardization & Reliability

Built on Practical Engineering. RS-485 daisy-chain routing, PETG chassis optimized for FDM -- affordable but uncompromising.

Open-APEX uses PETG for all structural links because it prints reliably on common campus FDM machines with a single slicing profile (0.4 mm nozzle, 0.2 mm layer height). Load-bearing regions use ribs; non-critical regions are hollowed. Total printed mass: 930.41 g. Filament cost for one arm: approximately SGD 15.

LinkLengthDia.MaterialWeightPrint TimeFasteners
Link 0----PETG HF55.81 g3h54m12
Link 1----PETG HF95.91 g6h15m16
Link 2300 mm50 mmPETG HF302.83 g20h9m25
Link 3300 mm50 mmPETG HF285.16 g21h16m24
Link 4----PETG HF95.35 g6h46m12
Link 5----PETG HF95.35 g6h46m12

All joints use identical 42 mm stepper motors (SGD 8 each) on a shared RS-485 daisy-chain bus. A single trunk carries 24 V power alongside the differential RS-485 pair, reducing harness size, connector count, and wiring mistakes. The brand is not critical -- any equivalent motor meeting the published specs may be substituted.

Click to expand

Interactive Control

What You See Is What You Move. A flawless Digital Twin powered by Ursina -- drag on screen, robot follows.

The digital twin lets users move the end effector directly in 3D. When a target is dragged, the system solves inverse kinematics online and synchronizes the approved joint state to the physical arm. Users think in terms of tool position rather than individual joint angles.

Digital twin software interface

To fuse the physical arm scene with the software scene, Open-APEX uses PnP (Perspective-n-Point) calibration to correct the camera viewpoint, making the two perspectives perfectly overlap. This video demonstrates the calibration process in action. The bottom-right panel displays the PnP algorithm's real-time estimation of the camera pose relative to the arm's Link 0 frame.

The jog loop creates a rolling short-horizon plan: each jog input creates a small target update, the UI requests a short trajectory from the Flask server, then streams the returned joint frames to both the visual model and the robot simultaneously.

Jog real-time flow diagram

Two execution modes are supported. In Simul mode, visualization and hardware move together frame by frame, minimizing the delay between what the operator sees and what the robot does. In Preview-First mode, the UI plays the motion in the digital twin before sending it to hardware -- useful for teaching and cautious operation.

Click to expand

Deterministic Safety

Predictable Behavior in Unpredictable Workspaces. DLS-IK and target extrapolation reject unsafe commands.

The controller uses Damped Least Squares (DLS) inverse kinematics to remain stable near singularities. The IK step solved every control cycle:

\[\Delta\mathbf{q}=\mathbf{J}(\mathbf{q})^{\top}\left(\mathbf{J}(\mathbf{q})\mathbf{J}(\mathbf{q})^{\top}+\lambda^2\mathbf{I}\right)^{-1}\mathbf{e}\]

Joints are always clamped: \(\mathbf{q}_{k+1}=\mathrm{sat}_{[\mathbf{q}_{\min},\mathbf{q}_{\max}]}(\mathbf{q}_{k}+\Delta\mathbf{q})\). For short final-approach motions, a distance-aware target extrapolation strategy prevents erratic proximal joint motion:

\[x_{e} = x_{d} + L_{\text{ext}}(d)\,\mathbf{u}, \quad L_{\text{ext}}(d) = \max(0,\, d_{c} - d)\]

A distance-coupled joint regularization term further penalizes large proximal joints during close-range motions:

\[\min_{\dot{q}} \; \lVert J\dot{q} - \dot{x}_{\text{ref}} \rVert^{2} + \gamma(d)\,\dot{q}^{\top}W_{q}\dot{q}\]
JointAxisLimits (deg)Safety Notes
J1Y[-170, +170]20 deg anti-twist margin for cable harness
J2X[-90, +100]Avoids excessive upward lift
J3X[-130, +10]+10 deg prevents mechanical interference
J4X[-180, +180]Most sensitive to cable torsion
J5Z[-120, +120]Balances task postures and bend radius
J6Y[-180, +180]Use back-and-forth to untwist
Click to expand

Hardware E-Stop & Isolation

Strictly Segregated Power Domains. 24V/5V/3.3V isolation guarantees fail-safe behavior.

Open-APEX uses three isolated electrical domains: 24 V actuation, 5 V differential communication, and 3.3 V logic. This limits fault propagation, simplifies debugging, and gives future modules clear connection points.

System architecture diagram

The 24 V supply enters a hard emergency-stop path before any software-controlled branch. After the E-stop stage, an 8-channel relay module distributes power across the actuation line, electromagnet release line, and status indicators. Three status indicators with NC-safe defaults make system state visible at the hardware level.

The arm-side harness is limited to just 5 conductors: Motor 24 V, Magnet 24 V, RS-485 A, RS-485 B, and Ground. Aviation-style keyed connectors prevent miswiring during maintenance. All grounds return to one power-adapter reference for clean signal integrity.

Click to expand

Modular eXchangeable-Tool

True Magnetic Quick-Release. Swap grippers, probes, and sensors without rewiring.

A magnetic electrical connector links the arm harness to the tool harness. After docking, the electromagnet locks Link-5 to the tool. The system then powers up in a strict sequence:

  1. Dock -- Electromagnet engages, physically locking tool module
  2. 5 V Enable -- ESP32 Slave boots, establishes Wi-Fi link, reports telemetry
  3. 24 V Enable -- High-power tool actuator is powered (if needed)

Undocking reverses the sequence: sensors and actuators stop first, then 24 V is cut, then 5 V, and finally the electromagnet is released. The electromagnet is configured as power-off magnetic / power-on release, so energy is used only for intentional tool release. A watchdog timer limits energisation time to prevent overheating.

The ESP32 Master controls three separate power rails for the end effector (9 V docking magnet, 5 V logic, 24 V tool power), communicating wirelessly with the ESP32 Slave mounted on the tool. This means tool changes never disturb joint-side control.

Solid green indicates normal arm operation with the end effector locked. When the yellow LED flashes, the electromagnetic locking mechanism demagnetises, allowing the end effector to be freely swapped. After 5 seconds the system automatically re-engages, securing the new tool in place.

Click to expand

Decoupled ZMQ Flow

High-Speed Module Synchronization. Flask + ZMQ IPC keeps the frame rate perfect.

The software is split into cooperating processes. The Trajectory Server (Flask) accepts a start pose, end pose, and initial joint config over HTTP. It generates a Cartesian path and solves IK to produce a joint trajectory -- kept stateless for on-demand replanning.

The Commander layer publishes joint-angle frames over a ZMQ PUB socket (:5557). Visualizers subscribe to the same channel for real-time mirrored views. Simultaneously, serialised motion frames are streamed to stepper drives over dedicated serial managers. This separates fast visualization traffic from deterministic hardware traffic.

Target-point move execution flow

Safety is enforced at every module boundary: the UI validates commands before any hardware frame is sent, the Commander only transmits approved frames, and the physical E-stop remains the final fallback. Because executed frames are also shown in the visual stream, the operator always sees what the robot is about to do.

Click to expand

Vision-Language-Action Pipeline

Experience the entire autonomy loop, from human intent to physical actuation. Click any stage to jump to the corresponding moment in the demonstration.

01 User Request
The operator speaks or types a natural-language instruction -- for example, "Stack the red disk onto the blue disk." The system captures the raw text and forwards it to the language module for semantic decomposition. No structured syntax or programming knowledge is required.
02 Task Understanding
The LLM-based reasoning engine decomposes the command into structured fields: the manipulation target (red disk), the destination reference (blue disk), and the task category (pick-and-place with stacking). Key constraints such as grasp stability and alignment precision are inferred from the task type.
03 End-Effector Selection
The system evaluates the target object's geometry, surface properties, and the contact stability required for stacking. It compares the currently mounted end effector against the task requirements and selects the most suitable one -- in this case, switching from a suction cup to a parallel gripper for lateral clamping precision.
04 Workflow Generation
A complete execution workflow is generated: tool change, object detection, grasp-pose computation, collision-free path planning, approach, grip, lift, transfer, alignment, placement, release, and post-placement verification. Each step is sequenced with explicit preconditions and success criteria before proceeding.
05 Tool Change
The magnetic quick-release mechanism demagnetises the docking connector, freeing the current end effector. The operator (or an automated tool rack) installs the parallel gripper. Once docked, the electromagnet re-engages and the ESP32 handshake confirms electrical continuity before the system proceeds.
06 Scene Perception
The vision module captures the workspace via calibrated cameras and runs object detection to identify all relevant items. For each detected object, the system extracts its 3D centroid position, bounding dimensions, and colour label. A semantic scene graph is built, establishing the spatial relationships needed for grasp and placement planning.
07 Path Planning
The trajectory planner computes a segmented Cartesian path: Home to Pre-Grasp, Pre-Grasp to Grasp, Grasp to Lift, Lift to Pre-Place, and Pre-Place to Place. Each segment is checked against joint limits, workspace boundaries, and singularity proximity using Damped Least Squares IK. Unsafe segments are rejected before any motor moves.
08 Grasp Execution
The arm descends from the pre-grasp waypoint to the computed grasp pose. The parallel gripper closes around the red disk with controlled force. A grasp-status check confirms stable contact by verifying the gripper encoder position against expected object width. If the check fails, the system retries or aborts safely.
09 Transfer & Place
The grasped object is lifted vertically to a safe clearance height, then translated horizontally to the position directly above the blue disk. A precision alignment step adjusts the final X-Y offset using visual feedback. The arm descends to the stacking height and the gripper opens to release the red disk onto the blue disk.
10 Verify & Return
A post-placement verification step checks the relative position and stacking stability of the placed object. The gripper state is confirmed open, the task status is marked as completed, and the arm retracts along a safe path back to the home position, ready for the next instruction.
Click a stage or play the video to begin.

Join the Community

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

Found a bug, unexpected behaviour, or a documentation gap? Open a GitHub Issue so the community can track and resolve it.

  • Search existing issues before creating a new one
  • Use the provided issue template
  • Include steps to reproduce, expected vs. actual behaviour
  • Attach logs, screenshots, or short screen recordings when possible
  • Tag with the appropriate label: bug, docs, enhancement
Open an Issue

Submit a Pull Request

Ready to contribute code, firmware, CAD files, or documentation? Submit a Pull Request following these guidelines.

  • Fork the repository and create a feature branch from main
  • Keep PRs focused -- one logical change per PR
  • Follow the existing code style and naming conventions
  • Add or update tests and documentation as needed
  • Write a clear PR description linking the related Issue
  • Ensure CI checks pass before requesting review
Create a PR

Community Guidelines

A healthy community is built on mutual respect and clear communication. Please follow these principles.

  • Be respectful and constructive in all discussions
  • Prioritise clarity -- write for someone building the arm for the first time
  • Hardware PRs must include updated BOM and assembly notes
  • Breaking changes require an RFC issue before implementation
  • All contributions are licensed under the project's open-source licence
View Repository