旋转矢量和向量外积的关系

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

a\times b=|a||b|sin\theta
其计算方法也可以很简单地用行列式来表示:


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

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),旋转向量和旋转矩阵就可以通过罗德里格斯公式建立联系。

以上。

 

 

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值