SLAM优化位姿时,误差函数的雅可比矩阵的推导。
转载请说明出处:
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优化位姿时,误差函数的雅可比矩阵的推导。相关推荐
- slam优化库,优化方法,G2o Ceres的学习
文章目录 ch6 - ceres.g2o等 前言 1.G2o **1.1 代码 :[G2o: exp(ax^2+bx+c)]** **1.2 理论-原理方面:** **1.3 G2O常见函数分析** ...
- 科普SLAM之位姿图优化建图
科普SLAM之位姿图优化建图 本讲重点 位姿图优化建图的基本定义(什么是PGO ?) 位姿图优化建图的研究意义(为什么需要PGO?) 位姿图优化建图的基本原理(PGO如何产生的?) 位姿图优化建图的算 ...
- VINS-Mono IMU 预积分公式及协方差、雅可比矩阵传递推导
原论文链接:VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator 参考:崔华坤-<VINS论文推 ...
- (02)Cartographer源码无死角解析-(53) 2D后端优化→位姿图优化理论(SPA)讲解、核型函数调用流程
讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录 ...
- mysql属性配置提高查询_MYSQL性能优化-安装时优化参数配置提高服务性能
MYSQL性能优化一直是个头痛的问题,目前大多都是直接把页面html静态页面或直接使用了缓存技术,下面我就mysql本身的性能优化来分享一下. 安装时优化参数配置提高服务性能 在Linux下安装Mys ...
- Dubbo的优化 --- 开发时使用
开发时的三个优化: 1.开发者在本地开发的时候启动Dubbo比较麻烦,所以采用直接连接的配置: 2.开发者本地开发时会打断点调试,会超过Dubbo默认的超时时间1s,所以需要全局设置超时时间: 3.开 ...
- JS日历控件优化(增加时分秒)
JS日历控件优化 在今年7月份时候 写了一篇关于 "JS日历控件" 的文章 , 当时只支持 年月日 的日历控件,现在优化如下: 1. 在原基础上 支持 yyyy-mm- ...
- BA_重投影误差e对于相机的位姿ξ和对空间点的坐标P的雅可比矩阵的推导
1. 基本思路 重投影误差表示为e, 相机的位姿表示为ξ (或者表示为T=(R,t)), 空间点表示为P, 则空间点投影到相机坐标系下的空间坐标点的相机坐标表示为P'=[X', Y', Z'], 则 ...
- matlab使用CVX求解优化问题时,如果变量搜索空间过大,导致求解的数值解相当不准确,通过变量替换,缩小搜索空间
错误的做法 clear clc rand('seed',1); %% 参数初始化 I = 5; N = 5; q = ones(1,I)/I; theta = [11,13,15,18,21]/10; ...
最新文章
- 如何提升 CSS 选择器的性能?
- SQL同时删除两张表中的数据
- 深夜,我偷听到程序员要对session下手……
- 2w字大白话讲解Spring Cloud,必须收藏
- 磁盘阵列RAID的分类有哪些?
- 参数调用不会改变参数值
- UNITY 画布的粗浅理解
- atomic原子类实现机制_Java并发包-atomic包-让您彻底掌握AtomicInteger源码
- Oracle 11g 新特性简介
- 队长开卖自家产“翠香”猕猴桃
- 新媒体增长方法从哪里找?
- ContextCapture(Smart3D)网盘教程 直接下载
- vantfieldlabel样式修改_Vant Field 输入框
- 量子计算机中的物理知识,量子计算机和物理学上的量子力学关系大吗?
- 【区块链】开源社区发力区块链,超级账本会成就Linux一样的传奇吗?
- phpyun 电脑调试wap版
- 交换机tftp服务器修改ip,二、利用TFTP服务器恢复交换机配置.ppt
- Ubuntu18.04 分区方案
- java实现视频弹幕效果,SpringBoot实现视频弹幕功能 DanmuPlayer插件的使用
- Livy:基于Apache Spark的REST服务
热门文章
- php 获取企业号用户,微信企业号 获取用户信息(示例代码)
- 有关T-SQL的10个好习惯
- ibatis 批量插入
- Andriod的Http请求获取Cookie信息并同步保存,使第二次不用登录也可查看个人信息...
- SQL——将表中的最大ID+1插入新的ID中------Insert into 表 MAX(表id) +1
- ECMAScript5之Object学习笔记(二)
- 20090701随笔
- 华为敏捷 DevOps 实践:产品经理如何开好敏捷回顾会议
- 非GUI模式运行Jmeter脚本
- Arduino的光敏传感器和超声波测距传感器测试代码