Robotics StackExchange | Archived questions

Dynamixel XL430-W250 does not reach goal position

When placed in position control mode and given a goal position, the motor moves towards the goal position but stops before reaching that position (+- 10 positions i.e. +- 0.88 degrees). Example: If i give the goalposition as 1000 , the motor stops at 995 (presentposition); goal_position 1450, actual position 1446

I am using ROS dynamixel SDK to control the motors. What can be done to make the motors reach the position exactly?

dynamixelstate: - modelname: XL430-W250 id: 1 torqueenable: 1 goalcurrent: 0 goalvelocity: 415 goalposition: 1000 presentcurrent: 0 presentvelocity: 0 present_position: 995 moving: 0

dynamixelstate: - modelname: XL430-W250 id: 1 torqueenable: 1 goalcurrent: 0 goalvelocity: 415 goalposition: 1450 presentcurrent: 0 presentvelocity: 0 present_position: 1446 moving: 0

Asked by jelly_legs on 2018-09-11 11:30:26 UTC

Comments

Answers

There is a Moving Threadhold address in Dynamixel control table. It is set to 10. If you want to change this value, add your dynamixel_state or modify EEPROM data using Dynamixel wizard or R+ manager. http://emanual.robotis.com/docs/en/software/rplus2/manager/

Asked by Gilbert on 2018-09-11 19:29:39 UTC

Comments

Ah, the AX series has the "CC/CW compliance margin" in the control table, it did not occur to me that the new control table in the X-series accounts for that in "Moving Threshold". Much obliged, Gilbert!

Asked by jelly_legs on 2018-09-12 16:22:53 UTC

It didn't solve the problem exactly. The disparity in position changed to +- 7 from +-10 even after changing the "Moving_Threshold" from 10 to 0. This is really frustrating. It seems like the X-series is better suited for wheel type robots than manipulators.

Asked by jelly_legs on 2018-09-13 11:30:47 UTC

From the e-manual: Moving Threshold: This value helps to determine whether the Dynamixel is in motion or not. When the absolute value of Present Velocity(128) is greater than the Moving Threshold(24), Moving(122) is set to ‘1’, otherwise it is cleared to ‘0’.

Asked by jelly_legs on 2018-09-13 11:31:37 UTC

HI ,

I'm having the same issues now. Anyone able to resolve this?

In my attempts to calibrate a pan-tilt mechanism, I used a laser dot to track my position on a grid. I've been playing with the PID position control settings without any luck. Changing the moving threshold did help a little bit.

Asked by meat030 on 2019-03-22 01:39:26 UTC