在三维空间中,我们经常会对某些向量进行旋转等操作,同时物体在空间中的变化除了位移之外也包括旋转,而用来描述旋转的方式有很多,如:旋转矢量,欧拉角,四元数,方向余弦矩阵等。其中旋转矢量的定义是这样的:一个坐标系到另一个坐标系的变换可以通过多次转动来完成(欧拉角法),也可以通过绕一个定义在参考坐标系中的矢量的单次转动来实现。这个旋转矢量(rotation vector)是一个三元素的向量,旋转矢量的方向给出了转动轴的方向,旋转矢量的模为转动角度的大小(因此也被称为轴角),转动符合右手旋转定则。
听起来貌似很神秘,但其本质就隐藏在我们最通常的向量运算中,下面来看。
我们知道,向量的外积(叉乘)定义如下:


其计算方法也可以很简单地用行列式来表示:


同时,外积只对三维向量存在定义
我们知道,两个向量的外积得到的是另一个垂直于这两个向量的向量,那这个向量和旋转矢量有什么联系呢?我们写个小程序来验证一下。

double e1org[3] = { 3,4,5 };//向量e1
double e2org[3] = { 6,7,8 };//向量e2
double e1norm = sqrt(e1org[0] * e1org[0] + e1org[1] * e1org[1] + e1org[2] * e1org[2]);
double e2norm = sqrt(e2org[0] * e2org[0] + e2org[1] * e2org[1] + e2org[2] * e2org[2]);
e1org[0] = e1org[0] / e1norm;
e1org[1] = e1org[1] / e1norm;
e1org[2] = e1org[2] / e1norm;
e2org[0] = e2org[0] / e2norm;
e2org[1] = e2org[1] / e2norm;
e2org[2] = e2org[2] / e2norm;//归一化e1和e2
double e3[3] = { 0 };
double e2new[3] = { 0 };
double phi[3] = {0};
double mQ[4] = {0.0};
double C_m[9] = { 0.0 };
crossMul(e1org, e2org, e3);//外积得到e3
double e3norm = sqrt(e3[0] * e3[0] + e3[1] * e3[1] + e3[2] * e3[2]);
phi[0] = e3[0];
phi[1] = e3[1];
phi[2] = e3[2];
Phi2Qbn(phi, mQ, 0);//旋转矢量转为四元数
Qbn2Cbn(mQ, C_m);//四元数转为方向余弦矩阵
MatrixMul(C_m, 3, 3, e1org, 3, 1, e2new);//对向量e1应用该旋转
std::cout << "e2org: " << e2org[0] << e2org[1] << e2org[2] << std::endl;
std::cout << "e2new: " << e2new[0] << e2new[1] << e2new[2] << std::endl;

e1和e2是任意的两个向量,通过外积得到向量e3,对其进行归一化可以得到该向量的方向向量。同时为了符合旋转的定义,即在同一个坐标系中,一个向量在旋转前后其模长是固定的,我们在计算之前把两个向量进行归一化。

如何应用旋转矢量来对某一个向量进行旋转操作呢?我们通过变换式,借助四元数和方向余弦矩阵来实现。

转换关系如下:

由结果可见,我们把向量外积得到的新向量按照旋转矢量来处理,转成旋转矩阵作用到向量e1上,得到的结果等于向量e2(忽略微小的转换误差)。


也就是说,两个向量外积得到的向量就等于将前者旋转到后者对应的旋转矢量!Amazing!我们终于揭开了旋转矢量的神秘面纱。其实,在机器人和SLAM领域中有很多需要姿态表达的地方,也有很多这样的“巧合”,比如so(3)和SO(3),旋转向量和旋转矩阵就可以通过罗德里格斯公式建立联系。

以上。

旋转矢量和向量外积的关系相关推荐

  1. 方向余弦阵、四元数、等效旋转矢量的关系和不可交换误差的分析

    四元数.等效旋转矢量意义及其原理 四元数:因为旋转轴的位置(定轴或不定轴).旋转角度是四个数,故而矩阵的变换可以由四个数表示,即四元数的表达矩阵旋转形式 等效旋转矢量:矩阵沿着旋转轴u(定轴或不定轴) ...

  2. 旋转矩阵、欧拉角、旋转矢量及四元数的介绍和工程应用

    本篇文章首发于微信公众号:无人机开发.更多无人机技术相关文章请关注此公众号,有问题也可在公众号底部添加个人微信进行交流. 1.前言 从事导航.制导或者控制时,经常需要将各个物理矢量从A坐标系转换至B坐 ...

  3. 捷联惯导系统学习2.2(等效旋转矢量)

    二 等效旋转矢量: 1 一些重要的三维矢量运算关系(证明请自己找) $ u为单位矢量 ;u'是u的一阶导数$ (1):V1×(V2×V3)=(V1∗V3)V2−(V1∗V2)V3(1):V_1\tim ...

  4. 相控阵天线(十二):天线校准技术仿真介绍之旋转矢量法

    目录 简介 旋转矢量法算法介绍 旋转矢量法校准对方向图的影响 旋转矢量法算法仿真 移相器位数对旋转矢量法的影响 多通道旋转矢量法算法仿真 分区旋转矢量法算法仿真 简介 由于制造公差和天线互耦的影响,天 ...

  5. 捷联惯导系统学习2.5(等效旋转矢量微分方程)

    已知三维旋转矢量关系如下:(证明略) 参数说明: ViV_iVi​表示三维空间矢量 v=∣V∣=VVTv=|V|=\sqrt{VV^T}v=∣V∣=VVT​表示矢量模值 uuu为与V同方向的单位矢量即 ...

  6. 惯性导航算法(五)-等效旋转矢量+双子样算法

    文章目录 等效旋转矢量 转动的不可交换性 转动的不可交换性与惯性导航有何关系? 等效旋转矢量 等效旋转矢量多子样算法的理论基础 等效旋转矢量微分方程 等效旋转矢量微分方程的工程近似 等效旋转矢量的双子 ...

  7. Rodrigues(罗德里格斯)公式的理解与应用(旋转矢量与旋转矩阵的转化)

    第一部分:RodriguesRodriguesRodrigues(罗德里格斯)公式描述的是:空间内的任意一个向量v\textbf{v}v,绕指定的旋转轴k\textbf{k}k旋转θ\thetaθ角度 ...

  8. 正弦交流电三要素表示方法:解析法、正弦曲线法、旋转矢量法

    正弦交流电三要素表示方法:解析法.正弦曲线法.旋转矢量法 解析法 解析法是用数学公式表述正弦交流电与实践变化关系的方法.公式如下: e=Emsin(ωt+Φe) u=Umsin(ωt+Φu) i=Im ...

  9. 高精度矢量汉字的一种填充方法_惯导解算数学基础4(等效旋转矢量解,圆锥补偿解)...

    等效旋转矢量及Bortz方程 由于姿态阵和四元数的方法都有不可交换误差的问题,不可回避,所以现代高精度算法都使用等效旋转矢量来表达. 还记上次那个 角速率和等效旋转矢量的关系式吧? 为了书写整洁,改写 ...

最新文章

  1. 复杂场景下的复杂缺陷检测方法--深度学习算法综述
  2. SAP WM 确认TO单的时候不能修改目的地STORAGE BIN
  3. Spring和MyBatis环境整合
  4. struts 普通的action
  5. 深入探索并发编程之内存屏障:资源控制操作
  6. iOS微博项目(一)
  7. java创建指定日期_如何创建指定的日期和时间
  8. iOS 系统汉化的plist设置
  9. Linux中mysql的卸载和重装,在Linux下面卸载与重新安装Postgresql
  10. 科学计算器 c语言源代码,科学计算器C语言代码
  11. dll依赖查看工具-depends
  12. uniapp 打包成安卓app
  13. 遇人不淑之逗比程序员
  14. 送给1985年左右的朋友 怀念小时候的我们
  15. 品优购项目案例(练习)
  16. 论文摘要和引言的区别
  17. IN和EXISTS、not in 和not exists的效率详解
  18. Windows编译libjpeg库
  19. J2ME学习笔记(八)(转)
  20. batch / numpy for pytorch (lyh

热门文章

  1. 终于买到2008奥运会的门票
  2. 转florian大神blog之 - 从实现装饰者模式中思考C++指针和引用的选择
  3. 用蒙特卡洛法求圆周率pi
  4. 华为手机中堪称神作的APP,毫不起眼,但使用过的人却好评不断
  5. 语音信号处理论文优选:神农Shennong: a Python toolbox for audio speech features extraction​
  6. nova75g什么时候更新鸿蒙系统,华为nova7升级到EMUI11,8大功能提升,带来更新体验...
  7. 并发编程(六):管程
  8. 1.使用SQL语句创建表
  9. 采用注解实现策略模式
  10. 40-60K/月,北森云计算招聘Devops架构师(地点:北京)