罗德里格斯(Rodrigues)旋转向量转旋转矩阵
转载于: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)旋转向量转旋转矩阵相关推荐
- python 实现罗德里格斯公式Rodrigues 旋转向量到旋转矩阵转化
罗德里格斯公式Rodrigues: 代码: import numpy as npdef rodrigues_rotation(r, theta):# n旋转轴[3x1]# theta为旋转角度# 旋转 ...
- 罗德里格斯公式推导(轴角与旋转矩阵的关系)以及四元数与旋转向量、旋转矩阵、欧拉角之间的转换关系
罗德里格斯公式推导(轴角与旋转矩阵的关系) 意义:罗德里格斯公式表示旋转向量到旋转矩阵之间爱你的转换关系 旋转向量:一个向量,方向与旋转轴一致,长度等于旋转角度 空间中任意旋转都可以用一个旋转轴和一个 ...
- 方向向量转欧拉角_【姿态表示】旋转向量、旋转矩阵、欧拉角、四元数
1. 旋转矩阵与旋转向量旋转矩阵(Rotation Matrix)用 9 个量描述旋转的3个自由度,有冗余: 9 个量是有约束的:必须是正交矩阵,且行列式为 1 旋转向量(Rotation Vecto ...
- 旋转向量与旋转矩阵的相互转化
公式 1. 旋转向量求解旋转矩阵 当刚体在三维空间中运动时,如果已知旋转向量,根据罗德里格斯公式是比较容易求得旋转矩阵的. 罗德里格斯公式如图所示 其中,I 是单位矩阵,n 是旋转向量的单位向量, t ...
- 详解基于罗德里格斯(Rodrigues)公式由旋转向量到旋转矩阵的 Python 实现
文章目录 旋转向量 rotation vector 旋转矩阵 rotation matrix 罗德里格斯公式 Rodrigues' formula 基于 Python 和 NumPy 实现 Rodri ...
- 机械臂 tcp 坐标 转旋转矩阵 (旋转向量转旋转矩阵)
C++ Eigen版本 #include <Eigen/Core> #include <Eigen/Eigen> #include <Eigen/Geometry> ...
- C++ Eigen 库中旋转向量、旋转矩阵、欧拉角、四元数的定义及互相转换
今天看师兄写的使用力反馈设备操作机械臂的代码,里边涉及到了Eigen 库中的旋转变换,表征旋转变换的有旋转向量Eigen::AngleAxisd.欧拉角Eigen::Vector3d.旋转矩阵Eige ...
- 从旋转向量到旋转矩阵的转化公式
这个博客是公式详解: https://www.cnblogs.com/xpvincent/archive/2013/02/15/2912836.html Eigen::Matrix3d constru ...
- 罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化
罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化 1 罗德里格斯公式推导 2 cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化 1 罗德里格 ...
最新文章
- Oracle单机版开机自启动
- Android教程之实现动作感应技术
- 使用 rsync / scp 命令下载linux文件,显示网速和进度
- html ul左侧浮动,UL里的LI元素左浮动层一行显示时使其居中的方法
- Oracle EBS R12 电子技术参考手册 - eTRM (电子文档)
- html页面枚举 暴力,暴力枚举进程模块(示例代码)
- css3做各种角度三角形
- uniapp引入阿里图标库
- usb3.0速度测试软件,主流B75原生SATA3.0和USB3.0速度测试
- k620显卡 unreal_nvidia quadro k620是什么显卡
- Python-文件操作
- 为村上隆直播做同传的火山翻译:成立仅3年,拿下5项世界冠军
- 用计算机程序方式打开,怎么使用运行命令符打开电脑程序
- Qt编写安防视频监控系统6-面板开关
- 一文学会回溯算法解题技巧
- 把下列c语言的语句改写成汇编语言的程序片段,其中变量都为整形变量,汇编程序设计读书笔记(4)...
- 渗透测试 | IP信息收集
- c++、python实现置换密码(栅栏技术,列置换)、替代密码(加法密码(Caesar密码),乘法密码)
- c#反射,类型XX对象无法转换为类型XX,XX是一样的问题
- win10/win7文件夹或文件查看方式怎么统一设置
热门文章
- Vector3 学习与应用
- 朝花夕拾:Eclipse断点调试
- Notes on MatConvNet(II):vl_simplenn
- google earth engine(GEE)如何在看某一点的经纬度、波段信息
- 宏基计算机两个DP接口,笔记本电脑显卡上有HDMI和DP端口,我可以同时插入两台显示器吗?...
- linux中atoi函数的实现 值得借鉴,atoi 函数实现
- 【项目】数仓项目(六)
- 大数据情况,R建议用fread(),或者用python
- DS1320原理和C51代码实现解读
- unfold3d使用