InterbotiX Arm Link Software Getting Started Guide


Serial Control
PC Control

The InterbotiX Arm Link Software provides a simple interface for the InterbotiX line of Robot Arms. Using this software you can control the Robot Arm via a variety of movement modes including Cartesian IK mode, Cylindrical IK mode, and Backhoe/Joint mode.

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.

For more information on the Arm Link Protocol, see this article.

Project Parts List


Hardware Installation

Check the Getting Started Guide for instructions on assembling, programming and testing your Robot Arm. After programming, the Robot Arm will need to maintain a serial link to your computer - normally this is the same USB-FTDI cable used to program the arm.

It is also possible to create a serial connection using a set of wireless modules like XBees. This will allow you to wireless control the arm from your computer. You will need 2 x XBees and a UartSBee. One XBee will connect to the ArboitX-M Robocontroller and the other will connect to the PC via the UartSBee. You will need to configure both XBees.

Firmware Installation

Download the InterbotiX Arm Link Library & Firmware

The Arm Link Library and Firmware is automatically installed with the ArbotiX Hardware & 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 ArmLinkSerial-master and copy the ArmLinkSerial folder into your Arduino Library folder.

Open the ArmLinkSerial firmware from the Arduino IDE.

File -> Examples -> Arm Link -> InterbotixArmLinkSerial

You will need to make a small change to the code depending on which arm you are using. At line 56 you will need to un-comment the #define that corresponds to your arm. The default code looks like.


For example, to get the code to work with the Reactor arm, un-comment the line REACTOR #define


Now you can load the firmware onto the ArbotiX-M. Once you are done, leave your FTDI cable plugged into your computer, as this is how the software will communicate with the Arm.

Software Installation

Download the Arm Link Control Software

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.

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.

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.

When the arm is first powered up, it will move to its 'sleep' position and then turn the torque off to all the servos. It will stay in this state until it has received a connection and its first instruction.

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
Wrist Rotate Adjust the Wrist Rotation All
Delta Change the time between poses (Lower Value = faster movements). More info here All
Base Rotate the Base Servo Cylindrical
Shoulder Rotate the Shoulder Joint Backhoe
Elbow Rotate the Elbow Joint Backhoe
Update Update arm position a single time All
Auto-Update Update arm position continuously All
Mode / Wrist Panel Description
Control Description
Cartesian Change to the Cartesian IK engine to (X/Y/Z Positioning)
Cylindrical Change to the Cylindrical IK engine to (Base/Y/Z Positioning)
Backhoe Change to the Backhoe (Joint Mode Positioning)
Straight Set default wrist angle to straight (horizontal)
90 Degrees Set default wrist angle to 90 ° (vertical)
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 Immediately turn torque off to all the servos. To start the arm again, either send a disconnect/sleep command, or move the arm to a new position. This button will disable auto update mode.
NOTE: Disconnecting will try to move the arm back to 'sleep' position. If your arm will be damaged by moving, unplug power before proceeding.
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
Press Key Result
p Start/Stop Sequences (Play/Pause)
, Load data from selected pose to control panel
. Save data from control panel to selected pose
Space Emergency Stop

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 the application, make sure your FTDI-USB cable is plugged in / recognized, and re-open the application.

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.

Faster Connection

Remove Jumper 'J2' for faster connections There will be a delay between when you hit the 'Connect' button and when the arm activates. Part of this delay is the ArbotiX-Ms boot loader. The boot loader waits several seconds when the board is reset. Until this delay passes, the Arm Link firmware does not respond to command packets. Because opening the serial port will reset the connection, a delay is introduced every time you open the port. You can reduce this delay by removing the 'J2' reset jumper. This will stop the board from resetting when the serial port is opened on your computer. Keep in mind that the jumper is required for proper programming. For more information, read here.

Faster Connection II

It is also possible to remove this delay totally by overwriting the boot loader via an ISP program. See here for more details.


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