Close
0%
0%

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

Download

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

Download

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

Download

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

Download

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

Download

View all 47 files

  • Forearm casts almost done

    Valeriy Novytskyy3 days ago 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:

    https://github.com/01binary/drummingrobot/blob/master/src/code/ads1115.cpp

    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:

    https://www.gobilda.com/5202-series-yellow-jacket-planetary-gear-motor-188-1-ratio-30-rpm-3-3-5v-encoder/

    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:

    https://www.newark.com/mean-well/rsd-30g-5/dc-dc-converter-5v-6a/dp/44AC7344?CMP=e-email-sys-orderack-GLB

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

    https://power.sager.com/hrpg-1000-12-5357680.htm

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

    https://github.com/01binary/drummingrobot

    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.

  • All actuators working

    Valeriy Novytskyy12/21/2020 at 06:07 0 comments

    Metal brackets came in from the factory, so I got the whole thing assembled and moving.

  • Electronic layout

    Valeriy Novytskyy12/05/2020 at 05:46 0 comments

    This week I got all actuators to work for one arm, but some of the wood parts broke, so I am waiting for stainless steel brackets to arrive from the manufacturer. I will be able to film everything moving once I replace the weak prototype parts.

    Meanwhile I'm working on more electronic layout, like finding a place for solenoid and servo driver boards. I think I will put all the drivers in the chest area, then Raspberri Pi goes in the middle, and power supplies go in the stomach.

  • Ready to start casting

    Valeriy Novytskyy11/09/2020 at 17:35 0 comments

    The most time-consuming part of this project has been to get the arms cast. I spent this summer preparing a 3D printed arm model for making molds. After spending a month on sanding it so that it was perfectly smooth and making a mold, turned out it needed to be split into 4 pieces: 2 of them welded by a wax pen after casting out of wax (otherwise the mold would be impossible to make) and 2 of them welded by a welder after casting out of aluminum (otherwise it would be too large to fit in a kiln).

    Anyway, a friend helped me prototype and re-print the models so that they were split down two perpendicular axis into quarters, then I spent another month sanding and making molds, and then another month preparing wax positives. I just got done casting 3-4 batches of wax positives for investment casting, put sprues on most of them, and I am ready to start building investment shell layers this week, maybe casting next weekend.

  • Solenoid Bracket Re-design

    Valeriy Novytskyy11/04/2020 at 22:18 0 comments

    Almost ready to test the full arm with the solenoid on the drums. Had to visit the hardware store a few times to try different solutions for mounting the drum stick and the solenoid, and re-design the mounting bracket.

View all 29 project logs

Enjoy this project?

Share

Discussions

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