Skip to content

sdwyc/frontier_exploration_occupancygrid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Frontier-based exploration

It is a ROS package that implements frontier-based approach to explore unknown environment. The algorithm emploied single robot. It uses occupancy girds as a map representation.The packgae only has one ROS nodes:

  • frontier planner node

Note: This package was written to accomplish a engineering project. For solve the problem that clean robot travels in large-scale environment(e.g. super mall)

1. Requirements

The package has been tested on ROS Melodic, it should work on other distributions like Kinetic. The following requirements are needed before installing the package:

1- You should have installed a ROS distribution (kinetic or later. Recommended is either melodic or kinetic).

2- Created a workspace.

3- Installed the "gmapping" ROS package: you can do that by typing the following command in the terminal:

$ sudo apt-get install ros-melodic-gmapping

4- Install ROS navigation stack. You can do that with the following command (assuming in melodic):

$ sudo apt-get install ros-melodic-navigation

6-You should have/install the following local planner module or use your own local planner:

$ sudo apt-get install ros-melodic-eband-local-planner

2. Installation

Download the package and place it inside the /src folder in your workspace. And then compile using catkin_make.

3. Configuring Your Robot

This package provides an exploration strategy for single robot. However, for it to work, you should have set your robots ready using the navigation stack.

3.1. Frontier planner node topics and parameters

Subscribe Topics

  1. "/map": The global map(nav_msgs::OccupancyGrid)

Publish Topics

  1. "/frontier": All frontier cells (PointArray)
  2. "/centroids": All centroids(PointArray)
  3. "/inflated_map": The Inflated map of raw map(nav_msgs::OccupancyGrid)
  4. "/move_base/goal": The current goal using move_base action(move_base_msgs::MoveBaseActionGoal)

Parameters

  1. "obstacle_inflation": (float) inflation radius(meter)
  2. "map_revolution": (float) global map revolution
  3. "cmd_topic": (string) the robot received velocity topic
  4. "robot_base_frame": (string) robot base frame_id
  5. "goal_tolerance": The tolerance for arriving current goal(meter)
  6. "obstacle_tolerance":if robot's distance to nearest obstacle less than this value, the robot won't rotate
  7. "rotate_speed": (float) the robot rotate speed

3.2. Setting up the navigation stack on the robots

The move_base_node node, which brings up the navigation stack on the robot, must be running. This package generates target exploration goals, the robot must be able to receive these points and move. Additionally, each robot must have a global and local cost maps. All of these are proivded from the move_base_node.

3.3. mapping

This package(frontier_exploration) uses gmapping slam by default, you can change gmapping to your slam (like cartographer or hector) with the nav_msgs::OccupancyGrid output

4. Run

1. Firstly, source your workspace

$ source {path_to_your_workspace}

2. Launch the node

$ roslaunch frontier_exploration frontier_exploration.launch

The exploration action will start at launching node. In addition, you can change different gazebo world in world dir.

5. Video and Paper citation

Youtube Video

Bilibili Video

Paper

About

frontier_exploration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors