Map Contextualizer - RoBorregos/robocup-home GitHub Wiki

Map Contextualizer

Actual state overview

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

Prerequisites

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.

How to run and use

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

On the terminal

Follow the menu to create rooms; when creating a room you can create objects of interest inside.

On rviz

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.

Contextual Modeling

Cognitive map

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.

Landmarks and objects

Some useful landmarks for the cognitive map to be created are:

  • entrances/doors
  • corridors
  • corners
  • containers (objects of interest)
    • tables
    • fridge
    • storage
    • couches
    • rooms

Further improvements and implementations

  • 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.

Resources

For more information about how to use rviz with the navigation stack you can visit this link

⚠️ **GitHub.com Fallback** ⚠️