xArm-Developer / xArm-Python-SDK

Python SDK for UFACTORY robots, 850, xArm5/6/7, and Lite6.
https://www.ufactory.cc
BSD 3-Clause "New" or "Revised" License
163 stars 105 forks source link

Velocity control mode acceleration #43

Closed BugLight closed 6 months ago

BugLight commented 1 year ago

Greetings! How can I control acceleration in velocity control mode? I use vc_set_cartesian_velocity method to set target velocity. But it seems that arm gains speed very slowly. I have already tried set_tcp_maxacc method and nothing changed.

Looking for your help!

penglongxiang commented 1 year ago

Hi, if set_tcp_maxacc still can not make a difference, I suppose it would be the jerk (derivative of acceleration) being low (for stable and smooth transition), however, its value for velocity mode is fixed currently, we will test and increase it in next controller firmware updates. May I know what is your target linear velocity and expected time to reach it?

BugLight commented 1 year ago

Hi, if set_tcp_maxacc still can not make a difference, I suppose it would be the jerk (derivative of acceleration) being low (for stable and smooth transition), however, its value for velocity mode is fixed currently, we will test and increase it in next controller firmware updates. May I know what is your target linear velocity and expected time to reach it?

Thank you for your answer! Maximum possible acceleration and jerk would be the best in our case . We would expect the arm to stop completely within ~40 ms. Sure, maximum speed to meet this requirement depends on maximum acceleration possible. If jerk and acceleration could be configured in velocity control mode just like in position control mode we would really appreciate that!

BugLight commented 1 year ago

@penglongxiang Hello! Do you know when this feature is going to be implemented? Should we wait or it is not planned for release?

penglongxiang commented 1 year ago

We are in the process of optimizing it, could you tell us 40ms is from what velocity to decelerate and stop? I think it is relatively harsh for a high speed.

Will set_state(4) directly be suitable for your case?