From the beginning of 2019 to mid 2020, I was involved with the UBC Open Robotics student design team, specifically working on the PianoBot project. The goal of this project was to create a robot that could be given any piece of piano sheet music, and play that piece back on a full scale piano.

This project is still being worked on by some members of UBC Open Robotics, but on this site, I will only show images and videos of aspects of the robot that I had a part in developing.

Key elements of our robot

Timing belt driven hands

Although we could have designed our robot to have as many fingers as there are keys on the piano, we decided to make PianoBot closer resemble a human, and gave it two hands which instead moved along the keyboard.

We used two aluminum extrusions that extended the length of the piano keyboard to both define the position of the hands relative to the keyboard, and also support the weight of the hands using roller wheels.

To move the hands along the keyboard, we used a timing belt drive, with one belt and motor being used for each hand. As a proof of concept, our initial design used DC motors, and we planned to use optical encoders to control hand position more precisely. Towards the end of my time on the team, we were beginning to make the switch to a rack and pinion drive (to limit the problem of vibrations we were experiencing) and were switching to stepper motors to improve the accuracy of our hands.

Solenoid actuated fingers

We went through many different iterations for the design of our robot's fingers. The main design challenges we faced were that we required our fingers to be slender, fast, and able to handle the impact of being pressed against a key quickly.

To resolve all this, we opted to use solenoids, and our design involved a linkage mechanism to convert the backwards linear motion of the solenoids into a downwards motion of the finger at the key.

Electrical and Software

Control of our robot was handled using software written in C++ for an Arduino Mega Microcontroller. Electronics used in this project included a solenoid turn on circuit featuring flyback diode protection.

As mentioned above, I am no longer working on this project, but to learn more about what PianoBot and UBC Open Robotics have acheived, please check out their site over here.