ArbotiX-M vs ArbotiX

Robocontroller Analog Input Ports with 3-pin Connector Digital I/O Ports with 3-pin Connector PWM Ports 16Mhz ATEMGA644p Processor Dual TTL Serial Ports 3 Three-pin DYNAMIXEL Srvo Ports ISP Programming Port FTDI Serial Communications Port XBee Socket DC Screw Terminal DC Barrel Jack Seperate Power Bus for Hobby Servos Dedicated I2C Port 2x DC Brushless Moto Controllers
ArbotiX-M 8 20 6
ArbotiX 8 8 2

ArbotiX Introduction

Read more: ArbotiX Introduction

The ArbotiX-M Robocontoller, designed by Vanadium Labs is at the heart of every Interbotix robotic kit. This Arduino compatible board is an advanced microcontroller solution for driving BIOLOID and DYNAMIXEL based robots. The ArbotiX-M is loaded with features; ROS ready, open and easy to use protocols, options for tethered, wireless or onboard autonomous control, all driven by an ATMega644p Microprocessor.

The ArbotiX-M Robocontroller is an updated version of the original ArbotiX Robocontroller. The ArbotiX-M shared the same processor and many of the same features - this makes setup and use very similar.

ArbotiX-M Original ArbotiX
Getting Started
Quick Start Guide
Setting DYNAMIXEL IDs with the Dynamanager
ArbotiX-M Hardware Overview ArbotiX Hardware Overview
External Hardware
Configuring XBees for the ArbotiX
LiPo Battery Guide
Communication and Controllers
ArbotiX Commander Setup
Commander Console Setup
Arm Control Setup
Advanced Topics
Advanced Programming guide for the ArbotiX
Powering the ArbotiX-M Powering the ArbotiX
Advanced Use of the TR DYNAMIXEL Servo Tool
ArbotiX Library and Hardware Files

External Resources

DYNAPose - DYNAMIXEL/ArbotiX Pose Tool


Pose Playback
PC Control

All the InterbotiX robots turrets, arms, and crawlers use DYNAMIXEL servos. These servos all have positional feedback, allowing the ArbotiX-M Robocontroller to read the current position of each servo. This makes it possible to physically pose an InterbotiX robot, then capture the positions for each servo, allowing the user to save/capture the current pose. By capturing multiple poses, a user can create a sequence that can be repeated.

This firmware does not use any Inverse Kinematic calculations to position the servos - it simply moves the servos to a pre-set position. Please see the 'Demo' section for your Robot for more information on code examples that us IK engines.

Read more: DYNAPose - DYNAMIXEL/ArbotiX Pose Tool

Untethered Pose Playback with DYNAMIXEL/ArbotiX


Pose Playback
PC Control
(Setup Only)

The ArbotiX-M Robocontroller can be used to easily 'play' a sequence of poses on DYNAMIXEL servos. These poses can run automatically, triggered by an outside input (like a pushbutton) or integrated into more advanced code.

This tutorial can be used in conjunction with the DYNApose tutorial. The DYNApose tutorial will help you to capture a series of poses while this tutorial will help you integrate those poses into new code.

This firmware does not use any Inverse Kinematic calculations to position the servos - it simply moves the servos to a pre-set position. Please see the 'Demo' section for your robot for more information on code examples that use IK engines.

Read more: Untethered Pose Playback with DYNAMIXEL/ArbotiX

Setting DYNAMIXEL IDs with the DynaManager

This guide will teach you how to ID servos using an ArbotiX Robocontroller and a computer.

Read more: Setting DYNAMIXEL IDs with the DynaManager

ArbotiX Commander Packet Structure and Calculator

Reference Material

There are two parts to the commander protocol - the sending and the receiving ends. The receiving end is usually an ArbotiX robocontroller using the commander library to accept, parse and use commander data sent to it. The sending end does not require a specific library, just the ability to send a serial packet as outlined below. The commander packet is designed to be sent via a remote control like the ArbotiX Commander or Virtual Commander, though it can be sent via any device that can send a TTL serial signal to the arbotix or an XBee.

Enter in a value for each parameter. Be mindful of the limits for each parameter. This calculator will not check limits. Once all values are present, press 'Calculate' to generate a serial packet. You can then use the serial packet below the 'calculate' button in your application.

Packet Structure

Packet # Description Commander Library Call Mixed Byte Commander Call
1 Header (0xFF/255)
2 Look Joystick (Vertical) command.lookv command.pan(High Byte)
3 Look Joystick (Horizontal) command.lookh command.pan(Low Byte)
4 Walk Joystick (Vertical) command.walkv command.tilt(High Byte)
5 Walk Joystick (Horizontal) command.walkh command.tilt(Low Byte)
6 Button Byte command.button
7 Extended Instruction Byte command.ext
8 Checksum


The first four fields correspond to the commander's joysticks. Each axis on the left joystick (look) and the right joystick (walk) take up one field. When the joystick is centered, the value transmitted is 128. When the joystick is all the way left (vertical) or down (horizontal) the value is 3. When the joystick is all the way right(vertical) or up (horizontal) the value is 253.

On the receiving end, the commander library will shift these values for you. The shift is a simple value - 128 operation. So when you send a 128, the receiving end will read a 0. When you send a 3, the receiving end will read a -125, and when you send a 253, the receiving end will read a 125, etc

It is also possible to combine 2 joystick bytes into a single high resolution value. The two look byte can be read as pan and the two walk bytes can be read as tilt by the commander library on the receiving end. The vertical byte is always the High byte while the horizontal byte is the low byte. Usually this is used to send a 10-bit analog value (0-1023) though it can send up to a 16-bit value (0-65535).

Button Byte Structure

Bit # 8 7 6 5 4 3 2 1
Button Left Top Right Top Left 6 Left 5 Left 4 Right 3 Right 2 Right 1
Hex Decimal Binary Buttons Pressed
0x00 0 00000000 none
0x01 1 00000001 R1
0x02 2 00000010 R2
0x0f 15 00001110 R2,R3,L4
0xF2 242 11111110 R2,R3,L4,L5,L6,RT,LT


The extended byte can be used to send additional data. The exact function will depend on the firmware of your receiving robot.


Calculated Packet (HEX)


Commander Console

Download Commander Console Firmware Sketch (For Arduino/Seeeduino)

The Commander Console is an Arduino based control box that will allow you to precisley control the InterbotiX Robot Arms.

Currently the Commander Console is offered as a DIY project. To build a commander console you will need the following:

  • Arduino, Seeeduino, or other Arduino IDE compatible microcontroller
  • 5 Joysticks (Only 6 axises will be used, see below)
  • 4 Pushbuttons
  • Wired serial connection or Wireless XBee connection

Read more: Commander Console

Arm Link Reference

Reference Material

The Arm Link library, firmware, and software will allow you to control InterbotiX arms by sending an absolute value to each coordinate. These coordinates are sent over a serial port connection to the ArbotiX Robocontroller that controls the arm. The ArbotiX Robocontroller will receive the coordinates, do any required calculations, and then move the servos appropriately.

Read more: Arm Link Reference

Advanced Configuration of XBees for the ArbotiX

In the basic XBee configuration guide, we set up our XBees on a fixed channel. If another XBee or other device is on the same 2.4Ghz channel, we may see reduced range or communication problems.

Below are a set of configuration options that will allow you to set up a coordinator / end device network. When the Coordinator starts up, it will do a scan to look for usable channels. Once it has chosen a channel, it will wait for end-device XBees to join its network. The End device will be setup to scan channels, looking for a coordinator.

While this does solve our channel problem, it does have a few downsides. First, the Coordinator XBee should be powered on before the End Device XBee, as the coordinator needs to set up the network first. Secondly, channel setup and scanning can take a few seconds, so the connection will not be as instantaneous as with a standard setup.

Below are all of the configuration settings to make the coordinator / end point network function. You'll notice that we have put the Coordinator XBee in the robot while the end point goes in the commander. We have done this because if you turn on/power cycle your robot, its generally easier to power cycle your controller than the other way around. If you however intended on setting up a mesh network where one controller talked to many robots, you should consider putting the Coordinator XBee in the ArbotiX Commander.

Parameter XBee # 1 (For ArbotiX Commander) XBee # 2 (For ArbotiX Robocontroller)
Pan ID 100 100
Destination Low ID DL 2 1
16 bit source address ID MY 1 2
Coordinator Enable CE Coordinator [1] End Device[0]
End Device Association A1 000b 0111b
Coordinator Association A2 110b 000b
Node Identifier Robot Commander
Data Rate 5 5

Configuring XBees for the ArbotiX (Legacy)

Before you can communicate wirelessly between your ArbotiX Commander and the ArbotiX Robocontroller in your robot, you'll need to configure your XBees. There are 4 parameters we will need to change.

  • PAN ID (ID)The ID for the personal area network. For any XBee to communicate with other XBees, they must have the same PAN ID
  • 16-bit Source Address(MY) This is the ID for the XBee module itself.
  • Destination Address Low (DL) This is the Source Address of ID of the XBee you are trying to communicate with.
  • Interface Data Rate (BD) This is the Baud rate that the XBee will operate at.

Read more: Configuring XBees for the ArbotiX (Legacy)

Configuring XBees for the ArbotiX

This guide will show you how to configure your XBee modules for your InterbotiX Kits. This guide assumes that you've already completed the ArbotiX-M Getting Started Guide.

Required Parts

InterbotiX Robot Kits that use the ArbotiX-M Robocontroller can be controlled wirelessly via XBee 1mW Series 1 Communication modules . These modules will create a transparent serial link between the ArbotiX-M Robocontroller and an external controller like an ArbotiX Commander or a computer via a XBee-USB Converter.

XBee modules are incredible powerful and can be configured with a wide variety of features. In this guide we're only going to configure the bare basics to get your XBee modules working with your kit. There are 4 parameters we will need to change as well as a fifth optional parameter.

  • PAN ID (ID)The ID for the personal area network. For any XBee to communicate with other XBees, they must have the same PAN ID
  • 16-bit Source Address(MY) This is the ID for the XBee module itself.
  • Destination Address Low (DL) This is the Source Address of ID of the XBee you are trying to communicate with.
  • Interface Data Rate (BD) This is the Baud rate that the XBee will operate at.
  • Node Identifier (NI) (optional) This is an arbitrary name that you can give to your XBee. This can be useful if you're managing multiple xbees.

To configure the software you'll need to use the XBeeXCTU Software. This software is freely available from Digi, the XBee manufacturer. You can find installer files for XCTU here.

When you click on the link for your specific operating system, you may be taken to a page where you are encouraged to register up for Digi's website. However there is also a direct link to your download, just click on Or go directly to your content.

Once the file is downloaded, open the file to start the installation process. Once completed you should be able to run XCTU.

Mac users may need to install an older version of Java to run XCTU - follow the prompts/links to Apple's Website to Install the required version of Java.

The following video will walk you through connecting the XBees to your computer, configuring them, and testing them. Below the video there is a list of parameters for each XBee.

NOTE: XBee modules run on 3.3V. Be sure to set the switch on your UartSBee to 3.3V before plugging in or risk permanently damaging your XBee

Parameter XBee # 1 (For ArbotiX Robocontroller) XBee # 2 (For ArbotiX Commander)
Pan ID (Hex) 100 100
MY ID 1 2
DL ID 2 1
Data Rate 38400 [5] 38400 [5]
Node Identifier Robot Commander

Once your XBees are configured and tested, you can continue with the getting started guide for your robot. If you have not already setup your ArbotiX Commander. you will need to do that now. You will also need to install commander compatible code onto your ArbotiX Robocontroller/ robot

If you're having trouble with XBee range or are interested in advanced XBee features, see our Advanced Configuration Guide

LiPo Battery Guide

This guide will give you some insight into working with Lithium Polymer (LiPo) batteries with the ArbotiX Robocontroller and InterbotiX Robot Kits. This guide is not intended as a comprehensive Li-Po Battery /LiPo Charger guide. Make sure to read any instructions or warnings included with your LiPo Charger and Batteries.

Before you use or charge any lithium battery you must read the Lithium Battery Saftety Instructions and Warnings document.
  1. Do not charge or use batteries if the battery ...
    1. is punctured or damaged
    2. is bloated, expanded, swelling or otherwise deformed
    3. has any cell with a voltage of 3.3v. This means less than 9.9v for a 3-cell/11.1v battery.
  2. Do not charge batteries unattended. Monitor batteries during charging for popping, hissing, smoke, sparks or fire. Also monitor the battery for any swelling or other deformities. Disconnect the battery from your charger immediately.
  3. Do not charge batteries near flammable material. Charge batteries in a fireproof container. Do not charge batteries while they are in your robot.

Read more: LiPo Battery Guide

Powering the ArbotiX-M

There are many ways to power the ArbotiX board. For stock InterbotiX kits, users will only need to worry about the 5v Power BUS anf the VIN Power BUS. This guide will discuss those as well as the ArbotiX's other power BUSes and options.

Read more: Powering the ArbotiX-M