Skip to content
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

Feature idea: add freedrive_mode as interface #525

Open
fmauch opened this issue May 6, 2022 · 3 comments
Open

Feature idea: add freedrive_mode as interface #525

fmauch opened this issue May 6, 2022 · 3 comments
Labels
enhancement New feature or request

Comments

@fmauch
Copy link
Collaborator

fmauch commented May 6, 2022

Adding an interface for activating the freedrive mode would probably be beneficial especially in situations where you don't have a teach pendant available.

As activating and deactivating freedrive_mode is available in ur_script, this could be easily added.

I suggest using a topic interface with a keepalive mechanism, so a user would have to regularly send a message to activate it. If input on that topic times out, it should be deactivated. The reason for that would be that it would have the same "deadman" mechanism as on the TP.

By providing a custom message and not only a simple bool topic we could restrict the freedrive functionality to only certain axes. It would probably be best to use URs feature notation for that.

It should be fairly easy to get a proof of concept running with this.

A few culprits to keep in mind:

  • This would only work if the robot is in remote_control mode
  • Activating this will stop script execution of other scripts, meaning users would have to restart external control afterwards. (Same goes for using the teach button on the TP, though)
  • The URScript function teach_mode has been migrated to freedrive_mode. We should check from which version on

@fmessmer, @floweisshardt FYI

@fmauch fmauch added the enhancement New feature or request label May 6, 2022
@floweisshardt
Copy link

+1 for enabling this feature through a ROS interface!

Thanks @fmauch for wrapping this up.

@shuobh
Copy link

shuobh commented May 27, 2022

+1 This would be really useful!
I currently ran into an issue when switching between freedrive (with URScript) and remote control. The way I do so is:

  • rosservice call stop -> wait 0.5s -> publish urscript to change to freedrive
  • rosservice call stop -> wait 0.5s -> rosservice call play -> wait 0.5s -> start publishing trajectory using actionlib

If I do not have the 0.5s delay in between, although rosservice returns success in stop and play, it is not really ready to run new commands. 0s delay fails consistently and 0.2s delay fails randomly. So far 0.5 is the magic number.
If freedrive_mode is implemented, then I assume it wouldn't be necessary to add delays anymore.

However, the open question here is why UR is not immediately ready after the rosservice call? If there is a determined delay, why can't that be checked within the rosservice and only return when it is really ready to operate?

@t-schnell
Copy link
Collaborator

#546 offers a first, prototype implementation of this feature. Feel free to try it out and please let us know if this would work for your requirements - or what type of changes you would like/need for the feature to be useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants