UBC Open Robotics Pianobot is a pair of robotic hands mounted to a rail system that allows it to play songs at an RCM 4 level. On the mechanical side, our main objectives were to analyze the physical components needed and model the full assembly. As one of the mechanical co-leads for Pianobot, I helped guide the Junior members of our team in our efforts to accomplish these goals.
The main design consists of a pair of eight-fingered hands that sit on a rail system in order to move in parallel to the keys. The hand movement was controlled by a timing belt system and the individual keypresses using linear actuators. To make it easier to work with our team members on the full assembly, one of our main objectives was to port all the older SolidWorks assemblies to OnShape. Since most of the older assemblies were not zipped files, we had to take some time and fix most of the mates to get a well-working model. We also added the new finger design to the model which would allow for the fingertips to not get caught on keys while playing arpeggios.
Actuation Force Python Script — To analyze the new finger design, I wrote a short Python script to calculate the actuation force at the tip of the finger based on the current dimension of the finger and the known force produced by the linear actuator. This script also allows for changes and the different dimensions or linear actuators so that they could be optimized in future designs.
Assembly Mates — Most of the mates in the old SolidWorks assembly were broken and some parts were lost so we all took some time in fixing the missing mates and pieces in order to get a fully functioning model.
Mentorship — Helped mentor junior members by teaching them more about how to model and mate parts in CAD. After learning to create their models, I showed them more resources on how to choose and specify parts for the physical prototypes. Due to COVID-19, we were unable to do most physical aspects of this project though.
Online Teamwork — As we were in the middle of a pandemic at this time, we really had to work hard on our communication skills. We found that it was more difficult to get a hold of people and to explain ideas due to the online setting. I always have felt that it is much easier to explain ideas with drawings or gestures, but without being face-to-face it is more difficult to do that. Due to these challenges, we had to work harder to find new ways to communicate better and I think these methods could help in future workplaces.
Documentation — When we first started on Pianobot, my co-lead and I found it quite difficult to find information on the old designs since all of the old members had left. There was very little documentation left for us and it was even difficult to find files at times. This showed me the importance of always documenting the work that you do, especially while working on a team. I admit, in first year I found documentation for courses tedious and unnecessary, but now I can see how useful it can be. I keep this in mind on my co-op terms as we are only there for a number of months and I want to make it as easy as possible for the next person who works on my project to be able to find what they need. Even in my own personal projects, I like to keep notes on some of the things I learn so that I'll be able to use those pieces in a future project if needed.
Python Experience — Using Python in a small way in the projects actually pushed me to use in a many more new ways after this project. Before this I had learned some C and C++ as well as some HTML/CSS/JavaScript, but no much Python. After working with Python for over a year now, I think that is is actually my strongest programming language now.
Mentorship — Using Python in a small way in this project actually pushed me to use it in many more new ways in a number of different projects afterwards. Before this, I had learned some C and C++ as well as some HTML/CSS/JavaScript, but no Python. After working with Python for over a year now, I think that it is actually my strongest programming language.