

SLAM从入门到精通(基本框架)
source link: https://blog.csdn.net/feixiaoxing/article/details/132661717
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
SLAM是机器人的一个分支。广义上来说,机器人还包括了计算机视觉、语音识别、自然语言处理、机械臂控制、运动控制、机器人导航、机器人调度等很多分支领域。而SLAM解决的问题则是最基本的问题,归纳起来就是两句话,第一,这是什么地方;第二,我在哪。当然要想解决这个问题,我们就必须要一定的传感器输入,通过算法计算,最终输出自己的位姿信息。这是直觉上最容易想到的办法。

1、基本SLAM方法
一个机器人一般是由两部分组成。下面是底盘,上面是躯干部份,一般也是作业部分。而要解决slam问题,通常需要安装一个或者是多个传感器。不同的传感器有不同的用途,一般有电机编码器、摄像头、单线雷达、imu、3d lidar等等。
很多传感器都是可以直接输出位姿结果的,比如电机编码器或者IMU。假设是一个差速轮,我们就可以通过差速轮算出当前机器人的里程计数据。如果是这么做,那么整个SLAM的架构就简单了,

2、带优化的SLAM计算方法
仅仅使用单个传感器,就可以解决SLAM的问题,如果是这样的话,这反而变得简单了。但是现实中,单个传感器往往有很多的局限性。比如说,如果说只是使用电机编码器计算里程计,遇到平直的路面可能还好,一旦遇到坑坑洼洼的路面,可能机器人本身并没有往前走很远,但是电机已经走了很远的距离。所以这个时候,我们很自然地想到,也许需要其他办法解决这个问题,
方法1,用数学优化方法来解决。一般来说,简单的SLAM定位只考虑传感器数据前后帧的关系,没有对一个范围内的数据进行优化,这样至少可以解决一部分累积误差。

方法2,这个方法比math optimise好理解一点。相当于传感器1获得一个基础结果之后,利用传感器2对传感器1的结果进行迭代优化,生成一个更好的结果。

方法3,这也是比较容易想到的办法,那就是一个传感器不行,就多个传感器一起运行。最终把所有的计算结果进行融合处理。

3、添加回环检测的SLAM处理方法
有了上面的优化和处理,看上去SLAM结果会比之前好很多。事实上也确实是这样的。但是这个里面有一个问题,虽然优化方法也好、多传感器也好,它们都只能降低一定范围的误差,但是没有办法消弭全局范围内降低误差呢。所以为了解决这个问题,早期的研发人员又想出来了回环检测的方法。它的道理还是比较简单的,主要是第一次制图的时候使用,它就是告诉机器人系统,自己曾经来过这个地方,之前的SLAM结果也保存着。那么现在的SLAM可以通过之前保存好的结果+现在传感器的偏移,得到新的结果。这样就可以进一步缩小长期运行带来的累积误差。
仔细想一下,2中的优化其实是一种局部优化,3中的优化是一种全局优化,一个处理器再强,也没有办法在规定的时间里面做全局优化。那么通过关键帧保存、参考帧检测的方法,就可以实现这一目的。而回环检测,就是在全局优化和实时处理之间的一种妥协方法。这种回环检测也是主要用于第一次SLAM处理的时候,后期定位一般用不到。

4、全局SLAM和局部SLAM分开的方法
实际使用的时候,我们一般是全局SLAM和局部SLAM分开的。全局SLAM一般要求的定位精度是比较粗的,可以是几厘米,十几厘米。而局部SLAM的进度要求,则为几厘米,甚至是几毫米。所以,要做到这一点,有必要局部添加更多的特征信息,才能实现这一目标。而对全局SLAM,则可以做相应的简化措施。

Recommend
-
4
SLAM从入门到精通(开始篇)
-
9
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 linux系统里面的编译和windows下面的编译不同,它没有什么特别好用的IDE。一般都需要自己写编译脚本。这项工作在以前可能很麻烦,但是现在一般都被cmake取代了。...
-
18
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 不可否认,slam中的有一部分内容来自于数学。但是,我们在学习使用的过程中,也不用纠结于整个数学的推导过程,能正确使用数学结论也是可以的。有能力的同学,按...
-
7
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们介绍了hector slam建图。相对而言,hector slam建图对数据的要求比较低,只需要lidar数据就可以建图了。但是hector slam也有它自己的问题。那就是如果ro...
-
5
SLAM从入门到精通(tf的使用)
-
7
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 slam的最终目的是为了建图和定位。有了地图,我们才知道当前机...
-
2
SLAM从入门到精通(amcl定位使用)
-
13
SLAM从入门到精通(从amcl到navigation软件栈)
-
4
SLAM从入门到精通(IMU数据的读取)
-
6
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 目前建图的方法一般有视觉建图和激光建图两种。...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK