Manufacturing and Test Results
The drumsticks required the most modification to allow for haptic feedback. The accelerometer mounts were 3D printed out of VeroClear RGD810. The drumsticks had their tips removed before two holes were drilled axially to accommodate the accelerometer mounts and pager motors.
The kick-drum required less modification. We found that the design of the GuitarHero pedal allowed for the potentiometer to be mounted on the underside of the pedal. However, this location was slightly too small for the potentiometer, so a small block of wood was placed under the end of the pedal to increase the space for the hardware. The 3.5 mm headphone jack was also removed, as it was deemed unhelpful for our project.
The completed VPS underwent preliminary testing as distinct modules: Visual interface and Leap motion, drumsticks with incorporated accelerometers and pager motors, and the kick pedal.
For proper operation, it is essential that the Leap Motion can accurately track the position of both sticks and for Unity to accurately render their position in the visual interface. Initial was done using pencils and unmodified sticks, and we found that the motion tracking and rendering was satisfactory. Once the modified sticks were available, the system was again tested to ensure that the wires and accelerometer did not interfere with the tracking. The only trouble was encountered when the Leap Motion initialized the stick objects incorrectly - we would occasionally find that directions could be switched, or one stick might not appear at all. Removing both sticks from the field of vision of the Leap sensor and bringing them back in slowly caused the Leap to initialize them properly.
To simulate actual drum playing, the pager motors need to be triggered when the user mimes a drum strike. Once the sticks were completed, experimentation was done to determine the acceleration threshold that best fit an intended drum strike. We also determined the optimum length and intensity of each motor burst. It is important to deliver a sharp buzz, but also ensure that we are not consuming excessive power. During testing, we found that occasionally the Arduino would become frozen during the motor burst, resulting in a constantly vibrating stick. The addition of pull-up resistors at the input pins of the accelerometers seemed to help some, but that did not fully solve the problem. This issue was ameliorated by the inclusion of the voltage follower setup for the pager motors. This leads to the conclusion that the Arduino can freeze if too much current is being pulled at once.
The kick pedal must output a single average velocity each time it is depressed. Testing was performed at various speeds to determine the maximum velocity achievable by the user. This value was used to map each output to the range 1 to 10, which was used by the unity environment. We did occasionally find that the kick pedal would output duplicate values, but the cause was never determined.
Once each module was determined to be functioning correctly, the entire device was connected and tested. The only physical connection that needed to be made was the kick drum Arduino to the computer running the Unity environment. Very little tinkering was required to get the device working - the only change was done in the Unity code. We found the need to revert back to a previous version as we found there was a strange bug in the in collision detection.
Overall, the VPS functioned as designed. The interface rollback, however, removed the volume functionality of the device.