iSAM1论文推导学习--第二节QR部分
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部分相关推荐
- java基础学习 --- 第二节 变量、数据类型和运算符
java基础学习 - 第二节 变量.数据类型和运算符 一.变量 1.变量就是会发生改变的数据,程序运行时,这些数据以变量的形式被保存到计算机的内存中.如图 2.使用变量的步骤: 声明变量 - ...
- 吴恩达深度学习deeplearning.ai——第一门课:神经网络与深度学习——第二节:神经网络基础(上)
2.1 二元分类 (Binary Classification) 这周我们将学习神经网络的基础知识,其中需要注意的是,当实现一个神经网络的时候,我们需要知道一些非常重要的技术和技巧.例如有一个包含 m ...
- C++学习——第二节课-输入输出
大家好,我是涵子.今天我们来学习C++中的输入输出. 目录 一.电脑中的输入输出 二.C++中的输入输出 2.1.输入并输出 2.2.cin的用法 2.3.多个输入 三.变量 3.1.声明 3.2.赋 ...
- 小程序开发之【前端开发】【学习第二节】【一】
学习前必须了解的: 得了解到小程序视图层WXML,WXSS,以及逻辑层JS,这些是小程序开发的核心内容. 小程序框架将整个系统划分为视图层和逻辑层,视图层由框架设计的标签语言(WeiXin Marku ...
- 风炫安全Web安全学习第二节课 HTML基础
学习地址:HTML基础 html基础 html表单 html常用标签 前端攻防中常用的一些手法 反射性XSS Dom-based型XSS 存储型XSS 学习的网站:https://www.w3scho ...
- Ant学习---第二节:Ant添加文件夹和文件夹集的使用
一.创建 java 项目(Eclipse 中),结构图如下: 1.创建 .java 文件,代码如下: package com.learn.ant;public class HelloWorld {pu ...
- 数据科学库学习第二节
一.绘制散点图 from matplotlib import pyplot as plt # 导入matplotlib模块中的 pyplot类,命名为 plt from matplotlib impo ...
- 从零写VIO|第二节——作业:使用Allen方差工具标定IMU
这里写目录标题 作业内容 1 安装im_utils 1.1. 安装依赖: 1.2 编译 1.3 可能出的错误 2. 运行 ~~2.1 采集IMU数据~~ 2.2 生成imu.bag 2.3 新建imu ...
- Vue.js实战之系统学习第一节
为什么叫系统学习呢?因为我以前接触过Vue.js,但是没学过它的原理,只是简单的使用了,使用的时候就觉得很好用,没有其他的什么感觉,但当我进入职场后,学习了很多的前端技术后,才发现这个技术的友好,被它 ...
最新文章
- 删除git commit 的 UserInterfaceState.xcuserstate 文件
- laravel 分词搜索匹配度_DSSM文本匹配模型在苏宁商品语义召回上的应用
- 单片机c语言必背代码_【典藏】深度剖析单片机程序的运行(C程序版)
- python网络编程---TCP服务器
- html5 填表 表单 input output 与表单验证
- XWiki 4.4.1 发布,Java 的 Wiki 引擎
- 火影忍者服务器维护时间,火影手游12月12日更新:仙鸣增加破霸体,小自来也变蛙时间减半!...
- Bp神经网络+C++实现
- iOS安全攻防(十三):数据擦除
- wordpress更新主题时,显示无法连接到FTP服务器的问题解决
- HALCON学习笔记 1
- 前端开发项目——企业员工管理系统(前后端分离)
- Spring AOP实现原理
- java docx 文档不可编辑、复制
- APP上架到各大应用商店的小总结
- HTML5+CSS3初学尝试(小米官网首页)
- python识别物体大小_Python-OpenCV —— 物体识别(TrainCascadeClassification)
- 卷积神经网络 - 汇聚层
- Jetson TX2实现EfficientDet推理加速(二)
- 读书笔记: 经济学原理