【SLAM学习】罗德里格斯公式推导详细过程

2023-10-07 19:40

本文主要是介绍【SLAM学习】罗德里格斯公式推导详细过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目前,在进实验室之前自己学习SLAM,用的是高翔博士所著的《视觉SLAM十四讲》,其中涉及到罗德里格斯公式,这里讲自己的推导过程记录如下。

罗德里格斯公式如下:
在这里插入图片描述
上述公式是在视觉SLAM中常用的公式,可以讲旋转角变换为旋转矩阵,其中R为旋转矩阵,θ为绕轴旋转的角度,n为旋转轴方向的单位向量。

下面给出推导过程:
在这里插入图片描述
这是一个证明的辅助示意图(比较粗糙,不要见怪),大致是利用了向量的分解以及一些叉乘的知识。

证明

因为我们的最终目的是要的到旋转矩阵R,而所用到R的地方就是vrot =Rv,我们就要尽可能的用v来表示vrot
vrot = v + v//
vrot = a + b + v//
然后我们就把 a,b,v// 分别用 v 来表示就好了。
首先是 v//,从简单到难嘛,很容易看出来
v// = (v·nn
解释一下,v·n是一个内积,也就是向量vn上的投影,是一个数,然后再数乘n,变成一个方向和n相同,大小为v·n的向量,也就是v//.

然后是b,也不难看出
b = cosθ·v
这又是怎么得出来的呢,下面给出简单的推导。
b 应该是长度为 vrot 的膜乘-cosθ,方向与 v 相反,那么
b = ||vrot⊥||·(-cosθ)·(-v⊥n
这里注意cosθ是负的,继续推导,由于||vrot⊥||与||v||相等,
b = ||v||·cosθ·v⊥n
b = cosθ·v

最后是a,先给出a的结果
a = sinθ · n × v
b 的推导一样,a 的长度是 ||vrot⊥||·sinθ,方向是 n×v⊥n,那么
a = ||vrot⊥||·sinθ·n×v⊥n
又因为上面提到的||vrot⊥||与||v||相等,所以
a = ||v||·sinθ·n×v⊥n
a = sinθ·n×v
但是,由于我们最终要表现得形式是 vrotv 之间的,所以把上述a的表示变成由v表示,注意到,n× v 是膜为||n||·||v||·sin90° = ||n||·||v||,方向为n×v的向量,而 n × v 同样也是,所以直接替换
a = sinθ · n × v

到此为止,就把所有的向量用与 v 有关的向量来表示了,目前的推导公式已经变成了如下样子:

vrot = sinθ·n×v + cosθ·v + (v·nn

然而,此时还并没有转换为 vrot = Rv的形式,下面就要把所有的 v 的系数转化为矩阵。

首先第一项,可以直接利用叉乘进行转化,如果你看过《视觉SLAM十四讲》就对这个肯定不陌生,可以转化为 sinθ·n^·v
其中,n^大概就是左边矩阵的这个样子,这是规定好的,可以算一下,这样算出来和直接叉乘的结果一致,图中的 k 即为我所说的 n。
在这里插入图片描述

然后第二项,v = v - v//
所以原式 = cosθ·(v - (v·nn),就转化为了对第三项进行变换

最后是第三项,由数乘的交换律,(v·nn = n·(v·n),然后由于v·n = nT·v,所以原式转化为n·nT·v,前半部分转化为矩阵。

综上所述,最终可得(剩下的自己顺着写就出来了)
在这里插入图片描述
如有问题,欢迎留言~~~

这篇关于【SLAM学习】罗德里格斯公式推导详细过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/160013

相关文章

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4