[Documentation] [TitleIndex] [WordIndex

  Show EOL distros: 

Package Summary

Lightweight frontier-based exploration.

  • Maintainer status: developed
  • Maintainer: Jiri Horner <laeqten AT gmail DOT com>
  • Author: Jiri Horner <laeqten AT gmail DOT com>
  • License: BSD
  • Source: git https://github.com/hrnr/m-explore.git (branch: jade-devel)

Package Summary

Lightweight frontier-based exploration.

  • Maintainer status: developed
  • Maintainer: Jiri Horner <laeqten AT gmail DOT com>
  • Author: Jiri Horner <laeqten AT gmail DOT com>
  • License: BSD
  • Source: git https://github.com/hrnr/m-explore.git (branch: kinetic-devel)

Package Summary

Lightweight frontier-based exploration.

  • Maintainer status: developed
  • Maintainer: Jiri Horner <laeqten AT gmail DOT com>
  • Author: Jiri Horner <laeqten AT gmail DOT com>
  • License: BSD
  • Source: git https://github.com/hrnr/m-explore.git (branch: lunar-devel)

Use GitHub to report bugs or submit feature requests. [View active issues]

Overview

This package provides greedy frontier-based exploration. When node is running, robot will greedily explore its environment until no frontiers could be found. Movement commands will be send to move_base.

screenshot.png

Unlike similar packages, explore_lite does not create its own costmap, which makes it easier to configure and more efficient (lighter on resources). Node simply subscribes to nav_msgs/OccupancyGrid messages. Commands for robot movement are send to move_base node.

Node can do frontier filtering and can operate even on non-inflated maps. Goal blacklisting allows to deal with places inaccessible for robot.

Architecture

explore_lite uses move_base for navigation. You need to run properly configured move_base node.

architecture.svg

explore_lite subscribes to a nav_msgs/OccupancyGrid and map_msgs/OccupancyGridUpdate messages to construct a map where it looks for frontiers. You can either use costmap published by move_base (ie. <move_base>/global_costmap/costmap) or you can use map constructed by mapping algorithm (SLAM).

Depending on your environment you may achieve better results with either SLAM map or costmap published by move_base. Advantage of move_base costmap is the inflation which helps to deal with some very small unexplorable frontiers. When you are using a raw map produced by SLAM you should set the min_frontier_size parameter to some reasonable number to deal with the small frontiers. For details on both setups check the explore.launch and explore_costmap.launch launch files.

Setup

Before starting experimenting with explore_lite you need to have working move_base for navigation. You should be able to navigate with move_base manually through rviz. Please refer to navigation#Tutorials for setting up move_base and the rest of the navigation stack with your robot.

You should be also able to to navigate with move_base though unknown space in the map. If you set the goal to unknown place in the map, planning and navigating should work. With most planners this should work by default, refer to navfn#Parameters if you need to setup this for navfn planner (but should be enabled by default). Navigation through unknown space is required for explore_lite.

If you want to use costmap provided by move_base you need to enable unknown space tracking by setting track_unknown_space: true.

If you have move_base configured correctly, you can start experimenting with explore_lite. Provided explore.launch should work out-of-the box in most cases, but as always you might need to adjust topic names and frame names according to your setup.

ROS API

explore

Provides exploration services offered by this package. Exploration will start immediately after node initialization.

Actions Called

move_base (move_base_msgs/MoveBaseAction)

Subscribed Topics

costmap (nav_msgs/OccupancyGrid) costmap_updates (map_msgs/OccupancyGridUpdate)

Published Topics

~frontiers (visualization_msgs/MarkerArray)

Parameters

~robot_base_frame (string, default: base_link) ~costmap_topic (string, default: costmap) ~costmap_updates_topic (string, default: costmap_updates) ~visualize (bool, default: false) ~planner_frequency (double, default: 1.0) ~progress_timeout (double, default: 30.0) ~potential_scale (double, default: 1e-3) ~orientation_scale (double, default: 0) ~gain_scale (double, default: 1.0) ~transform_tolerance (double, default: 0.3) ~min_frontier_size (double, default: 0.5)

Required tf Transforms

global_framerobot_base_frame

Acknowledgements

This package was developed as part of my bachelor thesis at Charles University in Prague.

@masterthesis{Hörner2016,
  author = {Jiří Hörner},
  title = {Map-merging for multi-robot system},
  address = {Prague},
  year = {2016},
  school = {Charles University in Prague, Faculty of Mathematics and Physics},
  type = {Bachelor's thesis},
  URL = {https://is.cuni.cz/webapps/zzp/detail/174125/},
}

This project was initially based on explore package by Charles DuHadway. Most of the node has been rewritten since then. The current frontier search algorithm is based on frontier_exploration by Paul Bovbel.


2019-09-21 12:39