The RH2D base model model uses the Robotis XL-320 actuator instead of the custom Seed Robotics Smart actuators used in other models.

The XL-320 has a number of interesting features for a product such as as RH2D.

However, because the XL-320 runs Robotis own firmware, there are a few things that work differently from Seed Robotics custom actuators. We explain below how it is different and how to accommodate this in your code.

Calibration and Zero offset

The RH2D, like all Seed Robotics models, uses a pre-defined motion range for the Fingers and for the Wrist rotation.

Usually, in units using the Seed Robotics actuators, we mask this by calibrating the setpoints (start and end).
With the XL-320, instead of doing this, you are exposed to the raw motion range.

For example, the servo can rotate from 0 to 1023, but the possible motion range for closing the fingers is a subset of this range.

To cope with this and ensure safe operation, we set the CW Limit and CCW Limit parameters of the servo to the limits of the movement. You should then use position values within this range.

In the Actuator that performs wrist rotation we can perform the full rotation (0~1023/4095). However the center point doesn't correspond exactly to 512 (the center of the servo).
To accommodate this, the unit will come with the information on which value must be considered the center.
We also provide visual cues on the back of the hand to let the user easily determine the center position: by moving the hand in software you find the position where the the arrows on the shell align with the arrows on the assembly horn.

12 bit resolution

The XL-320 samples the position sensor natively at 10bit (in the 0~1023 range). However the MX series units operate in a 12 bit resolution (0~4095).

You should pay attention to this difference, when sending commands to the unit, using frameworks or programming motions in GUIs such as Roboplus Motion.

In the future, we plan to add a bus interception mechanism in the main board that will upscale and downscale 12bit positions, emulating a 12bit resolution for seamless integration in system with MX/XM series.

Conversion of Dynamixel Protocol Version: Compatibility with Dynamixel 1 protocol

The XL-320 actuator uses the Dynamixel 2.0 protocol. However most systems and frameworks still use the Dynamixel 1.0 protocol.

With this in mind, the main board in RH2D units is configured to perform a bus interception and convert the Protocol Version internally. This means you should control the XL-320 actuators using the Dynamixel 1.0 protocol.
The main board will intercept the communications and internally make the necessary conversions of protocol version automatically.

This is especially useful if you are integrating the hand into systems using Dynamixel 1.0 protocol, and frameworks and libraries that also rely on this protocol version. By converting to the Dynamixel 1.0 protocol, you are able to seamlessly integrate into existing AX/MX systems and use widely available software libraries, such as the Darwin-OP framework, PyPot, and several others.

Other particularities and Important Considerations

Servo model number

While these are Robotis XL-320 servos, we internally intercept the communication and change the returned model number from 350 to 407.

The reason to do this is related to the Protocol Conversion to Dynamixel 1.0 and compatibility with the Robotis Dynamixel Wizard. If using the default model number, the Robotis Dynamixel Wizard will always revert and force communication using the Dynamixel 2 protocol.
Therefore, by changing the model number and providing the user with updated Control Tables, Dynamixel Wizard will default to the correct protocol (Dynamixel 1.0).

Therefore, when querying the model number, expect to read a 407.

Baud Rate

The Baud Rate on the XL-320 actuators must match the baud rate configured for the Internal bus (Main Board ID, memory position 76 (0x4C) ). This baud rate setting is independent of the baud rate configured for communication with the external bus/external devices.

The Baud rate setting for the individual XL-320 actuators should ALWAYS be set to 1Mbps, the factory default.

If you need to change the baud rate used for communication between the hand and your Dynamixel device bus (from 9600bps up to 3Mbps), you should only change the baud rate in the ID of the main board.
The main board will then perform the necessary speed conversions to the actuators internally. This also means that while the XL-320 can't communicate at speeds over 1Mbps, an external host can communicate with the hand at up to 3Mbps to match the baud rate of your system and it will, in turn, perform speed conversion to the XL-320 internally.

Control Table differences from the AX/MX series

The XL-320 Control table is largely based on the one from the AX and MX series.

However the memory address of many of the functions are relocated. This means you should pay special attention and not assume they are at the same place. A few examples are:

  • Status Return Level
  • Present Position
  • Present Velocity

The change in memory address of Present Position and Present Velocity are likely the ones that may need more attention. This is due to the design of the actuator firmware itself so, please take this into consideration as these are located differently than in MX/AX series.

EEPROM configuration lock when Torque is On

The XL-320 (X series in general we believe) have a particularity that is new to Robotis servos, in which the memory positions that change data in EEPROM (typically configuration data) are locked if torque is On.

Attempting to write to these positions while Torque is ON will not change any values and you will get a return packet with an error.

This is not documented by the manufacturer very explicitly (Robotis), so we believe it is worth pointing it out in this document.

Wheel Mode should never be used with the Hand

The XL-320 supports “Wheel mode” which essentially turns it into a continuous rotation servo with speed control.
This functionality should NEVER be used when they are assembled on the RH2D, because the degrees of freedom on the RH2D are designed as joints with physical limits:

The actuator for the fingers, actuates a pulley that reaches a limit when the fingers are closed; forcing beyond that point will damage the servo or the hand;
The same happens for the Wrist Rotation: while it may appear the Wrist could rotate continuously, this is not the case. The Wrist rotation is not directly attached to the servo. It has an external stage of reduction that also has a mechanical limit. In this case too, if you force the unit beyond the normal 0-1023 range you will likely discalibrate the reduction stage.

Error code bitmask in the Return Packet is in Dynamixel 2 format

This is, once again a case of a difference that the user only needs to be aware: even though the main board performs protocol version conversion, data such as the Error bitmask in return packets will be passed directly without any conversion.

The general principle still applies: if the error mask is not 0, then something is wrong with the unit or the command. However if you want to further understand the error, you should refer to the explanation of Error Mask for Dynamixel 2.0 devices.

Control Table

For the full Control Table and Full documentation for the XL-320 actuator can be found on the Manufacturer's website:

Please refer to this address for further information.

Should any questions or doubts still persist, contact us through

Copyright © 2015-2020 Seed Robotics Ltd

  • rh2d/xl320_controltable.txt
  • Last modified: 2017/08/23 12:52
  • by pedro.ramilo