导航:首页 > 源码编译 > 使用ba优化的开源slam算法

使用ba优化的开源slam算法

发布时间:2023-01-06 20:31:58

⑴ 如何看待谷歌在10月6日开源的slam算法cartographer

跑了demo,效果非常好.之前使用gmapping画过室内地图,分别用北醒与镭神的雷达跑的,镭神效果较好,但是总体还是和cartographer差了一截.
现在的问题是,cartographer使用的是MultiEchoLaserScan类型的数据,而我使用的雷达传入的是LaserScan类型的数据,正在寻找解决办法

⑵ SLAM算法解析

【嵌牛导读】: SLAM(Simultaneous Localization and Mapping) 是业界公认视觉领域空间定位技术的前沿方向,中文译名为“同步定位与地图构建”,它主要用于解决机器人在未知环境运动时的定位和地图构建问题。

【 嵌牛鼻子】: 有人就曾打比方,若是手机离开了 WIFI 和数据网络,就像无人车和机器人,离开了 SLAM 一样。

【嵌牛正文】: 目前科技发展速度飞快,想让用户在 AR/VR、机器人、无人机、无人驾驶领域体验加强,还是需要更多前沿技术做支持,SLAM 就是其中之一。实际上,有人就曾打比方,若是手机离开了 WIFI 和数据网络,就像无人车和机器人,离开了 SLAM 一样。

        在 VR/AR 方面,根据 SLAM 得到地图和当前视角对叠加虚拟物体做相应渲染,这样做可以使得叠加的虚拟物体看起来比较真实,没有违和感。在无人机领域,可以使用 SLAM 构建局部地图,辅助无人机进行自主避障、规划路径。在无人驾驶方面,可以使用 SLAM 技术提供视觉里程计功能,然后跟其他的定位方式融合。机器人定位导航方面,SLAM 可以用于生成环境的地图。基于这个地图,机器人执行路径规划、自主探索、导航等任务。

        SLAM 技术的发展距今已有 30 余年的历史,涉及的技术领域众多。由于本身包含许多步骤,每一个步骤均可以使用不同算法实现,SLAM 技术也是机器人和计算机视觉领域的热门研究方向。

        SLAM 的英文全程是 Simultaneous Localization and Mapping,中文称作“同时定位与地图创建”。SLAM 试图解决这样的问题:一个机器人在未知的环境中运动,如何通过对环境的观测确定自身的运动轨迹,同时构建出环境的地图。SLAM 技术正是为了实现这个目标涉及到的诸多技术的总和。

        SLAM 技术涵盖的范围非常广,按照不同的传感器、应用场景、核心算法,SLAM 有很多种分类方法。按照传感器的不同,可以分为基于激光雷达的 2D/3D SLAM、基于深度相机的 RGBD SLAM、基于视觉传感器的 visual SLAM(以下简称 vSLAM)、基于视觉传感器和惯性单元的 visual inertial odometry(以下简称 VIO)。

        基于激光雷达的 2D SLAM 相对成熟,早在 2005 年,Sebastian Thrun 等人的经典着作《概率机器人学》将 2D SLAM 研究和总结得非常透彻,基本确定了激光雷达 SLAM 的框架。目前常用的 Grid Mapping 方法也已经有 10 余年的历史。2016 年,Google 开源了激光雷达 SLAM 程序 Cartographer,可以融合 IMU 信息,统一处理 2D 与 3D SLAM 。目前 2D SLAM 已经成功地应用于扫地机器人中。

        基于深度相机的 RGBD SLAM 过去几年也发展迅速。自微软的 Kinect 推出以来,掀起了一波 RGBD SLAM 的研究热潮,短短几年时间内相继出现了几种重要算法,例如 KinectFusion、Kintinuous、Voxel Hashing、DynamicFusion 等。微软的 Hololens 应该集成了 RGBD SLAM,在深度传感器可以工作的场合,它可以达到非常好的效果。

        视觉传感器包括单目相机、双目相机、鱼眼相机等。由于视觉传感器价格便宜,在室内室外均可以使用,因此 vSLAM 是研究的一大热点。早期的 vSLAM 如 monoSLAM 更多的是延续机器人领域的滤波方法。现在使用更多的是计算机视觉领域的优化方法,具体来说,是运动恢复结构(structure-from-motion)中的光束法平差(bundle adjustment)。在 vSLAM 中,按照视觉特征的提取方式,又可以分为特征法、直接法。当前 vSLAM 的代表算法有 ORB-SLAM、SVO、DSO 等。

        视觉传感器对于无纹理的区域是没有办法工作的。惯性测量单元(IMU)通过内置的陀螺仪和加速度计可以测量角速度和加速度,进而推算相机的姿态,不过推算的姿态存在累计误差。视觉传感器和 IMU 存在很大的互补性,因此将二者测量信息进行融合的 VIO 也是一个研究热点。按照信息融合方式的不同,VIO 又可以分为基于滤波的方法、基于优化的方法。VIO 的代表算法有 EKF、MSCKF、preintegration、OKVIS 等。Google 的 Tango 平板就实现了效果不错 VIO。

        总的来说,相比于基于激光雷达和基于深度相机的 SLAM,基于视觉传感器的 vSLAM 和 VIO 还不够成熟,操作比较难,通常需要融合其他传感器或者在一些受控的环境中使用。

【转51cto】

⑶ 无人驾驶的核心是什么是如何运行的

4级或5级的自主驾驶很难有一个明确的标准来定义,自主驾驶应该不复杂。自动驾驶其实涉及三个问题:一、我在哪里?第二,我要去哪里?第三是怎么去。这三个问题的完整解决方案就是真正的自动驾驶。所以特斯拉升级的8000美元自动驾驶2.0只有部分线控功能,并不是真正的自动驾驶。福特、网络、谷歌做的都是真正的自动驾驶,远超特斯拉,两者差别巨大。

机器人定位有三种常见的类型:相对定位、绝对定位和组合定位。自动驾驶一般采用组合定位。首先,本体感受传感器如里程计和陀螺仪测量相对于机器人初始姿态的距离和方向,以确定机器人的当前姿态,这也称为轨迹估计。然后使用激光雷达或视觉感知环境,使用主动或被动识别、地图匹配、GPS或导航信标进行定位。位置的计算方法包括三角测量、三边测量和模型匹配算法。从这个角度来说,IMU也是自动驾驶必不可少的一部分。

同时,机器人定位实际上是一个概率问题,所以机器人定位算法有两个流派,一个是卡尔曼滤波,一个是贝叶斯推理。有扩展卡尔曼滤波器(EKF)、卡尔曼滤波器(KF)和无迹卡尔曼滤波器(UKF)。另一种是基于贝叶斯推理的定位方法。网格和粒子用于描述机器人位置空间,递归计算状态空间中的概率分布,如马尔可夫定位(MKV)和蒙特卡罗定位(MCL)。

在地图匹配中,必须有一个优先地图与之比较。这张地图不一定是厘米级高精度地图。有必要谈谈地图,它可以分为四类,即度量、拓扑、传感器和语义。我们最常见的地图是语义级地图。无人驾驶不是导弹。一般输入目的地应该是语义层面。毕竟人类的交通方式是语义层面,不是地理坐标。这是机器人和无人驾驶的区别之一。机器人一般不考虑语义,只需要知道自己在坐标系中的位置。全球定位系统提供全球坐标系的度量。未来,V2X将提供雷达和视觉探测距离(NLOS)之外的特定物体(移动的行人和汽车)的地图,或V2X地图。目前国内处于研究阶段的无人车大多采用GPS RTK定位,必须配合厘米级高精度地图才能获得语义信息,不可能做到真正的无人。

⑷ 如何看待谷歌在 10 月 6 日开源的 SLAM 算法 cartographer

1. LIDAR SLAM,并且用了IMU辅助;
2. 有submap,有scan matching,解决了一些基本的问题;
3. 有Loop closure optimization,这个很好,非常好,这是在indoor环境里必须要有的,在visual slam中大幅降低accumulated error的方法,作者给加进来了;
4. 给了一套node selection, branching, and computation
of upper bounds的方法.

结论:一套state-of-art的indoor LIDAR SLAM系统实现,该有的都有了,很robust,看得出作者为了降低accumulated error提高真正工程上的可用性做了很多努力。

作者:立党
链接:
来源:知乎
着作权归作者所有,转载请联系作者获得授权。

⑸ 激光雷达SLAM包括以下几种方案:

激光雷达SLAM包括以下几种方案:

直接法, 直接法的典型代表是ICP和NDT系列,ICP可以直接计算出激光的位姿,多帧可以构成联合优化,这种方案比较简单但是比较有效,常用于激光雷达的多程对齐。

基于特征的匹配(LO),该方案的典型代表是LOAM和后续的改进方案A-LOAM/F-LOAM,该方案通过寻找线面特征,并通过特征匹配来计算帧间的位姿,多个位姿可以做BA优化。

多传感器融合的方案。该方案的典型代表是LIO-Mapping,LINS和LIO-SAM.LIO-Mapping算法借鉴VINS-Mono的预积分和后端优化,前端视觉里程计改成激光里程计。

基于栅格的,该方案的代表是谷歌开源的cartography,这种方案在室内的机器人定位比较有优势。

基于面元,该方案的典型代表是suma。

基于语义信息,该方案的典型代表是segmap和suma++。

高精地图的生产包括语义信息的提取(通常来自视觉,部分也可来自激光),单程LIO(gnss+imu+dmi+lidar/visual odometry),多程对齐。说一下每一部分的难点吧:

图像语义信息的提取。图像的语义信息包括车道线,杆状物体,牌子,地面车信等;在高速场景,物体遮挡较少,物体检测的准确率是可以做到95%以上的;在城市道路,由于树木的遮挡(对牌子和杆状物体的遮挡), 车辆遮挡(对车道线和地面车信的遮挡),目前的检测是很难做到90%以上的。

点云的语义信息提取。点云对于特殊材料反射率较大(如车道线),基本上二分就可以解决很多问题,对于高速场景,车道线磨损并不严重,语义信息提取较容易;对于城市道路车道线磨损严重,且存在老旧的车道线的干扰,语义信息的提取是很难做到90%以上的。

LIO. 高精采集车一般配备激光雷达,相机,imu, dmi和RTK等设备,对单程轨迹来说,是可以采用多传感器融合的。对于高速场景,建筑物遮挡较少,RTK信号较好,后结算的RTK的精度是可以做到30cm以内的(在山区和隧道场景例外),自动化比较难做,这个和场景有关系。

多程融合。主要看人眼去分辨点云是否对齐,当然是可以建立小规模数据集进行评测,自动化率非常低。

总的来说,目前高精地图的生产是很难做到自动化的,主要原因是场景复杂,corner case太多,绝对精度和相对精度都很难满足要求。

总结一下,目前激光SLAM的直接法比较简单,可以用于激光里程计的多程对齐或回环检测; 纯LO的算法目前工业圈很少使用,一般采用多传感器融合的方案,毕竟激光雷达都用了,也不差IMU这样的传感器。多传感器融合的方案主要用于高精地图的制作,自动驾驶领域一般采用高精地图作为先验来定位,不会同时定位和建图。基于栅格的可以用于移动机器人,在室内环境栅格假设大多数还是有效的,在室外场景的话,一般会采用NDT Map来存储地图。基于语义信息和面元的话,个人不太了解,在工业圈的使用也不多。

⑹ slam算法是什么

SLAM是Simultaneous localization and mapping缩写,意为“同步定位与建图”,主要用于解决机器人在未知环境运动时的定位与地图构建问题。

Simultaneous Localization and Mapping (SLAM)原本是Robotics领域用来做机器人定位的,最早的SLAM算法其实是没有用视觉camera的(Robotics领域一般用Laser Range Finder来做SLAM)。

SLAM对实时性要求比较高,而要做到比较精确、稳定、可靠、适合多种场景的方案一般计算量相对较大,目前移动式设备的计算能力还不足够支撑这么大的计算量,为了达到实时性能,往往需要在精确度和稳定性上做些牺牲。

因此在具体的应用中,往往需要根据移动设备所具有的传感器组合、计算能力、用户场景等,选择和深度定制合适的SLAM算法。比如,无人驾驶汽车和手机端AR类应用的SLAM算法就非常不同。

SLAM的典型应用领域

机器人定位导航领域:地图建模。SLAM可以辅助机器人执行路径规划、自主探索、导航等任务。国内的科沃斯、塔米以及最新面世的岚豹扫地机器人都可以通过用SLAM算法结合激光雷达或者摄像头的方法,让扫地机高效绘制室内地图,智能分析和规划扫地环境,从而成功让自己步入了智能导航的阵列。

VR/AR方面:辅助增强视觉效果。SLAM技术能够构建视觉效果更为真实的地图,从而针对当前视角渲染虚拟物体的叠加效果,使之更真实没有违和感。VR/AR代表性产品中微软Hololens、谷歌ProjectTango以及MagicLeap都应用了SLAM作为视觉增强手段。

无人机领域:地图建模。SLAM可以快速构建局部3D地图,并与地理信息系统(GIS)、视觉对象识别技术相结合,可以辅助无人机识别路障并自动避障规划路径,曾经刷爆美国朋友圈的Hovercamera无人机,就应用到了SLAM技术。

无人驾驶领域:视觉里程计。SLAM技术可以提供视觉里程计功能,并与GPS等其他定位方式相融合,从而满足无人驾驶精准定位的需求。例如,应用了基于激光雷达技术Google无人驾驶车以及牛津大学MobileRoboticsGroup11年改装的无人驾驶汽车野猫(Wildcat)均已成功路测。

以上内容参考:slam路径规划算法 - CSDN

⑺ slam算法是什么

slam算法是实现机器人定位、建图、路径规划的一种算法。SLAM是同步定位与地图构建(Simultaneous Localization And Mapping)的缩写,最早由Hugh Durrant-Whyte 和 John J.Leonard自1988年提出。

其实SLAM更像是一个概念而不是一个算法,它本身包含许多步骤,其中的每一个步骤均可以使用不同的算法实现。主要用于解决移动机器人在未知环境中运行时即时定位与地图构建的问题。

SLAM技术的核心步骤:

大体上而言,SLAM包含了感知、定位、建图这三个过程。

感知:机器人能够通过传感器获取周围的环境信息。

定位:通过传感器获取的当前和历史信息,推测出自身的位置和姿态。

建图:根据自身的位姿以及传感器获取的信息,描绘出自身所处环境的样貌。

⑻ slam算法是什么

slam算法是实现机器人定位、建图、路径规划的一种算法。

Simultaneous Localization and Mapping (SLAM)原本是Robotics领域用来做机器人定位的,最早的SLAM算法其实是没有用视觉camera,Robotics领域一般用Laser Range Finder来做SLAM。

其中一个原因是SLAM对实时性要求比较高,而要做到比较精确、稳定、可靠、适合多种场景的方案一般计算量相对较大,目前移动式设备的计算能力还不足够支撑这么大的计算量,为了达到实时性能,往往需要在精确度和稳定性上做些牺牲。

算法:

指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。

也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

⑼ 激光雷达SLAM算法

机器人研究的问题包含许许多多的领域,我们常见的几个研究的问题包括:建图(Mapping)、定位(Localization)和路径规划(Path Planning),如果机器人带有机械臂,那么运动规划(Motion Planning)也是重要的一个环节,SLAM需要机器人在未知的环境中逐步建立起地图,然后根据地区确定自身位置,从而进一步定位。

ROS系统通常由大量节点组成,其中任何一个节点均可以通过发布/订阅的方式与其他节点进行通信。举例来说,机器人上的一个位置传感器如雷达单元就可以作为ROS的一个节点,雷达单元可以以信息流的方式发布雷达获得的信息,发布的信息可以被其他节点如导航单元、路径规划单元获得。

ROS的通信机制:

ROS(机器人操作系统)中SLAM的一些功能包,也就是一些常用的SLAM算法,例如Gmapping、Karto、Hector、Cartographer等算法。我们不会去关注算法背后的数学原理,而是更注重工程实现上的方法,告诉你SLAM算法包是如何工作的,怎样快速的搭建起SLAM算法。

地图 : ROS中的地图很好理解,就是一张普通的灰度图像,通常为pgm格式。这张图像上的黑色像素表示障碍物,白色像素表示可行区域,灰色是未探索的区域

地图在ROS中是以Topic的形式维护和呈现的,这个Topic名称就叫做 /map ,由于 /map 中实际上存储的是一张图片,为了减少不必要的开销,这个Topic往往采用锁存(latched)的方式来发布。地图如果没有更新,就维持着上次发布的内容不变,此时如果有新的订阅者订阅消息,这时只会收到一个 /map 的消息,也就是上次发布的消息;只有地图更新了(比如SLAM又建出来新的地图),这时 /map 才会发布新的内容。 这种方式非常适合变动较慢、相对固定的数据(例如地图),然后只发布一次,相比于同样的消息不定的发布,锁存的方式既可以减少通信中对带宽的占用,也可以减少消息资源维护的开销。

Gmapping ,Gmapping算法是目前基于激光雷达和里程计方案里面比较可靠和成熟的一个算法,它基于粒子滤波,采用RBPF的方法效果稳定,许多基于ROS的机器人都跑的是gmapping_slam。

gmapping的作用是根据激光雷达和里程计(Odometry)的信息,对环境地图进行构建,并且对自身状态进行估计。因此它得输入应当包括激光雷达和里程计的数据,而输出应当有自身位置和地图。

论文支撑:R-LINS: A Robocentric Lidar-Inertial State Estimator for Robust and Efficient Navigation

6轴 IMU:高频,聚焦自身运动,不采集外界环境数据
3D LiDAR:低频,聚焦车体运动,采集外界环境数据

R-LINS使用以上两种传感器来估计机器人的运动姿态, 对于任一传感器而言,单独的依靠自己的数据是很难实现地图构建的, 比如纯雷达模型使用的传感器是激光雷达,可以很好的探测到外界的环境信息。但是,同样的,也会受到这些信息的干扰,再长时间的运算中会产生一定的累计误差。为了防止这种误差干扰到后续的地图构建中,需要使用另一种传感器来矫正机器人自身的位姿信息, 即IMU传感器,IMU传感器由于是自身运动估计的传感器,所以,采集的都是自身运动的姿态信息。可以很好的矫正激光雷达里程计的位姿信息。所以,通常使用激光雷达和惯导来进行数据融合,实现姿态信息的矫正。

一共分为三大块:

⑽ slam算法是什么

slam算法是解决一个机器人在未知的环境中运动,如何通过对环境的观测确定自身的运动轨迹,同时构建出环境的地图的问题方法。

SLAM技术正是为了实现这个目标涉及到的诸多技术的总和。SLAM技术涵盖的范围非常广,按照不同的传感器、应用场景、核心算法,SLAM有很多种分类方法。

slam算法应用

在 VR/AR 方面,根据 SLAM 得到地图和当前视角对叠加虚拟物体做相应渲染,这样做可以使得叠加的虚拟物体看起来比较真实,没有违和感。在无人机领域,可以使用 SLAM 构建局部地图,辅助无人机进行自主避障、规划路径。

在无人驾驶方面,可以使用 SLAM 技术提供视觉里程计功能,然后跟其他的定位方式融合。机器人定位导航方面,SLAM 可以用于生成环境的地图。基于这个地图,机器人执行路径规划、自主探索、导航等任务。

阅读全文

与使用ba优化的开源slam算法相关的资料

热点内容
Python取ID对应的值 浏览:630
现在我的世界什么服务器最混乱 浏览:762
美国好的源码出售 浏览:323
苹果ipad文件夹怎么添加文字 浏览:481
腾讯云连接自己的服务器地址 浏览:216
硕士英语综合教程pdf 浏览:46
分段加密的安全性 浏览:507
咪咕直播为什么没有适配安卓系统 浏览:172
php模版大全 浏览:102
没车能解压吗 浏览:634
php开发oa系统源码 浏览:759
怎么安装苹果ios的app 浏览:581
app拉新如何机刷 浏览:480
zendeclipseforphp 浏览:480
同时有几个微信如何加密微信 浏览:86
大众20t压缩比 浏览:566
程序员要记住的500个单词 浏览:831
wq快捷方式在哪个文件夹 浏览:965
云南到河北源码 浏览:92
安卓手机怎么玩造梦3 浏览:60