多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 9.4 Hector ![hecotor](https://img.kancloud.cn/b9/c2/b9c276ccaab1520a7ddee6e0b336d439_1181x931.png) Hector SLAM效果 ## 9.4.1 Hector SLAM计算图 Hector SLAM算法不同于前面两种算法,Hector只需要激光雷达数据,而不需要里程计数据。这种算法比较适合手持式的激光雷达,并且对激光雷达的扫描频率有一定要求。 Hector算法的效果不如Gmapping、Karto,因为它仅用到激光雷达信息。这样建图与定位的依据就不如多传感器结合的效果好。但Hector适合手持移动或者本身就没有里程计的机器人使用。 Hector的计算图,如下所示 ![slam_gmapping](https://img.kancloud.cn/ce/81/ce81a24268ba8eb0d90670648c72ebdf_1829x948.jpg) 位于中心的节点叫作`hector_mapping`,它的输入和其他SLAM框架类似,都包括了`/tf`和`/scan`,另外Hector还订阅一个`/syscommand`Topic,这是一个字符串型的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`为例,关键位置做了注释: ```xml <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算法演示效果图如下: ![](https://img.kancloud.cn/5a/6c/5a6c42f22c93898b2ffebd26ae5e115a_925x894.png)