Sixi 2

Open hardware, 3D printed, 6 axis robot arm

Similar projects worth following
If the robots take all the jobs, only the robot owners will have power.
In order to ensure democracy, the robots must be owned by the people.
Open source robots are a must.
The most important robot I can make is a helping hand.
I aim to make Marginally Clever Robots, Ltd. into the Prusa of robot arms.
We will make an arm so good it can build its siblings (aka 'eat your own dog food').

The technical goal is an arm with 800mm of each carrying a 2kg payload. (fast, accurate, strong: pick two).

Spin-off projects include:
- gearboxes
- automatic tool changers
- custom end tooling
- control software
- encoders

There are three levels of kit available now:
- just the non-printed parts
- all the parts, unassembeled
- fully assembeled

A kickstarter would have stretch goals for:
- common extra tools
- smart phone teaching pendant app
- neural network path planning

The vast majority of our updates happen on Instagram, Youtube, and the company blog.


Please have a look at our current software roadmap.  Sixi 2 firmware is contained inside the Makelangelo firmware.  

Circuit Benders

The current motherboard is an Arduino Mega with a custom PCB.  The PCB was designed in KiCAD.  KiCAD files - including the latest schematic and PCB layout - is in the Sixi 2 Github repository


We are still trying to build a process in the shop so that the STL files and BOM are always up to date with our current work.  In the mean time, have a read-only look at our Sixi 2 Fusion360 project.  You may be able to extract the BOM and STL files from there.


As opportunity arises we will be making videos showing assembly of each subcomponent.  Thus if you are equipped with the parts and tools you should be able to follow the video playlist and build it yourself.


Note that this project is still in development, and many of the things we build turn out to be dead ends.  You may find yourself pouring a lot of cash and time into dead ends that get cut from the final version.

Show thanks

If you'd prefer instead to fund our effort while you sit back and watch, join my patreon.  Of the two it's the more economical solution.

  • Cycloid Gearbox Fusion Tutorial

    Dan Royer01/08/2020 at 22:07 0 comments

    Announcement!, Thursday 2020-01-10 @ 15:00PDT (GMT-8)

  • Demo 1, 2019-12-12

    Dan Royer12/18/2019 at 19:35 0 comments
  • A Better Sixi Joystick

    Dan Royer10/29/2019 at 18:51 0 comments

    This has been in the works for a while now.

    and you can see more on Instagram:

    You can get the kit here now:

    For this project I made a handy PCB:

    It is available now:

  • Final tests before Maker Faire

    Dan Royer09/04/2019 at 00:40 0 comments

    The machine is operational.  

    I’m running tests over the next two weeks to find where the machine wears first. Twice already I found a part that needed an extra set screw to keep it locked tight.

    Meanwhile Jin is making good progress improving the gearboxes to be better than ever. They’re quieter, stronger, more durable, and less prone to slop.

    I wanted to avoid all the BS that happens when a rotation goes from 359 to 0 or vice versa, so all the joints in the machine are set to start at angle 180 and never allowed to turn more than 175 degrees. The cost is that some moves you or I find intuitive have become stupidly hard for the arm.  They can still be done but it takes finesse.

    I even picked up new t shirts with the company logo and people seem to want one, so I’ll be listing them real soon.

    Also ahead now that the design changes are slowing down I’m going to put up an order form for the non-printed parts and an order form for the unassembled kit (including printed bits).

  • New progress report

    Dan Royer08/25/2019 at 07:26 0 comments
  • New OSHPark PCBs arrived!

    Dan Royer07/16/2019 at 16:39 0 comments

    New OSHPark PCBs arrived

    With this we can finally finish the hardware preparation for shipping units, after which we can also get a final bill of materials and start to package DIY kits.  There will be two flavors:

    • DIY kits with all the non-printable parts.
    • DIY kits with everything, including the printed parts.

    Collision detection

    The software only lets each joint of the robot move within a safe range to prevent wire twisting or other potential damage.  That piece of code does not consider the angle of joint A in relation to the value of some other joint B.  So it was still possible to make the arm hit itself.

    This new collision detection code prevents each bone of the arm from colliding with other bones of the arm.  At present it is a crude collision detection system, using only the box around each joint.

    Also now that these boxes have been calculated, the center of each box is known.  the mass of each bone can be pulled from the Fusion360 model, and then a point-mass physics model can be created to simulate forces like gravity.  This gets us closer to dynamics like push-to-teach and telling the arm "please push on this item with a force of N newtons"


    Next we'll be assembling the new shoulder design with the PCBs that should allow us to unplug the umbilical from the arm and the control box.  I'm thinking Twitch stream?  Maybe just a Youtube Live, given the recent Amazon protests.  Choice of evil companies... hmm...

  • Record & Playback 3

    Dan Royer07/02/2019 at 19:05 0 comments

    I have recording and playback mostly working now.

    Firstly, I build a class to contain a recording.  Then I decoupled an input event like a button press from the action that should result.  instead of

    button push -> do thing

    it is now

    button push -> recording middleman -> do thing

    then if recording is on, button pushes are saved.  if playback is on, button pushes are ignored and instead the recorded value is used.

    The last part that still bugs me is changing tools.  As before, there is a list of tools obtained by using a ServiceLoader and I don't know what to do if, on playback, the ServiceLoader doesn't find the matching tools.  Oops!  I believe the easiest will be to run the SL once at the start and build a table of tools, then refer to them by index.  that means on file start we can check all files are in place first.  It would be extra clever if those tools had a URL so that they could be found by an automatic install system....but that's a tomorrow problem.

  • Record & Playback challenge

    Dan Royer06/30/2019 at 02:14 0 comments

    The good news is that I can play back and record robot movement and robot tool behavior.

    I do not yet have a way to recording adding and removing robots, or moving whole robots (base frame of reference).

    I have a more serious challenge dealing with GUI clicks that change the tool on the robot.

    In Java, as I understand it, the main render loop is in a thread and GUI click events are in another. 

    On GUI click , I use a ServiceLoader to enumerate classes derived from DHTool available for my robot, then setup an undoable event to change the tool on the robot.  This action could happen at any time, which makes recording the tool change events (in the render loop) as a stream unreliable.

    if I use the enumerator to create an array of possible tools and store them in the dhrobot then they have index numbers (easy to say "current tool=x" in the stream).  This add a problem that if a new tool is added i have to be careful to not change the old index numbers.  Seems unreliable - I can see future me changing the tool order on a whim and breaking other people's recordings.  On the plus side, it solves the reliability problem - a button click makes a *request to change tools*, and the tool change actually happens in the render loop immediately after the request is recorded/played back.

    Also i'm not sure how the undoable action system would work with a recording.  if the recording is played back, what does that do to the undoable sequence?  What if I play the same recording 50 times?

    The last option is to disable tool change completely during recording and playback, but I still need a way to set the tool once at the start of the recording. ...but if I can set it once in a recording I might as well let the user do it whenever they like.

  • Improved kinematics; record & play back needs your help!

    Dan Royer06/28/2019 at 00:31 0 comments

    A short demo of improved kinematics.  I built v1 following the few Youtube videos I could find and, sadly, they didn't cover every edge case.  After much searching I found the answer for all cases and now movement appears to be sane.

    Also added a gripper made just to hold a beer can.

    Decimating models

    Models exported from Fusion360 in STL format have millions of triangles, many of them completely hidden inside the robot.  They slow the loading time, the render FPS, and reduce the total number of arms that can be simulated at once.  The single biggest culprit are the threads on screws and nuts.  So here's a quick screencast of how I do a quick & dirty cleanup of my Fusion360 models.

    The original files were 102mb on disk.  The new files are 3.5mb.  The simulation loads a Sixi2 in about 2 seconds and now it just feels *snappy*.  Worth it!

    Recording & Playback

    Ok, this part is where I need advice and help.  The main loop of the application is driven by the screen refresh at 30fps.  Every time the screen is redrawn I also sample the input devices to move the arm. 

    I could record & playback the input directly if I thought the framerate would stay at 30fps with high fidelity.  The input recorded would only be good for moving the simulated arm; a post-processor would have to turn it into gcode and send it to the actual robot.  Recording input also breaks if the input configuration is ever changed.

    recording the post-process gcode is do-able.  Then I would have to make the post-processor work both ways.

  • Pre-orders open now

    Dan Royer05/23/2019 at 21:45 0 comments


    Here's our instagram demo of movement on all six axies.

    We'll update this post with the 2kg payload demo as soon as I finish editing footage.

    Buy now

    The store page is now open at

    Expect at least 8 weeks to produce the first units.

    Make your mark

    We have open tickets on Github.  If you complete one of these challeges we'd be happy to give you a letter of reference and put your name in the developer credits. 



    Especially interesting to us are grippers and use-case examples.  Pour a beer!  PIpette in a lab!  fold a shirt!  Cut Mr. Bond in half!

View all 18 project logs

Enjoy this project?




[this comment has been deleted]

Dan Royer wrote 04/30/2019 at 20:27 point

Try our Patreon!  I'll even put your name in our next video.

  Are you sure? yes | no

Simon Merrett wrote 04/05/2019 at 15:53 point

Also, I saw these affordable slew rings recently and thought they look like good fodder for joints:

They also have an eBay store!

  Are you sure? yes | no

Simon Merrett wrote 04/04/2019 at 21:37 point

Cycloidal gears look good. Would be good to see a deep dive video on those. Especially the curve calcs used in the CAD. 

  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