# {py:mod}`ros_sugar.robot.plugin` ```{py:module} ros_sugar.robot.plugin ``` ```{autodoc2-docstring} ros_sugar.robot.plugin :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`PluginMetadata ` - ```{autodoc2-docstring} ros_sugar.robot.plugin.PluginMetadata :summary: ``` * - {py:obj}`RobotPlugin ` - ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin :summary: ``` * - {py:obj}`RobotPluginHost ` - ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPluginHost :summary: ``` ```` ### API `````{py:exception} AmbiguousPluginEntryError() :canonical: ros_sugar.robot.plugin.AmbiguousPluginEntryError Bases: {py:obj}`LookupError` ```{autodoc2-docstring} ros_sugar.robot.plugin.AmbiguousPluginEntryError ``` ````{py:method} add_note() :canonical: ros_sugar.robot.plugin.AmbiguousPluginEntryError.add_note ```{autodoc2-docstring} ros_sugar.robot.plugin.AmbiguousPluginEntryError.add_note ``` ```` ````{py:method} with_traceback() :canonical: ros_sugar.robot.plugin.AmbiguousPluginEntryError.with_traceback ```{autodoc2-docstring} ros_sugar.robot.plugin.AmbiguousPluginEntryError.with_traceback ``` ```` ````` ````{py:class} PluginMetadata :canonical: ros_sugar.robot.plugin.PluginMetadata Bases: {py:obj}`ros_sugar.config.BaseAttrs` ```{autodoc2-docstring} ros_sugar.robot.plugin.PluginMetadata ``` ```` `````{py:class} RobotPlugin :canonical: ros_sugar.robot.plugin.RobotPlugin ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin ``` ````{py:method} to_spec() -> typing.Dict[str, typing.Any] :canonical: ros_sugar.robot.plugin.RobotPlugin.to_spec ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.to_spec ``` ```` ````{py:method} from_spec(spec: typing.Dict[str, typing.Any], bus_endpoint: typing.Optional[typing.Any] = None) -> ros_sugar.robot.plugin.RobotPlugin :canonical: ros_sugar.robot.plugin.RobotPlugin.from_spec :staticmethod: ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.from_spec ``` ```` ````{py:property} bus :canonical: ros_sugar.robot.plugin.RobotPlugin.bus :type: typing.Optional[ros_sugar.robot.bus.FeedbackBus] ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.bus ``` ```` ````{py:method} set_bus(bus: ros_sugar.robot.bus.FeedbackBus) -> None :canonical: ros_sugar.robot.plugin.RobotPlugin.set_bus ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.set_bus ``` ```` ````{py:method} on_attached(node: typing.Any, bus: ros_sugar.robot.bus.FeedbackBus) -> None :canonical: ros_sugar.robot.plugin.RobotPlugin.on_attached ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.on_attached ``` ```` ````{py:method} resolve_feedback(topic_name: str, msg_type_name: str) -> typing.Optional[ros_sugar.robot.feedback.Feedback] :canonical: ros_sugar.robot.plugin.RobotPlugin.resolve_feedback ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.resolve_feedback ``` ```` ````{py:method} resolve_command(topic_name: str, msg_type_name: str) -> typing.Optional[ros_sugar.robot.command.RobotCommand] :canonical: ros_sugar.robot.plugin.RobotPlugin.resolve_command ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.resolve_command ``` ```` ````{py:method} subscribe_feedback(feedback: ros_sugar.robot.feedback.Feedback, on_ros_msg: typing.Callable[[typing.Any], None]) -> ros_sugar.robot.bus.BusHandle :canonical: ros_sugar.robot.plugin.RobotPlugin.subscribe_feedback ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.subscribe_feedback ``` ```` ````{py:method} open_command(command: ros_sugar.robot.command.RobotCommand) -> None :canonical: ros_sugar.robot.plugin.RobotPlugin.open_command ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.open_command ``` ```` ````{py:method} send_command(command: ros_sugar.robot.command.RobotCommand, payload: typing.Any) -> bool :canonical: ros_sugar.robot.plugin.RobotPlugin.send_command ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.send_command ``` ```` ````{py:method} list_feedbacks() -> typing.List[ros_sugar.robot.feedback.FeedbackSpec] :canonical: ros_sugar.robot.plugin.RobotPlugin.list_feedbacks ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.list_feedbacks ``` ```` ````{py:method} list_commands() -> typing.List[ros_sugar.robot.command.CommandSpec] :canonical: ros_sugar.robot.plugin.RobotPlugin.list_commands ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.list_commands ``` ```` ````{py:method} list_actions() -> typing.List[ros_sugar.robot.registries.ActionSpec] :canonical: ros_sugar.robot.plugin.RobotPlugin.list_actions ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.list_actions ``` ```` ````{py:method} list_events() -> typing.List[ros_sugar.robot.registries.EventSpec] :canonical: ros_sugar.robot.plugin.RobotPlugin.list_events ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.list_events ``` ```` ````{py:method} describe() -> typing.Dict[str, typing.Any] :canonical: ros_sugar.robot.plugin.RobotPlugin.describe ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPlugin.describe ``` ```` ````` `````{py:class} RobotPluginHost(plugin: ros_sugar.robot.plugin.RobotPlugin, node: typing.Any, bus: ros_sugar.robot.bus.FeedbackBus, monitor_feed: typing.Optional[typing.Callable[[str, typing.Any], None]] = None) :canonical: ros_sugar.robot.plugin.RobotPluginHost ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPluginHost ``` ````{py:method} open() -> None :canonical: ros_sugar.robot.plugin.RobotPluginHost.open ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPluginHost.open ``` ```` ````{py:method} close() -> None :canonical: ros_sugar.robot.plugin.RobotPluginHost.close ```{autodoc2-docstring} ros_sugar.robot.plugin.RobotPluginHost.close ``` ```` `````