LedPlugin is a model plugin included with gazebo that synchronously flashes and dims light and visual objects on a model. By giving parameters to the plugin, you can choose which lights and visuals to blink, and you can also specify the duration and interval time of flashing for each of lights. By inheriting this plugin, you can also use internal features, e.g., dynamically turning the lights on/off.
Insert your plugin block with the
filename attribute set to
libLedPlugin.so within the
<model> element. In the following example (the world file is available here), the model has two links each of which has two light elements.
This plugin inherits from FlashLightPlugin, so it takes the same parameters as the base plugin does. The difference is that, when you place a
<visual> object with the name of the
<light> object under the same
<link> object, it will blink at the same timing.
<model name='light_model'> ... <link name='link'> ... <light name='lamp' type='spot'> ... </light> <visual name='lamp'> ... </visual> ... </link> ... <plugin name='light_control' filename='libLedPlugin.so'> <light> <light>link/lamp</light> <duration>0.5</duration> <interval>0.5</interval> </light> ... </plugin> </model>
The diagram below shows an abstract structure of the plugin and its components.
LedPlugin class holds
LedSetting objects, each of which holds a unit of settings and maintains the corresponding light element by the Gazebo transport topic.
LedSetting are child classes of
FlashLightSetting respectively so they have the functionalities of the base classes.
They send messages to the topic
~/visual to update the specified
<visual> objects. As
Dim() are called,
LedSetting() publishes a message to this topic.