1、创作初衷
先说明一下个人情况,目前硕士在读,研究方向为激光slam。作为一名激光slam研究菜鸡,入门前不可避免的就要研究gmapping算法(大佬除外)。虽然现在已经对运行算法毫无问题,不就是rosrun ××× ××× 或者roslaunch ××× ×××,但是运行完之后呢?你真的明白这个算法了吗?是不是心里面空空如也,啥也不知道。网上当然有许多关于gmapping的解析教程等相关内容,但是我觉得都不太详细或者系统的讲解,很多都是粗枝大叶的略过(也可能有非常详细的内容,只是我没有发现,如果大家发现有这样的内容,请告诉我),让人还是对gmapping算法还是一知半解(可能我太菜了)。
因此,我将按照我的理解为大家一步一步揭开gmapping算法的神秘面纱,搞清楚一个个变量的含义用途,搞明白一行行代码的作用,搞明白一个个函数的功能,努力做到让小白也能理解。
2、致谢
首先,要感谢csdn博主 白茶-清欢,本教程参考他提供的简化版gmapping源码,其地址为 csdn 白茶-清欢: https://blog.csdn.net/zhao_ke_xue/article/details/109712355
其次,要感谢博主 无处不在的小土 ,部分内容参考了他对gmapping的讲解,他的博客地址为 https://gaoyichao.com/Xiaotu/?book=turtlebot&title=index
大家可以去看看他们的文章,相信你会对gmapping算法有更深的理解。
由于需要用到编程知识,所以我希望你在阅读接下来的代码讲解部分之前,已经掌握c/c++的知识,比如:类,结构体,继承,模板,函数重载等。
3、资料获取
大家可以关注我的微信公众号 巧学slam,回复对应关键字,即可获取以下资料
公众号将同步更新教程内容
由于没有实验器材,因此我使用gazebo搭建了一个阿克曼小车,上面搭载了激光雷达,imu,摄像机等,并且创建了一个简单的室内环境,来模拟真实的房间,使用上面提到的简化版gmapping算法对所建环境建图,如下图所示
小车模型:黄色圆柱体为雷达,橘黄色方块为imu,灰色的是深度相机,绿色的是相机
随便搭建的房间环境
这是使用简化gmapping算法所构建的地图,效果看着很不好,发生了明显的偏移。我只是控制小车从里到外随便走了一圈,还有算法本身的局限,所以效果不太好。不过,这不是我们目前的研究重点,只要能够实现建图就行,后面有机会的话再对此进行优化,我们的研究重点是该算法如何一步步建成这个图,这个图是怎么来的。
在接下来的教程中,我将带大家搞清楚这个过程。本人也是边学边向大家分享,如果有说错的地方,请大家指出来,大家共同进步,也欢迎你关注我的公众号,后续有更多精彩好文。