9.4 Hector

hecotor Hector SLAM效果

9.4.1 Hector SLAM计算图

Hector SLAM算法不同于前面两种算法,Hector只需要激光雷达数据,而不需要里程计数据。这种算法比较适合手持式的激光雷达,并且对激光雷达的扫描频率有一定要求。

Hector算法的效果不如Gmapping、Karto,因为它仅用到激光雷达信息。这样建图与定位的依据就不如多传感器结合的效果好。但Hector适合手持移动或者本身就没有里程计的机器人使用。

Hector的计算图,如下所示

slam_gmapping

位于中心的节点叫作hector_mapping,它的输入和其他SLAM框架类似,都包括了/tf/scan,另外Hector还订阅一个/syscommandTopic,这是一个字符串型的Topic,当接收到reset消息时,地图和机器人的位置都会初始化到最初最初的位置。

在输出的Topic方面,hector多了一个/poseupdate/slam_out_pose,前者是具有协方差的机器人位姿估计,后者是没有协方差的位姿估计。

9.3.2 服务

与Gmapping相同,提供/dynamic_map查询地图服务

9.3.3 参数

ROS-Academy-for-Beginners中的hector_slam为例,选取了它的launch文件slam_sim_demo/launch/hector_demo.launch为例,关键位置做了注释:

<node pkg="hector_mapping" type="hector_mapping" name="hector_height_mapping" output="screen">
      <param name="scan_topic" value="scan" />
    <param name="base_frame" value="base_link" />
    <param name="odom_frame" value="odom" />

    <param name="output_timing" value="false"/>
    <param name="advertise_map_service" value="true"/>
    <param name="use_tf_scan_transformation" value="true"/>
    <param name="use_tf_pose_start_estimate" value="false"/>
    <param name="pub_map_odom_transform" value="true"/>
    <param name="map_with_known_poses" value="false"/>

    <param name="map_pub_period" value="1"/>
    <param name="update_factor_free" value="0.45"/>

    <param name="map_update_distance_thresh" value="0.1"/>
    <param name="map_update_angle_thresh" value="0.05"/>

    <param name="map_resolution" value="0.05"/>
    <param name="map_size" value="1024"/>
    <param name="map_start_x" value="0"/>
    <param name="map_start_y" value="0"/>

</node>

演示截图

hector算法演示效果图如下:

results matching ""

    No results matching ""