Dynamixel

Control Thumbnail

How To Download and Use This Control

  1. Make sure you have the latest version of EZ-Builder installed.
  2. Select the Install button below to download the file.
  3. Double click the downloaded file to open installer.
  4. The installer will add this control to EZ-Builder.

Connect and control Robotis Dynamixel Servos to any EZB, including arduino and Robotis controllers. This open-source plugin converts the Virtual servo ports with any EZ-B (v0-v99) to control Robotis Dynamixel Servos. The servos supported are XL-320, AX-12, and XL430 models. Dynamixel Servos are very different than regular hobby PWM servos. Firstly, they are considered much more professional due to their design which is specific for the use in robotics. Each Dynamixel servo contains a microprocessor. The microprocessor is told what position to move the servo into over TTL at the configured baud rate. 

EZB Cable Accessory
For Ezrobot or arduino users, this plugin requires a cable accessory to easily connect your servo to the EZ-B,
arduino or IoTiny. You can find the cable accessory in EZ-Robot's store by clicking here. If you desire to READ servo positions, the cable will need to be modified. There are instructions below for connecting the servo to READ positioning.
User-inserted image


Wiring For Read Positioning
While we recommend using the Dynamixel servo Cable, you can optionally manually wire the servo yourself to any ezb controller using this diagram. If you wish to read servo data with bi-directional communication, you must connect TX and RX ports together. On the Ezrobot ezb, it’s port D5 and D6 (UART #1) together. On the EZ-B, D5 is TX and D6 is RX. This means if you connect D5 to D6, the EZ-B will be able to read the servo positions. You may also select UART 0.

User-inserted image





Port
There are three options for connecting the Dynamixel servos. The default option for controllers with hardware uart, such as the EZ-B v4 or Arduino Mega (not IoTiny) is UART 1 (port D5). The second option is UART #0 for the Robotis open cm 9.04 or open cr. The third option is low speed serial of any digital port for both arduino and IoTiny. To reference the pins of the EZ-B, consult the tutorial for the EZ-B by clicking here.

*Note: we highly recommend using Hardware UART on the EZ-B v4, open cr, open cm 9.04, Arduino Mega, or any controller with hardware UART only. Do not use software UART on these controllers. Only use software UART when using a controller that does not support hardware uart, such as Arduino Uno or oTiny. Also, a controller with a hardware UART is necessary when reading servo positions. Read Electrical Wiring further down in this document for bi-directional communication with EZ-B v4 for reading servo positions.

Voltage
Most Dynamixel servo documentation states the operating voltage in the manual. Check the documentation for your dynamixel servo model to ensure your power source is sufficient. If you experience unusual behavior of Dynamixel servos, the first common issue is insufficient power. 

Servo ID
The Dynamixel Servos each have a unique ID. Because they are chained together through one cable, each servo must be given a unique ID. Servos with the same ID will respond to the same commands, and therefore mirror their behaviour. New Dynamixel Servos come pre-configured with the ID of 01. servo V0 relates to dynamixel ID:0, V1 is dynamixel ID:1, v2 is dynamixel ID:2, and so on...

Using this configuration utility, you can assign new ID's to servos. You may also test the servo to ensure the ID was successful.

Servo LEDs
The LEDs on the dynamixel servo can be controlled using the EZ-Script ControlCommand(). View the Cheat Sheet when editing a script to see the available ControlCommand syntax for the Dynamixel Plugin.

EZ-Script Commands
There are a number of EZ-Script commands added with this control. The commands are as follows...

Quote:


GetDynamixelTemp(ServoPort)
Returns the temp of the specified servo

GetDynamixelLoadDir(ServoPort)
Returns the direction of load on the specified servo

GetDynamixelLoad(ServoPort)
Returns the load of the specified servo

GetDynamixelPing(ServoPort)
Returns a ping response if the servo exists. Otherwise, returns false




Step by Step Instructions
Once you have the servo wired, and sufficient power is provided, you can use any control in EZ-Builder that uses servos. This means it will work with Auto Position, Camera, WiiMote, Joystick, and more. In this example, we'll show you how to move a dynamixel servo with a generic servo control. Before following these steps, ensure you have this plugin installed.



Step 1
Load EZ-Builder

User-inserted image




Step 2

Connect to your EZ-B v4 or IoTiny controller

User-inserted image




Step 3

Add the control by selecting the Project tab and Add Control

User-inserted image




Step 4

Navigate to the servo tab and select Dynamixel. If the plugin has been successfully installed, you will see the Dynamixel plugin in the list.

User-inserted image




Step 5

The Dyamixel control will be added to your project. Press the Config gear icon to load the configuration screen.

User-inserted image




Step 6

Enter the baudrate that matches your servo configuration. The servos have a baud rate that can be specified, or a default baudrate shipped from factory. If you need to change the baudrate of the servo, use the Dyanmixel utility. You cannot change the baudrate of the servo in ez-builder. This value is the baud rate that the EZ-B will use to communicate with the dynamixel servo. This must match the baudrate of the servo.

User-inserted image




Step 6a

Specify what port the servo is connected to on the controller. It is important to follow this recommendation. There are blue question boxes in the plugin (and throughout the EZ-Builder software) to assist you robot development. It is recommended to use the blue question marks and read the content to understand what options do.

User-inserted image




Step 7

Each dynamixel servo will have a unique ID. Enable each ID for the servos by checking the respective box. When an ID is checked, the EZ-Builder software will use the Vx (virtual servos) corresponding with that ID. For example, if you enable Dynamixel servo ID #2, the EZ-Builder V2 servo will control it. Also, specify the protocol version of the servo. Different dynamixel models will use one of the two protocols. Consult the datasheet of the dynamixel servo to know what protocol it uses -or- contact Robotis for more information on using their product. To get full resolution of the servo, also ensure you have entered the MAX resolution for that servo model. Each model has different resolutions, or it can be configured using the Dyanmixel utilities.

User-inserted image




Step 8

After you have enabled your servos, press Save

User-inserted image




Step 9

Now we will show you an example of how the servo can be moved. We will do this by using a generic horizontal servo control. Press Project -> Add Control to return to the add control menu. Navigate to servo and select Horizontal Servo. Remember, any control in EZ-Builder that uses servos can now control dynamixel servos by the respective Vx (virtual) servo ID.

User-inserted image




Step 10

Press the GEAR icon to configure the horizontal servo control.

User-inserted image




Step 11

To configure this control to use a virtual servo, select the servo to bring up the port dialog. This applies to all controls in EZ-Builder that use servos.

User-inserted image




Step 12

Select the Virtual servo ID for your dynamixel servo from the list and press Close.

User-inserted image




Step 13

Now use the sliders to specify the Min and Max position that you wish this servo to move and press Close.

User-inserted image




Finished

You can now control the dynamixel servo with the horizontal servo control. To find out more about servos, consult the learn section of this website for activities on using your ez-robot product.

Synthiam
#32   — Edited
i explicitly specified support of models in the plugin and on this description page that i verify and know work. Those servo models which are specified in the plugin are XL-320, AX-12, and XL430. Any servos outside of those 3 are not supported. If another servo model works for you, great. The only 3 that i will discuss and acknowledge supporting are XL-320, AX-12, and XL430.
#33   — Edited
The AX-12 servo controls are the same commands as the older servos. 

I had tried earlier today with the robot heads, with no movement. User error. Once I figured out what went wrong, I tried again with the most recent updated plug in and the heads came to life.

I now have both types of servos working in the same environment. Thanks again for all the hard work. I never stop praising the time and effort you guys put in. Hopefully you can accept apologizes.
Synthiam
#34  
Thanks - there's no need for apologies. Eventually i have to draw a line on how far down the rabbit hole i go supporting a product that makes it impossible to support. In this case, i praise dynamixel servos for their robustness and quality but it's a full-time job maintaining the communication protocol differences between models. The only reason for not having a standard protocol across all models is poor planning. However, that's common with hardware companies because hardware people do not understand software and vice versa. Pick one thing to be good at and focus on that only.
#35  
Totally agree. Hopefully they don't change their products any further. Don't fix it if it ain't broke. I'll try and dump these $229 servos on ebay and stick with the $50 ones for now. Thanks again.
#36  
Hello from the ROBOTIS Customer Support team! 

We were informed that there was some confusion regarding the Communication Protocols and firmware of DYNAMIXEL smart actuators and their implementations.

All DYNAMIXEL smart actuators communicate over a shared serial bus using asynchronous serial communication, over which users may send instruction packets with commands, or receive status packets with information. The method used to order the data contained in these packets is known as the DYNAMIXEL Communication Protocol. 

Protocol 1.0 was the first Communication Protocol implemented in DYNAMIXEL firmware, and was used with all classic series of DYNAMIXEL including DX, EX, RX, AX, and MX models, and has seen well over a decade of use implemented in these models. This Communication Protocol works well for DYNAMIXELs in these series,  and allows for simple packet construction and relatively simple validation via checksum. 

Protocol 2.0 is the modern implementation of ROBOTIS' Communication Protocol for DYNAMIXELs and was recently released with DYNAMIXEL X-series and DYNAMIXEL PRO-series. Protocol 2.0 was developed to more effectively manage larger amounts of data while maintaining DYNAMIXELs' asynchronous serial communication through instruction and status packets. Protocol 2.0 includes an expanded set of packet instructions, as well as CRC-based packet validation to eliminate the need for (potentially huge) checksum calculations. 

In addition to Communication Protocol, every DYNAMIXEL is operated using the Control Table. The Control Table contains every numbered firmware address that the user has access to and which may be referenced in instruction or status packets. Many models of DYNAMIXEL which used Protocol 1.0 utilized similar Control Tables, and this has been continued for DYNAMIXELs which use the newer Protocol 2.0 being associated with "Control Table 2.0". For a "Control Table 1.0" example, on AX-12A the firmware address for Goal Position is 30, which is identical to Goal Position for MX-106. "Control Table 2.0" is much the same- Goal Position on an XL430-W250-T is firmware address 116, which also matches the Goal Position address of XH540-W150-T.

ROBOTIS realizes that a change in Communication Protocol and firmware features can be an adjustment the DYNAMIXEL community, and for this reason ROBOTIS included a firmware parameter known as "Protocol Version" in Control Table 2.0 DYNAMIXELs. This value acts to switch the DYNAMIXELs' accepted communication format between Protocol 1.0 and Protocol 2.0 packet structures. In addition, users can upgrade their MX-series DYNAMIXELs to Control Table 2.0 for the new firmware features, new control table, and "Protocol Version" parameter for Communication Protocol flexibility.

If anyone has further questions about DYNAMIXEL actuators or ROBOTIS products feel free to reach out to our Customer Support team at CS@robotis.com, and we're excited to be a part of the Synthiam and EZ-Builder community!:)
Synthiam
#37   — Edited
Robotis - great to see you! The challenge we had experienced is not due to understanding the protocol difference, but the difference in the protocols between product models. However, we redesigned the robotis dynamixel plugin and it's working great now... continue reading

The Protocol 2.0 has different commands in the control table for different servo models. For example, the XL-320 with protocol 2.0 uses decimal 30 (16 bit value) in the control table for Set Goal Position and the XL430 uses decimal 116 (32 bit value) in the control table. So each servo uses the same "protocol" but different commands, which isn't entirely a protocol if they're different enough to have varying bit sizes and command values.

Also, the behavior of the servos are different. The XL430 requires Torque Enabled (decimal 64) to be set before the servo will move, while all other servos will move when they receive the goal position. This behavior added a number of hours of trouble-shooting because there's no documentation we came across stating the torque must be enabled before Set Goal Position would work.

We love your hardware and products, and will continue supporting them. However, documentation and standardization across servo models using the same protocol versions would be appreciated in future products:). I enjoy working with you to achieve our mutual goal of robots helping society, together.

Thanks for responding and hope to see you around often