Skip to the content
PCBKitNew board
2 layers98 × 99.5 mmOttolinkPCB, the printed circuit board in 3D

4-DoF anthropomorphic robotic manipulator

Size
98 × 99.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
41
Nets
34
Pads
141
Tracks, vias
494, 31
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
29 Sep 2026
Updated
29 Sep 2026

Overview

OttolinkPCB is an open-source printed circuit board by Jackhammer9, from the Jackhammer9/Ottolink repository on GitHub. It is a 2-layer board of 98 × 99.5 mm with 41 parts on 34 nets, routed with 494 tracks and 31 vias.

It is built around the XL4015E1, LM2596S-5.0 and XT60-M. Its parts include 10 capacitors, 9 connectors, 4 resistors, 2 switches and 1 IC. It belongs with the robots and motor control boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

3

README

Readme.md

Ottolink

Design and Control of a 4-DoF Anthropomorphic Robotic Manipulator

Ottolink is a custom 4-DoF anthropomorphic robotic manipulator designed and built for spatial end-effector trajectory execution. The project combines mechanical design, embedded real-time control, Jacobian-based inverse kinematics, custom electronics, and MuJoCo simulation into a complete robotic system.


Overview

Ottolink features a 3-DoF shoulder configuration and 1-DoF pitch elbow, providing spatial control of the end effector.

The project was developed as a complete robotics pipeline:

CAD → Mechanical Assembly → Kinematics → Simulation → Embedded Control → Custom PCB → Physical Robot

The controller runs on an ATmega328P-based embedded system and executes Cartesian-space trajectories using a Jacobian pseudoinverse controller.


Watch It In Action

You can watch the arm in action on my Portfolio Website.


Features

  • 4-DoF anthropomorphic robotic arm
  • 3-DoF shoulder + 1-DoF pitch elbow
  • Custom mechanical design in Autodesk Inventor
  • 3D-printable mechanical components
  • Jacobian pseudoinverse inverse kinematics
  • Real-time Cartesian-space control
  • Custom C++ linear algebra library
  • Rodrigues rotation formulation for joint-axis transformations
  • Multi-axis synchronized PWM servo control
  • Joint interpolation and trajectory execution
  • Custom control PCB designed in KiCad
  • Dedicated power distribution and voltage regulation
  • MuJoCo simulation environment
  • Simulation-to-hardware trajectory validation

Mechanical Design

The robotic arm was designed and assembled in Autodesk Inventor, with component geometry optimized for 3D printing tolerances.

The mechanical design considers:

  • Joint clearances
  • Structural rigidity
  • Servo mounting
  • Payload-to-weight considerations
  • Assembly constraints
  • Joint-axis alignment

The final design was manufactured using 3D-printed components and integrated with the actuator and control system.

CAD

The CAD/ directory contains the mechanical design files and supporting models.


Kinematics and Control

Jacobian-Based Cartesian Control

Ottolink uses a Jacobian pseudoinverse controller to map Cartesian end-effector errors into joint-space corrections.

Given the end-effector error:

text
e = x_target - x_current

the joint-space update is calculated using:

text
Δq = J⁺ e

where:

  • J is the manipulator Jacobian
  • J⁺ is the Moore-Penrose pseudoinverse
  • e is the Cartesian position error
  • Δq is the resulting joint-space correction

The controller iteratively updates the joint configuration to reduce the Cartesian position error and converge toward the target trajectory.


Rodrigues Rotation

Rodrigues' rotation formula is used to represent arbitrary rotations around the robot's joint axes.

This is particularly important for handling the physical robot's non-ideal axis configurations and maintaining consistency between:

  • The CAD model
  • The mathematical kinematic model
  • The MuJoCo simulation
  • The physical robot

Custom Linear Algebra Library

A lightweight custom C++ matrix and linear algebra library was developed specifically for the ATmega328P.

The library provides the operations required by the real-time controller, including:

  • Matrix multiplication
  • Matrix transposition
  • Matrix inversion
  • Pseudoinverse operations
  • Vector operations

The implementation was designed around the memory and computational constraints of the ATmega328P rather than relying on a large external numerical library.


Embedded Controller

The physical robot is controlled by an ATmega328P-based embedded system.

The firmware provides:

  • Multi-axis PWM control
  • Synchronized servo actuation
  • Joint interpolation
  • Cartesian trajectory execution
  • Real-time kinematic calculations
  • Joint-space corrections

The controller was implemented using C++ and PlatformIO.

Firmware

The embedded controller can be found in:

text
OttolinkController/

The main source code is located in:

text
OttolinkController/src/

Electronics

A custom control PCB was designed in KiCad.

The PCB provides:

  • Servo power distribution
  • Localized voltage regulation
  • High-current actuator power handling
  • Separation of actuator power from logic-level control signals
  • Centralized connections between the microcontroller and actuators

The board was designed to reduce wiring complexity while providing a more robust electrical interface for the robotic system.

PCB Design

PCB source files are available in:

text
OttolinkPCB/

The directory contains the KiCad schematic, PCB layout, project files, and custom footprint data required for the board.

Manufacturing files are available in:

text
PCBGerberFiles/

Simulation

A complete MuJoCo simulation of the robotic arm was developed to validate the kinematic and control system before deployment to the physical hardware.

The simulation includes:

  • Robot geometry
  • Coordinate frames
  • Joint definitions
  • Joint limits
  • Kinematic transformations
  • End-effector control
  • Cartesian trajectory execution

The simulation files are located in:

text
Sim/
├── meshes/
├── ottolink.xml
└── OttolinkSimulation.py

The simulation was used to validate:

  1. Forward kinematics
  2. Coordinate-frame transformations
  3. Jacobian calculations
  4. Jacobian pseudoinverse control
  5. Cartesian trajectory generation
  6. Controller behavior prior to physical deployment

Simulation-to-Hardware Workflow

The project was developed with a simulation-first workflow.

text
        Mechanical Design
               │
               ▼
        Kinematic Model
               │
               ▼
         MuJoCo Model
               │
               ▼
      Controller Validation
               │
               ▼
      Embedded Implementation
               │
               ▼
       Physical Robot

This workflow allowed the kinematic and trajectory-control algorithms to be tested in simulation before being executed on the embedded controller and physical hardware.


Parts

41
QtyValueFootprintReferences
4100nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC5, C6, C7, C8
4100uFCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC1, C2, C3, C4
310kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R3, R4
222pFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC9, C10
2XL4015LM2596:XL4015J2, J3
1+5vTestPoint:TestPoint_Pad_D2.0mmTP2
1+6.5v_ATestPoint:TestPoint_Pad_D2.0mmTP3
1+6.5v_BTestPoint:TestPoint_Pad_D2.0mmTP4
116MHzCrystal:Crystal_HC49-4H_VerticalY1
120kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2
1DisplayConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ5
1Free PortsConnector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_VerticalJ9
1FuseFuse:Fuseholder_Cylinder-5x20mm_Schurter_0031_8201_Horizontal_OpenF1
1GNDTestPoint:TestPoint_Pad_D2.0mmTP1
1IR RecieverConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ7
1ISP | PROGConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ6
1LM2596LM2596:LM2596 Step Down ModuleJ4
1MCUPackage_DIP:DIP-28_W7.62mmU1
1SERVO_ELBOW_PITCHConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalM4
1SERVO_SHOULDER_PITCHConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalM1
1SERVO_SHOULDER_ROLLConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalM3
1SERVO_SHOULDER_YAWConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalM2
1SW_PushButton_Switch_THT:SW_PUSH_6mmSW2
1SW_SPDTConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalSW1
1UARTConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ8
1VBATTestPoint:TestPoint_Pad_D2.0mmTP5
1XT60-MConnector_AMASS:AMASS_XT60-M_1x02_P7.20mm_VerticalJ1

The 37 most common of 41 parts.

Questions

How big is the OttolinkPCB PCB?

It measures 98 × 99.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the OttolinkPCB use?

41 parts, built around the XL4015E1, LM2596S-5.0 and XT60-M. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the OttolinkPCB KiCad files?

From the Jackhammer9/Ottolink repository on GitHub, at the commit this page was made from: the board is OttolinkPCB/OttolinkPCB.kicad_pcb and its schematic OttolinkPCB/OttolinkPCB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the OttolinkPCB design in my own project?

Its repository states no licence, so its author keeps all rights: ask Jackhammer9 before reusing the design.

Similar boards

  • 2 layers120 × 100 mmRoot, the printed circuit board in 3D

    Root

    GonzaCerv/noah-hardware

    This repo contains all the hardware description for the Noah project. Here lies 3D models, electronics PCB and Firmware software of the robot.

    127 parts28MIT
  • 2 layers99.8 × 81.8 mmPower pcb, the printed circuit board in 3D

    Power pcb

    Hexobot-SLSC/robot-power-pcb

    9 partsMIT
  • 2 layers99.9 × 99.9 mmSpider Robot, the printed circuit board in 3D

    Spider Robot

    duvohuu/Spider_Robot

    Mechatronics System Design

    62 parts
  • 4 layers149.5 × 113 mm1. PDU, the printed circuit board in 3D

    1. PDU

    SshgurkiratSingh/CCMS_PORTAL

    A full-stack smart streetlight fleet management system with real-time monitoring, remote control, and analytics.

    111 parts2
  • 2 layers63 × 64.5 mmFlight1, the printed circuit board in 3D

    Flight1

    aryan-asit/flight-controller

    This is a flight controller for model rocket.

    61 parts
  • 2 layers80 × 65 mmPami n20 V2, the printed circuit board in 3D

    Pami n20 V2

    Rami-Troudi/Electrique-Eurobot-IEEE-INSAT-2026

    Repo for my electrical work for the Eurobot competition

    35 parts1