ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question

Dynamixel low speed jerky motion

asked 2015-04-23 07:11:27 -0500

Alan gravatar image

Hi All,

I have got a slight problem getting the MX-106T Dynamixel to move smoothly while using ROS and MoveIt. I'm using Arbotix driver with USB2Dynamixel controller. I can get the arm moving, planning and moving as intended, in fact it is working perfectly when using default controller max_speed of (702) via the YAML file max_speed702. However when I reduce the velocity via either controller YAML or the Joint_limits (when using moveIt) the motion is no longer smooth and occasionally spikes during command execution either via direct rostopic pub or using moveIt commander max_speed:60.

So the problem is probably the Arbotix, however if I set the max_speed back to 702 then launch the controller and use the following command

rosservice call /joint_name/set_speed 0.3

Then executing the motion command will be make the arm move slower and perfectly smooth as shown in the image set_speed 0.3. At this point all motion are no longer jerky but another problem arises in moveIt where the robot always collide with the given constraint. So my question is where is the issue of this jerky motion in first place and why would the manual set_speed solves that motion but also introduce a problem of its own.

YAML file for controller, which I have modified the rate/ and write_rate few times to avoid common jerky movement.

port: /dev/ttyUSB0
baud: 200000
rate: 300
sync_write: True
sync_read: False
read_rate: 60
write_rate: 60
joints: {
  wrist_flex_joint: {type: dynamixel, id: 4, ticks: 4096, neutral: 2048, range: 360, min_angle: -111, max_angle: 111, max_speed: 702},
  sholder_pan_joint: {type: dynamixel, id: 1, ticks: 4096, neutral: 2048, range: 360, min_angle: -180, max_angle: 180, max_speed: 702, invert: true},
  elbow_lift_joint: {type: dynamixel, id: 2, ticks: 4096, neutral: 2048, range: 360, min_angle: -90, max_angle: 90, max_speed: 702},
  l_gripper_joint: {type: dynamixel, id: 5, max_speed: 15, invert: false},
  r_gripper_joint: {type: dynamixel, id: 6, max_speed: 15}
controllers: {
 arm_controller: {onboard: False, action_name: arm_controller/follow_joint_trajectory, type: follow_controller, joints: [sholder_pan_joint, elbow_lift_joint, wrist_flex_joint]}
imu: true

Any one had this issue or understands this problem, please let me know I have tried few things and this is not making any sense any more.

Many thanks,


edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2015-04-29 04:35:00 -0500

130s gravatar image

Cause of jerky move with Dynamixel can be varied, but one thing worth trying (depending on your robot config, but if it's an arm that connects multiple Dyanmixel for example) is to change compliance. We have an example code, where we increase gain value when a 4DOF arm reaches out horizontally to compensate against the weight of the arm itself. HTH

edit flag offensive delete link more


Thanks for the suggestion, I will have a try and let you know.

Alan gravatar image Alan  ( 2015-04-29 06:12:54 -0500 )edit

Been following the code and example you sent me, I dont think my issue is related to the weight of the arm, because i had the same problem without any load or arm (servo alone) I think is to do with the controller driver (Arbotix), I will maybe try Dynamixel_driver again to verify.

Alan gravatar image Alan  ( 2015-05-01 06:56:26 -0500 )edit

I have followed your example code using dynamixel_controller, and this resolved the jitter i used to get with Arbotix_controller. However I can only execute commands manually via rostopic pub -1 /joint_name/command...... Cant seem to get it working with MoveIt as i get controller handel error

Alan gravatar image Alan  ( 2015-05-06 06:32:44 -0500 )edit

I don't get your situation. Maybe it's worth opening a new question for that. The same example I referred to uses MoveIt! too.

130s gravatar image 130s  ( 2015-05-06 18:27:43 -0500 )edit

Yes is slightly confusing. Anyway I got MoveIt working using your URDF example with my servos (AX-18 and MX-106). And now it is clearly the problem i'm having with jitter is related with MoveIt. Please if you have time look at those two images below to compare velocity changes.

Alan gravatar image Alan  ( 2015-05-07 04:53:14 -0500 )edit

velocity graph for AX-18. Velocity for MX-106. This compares servo movement by using direct rostopic command against MoveIt commander. Thanks for the help

Alan gravatar image Alan  ( 2015-05-07 04:58:49 -0500 )edit

@Alan that's definitely worth opening a new question.

130s gravatar image 130s  ( 2015-05-08 21:59:06 -0500 )edit

Yes, I will

Alan gravatar image Alan  ( 2015-05-11 06:18:16 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2015-04-23 07:11:27 -0500

Seen: 1,608 times

Last updated: Apr 29 '15