Hi,
Your friendly neighborhood navigator here - happy new year! To celebrate the passing of another year, why not add another type of plugin?
Thus, I’m happy to announce that we’ve pluginized the BT Navigator server to allow users to define their own custom navigation interfaces (in addition to the currently provided navigate to pose and navigate through poses)! Deriving from the new nav2_core::BehaviorTreeNavigator
class, your plugin will be templated by the action interface definition of interest. The plugin itself is required to fill in a couple of functions which serve to setup the navigator, extract information from navigation requests, populate information for action feedback or results, and a few other necessary bells and whistles.
This is a bit more involved than the other plugin types with some more subtle explanations required, so I’ve also added a new tutorial alongside the release to help. It is important to note that the navigators are used to customize the action interface to use to communicate with the behavior tree (e.g. if you have additional fields of interest your navigation system needs to know about from the client) not to customize the navigation behavior itself. That continues to be handled at the Behavior Tree XML level!
https://navigation.ros.org/plugin_tutorials/docs/writing_new_navigator_plugin.html
While there are generally no restrictions on what the message must contain, I highly encourage all navigation custom action interfaces to include a string behavior_tree
field as a standard. You can see the navigator plugin types populated on our website and find the new navigators
parameter field within BT Navigator for loading and utilizing your custom navigators.
https://navigation.ros.org/plugins/index.html
Happy custom-actioning,
Steve