Skip to the content

Project ongoing · Robotics

Robotic

We build a robotic arm, from the joint motors all the way to the hand.

the reducer ratio
40:1
the reach
520 mm
the design load
2 kg
the elbow torque, estimated
13.9 N·m

For people who come from robotics and mechatronics engineering, computer science

Take part in Robotic

The arm

A.R.M. is an arm with three degrees of freedom: a base that turns around the vertical axis, a shoulder and an elbow. The upper arm and forearm are 260 mm long each, so the tip reaches 520 mm from the shoulder. The goal is to move 2 kg.

Every joint follows the same layout: a brushless drone motor, a 40 to 1 cycloidal reducer, a magnetic encoder and a driver that controls the current. Precise actuators on the market cost a lot: we build our own, and that way we understand every part.

The measurements
Degrees of freedom3base, shoulder, elbow
Upper arm260 mmfrom the shoulder to the elbow
Forearm260 mmfrom the elbow to the tip
Reach520 mm
Design load2 kgat the tip
Base rotationfrom −180° to +180°
Shoulder rotationfrom 0° to 90°
Elbow rotationfrom −90° to +90°
MotorsTarot 4008 and 4114the 4114, bigger, on the shoulder
Structure3D-printed PAHT-CFhollow profiles of 20 × 20 mm, 2.5 mm wall

The cycloidal reducer

A brushless motor spins fast but has little torque. The reducer does the opposite: it slows things down 40 times and multiplies the force, in a disc 60 mm wide.

At the centre there is a cam, offset half a millimetre from the axis. As it turns, it makes two discs with 39 lobes oscillate inside a ring gear with 40 teeth. The discs do not rotate, because eight fixed pins pass through their holes. It is the ring gear that advances, one tooth at every turn of the cam: 40 turns of the motor for one turn of the elbow.

The two discs work 180 degrees apart, so the forces balance out. Many lobes touch the teeth at the same time: this is why a cycloidal reducer has very little backlash and handles shocks well.

From the elbow CAD
Ring gear teeth402 mm semicircles on a 52 mm circle
Disc lobes39diameter from 49 to 51 mm
Eccentricity0.5 mm
Discs2, 5 mm thickat 180 degrees
Disc holes8 of 7.08 mmwith 2 bearings each
Pins3 mm in diameterthe play in the hole is 1 mm, double the eccentricity
Bearings372 of 52 mm, 2 of 24, 1 of 18, 32 of 7
Joint size60 × 74 mmdiameter by length
N = 40       ring gear teeth
R = 26 mm    radius of the teeth circle
r = 1 mm     radius of the teeth
e = 0.5 mm   eccentricity

ψ(t) = atan2( sin((1 − N)·t), R/(e·N) − cos((1 − N)·t) )
x(t) = R·cos t − r·cos(t + ψ) − e·cos(N·t)
y(t) = −R·sin t + r·sin(t + ψ) + e·sin(N·t)        with t from 0 to 2π
The curve that draws the 39 lobes. On the team's CAD the maximum deviation from this formula is 0.014 mm.

How much force is needed

With 2 kg at the tip and the arm extended, the weight acts as a lever. The further a joint is from the tip, the bigger the moment its motor must withstand becomes: 5.2 N·m at the elbow, 11.4 N·m at the shoulder.

The available torque is the motor's torque multiplied by 40 and by the reducer's efficiency, estimated at 85%. At the elbow there is margin for 2.7 times the load, at the shoulder for 1.3: this is why the shoulder has the bigger motor.

  1. Elbow 5.2 N·m
  2. Shoulder 11.4 N·m
The moment along the arm, with 2 kg at the tip. Design estimates, March 2026, calculated from the mass of the parts: not yet measured on the arm.
The numbers in the chart
Distance from the tip (mm)Moment (N·m)
00
651,28
1302,55
1953,88
2605,2
3256,71
3908,22
4559,8
52011,39
The torque that is needed and the torque that is available. The solid area is the moment with 2 kg at the tip, the outline is the torque coming out of the reducer.
The numbers in the chart
JointTorque
Elbow (Tarot 4008)5,2 su 13,9 N·m
Shoulder (Tarot 4114)11,4 su 15 N·m

The control

The control is layered, each layer faster than the one above it. The innermost one regulates the current in the motor, that is the torque: it is field-oriented control, FOC, and it runs inside the driver. Above it are the velocity loop and the position loop.

The rule is to keep every loop 5 to 10 times slower than the one below it. In the Matlab design, the current loop has a bandwidth of 3 kHz, the velocity loop 50 Hz.

Higher up, a Teensy 4.1 computes the inverse kinematics 200 times a second: from the desired position of the tip it works out the base, shoulder and elbow angles, with a closed-form formula, without iterations. An ESP32 receives the commands over Wi-Fi.

  • 01

    Encoder

    AS5048A magnetic, 14-bit: 16,384 steps per turn. It reads a magnet on the shaft, at a distance of one millimetre.

  • 02

    Driver

    ODESC 3.6, two motors per board, open-source ODrive firmware. It runs the FOC and the current limits.

  • 03

    Teensy 4.1

    600 MHz processor: inverse kinematics at 200 Hz, trajectories, workspace limits. It talks to the drivers over CAN.

  • 04

    ESP32-S3

    The supervisor: commands over Wi-Fi, data logging, connection to the Teensy at 3 Mbaud.

  1. Peak of 16.1% above the setpoint after 0.167 ms
  2. Within 2% of the setpoint after 0.30 ms
The current loop, step response. Simulation with the gains designed in Matlab for the Tarot 4008: Kp 0.181 and Ki 4038, phase margin 60 degrees.
The numbers in the chart
Time (ms)Current relative to setpoint
00
0,0250,324
0,050,616
0,0750,849
0,11,012
0,1251,11
0,151,154
0,1671,161
0,21,141
0,251,075
0,31,018
0,350,989
0,40,983
0,450,988
0,50,995
0,61,002
0,81
11
  1. Peak of 27.6% above the setpoint after 10 ms
  2. Within 2% of the setpoint after 30.8 ms
The velocity loop, step response. Kp 0.133 and Ki 29.4, phase margin 55 degrees. The peak is above the 15% set as the target: it still needs to be tuned on the real motor.
The numbers in the chart
Time (ms)Velocity relative to setpoint
00
10,25
20,481
30,686
40,859
51
61,109
81,24
9,991,276
121,25
151,156
201,012
250,964
300,976
350,997
401,005
501,001
701

Guiding it by hand

An arm that works alongside people must also let itself be guided. In simulation the elbow estimates the torque coming from outside, without a force sensor, only from current and movement. Then it changes behaviour: it follows the trajectory, yields when someone pushes it, learns the new position and holds it.

In the test the elbow rises from 0 to 45 degrees in 2 seconds, with a maximum error of one hundredth of a degree. Then a person pushes it up to 15 N·m: the arm yields up to 157 degrees, and when the hand lets go it learns the position at 101 degrees. It holds it with 4.33 N·m.

At 13 seconds a knock shifts it by 25 degrees: in 1.3 seconds it is back in place, within half a degree. The simulation uses the model from the first phase of the project, with a 30 to 1 reducer and two motors on the joint.

  1. Follows the trajectory from 0 to 45 degrees in 2 seconds
  2. Yields to the push the person pushes up to 15 N·m
  3. Learns the position 101 degrees
  4. Holds it 4.33 N·m, 3.31 A per motor
  5. A knock returns to within half a degree in 1.3 seconds
The elbow angle over 16 seconds of testing. Simulation of the joint with the control and the interaction with a person, May 2026.
The numbers in the chart
Time (s)Angle (°)Reference (°)
000
0,54,654,66
122,522,5
1,540,3540,34
245,0145
2,54545
34545
3,54545
475,1645
4,5128,0245
5155,0945
5,5152,9145
6138,545
6,5128,1445
7120,7445
7,5113,6545
897,4197,42
8,5100,98100,99
9100,98100,99
9,5100,98100,99
10100,98100,99
10,5100,98100,99
11100,99100,99
11,5100,99100,99
12100,99100,99
12,5100,99100,99
13100,99100,99
13,575,38100,99
1491,391,29
14,5101100,99
15101100,99
15,5100,99100,99
15,99100,99100,99
The push from the person and the estimate from the robot. The observer estimates the push with a bandwidth of 5 Hz. The biggest error, 3.1 N·m, happens when the push rises suddenly.
The numbers in the chart
Time (s)Push (N·m)Estimate (N·m)
300
3,200
3,400
3,60,4-0,03
3,811,538,58
414,9614,58
4,21514,72
4,41514,72
4,613,9514,02
4,811,8511,94
59,759,84
5,27,657,75
5,45,556,18
5,644,31
5,844,27
644,27
6,244,27
6,444,27
6,644,27
6,844,27
73,994,27
7,23,894,2
7,43,073,58
7,60,931,54
7,80,110,45
800,21
8,20-0,27
8,40-0,04
8,600,01
8,800
90-0,01

The actuator model

Before building, the team wrote the complete mathematical model of the actuator: the electrical part, the magnetic one, the mechanical one, the transmission and the temperature. There are about 90 parameters, 55 of the first order and 35 of the second.

The test plan measures the parameters that matter most first: resistance, inductance, torque constant, inertia, friction. The others are added only if needed. It is about 16 hours of testing, with less than 200 euros of instruments.

The trajectories are fifth-degree polynomials, with minimum jerk: the arm starts from any velocity and comes to a stop, without jolts.

τ = (t − t0) / T
q(τ) = c0 + c1·τ + c2·τ² + c3·τ³ + c4·τ⁴ + c5·τ⁵

c0 = q0        c1 = v0·T        c2 = a0·T²/2
Δq = qf − c0 − c1 − c2        Δv = −c1 − 2·c2        Δa = −2·c2
c3 = 10·Δq − 4·Δv + 0.5·Δa
c4 = −15·Δq + 7·Δv − Δa
c5 = 6·Δq − 3·Δv + 0.5·Δa
The trajectory generator: q0, v0 and a0 are the starting position, velocity and acceleration, qf the endpoint, T the duration.

The numbers on this page come from the design and the simulations. Measurements on the real motors are the next step.

Where we are

  1. First phaseWe wrote the complete mathematical model of the actuator, with about 90 parameters.
  2. April 2026We presented the first 3D model of the arm, with a five-fingered hand.
  3. May 2026In the CAD the elbow joint is ready, second version: Tarot 4008 motor, 40 to 1 cycloidal reducer, magnetic encoder. In simulation the elbow control can be guided by hand.
  4. Next stepTwo humanoid arms that carry out complex tasks on their own and work alongside people.

Photos

The presentation of A.R.M. on stage at Palazzo della Borsa
Palazzo della Borsa, April 2026

Sources

  • Mathematical Modeling and Parameter Reference, version 1.0, January 2026.
  • Hardware Characterization, version 1.0, January 2026.
  • Analysis of the 3-degree-of-freedom arm, revision 3, March 2026.
  • Guide to the FOC parameters and measurement procedures for the Tarot 4008, April 2026.
  • Gain design in Matlab and elbow simulation in Python, May 2026.
  • CAD of the elbow joint, version 2, 16 May 2026.
  • Presentation at the Deep-Tech Showcase, Palazzo della Borsa, 21 April 2026.

Do you want to work on it?

You do not need experience and you do not need a CV. Write to us: we invite you to the next meeting, where you meet the team.

Take part in Robotic All the projects