Deafblind Robodrummer

Deafblind Robodrummer has no eyes and no ears, all he got is his sense of touch and rhythm. Cluelessly he scans the environment with pegs in his hands, that he uses as drumsticks, looking for objects to drum on.

When he feels the presence of drum-able objects close to him, he plays a beat. It’s those moments that bring a glimpse of joy to his Land of Silence and Darkness.

Description
Deafblind Robodrummer (DBRD) is equipped with a torso, to which two arms and a head are attached. The arms can turn on the shoulders and the wrist is able to move vertically. This allows DBRD to turn towards a drum and beat it. As there are no further sensors or input devices, the robot is dependant on sensing his environments through the servo motors.

After initialisation, DBRD begins to look for drum-able objects, by moving his arms as far out as possible and lowering the sticks by moving the wrists. If he feels the resistance of an object, he remembers the position of the wrist at which it was felt, moves the wrist upward and turns the shoulder slightly, continuing the probing procedure. He continues until the two arms meet in the middle and the entire environment has been scanned.

When all measurements have been analysed, DBRD has internalised the positions of the possible drums for both left and right arms. He now can use as much objects as are around him to play his beats.


Issues Encountered

DBRD continues playing for a predefined amount of time. Originally, the idea was to make him go on for as long as there are objects to drum on (objects might move away during drumming or be removed maliciously). However, when hitting a drum, thereby executing a fast down- and upwards motion with the wrist, the forces acting on the wrist are as high when an object has been hit as they are when the object is missed. This is because in both cases the speed of the wrist drops to zero instantaneously. DBRD therefore is unable to tell if a hit was successful or not.

The lack of sensitivity in the servo motors was a general problem in the process. As visible in the video, DBRD has to execute a lot of force, almost lifting himself up in order to detect an object. A threshold defines at which point the torque applied to the motor represents an object. If it is chosen too high, the robot ignores the object and might fall, if it is too low, too many false positives are registered due to normal fluctuations in torque when the motors are moving.

The speed and step size at which DBRD explores his environment have been chosen in order to minimise false positives, while at the same time keeping the duration of the scanning procedure to a bearable level.With the current setting, small objects are missed and objects too close to each other would not be recognised separately. Reducing the size of the steps the robot arms move horizontally would make it possible to also detect smaller objects. A faster vertical movement however proved unsuccessful, as the forces on the motor in normal motion become too strong.

When developing the software, some minor issues have come up, mainly due to conflicts arising from the parallel exploration of the environment with both arms. This was solved by encapsulating the scanning process in separate classes and instantiating them for both arms individually.

How to continue

An interesting continuation of the project, would be to add some mobility to the robot, make him able to move around and gather objects to use as a drum set. At the moment DBRD relies on suitable objects being placed in his surrounding. He is also not able to distinguish rigid objects, that make a sound, from flexible ones, that are less interesting to drum on. It might be possible to improve the algorithm for detection to make this differentiation. However, it could be necessary to add a force resistant sensor to the hands of the robot, but this would be outside the interest of this project, which looks at the possibility of using only the servos for robot localisation and orientation.

Code
The main code is in the file DrummerBoy.u, which also creates an instance of the main class. The robot automatically resets and after calling the function start() begins the scanning procedure. The class DrummerBoy creates two instances of the class DrumSet, one for each arm. All the functions for scanning and detecting objects are within the class DrumSet. For each detected object, an instance of the class Drum is called. The class Drum is used to store the horizontal and vertical position of the drums. Below is a diagram illustrating the classes and their processes.

schema

Download Source Code

References

BDRD is by far not the first percussionist robot, some of the ones around even do somersaults. From the German robocross machine comes StickyBoy. The four-armed two-legged metal robo drummer, runs on compressed air and can be programmed via MIDI.

A particularly witty one is the Yellow Drum Machine by Frits Lyneborg. With its belt tracks it looks more like a digger than a robot, but they enable it to move around and look for objects to drum on. If it finds interesting sounding objects, it records the sound and composes a rhythm with the samples.

In contrast to BDRD however, the Yellow Drum Machine uses ultrasonic sensors to locate objects. Most current robots use ultrasound, cameras or laser to orient themselves, at the moment there are a few who rely solely on touch. A recent paper titled Biomimetic vibrissal sensing for robots examines the use of whiskers as an additional sense for robot orientation. At the time of writing however, BDRD does not have many deafblind colleagues.

Credits
This project was realised as part of the course Creative Robotics at Goldsmiths, lead by Patrick Tresset. The robot was built in collaboration with Thibault Lelievre, Thomas Tanay and Dean Spiridonov.
Mastodon