激光slam理论与实践_SLAM算法

激光slam理论与实践_SLAM算法激光SLAM笔记(1)——激光SLAM框架和基本数学理论1、SLAM分类1.1、基于传感器的分类1.2、基于后端的分类2、激光SLAM算法(基于优化的算法)2.1、激光SLAM算法的流程2.2、激光SLAM常用算法2.3、激光SLAM在实际环境中的问题3、激光SLAM算法介绍3.1、2D激光SLAM3.2、3D激光SLAM1、SLAM分类1.1、基于传感器的分类1.2、基于后端的分类 …

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1、SLAM分类

1.1、基于传感器的分类

在这里插入图片描述

1.2、基于后端的分类

在这里插入图片描述
  基于图优化方法的激光SLAM有cartographer,基于滤波器的方法有GMapping。

13、基于图的SLAM

在这里插入图片描述
  基于图优化方法的激光SLAM,分为前端后端
  前端负责实现激光里程计,包括帧间匹配、回环检测等,旨在根据激光雷达的观测,构建误差函数,用于后端优化
  后端则负责进行优化,如根据前端建立的约束,优化位姿;根据回环检测的结果,优化位姿图;发布地图等。后端的作用是修正位姿和地图等

2、激光SLAM算法(基于优化的算法)

2.1、激光SLAM算法的流程

  基于图优化方法的激光SLAM和视觉SLAM的流程相同,只是其中用到的算法不同
在这里插入图片描述

2.2、激光SLAM常用算法

一、数据预处理

  1. 里程计标定
      轮式里程计的机械标称值并不代表真实值,实际误差可能较大。所以需要标定后才能使用。 里程计的精度对于机器人定位和建图至关重要
  2. 激光雷达运动畸变去除
      每一帧激光数据的采集需要时间,在采集期间如果机器人运动会使测量值产生畸变。运动产生的畸变会让数据严重失真,影响匹配精度。
  3. 不同系统之间的时间同步

二、帧间匹配算法(激光SLAM核心部分)
  帧间匹配算法直接影响激光SLAM的效果,后端优化只是消除该过程所积累的误差,帧间匹配估计的位姿越准确,后期建图效果越好。常用算法如下图所示:
在这里插入图片描述
  作者笔记:
  不同的激光slam算法使用的帧间匹配算法也不相同。
  如gmapping利用粒子滤波的方法,将当前观测的激光数据,建立Likelihood模型,利用粒子滤波,在已知地图中实现精确定位,再根据位姿将当前观测进行建图。其算法的里程计是一个scan-to-map类型的。
  cartographer是一个集成度很高的算法,其帧间匹配算法类似于Karto SLAM。其先根据最近几帧的观测,构建一个submap,然后将当前帧于构建的submap进行匹配。在匹配算法上,其先利用CSM分支定界的方法,快速实现初步定位,然后利用基于概率地图得分的优化方法,实现精确的位姿求解。
  在2D激光SLAM中,几乎不会用到 ICP 类和 NDT 类的帧间匹配算法。因为2D激光雷达的返回数据只有单线数据,测量结果中的结构信息过于简单,且重复度高,利用此类算法很容易出现误匹配,导致历程计精度低。且此类算法遇到纯旋转问题时,位姿估计会产生很大的旋转误差,几乎是无解的。所以此类算法,可以在结构信息丰富的3D激光SLAM中常见到,效果也非常好。

三、回环检测方法
在这里插入图片描述
  实际应用中实际多使用 Map-to-Map 来进行回环检测。

  作者笔记:
  激光SLAM的回环检测不如视觉SLAM的回环检测容易,哪怕是基于特征的方法,由于环境中的三维结构存在重复,所以激光SLAM的回环检测并不简单。目前本人所知的,有基于结构特征直方图的,基于聚类思想的,基于深度学习的,也有基于图像辅助的回环检测。
  后续我可能会列出具有回环检测的激光SLAM算法,以及其所使用的方法。

四、后端优化方法
  后端算法的实现大同小异,不同的库的使用方法都不太相同,但是核心思想都是相同的,即根据前端构建的残差函数,计算每个测量的残差,构建最小二乘问题,然后利用高斯牛顿、LM方法等,求解构建的最小二乘问题,实现位姿变换的求解。常使用的库有Ceres,G2O、gstam等。

2.3、激光SLAM在实际环境中的问题

  四大类问题:
1、退化环境(Degeneration Environment):走廊问题、空旷环境
2、地图的动态更新(Map Update):地图的变更到时定位出错
3、全局定位(Global Localization):绑架问题
4、动态环境定位(Dynamic Localization):人、车和其他物体影响
  具体问题如下:
在这里插入图片描述
  这些问题都是很工程话的问题,有兴趣的读者可以选择一些具有学术价值的方向进行研究,如退化环境问题、全局定位问题、动态环境问题。这些问题在SLAM落地中是非常令人头疼的问题,一般在SLAM研究中,我们会假设这些问题是很少遇到的,即外界环境是静态且相对简单的。

3、激光SLAM算法介绍

3.1、2D激光SLAM

一、2D激光SLAM的输入和输出:
输入:IMU数据、里程计数据、2D激光雷达数据
输出:覆盖栅格地图、机器人的运动轨迹或PoseGraph
二、2D激光SLAM常用帧间匹配方法
在这里插入图片描述
三、2D激光SLAM的回环检测方法
在这里插入图片描述
四、2D激光SLAM经典算法

  1. 基于滤波器的方法:
    Gmapping :基于粒子滤波,每一个粒子都带有一个地图
    Optimal RBPF:Gmapping的进一步优化
  2. 基于图优化的方法:
    Cartographer:算法与Karto-SLAM原理类似,更完整,使用CSM+SBA
    Viny-SLAM:作者也没有仔细看过这篇论文,但是论文中的实验结果精度是要高于Cartographer的。算法利用IMU+2D激光雷达,实现了精度和速度都高于Cartographer的算法。

  作者笔记:
  个人人为,2D激光SLAM算法已经非常成熟了,其已经有一套完整的实现流程,读者可以查看相关算法的代码来提高自己。其外,我还人为Cartographer算法的代码集成度极高,利用了很多C++的特性,新手研读起来比较费劲,且比较难做二次开发。所以建议阅读一些简单的代码,如Gmapping、Karto,进行入门学习。然后再阅读Cartographer。

五、2D激光SLAM的发展趋势——与视觉融合
在这里插入图片描述

3.2、3D激光SLAM

一、3D激光SLAM的输入和输出
输入:IMU数据、里程计数据、3D激光雷达数据
输出:3D点云地图、机器人轨迹或PoseGraph
二、3D激光SLAM常用帧间匹配方法
在这里插入图片描述
三、3D激光SLAM与激光进行融合
在这里插入图片描述

4、激光SLAM的数学基础

4.1、位姿表示

  此处可以参考两个内容,在此不做展开(关键是自己重写太麻烦):
1. 视觉SLAM中的数学基础 第一篇 3D空间的位置表示
https://www.cnblogs.com/gaoxiang12/p/5113334.html
2. 视频演示讲解:
https://www.youtube.com/watch?v=8XRvpDhTJpw

4.2、2D位姿变换

在这里插入图片描述
  从4.1的资料1中,我们知道了2D机器人的位姿表示和坐标变换的概念,不同坐标系之间2D位姿变换关系如上图所示。
  设机器人坐标系B中一坐标点 P B P_B PB,其在世界坐标系O中的坐标为 P O = T O B ⋅ P B P_O = T_{OB} · P_B PO=TOBPB,反过来就有 P B = T O B − 1 ⋅ P O = T B O ⋅ P O P_B = {T_{OB}}^{-1} · P_O=T_{BO}·P_O PB=TOB1PO=TBOPO
  如上图右边,由机器人A在O中的位姿 ( x A , y A , θ A ) (x_A,y_A,\theta_A) (xA,yA,θA),得到坐标系A到坐标系O的变换 T O A T_{OA} TOA,同理有 T O B T_{OB} TOB。设坐标系A到坐标系B之间的变换矩阵为 T B A T_{BA} TBA,则有 T B A = T B O ⋅ T O A = T O B − 1 ⋅ T O A T_{BA} = T_{BO} · T_{OA} = {T_{OB}}^{-1} · T_{OA} TBA=TBOTOA=TOB1TOA(先将坐标系A转换到坐标系O,再由坐标系O转换到坐标系B)。
  2D坐标系中,变换矩阵无法传递角度,则最后的坐标由下式表示:
$(x_B,y_B,\theta_B) = $

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172339.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PA功率放大器的设计「建议收藏」

    各种无线通信系统的发展,如GSM、WCDMA、TD-SCOMA、WiMAX和Wi-Fi,大大加速了半导体器件和射频功率放大器的研究进程。射频功率放大器在无线通信系统中起着至关重要的作用,它的设计好坏影响着整个系统的性能,因此,无线系统需要设计性能良好的放大器。而且,为了适应无线系统的快速发展,产品开发的周期也是一个重要因素。另外,在各种无线系统中由于不同调制类型和多载波信号的采用,射频工程师为减小功率放大器的非线性失真,尤其是设计无线基站应用的高功率放大器时面临着巨大的挑战。

    2022年4月11日
    209
  • SpringBoot 单元测试指定运行环境「建议收藏」

    分享知识传递快乐1、通过修改配置文件指定运行环境在配置文件中直接指定运行环境spring:profiles:active:dev这种配置方式是全局的。2、通过启动类配置指定运行环境-Dspring.profiles.active=prod这种配置需要对每个测试方法都得去一一指定,可对同个测试类不同测试方法配置不同运行环境。配置方法:首先Run->EditConfigurations打开如下页面依次按照步骤操作并配置…

    2022年4月13日
    38
  • 什么是虚拟ip地址_虚拟人IP是什么意思

    什么是虚拟ip地址_虚拟人IP是什么意思AIX中虚拟IP地址的概念与IBMOS/390中的很相似。将虚拟IP地址赋给AIX系统后,可以使IP地址不再依赖指定的网络接口。发送方只需将包送到接收方服务器的虚拟IP地址上即可(所有接收到的包还是通过真正的物理网络接口到达该服务器的)。在虚拟IP地址使用以前,如果一个网络接口失效,所有与之相关的连接(connection)就都会失去。使用虚拟IP地址,需要有AIX系统对虚拟接口和网

    2022年10月20日
    0
  • 职场四象限法则:时间管理四象限与职场沟通四象限「建议收藏」

    职场四象限法则:时间管理四象限与职场沟通四象限「建议收藏」今天参加了部门组织的一个分享会,主要是关于职场心态与职场沟通的内容,职场心态主要是通过对MBTI和职场锚的测试结果做分析,内容较多省略。职场沟通方面,技术经理讲到了两个象限,即时间管理四象限与沟通四象限。

    2022年6月16日
    65
  • cpu参数_CPU核心参数有哪些

    cpu参数_CPU核心参数有哪些文章目录CPU功能:CPU的组成:CPU参数:几个重要概念计算机的存储层次:RegisterCache睿频加速技术:超线程技术:CPU功能: 要完成一个任务,先编写一段程序,然后存入计算机主存。程序的代码就会翻译成一条条指令或数据字。cpu就会执行这些指令得到最终结果。读取指令要通过地址读取,地址保存在程序计数器中,读取的某个任务的全部指令会放入指令寄存器等待处理,cpu每次从中读取一条指令或…

    2022年10月31日
    0
  • SpringBoot与SpringCloud的关系与区别

    SpringBoot与SpringCloud的关系与区别一、SpringBoot和SpringCloud简介1、SpringBoot:是一个快速开发框架,通过用MAVEN依赖的继承方式,帮助我们快速整合第三方常用框架,完全采用注解化(使用注解方式启动SpringMVC),简化XML配置,内置HTTP服务器(Tomcat,Jetty),最终以Java应用程序进行执行。2、SpringCloud: 是一套目前完整的微服务框架,它是是一系列框架的有序…

    2022年6月12日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号