【入门】(一)旋转向量与旋转矩阵

目录

一、基本概念

 二、转换公式

三、应用场景


一、基本概念

旋转向量为三维向量表示形式,用旋转向量表示旋转变换,可以将其方向为旋转轴方向,模为旋转角度。三维空间的旋转变换为绕任意轴r旋转\alpha角,可以分解为分别绕X,Y,Z轴旋转\phi , \theta,\varphi角,将绕坐标轴旋转表达为矩阵形式有:

图源:https://blog.csdn.net/hongbin_xu/article/details/78929006 ,以绕X轴为例,推导过程如下所示

旋转矩阵R=RxRyRz;

 二、转换公式

旋转矩阵和旋转向量之间的转换公式如下:

假设有单位旋转向量r=[r_{x} \ r_{y}\ r_{t}]^{T},旋转角度为\theta,旋转矩阵为R,那么r到R的转换如下,称为

扫描二维码关注公众号,回复: 3759970 查看本文章
罗德里格斯(Rodrigues)变换。

在opencv中两者的转换用

int cvRodrigues2( const CvMat* src, CvMat* dst, CvMat* jacobian=0 );
/*
*src为输入的旋转向量(3x1或者1x3)或者旋转矩阵(3x3)。

*dst为输出的旋转矩阵(3x3)或者旋转向量(3x1或者1x3)。

*jacobian为可选的输出雅可比矩阵(3x9或者9x3),是输入与输出数组的偏导数。
*/

推导过程:参考https://blog.csdn.net/hongbin_xu/article/details/78929006

三、应用场景

矩阵运算显然是计算机三维坐标变换最简单方便的计算方法,因此在 opencv、opengl、工业机器人等开发中,提到位姿旋转变换,多半用的是旋转矩阵。然而,用矩阵来表示一个旋转关系有两个缺点: 
首先,通过旋转矩阵不能直观地看出旋转的方向和角度,假设给定一个旋转矩阵,要求旋转方向不变,旋转角度变成一半,那么新的旋转矩阵计算起来就比较麻烦了。 
另一方面,旋转变换本身只有3个自由度,但旋转矩阵有9个元素,因此旋转矩阵中的元素不是相互独立的,这在非线性优化中会带来问题。
参考:https://blog.csdn.net/mightbxg/article/details/79363699 

猜你喜欢

转载自blog.csdn.net/qq_28602183/article/details/83443985
今日推荐