在ros下使用karto slam建立地图

     KartoSLAM是基于图优化的方法,用高度优化和非迭代 cholesky矩阵进行稀疏系统解耦作为解.图优化方法利用图的均值表示地图,每个节点表示机器人轨迹的一个位置点和传感器测量数据集,箭头的指向的连接表示连续机器人位置点的运动,每个新节点加入,地图就会依据空间中的节点箭头的约束进行计算更新。karto slam需要odom和laser scan的信息。

     在ros当中使用karto slam建图效果也非常好,而且karto slam的参数需求也非常的少。

     首先是安装二进制文件:sudo apt-get install ros-kinetic-slam-karto

     安装好以后写一个karto的launch文件

 

在ros下使用karto slam建立地图_第1张图片

     这里参数配置非常少,就三个。一个是odom的frame,一个是地图更新频率,还有一个是分辨率。

     我这里加了一个base_link到laser的静态tf变换,是因为我手里只有一个激光雷达,所以需要做一个静态变换。

     然后通过使用laser_scan_matcher做一个虚拟的odom信息。(如何使用请参考我的博客《只有激光雷达也能跑gmapping》)。

     从效果来看,karto的效果比gmapping好许多。我跑了一个很空旷的厂区,居然也没有出问题。要知道我用gmapping跑厂区地图完全就废了,只能跑办公室,办公室的图也不如karto slam。

在ros下使用karto slam建立地图_第2张图片

你可能感兴趣的:(ros)