The InterbotiX Arm Link Software provides a simple control interface for the RobotGeek Snapper Robot Arm.
In addition to directly controlling your Robot Arm, the Arm Link software can also activate digital outputs, read analog inputs, play motion sequences, and display webcam feeds.
This software is offered as a simple control solution for these Robot Arms as well as an example for individuals who wish to integrate the Robot Arms into their own applications and systems. InterbotiX Arm Link is an open source program written in Java in the Processing environment. To learn more about building and customizing the software click here.
Project Parts List
The RobotGeek Snapper Robot Arm Kit comes with all of the robotic hardware you need for this demo - you'll just need a Windows, Mac or Linux computer.
This project can also be done with the RobotGeek Snapper Core Arm kit, assuming that you have your own microcontroller, power supply and wiring.
Check the Getting Started Guide for instructions on assembling, wiring and programming your Robot Arm. The Arm wiring from that guide will work for this demo. Analog inputs are not required for this demo and will not control the arm. attached to your sensor shield, but having them attached will not
If you are using the Snapper Core Arm, you can learn more about wiring the Snapper Core Arm here
The Arm Link Library and Firmware is automatically installed with the RobotGeek Tools and Library files and does not need to be installed separately. If you wish to manually install the files, download and unzip the InterbotiX Arm Link Library & Firmware files. Open the folder
ArmLinkLibrary-master and copy the
ArmLink folder into your Arduino Library folder.
ArmLinkSerial firmware from the Arduino IDE.
File -> Examples -> Arm Link -> SnapperArmLinkSerial
Before you can load the code onto your Robot Arm, you'll need to adjust your code to match your gripper type. In the Arduino IDE, click on the tab
GlobalArm.h Around line 16 you should see the following code block
//#define GRIPPER_TYPE ROBOT_GEEK_9G_GRIPPER //#define GRIPPER_TYPE ROBOT_GEEK_PARALLEL_GRIPPER
If you are using the RobotGeek Parallel Gripper, uncomment the second line. Your code should look like
//#define GRIPPER_TYPE ROBOT_GEEK_9G_GRIPPER #define GRIPPER_TYPE ROBOT_GEEK_PARALLEL_GRIPPER
If you are using the RobotGeek 9G Gripper, uncomment the first line. Your code should look like
#define GRIPPER_TYPE ROBOT_GEEK_9G_GRIPPER //#define GRIPPER_TYPE ROBOT_GEEK_PARALLEL_GRIPPER
Now that the gripper type is defined, the code will take care of correctly processing your gripper type. If you are having problems finding these lines, click on the
Compile button in the Arduino IDE and it will show an error near the lines you need to change.
Now you can load the firmware onto the Geekduino. Once you are done, leave your USB cable plugged into your computer, as this is how the software will communicate with the Arm.
Mac users please see the 'Note for Mac Users' here before following the rest of this guide.
Linux users please see the 'Note for Linux Users' here before following the rest of this guide.
The Arm Link Software is written in Java. We recommend that you download the version with embedded java for your OS (see the Download Page for more information) . The software is compatible with Windows XP, Vista and 7, Mac OS 10.5+, and Linux.
If you have any problems running the Arm Link Software, we recommend you run the software in the processing environment. This process is relativity easy and gives you additional options.
See the video below for instructions on how to use the program.
Use the Auto-Connect button, or pick a serial port and use the Connect button. The arm will move from it's 'sleep' position to a 'home' position. This may take several seconds. Once the arm has moved to its home position and is ready for commands,the various panels will appear. You can adjust the sliders or text panels to adjust the positions of the arm. Use the Update button to send these values to the arm.
You can use the 'Auto-Update' checkbox to send commands to the Robot Arm automatically. Because each pose needs to complete before the next pose can be sent, users may wish to lower the Delta value to make the arm more responsive.
Control Panel Description
|X Coord||Change the X-Coordinate of the Arms Gripper (Left/Right)||Cartesian|
|Y Coord||Change the Y-Coordinate of the Arms Gripper (Back/Forward)||Cartesian|
|Z Coord||Change the Z-Coordinate of the Arms Gripper (Up/Down)||Cartesian|
|Wrist Angle||Adjust the Wrist Angle||All|
|Delta||Change the time between poses (Lower Value = faster movements). More info here||All|
|Update||Update arm position a single time||All|
|Auto-Update||Update arm position continuously||All|
Sequence Panel Description
|New Pose||Create a new pose from the current Control Panel values|
|Play Pose||Play all current poses sequentially|
|Stop Pose||Stop pose playback|
|Save Pose||Load data from Control Panel to the currently selected pose|
|Load Pose||Load data from currently selected pose to Control Panel|
|Scroll Up/Scroll Down||Scroll through the poses|
|Save poses.h||Choose a folder to save the 'poses.h' folder containing pose playback data.|
|EMERGENCY STOP||This button does not currently work with the Snapper Arm.|
I/O Panel Description
|Digital Output||Check/Uncheck box to turn on/off corresponding port|
|Analog Input||Check to start reading raw analog value on corresponding port (value from 0 - 1023 that corresponds to 0-5v)|
|Activate Camera||Start USB Webcam feed|
|Enter/Return||Update / Send command to Arm|
|Hold Key||Tap/hold Key||Result|
|5||Increase Wrist Angle|
|5||Decrease Wrist Angle|
|6||Increase Wrist Rotate|
|6||Decrease Wrist Rotate|
|,||Load data from selected pose to control panel|
|.||Save data from control panel to selected pose|
Missing Serial Ports
Plug in your FTDI-USB cable BEFORE opening the program. The Arm Link software does not currently refresh the serial port list after connection, so the serial port must be available when the program starts up. If the serial port is not available in Arm Link, close and re-open the application. Plugging/unplugging the
Using a Webcam
Webcam support is experimental at this time. We recommend using the RobotGeek VGA webcam with 250mm Gooseneck with the Arm Link Software. Other webcams should work just fine, but have not been tested. The program will try to connect to the first webcam available to it. If you have problems, try plugging the camera directly into your computer (and not through hubs or extenders).
Changing mode or wrist orientation via the Mode Panel or the Wrist Panel will remove all of the current poses in the sequence panel. The software does not currently support mixed mode playback.
If you want to watch the packets that you are sending, see here
Analog Feedback and Auto Updating
We do not recommend using 'Auto Update' and 'Analog Input' at the same time. The Analog Feedback function works a little differently from the rest of the controls. All of the other controls issue commands to the Robot Arm, but the analog feedback features requests data. To get a piece of analog data, the program must send a commander packet requesting the current analog value for a specific port. When enabled, the analog feedback will request a new piece of data every 33ms. While auto-updating is turned on, a command packet is sent every 33ms as well. When both of these are working at the same time the responsiveness of the arm may be slower than normal.
If you would like to learn more about sequence recording, playback and exporting data to a standaloen firmware, check out our Sequence Playback Guide
PC Control These demos and projects allow the robot to be controlled via a computer.
ArbotiX Commander Control - These demos and projects control the Robot using the ArbotiX Commander, the handheld Arduino based remote control.
Direct Control - These demos and projects control the Robot directly from sensors connected directly to the Robot's control board.
Pose Control - These demos and projects allow you to create and playback a sequence of poses.
Serial Control - These demos and projects control the robot using a serial packet protocol.
Standalone - These demos and projects are deisgned to let your robot function without a computer or additional microcontroller.
Wireless Control - These demos and projects allow you to control the robot wirelessly - usually by replacing the Serial Connection with XBee modules.
Reference - These articles have technical details regarding the control and operation of the robot.
More info here