Trossen Dynamixel High Thread Banner

Project Information

Interactive Robot DJ

Synopsis
A set of TWO robot arms that control DJ equipment. The heads of the arms are fitted with RGB cameras so that they can see. The arms are 6 dof, plus grippers.
Resources
Created by HyperCube
Not tracked
5-10 pounds
5 x 5 x 24"
Indefinite/Solar/Cold Fusion
C++, MATLAB
2X Usb2dynamixel
Powersource: Other - N/A

_
The MX servos are powered from 12VDC (AC/DC transformer).
The AX servos are powered from 9VDC (AC/DC switch-mode).

Locomotion: Other

_
Since we're talking about robot arms here, I'll talk about kinematics. The robot is modeled based on standard DH parameters (listed below).

Note that the arm configuration is not your typical spherical wrist type manipulator. For this reason I actually ended up using an open-form IK solver (this is available open-source in C++, see below).

Controller/CPU: Intel based Laptop

_
It's NOT controlled by the "Atmega 168/Arduino" listed above, this is a display error. It's controlled via an intel-based laptop.

Note that the Robotis control software for dynamixel servos was not used, a hand-crafted communication stack was implemented. This way multiple USB2dynamixels can be controlled from the same PC, among other reasons.

Sensors

_
2X stripped-down Logitech C910 webcams

Actuators

_
Two dynamixel-based articulated arms with grippers.

Each arm is comprised of:
1X Dynamixel MX-64
2X Dynamixel MX-106
6X Dynamixel AX-18

Description

_
To get a good idea of the project, please watch this video. A video is worth a thousand pictures.



So, essentially, it's a set of autonomous robot arms that can manipulate DJ knobs/sliders, and have cameras attached so that they can see and respond to dancefloor activity.

It uses brackets from crustcrawler, however this project could have also been implemented using the PhantomX arm.

The robot workspace and inverse kinematics was initially modeled in MATLAB using the Peter Corke robot toolbox

x
MATLAB model

The arms were also modeled in Solidworks 2010 (which was actually used to generate the glyphs in the matlab model above).

x
Solidworks model

The cameras are stripped-down Logitech C910 webcams. The infra-red filter was removed so that infrared light can be used for controlled lighting conditions. Someone did something similar here

x
x
C910 Teardown

Note that you can still get the auto-focus to work after removing the filter, let me know if u want more details.

After modelling in MATLAB, the robot control & vision code was implemented in C++. The software design is described in the following image (note: it is slightly more complex than this in reality and includes audio inputs, but this gives a general overview). The purple boxes are executable processes, while the green boxes are libraries used by each process. The two processes are ArmControl, and VisionProcesssing, which communicate via ZeroC Ice.

x
Software (simplified)

Roboop
- is a C++ robot kinematics & dynamics library

OpenCV
- is an image processing library

QTSDK
- does heaps of stuff, I used it for its GUI library and also QStateMachine

ZeroC ICE
- is used for inter-process communication
Note that future versions will run using ROS


x
OpenCV is used for image processing



The eye piece was designed in Solidworks, and cut out of 1mm aluminium.


Eye Piece Design




Other custom-made pieces include the "spikes" coming from axis 3, and the support brackets for axis 1. All custom-made parts were all cut from Aluminium, using the commercial laser cutter at Laser Wizard
Note: you can probably find a similar company in your area.




Appendix A: DH Parameters

ALPHA A THETA D
-pi/2 0 0 -0.300
pi 0.385 pi/2 0
pi/2 0 -pi/2 0
pi/2 0 0 -0.445
-pi/2 0 0 0
pi 0 0 -0.211


Let me know if you want any more details!