本系列文章的目的是从零搭一套二维激光SLAM出来,并对其中的每个模块使用多种方法进行实现,以验证一些算法,以达到学以致用的目的。

当然,肯定是借鉴已有的SLAM算法,完全自己搭的话水平还不够。考虑将 gmapping,hector,karto,cartographer,hdl,loam,lis-sam 这几个SLAM算法中的某个模块抠出来重新实现一下。

目前打算按照如下模块进行文章及代码的编写:

1 前端里程计部分

  • 对比不同品牌的雷达的建图效果,分析雷达数据对建图的影响
  • 从零搭一个scan-to-scan的激光里程计,目前打算分别使用 ICP,NDT,PL-ICP 等算法进行实现
  • 将上述scan-to-scan的激光里程计添加上建图部分,可能分为2种:一种是实时更新地图,保持增量式的地图(gmapping),另一种是实时保存位姿,每隔一段时间从头生成一遍地图(karto)。
  • 将scan-to-scan的激光里程计进行改进,使用scan-to-map(hector与karto)的匹配方式计算激光里程计
  • 对scan-to-map的匹配方式继续进行改进,使用scan-to-submap(cartographer)的匹配方式计算激光里程计
  • 将里程计数据 融合进 激光里程计部分
  • 再将imu数据 融合进 激光里程计部分

激光里程计部分是激光SLAM的重中之重,所以将花费较长的时间进行这一模块的搭建。

当完成了这部分代码的编写,大家将学会了如何使用雷达数据与雷达数据进行匹配,如何使用雷达数据与地图数据进行匹配。

一旦我们学会了这两种匹配,那么我们将掌握激光SLAM的绝大部分内容。因为,回环检测部分与重定位部分的本质,都是如何使用当前雷达数据进行匹配的问题。

2 后端优化部分

  • karto的后端优化
  • lio-sam的后端优化

目前打算通过这两种后端优化的方式进行后端优化部分的实现。

3 回环检测部分

  • 使用ICP算法进行回环检测
  • karto的回环检测
  • cartographer的回环检测

4 基于激光雷达的重定位功能

  • 基于ICP的激光雷达重定位功能

当我们已经有了一张二维栅格地图的时候,想要在这张地图上进行导航,首先要确定机器人当前在栅格地图中的位置,这就是重定位问题。

这个模块将使用ICP算法实现基于激光雷达的重定位功能。

5 其他功能

如果读者们有想要实现的其他功能,在二维激光SLAM方面的,可以在我的公众号中回复,如果建议很好的话我也为这个功能进行实现。

感慨

场子铺的太大了,东西太多了,感觉很有压力。。。

上面的每一个模块可能都需要我看很久的代码才能实现。这么多内容,估计我要花上一年甚至更长的时间才能完成。所以开始写代码以后的文章,将以一周、两周、甚至一个月的频率进行更新。

难度很大,希望自己能够坚持下去。

当真正写完的那一天,我相信,不光是我自己,还有每篇文章都认真看的读者们,都会有非常大的收获。


文章将在 公众号: 从零开始搭SLAM 进行同步更新,欢迎大家关注。同时,也希望您将这个公众号推荐给您身边做激光SLAM的人们,大家共同进步。

从零开始搭二维激光SLAM --- 写作计划相关推荐

  1. 从零开始搭二维激光SLAM --- 基于GMapping的栅格地图的构建

    上篇文章讲解了如何在ROS中发布栅格地图,以及如何向栅格地图赋值. 这篇文章来讲讲如何将激光雷达的数据构建成栅格地图. 雷达的数据点所在位置表示为占用,从雷达开始到这点之间的区域表示为空闲. 1 GM ...

  2. 从零开始搭二维激光SLAM --- 激光雷达数据效果对比

    我们知道,不同品牌的激光雷达产生的数据是不一样的,那这些不同点是如何影响建图效果的呢? 这篇文章就是来分析这个问题,将从不同光强下的点云效果,不同夹角下的点云效果,以及 1 激光雷达的技术指标 激光雷 ...

  3. 从零开始搭二维激光SLAM --- 基于ICP的帧间匹配

    上一篇文章讲解了如何将激光雷达的sensor_msgs/LaserScan格式转换成pcl::PointCloud< pcl::PointXYZ>格式, 本篇文章将要讲解如何使用这个格式调 ...

  4. 从零开始搭二维激光SLAM --- Hector论文公式推导与相关代码解析

    这篇文章将带领大家推导一下hector slam论文中的公式.之后再对这部分公式对应的代码进行讲解下. markdown打公式太费劲了,所以我用手写了.(懒) 然后csdn又限制了图片文件大小,我是照 ...

  5. 二维激光SLAM( 使用Laser Scan Matcher )

    目录 一.Laser Scan Matcher安装配置 二.二维激光定位 一.Laser Scan Matcher安装配置 ROS自带的laser_scan_matcher库,使用的是CSM(Cano ...

  6. 使用二维激光雷达和cartographer_ros实现实时SLAM

    在前面已经完成了cartographer_ros的安装和demo的运行了.接下来,就要放到机器人上,实时进行SLAM了. 前一篇内容的链接如下: Cartographer_ros的下载.配置及编译与问 ...

  7. 室内移动机器人二维激光数据线特征提取算法的总结与开源算法分享

    本文章总结并翻译于 A comparison of line extraction algorithms using 2D rangedata for indoor mobile robotics 除 ...

  8. SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别

    本文为我在浙江省北大信研院-智能计算中心-情感智能机器人实验室-科技委员会所做的一个分享汇报,现在我把它搬运到博客中. 由于参与分享汇报的同事有许多是做其他方向的机器人工程师(包括硬件.控制等各方面并 ...

  9. SLAM精度评估—从二维到三维

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨lovely_yoshino 来源丨古月居 简介 最近在群里划水时,看到很多初学的SLAMer面 ...

  10. 【应用SLAM技术建立二维栅格化地图】

    应用SLAM技术建立二维栅格化地图 一. 设计目标 二. 技术要求 三. 设计方案 1. 激光SLAM简介 2. Cartographer简介与使用 1) Cartographer简介 2) 官方de ...

最新文章

  1. 推荐8个能极大提高办公效率的软件,让你告别加班
  2. matlab腐蚀膨胀代码_(三十二)形态学----膨胀和腐蚀
  3. crontab定时任务详解
  4. DirectShow学习
  5. apple air装双系统(win7)
  6. java 二分搜索获得大于目标数的第一位_程序员数据结构算法编程,二分查找搜索算法的原理与应用介绍!...
  7. eNSP模拟器RIP2动态路由,DHCP服务,ACL流控,组合使用的拓扑网络
  8. svn 覆盖更新_使用SVN钩子强制提交日志和限制提交文件类型
  9. 【OCR三】大批量生成文字训练集(转)
  10. 6- vue django restful framework 打造生鲜超市 -完成商品列表页(下)
  11. Windows程序设计与C语言的主要区别是什么?
  12. 【论文解读】VDN( Variational Denoising Network )变分去噪网络
  13. Jupyter notebook系列(2):使用技巧(快捷键,多行输出,多光标操作,Unix系统命令的使用,查看输入输出历史,保存记录点与分享,抑制文末输出,图片输出,多环境kernel切换)
  14. C语言写的一个贪吃蛇小游戏(windows系统)
  15. ZCMU-1428: Bit++ (水)
  16. 地址总线是单向还是双向_大余双向钢塑土工格栅%/*的作用泰安恒大工程材料-老友网...
  17. linux管道只能运输参数吗,oeasy教您玩转 linux 010212 管道 pipe
  18. 谷歌自动翻译-谷歌翻译api怎样能打开网页默认自动翻译
  19. 通过chrome来找到淘票票猫眼电影京东淘宝api接口
  20. html 表单提交跳转新的页面,jquery模拟form表单提交并新打开页面

热门文章

  1. [sdoi2015]排序(搜索+剪枝优化)
  2. codeforces 679B
  3. bootstrap基础样式学习(一)
  4. DIV块中 元素垂直居中
  5. Python裁剪图片,游戏大图裁小图
  6. 【转】android gravity属性 和 weight属性
  7. [导入]一个好网站的策划设计
  8. 从设计模式到恋爱宝典,程序员们的福利来了
  9. Maven 本地仓库明明有jar包,pom文件还是报错解决办法(Missing artifact...jar)
  10. Centos 7安装Docker可视化管理面板安装中文Portainer