机器人slam算法资料整理

传统机器人导航模块

造价高(一个激光模块1W圆),结构物复杂,功耗大



来源:


一个标准的SLAM系统

一个完整SLAM和导航系统的主要构架中SLAM核心就3个步骤:第一个部分称为预处理,也就是对激光雷达原始数据所优化,剔除一些有问题的数据,或者进行滤波。随后,要进行一个很关键的部分,叫做匹配。也就是说把当前这一个局部环境的点云数据在已经建立地图上寻找到对应的位置。


 

https://www.leiphone.com/news/201606/EVtHxJ6FrLUZ2FdX.html

 

 

一种简单的RGB-DSLAM原理框图

整个SLAM大概可以分为前端和后端,前端做配准,研究不同帧之间的变换关系。

前端相当于VO(视觉里程计),研究帧与帧之间变换关系。首先提取每帧图像特征点,利用相邻帧图像,进行特征点匹配,然后利用RANSAC去除大噪声,然后进行匹配,得到一个pose信息(位置和姿态),同时可以利用IMU(Inertial measurement unit惯性测量单元)提供的姿态信息进行滤波融合

后端则主要是对前端出结果进行优化,利用滤波理论(EKF、UKF、PF)、或者优化理论TORO、G2O进行树或者图的优化。最终得到最优的位姿估计。

后端这边难点比较多,涉及到的数学知识也比较多,总的来说大家已经慢慢抛弃传统的滤波理论走向图优化去了。

vSLAM在机器人上的应用最难的就是产品化和成本上的考虑,好在机器人的vSLAM不需要特别高的实时性,也没有VR、AR令人难受的眩晕效应,不需要将计算速率提的特别高,机器人行业的vSLAM是一个真正短期内看得见的爆发点。

配合低频的visual解算,100ms内利用imu纯积分实现高频率的vSLAM姿态输出,基本上可以实现很低jitter的定位定姿。当然这个行业还远没有达到成熟的阶段,比如依然没有合适的芯片,没有覆盖全场景全天候的解决方案,这也是整个slam行业要继续解决下去的问题。

来源:

https://baijia.baidu.com/s?old_id=824525

一文让你从0到1了解SLAM,还有机器人vSLAM!

 

SLAM算法实现的4要素

SLAM算法在实现的时候主要要考虑以下4个方面吧:

1. 地图表示问题,比如dense和sparse都是它的不同表达方式,这个需要根据实际场景需求去抉择

2. 信息感知问题,需要考虑如何全面的感知这个环境,RGBD摄像头FOV通常比较小,但激光雷达比较大

3. 数据关联问题,不同的sensor的数据类型、时间戳、坐标系表达方式各有不同,需要统一处理

4. 定位与构图问题,就是指怎么实现位姿估计和建模,这里面涉及到很多数学问题,物理模型建立,状态估计和优化

其他的还有回环检测问题,探索问题(exploration),以及绑架问题(kidnapping)。

来源

SLAM的前世今生 终于有人说清楚了 | 硬创公开课

https://www.leiphone.com/news/201605/5etiwlnkWnx7x0zb.html

 

SLAM和路径规划

SLAM更像是一种被动技能。SLAM本身只是在那里默默的去为机器人提供地图和定位信息,但是机器人如果需要进行主动移动,它是需要另外一种技术——运动规划或者路径规划。路径规划和SLAM是一种相互合作的技术。如果没有SLAM为路径规划提供高质量的地图和定位信息,路径规划就会变得非常难以工作。

 

全局路径规划

Astar 算法:根据地图测算出当前点到目标点的一个距离

 

局部规划

。机器人虽然已经规划出了大致的路径,但是在实际行动的过程中还是会遇到很多突发情况。比如说前面突然出现一个小孩、或者宠物,机器人怎么能在不需要修改之前规划好的路径的前提下,去绕开这些东西呢?大方向还是对的,但是这时候要需要让机器人临时改道,这样一个过程就叫做局部路径规划。这种方法目前也有很多对应的算法来体现,比如说传统上有EFF、目前有动态穿透法的算法来进行。新的算法如D

star算法:允许机器人在探索地图的过程中去时刻规划一个原始轨迹的估计。当地图发生变化的时候机器人能实时地进行调整。

 

路径覆盖

pace coverage,解决如何让机器人能够尽可能的在短时间内去覆盖掉地图中大部分的物体,这点和前面提到的“a点到b点的移动”,在目标和效果上是相反的。

 

来源

http://biz.ingdan.com/knowledge/details-1774.html

 

扫地机器人最重要的三点,是路径规划、清洁能力以及功耗。其中路径规划是众多扫地机器人面临的问题,通常的扫地机器人是没有记忆功能也不会提前进行路径规划,而是随机行进,也就是盲扫

来源:https://www.leiphone.com/news/201511/GKwYbEkc2QGlvp2J.html

 

 

VSLAM用到的测距算法:

1. TOF算法


主要分为脉冲式和相位式两种。这是一种相位式tof的原理,通过采集四个采样点的相位,解算时间差,获得对应pixel的深度信息。

脉冲式是一种更常见的tof测距方法,从传统的工业雷达,到现在炒的比较火的面振tof都大量存在它的踪影。

 

2. 结构光算法

激光投射器通过DOE投射出特征明显的散斑,被红外摄像头捕获,然后解算出深度信息

 

三角测距

通俗说就是通过光学的几何特性,使用计算机视觉方式来求出距离。这种方式好处是只需要传统的摄像头的成像设备。因此成本自然就会降低。

 

 

小米用的激光雷达是一个频率5Hz,360°扫描的激光雷达,所以小米的激光头需要一个旋转电机带动它旋转扫描,不停的刷新扫描到的周围物体的距离,进而进行实时定位与地图构建。激光测距仪不具备360°扫描的功能,就无法完成扫描动作。所以只能测距,不具备雷达功能。

来源https://www.zhihu.com/question/50272626/answer/133858377

 

 

激光雷达SLAM和V-SLAM

 

目前在自主定位与建图方面,比较火的方法主要有两种,一种是利用摄像头进行图像识别,另一种则是利用激光雷达。

 

激光雷达

向目标发射激光探测信号,然后将接收到的从目标反射回来的信号与发射信号进行比较,作适当处理后,就可获得目标的有关信息,如目标距离、方位、高度、速度、姿态、甚至形状等参数。激光的指向性特别好,是目前技术最可靠的的定位技术,而且也最为实用。包括图像法在内,目前市面上没有其他可替代品。

激光雷达向目标发射激光探测信号,然后将接收到的从目标反射回来的信号与发射信号进行比较,作适当处理后,就可获得目标的有关信息,如目标距离、方位、高度、速度、姿态、甚至形状等参数。激光的指向性特别好,是目前技术最可靠的的定位技术,而且也最为实用。包括图像法在内,目前市面上没有其他可替代品。

,激光雷达是通过测量激光飞行时间来测距的,光速乘以激光从发射到反射回来所需的时间,该数值的一半即为两者之间的距离。该原理需要非常精准的时间测量。这里的成本很大。

激光雷达,需要在一秒内完成几千上万次的测量(好的一般都是一秒钟进行2000次)。所以传统激光雷达的价格也非常贵。

 

图像识别导


利用搭载的单目或者双目摄像头扫描周围的环境,利用数学运算和几何、三角法测绘房间的地图。由于图像内含的信息量太大,运算起来比较耗电耗内存,很难做到实时显示。目前很难达到实用的效果。

视觉SLAM这块用的比较多是特征点地图,这种地图记录环境中特征点(或称为关键点)的几何空间位置。这种地图相比栅格地图看起来就不那么直观了。一般通过如GPS、UWB(无载波通信)以及摄像头配合稀疏方式的vSLAM算法产生,优点是相对数据存储量和运算量比较小,在最早的SLAM算法中这种地图多见。

卫星地图:这种直接使用传感器(一般是图像传感器)所构建的直接地图也很少使用,因为它的信息冗余度最大,对于数据存储是很大的挑战,此外,机器人要从中提取出有用的数据要耗费一番周折。

 

而特征点地图又是另一个极端,虽然数据量少,但是它往往不能反应所在环境的一些必须的信息,比如环境中障碍物的位置。因此这类地图基本只能用于定位问题。而要让机器人进行自主壁障和路径规划,就必须依赖其他的地图类型。所以目前其实vSLAM更多解决定位问题,要实现导航,还需要额外配置距离传感器,如激光雷达、超声波来完成。

 

栅格地图,或者Occupancy Map恰好是介于其中,一方面它能表示空间环境中的很多特征,机器人可以用它来进行路径规划,另一方面,它又不直接记录传感器的原始数据,相对实现了空间和时间消耗的最优。因此目前是机器人所广泛应用的地图存储方式。

来源:http://news.zol.com.cn/557/5572001.html

 

机器人对环境地图的描述的方式最常见的为栅格地图(Grid map)或者称为Occupancy Map。这种地图看起来和人们所认知的地图没啥区别。最早由NASA的Alberto Elfes在1989年提出的,在火星探测车上就用到过,其本质是一张位图图片,但其中每个“像素”则表示了实际环境中存在障碍物的概率分布。


一般来说,采用激光雷达、深度摄像头、超声波传感器等可以直接测量距离数据的传感器进行SLAM时,可以使用该地图。这种地图也可以通过距离测量传感器,超声波(早期),激光雷达(现在)绘制出来

 

 

 

与V-SLAM相关的算法

 

通用图优化算法g2o(General Graph Optimization)---:

g2o是一个算法集的C++实现,而并不是在算法理论上的创新,即根据前人求解非线性最小二乘的理论,根据具体的问题,选用最合适的算法。

它是一个平台,你可以加入你自己的线性方程求解器,编写自己的优化目标函数,确定更新的方式

 

姿态融合算法

姿态融合说白了就是将3轴加速度、3轴角速度和3轴磁场强度融合成四元数,再将四元数转化为欧拉角,最后将欧拉角最为控制量输送到所有电机以达控制飞行器姿态的目的。http://www.eepw.com.cn/article/272279.htm

 

ICP算法

(Iterative Closest Point迭代最近点)点云匹配算法,用于实现匹配。就是在已经拼好的画面中找到相似之处,确定新的一个拼图该放在哪里。ICP算法(IterativeClosest Point)是指一种高层次的基于自由形态曲面的配准方法,在20世纪80年代中期,很多学者开始对点集数据的配准进行了大量研究。1992年,计算计视觉研究者Besl和Mckay介绍了迭代最近点法ICP。ICP配准法主要用于解决基于自由形态曲面的配准问题。

如下图,假设PR(红色块)和RB(蓝色块)是两个点集,该算法就是计算怎么把PB平移旋转,使PB和PR尽量重叠,建立模型的


 

RANSAC算法

是“RANdom SAmple Consensus(随机抽样一致)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法——它有一定的概率得出一个合理的结果

 

区别

     ICP算法在迭代的时候,点对是已经匹配的;RANSAC算法在迭代的时候,点匹配对是随着优化函数改变的。

来源:http://blog.csdn.net/wishchin/article/details/17505555

 

 

Dead-Reckon

航位推算技术,是在知道当前时刻位置的条件下,通过测量移动的距离和方位,推算下一时刻位置的方法。

 

研究性质的SLAM算法

目前ROS中主流的gmapping、hector slam都是可以拿来做饰演的。

 

门特卡罗方法

以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。

 

 

V-SLAM要解决的关键问题

 

回环问题(loop closure):

如果匹配算法不足够优秀,或者环境中存在很不巧的干扰,如果机器人绕着环境一圈,就会发现原本是应该闭合的一个环形走廊断开了。比如正常地图应该这样:

 

走廊问题

一般来说,上述的SLAM过程对于运算消耗是巨大的,虽然并没有达到像训练神经网络动用服务器集群那种地步,但传统上需要PC级别的处理器。

另外,除了配备激光雷达外,还需要机器人具有IMU、里程计来为激光雷达提供辅助数据。否则SLAM系统也难以得到运行。总的来说,SLAM算法本身是一个对于外部系统有着多种依赖的算法。这是一个切实的工程问题。我们知道很多机器人,比如扫地机是不可能装一个PC进去的。因此为了让SLAM能在这类设备里运行,除了解决激光雷达成本外,还要对SLAM算法做出很好的优化

 

绑架问题

 

来源:https://www.leiphone.com/news/201606/EVtHxJ6FrLUZ2FdX.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

速感科技的RGB-D产品

 

ULBrain™三维传感器模组

于2016年10月底推出ULBrain™M-32三维视觉传感器模组,联合上游芯片厂商投入硬件生产线进行定制开发,集成前端计算芯片,内置自主研发的vSLAM芯片算法,可以对前端深度数据实现快速特征提取并获得准确位置姿态信息反馈给上位机直接使用,是目前已知的集成度最高,体积最小并且唯一前端内置视觉算法芯片的三维视觉传感器,可被直接用于VR头戴设备、手机外设、机器人、智能电视、安防监控等领域。

ulrbrain

售价3000

https://shop163465826.taobao.com/index.htm?spm=2013.1.w5002-14711867393.2.TBVjCw

配置:单核ARM,,双核DSP,9轴IMU, 内存128MB

 

速感科技COO贾小龙通过媒体表示,团队将集中力量推广ULBrain™ M-32这款高端传感器,但同时他们也在准备精度、性能减半,成本也相对更低的低端传感器,从而以多元化的产品协助打通市场,提高企业在机器人应用与服务领域的影响力。对于ULBrain™ M-32何时正式推向市场,贾小龙提到今年年底将有第一批产品对接B端市场的合作伙伴,而随着市场需求的增大和产能的提升,ULBrain™ M-32的成本将有望降低到数百元人民币。

 

 


SLAM地图构建与定位算法,含有卡尔曼滤波和粒子滤波器的程序 SLAM算法的技术文档合集(含37篇文档) slam算法的MATLAB源代码,国外的代码 基于角点检测的单目视觉SLAM程序,开发平台VS2003 本程序包设计了一个利用Visual C++编写的基于EKF的SLAM仿真器 Slam Algorithm with data association Joan Solà编写6自由度扩展卡尔曼滤波slam算法工具包 实时定位与建图(SLAM),用激光传感器采集周围环境信息 概率机器人基于卡尔曼滤波器实现实时定位和地图创建(SLAM算法 机器人地图创建新算法,DP-SLAM源程序 利用Matlab编写的基于EKF的SLAM仿真器源码 机器人定位中的EKF-SLAM算法,实现同时定位和地图构建 基于直线特征的slam机器人定位算法实现和优化 SLAM工具箱,很多有价值的SLAM算法 EKF-SLAM算法对运动机器人和周围环境进行同步定位和环境识别仿真 SLAM using Monocular Vision RT-SLAM机器人摄像头定位,运用多种图像处理的算法 slam(simultaneous localization and mapping)仿真很好的入门 SLAM自定位导航的一个小程序,适合初学者以及入门者使用 slam算法仿真 slam仿真工具箱:含slam的matlab仿真源程序以及slam学习程序 移动机器人栅格地图创建,SLAM方法,可以采用多种地图进行创建 SLAM算法程序,来自悉尼大学的作品,主要功能是实现SLAM算法SLAM算法中的EKF-SLAM算法进行改进,并实现仿真程序 SLAM的讲解资料机器人导航热门方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值