New Robotis Dynamixel Servos (MX-28) Sport 360-Degree Rotation and 4x Angular Resolution

MX-28 Robotis Dynamixel Servo

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).  


The New Robotis Dynamixel MX-28:


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):

MX-28 Robotis Dynamixel Servo   MX-28 Robotis Dynamixel Servo

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:

MX-28 Robotis Dynamixel Servo Internals (Circuit Board Top)   MX-28 Robotis Dynamixel Servo Internals (Circuit Board Bottom)

MX-28 Robotis Dynamixel Servo Internals (Gears Bottom) MX-28 Robotis Dynamixel Servo Internals (Gears Top)

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!


Updated Software Library:


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  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  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:

USB2Dynamixel Setup with MX-28 Robotis Dynamixel Servo


And the following code snippet (eg. in IPython):

from lib_robotis import *
import math 
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.


New Applications:


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...


DARwin-OP Humanoid Robot





** 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...



Thanks for this review. I just "discovered" the MX-28. I'd been looking for servos to drive a stabilised camera gimbal but wrote Dynamixel off because of the poor resolution. But obviously the MX-28 fixes that and introdiuces some other advantages too.

 Something you might know - the RX series has the limitation (I gather) that you couldn't get position feedback while in wheel mode. With the sexy new magnetic encoder, do you know if this is now possible? (I see that the value range for Current_Position hasn't changed, so I'd need to count the revolutions myself.) 

—Jeremy Esland

I am looking for the Schematic of AX12+. If you have then please give me.




I am interested in linear system model and I am looking for information about the current feedback and the load feedback. If you have any information... Thanks !



Thanks for providing this package. I am using MX series dynamixel. Can you tell me which version of serial module does this package use? Because it is showing a lot of errors on 'setParity', 'setStopbits',etc. Also, from where can I get the file?




I always just used the normal python serial module. On Ubuntu, that would be python-serial. Might I ask: What version of python are you using?  I know it works on Python 2.x, but I don't think I've ever tested it on 3.x.

There's more extensive documentation about the code on the other Robotis servo article.

—Travis Deyle