基于rplidar || hokuyo的cartographer建图
进行slam定位和建图的过程中,如果只是为了看建图效果或者没有实时要求,那么使用bag包和激光雷达没有区别。但是不能一直依赖仿真或录制bag包,需要根据实际环境情况进行建图实时建图时,就必须驱动激光雷达进行实时建图。本篇博客介绍基于常见的激光雷达rplidar和 hokuyo的cartographer建图,需要说明的是:这两种激光雷达在进行建图时的话题相同,实测配置文件也相同。
只使用激光雷达建图需要修改的文件:launch和lua文件。本篇只介绍使用激光雷达的经验方法,下篇会介绍加入imu的建图方法。
1. launch文件修改方法
cartographer的launch文件有很多,选在demo_revo_lds.launch的基础上进行修改。
首先,是否运用仿真时钟,
<param name="/use_sim_time" value="true" />
在没有使用imu的情况下,true和false没有区别。
然后,启动cartographer节点也不用多说,注意配置的lua文件名称要一致和需要修改为下面的映射:
<remap from="scan" to="scan" />
然后,启动cartographer_occupancy_grid_node节点,这个节点很重要,因为此节点有submap的订阅器,这就决定了是否有map话题发布出来。有的博客中介绍的方法把此节点注释掉了,如果对cartographer的原理架构不太清楚,在建图时看不到map就会懵圈。
<node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
type="cartographer_occupancy_grid_node" args="-resolution 0.05" />
这里的分辨率可以调整,如果场景较大,可以调整到0.14; 反之不需要调整。
最后就是启动rviz,这里不需要任何修改,使用的是demo_2d.rviz.
2. lua文件修改方法
此处修改的lua文件必须和launch文件中加载的lua文件路径和名字相同。
修改revo_lds.lua文件时,不要看别的博客说的改很多东西,因为cartographer版本不同,需要的参数也不一样,参数最后不要进行删减或者增加,改完之后很可能跑不起来。本人只修改了两条语句:
tracking_frame = "laser",
published_frame = "laser",
3. 试验结果
查看节点图:
rqt_graph
tf树比较简单,map->odom->laser, 不再赘述。
每次修改需要运行:
catkin_make_isolated --install –use-ninja
source install_isolated/setup.bash
然后启动雷达和cartographer建图。
roslaunch cartographer_ros ***.launch
实际场景建图结果:
走的速度较快,效果不够好,可以参考。下篇会加入imu,前进速度更快,效果也较好。