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
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.
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.
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.
//#define ARMTYPE PINCHER //#define ARMTYPE REACTOR //#define ARMTYPE WIDOWX
For example, to get the code to work with the Reactor arm, un-comment the line
//#define ARMTYPE PINCHER #define ARMTYPE REACTOR //#define ARMTYPE WIDOWX
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.
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
|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)||
|Z Coord||Change the Z-Coordinate of the Arms Gripper (Up/Down)||
|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||
|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
|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
|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.|
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
|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|
|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|
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).
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.
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.
- Arm Link Sequence Playback - Use the Arm Link software to create and export sequences to stand-alone firmware for the arms.
- Arm Link Packet Reference - Technical details on the Arm Link Packet and integrating it into your own projects
- Arm Link Software Advanced Use - instructions for building and altering the Arm Link application.
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