A Kossel derivative to show off a new PID control framework and command system called the Bowler Communication System.

Similar projects worth following
We have developed a new system for high precision motor control. We have replaced stepper motors with DC motors and a new kind of encoder called a hall effect orientation encoder. The best part is we can get 4096 'tick' per revolution measurements and a controller that can drive the motor to within +-2 ticks.
Each axis is a small board holding the encoder chip, a 3 pin connector for the servo, and a ribbon cable carrying the SPI and servo signal, a small magnet and a continuous rotation servo.
The controller board has connectors for 8 axis of PID control, all of which can be coordinated in the kinematics engine. There are 3 heater/sensor pairs for up to 2 hot ends and a heated bed.
The control framework is a high speed protocol called Bowler. We can send packets and get a response back to Java in 4ms. Most of the complex features can now be handled at the high level. We also support a full configuration storage system, so the print configurations stay with the printer.

So here we have the first set of parts for the ServoStock, a derivative of the Rostock using Closed-Loop control, a whole new com architecture, Servos for drive and NO STEPPERS. Pictured is the first attempt of the single axis using the Vitamins from a Printrbot.

The system we developed over 4 years and have now applied to a 3d printer is an extensible, namespaced communication protocol. Think of it like a domain specific language over a generic serialized communication link. The protocol allows devices to report to the computer their capabilities, then the computer can generate packets based on that report. We have complete implementations in Java and C99. Clojure, Jython, Jruby and Matlab have been tested working with this library. There is a partial implementation in pure Ruby as well.

We have redesigned the entire control system from the ground up. From the get-go we started using magnet orientation encoders plus low cost continuous servos. The motherboard is a Pic32mx440f128h with each axis receiving a servo pulse and an SPI channel for the encoder. The motherboard uses a 7x2 ribbon cable to connect to each axis. Each axis has a small board with the encoder chip and the connector for the servo.

The control loop runs at 20 ms for the servo pulse calculation, interpolation and forward/inverse kinematics. The device identifies itself as having the PID control namespace, the kinematics namespace, and the 3d printer configuration namespace. Through the communication layer you can change kinematics models, change PID constants and store all the Slic3r/Cura configurations. The configurations are stored non-volatile in Flash and travel with the printer to be read at runtime. NO MORE CONFIG FILES!!

The firmware also has auto-config system. The servo dead band is measured at boot time. The end stops are measured using the encoder with no limit switches. I am thinking about doing a bed calibration as well, but that is future work.

a (new to you guys) bootloader that i developed for the DyIO controller. It is a serial bootloader that uses the same communication protocol as the printer or any other device for that matter. The bootloading interface is just another namespace that any device can implement. The toolchain for generating bootloader file is all written in Java and attaches to any Makefile build chain.

We have taken the idea of the Rostock and started from scratch using a full set of parametrics. A single file with measurements from the vitamins you are using is all that is needed to generate a whole new printer.

We have also made a library set for vitamins in OpenSCAD. This means we have special SCAD files that are only used to cut out voids for real vitamins. New ones can be added using the same model and committed back the the GIT. I have found that designing with this Vitamin Cutout system really speeds up development of our new printer. I can not wait to finish and try another design using that framework.

  • Free BowlerStudio class! (as a weekly google Hangout)

    Kevin Harrington01/13/2017 at 16:56 0 comments

    I am hoping to get a bunch of people up to speed with BowlerStudio so I am offering an introduction to BowlerStudio. This will be a set of classes where i will walk you through the process of building robots with BowlerStudio. I will be recording these sessions for anyone that comes later, but if you want to ask questions and get help you will need to attend the final class time. I have posted a when2meet to gather interest, and when a time is selected i will post back here.

    As for prerequisites, this is *not* an introduction to programming class, so the ability to read and write object oriented (or functional) code is a must. I will be instructing using Groovy (Java) in most of the classes for the sake of consistency. I will briefly introduce using Python, Clojure and creating a custom Domain Specific Language. We will cover the scripting system, the git-as-filesystem architecture, the kinematics framework, the CAD engine, the physics engine, Arduino code and Bowler Protocol integration, offline headless deployment all while exploring the BowlerStudio Integrated Development Environment for full-stack robotics.

  • BowlerStudio: why this has not made progress

    Kevin Harrington06/25/2015 at 01:37 0 comments

    So i have been busy at work building the UI system for this and a whole bunch of other robotics hardware i have been working with over the years. Introducing:


    Its the printer controller, cnc controller, kinematics engine, and now has image processing, a bunch of AI libraries, and a 3d CSG cad system similar to OpenScad, but java. It makes all this available to the user through a scripting platform based on Groovy and Jython.

    As for the ServoStock, it is not forgotten! we have been making progress on the servo control system in the NASA Sample Return Challenge robot, and with this years competition over, i can start to port back some of the fixes.

  • Peek-A-Bot

    Kevin Harrington06/19/2014 at 02:12 1 comment

    This the Peek-a-Bot, he is installed on Front street in Worcester MA, across from the City Hall. Paula Rudy made the puppet and I used the ServoStock frame on its side as a puppet holder. Those rotated free arms are helping keep it stiff under a lot of load. I think, however, i will need the third upper arm...

  • I resolved the tilt from the video

    Kevin Harrington05/19/2014 at 20:32 0 comments

    In the video you can see the task space axis tilt to one side as it moves. This was caused by low rigidity in the vertical arms. I added stiffness to them and made the bottom thicker. I also shrunk the pulley for the linear axis to increase the achievable task space resolution.

  • Extruder versioning and position control

    Kevin Harrington05/02/2014 at 17:48 0 comments

    The extruder had a few features the interfered with the free arms and needs the design tweak, printing will have to wait for that to be done. 

    In the mean time I found a long standing bug in how the centering value was calculated and applied the center calculation. It was being calculated as the middle of the 2 hysteresis bounds. This turned out to be ok, but it was being applied after the bounding values. This meant that the upper value was always high, and the lower was always low. I am now getting much faster settling times with lower I gains.

  • Printing the Extruder today!

    Kevin Harrington04/30/2014 at 15:31 1 comment

    We are printing out the ServoStruder with the hopes of making the first print today! The servostruder is neat because it used the knurling on the output shaft of a standard servo instead of a traditional hobbed rod. This means one of the major custom metal vitamins from 3d printers can be totally dropped. Also, because of the encoder running on the filament not the motor, we can detect stalls (filament jams and out of filament events), and pause a print. There are no complicated switches or line break sensors, just the servo and the encoder. 

    With luck we will have our first print by the end of today!

View all 6 project logs

Enjoy this project?



George I Fomitchev wrote 08/12/2016 at 12:16 point

really exciting idea ...

you can also unleash your framework with 2.1W and 3.5W diode lasers (

  Are you sure? yes | no

TTN wrote 04/05/2015 at 21:39 point

Any new developments?

  Are you sure? yes | no

Jasmine Brackett wrote 08/15/2014 at 19:37 point
Hello mad.hephaestus and Servo-Stock team, it looks like you've not updated the project for a while. Now is the time to add a few more details to your project to give it the best chance of going through to the next round of The Hackaday Prize.

By August 20th you must have the following on Hackaday Projects:
- A video. It should be less than 2 minutes long describing your project. Put it on YouTube (or Youku), and add a link to it on your project page. This is done by editing your project (edit link is at the top of your project page) and adding it as an "External Link"
- At least 4 Project Logs
- A system design document
- Links to code repositories, and remember to mention any licenses or permissions needed for your project. For example, if you are using software libraries you need to document that information.

You should also try to highlight how your project is 'Connected' and 'Open' in the details and video.

There are a couple of tutorial video's with more info here:

Good luck!

  Are you sure? yes | no

regiscruzbr wrote 06/27/2014 at 01:19 point
Finally somebody did it...

  Are you sure? yes | no

benroberts wrote 05/29/2014 at 05:07 point
this is very impressive work. I particularly like the extra strut you have added to the effector platform. I know it's not part of the drive/control project per se but it addresses one of the issues I have with delta printers having too much play at the effector. Can you show us the DC motors you're using ?

  Are you sure? yes | no

Kevin Harrington wrote 06/07/2014 at 14:48 point
The DC motors we are using are a continuous rotation servo. It uses the standard servo package, but is shipped from the factory as a velocity servo rather than a position servo. They are also called "360 servo" in china.

The links to the specific ones are in the BOM.

  Are you sure? yes | no

mbasecnc wrote 05/29/2014 at 02:50 point
Are you willing to share schematics and BOM?

  Are you sure? yes | no

Kevin Harrington wrote 06/07/2014 at 14:50 point
The project links on the side have both. The schematics are in Eagle and the BOM is a google doc.

  Are you sure? yes | no

ronald wrote 05/29/2014 at 02:30 point
Keep it up. Sometimes the only real way to progress is to knock down the foundations and start over.

  Are you sure? yes | no

mbasecnc wrote 05/28/2014 at 06:40 point
Nice work!
Could use your system for one of my 3D printers, are you willing to share more information?

  Are you sure? yes | no

Kevin Harrington wrote 05/28/2014 at 13:56 point
Sure, what do you need?

  Are you sure? yes | no

Lightning Phil wrote 05/27/2014 at 20:17 point
Great work

  Are you sure? yes | no

jeshua wrote 05/26/2014 at 20:14 point
Perfect!!! How how can I get a mobo and some servos?

  Are you sure? yes | no

Kevin Harrington wrote 05/28/2014 at 13:58 point
We are planning to have a Kickstarter up by August after we do robustness testing. I post here with updates, so keep an eye out!

  Are you sure? yes | no

matt venn wrote 05/26/2014 at 18:40 point
wow, great work everyone! Very impressed!

  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