Do you have a question?

Ask Andy:

Hey there!

I’m Son of Toby.

Son of Toby

Robotic Arm Project

A student research project supported by the Drury University Physics Department , in conjunction with the NASA Reduced Gravity Student Flight Opportunities Program.


Diagram of software architecture.

In our robotic arm we have six computer-controlled sail winch servos from Futaba Corporation, which represent the contractile elements of the muscles and propel our arm movement. The servos on the arm have been recycled from previous robotic arm experiments along with several new units that were purchased recently. In this new experiment, we have re-located and improved our arm setup so that the torques provided from these servos are much more efficiently transferred to actual arm movement, allowing for similar range of motion to that of an anatomical human arm (in a 2D plane).

Optical Encoder

Brainstem Moto 1.0 module

Brainstem GP 1.0 module

In order to control the six servos in our experiment, we have two General Purpose Brainstem microcontrollers from Acroname Incorporated. These modules are capable of controlling up to four servos apiece; therefore they are together able to control the six we have in the experiment. This allows us to program the arm to move along prescribed pathways. The two microprocessors are connected to an integrated breadboard which receives information from a laptop joined by a USB cable. The apparatus measures the shoulder and elbow rotations using optical encoders connected directly to the axis of the shoulder and elbow joints (shown in figure 2). The experiment used by the team 4 years ago used analog potentiometers instead of encoders, which resulted in inaccurate data collection. Therefore we now use digital encoders which allows for precise angle measure and results in better data records. Finally, we have an Acroname Brainstem Moto Module which serves as a dedicated communication device between the optical encoders and the computer.

The software that drives arm motion is written in C++, and runs on a laptop that will fly with the experiment. One of our new goals has been to upgrade the old software and transfer our program to a newer compiler making sure that the program still runs and works correctly. This has now been accomplished. The previous compiler was Microsoft Visual C++ 6. The upgrade we have made is to version 9, currently named Microsoft Visual C++ 2008 Express Edition which is also free to use once registered. With this upgrade alongside the upgrade of our C++ libraries provided by Acroname we hope to accomplish maximum compatibility, portability, and efficiency for our program. This should improve the flow of data to and from the devices, without any change to our code. From Acroname we have two Brainstems that will transmit the prescribed position data to all servos, and they also relay the data from the optical encoders connected to the Moto Module back to the computer. The program starts by reading a file that contains the prescribed servo position data at each time step (currently every 100ms for typically 4 seconds). The file is output in advance by programs developed in Matlab. Our experiment involves no feedback from the arm during the intended motions: this is a purely “feed forward” experiment (see the appendix for more details of the dynamics). Once we have given the test file to the program it executes without user interaction until finished. During the testing process the arm will move by sending the commands found in the test file through a Brainstem directly connected by a USB cable to the laptop. From there the commands will be sent to the specified servos either connected directly to this Brainstem or via an IIC bus to the second Brainstem. At regular intervals the program will request data from the optical encoders connected to the Brainstems through the IIC bus and these are sent to the computer where the data are stored and saved to a file for analysis. Once the program finishes it will have created a text file (armlog.txt) that shows the input used to move the servos during program execution and another file (armdata.txt) that holds the encoder data, i.e. the readings of the arms angles at given time intervals. The last step in the process is to organize and translate the data into usable information that can then be compared to the theorized motion of the arm.