LCAS / topological_navigation

The topological navigation framework
Apache License 2.0
31 stars 36 forks source link

Edge reconfigure integration for the new map type #54

Closed adambinch closed 3 years ago

adambinch commented 3 years ago

Main addition is the EdgeReconfigureManager class in src/EdgeReconfigureManager.py for handling everything edge reconfigure related. Each edge in the new format map has a config field, which contains a list of parameters to be reconfigured when the edge is traversed (see https://github.com/LCAS/topological_navigation/issues/35). Topological navigation calls functions from the EdgeReconfigureManager to do this.

Some additions to the new map manager: A new service /topological_map_manager2/add_param_to_edge_config for adding parameters to an edge's config and a new service /topological_map_manager2/rm_param_from_edge_config for removing a parameter from an edge's config. The map manager 2 converts new format maps (broadcast on the topic /topological_map_2) to the old format (broadcast on the topic /topological_map). This allows nodes/actions that rely on the old map format to function whilst using/testing features from the new map.

Some fixes: The monitored navigation function in navigation.py expects a geom msgs Pose object rather than a monitored nav goal object (stops nav breaking when using the old map format). Navigation now reconfigures move base tolerances according to the values specified in the tmap.

The variable use_tmap2 for using the new map type in localisation and navigation is now a ros parameter.

Some minor improvements.

adambinch commented 3 years ago

This works from my end and is ready to be tested @ayu135 . I will send you instructions soon.