Dynamixel vs Herkulex Servos

Tags: #<Tag:0x00007f9d7cefc7b8>


Hi everyone!

As I said, one of our purposes in U-Robot is to replace Dynamixel servos for Herkulex servos. Here’s a comparative table I made some weeks before to see advantages and disadvantages of this change. Of course there are some points in favour and some against, but I think it’ll work well :wink:

Also, I made a distinction of which servo will be replaced with which servo. For example, in the first two columns I put the Dynamixel AX-12A and the Herkulex DRS-0101 because I’m planning to replace the AX-12A for the DRS-0101. I just related the most similar ones, so the green column with the Herkulex DRS-0401 is just and extra.

You can check all this data from the Dongbu Robot web page; there are all the manuals of each servo.

I’ll be pleased if you guys give your opinion about it. :smiley:


Interesting table, thanks @Red_Stark117. How did you do this table? with datasheets or by testing it?
I think an important fact missing here is the mean price of market for each motors.

Another important thing is the “time to burn” many dynamixel motor burn if they force for a long period of time, In their new series dynamixel add an aluminium case for heat dissipation and optimise the “time to burn”…

If I understood your project you will build an Herkulex Poppy humanoid, how do you manage the difference between Herculex motors tensions?

This is a really interesting contribution, If you use Solidworks to develop your Poppy please use configuration on all parts. If you have any question about the best way to contribute, please do not hesitate and ask us into the forum.

Dynamixel Motor "Time to burn" - Learning the hard way

Thank you very much @Nicolas! :smiley:

I did it with the manuals of both servos, I think those manuals are like the datasheets. You can find this Herkulex manuals in the link I put in the top. I haven´t done any test, but I’ll keep you dated as soon as I do it.

I don’t have any information about that “time to burn” so I’ll do some research and post it when I have some data.

Those different tensions I put on the table are just references, I’m planning to use 12V in all of them :wink:

In fact I’m using SolidWorks, but I began adapting the Herkulex to your designs modifying the original ones you have in the repository so I didn’t create the new configurations. It was a mistake, I didn’t realize how useful it’d be. Sorry :frowning:

I’m not very familiarized with GitHub. But I think it can be fixed, I promise I’ll do it as soon as I have the time :wink:

Thanks for your comments and if I can do something else to contribute, please tell me :smile:


Okay, another important thing I didn’t mention was the prices of the Herkulex motors.
Here they are:

Herkulex DRS-0101: 39.96 USD
Herkulex DRS-0201: 132 USD
Herkulex DRS-0601: 297 USD

*Herkulex DRS-0401: 269.5 USD

These are international reference costs, if you have any questions I’d be happy to answer. :smiley:


Probably a question to you can be if we need to replace MX 64 (http://support.robotis.com/en/product/dynamixel/mx_series/mx-64.htm) by a Herkulex servo which one will you take? And what is the price for that?

Actually I am in the hunt of a same grade servo as Dynamixel but cheaper one.


Thanks for commenting!

The best option for replacing the MX64 is the Herkulex DRS-0601. I’ve made the comparison of both servos and I think they match.

A more complete info is up here in this post, I made a table with all servos. Please, if I misunderstood your question, tell me.

Greetings! :smiley:


Hi Every One!

I have the same project as you @Red_Stark117 and I am drawing a new solidworks model Herkulex ( but forgot to make it in Configuration sorry …).

I am facing some questions you may had about the Herkulex software compatibility with the Dynamixel.

Herkulex specified data (new stall torques, new nominal voltage …) has to be entered somewhere. But do you know on which stage ? Sure it is not in the json configuration file so it is on the Arduino Code ? or somewhere else ?

Thanks for your time :smile:


Hi everybody,
I got with the time some experience bogh with AX12, MX-28, MX-64 abd Herkulex DRS-01 AND DRS-601.

My feedback is that Dynamixel are fairly good (accurate) when controlled in position. My attempts to control them (via a PC)in speed have always been very disappointing. Even within pypot 50 Hz synchro loop. So, if you want to get a perfectly synchronized motion (i.e. a “perfect” straight line from the combination of revolute motions), you need
to control dynamixel using position control only.
Another concern is that the quality control of Robotis looks going down and down. I have been obliged twice to return back MX-28 to Robotis due to clearance in crucial dimensions exceeding 0.6mm.
However, one thing very nice with MX-28 is their soft compliance allowing to be back driveable, a property I have never find elsewhere.

I comparison, Herkulex have a much better accuracy regarding their mechanical specs. And further, they have a very good controller


Sorry for this long Post …continued here.
In addition Herkulex have a speed controller allowing very accurately synchronized motions (play time). Their controllers allow more advanced control due to their internal time reference.
All in one, I think Herkulex match nearly industrial grade quality. If you don’t need backdriveability, they are definitely the best choice.


Thank you for this feedback. What do you mean when you say back driveable for the mx-28 ?


Hi Thot,
Back driveability is the ability for a robot motor to be directly moved by human hand. Most servomotors use a high speed and very low torque motor wich need a lot of gear stages in order to increase torque at the expense of speed. But if you want to move by yourself the output shaft of most servos, you usually experience a real resistance to do it, mainly due to frictions between gears. MX28 have the nice property to be very freely moved by hand, and moreover, when powered. This allows interaction beyween robot and a user (called compliance).


Hello everybody,

First of all, since this is my first post I would like to express my utter admiration for what the Poppy team and contributors have achieved and the way they are sharing with the community. By doing so, you are creating a great platform for all kinds of projects, and I am very excited to see all the things that will be built on it.

Speaking of which, for my next project I am considering Herkulex servos, and a key criteria is whether those can be supported by the pypot library.

Would you guys have a view on that ?

Another team at Inria created a “SmartServoFramework” that seems to be able to manage both types, but I am not sure how easy it would be to add the same flexibility to pypot.

Cheers !


Hi @rml4o, and welcome to the poppy family!

Herkulex is not supported by pypot at the moment but pypot is a really modular project and it will be easy to add herkulex compatibility!


If you plan to add support for Hercules motor in pypot (which would be really great!) you can follow the documentation here which explains how to extend pypot.


OK I will give it a shot and let you know how it goes.
Given the price difference it is worth spending a few days on adding that support !


Quick update: I have successfully added support for herkulex motors in pypot.

Both low level and high level functions are included, and dynamixel robot configuration files can be loaded seamlessly (just need to replace dynamixel model names with herkulex model names in the file).

There was a bit of work involved as the underlying mechanics are quite different from those of dynamixel motors (e.g. work with goal position / time vs goal position / speed for dynamixel; dedicated instruction to define goal vs direct RAM write in dynamixel…).

I will carry additional tests and let you know once the code is ready to be shared.

@Red_Stark117, @Bertrand, any cons I might have overlooked regarding those motors, before I go on a servo buying spree :slight_smile: ?


Another update: it is now possible to use both Dynamixel and Herkulex servos in a single pypot robot!

The only existing file that needed to be slightly changed was config.py, as all the new Herkulex stuff is in independent files. This was required in order to specify which ports should be scanned for each servo manufacturer (auto detected for each pypot controller - a single pypot controller cannot mix servos from both manufacturers).

This is to avoid ‘polluting’ all available ports with detection commands when scanning, as device on other ports might not speak the same language (could even be a sensor e.g. razor IMU).

For what it’s worth, see below a picture taken with one servo of each manufacturer doing a synchronized sinus wave at 50Hz, as part of a single pypot robot. If you focus hard enough you can see them move together :wink:


Great!! This is a great contribution to the community!

Do not hesitate to open a pull request.


I have created a GitHub respository (https://github.com/rml4o/pypot_herkulex) with a pull request on the new code, as well as a simple test config with 6 hkx + 2 dxl servos.

This is still a bit rough and WIP but it works, including with primitives.

I haven’t had time to check the compatibility with Bumblebee yet, but I would love to make it work for Herkulex.


You mean the compatibility with poppy-monitor coded by bumblebee ?