Dynamixel low speed jerky motion
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