Close

Next Project Goal: ROS Navigation

A project log for Phoebe TurtleBot

DIY variant of ROS TurtleBot for <$250 capable of simultaneous location and mapping (SLAM)

RogerRoger 10/08/2018 at 00:362 Comments

When I started working on my own TurtleBot variant (before I even decided to call it Phoebe) my intention was to build a hardware platform to get first hand experience with ROS fundamentals. This project page's subtitle declared itself as a ROS robot for <$250 capable of SLAM. Now that Phoebe can map surroundings using standard ROS SLAM library ‘gmapping‘, that goal has been satisfied. What’s next?

One disappointment I found with existing ROS SLAM libraries is that the tutorials I’ve seen (such as this and this) expect a human to drive the robot during mapping. I had incorrectly assumed the robot would autonomously exploring its space, but “simultaneous location and mapping” only promises location and mapping – nothing about deciding which areas to map, and how to go about it. That is left to the human operator.

When I played with SLAM code earlier, I decided against driving the robot manually and instead invoked an existing module that takes a random walk through available space. A search on ROS Answers web site for something more sophisticated than a random walk resulted in multiple pointers to the explore module, but that code hasn’t been maintained since ROS “groovy” four versions ago. So one path forward is to take up the challenge of either update explore or write my own explorer.

That might be interesting, but once a map is built, what do we do with it? The standard ROS answer is the robot navigation stack. This collection of modules is what gives a ROS robot the ability to plan a path through a map, watch its progress through that plan, and update the plan in reaction to unexpected elements in the environment.

At the moment I believe it would be best to learn about the standard navigation stack and getting that up and running on Phoebe. I might return to the map exploration problem later, and if so, seeing how map data is used for navigation will give me better insights into what would make a better map explorer.

(Cross-posted to NewScrewdriver.com)

Discussions

Humpelstilzchen wrote 10/08/2018 at 17:18 point

Hi, there are thousands of exploration packages (Well at least three I know off). Personally I've tried http://wiki.ros.org/frontier_exploration. One of the more recent ones is http://wiki.ros.org/rrt_exploration. Last but not least: http://wiki.ros.org/hector_exploration_planner.

Also the exploration nodes are not a replacement to the navigation stack, they have been created to work with it:

- Map creation is done with a SLAM node (e.g. gmapping, cartographer, hector_mapping)

- The exploration node calculates areas where the robot should go for exploration

- The exploration path is computed and executed by the navstack.

So yes, you will have to setup the navstack first ;) I highly recommend to not look at the exploration before your navigation works stable.

  Are you sure? yes | no

Roger wrote 10/08/2018 at 20:13 point

Wow, thanks for the pointers! The words "explore" and "exploration" were far too generic and I had problems filtering relevant results from the noisy search results. These links are great. And after I read them over I hope to learn a few useful keywords for future searches.

I hadn't known the exploration works on top of the navigation stack but it makes sense now that you've explained it.

This is all great information reinforcing ROS navigation should indeed be my next goal.

  Are you sure? yes | no