姿态估计中的雅可比求导

2023-05-16

问题描述

姿态估计是SLAM中的一个基础问题。基于重投影误差的问题描述一般为求解下列的优化问题
\[ \min_{\mathbf{T}}\mathbf{f},\quad \mathbf{f}=\mathbf{e}^T\mathbf{e}=\parallel p'-p \parallel^2 \]
其中\(p\)是观测到的(世界坐标系下的)三维点\(\mathbf{p}\)的图像投影,\(p'\)是计算得到的\(\mathbf{p}\)的图像投影,满足
\[ p'=\lambda\mathbf{K}\mathbf{D}\mathbf{T}\mathbf{p} \]
其中,\(p=(u,v,1)^{T}\)\(p'=(u',v',1)^{T}\)\(\mathbf{p}=(x,y,z,1)^{T}\)\(\mathbf{K}\)是相机内参矩阵,\(\mathbf{T}\)是两个不同位姿之间的相对变换矩阵。
\[ \mathbf{K} = \begin{bmatrix} f_x & 0 & c_x\\ 0 & f_y & c_y\\ 0 & 0 & 1 \end{bmatrix} \]
\[ \mathbf{D} = \begin{bmatrix} \mathbf{I_{3\times 3}} & \mathbf{0} \end{bmatrix} \]
\[ \mathbf{T} = \begin{bmatrix} \mathbf{R} & \mathbf{t} \\ \mathbf{0}^T & 1 \end{bmatrix} \]

推导

最优化\(\mathbf{f}\)通常会近似为在每步迭代求解一个线性方程组(这块就不细讲了)
\[ \mathbf{H}\mathbf{\Delta \mathbf{x}}=-\mathbf{b} \]
其中
\[ \mathbf{H}=\mathbf{J}^T\mathbf{J} \]
\[ \mathbf{J}=\frac{\partial \mathbf{e(\mathbf{x}\boxplus\Delta \mathbf{x})}}{\partial \Delta \mathbf{x}} \]
\[ \mathbf{b} = \mathbf{J}^T\mathbf{e} \]
于是问题的关键转化为雅克比矩阵的计算。令
\[ \hat{\mathbf{p}}=\mathbf{T}\mathbf{p}=(\hat{x},\hat{y},\hat{z},1)^T \]
\[ \bar{\mathbf{p}}=\lambda\hat{\mathbf{p}}=(\frac{\hat{x}}{\hat{z}},\frac{\hat{y}}{\hat{z}},1,1)^T=(\bar{x},\bar{y},1,1)^T \]
\[ p'=\mathbf{K}\mathbf{D}\bar{\mathbf{p}} =(f_x\bar{x}+c_x,f_y\bar{y}+c_y,1)^T \]
那么,
\[ \frac{\partial \mathbf{e}}{\partial\delta} =\frac{\partial \mathbf{e}}{\partial p'} \frac{\partial p'}{\partial \bar{\mathbf{p}}} \frac{\partial \bar{\mathbf{p}}}{\partial \hat{\mathbf{p}}} \frac{\partial \hat{\mathbf{p}}}{\partial \delta} \]
我们容易推出以下等式
\[ \frac{\partial \mathbf{e}}{\partial p'} = \begin{bmatrix} \mathbf{I}_{2\times2} & \mathbf{0}_{2\times1}\\ \mathbf{0}_{2\times1}^T & 0 \end{bmatrix} \]
\[ \frac{\partial p'}{\partial \bar{\mathbf{p}}}= \begin{bmatrix} f_x & 0 & 0 & 0 \\ 0 & f_y & 0 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix} \]
\[ \frac{\partial \bar{\mathbf{p}}}{\partial \hat{\mathbf{p}}}= \frac{1}{\hat{z}^2}\begin{bmatrix} \hat{z} & 0 & -\hat{x} & 0\\ 0 & \hat{z} & -\hat{y} & 0 \\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 \end{bmatrix} \]

\[ \frac{\partial \hat{\mathbf{p}}}{\partial\delta} =(\mathbf{T}\mathbf{p})^{\odot} =\begin{bmatrix} \mathbf{I}_{3\times 3} & -{[\hat{\mathbf{p}}]_{1:3}}^{\wedge}\\ \mathbf{0}_{3\times1}^T & \mathbf{0}_{3\times1}^T \end{bmatrix} \]

最后一个等式参见State Estimation of Robotics第7章公式(7.179)。
将上面的式子放在一起,便有
\[ \frac{\partial \mathbf{e}}{\partial\delta} =\frac{1}{\hat{z}^2} \begin{bmatrix} f_x\hat{z} & 0 & -f_x\hat{x} & -f_x\hat{x}\hat{y} & f_x(\hat{x}^2+\hat{z}^2) & -f_x\hat{y}\hat{z}\\ 0 & f_y\hat{z} & -f_y\hat{y} & -f_y(\hat{y}^2+\hat{z}^2) & f_y\hat{x}\hat{y} & f_y\hat{x}\hat{z}\\ & \mathbf{0}_{3\times 1}^T & & & \mathbf{0}_{3\times 1}^T & \end{bmatrix} \]

转载于:https://www.cnblogs.com/luyb/p/7804126.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

姿态估计中的雅可比求导 的相关文章

  • Navicat 看历史执行SQL

    Navicat可以通过这个框口看手动操作所执行的代码操作 转载于 https www cnblogs com sunxun p 5286657 html
  • MWC四轴飞行器代码解读

    MWC v2 2 代码解读annexCode 红色是一些暂时没去顾及的部分 xff0c 与我现在关心的地方并无太大关系 函数对rcDate进行处理 xff08 去除死区 xff0c 根据油门曲线 xff0c roll pitch曲线 xff
  • 云讷科技推出Kerloud数传电台

    介绍 Kerloud Telemetry是由云讷科技推出的一款面向无人系统 传输可靠的短距离无线传输电台 产品基于ISM Sub G频段 xff0c 采用FSK调制 抗干扰能力强 xff0c 具备Uart USB通用接口 xff0c 支持P
  • Requests方法 --- post 请求body的四种类型

    常见的 post 提交数据类型有四种 xff1a 1 第一种 xff1a application json xff1a 这是最常见的 json 格式 xff0c 也是非常友好的深受小伙伴喜欢 的一种 xff0c 如下 34 input1 3
  • 中文转拼音 (utf8版,gbk转utf8也可用)

    中文转拼音 utf8版 gbk转utf8也可用 https git oschina net cik pinyin php 64 param string str utf8字符串 64 param string ret format 返回格式
  • Pycharm激活方法(license server方法)

    strong pycharm所有版本 span class hljs string http span class hljs comment www jetbrains com pycharm download previous html
  • idc函数大全

    A80 addc A80 addcix A80 addciy A80 addix A80 addiy A80 cmpd A80 cmpi A80 im0 A80 im1 A80 im2 A80 jrc A80 jrnc A80 jrnz A
  • 视觉SLAM漫淡

    视觉SLAM漫谈 1 前言 开始做SLAM xff08 机器人同时定位与建图 xff09 研究已经近一年了 从一年级开始对这个方向产生兴趣 xff0c 到现在为止 xff0c 也算是对这个领域有了大致的了解 然而越了解 xff0c 越觉得这
  • 无人机基础知识点总结

    一 xff0e 基本概念 飞控 xff1a 飞机的控制系统 xff0c 其中硬件包含传感器部分IMU和控制部分的MCU xff0c 软件部分包含控制算法 俯仰 xff1a pitch xff0c 绕坐标系y轴旋转 xff0c 想象一下平时的
  • 谈一谈编程中遇到的一些死循环(递归死循环,AOP死循环,业务死循环)

    最简单最基础死循环 xff0c 一般都是这样的 while 1 while true for 然而在编程中常常会用到一些并不是那么基础的死循环 xff0c 这里列举一些我在编程中所遇到的一些死循环 方法已经不记得了 xff0c 只是大概说明
  • 简历上的项目经历怎么写?这3条原则不可忽视!

    阅读本文大概需要 5 分钟 作者 xff1a 黄小斜 文章来源 xff1a 微信公众号 程序员江湖 作为一个程序员 xff0c 想必大家曾经都做过一些项目 xff0c 可能现在手头上也还有一些项目 不过还是有很多学生朋友来问我 没有项目怎么
  • “四通一达”本一家,这家人是如何“承包”中国快递半壁江山的?

    微博上有张图火到不行了 看明白没 xff1f 原来 xff0c 这些年为我们奔走送快递的申通 中通 圆通 韵达 xff0c 这四家公司 xff0c 以及汇通 天天等快递公司 xff0c 都有一个共同的老家 xff1a 仅有40万人口的浙江桐
  • 在远方

    远方不是脚到达的地方 xff0c 而是心超越的地方 剧情简介 姚远在孤儿院长大 xff0c 后被二叔接出 xff0c 早早进入社会 xff0c 从底层快递员做起 在被邮政执法堵截损失惨重后 xff0c 他设局结识国营邮政稽查负责人的千金路晓
  • c++11 条款21:尽量使用std::make_unique和std::make_shared而不直接使用new

    条款21 xff1a 尽量使用std make unique和std make shared而不直接使用new 让我们从对齐std make unique 和 std make shared这两块开始 std make shared是c 4
  • 快递 10 年,逆袭为王

    2009 2018 xff0c 双十一 全民狂欢已走过十载 xff0c 网购成为了国民消费不可或缺的重要组成 xff0c 并带动了上下游众多产业的狂飙发展 xff0c 这其中 xff0c 以民营快递最为突出 金风玉露一相逢 xff0c 便胜
  • BPDU报文(RSTP)

    与STP 的BPDU报文格式相同 xff0c 就是在flags字段报文中间几位得到应用 主要原理 xff1a 利用flages位中的Proposal与Agreement来进行协商 xff0c 从而快速从 discarding 转成 forw
  • 怎么在一堆身份证中筛选出大于18岁的?

    最近一朋友找我帮个忙 xff0c 让我在N多身份证中找到18岁以上的人 我还想着用SQL查询来弄 xff0c 谁让是干IT的呢 xff0c 没想到被我一个朋友用excel瞬间解决 学习新的东西是多么的重要啊 其实就是利用了excel中的MI
  • 微信小程序我的界面

    前言 感谢 承蒙关照 微信小程序我的界面 界面效果 界面结构 小程序代码 我们先看me json代码 34 navigationBarTitleText 34 34 个人中心 34 me wxml代码 lt view class 61 34
  • __sync_fetch_and_add

    最近在公司离职的前辈写的代码哪里看到了 sync fetch and add这个东东 比较好奇 找些资料学习学习 http www lxway com 4091061956 htm http www cnblogs com FrankTan
  • 2.5年, 从0到阿里

    从来没有想到自己的求职之路会这么顺利 第一次投阿里就拿到了offer 以前一直都是做好被刷的准备的 3月31号晚上收到了来自阿里的正式offer 签下录取意向书 粗略算了一下 从2012年9月份正式入学进入计算机系到2015年3月签下阿里o

随机推荐