Robotis has just announced a new line of Dynamixel Servos: the MX-series, beginning with the release of the MX-28. The MX-28 servo has some distinct improvements over its RX-28 brethren: 12-bit (0.088°) angular resolution (four times that of the RX), full 360° controlled rotation (rather than 300°), non-contact magnetic encoders (not subject to mechanical wear), etc. -- and all for about the same price (MX-28: $219.90 MSRP, RX-28: $200)! Of note, the MX-28 is prominently featured as part of the new DARwin-OP humanoid -- the recent Nao competitor that Robotis created in collaboration with Virginia Tech's RoMeLa Lab. Perhaps best of all... Hizook was selected as a beta tester for this new servo (probably owing to our prominent coverage of the RX-series and our awesome cross-platform open-source Robotis software library). We were impressed with the new MX-28 -- read on for details, including an exclusive look inside the new servo as well as a quick tutorial using the updated open-source drivers (in python, complete with ROS bindings).
Here is a peek at the new servo. Externally, it looks virtually the same as the RX-28, except for the new 3-wire connector (instead of 4-wire):
From the specifications, it sports some major upgrades:
||12-bit magnetic encoders (4096 settings, 0.088°/tick) for finer position control. No more mechanical wear and breakdown like in the old contact potentiometers.|
| Running Degree:
||Full 0°-360° range, or continuous turn. No more "dead region."|
||32-bit ST Cortex-M3 (ARM) running at 72 MHz. Results in faster control loops.
| Buad Rate:
||8kbps - 3Mbps. Faster polling and control rates from the host PC (or controller).
| Control Algorithm:
||PID control. Easier to tune the three gains compared to the old slew settings.
| Physical Link:
||3-wire TTL serial rather than the old 4-wire RS-485. This should make interfacing to microcontrollers much simpler!
| Thrust Washer:
||A new thrust washer (white) increases the horn support and improves durability.
| Comm Protocol:
||Same as the RX-28!
||About the same!! ($219.90 MSRP for the MX-28, $200 for the RX-28)|
Internally, the new MX-28 is totally different than the RX-28:
On the top PCB, you can see the new controller, a STM32F103C8T6 (an ARM Cortex M3), and the two half H-bridges (SUF2001) used to drive the motor. There would also appear to be a 5-pin programming header for the ARM controller, making the whole thing eminently hackable. On the PCB's underside, you can see the new (and very cool) magnetic rotary encoder (AS5045), a pair of 1117-variety voltage regulators (eg. IL1117-5.0), and a buffer / line driver (74HC126D). In this photo, you can also see the bottom of the servo output shaft, in which a small magnet is embedded. The magnetic flux is sensed by a hall-effect array inside the encoder chip, which computes the output shaft's position -- very cool.
As for the gear train... it's rather straight forward. I'm much more impressed by the injection-molded casing. I'd absolutely love to see an overview of how they manufacture (and assemble!) these servos. Anyway, it is truly an awesome hardware design -- it spanks OpenServo.
I seriously hope that other MX-series servos (eg. MX-12, MX-18, MX-64, and MX-106) are soon to follow!
While working at Georgia Tech's Healthcare Robotics Lab, I wrote the open-source Robotis Dynamixel Servo software libraries that let you control the servos from a PC using a USB2Dynamixel. The stand-alone (Python) open-source library is cross-platform (Linux, Windows, and Mac) and has now been tested on all (AX-12, RX-28, RX-64, and EX-106) of the Robotis servos. You can find an unofficial version of the stand-alone library here, in lib_robotis.py. The official version resides in gt-ros-pkg, Georgia Tech's ROS (Robot Operating System) repository, which also possesses ROS interfaces to the stand-alone library. These ROS interfaces are apparently used by several other research labs.
Amazingly, the MX-28 worked straight away with the old libraries -- all it took was a new configuration listing to specify the home position and improved encoder resolution (ie. in servo_config.py). That's some phenomenal back-compatibility!
To make life a bit easier for y'all, I tweaked the library to allow no-configuration operation for the new MX-series. I'm not going to review the entire software tutorial -- you can read the old Robotis software tutorial. You'll need a USB2Dynamixel:
And the following code snippet (eg. in IPython):
from lib_robotis import *
dyn = USB2Dynamixel_Device('/dev/ttyUSB0')
p = Robotis_Servo( dyn, 1, series = "MX" )
p.move_angle( math.radians( 30.0 ), blocking = False )
Note the new "MX" series constructor argument.
From the official Robotis homepage, it looks like one of the major driving factors behind MX-28 production is the new DARwin-OP humanoid that was created in collaboration with Virginia Tech's RoMeLa Lab. Right now, it seems that DARwin-OP retails for $12,000 USD, but is all sold out. This could be some serious competition for Aldebaran's Nao...
** Two quick notes:
(1) I received two free MX-28's from Robotis for beta evaluation. Thus, I'm not entirely unbiased in my opinion of the new servos. Personally, I think they're great. We use lots of their older RX-series servos in our lab -- long before I had reason to issue a disclaimer.
(2) You might have realized the distinct lack of Hizook posts as of late. I'm working on my all-consuming dissertation and have "laser-focus." Thankfully, I wrote this article before getting completely slammed. Perhaps the normal posting rate will resume after my defense...