gazebosim / gazebo-classic

Gazebo classic. For the latest version, see https://github.com/gazebosim/gz-sim
http://classic.gazebosim.org/
Other
1.17k stars 477 forks source link

Link Manipulation in GUI #998

Open osrf-migration opened 10 years ago

osrf-migration commented 10 years ago

Original report (archived issue) by John Hsu (Bitbucket: hsu, GitHub: hsu).


Add ability to manipulate a link through GUI control.

See demo video of link manipulation and this demo video.

osrf-migration commented 10 years ago

Original comment by John Hsu (Bitbucket: hsu, GitHub: hsu).


Per discussion with @nkoenig and @spaepcke we will do this in small steps. Potentially something like below:

  1. Control and manipulate only a single link in the entire world at a time. Disable controller when mouse [left] button is released.
  2. Persistant controller for a single link even when mouse button is released. Activating control of a different link disables previous link controller. Alternatively, user can manually disable an active controller by key or mouse buttons.
  3. Persistant control of multiple links simultaneously.

Some other things to think about:

osrf-migration commented 10 years ago

Original comment by John Hsu (Bitbucket: hsu, GitHub: hsu).


see pull request #860 for reference.

osrf-migration commented 10 years ago

Original comment by John Hsu (Bitbucket: hsu, GitHub: hsu).


osrf-migration commented 9 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


Couldn't we just enable the GUI move/rotate tools for individual links? We are now able to select links by clicking twice on a link. Also, publishing to the ~/model/modify topic can set link poses (see PhysicsMsgsTest::LinkPose). It seems like it would be straightforward to adjust the ModelManipulator to act on a link if it is selected. What do you think @chapulina and @iche033 ?

osrf-migration commented 9 years ago

Original comment by Ian Chen (Bitbucket: Ian Chen, GitHub: iche033).


We could do that. Just a question about the reason for having a PID control in the first place? It is for smoother and more stable manipulation of links?

osrf-migration commented 9 years ago

Original comment by Louise Poubel (Bitbucket: chapulina, GitHub: chapulina).


I think right now the ~/model/modify message is only published when the manipulation tool is released, this means the link would get detached from the model while being pulled.

This is probably done for performance issues, I can imagine it being very laggy if we're sending messages back and forth from the server for each pixel the mouse moves?

For the physics side, I'm not sure what happens when you set the position for a link, would it pull the whole model towards it, would the model fight back? I can imagine things snapping in weird directions.

I can enable it in a branch and we see what actually happens.

osrf-migration commented 9 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


My primary motivation for this is models like the block stack that consist of multiple links that are not connected by joints. So if you move one of those, it will not directly affect any other links, except by contact.

It might be weird to move links that are connected with joints, but that's not my primary use case at the moment.

osrf-migration commented 9 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


I think @hsu implemented PID control since it seemed tractable to implement? Or maybe it would play more nicely with links that have connecting joints?

osrf-migration commented 8 years ago

Original comment by Nate Koenig (Bitbucket: Nathan Koenig).