罗德里格斯公式及其推导


文章目录

  • 罗德里格斯公式及其推导
  • 一、基础准备
    • 1. 旋转矩阵
    • 2. 旋转向量
    • 3. 向量叉积及反对称矩阵
  • 二、公式推导
    • 1. 符号说明与图例
    • 2. 推导
  • 三、公式应用及深入理解
  • 四、极限方式推导

罗格里格斯公式,将3D旋转表达成了 ( n ∧ , θ ) (n^∧,θ) (n∧,θ)的形式,一般记作
ω = θ ∗ n = ( ω x , ω y , ω z ) T ω = θ*n=(ω_x,ω_y,ω_z)^T ω=θ∗n=(ωx​,ωy​,ωz​)T
两种表达式
R = [ I + ( 1 − c o s ( θ ) ) ∗ N 2 + s i n ( θ ) ∗ N ] R =[I + (1 - cos(θ)) * N^2 + sin(θ) * N] R=[I+(1−cos(θ))∗N2+sin(θ)∗N]
R = c o s ( θ ) ∗ I + ( 1 − c o s ( θ ) ) ∗ n ∗ n T + s i n ( θ ) ∗ n ∧ R =cos(θ) * I + (1 - cos(θ)) * n * n^T + sin(θ) * n^∧ R=cos(θ)∗I+(1−cos(θ))∗n∗nT+sin(θ)∗n∧

一、基础准备

1. 旋转矩阵

R = [ r x x r x y r x z r y x r y y r y z r z x r z y r z z ] R= \left[\begin{matrix} r_x{_x} & r_x{_y} & r_x{_z}\\ r_y{_x} & r_y{_y} & r_y{_z}\\ r_z{_x} & r_z{_y} & r_z{_z} \end{matrix}\right] R=⎣ ⎡​rx​x​ry​x​rz​x​​rx​y​ry​y​rz​y​​rx​z​ry​z​rz​z​​⎦ ⎤​
R矩阵是标准正交矩阵,用于基向量之间的刚性变换,且满足:

  • R T R = R − 1 R = E R^TR = R^{-1}R = E RTR=R−1R=E
  • |R| = 1

2. 旋转向量

旋转过程用一个单位向量n和旋转角度θ来表示。设旋转向量为:
n = [ n 1 n 2 n 3 ] n= \left[\begin{matrix} n_1 \\ n_2 \\ n_3 \end{matrix}\right] n=⎣ ⎡​n1​n2​n3​​⎦ ⎤​
其中:
n 1 2 + n 2 2 + n 3 2 = 1 n_1^2 + n_2^2 + n_3^2 = 1 n12​+n22​+n32​=1

3. 向量叉积及反对称矩阵

a × b = a ∗ b ∗ s i n ( θ ) a × b = a*b*sin(θ) a×b=a∗b∗sin(θ)
叉积为矢量,长度为两个向量相夹的面积,方向与两个向量垂直。如下图:

我们设置向量
a = [ a 1 a 2 a 3 ] a= \left[\begin{matrix} a_1 \\ a_2 \\ a_3 \end{matrix}\right] a=⎣ ⎡​a1​a2​a3​​⎦ ⎤​
a的反对称矩阵为:
a ∧ = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] = A a^∧ = \left[\begin{matrix} 0 & -a_3 &a_2\\ a_3 & 0 & -a_1\\ -a_2 & a_1 & 0 \end{matrix}\right] = A a∧=⎣ ⎡​0a3​−a2​​−a3​0a1​​a2​−a1​0​⎦ ⎤​=A
则有:
a × b = [ a 2 b 3 − a 3 b 2 − a 1 b 3 + a 3 b 1 a 1 b 2 − a 2 b 1 ] = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] ∗ [ b 1 b 2 b 3 ] = a ∧ ∗ b a × b= \left[\begin{matrix} a_2b_3 - a_3b_2 \\ -a_1b_3 + a_3b_1 \\ a_1b_2 - a_2b_1 \end{matrix}\right]=\left[\begin{matrix} 0 & -a_3 &a_2\\ a_3 & 0 & -a_1\\ -a_2 & a_1 & 0 \end{matrix}\right]*\left[\begin{matrix} b_1 \\ b_2 \\ b_3 \end{matrix}\right] = a^∧*b a×b=⎣ ⎡​a2​b3​−a3​b2​−a1​b3​+a3​b1​a1​b2​−a2​b1​​⎦ ⎤​=⎣ ⎡​0a3​−a2​​−a3​0a1​​a2​−a1​0​⎦ ⎤​∗⎣ ⎡​b1​b2​b3​​⎦ ⎤​=a∧∗b

二、公式推导

1. 符号说明与图例

名称 符号
旋转向量 n n n
反对称矩阵 n ∧ o r N n^∧ or N n∧orN
旋转角度 θ θ θ
旋转点 P P P
O P OP OP向量 v v v
v v v旋转 θ θ θ后的向量 v ′ v^{'} v′
v v v在旋转平面的投影 v ⊥ v_⊥ v⊥​
v v v在旋转轴的投影 v ∥ v_∥ v∥​
v v v旋转 θ θ θ后旋转平面的分量 v ⊥ ′ v^{'}_⊥ v⊥′​
v v v旋转 θ θ θ后旋转轴 n n n的分量 v ∥ ′ v^{'}_∥ v∥′​
w w w向量,垂直于 n n n与 v v v所在的平面,且与 n n n、 v v v均正交 w w w

2. 推导

假定空间中一个点 P P P,构成向量 v = O P → v=\overrightarrow{OP} v=OP &,对其进行分解:
v = v ⊥ + v ∥ v=v_⊥ + v_∥ v=v⊥​+v∥​
同理旋转后的向量:
v ′ = v ⊥ ′ + v ∥ ′ v^{'}=v^{'}_⊥ + v^{'}_∥ v′=v⊥′​+v∥′​
显然:
v ∥ = v ∥ ′ v_∥=v^{'}_∥ v∥​=v∥′​
所以有:
v ′ = v ⊥ ′ + v ∥ v^{'}=v^{'}_⊥ + v_∥ v′=v⊥′​+v∥​
又向量 w w w满足:
w = n × v w=n×v w=n×v
那么:
∣ w ∣ = ∣ n × v ∣ |w|=|n×v| ∣w∣=∣n×v∣
由于 ∣ w ∣ |w| ∣w∣代表黄色平行四边形阴影面积,而面积计算也可以使用 ∣ n ∣ ∗ ∣ v ⊥ ∣ |n|*|v_⊥| ∣n∣∗∣v⊥​∣,而 n n n为单位向量,所以有
∣ w ∣ = ∣ n × v ∣ = ∣ v ⊥ ∣ |w|=|n×v|=|v_⊥| ∣w∣=∣n×v∣=∣v⊥​∣
由于 n × w n×w n×w与 v ⊥ v_⊥ v⊥​相反,我们可以用 n n n和 v v v表示出 v ⊥ v_⊥ v⊥​和 v ∥ v_∥ v∥​,即:
v ⊥ = − n × w = − n × ( n × v ) v_⊥=-n×w=-n×(n×v) v⊥​=−n×w=−n×(n×v)
v ∥ = v − v ⊥ = v + n × ( n × v ) v_∥=v - v_⊥=v+n×(n×v) v∥​=v−v⊥​=v+n×(n×v)
由于 v ⊥ v_⊥ v⊥​与向量 w w w合成即为 v ⊥ ′ v^{'}_⊥ v⊥′​,所以有:
v ⊥ ′ = v ⊥ + w = c o s ( θ ) ∗ v ⊥ + s i n ( θ ) ∗ w v^{'}_⊥ = v_⊥ + w = cos(θ)*v_⊥ + sin(θ) * w v⊥′​=v⊥​+w=cos(θ)∗v⊥​+sin(θ)∗w
将上式带入有:
v ′ = v ∥ + v ⊥ ′ = ( v − v ⊥ ) + c o s ( θ ) ∗ v ⊥ + s i n ( θ ) ∗ w = v + ( c o s ( θ ) − 1 ) ∗ v ⊥ + s i n ( θ ) ∗ w = v + ( 1 − c o s ( θ ) ) ∗ n ∧ ∗ ( n ∧ ∗ v ) + s i n ( θ ) ∗ n ∧ ∗ v = v + ( 1 − c o s ( θ ) ) ∗ N ∗ N ∗ v + s i n ( θ ) ∗ N ∗ v = [ I + ( 1 − c o s ( θ ) ) ∗ N 2 + s i n ( θ ) ∗ N ] ∗ v \begin{aligned} \ v^{'} & = v_∥ + v^{'}_⊥\\ & = (v-v_⊥) + cos(θ)*v_⊥ + sin(θ) * w \\ & = v + (cos(θ)-1)*v_⊥ + sin(θ) * w \\ & = v + (1- cos(θ))*n^∧*(n^∧*v) + sin(θ) *n^∧*v \\ & = v + (1- cos(θ))*N*N*v + sin(θ) *N*v \\ & = [I + (1- cos(θ))*N^2 +sin(θ) *N ]*v \end{aligned}  v′​=v∥​+v⊥′​=(v−v⊥​)+cos(θ)∗v⊥​+sin(θ)∗w=v+(cos(θ)−1)∗v⊥​+sin(θ)∗w=v+(1−cos(θ))∗n∧∗(n∧∗v)+sin(θ)∗n∧∗v=v+(1−cos(θ))∗N∗N∗v+sin(θ)∗N∗v=[I+(1−cos(θ))∗N2+sin(θ)∗N]∗v​
所以有:
R = [ I + ( 1 − c o s ( θ ) ) ∗ N 2 + s i n ( θ ) ∗ N ] R=[I + (1- cos(θ))*N^2 +sin(θ) *N ] R=[I+(1−cos(θ))∗N2+sin(θ)∗N]
继续推导采用第二种方式表达,由于:
n ∗ n T = [ n 1 2 n 1 n 2 n 1 n 3 n 1 n 2 n 2 2 n 2 n 3 n 1 n 3 n 1 2 n 3 n 3 2 ] n*n^T = \left[\begin{matrix} n_1^2 & n_1n_2 & n_1n_3\\ n_1n_2 & n_2^2 & n_2n_3\\ n_1n_3 & n_12n_3 & n_3^2 \end{matrix}\right] n∗nT=⎣ ⎡​n12​n1​n2​n1​n3​​n1​n2​n22​n1​2n3​​n1​n3​n2​n3​n32​​⎦ ⎤​
n ∧ = [ 0 − n 3 n 2 n 3 0 − n 1 − n 2 n 1 0 ] = N n^∧ = \left[\begin{matrix} 0 & -n_3 &n_2\\ n_3 & 0 & -n_1\\ -n_2 & n_1 & 0 \end{matrix}\right] = N n∧=⎣ ⎡​0n3​−n2​​−n3​0n1​​n2​−n1​0​⎦ ⎤​=N
N ∗ N = [ − n 2 2 − n 3 2 n 1 n 2 n 1 n 3 n 1 n 2 − n 1 2 − n 3 2 n 2 n 3 n 1 n 3 n 1 2 n 3 − n 1 2 − n 2 2 ] N*N = \left[\begin{matrix} -n_2^2-n_3^2 & n_1n_2 & n_1n_3\\ n_1n_2 & -n_1^2-n_3^2 & n_2n_3\\ n_1n_3 & n_12n_3 & -n_1^2-n_2^2 \end{matrix}\right] N∗N=⎣ ⎡​−n22​−n32​n1​n2​n1​n3​​n1​n2​−n12​−n32​n1​2n3​​n1​n3​n2​n3​−n12​−n22​​⎦ ⎤​
n ∗ n T = I + N ∗ N n*n^T = I + N*N n∗nT=I+N∗N
将上式带入表达式一,则有:
R = c o s ( θ ) ∗ I + ( 1 − c o s ( θ ) ) ∗ n ∗ n T + s i n ( θ ) ∗ n ∧ R =cos(θ) * I + (1 - cos(θ)) * n * n^T + sin(θ) * n^∧ R=cos(θ)∗I+(1−cos(θ))∗n∗nT+sin(θ)∗n∧

三、公式应用及深入理解

罗德里格斯旋转公式用于旋转三维空间的向量.它需要知道旋转轴和旋转角度。
罗德里格斯旋转公式,将3D旋转表示成绕空间中某一旋转轴 n n n旋转角度 θ θ θ的形式,一般记作:
q = θ ∗ n = [ q x q y q z ] q=θ*n= \left[\begin{matrix} q_x \\ q_y \\ q_z \end{matrix}\right] q=θ∗n=⎣ ⎡​qx​qy​qz​​⎦ ⎤​
式中, θ = ∣ q ∣ = q x 2 + q y 2 + q z 2 θ=|q|=\sqrt{q_x^2+q_y^2+q_z^2} θ=∣q∣=qx2​+qy2​+qz2​ ​。
这种表示形式非常简洁,但存在奇异问题,主要在于:

  1. 旋转角度为 θ θ θ和 θ + 2 k π θ+2kπ θ+2kπ的结果是一样的;
  2. ( n , θ ) (n,θ) (n,θ)和 ( − n , − θ ) (-n,-θ) (−n,−θ)的结果是一样的;

对于非常小的旋转,旋转矩阵 R R R和罗德里格斯向量 q q q存在线性关系,推导如下:
R ( q ) = R ( n , θ ) = I + ( 1 − c o s ( θ ) ) ∗ N 2 + s i n ( θ ) ∗ N ≈ I + s i n ( θ ) ∗ N ≈ I + θ ∗ N = I + q ∧ = [ 1 − q z q y q z 1 − q x − q y q x 1 ] \begin{aligned} \ R(q) & = R(n,θ)\\ & = I + (1- cos(θ))*N^2 +sin(θ) *N \\ & ≈ I + sin(θ) *N \\ & ≈ I +θ *N\\ & = I +q^∧ \\ & = \left[\begin{matrix} 1 & -q_z &q_y\\ q_z & 1 & -q_x\\ -q_y & q_x & 1 \end{matrix}\right] \end{aligned}  R(q)​=R(n,θ)=I+(1−cos(θ))∗N2+sin(θ)∗N≈I+sin(θ)∗N≈I+θ∗N=I+q∧=⎣ ⎡​1qz​−qy​​−qz​1qx​​qy​−qx​1​⎦ ⎤​​

四、极限方式推导

一次性绕旋转轴 n n n旋转角度 θ θ θ,等价于绕旋转轴 n n n旋转 k k k次,每次旋转角度为 θ / k θ/k θ/k。
因此:
R ( n , θ ) = lim ⁡ k → + ∞ ( I + 1 k ∗ θ ∗ N ) k = e θ ∗ N R(n,θ) = \lim_{k\rightarrow+\infty}(I + \frac{1}{k}*θ*N)^k=e^{θ*N} R(n,θ)=k→+∞lim​(I+k1​∗θ∗N)k=eθ∗N
而:
e θ ∗ N = I + ( θ ∗ N ) + ( θ ∗ N ) 2 2 ! + ( θ ∗ N ) 3 3 ! + ⋯ e^{θ*N}=I + (θ*N) + \frac{(θ*N)^2}{2!}+ \frac{(θ*N)^3}{3!}+⋯ eθ∗N=I+(θ∗N)+2!(θ∗N)2​+3!(θ∗N)3​+⋯
由于:
N k + 2 = − N k , k > 0 N^{k+2}=-N^k, k>0 Nk+2=−Nk,k>0
所以上式可简化为:
e θ ∗ N = I + ( θ − ( θ ) 3 3 ! + ⋯ ) ∗ N + ( ( θ ) 2 2 ! − ( θ ) 4 4 ! + ⋯ ) ∗ N 2 = I + s i n ( θ ) ∗ N + ( 1 − c o s ( θ ) ) ∗ N 2 ] \begin{aligned}e^{θ*N} &= I + (θ - \frac{(θ)^3}{3!} + ⋯)* N + (\frac{(θ)^2}{2!} - \frac{(θ)^4}{4!} + ⋯)* N^2 \\ &= I + sin(θ) * N + (1 - cos(θ)) * N^2] \end{aligned} eθ∗N​=I+(θ−3!(θ)3​+⋯)∗N+(2!(θ)2​−4!(θ)4​+⋯)∗N2=I+sin(θ)∗N+(1−cos(θ))∗N2]​

罗德里格斯公式及其推导相关推荐

  1. 罗德里格斯公式附图推导,理解

    罗德里格斯公式推导 一,基础准备 1. 旋转矩阵 2. 旋转向量 3. 向量叉积 二,公式推导 1.符号说明与图例 2. 公式推导 三,公式理解和深入 四,极限的方式简洁推导罗德里格斯公式 罗德里格斯 ...

  2. 《视觉SLAM十四讲》-第三章第3节公式推导-旋转向量-欧拉角--罗德里格斯公式详细推导

  3. 关于罗德里格斯公式(Rodrigues‘sFormula)的详细推导过程

    关于罗德里格斯公式[Rodrigues'sFormula]的详细推导过程 1 旋转向量 2 罗德里格斯公式 2.1 罗德里格斯公式定义 2.2 罗德里格斯公式推导 3 旋转矩阵到旋转向量的转换 1 旋 ...

  4. 旋转矩阵罗德里格斯公式(Rodriguez formula)的理解证明

    一.罗德里格斯公式的表达式 罗德里格斯公式(Rodriguez formula)是计算机视觉中的一大经典公式,在描述相机位姿的过程中很常用,其形式如下: 二.对罗德里格斯公式的理解 我们假设v⃗\ve ...

  5. 罗德里格斯公式 理解、推导

      罗德里格斯公式(Rodriguez formula)是计算机视觉中的一大经典公式,在描述相机位姿的过程中很常用.公式: R = I + s i n ( θ ) K + ( 1 − c o s ( ...

  6. 罗德里格斯公式(Rodrigues‘ rotation formula)推导

    罗德里格斯公式(Rodrigues' rotation formula)推导 向量形式 如图所示,三维空间中的一个矢量 v \bold v v绕轴 k \bold k k旋转 θ \theta θ角度 ...

  7. 视觉SLAM十四讲--罗德里格斯公式(Rodrigues’s Formula)推导

    前言 之前看了高博的<视觉SLAM十四讲>,里面有一段关于罗德里格斯公式,但是高博没有给出具体推导.然后我查了很多博主,都没有给出怎么推到 R = cos ⁡ θ I + ( 1 − co ...

  8. 罗德里格斯公式Rodrigues‘Rotation Formula推导

    原文链接 :https://zhuanlan.zhihu.com/p/113299607 罗德里格斯公式是计算三维空间中,一个向量绕旋转轴旋转一定角度后得到一个新的向量的计算公式,而且可以改写为矩阵的 ...

  9. 三维空间刚体运动2:旋转向量与罗德里格斯公式(最详细推导)

    三维空间刚体运动2:旋转向量与罗德里格斯公式(最详推导) 1.旋转向量定义 2.罗德里格斯公式-向量转换为矩阵 2.1 定义 2.2 推导 2.2.1 推导一 2.2.2 推导二 2.2.3 推导向量 ...

最新文章

  1. SAP打印机原理、打印配置及打印操作
  2. 【学习笔记】网络层——网络层设备、移动IP、IP组播
  3. python 问题自动匹配解决方案_最好的 Python IDE,你们推荐使用哪一个?
  4. 第13届 广东工业大学ACM程序设计大赛 C题 平分游戏
  5. 一个虚拟服务器装多个网站,一台虚拟主机 如何放多个网站
  6. 对于根目录磁盘满的了问题
  7. 1.1 计算机网络组成与分类
  8. 从零开始学习Android开发-Android概览
  9. MySQL数据库约束(非空,唯一,默认,主键,外键约束)
  10. C语言关于素数个数的求法
  11. 史上MySQL安装配置教程最细,一步一图解
  12. 虚拟机安装Windows7系统(亲测超详细)
  13. 京东分布式数据库系统演进之路
  14. STM32 SWD 只能下载一次的问题
  15. 计算机技术与软件业余资格测验证书,在大学能否领到网络工程师资格证?网络工程师考核..._出版资格_帮考网...
  16. 简述华为的鸿蒙操作系统的结构,华为鸿蒙操作系统今日重磅发布
  17. sql中日期函数的用法
  18. post man 基本操作
  19. hadoop一些常用命令
  20. 抽样技术--不等概率抽样

热门文章

  1. rman开启备份优化对备份归档的影响
  2. Python实现OSM地图数据解析——Pydriosm
  3. Mac M1 搭建 React Native 环境
  4. 2022年Redis最新面试题第3篇 - Redis事务
  5. RabbitMQ镜像集群与ShovelFederation跨集群数据同步
  6. Sersync和lsyncd实现数据实时同步
  7. 辗转相除法求最大公约数的原理
  8. 研究生发明绘墙机器人_飞檐走壁!让白墙变画布的神奇机器人
  9. kswapd0 引起 CPU高占用解决方法
  10. JAVAWEB复习知识六:根据Bootstrap框架做网站首页