hokuyo激光雷达URG-04LX用hector slam算法构建地图(1)——准备工作
硬件:Hokuyo URG-04LX
OS: ROS kinetic
首先根据硬件平台选择合适的建图的算法,常用的建图算法主要有gmapping和hector算法两种。这两种算法的详细比较参见这篇博文:https://blog.csdn.net/zhu751191958/article/details/79322364 其中最大的区别在于gmapping算法需要用到里程计的信息,而hector不需要。由于我选用的小车没有里程计可以直接读数,如果用gmapping算法还需要写一个算法根据小车轮子编码器的数据间接计算得到里程计信息,因此就先选用hector算法简单验证一下建图效果。
整个项目的准备工作有以下几个部分:
-
安装雷达驱动并验证是否成功。具体的安装步骤按照这个来即可:https://blog.csdn.net/Buer_zhu/article/details/80945830
需要注意的是,我在进行到第二步,即以下代码时:
cd ~/catkin_ws/src git clone https://github.com/ros-drivers/driver_common.git cd .. catkin_make cd src git clone https://github.com/ros-drivers/hokuyo_node.git cd .. catkin_make
总是出错,于是直接在打开上述代码中的github网址,手动下载代码包,移入代码中指定的文件目录下,然后输入
catkin_make
命令手动编译,顺利通过。(后边的步骤中遇到相似问题,也是同样的解决办法。)
2.安装hector slam算法包
简单一点可以直接用以下命令
$ sudo apt-get installros-kinetic-hector-slam //安装hector_slam
但是我用的时候发现这种方法安装不了,于是按照这篇文章的step1~step3步骤顺利完成安装:
https://www.jianshu.com/p/8a21b688c30c
3.修改hector slam算法中的launch文件
参考博文 https://blog.csdn.net/z15f34/article/details/53237845
具体修改如下:
文件名:tutorial.launch
内容:
<launch> <include file="$(find hector_mapping)/launch/mapping_default.launch"> <arg name="base_frame" value="base_frame"/> <arg name="odom_frame" value="base_frame"/> //要把odom值换成base_frame,这样就不需要odemetry,不然会报错 </include> <include file="$(find hector_geotiff)/launch/geotiff_mapper.launch"> <arg name="trajectory_source_frame_name" value="base_frame"/> </include> <node pkg="tf" type="static_transform_publisher" name="base_frame_to_laser_broadcaster" args="0 0 0 0 0 0 base_frame laser 100"/> <node pkg="rviz" type="rviz" name="rviz" args="-d $(find hector_slam_launch)/rviz_cfg/mapping_demo.rviz"/> </launch>
也可以先新建一个tutorial.launch文件,再上一步安装的hector slam算法包安装路径下找到:hector_slam_launch->launch目录,会发现里面有很多launch文件,并且有一个同名的tutorial.launch文件,为保险起见,可以先备份一下原始的launch文件,再将复制移入新建的tutorial.launch文件。(如果发现目录下的文件没有权限修改,参照windows下的操作对文件夹右键,修改属性即可。)
至此,所有的准备工作顺利完成!
附:相关资料下载:
HOKUYO日本北洋URG-04LX激光雷达用户手册