转载于:https://blog.csdn.net/qq_22235957/article/details/80461290

旋转向量中V的单位向量代表方向,模代表角度,通过罗德里格斯方程可以将旋转向量转换成旋转矩阵。

罗德里格斯旋转方程是从角度和向量计算出相应的旋转矩阵,这个旋转方程在很多方面有重要的应用,这里简要概述一下方程的推导过程。

主要参考资料是维基百科,其实基本上就是翻译一下,自己走一遍这个推导过程,这里把链接贴出来。

维基百科-罗德里格斯方程

推导过程:

整个推导过程都是围绕上面的图片开展的,进行向量推导。

首先,定义向量k是旋转轴的单位矢量,向量v是绕向量k旋转角度θ的任意向量(旋转方向遵循右手定则,图中逆时针)。

使用点乘和叉乘,向量v可以分解成与轴k平行和垂直的分量,

                                               (1-1)

与k平行的分量是

                                               (1-2)

向量v在k上的向量投影,垂直于k的分量为

     (1-3)

矢量k×v可以看作是v⊥绕k逆时针旋转90°的副本,所以它们的大小相等,但是方向是垂直的。同样,向量k×(k×v)是v⊥绕k逆时针旋转180°的副本,使得k×(k×v)和v⊥的大小相等,但方向相反(因此符号相反)。

矢量三重叉积链接了平行分量和垂直分量,参考公式为a×(b×c)=(a·c)b - (a·b)c ,对于给定任意三个向量a,b,c。

平行于轴的分量在旋转时不会改变幅度和方向,

                              (1-4)

根据以上分析,垂直分量在旋转时会改变方向,但保持其大小

                   (1-5)

并且由于k和v||是平行的,所以它们的叉积是零  k×v|| = 0,因此

   (1-6)

因此

            (1-7)

这种旋转是正确的,因为矢量v⊥和k×v具有相同的长度,并且k×v是v⊥围绕k逆时针旋转90°。使用三角函数正弦和余弦对v⊥和k×v进行适当乘积可以得到旋转的垂直分量。旋转分量的形式类似于笛卡尔基的2D平面极坐标(r,θ)中的径向向量

            (1-8)

其中ex,ey是它们指示方向上的单位向量。

现在完整的旋转矢量是

                       (1-9)

用上述结果中的v ||rot和v⊥rot的定义代替

                (1-10)

矩阵表示:

将v和k×v表示为列矩阵,叉积可以表示为矩阵乘积

(1-11)

令矩阵K表示单位向量k的“叉积矩阵"

                                       (1-12)

矩阵方程可以表示为

                                             (1-13)

对于任何向量v(实际上,矩阵K是具有特征值0和±i)。

迭代右边的叉乘相当于乘以左边的叉积矩阵,如下

                         (1-14)

而且,由于k是单位向量,所以k具有单位2-范数。 因此旋转公式(1-10)可以表示为

                 (1-15)

补充一下推导过程:(1-10)到(1-15)都点跨度比较大,其实中间经过了下面一个步骤,

再根据矢量三重叉积就可以获得(1-15)。

将v用紧凑表达式表达

                                                                            (1-16)

最后获得罗德里格斯旋转方程:

                                  (1-17)

罗德里格斯(Rodrigues)旋转向量转旋转矩阵相关推荐

  1. python 实现罗德里格斯公式Rodrigues 旋转向量到旋转矩阵转化

    罗德里格斯公式Rodrigues: 代码: import numpy as npdef rodrigues_rotation(r, theta):# n旋转轴[3x1]# theta为旋转角度# 旋转 ...

  2. 罗德里格斯公式推导(轴角与旋转矩阵的关系)以及四元数与旋转向量、旋转矩阵、欧拉角之间的转换关系

    罗德里格斯公式推导(轴角与旋转矩阵的关系) 意义:罗德里格斯公式表示旋转向量到旋转矩阵之间爱你的转换关系 旋转向量:一个向量,方向与旋转轴一致,长度等于旋转角度 空间中任意旋转都可以用一个旋转轴和一个 ...

  3. 方向向量转欧拉角_【姿态表示】旋转向量、旋转矩阵、欧拉角、四元数

    1. 旋转矩阵与旋转向量旋转矩阵(Rotation Matrix)用 9 个量描述旋转的3个自由度,有冗余: 9 个量是有约束的:必须是正交矩阵,且行列式为 1 旋转向量(Rotation Vecto ...

  4. 旋转向量与旋转矩阵的相互转化

    公式 1. 旋转向量求解旋转矩阵 当刚体在三维空间中运动时,如果已知旋转向量,根据罗德里格斯公式是比较容易求得旋转矩阵的. 罗德里格斯公式如图所示 其中,I 是单位矩阵,n 是旋转向量的单位向量, t ...

  5. 详解基于罗德里格斯(Rodrigues)公式由旋转向量到旋转矩阵的 Python 实现

    文章目录 旋转向量 rotation vector 旋转矩阵 rotation matrix 罗德里格斯公式 Rodrigues' formula 基于 Python 和 NumPy 实现 Rodri ...

  6. 机械臂 tcp 坐标 转旋转矩阵 (旋转向量转旋转矩阵)

    C++  Eigen版本 #include <Eigen/Core> #include <Eigen/Eigen> #include <Eigen/Geometry> ...

  7. C++ Eigen 库中旋转向量、旋转矩阵、欧拉角、四元数的定义及互相转换

    今天看师兄写的使用力反馈设备操作机械臂的代码,里边涉及到了Eigen 库中的旋转变换,表征旋转变换的有旋转向量Eigen::AngleAxisd.欧拉角Eigen::Vector3d.旋转矩阵Eige ...

  8. 从旋转向量到旋转矩阵的转化公式

    这个博客是公式详解: https://www.cnblogs.com/xpvincent/archive/2013/02/15/2912836.html Eigen::Matrix3d constru ...

  9. 罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化

    罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化 1 罗德里格斯公式推导 2 cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化 1 罗德里格 ...

最新文章

  1. Oracle单机版开机自启动
  2. Android教程之实现动作感应技术
  3. 使用 rsync / scp 命令下载linux文件,显示网速和进度
  4. html ul左侧浮动,UL里的LI元素左浮动层一行显示时使其居中的方法
  5. Oracle EBS R12 电子技术参考手册 - eTRM (电子文档)
  6. html页面枚举 暴力,暴力枚举进程模块(示例代码)
  7. css3做各种角度三角形
  8. uniapp引入阿里图标库
  9. usb3.0速度测试软件,主流B75原生SATA3.0和USB3.0速度测试
  10. k620显卡 unreal_nvidia quadro k620是什么显卡
  11. Python-文件操作
  12. 为村上隆直播做同传的火山翻译:成立仅3年,拿下5项世界冠军
  13. 用计算机程序方式打开,怎么使用运行命令符打开电脑程序
  14. Qt编写安防视频监控系统6-面板开关
  15. 一文学会回溯算法解题技巧
  16. 把下列c语言的语句改写成汇编语言的程序片段,其中变量都为整形变量,汇编程序设计读书笔记(4)...
  17. 渗透测试 | IP信息收集
  18. c++、python实现置换密码(栅栏技术,列置换)、替代密码(加法密码(Caesar密码),乘法密码)
  19. c#反射,类型XX对象无法转换为类型XX,XX是一样的问题
  20. win10/win7文件夹或文件查看方式怎么统一设置

热门文章

  1. Vector3 学习与应用
  2. 朝花夕拾:Eclipse断点调试
  3. Notes on MatConvNet(II):vl_simplenn
  4. google earth engine(GEE)如何在看某一点的经纬度、波段信息
  5. 宏基计算机两个DP接口,笔记本电脑显卡上有HDMI和DP端口,我可以同时插入两台显示器吗?...
  6. linux中atoi函数的实现 值得借鉴,atoi 函数实现
  7. 【项目】数仓项目(六)
  8. 大数据情况,R建议用fread(),或者用python
  9. DS1320原理和C51代码实现解读
  10. unfold3d使用