• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Buried in cloud files? We can help with Spring cleaning!

    Whether you use Dropbox, Drive, G-Suite, OneDrive, Gmail, Slack, Notion, or all of the above, Dokkio will organize your files for you. Try Dokkio (from the makers of PBworks) for free today.

  • Dokkio (from the makers of PBworks) was #2 on Product Hunt! Check out what people are saying by clicking here.


Cyton Gamma 300 in ROS

Page history last edited by Andras Fekete 7 years, 6 months ago

How to get the Cyton Gamma 300 working


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.


Cyton Software

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.


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.cpp. 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.


ROS Interface

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:

passed &=hardware.setJointCommands(angles,jointRates);

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.


Cyton files

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.

Comments (0)

You don't have permission to comment on this page.