机器人基础数学知识2——3D空间位置及旋转表示

本文详细介绍了三维空间旋转的四种常见表示方法:旋转向量、旋转矩阵、欧拉角和四元数。旋转向量是通过一个三维向量表示旋转,旋转矩阵为3x3正交矩阵,欧拉角是按特定顺序的三个旋转组合,而四元数提供了一种避免万向节锁的高效表示。各表示间的转换关系及优缺点也进行了阐述,包括Rodrigues变换、四元数与欧拉角的转换等。
摘要由CSDN通过智能技术生成

一、2D姿态描述

二、三维坐标系下的旋转

三维坐标的旋转有以下几种常见的表示形式:旋转向量旋转矩阵欧拉角四元数,下面对这四种表示形式及其之间的转换进行介绍:

旋转向量

旋转的一个神奇之处就在于,三维空间的任意旋转,都可以用绕三维空间的某个轴旋转过某个角度来表示,即所谓的Axis-Angle表示方法。这种表示方法里,Axis可用一个三维向量(x,y,z)来表示,theta可以用一个角度值来表示,直观来讲,一个四维向量(theta,x,y,z)就可以表示出三维空间任意的旋转。注意,这里的三维向量(x,y,z)只是用来表示axis的方向朝向,因此更紧凑的表示方式是用一个单位向量来表示方向axis,而用该三维向量的长度来表示角度值theta。这样以来,可以用一个三维向量(thetax, thetay, theta*z)就可以表示出三维空间任意的旋转,前提是其中(x,y,z)是单位向量。这就是旋转向量(Rotation Vector)的表示方式,

旋转向量通常为3x1的列向量向量方向即为旋转轴向量的模表示绕轴逆时针旋转的角度
如旋转向量v=[a,b,c],那么旋转角度theta=sqrt(a2+b2+c2),旋转轴z=[a/theta, b/theta, c/theta]

旋转矩阵

旋转矩阵用3x3的矩阵表示,旋转矩阵是正交矩阵,且行列式是单位1          
在这里插入图片描述
det ( R ) =1

旋转向量与旋转矩阵可以通过罗德里格斯(Rodrigues)变换进行转换
opencv实现Rodrigues变换的函数是:

int cvRodrigues2( const CvMat* src, CvMat* dst, CvMat* jacobian=0 );

生成旋转矩阵的一种简单方式是把它作为三个基本旋转的序列复合,如下面要介绍的欧拉角的复合。

欧拉角

欧拉角度的基本思想是将旋转分解为绕三个互相垂直轴的三个旋转组成的序列。

使用欧拉角,就要指明坐标系系统以及旋转顺序最常用的约定,即所谓“roll-pitch-yaw”系统。偏航角——Yaw,俯仰角——Pitch,翻滚角——Rool

下面讨论欧拉角与旋转矩阵之间的转换,绕x,y,或z轴旋转θ的矩阵为:
在这里插入图片描述
计算最终的旋转只需按一定的顺序将Rx(θ),Ry(θ),Rz(θ)做矩阵乘法,所以顺序不同,最终的旋转矩阵结果也不同。如果规定了坐标系以及旋转顺序,那么旋转矩阵是惟一的。

欧拉角表示的旋转会造成万向节锁(Gimbal Lock)的现象。所谓万向节锁****简单的说是指(经过绕某个轴的旋转后)物体的两个旋转轴指向同一个方向,从而失去一维自由度,接下来无论如何也旋转不出某种状态由于万向节锁的存在,欧拉旋转无法实现球面平滑插值

四元数

根据欧拉旋转定理,任何坐标系的相对定向,可以用四个数来规定。四元数原理的核心也在于:三维空间内,所有的旋转都可以用四个数来表示。通过四元数来计算旋转,它能减少所需的工作,并减小舍入误差。在电脑图形学里,四元数的插值计算是很简单的,这有非常重要的应用价值。
在这里插入图片描述
在三维空间上,任意一个绕着指定点的旋转都可以表示成绕着经过该点的轴的旋转。

一个四元数可以表示为q = w + xi + yj + zk,i、j、k是一种特殊的虚数单位(类比虚数表示中的i,j),并有以下运算规则:
i0=j0=k0=1,
i2=j2=k2=-1,
|q|2=w2+x2+y2+z2=1,
四元数的其他性质不在一一叙述。

四元数指明了旋转的角度和旋转轴,如旋转轴的方向余弦为(cosβx,cosβy,cosβz),旋转角为α,则对应的四元数q=[q0,q1,q2,q3],其中:
在这里插入图片描述
四元数与旋转矩阵之间的转换关系(注意利用模为1的性质有一下两种表示方法):
在这里插入图片描述

在这里插入图片描述
旋转矩阵转换为四元数
在这里插入图片描述
其中:mij表示旋转矩阵中第i行k列的元素

四元数转换为欧拉角

首先定义:

Roll – \phi: rotation about the X-axis

Pitch – \theta: rotation about the Y-axis

Yaw – \psi: rotation about the Z-axis

则对应的转换为:
在这里插入图片描述
如果已知欧拉角求四元数,可以先将欧拉角转化为旋转矩阵,再由旋转矩阵求四元数

参考:

  1. 三维旋转
  2. 刚体在三维空间的旋转-几种表达方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值