转载请说明出处

http://blog.csdn.net/zhubaohua_bupt/article/details/74011005

视觉SLAM的核心是求取相机的位姿并建图。

在优化位姿时,其思想是构造一个关于位姿变化的误差函数,当这个误差函数最小时,认为此时估计的位姿最优。

无论是直接法还是特征点法,位姿的迭代优化都是是求解一个最小二乘问题,

在优化位姿时

<1>直接法   最小二乘的误差函数是,前后帧所有参与求解位姿像素块的灰度差。通常这一步又称之位图像对齐。

<2>特征点法   最小二乘的误差函数是,重投影误差(PnP,地图点到当前图像的投影点与匹配点的距离差和)

本篇博客是介绍的是,SLAM优化位姿时,误差函数对位姿雅可比矩阵的推导。

误差函数对于位姿扰动的雅可比矩阵,决定着下一步最优迭代估计时,位姿增量的方向。因此十分重要。

下面我们先以直接法雅可比矩阵开始推导,特征点法类似。

图像最后的雅可比矩阵可以由,所有参与直接法像素点雅可比矩阵的叠加形成。

1 直接法:

至此,我们推导出了直接法中,误差函数对于李代数位姿的雅克比矩阵。

2 特征点法

在特征点法的SLAM中,在PnP优化位姿时,误差函数是重投影误差

PnP特征点法与直接法的雅克比矩阵有什么不同呢?还得从投影过程说起。PnP是什么?

这个过程可用图像表示如下

PnP的过程可描述如下,一堆世界坐标系下的三维地图点P(X,Y,Z),

<1> 首先经过我们要优化的位姿转换至当前帧的坐标系下P’(X’,Y’,Z’)

<2> 然后透过相机内参投影至当前帧图像坐标系下p’(x’,y’)

<3> 最后缩小地图点在当前图像帧上投影点p’匹配点pmatch(xmatch,ymatch)距离误差,来优化位姿。

上述的过程就是PnP投影过程,实际的优化有若干次这样的迭代

转载于:https://www.cnblogs.com/zhubaohua-bupt/p/7182785.html

SLAM优化位姿时,误差函数的雅可比矩阵的推导。相关推荐

  1. slam优化库,优化方法,G2o Ceres的学习

    文章目录 ch6 - ceres.g2o等 前言 1.G2o **1.1 代码 :[G2o: exp(ax^2+bx+c)]** **1.2 理论-原理方面:** **1.3 G2O常见函数分析** ...

  2. 科普SLAM之位姿图优化建图

    科普SLAM之位姿图优化建图 本讲重点 位姿图优化建图的基本定义(什么是PGO ?) 位姿图优化建图的研究意义(为什么需要PGO?) 位姿图优化建图的基本原理(PGO如何产生的?) 位姿图优化建图的算 ...

  3. VINS-Mono IMU 预积分公式及协方差、雅可比矩阵传递推导

    原论文链接:VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator 参考:崔华坤-<VINS论文推 ...

  4. (02)Cartographer源码无死角解析-(53) 2D后端优化→位姿图优化理论(SPA)讲解、核型函数调用流程

    讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录 ...

  5. mysql属性配置提高查询_MYSQL性能优化-安装时优化参数配置提高服务性能

    MYSQL性能优化一直是个头痛的问题,目前大多都是直接把页面html静态页面或直接使用了缓存技术,下面我就mysql本身的性能优化来分享一下. 安装时优化参数配置提高服务性能 在Linux下安装Mys ...

  6. Dubbo的优化 --- 开发时使用

    开发时的三个优化: 1.开发者在本地开发的时候启动Dubbo比较麻烦,所以采用直接连接的配置: 2.开发者本地开发时会打断点调试,会超过Dubbo默认的超时时间1s,所以需要全局设置超时时间: 3.开 ...

  7. JS日历控件优化(增加时分秒)

    JS日历控件优化  在今年7月份时候 写了一篇关于 "JS日历控件" 的文章 , 当时只支持 年月日 的日历控件,现在优化如下:      1. 在原基础上 支持 yyyy-mm- ...

  8. BA_重投影误差e对于相机的位姿ξ和对空间点的坐标P的雅可比矩阵的推导

    1. 基本思路 重投影误差表示为e, 相机的位姿表示为ξ (或者表示为T=(R,t)), 空间点表示为P, 则空间点投影到相机坐标系下的空间坐标点的相机坐标表示为P'=[X', Y', Z'], 则 ...

  9. matlab使用CVX求解优化问题时,如果变量搜索空间过大,导致求解的数值解相当不准确,通过变量替换,缩小搜索空间

    错误的做法 clear clc rand('seed',1); %% 参数初始化 I = 5; N = 5; q = ones(1,I)/I; theta = [11,13,15,18,21]/10; ...

最新文章

  1. 如何提升 CSS 选择器的性能?
  2. SQL同时删除两张表中的数据
  3. 深夜,我偷听到程序员要对session下手……
  4. 2w字大白话讲解Spring Cloud,必须收藏
  5. 磁盘阵列RAID的分类有哪些?
  6. 参数调用不会改变参数值
  7. UNITY 画布的粗浅理解
  8. atomic原子类实现机制_Java并发包-atomic包-让您彻底掌握AtomicInteger源码
  9. Oracle 11g 新特性简介
  10. 队长开卖自家产“翠香”猕猴桃
  11. 新媒体增长方法从哪里找?
  12. ContextCapture(Smart3D)网盘教程 直接下载
  13. vantfieldlabel样式修改_Vant Field 输入框
  14. 量子计算机中的物理知识,量子计算机和物理学上的量子力学关系大吗?
  15. 【区块链】开源社区发力区块链,超级账本会成就Linux一样的传奇吗?
  16. phpyun 电脑调试wap版
  17. 交换机tftp服务器修改ip,二、利用TFTP服务器恢复交换机配置.ppt
  18. Ubuntu18.04 分区方案
  19. java实现视频弹幕效果,SpringBoot实现视频弹幕功能 DanmuPlayer插件的使用
  20. Livy:基于Apache Spark的REST服务

热门文章

  1. php 获取企业号用户,微信企业号 获取用户信息(示例代码)
  2. 有关T-SQL的10个好习惯
  3. ibatis 批量插入
  4. Andriod的Http请求获取Cookie信息并同步保存,使第二次不用登录也可查看个人信息...
  5. SQL——将表中的最大ID+1插入新的ID中------Insert into 表 MAX(表id) +1
  6. ECMAScript5之Object学习笔记(二)
  7. 20090701随笔
  8. 华为敏捷 DevOps 实践:产品经理如何开好敏捷回顾会议
  9. 非GUI模式运行Jmeter脚本
  10. Arduino的光敏传感器和超声波测距传感器测试代码