视觉SLAM理论到实践系列:补充——泊松公式证明

视觉SLAM理论到实践系列文章

下面是《视觉SLAM十四讲》学习笔记的系列记录的总链接,本人发表这个系列的文章链接均收录于此

视觉SLAM理论到实践系列文章链接


下面是专栏地址:

视觉SLAM理论到实践专栏



前言

高翔博士的《视觉SLAM十四讲》学习笔记的系列记录


视觉SLAM理论到实践系列:补充——泊松公式 R ˙ = R ω ∧ \dot{\mathbf{R}}=\mathbf{R}\omega^{\wedge} R˙=Rω 证明

在这里插入图片描述

如上图所示,在三维空间中,圆周运动所在的平面可以任意选取,我们可以将角速度拓展成一个矢量 ω \mathbf{\omega} ω,其方向垂直于该平面并由右手定则确定。令坐标系的原点在圆周运动的轴上,用位矢 r \bf{r} r 表示点 P P P 的位置,则圆周运动的半径为 r ⊥ = r sin ⁡ θ r_{⊥}=r\sin\theta r=rsinθ,其中 θ \theta θ r \mathbf{r} r ω \mathbf{\omega} ω 的夹角。所以圆周运动速度的大小为 v = ω r sin ⁡ θ v=\omega r\sin\theta v=ωrsinθ。根据矢量叉乘的几何定义,有

v = ω × r \bf{v}=\bf{\omega}\times\bf{r} v=ω×r

线速度与角速度的关系还有如下推导

在这里插入图片描述
粒子在坐标系中 z = h z = h z=h 中的平面做圆周运动,圆周运动的半径为 a a a,粒子的坐标为: r = ( a cos ⁡ θ , a sin ⁡ θ , h ) T \mathbf{r}=(a\cos\theta,a\sin\theta,h)^T r=(acosθ,asinθ,h)T

坐标对时间 t t t 求导得:
r ˙ = ( − a θ ˙ sin ⁡ θ , a θ ˙ cos ⁡ θ , 0 ) ⊤ = [ 0 − θ ˙ 0 θ ˙ 0 0 0 0 0 ] [ a cos ⁡ θ a sin ⁡ θ h ] = ω × r \begin{aligned} \dot{\mathbf{r}} &=(-a\dot{\theta}\sin\theta,a\dot{\theta}\cos\theta,0)^\top\\ &=\begin{bmatrix}0&-\dot{\theta}&0\\\dot{\theta}&0&0\\0&0&0\end{bmatrix}\begin{bmatrix}a\cos\theta\\a\sin\theta\\h\end{bmatrix}\\ &=\boldsymbol{\omega}\times\mathbf{r}\end{aligned} r˙=(aθ˙sinθ,aθ˙cosθ,0)= 0θ˙0θ˙00000 acosθasinθh =ω×r
其中 ω = θ ˙ z \bf{\omega}=\dot{\theta}\mathbf{z} ω=θ˙z,表示角速度的向量,方向与 z z z 轴正方向一致, ∣ θ ˙ ∣ |\dot{\theta}| θ˙ 是角速度大小, ∣ r ˙ ∣ |\dot{\mathbf{r}}| r˙ 为线速度大小

对上式取模,得:
∣ r ˙ ∣ = ∣ ω ∣ ∣ r ∣ sin ⁡ ϕ = a ∣ θ ˙ ∣ |\dot{\mathbf{r}}|=|\boldsymbol{\omega}||\mathbf{r}|\sin\phi=a|\dot{\theta}| r˙=ω∣∣rsinϕ=aθ˙
也就是中学学过的:线速度大小=角速度大小 × \times ×半径

这里有两个坐标系,惯性系(inertial frame),也叫世界坐标系,还有一个是物体坐标系(body frame)

在这里插入图片描述

为了计算简便,假设两个坐标系的原点为同一个,即只考虑旋转,不考虑坐标系之间的平移

R ˙ = [ ω ] × R \dot{\mathbf{R}}=[\omega]_\times\mathbf{R} R˙=[ω]×R 证明

首先看这样一个公式:
d d t R = ω × R \frac{\mathrm{d}}{\mathrm{d}t}\mathbf{R}=\omega\times\mathbf{R} dtdR=ω×R

第一种证明视角

要证上式就是考虑旋转矩阵按列分块
R = [ i ^ j ^ k ^ ] \mathbf{R}=\left[\begin{array}{c|c|c}\mathbf{\hat{i}}&\mathbf{\hat{j}}&\mathbf{\hat{k}}\end{array}\right] R=[i^j^k^]
即证明
d d t i ^ = ω × i ^ d d t j ^ = ω × j ^ d d t k ^ = ω × k ^ \begin{gathered} \frac{\mathrm{d}}{\mathrm{d}t}\hat{\mathbf{i}} =\omega\times\hat{\mathbf{i}} \\ \frac{\mathrm{d}}{\mathrm{d}t}\mathbf{\hat{j}} =\omega\times\hat{\mathbf{j}} \\ \frac{\mathrm{d}}{\mathrm{d}t}\hat{\mathbf{k}} =\omega\times\hat{\mathbf{k}} \end{gathered} dtdi^=ω×i^dtdj^=ω×j^dtdk^=ω×k^
我们知道旋转矩阵的每一列都有这样的性质:
∥ u ^ ∥ = 1 \|\hat{\mathbf{u}}\|=1 u^=1
这是因为旋转矩阵是正交矩阵:
R T R = I \mathbf{R}^{T}\mathbf{R}=\mathbf{I} RTR=I
所以 u ^ T u ^ = 1 \hat{\mathbf{u}}^T\hat{\mathbf{u}}=1 u^Tu^=1,于是我们有:
d d t u ^ T u ^ = 0 \frac{\mathrm{d}}{\mathrm{d}t}\hat{\mathbf{u}}^T\hat{\mathbf{u}}=0 dtdu^Tu^=0
继而得到:
u ^ ⋅ d d t u ^ = 0 \hat{\mathbf{u}}\cdot{\frac{\mathrm{d}}{\mathrm{d}t}}\hat{\mathbf{u}}=0 u^dtdu^=0
这不就说明每一列的 u ^ \hat{u} u^ 和其微分垂直吗?其微分可以表示为叉乘的形式(保证垂直):
u ^ ⋅ ( ω × u ^ ) = 0 \hat{\mathbf{u}}\cdot(\omega\times\hat{\mathbf{u}})=0 u^(ω×u^)=0
也即我们有:
d d t u ^ = ω × u ^ \frac{\mathrm{d}}{\mathrm{d}t}\hat{\mathbf{u}}=\omega\times\hat{\mathbf{u}} dtdu^=ω×u^
于是上式得到了证明。
d d t R = ω × R = [ ω ] × R {\frac{\mathrm{d}}{\mathrm{d}t}}\mathbf{R}=\omega\times\mathbf{R}\quad=[\omega]_{\times}\mathbf{R} dtdR=ω×R=[ω]×R
式中:
[ ω ] × = [ 0 − ω z ω y ω z 0 − ω x − ω y ω x 0 ] [\omega]_\times=\left[\begin{array}{ccc}0&-\omega_z&\omega_y\\\omega_z&0&-\omega_x\\-\omega_y&\omega_x&0\end{array}\right] [ω]×= 0ωzωyωz0ωxωyωx0
[ ω ] × [\omega]_\times [ω]× 的定义下同。

第二种证明视角

设惯性系(世界坐标系)下的角标为 W W W 或者 w w w 或者 I I I,本体坐标系下的角标为 B B B 或者 b b b,Body系的空间中有一个点坐标为 r B = ( x 1 , y 1 , z 1 ) T \mathbf{r}_B=(x_1,y_1,z_1)^T rB=(x1,y1,z1)T,有下面的关系
r w = R w b r b \mathbf{r}_w=\mathbf{R}_{wb}\mathbf{r}_b rw=Rwbrb
下标 ( ) w b ()_{wb} ()wb 表示本体坐标系到世界坐标系的变换

两边对时间 t t t 求导我们可以得到:
r ˙ w = v w = ( d d t R w b ) r b = R ˙ w b r b \dot{\mathbf{r}}_{w}=\mathbf{v}_{w}=\left({\frac{\mathrm{d}}{\mathrm{d}t}}\mathbf{R}_{wb}\right)\mathbf{r}_{b}=\dot{\mathbf{R}}_{wb}\mathbf{r}_{b} r˙w=vw=(dtdRwb)rb=R˙wbrb
上式中 v w \mathbf{v}_{w} vw 是世界坐标系下的速度,等式右边没有 r b \mathbf{r}_{b} rb 的导数是因为本体坐标系内观察坐标始终没有变化(这里假设本体坐标系在运动,而坐标不动),导数为0

(若点也在运动,则详见。。。的推导)

于是我们有
v w = ω w × r w = [ ω w ] × R w b r b \begin{aligned}\mathbf{v}_w&=\omega_w\times\mathbf{r}_w\\&=[{\omega_w}]_{\times}\mathbf{R}_{wb}\mathbf{r}_b\end{aligned} vw=ωw×rw=[ωw]×Rwbrb
对比可得
d d t R w b = [ ω w ] × R w b \begin{aligned}\frac{\mathrm{d}}{\mathrm{d}t}\mathbf{R}_{wb}=[\omega_w]_\times\mathbf{R}_{wb}\end{aligned} dtdRwb=[ωw]×Rwb
即所谓的
R ˙ = [ ω ] × R \dot{\mathbf{R}}=[\omega]_\times\mathbf{R} R˙=[ω]×R
注意,这里的 ω \omega ω 是在世界坐标系下的表示,即 ω w \omega_w ωw ,和下面要将的 ω b \omega_b ωb 不同

R ˙ = R ω ∧ \dot{\mathbf{R}}=\mathbf{R}\omega^{\wedge} R˙=Rω 证明

我们经常在论文里看到反过来写的旋转矩阵的导数,这又是为什么呢?
d d t R = R [ ω ] × {\frac{\mathrm{d}}{\mathrm{d}t}}\mathbf{R}=\mathbf{R}[\omega]_{\times} dtdR=R[ω]×
准确地说,这里的 [ ω ] × [\omega]_{\times} [ω]× 应该指的是物体角速度 [ ω b ] × [\omega_b]_{\times} [ωb]×
d d t R = R [ ω b ] × {\frac{\mathrm{d}}{\mathrm{d}t}}\mathbf{R}=\mathbf{R}[\omega_b]_{\times} dtdR=R[ωb]×
我们需要搞清楚的是前面所推导和论证的公式准确地说应该描述的是惯性坐标系(世界坐标系)的空间角速度
d d t R = [ ω w ] × R \frac{\mathrm{d}}{\mathrm{d}t}\mathbf{R}=[\omega_{w}]_{\times}\mathbf{R} dtdR=[ωw]×R
为了方便我们把旋转矩阵的微分写作:
R ˙ = d d t R \dot{\mathbf{R}}={\frac{\mathrm{d}}{\mathrm{d}t}}\mathbf{R} R˙=dtdR
于是我们便得到:
[ ω w ] × = R ˙ R − 1 [ ω b ] × = R − 1 R ˙ \begin{aligned} {[\omega_{w}]}_{\times}&=\dot{\mathbf{R}}\mathbf{R}^{-1} \\\\ {[\omega_{b}]}_{\times}&=\mathbf{R}^{-1}\dot{\mathbf{R}} \end{aligned} [ωw]×[ωb]×=R˙R1=R1R˙
空间角速度在前面(第二种证明视角)我们已经推导过了,下面我们推导一下物体角速度,根据坐标变换关系我们有:
v w = R w b v b ω w = R w b ω b \mathbf{v}_w=\mathbf{R}_{wb}\mathbf{v}_b\\\\\omega_w=\mathbf{R}_{wb}\omega_b vw=Rwbvbωw=Rwbωb
根据前面的
v w = R ˙ w b r b \mathbf{v}_{w}=\dot{\mathbf{R}}_{wb}\mathbf{r}_{b} vw=R˙wbrb
则有(为了简便则省去 R \mathbf{R} R 的脚标):
R − 1 v w = R − 1 R ˙ r b \mathbf{R}^{-1}\mathbf{v}_{w}=\mathbf{R}^{-1}\dot{\mathbf{R}}\mathbf{r}_{b} R1vw=R1R˙rb
也即:
v b = R − 1 R ˙ r b = [ ω b ] × r b \mathbf{v}_b=\mathbf{R}^{-1}\mathbf{\dot{R}}\mathbf{r}_b=[\omega_b]_\times\mathbf{r}_b vb=R1R˙rb=[ωb]×rb
于是我们便得到:
[ ω b ] × = R − 1 R ˙ [\omega_{b}]_{\times}=\mathbf{R}^{-1}\dot{\mathbf{R}} [ωb]×=R1R˙
也即证明了:
d d t R = R [ ω b ] × \frac{\mathrm{d}}{\mathrm{d}t}\mathbf{R}=\mathbf{R}[\omega_b]_{\times} dtdR=R[ωb]×

或者写作
R ˙ = R [ ω b ] × = R ω b ∧ \begin{aligned} \dot{\mathbf{R}}&=\mathbf{R}[\omega_b]_{\times}\\\\ &= \mathbf{R}{\omega_b}^{\wedge} \end{aligned} R˙=R[ωb]×=Rωb

其他证明方法

高翔书中有介绍

在这里插入图片描述
在这里插入图片描述
这里证明了
R ˙ ( t ) = ϕ ( t 0 ) ∧ R ( t ) = ϕ 0 ∧ R ( t ) \dot{\boldsymbol{R}}(t)=\boldsymbol{\phi}(t_0)^{\wedge}\boldsymbol{R}(t)=\boldsymbol{\phi}_0^{\wedge}\boldsymbol{R}(t) R˙(t)=ϕ(t0)R(t)=ϕ0R(t)
但书中并未说明 ϕ 0 \phi_0 ϕ0 ω \omega ω 的关系

这里也是一样的思路
R T R = I \mathbf{R}^{T}\mathbf{R}=\mathbf{I} RTR=I
对左右两边对时间求导数:
R T R ˙ + R ˙ T R = 0 [ ω ] × = R T R ˙ a n d [ ω ] × + [ ω ] × T = 0 R ˙ = R [ ω ] × \mathbf{R}^T\dot{\mathbf{R}}+\dot{\mathbf{R}}^T\mathbf{R}=\mathbf{0} \\\\ [\omega]_{\times}=\mathbf{R}^{T}\dot{\mathbf{R}}\quad\mathrm{and}\quad[\omega]_{\times}+[\omega]_{\times}^{T}=\mathbf{0} \\\\ \dot{\mathbf{R}}=\mathbf{R}[\omega]_{\times} RTR˙+R˙TR=0[ω]×=RTR˙and[ω]×+[ω]×T=0R˙=R[ω]×

事实上,我也可以对下面的式子做同样的操作
R R T = I \mathbf{R}\mathbf{R}^{T}=\mathbf{I} RRT=I
对左右两边对时间求导数:
R ˙ R T + R R ˙ T = 0 [ ω ] × = R ˙ R T a n d [ ω ] × + [ ω ] × T = 0 R ˙ = [ ω ] × R \dot{\mathbf{R}}\mathbf{R}^T+\mathbf{R}\dot{\mathbf{R}}^T=\mathbf{0} \\\\ [\omega]_{\times}=\dot{\mathbf{R}}\mathbf{R}^{T}\quad\mathrm{and}\quad[\omega]_{\times}+[\omega]_{\times}^{T}=\mathbf{0} \\\\ \dot{\mathbf{R}}=[\omega]_{\times}\mathbf{R} R˙RT+RR˙T=0[ω]×=R˙RTand[ω]×+[ω]×T=0R˙=[ω]×R
以上两个都证明可以从数学的定义说明旋转矩阵群 S O ( 3 ) SO(3) SO(3) 的李代数是反对称矩阵。然而这样的证明并没有反映究竟是物体角速度还是空间角速度,实际应用中可能会让读者产生困惑,关于物体角速度和空间角速度和旋转矩阵的关系还是要用前面的推导说明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/468962.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

png格式怎么转成gif?一个小窍门快速转换

如何将png转换成gif动画?作为新媒体工作者,在日常办公中少不了使用到gif格式图片。那么,当我们遇到需要将png格式转换成gif格式的时候要怎么操作呢?很简单,使用gif动画图片(https://www.gif.cn/&#xff09…

android studio的布局没有提示之SDK不匹配

我新建了一个项目,然后突然发现布局没有提示了: 我看了下我的build.gradle 我直接修改compileSdkVersion为30就能正常使用了

在微信小程序中或UniApp中自定义tabbar实现毛玻璃高斯模糊效果

backdrop-filter: blur(10px); 这一行代码表示将背景进行模糊处理,模糊程度为10像素。这会导致背景内容在这个元素后面呈现模糊效果。 background-color: rgb(255 255 255 / .32); 这一行代码表示设置元素的背景颜色为白色(RGB值为0, 0, 0)&a…

linux 基础总结

1、简述Raid0、raid1、aid5、Raid10的区别 RAID:redundant array of independent disks, 独立冗余磁盘阵列 磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效 果提升整个磁盘系统效能。利用这项技术&#x…

Scala--03--变量和数据类型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 变量和数据类型1.注释2 变量和常量(重点)3 标识符的命名规范4 字符串输出5.IO 输入 输出键盘输入读写文件 IO 6.数据类型(重点&a…

Alma Linux - Primavera P6 EPPM 安装及分享

引言 继上一期发布的Rocky Linux版环境发布之后,近日我又制作了基于Alma Enterprise Linux 的P6虚拟机环境,同样里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机,请先与Oracle Primaver…

选择电能表时电流规格是否越大越好

选择电能表时,电流规格是否越大越好是一个值得深入探讨的问题。实际上,这个问题的答案并不是绝对的,而是需要根据具体的使用场景和需求来进行权衡。下面,我将从多个方面对这一问题进行详细的分析和探讨。 一、电流规格与电能表的基…

达索的有限元分析软件Abaqus 2024版本下载与安装配置

目录 前言一、安装前准备二、Abaqus 安装总结 前言 Abaqus软件是一款广泛使用的有限元分析软件,可用于模拟各种工程应用程序,包括结构、流体力学、热传递、电磁和声学等。该软件提供了广泛的建模功能和多种求解器,可以帮助工程师预测材料和结…

面试笔记——Redis(缓存击穿、缓存雪崩)

缓存击穿 缓存击穿(Cache Breakdown): 当某个缓存键的缓存失效时(如,过期时间),同时有大量的请求到达,并且这些请求都需要获取相同的数据,这些请求会同时绕过缓存系统&a…

数据集笔记:METR-la 原始数据转input/ground truth

0 问题介绍 在交通预测/时间序列预测的论文中(如论文笔记:Dual Dynamic Spatial-Temporal Graph ConvolutionNetwork for Traffic Prediction_dual dynamic spatial-temporal graph convolution ne-CSDN博客) 模型输入的是过去12个时间片的…

掌握关键技巧!音频转换精灵如何使用?

在数字媒体时代,音频格式的转换已成为日常工作中不可或缺的一部分。为了满足这一需求,市场上涌现出众多音频转换工具。其中,音频转换精灵以其强大的功能和简便的操作赢得了广泛好评。本文将为你详细介绍如何使用该软件,让你轻松完…

Compose UI 之 Segmented buttons 分段按钮

Segmented buttons SegmentedButton 是一种分段式按钮组件,它允许用户在一组相关的选项中选择一个或几个。 上图中:① 单选的分段式按钮。② 多选的分段式按钮。 分段式按钮的几个特点: 分段式按钮是带有状态的按钮,又有单选和多选之分。 从设计上将,不论是单选或是多选…

C# StableDiffusion StableDiffusionSharp 脱离python臃肿的环境

目录 说明 效果 项目 代码 下载 C# StableDiffusion StableDiffusionSharp 脱离python臃肿的环境 说明 Stable Diffusion in pure C/C github地址:https://github.com/leejet/stable-diffusion.cpp C# Wrapper for StableDiffusion.cpp github地址&#x…

SWIFT(环球同业银行金融电讯协会)详细介绍

可以说,最严厉的金融制裁之一,莫过于切断俄罗斯与SWIFT的连接。SWIFT究竟又是什么,在金融领域占据如此重要的地位?本文将从理论、实操以及技术层面展开详尽分析。 本文纲要 前言 一、SWIFT是什么 二、SWIFT的成立背景和组织架…

【13】vue2和vue3对比

vite: https://github.com/vitejs/vite 面试题:谈谈你对 vite 的理解,最好对比 webpack 说明 webpack 原理图 vite 原理图 面试题答案: webpack 会先打包,然后启动开发服务器,请求服务器时直接给予打包结果。 而 vite 是直接启动开发服务器,请求哪个模块再对该模块进行实…

自喻女“梵高”,VRAR元宇宙领域业余画手举办线上3D虚拟数字化处女展!

众所周知,梵高画作通常采用粗大的笔触和厚重的油彩,结合丰富且饱和的色彩,给人印象鲜明大胆且笔触有力,比如著名画作《向日葵》、《星月夜》和《加歇医生》中可以看出,相比传统构图规则,他更倾向于用自己的…

蓝桥杯 2023 省B 接龙数列

思路分析: 创建一个大小为10的向量 hash,用于记录以每个数字结尾的字符串数量。输入字符串数量 n。循环读取每个字符串,并更新 hash 中以当前字符串结尾的字符串数量。同时更新最大字符串数量 count。输出不可达的字符串数量,即 …

HubSpot出海CRM助力企业实现全球营销布局!

随着全球化的浪潮不断推进,越来越多的企业开始将视线投向更为广阔的国际市场,寻求新的增长点。然而,国际化拓展并非易事,企业需要构建一套有效的全球营销战略,以应对不同国家和地区的文化差异、市场需求和竞争环境。在…

漫谈5种注册中心

01 注册中心基本概念 1.1 什么是注册中心? 注册中心主要有三种角色: 服务提供者(RPC Server):在启动时,向 Registry 注册自身服务,并向 Registry 定期发送心跳汇报存活状态。 服务消费者&…

2024热门外贸独立站wordpress模板

工艺品wordpress外贸主题 简约大气的wordpress外贸主题,适合做工艺品进出品外贸的公司官网使用。 https://www.jianzhanpress.com/?p5377 日用百货wordpress外贸主题 蓝色大气的wordpress外贸主题,适合做日用百货的外贸公司搭建跨境电商网站使用。 …