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 features of the driver are: 

  • L6234 Three-phase motor driver
  • AS5040 10 bit encoder
  • stm32f103c ARM M3 microcontroller
  • global low side current sensing
  • UART and RS485 comms

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 the near future jog robot by XYZ.



  • Weight: 5kg
  • Reach: 
  • repeatability: +- 0.5mm (Needs visual servoing like human arms to be really precise)
  • Max load: 3kg (limited reach)
  • Voltage: 24V 
  • Max motor current: 5A (limited by the motor driver)
  • Power supply power: recommended 24V/10A 


Current BOM for CM6.

sheet - 10.83 kB - 08/31/2021 at 18:13


Simplified assembly of this robot arm made in Solidworks.

x-zip-compressed - 9.21 MB - 06/29/2021 at 18:48


All step files for this robot.

x-zip-compressed - 4.78 MB - 06/29/2021 at 18:48


  • 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

View all 11 project logs

View all instructions

Enjoy this project?



Nathann wrote 7 days ago point


Thanks for this awesome project.

I'm really interested in the BLDC drive. Would you happen to have the price it cost you to build one and the max torque + max speed (a graph would be even betterwith the relation between torque and speed) (i roughly estimated 10-30N/m with an actuator costing 120-150$)

  Are you sure? yes | no

Petar Crnjak wrote 6 days ago point

Hey there are 3 different bldc motors used in this robot arm but using same driver. Driver is rated around 100W. It is hard to estimate cost since the chip crisis but when i was building them i was able to make them (with smt assembly) for about 8-10 euros.

  Are you sure? yes | no

Maximilian Schommer wrote 10/10/2021 at 00:52 point

This is great! I've had some problems in the past using 3D printed gears in high-torque applications. How are yours holding up over time? Do you think it might be worth making a configuration using machined delrin or metal gears?

  Are you sure? yes | no

Petar Crnjak wrote 7 days ago point

I preload all the gears and that makes them worn out quicker than usual. It would definitely be better to use machined gears. Hell, it would be better to make a whole arm out of metal :D hahaha

  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