Cyton Alpha 7D1G is a 7 DOF Robot Arm developed by Robai. It presents 9 servo motors controlled by a SSC-32 board. However, the servo motors does not provide position feedback. For this reason, the Cyton Alpha only allows open-loop projects, restricting a lot the possibilities of development. This project has as main goal closing the loop of the Cyton arm and developing a Matlab-Arduino user interface with some functions.
- Cyton Alpha 7D1G
- Arduino Mega
- Arduino IDE
- Matlab
In order to close the loop of the arm, it is necessary to get the position of each servo motor (only 7 of them). Each servo motor has a potentiometer inside. Somehow, most of them doesn't have a wire solded on it. The ideia is to open the servos and sold a wire on the potentiometer. Doing so, for each servo position, the potentiometer will show a different voltage. Also, it is possible to see that the voltage grows linearly according to the servo position. Obs.: Do this at your own risk.
The Cyton C++ API provided by Robai is a good way to program the arm, however, as we are working with the feedback, the Arduino Mega is included in the hardware for reading the servo voltage values and also to execute the servo movement. How? Plugging a wire on the Arduino Mega TX1 port on the SSC-32 RX port will allow to communicate both boards through Serial1. This allow us to use the Serial to connect with ROS. Also, it is needed to plug a wire from Arduino Ground to the SSC-32 ground. It is recommended to set the baud rate of SSC-32 to 9600 (just disconnect to first jumper located in the BAUD section of the board). And one final detail: connect the Arduino AREF port tot he 3.3 V port in order to augment the servo feedback resolution.
The Matlab is mainly used to calculate the Forward Kinematics of the arm, as the Arduino is not powerful enough to do so. Also, it is used to present the User Interface with a Menu with some options.
- LibSSC32: modified from original to use port TX1 instead TX
- Filters: https://github.com/JonHub/Filters
- StandardCplusplus: https://github.com/maniacbug/StandardCplusplus
- DQ Robotics: http://dqrobotics.sourceforge.net/
- Rosserial: http://wiki.ros.org/rosserial
theta = [0, 0, 0, 0, pi, pi/2, 0]
d = [0.0379, -0.0046, 0.145, -0.011, 0.175, 0.0074, 0.0]
a = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0677]
alpha = [0, pi/2, -pi/2, pi/2, -pi/2, pi/2, pi/2]