BrazoRobot
    Hardware

    BrazoRobot

    A 5-axis robotic arm with gripper that first learns to move in a physics simulator and then repeats the movement on the bench. Kinematics in Python, a MuJoCo twin, an ESP8266 bridging to the servos, and a website with a 3D viewer of the real arm.

    Python
    MuJoCo
    Robotics
    ESP8266
    Hardware
    FreeCAD

    What is it?

    An aluminium robotic arm with 5 degrees of freedom plus a gripper, built on a Lynxmotion kit and driven by six servos. What makes it mine is not the arm itself but everything around it: the kinematics in Python, a twin of the arm in the MuJoCo physics simulator, a small electronic bridge that turns what the laptop computes into real movement, and a website with a 3D viewer that shows the arm exactly as it is, with its real parts.

    Why I built it

    I wanted to learn robotics first in simulation, then on the bench. The idea is that the same code that moves the simulated arm also moves the real one, and then measure how close they are. That is why the brain lives on the laptop and the microcontroller just obeys: it receives the position of each servo and applies it.

    How it works

    Simulation

    • Inverse kinematics: you say where you want the tip of the gripper and the arm works out how to place each joint.
    • Smooth trajectories: movements accelerate and brake progressively, with no jerks.
    • Reach map: how far the arm reaches and where it stops reaching.
    • Pick-and-place demo: the simulated arm picks up an eraser and drops it somewhere else, rotating the wrist before closing the gripper so it grabs the short side.

    From laptop to arm

    An ESP8266 connected over USB receives the commands from the laptop and passes them to the servos through a PWM controller. Each servo has its own range, and every movement ramps up and down smoothly. There is a simulated version of the bridge to test the software without the arm plugged in.

    Control web app

    A web tool, running on the laptop itself, to calibrate the servos, record sequences by moving the arm by hand, tune the geometry with a ruler and switch between the simulated and the real arm without restarting anything.

    3D viewer

    The viewer model comes from the real CAD of the arm parts, exported from FreeCAD. The CAD measurements are the ones the kinematics uses, so what you see on screen matches what sits on the bench.

    Roadmap

    PhaseScopeStatus
    SimulationMuJoCo model, kinematics, trajectories and reach mapDone
    ElectronicsESP8266, servo controller and power supply moving a servo from the laptopDone
    Serial bridgeThe laptop sends positions and the arm executes them with a smooth rampDone
    New elbowReplace the elbow servo, which burnt outDone
    Emergency stopAdd a stop that cuts the powerPending
    CalibrationMeasure the real travel of the six servosDone
    Sequences on the real armReplay on the real arm the sequences planned in the web appDone
    GeometryTune the real arm's measurements with a rulerIn progress
    Sim-to-realThe same trajectory in simulation and for real, measuring the differencePending
    Project website3D viewer, progress, documentation and filesDone
    Reinforcement learningTrain a policy in the simulator to move the armPending

    Stack

    • Kinematics and simulation: Python, NumPy and MuJoCo
    • Electronics: ESP8266 with Arduino firmware and a PCA9685 servo controller
    • Web: React, Vite and three.js, deployed on Vercel
    • CAD: FreeCAD

    Links

    MakerIsland

    Building digital treasures with code

    © 2026 Maker Island · handmade, no templatesThe archipelago