Problem using hector exploration controller
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:
<launch>
<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>
<node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 base_link laser 100" />
</launch>
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.