SLAM算法的计算效率及其高效算法

        同步定位与构图是一个移动机器人建立环境地图的同时利用建立的地图来计算自己位置的过程。在过去的10多年里,SLAM算法取得了令人激动的快速的发展。大量的重要的工作致力于提高计算效率,同时保证建图的连续性和机器人位姿估计的精确性。但是,也有很多研究关于非线性,数据关联,和地标特征,所有的这些对于实现稳健和实用SLAM算法是至关重要的。

       本教程专注于SLAM问题的递归贝叶斯方法,得到了概率分布或者地标的相对或者绝对位置和机器人位姿。本教程的Part I(IEEE Robotics & Auomation Magazine, vol. 13, no. 2)总结了基本的状态空间和粒子滤波形式的SLAM算法,描述了一些重要的实现方法,引用的源代码的链接和用于评估SLAM算法的真实世界的数据。本教程的Part II(本文),总结了现阶段SLAM的研究现状,包括下面三个重点板块:计算复杂度,数据关联,环境表达。许多本文使用的数学符号和基本的概念都已在本教程的Part I中定义,因此这里不再重复。

      最原始SLAM的计算量级正比于地图中地标数量的二次方。对于实时实现,这一量级在使用SLAM方法时是一个潜在的本质限制。计算复杂度章节综述了许多用于降低计算复杂度的方法。这些中包括了线性时间状态增加,信息形式稀疏化,分区更新,和子地图方法。第二主要的需要克服的实现SLAM方法的阻碍是正确的关联上地图上的地标和观测到的地标。错误的关联可能导致SLAM算法毁灭性的故障。当机器人完成长途旅行后返回到一个之前已经建完图的区域时,数据关联尤其重要,这就是所谓的闭环问题。数据关联章节综述了当前SLAM用的一些数据关联方法。这些包含了利用SLAM公式中固有约束的批量-验证方法,表象方法,和多假设方法。本教程中讨论的第三个发展趋势是更丰富的基于外观的地标和地图模型。然而最初的数据关联和闭环的动机是关注于轨迹估计而不是地标估计,这些方法导致了描述SLAM问题的不同的定性方法。环境表达章节综述了当前这一领域不同线路的发展,包括延迟建图,利用非几何地标,和估计估计方法。

      SLAM方法现在已经到了一个相当成熟的状态。未来的挑战主要集中在实现大尺度上非结构化的环境中的实现,特别是在那些类似于GPS定位方法不可得或者不可靠的场合,例如,在城市峡谷里,密集树林下,水下,或者是外星球。

计算复杂度

        基于状态形式的SLAM问题设计到联合估计机器人的位姿和观测到的静止目标的位置。该问题形式具有一个特殊的结构;过程模型仅影响机器人位置状态且观测模型仅对单个机器人地标对作为参考。已经有大量的技术被开发来利用这一特殊结构来限制SLAM算法的计算复杂度。

        提高计算效率的技术可以被描述为最优或者保守的。最优算法旨在降低计算量的同时保持估量和协方差量相对于全形式的SLAM算法(本教程Part I陈述的)不变。保守算法的估计结果比最优的具有更大的不确定度或者更大的协方差。通常,保守算法,同时精度更低,计算更加高效,因此,在实际应用中更具价值。比最优方法具有更小不确定度或者协方差的算法被称为不一致算法且被认为是SLAM问题的非有效的方法。

        降低计算量的直接方法涉及将SLAM问题的结构重新组成基本的时间和观测更新方程,并以此来限制需要的计算量。时间更新计算可以用状态增强方法加以限制。观测更新计算可以用方程的分块方式加以限制。这两步都到达了一个最优SLAM估计同时降低了计算量。重新组织标准的空间-空间SLAM表述成信息形式允许了稀疏化,结果是信息矩阵被应用来降低计算量。结果算法通常是保守的但依然能够产生好的估计同时极大的降低了计算负荷。子地图方法应用了一整个地图可以被分解成许多具有局部坐标系的系统并被排列成有层次结构的方式的思想。局部帧的更新伴随着周期帧间的更新。子地图技术一般提供了一个在全局帧的保守估计。

状态增强

        在时刻k,联合SLAM状态向量\mathbf{x}_{k}=[\mathbf{x}_{vk}^{T},\mathbf{m}^{T}]^{T}包括了两个部分:机器人位姿\mathbf{x}_{vk}和地图地标位置集合\mathbf{m}。机器人模型根据控制输入集合\mathbf{u}_{k}仅传播位姿状态,同时地图的状态保持不变

\mathbf{x}_{k}=\mathbf{f}(\mathbf{x}_{k-1},\mathbf{u}_{k})=\begin{bmatrix} \mathbf{f}_{v}(\mathbf{x}_{vk-1},\mathbf{u}_{k})\\ m \end{bmatrix}                                                       (1)

在原始的SLAM中的扩展卡尔曼滤波器(EKF)实现中,协方差由下面的式子计算

\mathbf{P}_{k|k-1}=\bigtriangledown \mathbf{f}_{\mathbf{x}}\mathbf{P}_{k-1|k-1}\bigtriangledown\mathbf{f}_{\mathbf{x}}^{T}+ \bigtriangledown \mathbf{f}_{\mathbf{u}}\mathbf{U}_{k}\bigtriangledown \mathbf{f}_{\mathbf{u}}^{T}                                       (2)

这里\bigtriangledown \mathbf{f}_{\mathbf{x}}=\partial \mathbf{f}/\partial \mathbf{x}_{k-1}\bigtriangledown \mathbf{f}_{\mathbf{u}}=\partial \mathbf{f}/\partial \mathbf{u}_{k-1}\mathbf{U}_{k}是一个表征控制向量的不确定度的协方差矩阵。这一操作具有地标数量三次方的计算复杂度,原因是雅可比矩阵\bigtriangledown \mathbf{f}_{\mathbf{x}}和协方差矩阵\mathbf{P}_{k-1|k-1}的乘法运算。然而,机器人模型仅影响位姿状态,协方差预测可以被重写成具有与地标数量正比的线性复杂度的形式。详情请看[S.B. Williams, “Efficient solu

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
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
发出的红包

打赏作者

_IRONMAN_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值