Things to know
First thing to know is that you’ll need a 12V battery. Supposedly it works off of a 12VDC wall wart power supply, but for me it seems to have given problems. My suspicion is that it creates a ground loop through the USB (though it’s supposed to be protected against that).
Secondly, the arm’s internal hardware is very simple. It is made up of 7 Dynamixel MX-28 motors. These motors are daisy chained together on a communication bus which goes into a little black box in the base of the arm. Inside the box there is nothing more than a couple decoupling capacitors and a plug for the 12V input supply. According to the manufacturer, the motors can handle up to 18V. I have not tested that, nor is it necessary. From the little black box, there is a 2-wire cable going to the USB2DYNAMIXEL converter (its the white USB dongle). The two wires are ground and data.
Thirdly, if the arm stops responding, it may very simply be that you’ll need to power-cycle the arm (and possibly the USB2DYNAMIXEL). I’m still trying to figure out why that is.
All the smarts for the arm are in the software that controls it. Cyton’s software is very fragile. There are two aspects to the software: the low-level drivers and the interface to ROS using pieces of the low level drivers.
*EDIT:* I’ve since created a new repository on github (https://github.com/bandi13/cyton_gamma_300_ROS) that integrates the Cyton hardware into ROS without the use of the Cyton software. It’s more stable and simpler to use. Hopefully it can perform faster too since it doesn’t have to go through all those extra layers of abstraction.
Low level drivers
To get these working, you must have the cytonGamma300ViewerSetup-4.0.20130130-ubuntu-12.04-amd64.sh script. It essentially extracts its self and contains the proprietary Cyton drivers and ActinSE. It also gives some example code for getting communication up with the arm. I have taken one of these and made a super-simple one that makes the arm go to its ‘home’ position which is straight up. You can access it here: cytonAndras.tar.gz. The simplest way to compile it is to add it into the Robai/Cyton\ Gamma\ 300\ Viewer_4.0.20130130/cyton/examples folder and modify the Makefile in the parent folder.
Once you have the drivers compiled, you should test with the cytonAndras executable first. You’ll read online about cytonViewer and how it’s an amazing tool for testing this arm, but in my experience it is a buggy program that sometimes loads but mostly gets stuck in some infinite loop on startup if you have the arm connected. If you’re on an Ubuntu system, you’ll need to add your user to the ‘dialout’ group so that when you plug in the USB you’ll have permissions to the /dev/ttyUSB0 device. Otherwise you’ll need to do “sudo chmod ugo+rw /dev/ttyUSB0” each time you plug the USB into the computer.
The interface files are available at the following git repository: https://code.google.com/p/cyton-ros-pkg/. You can get it by doing a “git clone https://code.google.com/p/cyton-ros-pkg/” on the local machine. There is a setup video that you could watch, but it’s pain to watch, and it’s a lot easier if you run the shell script I’ve created located here: cytonInstaller.tar.gz. Just extract the tar file, put the Robai folder in the extracted folder and run the ‘firstCompile.sh’ and you should be fine.
If you have problems with functions with too many parameters (in cyton_move.cpp) you’ll have to remove the extra parameters so that the line looks like:
Another problem you’ll find is with template classes. In actinSE_node.cpp you’ll have to rename the occurrences of ControlSystem::JointAngles with ControlSystem::JointAngle. Same thing for ControlSystem::JointVelocities to ControlSystem::JointVelocity. That should make it so you can compile.
There are several strange files in Cyton. In this section, I’ll attempt to explain what my findings are for each.
This is a gzip compressed file containing a giant XML file for the model of the arm. Big shoutout to Gert Kanter (gert at cs dot ttu dot ee) for helping me find out about details to many of the secrets to the Cyton arm. If you follow this forum (https://groups.google.com/forum/#!msg/cyton-robots/GLcqKvljFRg/8-z3CTu9iXMJ) you should be able to get the DAE file extracted using the estazione_pnp.py script they talk about.
If you don’t have one of these, create one with “cytonCreateConfig –gamma300”. You can then tweak settings like the default port to look for the arm on. It’ll be at the end of the file under the ‘port’ tag.
I have no idea what this file is at this time, but it seems to be necessary for the ROS interface.
*EDIT:* I’ve found out that the guide_frame.txt is just a file that the Cyton code reads in to make the arm move to some predetermined locations. So if you’re not using the guide_frame_node then you won’t need it and you won’t need to set the CYTON_EE_FILE variable.
This page is also available on the UNH AI Wiki page, but just in case it gets deleted or relocated from there, I wanted to make it available here.