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

Problem using hector exploration controller

asked 2014-01-26 23:34:32 -0600

zero1985 gravatar image

updated 2014-01-28 17:07:21 -0600

ngrennan gravatar image

Hello, I have been trying to use hector navigation stack on my wheeled robot. I run the hector_mapping node and hector_exploration_node before running the hector_exploration_controller. I try to do this in two ways which are holding the laser sensor on me and trying to deliberately follow the path generated and mount the sensor on my robot and let it to follow the path on its own. However, I have encountered several problems: 1) The robot started drifting away and caused the map to have error. 2) When I was holding the sensor, the goal reached information is not shown even if I tried to follow the path as close as possible. 3) When the robot is moving on its on to follow the path, the robot tends to just rotating along z-axis (perpendicular to the ground) almost all of the time. May I know what did I do wrongly?

Below is the picture of me using the exploration controller showing the map in rviz. The red arrow indicates the position and orientation of the robot. As you can see, the robot pose is drifted away from its initial position and this happen when the robot perform rotating movement only.

EDIT: The lidar I used is URG-04LX-UG01, the turning speed 0.28 rad/s while moving speed is 0.19 m/s. Below is the launch file for my hector mapping:


<node pkg="hector_mapping" type="hector_mapping" name="hector_mapping"    output="screen">

<param name="use_tf_scan_transformation" value="true" />
>param name="use_tf_pose_start_estimate" value="false" />
<param name="scan_topic" value="scan" />

<param name="pub_map_odom_transform" value="true"/>
<param name="map_frame" value="map" />
<param name="base_frame" value="base_link" />
<param name="odom_frame" value="base_link" />
<!-- Map size / start point -->
<param name="map_resolution" value="0.075"/>
<param name="map_size" value="512"/>
<param name="map_start_x" value="0.5"/>
<param name="map_start_y" value="0.5" />
<param name="laser_z_min_value" value="-2.5" />
<param name="laser_z_max_value" value="3.5" />

<!-- Map update parameters -->
<param name="update_factor_free" value="0.4"/>
<param name="update_factor_occupied" value="0.7" />    
<param name="map_update_distance_thresh" value="0.02"/>
<param name="map_update_angle_thresh" value="0.02" />
<param name="scan_subscriber_queue_size" value="25" />
<param name="map_multi_res_levels" value ="2"/>

<node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster"      args="0 0 0 0 0 0 base_link laser 100" />  


image description

edit retag flag offensive close merge delete


We were wondering how did you make hector_exploration_node running since we got below error message:

"Do not call canTransform or lookupTransform with a timeout unless you are using another thread for populating data. Without a dedicated thread it will always timeout. If you have a seperate thread servicing tf messages, call setUsingDedicatedThread(true) on your Buffer instance."

Hope to hear your expertise, thanks.

lukelu gravatar image lukelu  ( 2020-09-11 01:18:57 -0600 )edit

1 Answer

Sort by » oldest newest most voted

answered 2014-01-27 05:28:14 -0600

updated 2014-01-29 04:54:54 -0600

This looks more like a pose estimation problem (e.g. issue with hector_slam) than a problem with the exploration system. Can you edit your post with some info on your robot setup (LIDAR used, rotating how fast etc.). Note that performance with URG-04LX is not as good as with UTM-30 and movement will have to be smoother/slower.

/edit: Some of your parameters look like they could cause problems. I'd recommend setting map_update_distance_thresh and map_update_angle_thresh to a value above the jitter that might be in the pose estimate due to sensor noise, Something like 0.2 and 0.4 (meters and rad, respectively) should work (or the default values). I'd also keep update_factor_occupied at it's default value of 0.9. How did you come up with these parameter changes?

edit flag offensive delete link more


thank you for the answer, I have already updated my question and also provided information on my launch file.

zero1985 gravatar image zero1985  ( 2014-01-27 15:54:16 -0600 )edit

thanks for the reply. The parameter setting if I remember correctly is refer to some post in ros answer but I couldn't find the post now. As I cant get a proper map previously (it will become a lot of map with different orientation and stack together) I found that changing map_update_distance_thresh and map_update_angle_thresh to a very small value helps negate this problem. Anyway I changed the value as your recommendation but the same problem still occurs, is it due to the limitation of the URG-04LX?

zero1985 gravatar image zero1985  ( 2014-02-10 15:32:11 -0600 )edit

Depends on you point of view if that´s a limitation of the URG-04LX or of hector_mapping :) I know some people got reasonable results with URG-04LX in some scenarios, but not sure about the exact settings they used.

Stefan Kohlbrecher gravatar image Stefan Kohlbrecher  ( 2014-02-11 20:25:53 -0600 )edit

Thank you for your reply. For the limitation I mean the short range and error %, I am using URG-04LX-UG01 which yields higher error as compare to URG-04LX, will this cause problem if my sensor is too far away from a sensible object? As for hector_mapping I think it is a great package and good to use :). Just that I can't set up it correctly myself. Do you have any guideline or suggestion in tuning the setting?

zero1985 gravatar image zero1985  ( 2014-02-12 19:25:08 -0600 )edit

Is it possible for me to send you my ros bag file of the navigation?

zero1985 gravatar image zero1985  ( 2014-02-16 16:45:08 -0600 )edit

Question Tools

1 follower


Asked: 2014-01-26 23:34:32 -0600

Seen: 1,513 times

Last updated: Jan 29 '14