ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Give 'manual' goal to Hector Exploration Planner

asked 2014-06-17 01:11:22 -0600

jeremy33 gravatar image

updated 2014-09-25 07:27:07 -0600

Hello everyone,

I am working on a robot to make autonomous navigation in an unknown flat environment. The robot is equipped with a Hokuyo UTM-30LX and a Kinect. My ultimate goal is to make a map of the place with the identification of objects that are present. To achieve this, I use the tools provided by Hector team that really meet my needs: Hector Mapping, Hector Map Server, Hector Geotiff, Hector Trajectory Server, Hector Elevation Mapping for the Mapping part, and Hector Costmap, Hector Exploration node for the navigation part. Everything seems to work properly after my first tests.

Now - when I will found a tool to make efficient detection of objects - I would like to give a 'manual' goal for the planner. For example, if the robot recognizes objects in its database, it will go to them; otherwise the rest of the time continue the exploration. I think it will be possible - I don't know how yet - to add the position of a detected object on the map thanks to Geotiff Node and Server Map node. So instead the planner gives a pose goal to generate the path as you can see in the following video :

, it may sometimes give a goal to a recognized object. I look in the source code hector_exploration_planner but I don't really know how to do. Do you have any idea?

I'm working on Ubuntu 12.04 and Groovy.

Thank you for your help,


Ps : Last question : do you know/have any idea for how to show the color on the map like in the Youtube video ? This colouring which seems indicate areas of importance.

Edit : I finally had the opportunity to test my implementation. Using makePlan function the robot calculates its trajectory towards my manual goal. However, there is always a call to the service GetRobotTrajectory with Hector Exploration Controller... Therefore, the robot never manages to move to my goal. Do you have an idea to fix this problem?

edit retag flag offensive close merge delete


I'm working on something very similar. That is to carry out exploration till it finds an object after which it should move to that goal. However I'm unable to find much documentation on hector_navigation stack.Can you tell me the nodes that need to be launched for hector exploration.

RS gravatar image RS  ( 2015-07-26 20:39:02 -0600 )edit

1 Answer

Sort by » oldest newest most voted

answered 2014-06-17 05:42:56 -0600

Objects of interest can be tracked using hector_object_tracker. This tracking is independent of the SLAM system, but positions of objects can be drawin into GeoTiff files the plugin provided in hector_worldmodel_geotiff_plugins.

I´m not sure which interface to hector_exploration_planner you are using. The class itself provides a makePlan member function that can plan from start to goal poses. If you look at the exploration_node example, just calling planner_->makePlan(...) instead planner_->doExploration(...)would do the trick (ignoring the issue of specifying a concrete target pose for the moment).

As for the last question: This coloring effect is achieved by publishing exploration transform data as a PointCloud message. By using the grid cell x,y world coordinates, but assigning a z value from 0 to (exploration_transform_value/max_exploration_transform_value), all points have a z coordinate between 0 and 1 meters high in the cloud. Now, if you got into "TopDownOrtho" mode in rviz, select "Flat Squares", a size of 0.05m and Z-Axis coloring for PointCloud options you´ll get that nice looking visualization basically for free. See also this helper class.

edit flag offensive delete link more


Thank you very much for your complete answer and your help. Thank you also for you and your team for this great and very interesting work. It just remains for me to work on it now :)

jeremy33 gravatar image jeremy33  ( 2014-06-18 01:13:54 -0600 )edit

How did you change from doExploration() to makePlan? The code says it takes 2 arguments where makePlan uses 3, what needs to be changed to use that?

EdCherie gravatar image EdCherie  ( 2016-10-31 11:40:27 -0600 )edit

Question Tools

1 follower


Asked: 2014-06-17 01:11:22 -0600

Seen: 2,300 times

Last updated: Sep 25 '14