Drumming robot

MIDI drum machine to complement live electronic music

Similar projects worth following
Robotic drummer for a concept electronic metal band.

For this project my goal is to learn ::ROS, create parts that look organic by using Generative Design functionality in Autodesk Inventor, get experience with modern servos and linear actuators, and finally build a robotic drummer for my neurometal band. Also see my exoskeleton and cyber guitar.

The files are available on GitHub.

ipt - 1.34 MB - 05/22/2020 at 17:11


ipt - 1.12 MB - 05/22/2020 at 17:11


ipt - 1.02 MB - 05/22/2020 at 17:11


ipt - 215.00 kB - 05/22/2020 at 17:11


ipt - 222.00 kB - 05/22/2020 at 17:11


View all 47 files

  • First half of upper arms cast

    Valeriy Novytskyy06/08/2021 at 05:43 0 comments

    Last week I finished casting the first half of upper arm bones, and this week I am starting on second half. I might be done by the end of June with any luck, assuming I have to re-cast some parts a few times due to mistakes.

    Picture half-way through, with two empty ceramic shells that weren't cast yet, and two metal parts that were cast the day before from identical shells.

  • Casting upper arms

    Valeriy Novytskyy06/03/2021 at 05:25 0 comments

    This week I am casting the first half of upper arm bones. These are split in quarters due to very complex organic geometry (basically they have a hole through them where the pistons go), so that they could be removed from a rubber mold without breaking them. Here are some pictures after first two quarters of wax casts were welded together last November to create a complete half (still in wax, with a wax pen), dipped in slurry and coated in sand. After drying, they were bunt out in a kiln overnight.

  • Face re-design

    Valeriy Novytskyy05/26/2021 at 01:24 0 comments

    Working on face re-design to match my early concept art more closely. Doing it directly in CAD turned out to be too challenging because I would need to have advanced drafting skills to draw the model correctly from multiple views before even starting the CAD program, so I will try sculpting and 3D scanning this time.

  • Finished casting forearms

    Valeriy Novytskyy05/17/2021 at 02:53 0 comments

    Last week I cast remaining forearm pieces in Ctrl^H foundry, and moving onto upper arm parts. Casting is high-priority for this project, so I will go back to cut off sprues, weld the halves together, polish, and chrome after this.

  • Forearm casts almost done

    Valeriy Novytskyy05/06/2021 at 05:43 0 comments

    Past few weeks I cast forearm parts in halves - just need another batch of the other half before I can get started on casting the upper arm.

    I cut off the sprues and started filing the older parts, and also drilled some holes in the oldest part in the right. The quality is decent, but not perfect: it's hard to achieve a completely perfect surface with larger parts. I will likely end up filling imperfections with a metal filler which will create some gray spots and then just chrome all of them. That way they will be metal and chromed, so they will fit with the drum set better.

  • Casting underway

    Valeriy Novytskyy04/29/2021 at 05:10 0 comments

    Preparing more parts for casting this week. Pictured here are new wax positives with sprues added, and a metal copy cast during the last cycle.

  • Encoders Working

    Valeriy Novytskyy04/15/2021 at 20:19 0 comments

    I finally got chained ADS1115 encoders working to read arm bone positions. It was really confusing because the manual lists configuration setting bit offsets in low-endian, but the chip then accepts the resulting bytes in high-endian (reverse) order. Code here:

    The breakthrough came after I took the Raspberry Pi with me hiking and stayed at a countryside hostel for the night, debugging into late hours

  • First casts of the year!

    Valeriy Novytskyy04/15/2021 at 05:52 0 comments

    Last year I completed four-part molds for the robot arms, cast some positives out of wax, sprued them up, and dipped them into slurry to create ceramic shells. This year I steamed wax out of the shells, burned them out in a kiln, and cast the first few parts.

    Like many other large parts I worked on, I am having to cast these in halves so I can weld them later and polish off the welds. The two main limiting factors are my vacuum oven and kiln (each $2000, about the most I could afford) since their inside dimensions cannot fit large parts.

  • Re-working the shoulder

    Valeriy Novytskyy02/01/2021 at 01:52 0 comments

    Last week I made a decision to use a new shoulder motor, so I had to re-design the shoulder to put the motor sideways:

    This week I added source code to read a hollow shaft potentiometer while rotating the motor so that I could stop using an inaccurate metric of PWM "time" to guess the position of the arm, and the performance has been less than acceptable. I already spent two weeks looking for an absolute encoder to read servo positions and this one was the best I could find:

    So now, it looks like I'm forced by build my own encoders. All others are either giant and bulky, or have really difficult legacy programming interface.

    I settled on AS5045, so I will have to design my own board for this chip in Eagle Cad (after I learn Eagle Cad) and manufacture my own housing that's really compact and easy to fit anywhere.

  • New rotation motor & source on GitHub

    Valeriy Novytskyy01/26/2021 at 05:59 0 comments

    Over the past few weeks I found another, cheaper servo that's still strong enough to rotate the arm:

    It has a built-in encoder, 100N of force, and basically works the same in this particular application, except that it's $40 rather than $1300. I really thought the Dynamixel servo would be easier to use and work best for this application, but it ended up being an overkill. I will save that when it comes time to work on walking machines, and perfect response & feedback times really matter.

    A few other changes - I got a 5V power supply for Raspberri Pi and connected it with a 5-terminal-to-USB-C cable:

    I also ordered a 1000W power supply that should have enough juice to power the whole robot:

    ...and finally, I put all the source code I have so far on GitHub along side the 3D parts.

    If you haven't tried the new "sparse checkout" future in git (requires latest version) - this lets you track changes and pull only a portion of the whole repository. I built git from source on Raspberri Pi to get the new feature, and it works great. I checked out only the C++ source for the robot and left the large 3D part files on the machine I use for CAD.

    In the source, I recently implemented a system that loads joint controllers from Robot Operating System launch parameters (basically a block of YAML inside of XML launch file) and it supports all of the actuators I worked with so far.

    It creates each controller dynamically from a simple dependency injection container by type name, and supports full paths (like robot/arm1/forearm/).

    This is a shot of it running with everything except the arm rotation servo disabled, because I was testing out that new servo. If in the future I substitute the servo with another one that uses serial protocol I just have to code the new servo and specify a different type name for the "shoulder" actuator to load that new type. The interface is the same for all servos, regardless of how they are controlled and how they track their current position.

    For simple PWM servos like those linear actuators, I am going to need to code a feedback system by using hollow shaft potentiometers all coming into the same DAC chip.

View all 33 project logs

Enjoy this project?



Josh Cole wrote 06/19/2020 at 03:19 point

Hello! This is such a cool project, thank you for sharing your updates. The organic structured prototype parts look sooo amazing. Can't wait to see it all come together.

  Are you sure? yes | no

Valeriy Novytskyy wrote 06/19/2020 at 07:16 point

Thank you Josh!

  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