Map Contextualizer - RoBorregos/robocup-home GitHub Wiki
At this moment map conceptualization is done manually using the Map Tagger UI created with rviz.
The user will use rviz and the terminal to define the area of rooms and objects of interest in the map. For this, five nodes run at the same time:
-
tf: serves as a
static_transform_publisher
type to publish a dummy link between the base_link and the map. - map_visualizer: displays a saved map.
- move_base: helps create the grid layer of the map env.
- map_tagger: main menu of the application, sends point transforms and app change states to the map tagger display.
- map_tagger_display: displays all map context transforms with a marker array. Creating a resulting JSON which will be read later by the Nav Action Server
To contextualize a map you must first have one.
Create an occupancy grid running:
roslaunch nav_main launch_mapping.launch
Start mapping the environment by moving the robot.
Then, to convert the /map to a physical map, simply run:
rosrun map_server map_saver -f "map1"
And save the generaget .gpm and .yaml files on src/navigation/nav_main/maps/ folder.
To run the map tagger one must simply run:
roslaunch nav_main map_tagger.launch
And, using other terminal, run the map tagger menu:
rosrun map_visualizer map_tagger.py
Follow the menu to create rooms; when creating a room you can create objects of interest inside.
When running rviz the /map
topic and the /move_base/global_costmap/costmap
topic will be displayed as maps to help the user visualize the reachable spots in the map according to the robot's size configuration in the costmap_common_params.yaml file (inflation layer).
Use the 2D Nav Goal to place in a certain position a point in the map for the area/object of interest.
The active room will be displayed in green, while other rooms already saved will be displayed in purple.
Symmetric spaces play an important role in the robot’s ability for location identifying, as well as contextualization. By defining spaces and their areas the task of structuring data to spaces, as well as relating them to other elements, more information about the different things that can be found in that space is given.
Some useful landmarks for the cognitive map to be created are:
- entrances/doors
- corridors
- corners
- containers (objects of interest)
- tables
- fridge
- storage
- couches
- rooms
- We are currently in the process of changing from using Tf to Tf2.
- Automation of this room identification will be a best option for map preprocessing, some alternatives like computer vision are contemplated to do so more efficiently.
For more information about how to use rviz with the navigation stack you can visit this link