0
$\begingroup$

Rosanswers logo

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,

Alan


Originally posted by Alan on ROS Answers with karma: 43 on 2015-04-23

Post score: 1

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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


Originally posted by 130s with karma: 10937 on 2015-04-29

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by Alan on 2015-04-29:
Thanks for the suggestion, I will have a try and let you know.

Comment by Alan on 2015-05-01:
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.

Comment by Alan on 2015-05-06:
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

Comment by 130s on 2015-05-06:
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.

Comment by Alan on 2015-05-07:
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.

Comment by Alan on 2015-05-07:
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

Comment by 130s on 2015-05-08:
@Alan that's definitely worth opening a new question.

Comment by Alan on 2015-05-11:
Yes, I will

$\endgroup$

Your Answer

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