Turtlebot scans a known environment looking for object - Strategy for exploration

416 Views Asked by At

Turtlebot exploration using a pregenerated map

I am working on the exploration strategy of a turtlebot that is supposed to navigate a known environment (with the help of a pre-built map) and searches for an object (e.g. a red ball).

The map has been generated using gmapping and now I am trying to implement a strategy for exploring the known map. Although generating random points on the map and then performing a 360° scan at these points is an option, I am not too enthusiastic about this method, since it does not guarantee that the object will be located if it exists.

What I would like to have is a set of points, such that after visiting all these points and performing a 360° scan at each of those points, the entire accessible/visible area of the map is covered by the robot.

I felt that the art gallery algorithm (described here: http://cs.smith.edu/~orourke/books/ArtGalleryTheorems/Art_Gallery_Full_Book.pdf) also achieves something similar, and hence tried to implement it in my scenario.

The art gallery problem requires polygons and I am finding it quite difficult to generate polygons from maps generated by gmapping on the real robot (although for simpler maps it's possible).

I have tried using the triangle module in Python to create convex hulls of clusters of objects, but that is not too useful in noisy environment like the one linked below. (I converted the .pgm file into a .png by plotting only obstacle points)

obstacle points

Note: My turtlebot does not have a laser scanner. It just has a Asus Xtion Pro Live.

I would really appreciate some help regarding the following:

  1. Is there an easier way of exploring a known map with a turtlebot (preferably some package in ROS)?
  2. If the art gallery algorithm is a viable option, then how should I obtain accurate polygons from the scan-points of the obstacles?

Thank you in advance.

0

There are 0 best solutions below