-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clear trajectorty/motion buffer to not execute stale commands #31
Comments
if at all possible, I'd advice using the action client to send It will result in much more predictable behaviour, and makes scheduling of motions easier, more efficient and less dependent on timing. Coordination with external nodes is also much easier, as actions follow a very well defined control flow.
see my previous comment.
the driver is not really suited for on-line streaming approaches I'm afraid. It can be done, but by default it's not properly configured for it. The design is optimised for transmitting trajectories to the controller and executing them. Then sending another trajectory, and executing that. Etc. You seem to be using it as an online, real-time external motion interface. I believe that's the reason you are running into the problem you describe. An additional complication is that streaming control will require close cooperation between the producer (of trajectory points) and consumer. Both in terms of taking motion smoothness into account as well as coordination in time (ie: don't send too many points in advance, keep the buffer at a certain level, only send new points if others have been processed, etc).
Perhaps @marshallpowell97 can provide some insight. |
We had attempted to use the
I see, would you possibly have any recommendations on how to adjust for close to an online streaming approach? We have been trying to
That is something we may do. We have been exploring changes in the val3 side initially, attempting to essentially not fill the buffer even if a command was sent unless the previous one has been completed. That was also because, we are attempting to possibly implement a cancellation of the current motion if a new one is received. Our motion commands are generally limited to small displacements of the end effector and not larger motions. |
Hello,
I am currently running a tx90xl and send trajectory messages to the arm by creating a publisher to generate custom trajectories to send to industrial robot client. The publish rate varies and is sometimes dependent on subscribed topic and other processes.
The progress of the arm falls far behind the trajectory and motion buffer and the arm inevitable executes stale commands as it tries to clear the buffer.
I would like to be able to send commands at any rate and have the arm execute the latest it receives and not store all of them to execute.
I am not familiar with val3 and have tried to edit the pgx files to clear the buffers or to change the size but have not been successful.
I add the following lines to after the movej command in motionControl
call libQueueFuncs:clear(qTrajPtBuffer)
call libQueueFuncs:clear(qMoveBuffer)
The buffer still does not clear to only execute new trajectories it receives.
Any help/suggestions would be much appreciated!
The text was updated successfully, but these errors were encountered: