gazebosim/gz-gui

Add transport interface to insert plugins

Open

#379 opened on Mar 29, 2022

 (0 comments) (0 reactions) (0 assignees)C++ (68 forks)auto 404
enhancementhelp wanted

Repository metrics

Stars
 (103 stars)
PR merge metrics
 (PR metrics pending)

Description

Desired behavior

A developer should be able to load a new GUI plugin programmatically. For example, they may want to load a plugin to display information to the user whenever an entity is inserted in simulation.

Alternatives considered

Right now, the end user would need to manually load the plugin from the menu and configure it manually every time.

Implementation suggestion

At the moment, GUI plugins can already load other GUI plugins by directly calling Application::LoadPlugin:

https://github.com/ignitionrobotics/ign-gui/blob/ec910ed6de3e1745ac9e9288d9c1c673ed08cd9e/include/ignition/gui/Application.hh#L82-L93

But that's not available to other processes. I think an Ignition Transport interface would be a good way to expose plugin loading to other processes (such as Gazebo's server). The ignition::msgs::Plugin message could be used for the request.

Additional context

The specific use case we have is launching ignition::gazebo::gui::Plot3D plugins whenever a new entity is spawned, so its path is plotted automatically.

Contributor guide