【SLAM基础】激光SLAM和视觉SLAM介绍_光照会影响视觉导航吗-程序员宅基地

技术标签: # SLAM  机器人  机器学习  

:如果你也对机器人、人工智能感兴趣,看来我们志同道合
:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852
:文章若有幸对你有帮助,可点赞 收藏 不迷路
:内容若有错误,敬请留言 指正!原创文,转载请注明出处


问题来源

自动导航技术是机器人的关键技术,机器人要实现自主导航需要解决以下三个问题:
:1.我在哪里?
:2.到哪里去?
:3.怎么去?
其中第一个问题是后面两个的基础,如果都不知道所处的位置,又怎么能确定要去的方向呢?而SLAM就是为了解决第一个问题的其中一个办法。
1887年,Smith等提出了一种定位与构图同时进行的方法,从此拉开对同时定位与地图构建研究的序幕。
一般来讲,SLAM系统通常都包含多种传感器和多种功能模块。而按照核心的功能模块来区分,目前常见的机器人SLAM系统一般具有两种形式:基于激光雷达的SLAM(激光SLAM)和基于视觉的SLAM(Visual SLAM或VSLAM)。

定位与建图之间的关系

在未知的环境中实现精确定位和建图需要精确的地图,建立精确的地图又依赖于精准的定位,形成一种两者相互耦合,相辅相成的关系。

一、激光SLAM

1.1定义

:激光SLAM脱胎于早期的基于测距的定位方法(如超声和红外单点测距)。激光雷达(Light Detection And Ranging)的出现和普及使得测量更快更准,信息更丰富。激光雷达采集到的物体信息呈现出一系列分散的、具有准确角度和距离信息的点,被称为点云。通常,激光SLAM系统通过对不同时刻两片点云的匹配与比对,计算激光雷达相对运动的距离和姿态的改变,也就完成了对机器人自身的定位。

:激光雷达采集到的物体信息呈现出一系列分散的、具有准确角度和距离信息的点,被称为点云。通常,激光SLAM系统通过对不同时刻两片点云的匹配与比对,计算激光雷达相对运动的距离和姿态的改变,从而完成对机器人自身的定位。

:激光雷达距离测量比较准确,误差模型简单,在强光直射以外的环境中运行稳定,点云的处理也比较容易。同时,点云信息本身包含直接的几何关系,使得机器人的路径规划和导航变得直观。激光SLAM理论研究也相对成熟,落地产品更丰富。

1.2优点

1.激光雷达的出现和普及使得测量更快更准,信息更丰富。
2.误差模型简单,在强光直射以外的环境中运行稳定,点云的处理也比较容易。
3.点云信息本身包含直接的几何关系,使得机器人的路径规划和导航变得直观。
4.研究成熟,在算法上门槛更低

1.3缺点

1.较为缺乏回环检测的能力,累计误差的消除较为困难。
2.成本都高于视觉传感器。
3.不擅长动态环境中的定位。
4.多机器人协作能力差。
在这里插入图片描述
激光雷达

在这里插入图片描述
激光SLAM的地图构建(谷歌Cartographer)

二、视觉SLAM

2.1定义

使用相机作为唯一感知环境的传感器,被称为视觉SLAM:在未知的环境中的未知地点出发,在移动的过程中通过重复观测到周围的环境特征(路标)定位自身的位置和姿态,再根据自身位置进行增量式构建地图,从而达到同时定位和建图的目的。一个VSLAM系统由前端和后端组成,前端负责负责快速定位。后端负责较慢的地图维护:1.(回环)回到原处并修正两次访问中间各处的位置与姿态;2.当前端跟踪丢失时,根据视觉的纹理信息对机器人进行重新定位。
回环问题的难点在于一开始出现未被发觉的少许误差,直到机器人绕着环路一圈,误差将不断累加,导致环路无法闭合的问题。
在这里插入图片描述

2.2优点

VSLAM的优点是它所利用的丰富纹理信息。例如两块尺寸相同内容却不同的广告牌,基于点云的激光SLAM算法无法区别他们,而视觉则可以轻易分辨。这带来了重定位、场景分类上无可比拟的巨大优势。同时,视觉信息可以较为容易的被用来跟踪和预测场景中的动态目标,如行人、车辆等,对于在复杂动态场景中的应用这是至关重要的。第三,视觉的投影模型理论上可以让无限远处的物体都进入视觉画面中,在合理的配置下(如长基线的双目相机)可以进行很大尺度场景的定位与地图构建。

1.从环境中获取海量的、富于冗余的纹理信息,拥有超强的场景辨识能力。
2.多机器人协作能力强。
3.相对于其他传感器能够获得更丰富的图像信息,同时视觉传感器轻巧价廉、易于安装,因此基于视觉传感器的SLAM研究成为当下研究热点。
在这里插入图片描述
DJI精灵4上的视觉系统。

2.3缺点

1.受光照的影响较大。
2.在无纹理环境(比如面对整洁的白墙面)中表现较差。
3.技术的算法门槛也远远高于激光SLAM。基于非线性优化的地图构建上是非常复杂和耗时的计算问题。

三、激光SLAM和视觉SLAM的融合

视觉在纹理丰富的动态环境中稳定工作,并能为激光SLAM提供非常准确的点云匹配,而激光雷达提供的精确方向和距离信息在正确匹配的点云上会发挥更大的威力。
而在光照严重不足或纹理缺失的环境中,激光SLAM的定位工作使得视觉可以借助不多的信息进行场景记录。

在这里插入图片描述
图:激光雷达和视觉系统的安装应用。谷歌无人车上的多线激光雷达

四、SLAM系统与其他传感器的融合

SLAM(Simultaneous Localization and Mapping,同时定位与建图)系统是一种通过结合传感器测量数据来实现机器人同时进行自主定位和环境地图构建的技术。现实中的激光与视觉SLAM系统几乎都会配备惯性元件、轮机里程计、卫星定位系统、室内基站定位系统等辅助定位工具。

SLAM系统通常基于以下传感器进行融合:

  1. 惯性测量单元(Inertial Measurement Unit,IMU):IMU能够提供机器人的加速度和角速度测量数据,用于估计机器人的姿态和位置变化。与其他传感器相比,IMU具有高频率的测量能力,但会存在漂移等问题。

  2. 视觉传感器:包括摄像头、深度相机等。通过对环境中的特征进行提取和跟踪,利用视觉传感器可以得到机器人在环境中的位置和地图信息。视觉传感器能够提供丰富的感知信息,但对于光照和遮挡等问题比较敏感。

  3. 激光雷达:激光雷达通过发射激光束并测量反射回来的光来获取环境的几何信息。激光雷达提供高精度的距离和位置测量,可以用于地图构建和障碍物检测。但是激光雷达通常较为昂贵、体积较大,且对于特别亮或黑暗的物体可能有限制。

  4. 范围传感器:比如超声波传感器和红外线传感器等,用于测量机器人与周围物体的距离。范围传感器常用于近距离避障和环境建模,但精度和范围有限。

融合不同传感器的数据可以综合各种传感器的优势,提高定位和建图的准确性和鲁棒性。常用的方法包括扩展卡尔曼滤波(Extended Kalman Filter,EKF)、粒子滤波(Particle Filter)和优化方法(如图优化)等。这些方法能够将不同传感器获得的信息进行融合,并进行状态估计和地图构建,实现SLAM系统的功能。

结语

SLAM技术将赋予为机器人和智能体前所未有的行动能力。作为当前SLAM框架的主要类型,激光SLAM与视觉SLAM必将在相互竞争和融合中发展,必将带来机器人技术和人工智能技术的真正革命,也将使得机器人从实验室和展示厅中走出来,真正服务和解放人类。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_51244852/article/details/116143358

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签