CM6 - Compliant 3D printed robotic arm

Cheap, safe, and compliant 6 - Axis 3d printed robotic arm based on Quasi direct drive BLDC drives.

Similar projects worth following
The goal of CM6 is to be a go-to robotic arm framework for people interested in robotics. CM6 uses 6 gimbal BLDC motors paired with small gear ratio gearboxes ( from 5:1 to 9:1), by doing that it is passively compliant and safe. Each Joint is using an S-Drive BLDC driver that is mounted on modular actuator designs for specific gimbal motors. Design can be changed easily by using different size aluminum extrusions or changing the gear ratio of modular gearboxes.

The total price of this first version is around 1000 dollars in raw materials. But I believe that the future version could be pushed to around 700-800 dollars.

The Problem

Today every engineer, maker, and tinkerer can get access to a decent 3D printer for less than 300$ and start creating. Many of those people that have 3D printers also want to play and experiment with robotic arms that are close to the size or performance of human arms. While industrial robotic arms are too expensive, the only alternative is DIY robotic arms that are in most cases not really easy to program or capable of doing useful tasks.

Also, the DIY arm that will be used at home or near other people needs to be safe. That can be hard if using large reduction gearboxes or building a robotic arm that weighs a lot.

The Solution

CM6 is a robotic arm that could fill that gap. It is safe, compliant, and most of all cheap. CM6 is a 3D printable COBOT robotic arm that uses QDD (Quasi direct drive actuators). QDD gives CM6 passive compliance which makes it behave like a human arm. 


Actuators of choice for CM6 unlike most DIY robotic arms are BLDC gimbal motors. Also, this robot arm uses small reduction gearboxes (from 5:1- 9:1). These two aspects are what make this arm different from other arms. The inherited high torque and low-speed operation of BLDC gimbal motors allow great responsiveness to external disturbances and accurate current measurement. Paired with a small reduction gearbox to increase the torque a bit but still keep those great aspects of BLDC are crucial to the operation of this arm.

All actuators of this robot are 3d printed planetary gearboxes with single-stage reduction. They are designed to be easy to print, compact and most of all modular. With just a few changes in design, you can get a smaller / larger reduction or even add another reduction stage.

BLDC drivers

BLDC drivers are custom-made and are called S-Drive (Small drive). In the picture above you can see the evolution of the design, with the right one being the newest one. The goal of these drivers was to use the smallest amount of components possible and to keep the price low. 

Key parts of the driver are: 

  • L6234 Three-phase motor driver
  • AS5040 10 bit encoder
  • stm32f103c ARM M3 microcontroller

More info on the driver: Hackaday page! Github page with firmware or DOCS.

Lightweight mechanical design 

The whole robot (including base holders) weighs less than 5kg. This is achieved by using aluminum profiles to connect parts and using low infill PETG 3d printed parts.

Easy to use software

Another important part of this project was to have software that makes programing robots "easy". GUI software was written in python and heavily relies on Petar Corke's robotic toolbox for python! It was tested on Linux virtual machine, laptop running Linux, and raspberry pi 4!

The software offers real-time monitoring of robots:

  • Motor position, current, speed, temperature
  • End effector position
  • Operating modes, errors...

Available modes at this moment are:

  • Individual motor jogging 
  • freehand teach 
  • move from point to point 

Each of these modes of movement can be recorded and replayed!

  • This is an image of Teach menu. Here you can program your robot by writing code in "gray window" or by freehand movements.
  • This is Move menu of the GUI. It allows you to jog individual motors and in near future jog robot by xyz.



  • Weight: 5kg
  • Reach: 
  • repeatability: 
  • Max load:
  • Voltage:
  • Max motor current:
  • Power supply power: 

  • 7 × Radial Ball bearing 35x47x7
  • 3 × Radial Ball bearing 50x67x7
  • 4 × Radial Ball bearing 25x32x4
  • 4 × Radial Ball bearing 3x8x4
  • 1 × Thrust Ball Bearing 50x70x14

View all 29 components

  • Load test video!

    Petar Crnjak04/17/2021 at 15:52 0 comments

  • HIGH speed movement

    Petar Crnjak04/10/2021 at 15:03 0 comments

    In this video robot is moving from point to point with acceleration and deceleration. This makes it start and stop smoothly without jerky motion.

  • Video of motor jogging!

    Petar Crnjak03/25/2021 at 16:01 0 comments

  • Kinematic diagram of the robot and Denavit-Hartenberg parameters

    Petar Crnjak03/12/2021 at 18:01 0 comments

    So this is a kinematic diagram of the CM6 robotic arm. you can see that robot has a spherical wrist since axes Z5, Z4, and Z3 always intersect. 

    And here is DH table!

    I also always like to have written what does every parameter mean since I forget every time so here they are! :D

    Link offset = distance Zi-1 from Oi-1 to the intersection with Xi.

    Link Length = Distance from Oi-1 and Oi measured along Xi

    θ THETA = Rotation around Zi-1 to get Xi-1 to match Xi

    α ALPHA = Rotation around Xi to get Zi-1 to match Zi (We are rotating frame Oi-1 around Xi)

  • First video of CM6 in action!

    Petar Crnjak03/07/2021 at 12:06 5 comments

    First video of CM6 in action! Here you can see joint 1 being used as master and joint 2 as a slave (joint 1 is disabled, so it is really easy to move it). Atm, I only wired up the first 3 joints, and the software I wrote is configured for 3 DOF arm so there is a lot of work there. I tested multiple control techniques and one in this video works best and smoothest. In the future, I will show you other techniques I used but they did not perform as well as this one.

  • Total assembly!

    Petar Crnjak02/26/2021 at 19:05 0 comments

    I finally assembled the arm! It is looking really promising but everything will be revealed when I start some hardcore testing! Here are some pictures :D

  • Assembled base (Joint 1 and 2)

    Petar Crnjak02/25/2021 at 16:25 0 comments

    Assembled the last parts of the robot. Now the only thing left is to put it all together and start testing and playing around with it. Joint 1 these pictures is using 8:1 planetary gear reduction and joint 2 is also using 8:1 planetary reduction.

  • Upper arm + forearm

    Petar Crnjak02/24/2021 at 11:18 0 comments

    So this is assembled forearm and upper arm. So upper arm is using aluminum extrusion to connect joint 3 with joint 4. By using aluminum extrusion we can lengthen and shorten the arm and change the reduction ratio of joint 3 by changing a few parts. The length of extrusion in this picture is 200mm. Gear reduction of joint3 is 8:1 planetary gear ratio and then 32:28 belt reduction. The total reduction of joint3 is 9.14285:1.

  • Forearm assembled

    Petar Crnjak02/23/2021 at 16:36 0 comments

    So this is a complete forearm assembly. It is still looking pretty clean because there are no wires but once it is wired up wires will be visible. 

    Joint 6 is 5:1 planetary reducer. Joint 5 is plantery 6:1 and join 4 is 6.5: 1 bevel gear + HTD M5 belt. 

    as you can see here joint 5 is using a 2:1 bevel gear reduction and after that 3:1 belt reduction. Total reduction is then 6:1.

  • Gallery of robot renders

    Petar Crnjak02/22/2021 at 15:54 0 comments

View all 10 project logs

Enjoy this project?



Petar Crnjak wrote 04/10/2021 at 20:11 point

It could lift 1.5Kg but its precision suffers then. Since it is using BLDC gimbals and low gear ratio gearboxes it acts differently when under load. I will make a more detailed video about load capability and repetability.

  Are you sure? yes | no

ParadoxRobotics wrote 04/10/2021 at 16:39 point

What is the rated torque and the max payload of the arm ?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates