Skip to content
nickmac459 edited this page Jul 15, 2020 · 3 revisions

Graph Navigation !

Quick start guide

Building

Install apt dependencies:

$ sudo apt-get install -y liblua5.1-dev clang valgrind libeigen3-dev
$ sudo apt-get install g++ libqt4-dev cmake libpopt-dev
$ sudo apt-get install g++ liblua5.1-dev libeigen3-dev libglew1.5-dev
$ sudo apt-get install g++ freeglut3-dev libncurses5-dev libjpeg8-dev libgoogle-perftools-dev
$ sudo apt-get install g++ libsuitesparse-dev libblas-dev liblapack-dev libopenmpi-dev
$ sudo apt-get install g++ libgoogle-glog-dev libgflags-dev libceres-dev libtbb-dev

Next, clone dependent repositories:

 git clone https://github.com/ut-amrl/amrl_maps.git
 cd amrl_maps && export ROS_PACKAGE_PATH=`pwd`:$ROS_PACKAGE_PATH
 cd ../ && git clone https://github.com/ut-amrl/amrl_msgs.git
 cd amrl_msgs && export ROS_PACKAGE_PATH=`pwd`:$ROS_PACKAGE_PATH && make
 cd ../ && git clone https://github.com/ut-amrl/enml.git
 cd enml && export ROS_PACKAGE_PATH=`pwd`:$ROS_PACKAGE_PATH && make

Now, clone this repository:

 cd ../ && git clone https://github.com/ut-amrl/graph_navigation.git
 cd graph_navigation && export ROS_PACKAGE_PATH=`pwd`:$ROS_PACKAGE_PATH && make

Note that these are ROS-build packages, as opposed to catkin packages. With the exception of amrl_maps which doesn't need to be compiled, ROS-build packages should be built by running make in the root of the package directory. This also means the path that the packages live on need to be added to your ROS_PACKAGE_PATH. You can do this on a per-session basis with

export ROS_PACKAGE_PATH=`pwd`:$ROS_PACKAGE_PATH

as above, or you can add the following to your .bashrc to make it persistent

export ROS_PACKAGE_PATH=~/my_path/to/graph_navigation:$ROS_PACKAGE_PATH    
export ROS_PACKAGE_PATH=~/my_path/to/amrl_msgs:$ROS_PACKAGE_PATH
export ROS_PACKAGE_PATH=~/my_path/to/amrl_maps:$ROS_PACKAGE_PATH
export ROS_PACKAGE_PATH=~/my_path/to/enml:$ROS_PACKAGE_PATH

Running

You can run navigation by executing the binary. When in the root of the package

$ ./bin/navigation

and you can feed it parameters as well. For instance, to change the map parameter to load a non-default map,

$ ./bin/navigation --map maps/UT_Campus/UT_Campus.navigation.txt

Communication

In points

Note that many of these are parameters that can be configured via config_reader. Please see navigation code for details.

laser_topic

Topic specifying 2D laser scans for local obstacle detection.

odom_topic

Topic specifying odometry information from the robot platform.

loc_topic

Localization topic. Could be /localization for ENML or /amcl_pose for AMCL.

init_topic

Topic that is used to give the robot it's initial pose in the world

map

The name of the map to use for navigation. Should be a vector map, which in general is not the map that is output by gmapping.

Out points

/move_base_simple/goal

This is the topic navigation listens to for retrieving a commanded goal in the map frame. The expected type is amrl_msgs/Pose2Df