ROS Navigation Stack and costmap (layers?)
TL;DR:
I want to modify the navigation stack to work better on some situations but I still don't know how I would do it after reading the ROS tutorials. For instance, say I detect people with the sensor and DON'T want to add them to the static map that is being generated while running move_base, or say I want to inflate MORE around them if I detect that they are moving. How would I do this?What I understand so far: This picture show the basic navigation stack. The big white rectangle is the move_base node, and the elipses inside of it are other nodes initialized from it. Global cost map and Local cost map are instances of costmap_2. These maps use sensor information and robot position to, say, reconstruct a map (global or local) which is in turn used by the global and local planners to publish cmd_vel messages and make the robot reach the goal.
Also, the documentation states that:
As of the Hydro release, the underlying methods used to write data to the costmap is fully configurable. Each bit of functionality exists in a layer. For instance, the static map is one layer, and the obstacles are another layer.
Yet it is unclear to me how these layers are used in practice. The navigation stack tutorial shows 3 .yaml configuration files loaded in the launch file of move_base. One is for a common configuration, one is for local costmap configuration and one is for global costmap configuration. Do these maps have anything to do with the layers? I suspect I would need to change something that has to do with this cosmaps, maybe adding more layers, but I don't know how.
Maybe this roscon talk from D. Lu helps? It mentions the social_navigation_layers
"layered costmap" is a good search term for this.
costmap_2d configuration for layered costmaps: https://wiki.ros.org/costmap_2d/layered : https://wiki.ros.org/range_sensor_layer (end)
... and (all answers.ros.org , but tiny-fied)