iSAM1论文链接

一.基于QR分解的增量平滑优化

A.一个SLAM的概率图模型

用下图的网络表示SLAM问题:

其中, 是机器人在时刻i的状态,是地标j的位置,是时刻i的控制输入,是第k个地标测量。

所有变量和测量值的联合概率由以下公式表示:

其中是初始状态上的先验值,是运动学模型,由控制输入ui参数化,是地标性测量模型。这里假设每个测量值都有已知的对应关系

假设为高斯测量模型。则“过程模型”如下:

该方程描述了测程传感器或扫描匹配的过程,其中是正态分布的零均值过程噪声与协方差矩阵

而高斯测量模型如下:

对机器人的地标传感器进行建模,其中是正态分布的零均值测量噪声与协方差

B.把SLAM化为最小二乘问题

当执行平滑而不是滤波操作时,注意的是给定控制输入u和地标测量值z时,整个轨迹x和地标l的地图估计。轨迹和映射的映射估计是通过最小化来自(1)的联合概率的负对数得到的:

结合过程和测量模型,则有以下非线性最小二乘问题:

其中,这里使用符号代替平方马氏距离与协方差矩阵Σ

这里附录回顾了如何将测量函数线性化,并将非线性最小二乘目标函数(5)的所有分量收集成一个一般的最小二乘公式,遵循。通过泰勒展开式将(5)中的测量函数线性化,假设要么有一个很好的线性化点可用,或者正在进行一个非线性优化方法的一次迭代。在以上任何一种情况下,(5)中过程模型的一阶线性化给出为:

其中,是过程模型在线性化点处的雅可比矩阵,这里定义为:

并且,是测程预测误差(注意这里的ui是给出的,因此是常数)。而方程(5)中测量模型的一阶线性化如下:

这里,分别是测量函数关于在线性化点上计算的变化的雅可比矩阵:

并且 是测量预测误差。

分别使用线性化过程和测量模型(24)和(26),则非线性最小二乘问题(5)变成:

也就是说,这里得到了δθ中一个需要有效求解的线性最小二乘问题。为了避免以一种特殊的方式处理,我们引入了矩阵,

通过简单地改变变量,可以去掉协方差矩阵。用作为Λ的矩阵平方根,可以将马氏范数重写如下:

也就是说,总是可以通过将每个项中的预乘来从(29)中消除Λi,同样从测量项中消除。对于标量测量,这仅仅意味着将每一项除以测量的标准差。下面假设已经这样做了,然后去掉马氏符号:

最后,将雅可比矩阵收集到一个大矩阵A,将向量收集到一个右侧向量b,得到以下标准最小二乘问题:

为了简单起见,iSAM在附录之外去掉了δ·符号,则上式变成:

其中,向量θ∈包含所有的姿态和地标变量,矩阵A∈是一个大但稀疏的测量雅可比矩阵,b∈是右侧(RHS)向量。

通过将导数设为0,将该稀疏最小二乘系统转化为普通的线性方程组,得到所谓的正规方程。该方程系统可以用的 Cholesky 分解来求解。

C.用QR分解法求解

将标准QR矩阵分解应用于测量雅可比矩阵A来求解最小二乘问题(6)。与Cholesky分解相比,这避免了必须用矩阵条件数的相关平方来计算信息矩阵。测量值雅可比矩阵A的QR分解得到:

其中,R∈为上三角平方根信息矩阵(注意,信息矩阵由给出),Q∈为正交矩阵。我们将这个因子分解应用于最小二乘问题(6):

其中,定义与d∈和e∈.(8)当且仅当Rθ=d时成为最小,留下第二项作为最小二乘问题的残差。因此,QR分解将最小二乘问题简化为具有单一唯一解的线性系统:

求解这个方程组的大部分工作已经通过QR分解完成了,因为R是上三角的,所以可以使用简单的反替换。结果是基于所有测量条件的完整机器人轨迹和地图的最小二乘估计

iSAM1论文推导学习--第二节QR部分相关推荐

  1. java基础学习 --- 第二节 变量、数据类型和运算符

    java基础学习 - 第二节 变量.数据类型和运算符 一.变量 1.变量就是会发生改变的数据,程序运行时,这些数据以变量的形式被保存到计算机的内存中.如图 2.使用变量的步骤:     声明变量 - ...

  2. 吴恩达深度学习deeplearning.ai——第一门课:神经网络与深度学习——第二节:神经网络基础(上)

    2.1 二元分类 (Binary Classification) 这周我们将学习神经网络的基础知识,其中需要注意的是,当实现一个神经网络的时候,我们需要知道一些非常重要的技术和技巧.例如有一个包含 m ...

  3. C++学习——第二节课-输入输出

    大家好,我是涵子.今天我们来学习C++中的输入输出. 目录 一.电脑中的输入输出 二.C++中的输入输出 2.1.输入并输出 2.2.cin的用法 2.3.多个输入 三.变量 3.1.声明 3.2.赋 ...

  4. 小程序开发之【前端开发】【学习第二节】【一】

    学习前必须了解的: 得了解到小程序视图层WXML,WXSS,以及逻辑层JS,这些是小程序开发的核心内容. 小程序框架将整个系统划分为视图层和逻辑层,视图层由框架设计的标签语言(WeiXin Marku ...

  5. 风炫安全Web安全学习第二节课 HTML基础

    学习地址:HTML基础 html基础 html表单 html常用标签 前端攻防中常用的一些手法 反射性XSS Dom-based型XSS 存储型XSS 学习的网站:https://www.w3scho ...

  6. Ant学习---第二节:Ant添加文件夹和文件夹集的使用

    一.创建 java 项目(Eclipse 中),结构图如下: 1.创建 .java 文件,代码如下: package com.learn.ant;public class HelloWorld {pu ...

  7. 数据科学库学习第二节

    一.绘制散点图 from matplotlib import pyplot as plt # 导入matplotlib模块中的 pyplot类,命名为 plt from matplotlib impo ...

  8. 从零写VIO|第二节——作业:使用Allen方差工具标定IMU

    这里写目录标题 作业内容 1 安装im_utils 1.1. 安装依赖: 1.2 编译 1.3 可能出的错误 2. 运行 ~~2.1 采集IMU数据~~ 2.2 生成imu.bag 2.3 新建imu ...

  9. Vue.js实战之系统学习第一节

    为什么叫系统学习呢?因为我以前接触过Vue.js,但是没学过它的原理,只是简单的使用了,使用的时候就觉得很好用,没有其他的什么感觉,但当我进入职场后,学习了很多的前端技术后,才发现这个技术的友好,被它 ...

最新文章

  1. 删除git commit 的 UserInterfaceState.xcuserstate 文件
  2. laravel 分词搜索匹配度_DSSM文本匹配模型在苏宁商品语义召回上的应用
  3. 单片机c语言必背代码_【典藏】深度剖析单片机程序的运行(C程序版)
  4. python网络编程---TCP服务器
  5. html5 填表 表单 input output 与表单验证
  6. XWiki 4.4.1 发布,Java 的 Wiki 引擎
  7. 火影忍者服务器维护时间,火影手游12月12日更新:仙鸣增加破霸体,小自来也变蛙时间减半!...
  8. Bp神经网络+C++实现
  9. iOS安全攻防(十三):数据擦除
  10. wordpress更新主题时,显示无法连接到FTP服务器的问题解决
  11. HALCON学习笔记 1
  12. 前端开发项目——企业员工管理系统(前后端分离)
  13. Spring AOP实现原理
  14. java docx 文档不可编辑、复制
  15. APP上架到各大应用商店的小总结
  16. HTML5+CSS3初学尝试(小米官网首页)
  17. python识别物体大小_Python-OpenCV —— 物体识别(TrainCascadeClassification)
  18. 卷积神经网络 - 汇聚层
  19. Jetson TX2实现EfficientDet推理加速(二)
  20. 读书笔记: 经济学原理

热门文章

  1. MLCC陶瓷电容详解
  2. html 自动点击回车事件,1秒自动按回车键的脚本
  3. 小朋友排队(树状数组)
  4. 【从本人QQ空间迁移】重构“依恋情结”(以黑名单的新增编辑为例)
  5. ListView的分割线相关属性
  6. Python 之嵌套列表
  7. 面试题:一头牛重800公斤,一座桥承重700公斤,牛应该怎么过桥
  8. 计算机管理 看内存个数,如何知道/查看内存槽数
  9. /动态设置element DatePicker日期组件的disabledDate禁选日期
  10. Android FrameWork 系统源码调试