vector_display

Dependencies

  1. glog
  2. gflags
  3. Lua5.1
  4. Qt5
  5. ROS

You can install the dependencies except for ROS on *buntu using:

sudo apt install libgoogle-glog-dev libgflags-dev liblua5.1-0-dev qt5-default

For installation instructions for ROS, please consult the ROS Installation Wiki

Build

  1. Add the project directory to ROS_PACKAGE_PATH:
    export ROS_PACKAGE_PATH=MYDIRECTORY:$ROS_PACKAGE_PATH
    
    (Replace MYDIRECTORY with the actual directory) You can also add this to your ~/.bashrc file so that you don't have to do this every time you open a new terminal.
  2. run git submodule update --init --recursive to pull submodules
  3. Build the program:
    make
    
    Optionally, to compile on all cores (make sure you have sufficient RAM!)
    make -j
    
  4. Do not run cmake, catkin_make, rosbuild.

Running

Run ./bin/vector_display

Command line flags

  • --maps_dir Directory from which to load maps. Default is "maps", which is a submodule of vector_display pointing to https://github.com/ut-amrl/amrl_maps
  • --map Initial localization map to load. This should be the name of one of the folders in maps_dir, as we look for a map at: (maps_dir)/(map)/(map).vectormap.txt
  • --edit_localization can be set to true to edit localization map (see below)
  • --edit_navigation can be set to true to edit navigation map (see below)

...Additional flags can be discovered by running ./bin/vector_display --help (the block about flags from vector_display_thread.cpp are the most useful).

Editing a Localization Map

vector_display can be used to edit localization maps, which are used by EnML for localization. To edit localization maps, simply run vector_display with the edit_localization flag set to true.

When in map editing mode, Shift + Click + Drag will create a new vector line as a part of the map, and Ctrl + Click will remove an existing line. Creating a localization map is best done while running enml and playing through a bag file, so you can observe the long-term features enml picks up on, and add them to the map.

Alternatively, this manual editing can be used to clean up vector maps generated by nautilus (https://github.com/ut-amrl/nautilus) This map should include any consistent, long-term features the in the environment that are detectable by LiDAR

Note

When creating a new localization map, the suggested procedure is to create a new folder in the maps directory with the same name as the map, and then from the maps directory perform cp EmptyMap/EmptyMap.vectormap.txt (map)/(map).txt

Editing a Navigation Map

vector_display can be used to edit and create navigation maps, which are used by graph navigation (https://github.com/ut-amrl/graph_navigation) for high-level planning. These graphs look like a connected series of nodes and edges, and each edge can be given certain properties (although most such properties are not used in the actual planning yet).

To see an example navigation graph, try running vector_display with edit_navigation set to true while pointing to a map with an existing navigation graph, such as UT_Campus.

When editing a navigation graph, you will see the localization map as well, for reference. Shift+Click will create a new node. Shift + Click + Drag between any two nodes to create an edge between them. Ctrl + Click on a node or edge to delete it. Alt + Drag will move an edge or node.

Note

When creating a new navigation map for an existing localization map, you must first run, from the maps directory touch (map)/(map).navigation.txt to create an empty navigation map file.

Examples

Running with EnML

When running EnML(https://github.com/ut-amrl/enml) with the -d1 flag, visualization messages will be published, which will automatically be displayed by vector_display.

EnML Example

An example ROS bag recording of visualizations published by Episodic non-Markov Localization: https://drive.google.com/file/d/1xFRnl43OD2SQKTVB_t0nEv_48WumtSWT/view?usp=sharing