Connect and control Robotis Dynamixel Servos to ARC. This open-source plugin converts the Virtual Servo ports on ARC (v0-v99) to control Robotis Dynamixel Servos.
+ How To Add This Control To Your Project (Click to Expand)
- Make sure you have the latest version of ARC installed.
- Select the Get button in this page to download the archive file.
- Double click the downloaded archive file to execute installer.
- The installer will add this control to ARC.
- Load ARC and press the Project -> Add Control button from the menu.
- Choose the Servo category tab.
- Press the Dynamixel icon to add the control to your project.
Connect and control Robotis Dynamixel Servos with ARC, 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 compatible protocols. 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.
This plugin requires a cable accessory to easily connect your servo to the EZ-B. If you desire to READ servo positions, the cable will need to include both RX and TX. There are instructions below for connecting the servo to READ positioning.
EZB Controller Types
There are a few different types of EZB controllers, that each has its own hardware configuration. We cover the controllers and what UART should be used below.
The IoTiny does not have a hardware UART, so it cannot read servo positions. This means you can use any of the digital ports to transmit servo positions to the servo. Connect any digital port of the IoTiny to the signal wire of the dynamixel connector.
Arduino/EZ-Robot EZB v4 Wiring For Reading Positioning
You must manually wire the servo yourself to these controllers using this diagram. If you wish to read servo data with bi-directional communication, you must connect TX and RX ports together. On the EZ-Robot EZ-B v4, it’s port D5 (TX) and D6 (RX) for UART #1 together.
Robotis Open CM9.04 Controller
The Robotis Open CM9.04 controller can either support servos connected directly to itself or through the expansion board. If using only the controller, the UART #0 is used in ARC. If using the expansion board, UART #2 is used in ARC.
Robotis OpenCR Controller
The Robotis OpenCR controller can support servos connected directly to the onboard connectors. This uses UART #2 in ARC, which means select UART #2 in the dynamixel robot skill config.
UART/Serial Port Overview
There are a few options for connecting the Dynamixel servos that were covered above. Here is a summary...
1) EZB controllers without hardware UART (such as IoTiny) will use software serial pins for transmitting servo positions only. They cannot read servo positions. With this setup, you can use any digital port.
2) EZ-Robot EZ-B v4 or Arduino Mega is UART #1 (port D5 & D6). But depending on how many UARTs there EZB has, you can connect to any UART.
3) Robotis Open CM 9.04 without expansion board uses UART #0.
4) Robotis Open CM 9.04 with expansion board uses UART #2.
5) Robotis OpenCR uses UART #2.
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 to power.
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.
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.
There are a number of EZ-Script commands added with this control. The commands are as follows...
Returns the temp of the specified servo
Returns the direction of load on the specified servo
Returns the load of the specified servo
Returns a ping response if the servo exists. Otherwise, returns false
Video Demo With Robotis Arm
This video uses a Robotis Dynamixel arm and XM430 servos with an OpenCM9.04 controller.
Step by Step Instructions
Once you have the servo wired, and sufficient power is provided, you can use any control in ARC 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.
Connect to your I/O controller
Add the control by selecting the Project tab and Add Control
Navigate to the servo tab and select Dynamixel. If the plugin has been successfully installed, you will see the Dynamixel plugin in the list.
The Dyamixel control will be added to your project. Press the Config gear icon to load the configuration screen.
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 ARC. 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.
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 ARC software) to assist you robot development. It is recommended to use the blue question marks and read the content to understand what options do.
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 ARC software will use the Vx (virtual servos) corresponding with that ID. For example, if you enable Dynamixel servo ID #2, the ARC 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.
After you have enabled your servos, press Save
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 ARC that uses servos can now control dynamixel servos by the respective Vx (virtual) servo ID.
Press the GEAR icon to configure the horizontal servo control.
To configure this control to use a virtual servo, select the servo to bring up the port dialog. This applies to all controls in ARC that use servos.
Select the Virtual servo ID for your dynamixel servo from the list and press Close.
Now use the sliders to specify the Min and Max position that you wish this servo to move and press Close.
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 Synthiam product.