MohitShridhar / multi_map_navigation

Multi-Map Navigation - ROS
MIT License
79 stars 50 forks source link

Multi-Map Navigation

IMAGE ALT TEXT HERE

multi_map_navigation allows you to break up large static-maps into smaller, more managable chunks, and interconnect them through a series of 'wormholes'. This allows you to isolate areas behind closed doors, or experiment with autonomous navigation across multiple floors with premeditated map-transitions.

This package is a catkinized version of an old stack with additional functionality and GUI controls.

Dependencies & Prerequisites

Core: ROS Hydro, Catkin: actionlib, warehouse_ros, rviz, map_server (see package.xml)

Additional: (Custom Requirements): map_store, namespace_mux

Others: Qt4 (or higher), MongoDB 2.6

Installation

Clone package & custom dependencies:

$ cd <catkin_ws>/src
$ git clone https://github.com/MohitShridhar/multi_map_navigation.git
$ git clone https://github.com/MohitShridhar/namespace_mux.git
$ git clone https://github.com/MohitShridhar/map_store.git

Resolve other dependencies (in Ubuntu):

$ cd <catkin_ws>
$ rosdep install --from-paths src --ignore-src --rosdistro hydro -y

Compile:

$ cd <catkin_ws>
$ catkin_make --pkg map_store namespace_mux multi_map_navigation

Check that the messages & services were properly generated:

$ rosmsg list
...
multi_map_navigation/MultiMapNavigationAction
multi_map_navigation/MultiMapNavigationActionFeedback
multi_map_navigation/MultiMapNavigationActionGoal
multi_map_navigation/MultiMapNavigationActionResult
multi_map_navigation/MultiMapNavigationFeedback
multi_map_navigation/MultiMapNavigationGoal
multi_map_navigation/MultiMapNavigationResult
multi_map_navigation/MultiMapNavigationTransitionAction
multi_map_navigation/MultiMapNavigationTransitionActionFeedback
multi_map_navigation/MultiMapNavigationTransitionActionGoal
multi_map_navigation/MultiMapNavigationTransitionActionResult
multi_map_navigation/MultiMapNavigationTransitionFeedback
multi_map_navigation/MultiMapNavigationTransitionGoal
multi_map_navigation/MultiMapNavigationTransitionResult
...
$ rossrv list
...
multi_map_navigation/ReinitManager
multi_map_navigation/SetMap
...

Usage

Launch file

Once you have setup the config file, spawn the 'multi_map_navigation' node in your launch file to manage navigation & map-transitions:

<group ns="robot0">
...
    <node pkg="multi_map_navigation" type="multi_map_navigation_manager.py" name="multi_map_navigation" output="screen">
      <param name="definition_file" value="$(find <navigation_stack>)/config/<config>.yaml" />
      <param name="transition_types" value="elevator_blast" />

      <param name="robot_namespace" value="robot0"/>
      <param name="base_frame" value="base_link"/>
    </node>
...
</group>

The robot_namespace parameter is redundant. See issue #1

Guide:

See the wiki for more details on setup & usage.