Kinovarobotics / Kinova-kortex2_Gen3_G3L

Code examples and API documentation for KINOVA® KORTEX™ robotic arms
https://www.kinovarobotics.com/
Other
118 stars 87 forks source link

Minimum time angular waypoint trajectory #190

Open rraetz opened 11 months ago

rraetz commented 11 months ago

We have a Gen3 and compute waypoints in joint space that we want to execute as fast as possible. I adopted the waypoint example of the python API.

From the manual I understand that I have three options:

Users have the option to apply constraints to trajectories. There are three options available for constraints: Duration - the time period (in seconds) in which the trajectory is to be carried out Speed - the maximum speed (meters/second for Cartesian, degrees/second for angular) of the motion while carrying out the trajectory No constraint - the robot will go to the endpoint without the time or speed being

However, when I do not set the duration and run the validation, I get a message that the time-optimal spline interpolation is not implemented yet.

How can I obtain a minimum-time execution of the waypoints? Is there a way of pre-computing the minimum duration manually and then set the duration accordingly? Maybe you can specify what kind of motion profile is used to compute the angular waypoint trajectory?

Many thanks for your advise!

martinleroux commented 1 month ago

Hi @rraetz .

Apologies for the very delayed response, as I have been saying in multiple other threads, I am in the process of cleaning up our list of issues to breathe some life into our online presence.

Regarding your question, there is currently no way to do this with the functions available from the API. You could either move to cartesian waypoint trajectories - optimal blending does optimize for time. Alternatively, you can compute a trajectory that does run, but define all of your durations as a duration * scaling factor and then reduce the scaling factor until the robot can't make it anymore. This is admittedly not a time-optimal solution, but is the best solution I can think of to reduce the duration of the trajectory as much as possible.