精华内容
下载资源
问答
  • 刚体的姿态运动学使用此功能库块进行模拟。 该模块用于模拟(学术)目的,其中提供了根据修正罗德里格斯参数 (MRP) 的姿态时间历史。 有关该主题的参考,请参见 [1]。 该库块是目前正在开发的用于仿真航天器姿态...
  • rodrigues公式

    2011-11-25 14:13:05
    根据rodrigues公式求3×3 旋转矩阵,用于双目标定,R = rodrigues(om)
  • 罗德里格斯公式是计算三维空间中,一个向量绕旋转轴旋转一定角度后得到一个新的向量的计算公式,而且可以改写为矩阵的形式。 我对这个公式的推导过程进行了简单的整理,话不多说,上图: 这是一个简单的草图,向量v...

    原文链接 :https://zhuanlan.zhihu.com/p/113299607

    罗德里格斯公式是计算三维空间中,一个向量绕旋转轴旋转一定角度后得到一个新的向量的计算公式,而且可以改写为矩阵的形式。

    我对这个公式的推导过程进行了简单的整理,话不多说,上图:
    在这里插入图片描述

    这是一个简单的草图,向量v绕k轴旋转后得到新的向量vrot,求该向量的公式。下面是计算过程:

    在这里插入图片描述

    对图的部分放大 得到下图

    在这里插入图片描述

    最后的公式:

    在这里插入图片描述

    将得到的结果变为矩阵的形式:

    在这里插入图片描述
    如有侵权,联系删文。

    展开全文
  •  对于向量的三维旋转问题,给定旋转轴和旋转角度,用罗德里格斯(Rodrigues)旋转公式可以得出旋转后的向量。另外,罗德里格斯旋转公式可以用旋转矩阵表示,即将三维旋转的轴-角(axis-angle)表示转变为旋转矩阵...

    本文综合了几个相关的维基百科,加了点自己的理解,从比较基础的向量投影和叉积讲起,推导出罗德里格斯旋转公式。公式比较繁杂,如有错误,欢迎评论区指出。

      对于向量的三维旋转问题,给定旋转轴和旋转角度,用罗德里格斯(Rodrigues)旋转公式可以得出旋转后的向量。另外,罗德里格斯旋转公式可以用旋转矩阵表示,即将三维旋转的轴-角(axis-angle)表示转变为旋转矩阵表示。

    向量投影(Vector projection)

      向量a在非零向量b上的向量投影指的是a在平行于向量b的直线上的正交投影。结果是一个平行于b的向量,定义为𝐚1=𝑎1𝐛̂ a1=a1b^,其中,𝑎1a1是一个标量,称为ab上的标量投影,𝐛̂ b^是与b同向的单位向量。𝑎1=‖𝐚‖cos𝜃=𝐚⋅𝐛̂ =𝐚⋅𝐛‖𝐛‖a1=‖a‖cos⁡θ=a⋅b^=a⋅b‖b‖,其中⋅⋅表示点积(又称标量积),‖𝐚‖‖a‖表示a的长度,𝜃θ表示ab的夹角。标量投影有正负,正负号与夹角𝜃θ有关。

      有了向量投影𝐚1a1,向量a可以表示为𝐚=𝐚1+𝐚2a=a1+a2,其中𝐚2a2称为a from b的vector rejection(没找到比较官方的翻译),也即a向正交于b的超平面的正交投影,𝐚2=𝐚−𝐚1=𝐚−(‖𝐚‖cos𝜃)𝐛̂ a2=a−a1=a−(‖a‖cos⁡θ)b^。下图比较清晰地表示出𝐚a、𝐚1a1、𝐚2a2的关系。

    Projection of **a** on **b**, rejection of **a** from **b**

    图1 Projection of a on b(a1), rejection of a from b(a2)

      当90∘<𝜃≤180∘90∘<θ≤180∘时,向量投影示意图如图2所示:

    大于90°时的向量投影示意图

    图2 大于90°时的向量投影示意图,此时a1与b的方向相反

    记号

      向量ab上的向量投影用加粗的𝐚1a1表示,标量投影用不加粗的𝑎1a1。有时向量投影和vector rejection分别用𝐚∥𝐛a∥b和𝐚⊥𝐛a⊥b表示。

    ab表示

      当𝜃θ未知时,可通过ab计算得出,cos𝜃=𝐚⋅𝐛‖𝐚‖‖𝐛‖cos⁡θ=a⋅b‖a‖‖b‖,从而标量投影、向量投影和vector rejection可以分别表示如下:

    • 标量投影:

     

    𝑎1=‖𝐚‖cos𝜃=‖𝐚‖𝐚⋅𝐛‖𝐚‖‖𝐛‖=𝐚⋅𝐛‖𝐛‖(1)(1)a1=‖a‖cos⁡θ=‖a‖a⋅b‖a‖‖b‖=a⋅b‖b‖

    • 向量投影:

     

    𝐚1=𝑎1𝐛̂ =𝐚⋅𝐛‖𝐛‖𝐛‖𝐛‖=(𝐚⋅𝐛̂ )𝐛̂ =𝐚⋅𝐛𝐛⋅𝐛𝐛(2)(2)a1=a1b^=a⋅b‖b‖b‖b‖=(a⋅b^)b^=a⋅bb⋅bb

    • vector rejection:

     

    𝐚2=𝐚−𝐚1=𝐚−𝐚⋅𝐛𝐛⋅𝐛𝐛(3)(3)a2=a−a1=a−a⋅bb⋅bb

    叉积

    定义

      叉积(又称向量积)是三维空间(ℝ3R3)向量的二元操作,用符号××表示,给定两个线性独立的向量ab,叉积𝐚×𝐛a×b的结果是一个向量,这个向量与ab都正交,也就是正交于ab所在的平面。为什么要强调线性独立呢,因为非线性独立的两个向量(同向或反向)的叉积为00。

      叉积定义为:

     

    𝐚×𝐛=‖𝐚‖‖𝐛‖sin(𝜃)𝐧(4)(4)a×b=‖a‖‖b‖sin⁡(θ)n

    其中,𝜃θ表示ab的夹角,0∘≤𝜃≤180∘0∘≤θ≤180∘,𝐧n正交于ab所在的平面,方向通常由右手法则确定,如下图所示: 

    通过右手法则确定叉积方向

    图3 通过右手法则确定叉积方向

    性质

      右手法则决定了叉积不符合交换律,而符合反交换律,即𝐚×𝐛=−𝐛×𝐚a×b=−b×a,如图4所示:

    反交换律

    图4 反交换律

      由公式也可以看出当ab的不线性独立时,即夹角为0∘0∘或180∘180∘时,叉积为零向量00。叉积随夹角𝜃θ的变化如图5所示。

    叉积随夹角变化示意图

    图5 叉积随夹角变化示意图

      另外,叉积符合分配律,即𝐚×(𝐛+𝐜)=𝐚×𝐛+𝐚×𝐜a×(b+c)=a×b+a×c。如图6所示,左图向量bc都被分解为vector projection和vector rejection两部分,右图则解释了分配律成立的原因,看图时要注意图中的平行四边形和正方形都表示了相等的关系。

    叉积分配律示意图

    图6 叉积分配律示意图

    坐标表示

      考虑右手法则定义的标准三维坐标系,三个坐标轴𝐢i、𝐣j、𝐤k如图7所示,并满足以下等式关系:

     

    𝐢×𝐣=𝐤𝐣×𝐤=𝐢𝐤×𝐢=𝐣i×j=kj×k=ik×i=j

     

    同样,由叉积的反交换律可得下面三个等式关系:

     

    𝐣×𝐢=−𝐤𝐤×𝐣=−𝐢𝐢×𝐤=−𝐣j×i=−kk×j=−ii×k=−j

     

    由平行向量的叉积为零向量可得:𝐢×𝐢=𝐣×𝐣=𝐤×𝐤=0i×i=j×j=k×k=0。
      由图7也可得,任意一个三维向量都可以表示为三个基向量的线性组合,例如:

     

    𝐚=𝑎1𝐢+𝑎2𝐣+𝑎3𝐤𝐛=𝑏1𝐢+𝑏2𝐣+𝑏3𝐤a=a1i+a2j+a3kb=b1i+b2j+b3k

     

    三维坐标系基向量与向量a的表示

    图7 三维坐标系基向量与向量a的表示

      进而,可以用坐标表示叉积运算如下:

     

    𝐚×𝐛=(𝑎1𝐢+𝑎2𝐣+𝑎3𝐤)×(𝑏1𝐢+𝑏2𝐣+𝑏3𝐤)=(𝑎2𝑏3−𝑎3𝑏2)𝐢+(𝑎3𝑏1−𝑎1𝑏3)𝐣+(𝑎1𝑏2−𝑎2𝑏1)𝐤=∣∣∣∣∣𝐢𝑎1𝑏1𝐣𝑎2𝑏2𝐤𝑎3𝑏3∣∣∣∣∣(5)(5)a×b=(a1i+a2j+a3k)×(b1i+b2j+b3k)=(a2b3−a3b2)i+(a3b1−a1b3)j+(a1b2−a2b1)k=|ijka1a2a3b1b2b3|

    上式中,将括号展开分别进行叉积推导出第二个等号,而第三个等号则可通过行列式计算得出。
      进一步,可将叉积表示为矩阵与向量相乘的形式,由于𝐚×𝐛=(𝑎2𝑏3−𝑎3𝑏2,𝑎3𝑏1−𝑎1𝑏3,𝑎1𝑏2−𝑎2𝑏1)a×b=(a2b3−a3b2,a3b1−a1b3,a1b2−a2b1),则叉积可表示为:

     

    𝐚×𝐛=[𝐚]×𝐛=⎡⎣⎢⎢0𝑎3−𝑎2−𝑎30𝑎1𝑎2−𝑎10⎤⎦⎥⎥⎡⎣⎢⎢𝑏1𝑏2𝑏3⎤⎦⎥⎥=[𝐛]𝑇×𝐚=⎡⎣⎢⎢0−𝑏3𝑏2𝑏30−𝑏1−𝑏2𝑏10⎤⎦⎥⎥⎡⎣⎢⎢𝑎1𝑎2𝑎3⎤⎦⎥⎥(6)(6)a×b=[a]×b=[0−a3a2a30−a1−a2a10][b1b2b3]=[b]×Ta=[0b3−b2−b30b1b2−b10][a1a2a3]

    其中,[𝐚]×[a]×(slam14讲书上记为𝐚∧a∧)表示由向量𝐚a得到的反对称矩阵,定义为:

     

    [𝐚]×=⎡⎣⎢⎢0𝑎3−𝑎2−𝑎30𝑎1𝑎2−𝑎10⎤⎦⎥⎥(7)(7)[a]×=[0−a3a2a30−a1−a2a10]

    通过该反对称矩阵的定义可以将叉积表示为矩阵与向量的乘法。

    罗德里格斯旋转公式

      考虑𝐯∈ℝ3v∈R3的三维旋转问题,旋转轴𝐤k是单位向量,旋转角为𝜃θ,按照右手法则(即逆时针)旋转。则可通过罗德里格斯旋转公式得出旋转后的向量𝐯𝑟𝑜𝑡vrot为:

     

    𝐯𝑟𝑜𝑡=cos𝜃𝐯+(1−cos𝜃)(𝐤⋅𝐯)𝐤+sin𝜃𝐤×𝐯(8)(8)vrot=cos⁡θv+(1−cos⁡θ)(k⋅v)k+sin⁡θk×v

    推导过程

      由上文中向量投影部分的知识我们知道,一个向量𝐯v可以分解为平行于𝐤k的分量𝐯∥v∥和正交于𝐤k的分量𝐯⊥v⊥:

     

    𝐯=𝐯∥+𝐯⊥(9)(9)v=v∥+v⊥

    向量的分解图示

    图8 向量的分解图示

    如图8所示,因为𝐤k为单位向量,由向量投影部分知识可得

     

    𝐯∥=(𝐯⋅𝐤)𝐤(10)(10)v∥=(v⋅k)k

     

    𝐯⊥=𝐯−𝐯∥=𝐯−(𝐤⋅𝐯)𝐤=−𝐤×(𝐤×𝐯)(11)(11)v⊥=v−v∥=v−(k⋅v)k=−k×(k×v)

    式(11)用于后面推导维基百科中罗德里格斯旋转公式的矩阵形式,其中,最后一个等号的推导如下:

      回顾叉积的知识,𝐤×𝐯=𝐤×(𝐯∥+𝐯⊥)=0+𝐤×𝐯⊥=𝐤×𝐯⊥k×v=k×(v∥+v⊥)=0+k×v⊥=k×v⊥,𝐤×𝐯k×v可以看做将𝐯⊥v⊥以𝐤k为旋转轴逆时针旋转了90∘90∘(可参考图8理解)。正如图9所示,𝐯v分解为𝐯∥v∥和𝐯⊥v⊥,用右手法则不难确定出𝐤×𝐯k×v的方向,进而不难发现,𝐤×(𝐤×𝐯)k×(k×v)可以看做将𝐯⊥v⊥以𝐤k为旋转轴逆时针旋转了180∘180∘,图9中的(椭)圆正反映了𝐤×(𝐤×𝐯)k×(k×v)、𝐤×𝐯k×v、𝐯⊥v⊥三者“大小相等”的关系。最终,可知𝐯⊥=−𝐤×(𝐤×𝐯)v⊥=−k×(k×v)。
      

    罗德里格斯旋转公式几何图示

    图9 罗德里格斯旋转公式几何图示

      从图8还可以看出,v的平行分量𝐯∥v∥不会因为旋转而改变,旋转后的向量𝐯𝑟𝑜𝑡vrot的平行分量依然等于𝐯∥v∥,即𝐯∥𝑟𝑜𝑡=𝐯∥v∥rot=v∥。
      而v的正交分量𝐯⊥v⊥在旋转过程中大小不变,方向会发生变化,即

     

    |𝐯⊥𝑟𝑜𝑡|=|𝐯⊥|𝐯⊥𝑟𝑜𝑡=cos𝜃𝐯⊥+sin𝜃𝐤×𝐯⊥=cos𝜃𝐯⊥+sin𝜃𝐤×𝐯(12)(12)|v⊥rot|=|v⊥|v⊥rot=cos⁡θv⊥+sin⁡θk×v⊥=cos⁡θv⊥+sin⁡θk×v

    式(12)中第2个等式通过图9可以得出,将圆看做𝑥𝑂𝑦xOy坐标系平面,𝐯⊥v⊥所在的直线看做𝑥x轴,𝐤×𝐯k×v所在的直线看做𝑦y轴,结合三角函数,很容易用𝐯⊥v⊥和𝐤×𝐯k×v表示出𝐯⊥𝑟𝑜𝑡v⊥rot。

      到这已经得出罗德里格斯公式了:

     

    𝐯𝑟𝑜𝑡=𝐯∥𝑟𝑜𝑡+𝐯⊥𝑟𝑜𝑡=𝐯∥+cos𝜃𝐯⊥+sin𝜃𝐤×𝐯=𝐯∥+cos𝜃(𝐯−𝐯∥)+sin𝜃𝐤×𝐯=cos𝜃𝐯+(1−cos𝜃)𝐯∥+sin𝜃𝐤×𝐯=cos𝜃𝐯+(1−cos𝜃)(𝐤⋅𝐯)𝐤+sin𝜃𝐤×𝐯(13)(13)vrot=v∥rot+v⊥rot=v∥+cos⁡θv⊥+sin⁡θk×v=v∥+cos⁡θ(v−v∥)+sin⁡θk×v=cos⁡θv+(1−cos⁡θ)v∥+sin⁡θk×v=cos⁡θv+(1−cos⁡θ)(k⋅v)k+sin⁡θk×v

    矩阵形式

      在叉积部分提到过叉积可以表示为矩阵乘向量的形式,类似地,罗德里格斯旋转公式可以表示为旋转矩阵乘以向量的形式,𝐯𝑟𝑜𝑡=𝐑𝐯vrot=Rv,其中𝐑R是旋转矩阵。在slam14讲[4][4]中的表示如下:

     

    𝐑=cos𝜃𝐈+(1−cos𝜃)𝐤𝐤𝑇+sin𝜃𝐤∧(14)(14)R=cos⁡θI+(1−cos⁡θ)kkT+sin⁡θk∧

    其中,𝐈I表示单位矩阵,𝐤k表示旋转向量(书中用𝐧n表示旋转向量),𝐤∧k∧表示由𝐤k得到的反对称矩阵。从式(13)不难看出上式,另外,结合式(13)还可以得到下面这个式子:

     

    𝐯𝑟𝑜𝑡=𝐯∥𝑟𝑜𝑡+𝐯⊥𝑟𝑜𝑡=𝐯∥+cos𝜃𝐯⊥+sin𝜃𝐤×𝐯=𝐯−𝐯⊥+cos𝜃𝐯⊥+sin𝜃𝐤×𝐯=𝐯+(sin𝜃)𝐤×𝐯+(cos𝜃−1)×𝐯⊥=𝐯+(sin𝜃)𝐤×𝐯+(1−cos𝜃)𝐤×(𝐤×𝐯)(15)(15)vrot=v∥rot+v⊥rot=v∥+cos⁡θv⊥+sin⁡θk×v=v−v⊥+cos⁡θv⊥+sin⁡θk×v=v+(sin⁡θ)k×v+(cos⁡θ−1)×v⊥=v+(sin⁡θ)k×v+(1−cos⁡θ)k×(k×v)

    上式最后一个等号的推导用到了式(11)。从而,得出这个维基百科上的矩阵表示:

     

    𝐯𝑟𝑜𝑡=𝐑𝐯=𝐯+(sin𝜃)𝐊𝐯+(1−cos𝜃)𝐊2𝐯(16)(16)vrot=Rv=v+(sin⁡θ)Kv+(1−cos⁡θ)K2v

    其中,𝐑=𝐈+(sin𝜃)𝐊+(1−cos𝜃)𝐊2R=I+(sin⁡θ)K+(1−cos⁡θ)K2,𝐊K表示由旋转向量𝐤k生成的反对称矩阵。

    展开全文
  • 旋转矩阵,四元数(quaternion),Rodrigues向量 四元数转换成旋转矩阵 四元数 q=(cos⁡θ2,sin⁡θ2n^T)T=(q0,q1,q2,q3)T\mathbf{q} = (\cos\frac{\theta}{2}, \sin\frac{\theta}{2} \hat{\mathbf{n}}^T)^T = (q_0, q...

    旋转矩阵,四元数(quaternion),Rodrigues向量

    四元数转换成旋转矩阵

    四元数 q = ( cos ⁡ θ 2 , sin ⁡ θ 2 n ^ T ) T = ( q 0 , q 1 , q 2 , q 3 ) T \mathbf{q} = (\cos\frac{\theta}{2}, \sin\frac{\theta}{2} \hat{\mathbf{n}}^T)^T = (q_0, q_1, q_2, q_3)^T q=(cos2θ,sin2θn^T)T=(q0,q1,q2,q3)T
    对应旋转矩阵
    R = [ q 0 2 + q 1 2 − q 2 2 − q 3 2 2 ( q 1 q 2 − q 0 q 3 ) 2 ( q 1 q 3 + q 0 q 2 ) 2 ( q 1 q 2 + q 0 q 3 ) q 0 2 − q 1 2 + q 2 2 − q 3 2 2 ( q 2 q 3 − q 0 q 1 ) 2 ( q 1 q 3 − q 0 q 2 ) 2 ( q 2 q 3 + q 0 q 1 ) q 0 2 − q 1 2 − q 2 2 + q 3 2 ] \mathbf{R} = \begin{bmatrix} q_0^2+q_1^2-q_2^2-q_3^2 & 2(q_1q_2-q_0q_3) & 2(q_1q_3+q_0q_2)\\ 2(q_1q_2+q_0q_3) & q_0^2-q_1^2+q_2^2-q_3^2 & 2(q_2q_3-q_0q_1)\\ 2(q_1q_3-q_0q_2) & 2(q_2q_3+q_0q_1) & q_0^2-q_1^2-q_2^2+q_3^2\\ \end{bmatrix} R=q02+q12q22q322(q1q2+q0q3)2(q1q3q0q2)2(q1q2q0q3)q02q12+q22q322(q2q3+q0q1)2(q1q3+q0q2)2(q2q3q0q1)q02q12q22+q32
    例如
    如果 x ′ = R x \mathbf{x}'=\mathbf{Rx} x=Rx,则
    ( 1 x ′ ) = q ( 1 x ) q ∗ \begin{pmatrix} 1\\ \mathbf{x}'\\ \end{pmatrix} =\mathbf{q} \begin{pmatrix} 1\\ \mathbf{x}\\ \end{pmatrix}\mathbf{q} ^* (1x)=q(1x)q

    四元数转换为Rodrigues向量

    Rodrigues向量 r = ( q 1 , q 2 , q 3 ) T / q 0 = tan ⁡ θ 2 n ^ \mathbf{r} = (q_1,q_2,q_3)^T/q_0 = \tan\frac{\theta}{2}\hat{\mathbf{n}} r=(q1,q2,q3)T/q0=tan2θn^
    先旋转 r 1 \mathbf{r}_1 r1,再旋转 r 2 \mathbf{r}_2 r2,则等效的旋转为
    r = ( r 2 ; r 1 ) = r 2 + r 1 + r 2 × r 1 1 − r 2 ⋅ r 1 \mathbf{r}=(\mathbf{r}_2;\mathbf{r}_1)=\dfrac{\mathbf{r}_2+\mathbf{r}_1+\mathbf{r}_2\times\mathbf{r}_1}{1-\mathbf{r}_2\cdot\mathbf{r}_1} r=(r2;r1)=1r2r1r2+r1+r2×r1
    证明:
    因为
    q 2 q 1 = ( cos ⁡ θ 2 2 cos ⁡ θ 1 2 − sin ⁡ θ 2 2 sin ⁡ θ 1 2 n ^ 2 ⋅ n ^ 1 cos ⁡ θ 2 2 sin ⁡ θ 1 2 n ^ 1 + cos ⁡ θ 1 2 sin ⁡ θ 2 2 n ^ 2 + sin ⁡ θ 2 2 sin ⁡ θ 1 2 n ^ 2 × n ^ 1 ) \mathbf{q}_2\mathbf{q}_1= \begin{pmatrix} \cos\frac{\theta_2}{2}\cos\frac{\theta_1}{2}-\sin\frac{\theta_2}{2}\sin\frac{\theta_1}{2}\hat{\mathbf{n}}_2\cdot\hat{\mathbf{n}}_1\\ \cos\frac{\theta_2}{2}\sin\frac{\theta_1}{2}\hat{\mathbf{n}}_1+\cos\frac{\theta_1}{2}\sin\frac{\theta_2}{2}\hat{\mathbf{n}}_2+\sin\frac{\theta_2}{2}\sin\frac{\theta_1}{2}\hat{\mathbf{n}}_2\times\hat{\mathbf{n}}_1\\ \end{pmatrix} q2q1=(cos2θ2cos2θ1sin2θ2sin2θ1n^2n^1cos2θ2sin2θ1n^1+cos2θ1sin2θ2n^2+sin2θ2sin2θ1n^2×n^1)
    所以
    ( r 2 ; r 1 ) = tan ⁡ θ 1 2 n ^ 1 + tan ⁡ θ 2 2 n ^ 2 + tan ⁡ θ 2 2 tan ⁡ θ 1 2 n ^ 2 × n ^ 1 1 − tan ⁡ θ 2 2 tan ⁡ θ 1 2 n ^ 2 ⋅ n ^ 1 = r 2 + r 1 + r 2 × r 1 1 − r 2 ⋅ r 1 (\mathbf{r}_2;\mathbf{r}_1)=\dfrac{\tan\frac{\theta_1}{2}\hat{\mathbf{n}}_1+\tan\frac{\theta_2}{2}\hat{\mathbf{n}}_2+\tan\frac{\theta_2}{2}\tan\frac{\theta_1}{2}\hat{\mathbf{n}}_2\times\hat{\mathbf{n}}_1}{1-\tan\frac{\theta_2}{2}\tan\frac{\theta_1}{2}\hat{\mathbf{n}}_2\cdot\hat{\mathbf{n}}_1}=\dfrac{\mathbf{r}_2+\mathbf{r}_1+\mathbf{r}_2\times\mathbf{r}_1}{1-\mathbf{r}_2\cdot\mathbf{r}_1} (r2;r1)=1tan2θ2tan2θ1n^2n^1tan2θ1n^1+tan2θ2n^2+tan2θ2tan2θ1n^2×n^1=1r2r1r2+r1+r2×r1

    展开全文
  • OpenCV Rodrigues函数用法

    2020-12-15 16:50:05
    OpenCV Rodrigues函数用法 功能:将旋转矩阵(向量)转换成旋转向量(矩阵) 原理: (向量→\rightarrow→矩阵) 为三维向量,该向量定义了θ\thetaθ,即向量r\bm{r}r的旋转角和长度。 (矩阵→\rightarrow→...

    OpenCV Rodrigues函数用法

    功能:将旋转矩阵(向量)转换成旋转向量(矩阵)

    原理:
    (向量 → \rightarrow 矩阵)
    在这里插入图片描述

    在这里插入图片描述

    为三维向量,该向量定义了 θ \theta θ,即向量 r \bm{r} r的旋转角和长度。

    (矩阵 → \rightarrow 向量)
    在这里插入图片描述
    用法:
    在这里插入图片描述
    输入为向量时,输出为矩阵;
    输入为矩阵时,输出为向量。

    Learning OpenCV 3
    by Adrian Kaehler and Gary Bradski

    展开全文
  • Rodrigues 公式推导

    2021-05-29 17:15:42
    Rodrigues 公式推导 分解v\mathbf{v}v向量 分解旋转后的向量vrot\mathbf{v_{rot}}vrot​ 综合化简 从旋转矩阵得到旋转轴和旋转角 求旋转角 求旋转轴 Rodrigues 公式推导 rodrigues公式计算旋转轴 k\mathbf{k}...
  • 理解:向量旋转公式最早由 Rodrigues(罗德里格斯) 提出,用一个三维向量来表示三维旋转变换,该向量的方向是旋转轴,其模是旋转角度。 openCV函数实现为Rodrigues(Vec3, Mat33)。 看上面的解释输入向量则返回矩阵...
  • 罗德里格斯旋转公式及其推导罗德里格斯(Rodrigues)旋转公式及其推导三维空间旋转矩阵罗德里格斯旋转方程(Rodrigues)*叉积矩阵**拉格朗日公式(向量三重积展开)**罗德里格斯旋转方程推导* 罗德里格斯(Rodrigues...
  • Rodrigues旋转公式

    千次阅读 2019-02-28 19:53:05
    物体在三维下的旋转可以用旋转角度来表示,一般情况下可分为两种, 1 围绕x, y, z主坐标轴各自旋转yaw, pitch, ...那么正常来说,这两种表示可以互相转换,转换方式依据的Rodrigues旋转公式。 PS: opencv-py cv2...
  • Rodrigues’ Formula Derive eω^t=E+ω^t+(ω^t)22!+(ω^t)33!+...(1) e^{\hat\omega t}=E+\hat\omega t+\frac{(\hat\omega t)^2}{2!}+\frac{(\hat\omega t)^3}{3!} +... \tag{1} eω^t=E+ω^t+2!(ω^t)2​+3!(ω^t...
  • Rodrigues R o d r i g u e s (罗德里格斯)公式描述的是:空间内的任意一个向量 v \textbf{v} v ,绕指定的旋转轴 k \textbf{k} k 旋转 θ \theta θ 角度,得到空间向量 v θ \textbf{v}^{\theta} v θ 的过程。 ...
  • 参考:1—https://openhome.cc/Gossip/WebGL/Rodrigues.html(比较好的理解流程) 2—https://www.cnblogs.com/wtyuan/p/12324495.html(推导出旋转矩阵R) 建议看原链接!! 具体如下: <p><font ...
  • rodrigues_vector_rotation - 围绕另一个旋转 3D 矢量按照右手法则,通过 theta_rad 围绕(单位)向量 k 旋转向量 v。 矢量 k 将在内部成为单位矢量。 所以只要它大于 0,它的长度就无关紧要。 这个函数是向量化的:...
  • 花老湿OpenCV学习:Rodrigues()的使用

    千次阅读 2019-06-05 20:08:44
    Rodrigues()可以将旋转向量转化为旋转矩阵,也可以将旋转矩阵转化为旋转向量。 旋转向量指定了旋转轴,同时它的模长也指定了旋转角度. 接下来进行旋转向量到旋转矩阵的转换: #include <iostream> #...
  • Rodrigues公式推导

    2020-02-05 20:55:02
    最近在看立体视觉的相关内容,在完成了双目相机的标定之后直接面临的一个问题就是关于图像校正(行对准),由于标定出来的R是按照om矩阵的形式出现的,所以需要预先使用罗德里格斯公式计算,于是就推导了一下公式。...
  • 旋转向量/旋转矩阵 Rodrigues变换

    千次阅读 2019-04-07 16:15:37
    在使用OpenCV3 stereoRectify()函数处理三维旋转问题时,需要使用旋转向量。通常对于相机的位姿旋转都是采用旋转矩阵的方式来描述的,一个...旋转向量与旋转矩阵可以通过罗德里格斯(Rodrigues)变换进行转换。 算...
  • MATLAB自定义函数Rodrigues

    千次阅读 2019-05-20 18:50:00
    The customized MATLAB function is to convert a rotation vector to a rotation matrix. ...function [rotation_matrix] = Rodrigues( rotation_vector ) % Convert a rotation vector to a rotation matr...
  • 罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化1 罗德里格斯公式推导2 cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化 1 罗德里格斯公式推导 参考:...
  • Rodrigues 转换旋转向量与旋转矩阵。 注:注意Rodrigues函数会改变mat的数值类型。 Rodrigues( const CvMat* src,CvMat* dst,CvMat* jacobian=0 ); src 输入的旋转向量(3x1或者1x3)或者旋转矩阵(3x3); dst ...
  • 由叉乘定义得: 所以旋转轴c(c1, c2, c3)为: 4.OpenCV实现Rodrigues变换的函数为 int cvRodrigues2( const CvMat* src, CvMat* dst, CvMat* jacobian=0 ); src为输入的旋转向量(3x1或者1x3)或者旋转矩阵(3x3)。...
  • 罗德里格斯(Rodrigues)变换

    千次阅读 2020-05-29 17:44:02
    cv::Rodrigues(pr_vec, pR_matrix); std::cout ; system("pause"); return 0; } 罗德里格斯公式(Rodriguez formula)是计算机视觉中的一大经典公式,在描述相机位姿的过程中很常用。公式: 在三维空间中,旋转矩阵...
  • 从旋转矢量到旋转矩阵的转换称为罗德里格斯公式,基于几何考虑推导如下
  • opencv Rodrigues函数调用问题

    千次阅读 2017-07-21 18:44:37
    是对的,这个函数作用之后,就要用double访问了,后面好不容易找到了Rodrigues函数的源码,在calibration.cpp中,看了仍然没搞明白,时间原因就没有细究了,有时间再回来看看~ 所以要注意Rodrigues函数会改变mat...
  • 2.通过罗德里格斯(Rodrigues)法,将旋转向量变换为旋转矩阵,PS:旋转向量要满足:为单位向量,模为 θ(theta) 3.将点云左乘旋转矩阵:RX 下面的代码为旋转向量转旋转矩阵的代码,在点云坐标系转换中:A,B即为...
  • Rodrigues变换

    2020-01-19 17:24:30
    从今天开始,把自己学习OpenCV的心得记录下来,以系列的形式贴到博客中,以期交流与备查之用,笔记内容主要偏向于算法的理解。 处理三维旋转问题时,通常采用...旋转向量与旋转矩阵可以通过罗德里格斯(Rodrigues)...
  • rodrigues Numpy 实现

    2020-12-24 12:30:04
    import numpy as np r = np.array([[1.6674245], [0.50620349], [-0.4608852]]) # r = np.array([-2.100418,... 实际要自己通过R求解才能得到 k = (R-R.T)/2/np.sin(sita)*sita print(k) 结果和cv.rodrigues()是一样的

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,240
精华内容 896
关键字:

rodrigues