Arm Link Software For RobotGeek Snapper

PC Control

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.

Hardware Installation

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

Firmware Installation

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.

Open the 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


If you are using the RobotGeek Parallel Gripper, uncomment the second line. Your code should look like


If you are using the RobotGeek 9G Gripper, uncomment the first line. Your code should look like


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.

Software Installation

Download the Arm Link Control Software

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
Control Description Mode
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
Gripper Open/Close Gripper All
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
Control 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
Control 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

Key Commands

Key Result
Enter/Return Update / Send command to Arm
Hold Key Tap/hold Key Result
1 Increase X-Coordinate/Base
1 Decrease X-Coordinate/Base
2 Increase Y-Coordinate/Shoulder
2 Decrease Y-Coordinate/Shoulder
3 Increase Z-Coordinate/Elbow
3 Decrease Z-Coordinate/Elbow
4 Increase Gripper
4 Decrease Gripper
5 Increase Wrist Angle
5 Decrease Wrist Angle
6 Increase Wrist Rotate
6 Decrease Wrist Rotate
7 Increase Delta
7 Decrease Delta
Key Result
Space Emergency Stop
P Play/Pause Sequence
, Load data from selected pose to control panel
. Save data from control panel to selected pose

Usage Notes

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

Sequence Panel

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.

Packet Data

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.

Sequence Playback

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

Feedback Form