I'm trying to simulate a humanoid robot using Gazebo with plugins. Since our actual model uses Dynamixel motors, I'd like to know how exactly they work to make the simulation as realistic as possible.

Gazebo offers two options to control joints. One is a PID controller, provided by the JointController class. The other way is to directly set a torque to the joint. (The PID method too is ultimately implemented using torques).

Currently, I'm trying the PID-based implementation. I've used a P-only controller with damping on all joints (I've had to guess both values). However, there is a large amount of noise, and the difference between actual and desired position is at times as much as 10-12 degrees (especially when the foot of the robot hits the ground).

Does the actual motor use a PID controller as well? I can't seem to find the details here, Dynamixel EX-106 User's guide, but this link, Dynamixel EX-106+ Robot Actuator mentions "Compliance/PID : Yes".

If the motor does use a PID controller, then what are the parameters? And how does it allow us to set moving speed then?

If the motor doesn't use a PID controller, then what is the pattern of torque provided? In the manual (first link), I found this

From the current position 200 to 491 ( 512-16-5=491 ), movement is made with appropriate torque to reach the set speed; from 491 to 507 ( 512-5=507 ), torque is continuously reduced to the Punch value; from 507 through 517 ( 512+5=517 ), no torque is generated.

This is rather vague though, and no further details are provided.

Also, I'm aware that extremely high damping and extremely high P-values might do the trick. But I want to simulate what actually happens on the motors, and that is probably not the way to go.

I'd appreciate it if anyone has any idea of what Dynamixel servos do, or examples of simulated Dynamixel motors anywhere else.


1 Answer 1


Based on the figure on pg 27 of the manual, it looks like the EX-106 implements a simple proportional controller, with a deadband when the servo is very close to the goal position. The manual calls the Proportional term "compliance slope" and calls the deadband width "compliance margin." Looks like you can use a different Proportional term in the clockwise direction than in the counterclockwise direction. There don't seem to be integral or differential terms.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.