10. 机器人正运动学---姿态描述之欧拉角

目录

1. 引言

2. 欧拉角

2.1 一点点体会

2.2 欧拉角定义

2.3 刚体系欧拉角

2.4 RPY世界系欧拉角

2.5 有多少组欧拉角?

2.6 欧拉角与旋转矩阵之间的关系

2.6.1已知欧拉角求旋转矩阵

2.6.2 已知旋转矩阵求欧拉角

2.6.3 旋转矩阵转欧拉角的问题

2.6.4 欧拉角与旋转矩阵转换的C++实现

3. 总结


1. 引言

到目前为止我们基本已经讨论完了坐标系及变换相关的内容。前面我们一直在聊变换矩阵具备位姿描述的能力,它可以很清晰地描述两个坐标系之间的位姿关系,那么为什么还要单独再介绍关于姿态描述的内容呢?

显然是有原因的。没有哪一个工具是完美的,齐次变换矩阵也是如此。事实上在很多的场合用齐次变换矩阵是搞不定的,还记得我们在4. 机器人正运动学---理解变换矩阵中介绍的旋转矩阵的几个性质吗?旋转矩阵具有正交性,每一行每一列都具有单位长度,这引入了6个约束,因此旋转矩阵的9个元素实际上只有三个独立变量。想象一下这样的姿态描述会出现什么样的问题呢?

我们还是举一个简单的运动规划的例子来说明一下这个问题,假设你想让机器人的末端点从坐标A(0, 0, 0)直线移动到坐标B(1, 1, 1),不要在意参考坐标系是谁,就当是一个固定的世界系就好了。按照机器人的控制周期,我们需要每一个毫秒向机器人发送一个位置指令,那么这个问题怎么处理呢?显然我们不能一下子就给机器人发送B这个坐标点,因为这样机器人容易承受较大的电流冲击,这也就是运动规划的意义所在,我们需要在A和B之间插入一些中间点来减小冲击同时也能让机器人真正沿着AB之间的线段运动(如果不做插值机器人末端执行器实际走过的路径我们是不知道的)。以下是最简单的线性插值:

                                        P(t)=t\cdot\overrightarrow{AB},t\in [0,1]

其中的t代表当前已经经历的时间的归一化值(假设要求2s到达,现在过了1s,那么t就是1s/2s=0.5)。关于运动规划我们后面再谈,有没有发现这个插值其实非常简单,我们有了起始位置,终止位置,很容易得到中间的插值点。

回过头来再看旋转矩阵,前面描述的实际是对平移的插值,旋转矩阵描述的是姿态,如果我们希望机器人末端执行器位置不变,姿态从初始的E变换到终止的R,请问我应该怎么找到每一时刻的中间变换呢?你可能没有答案。由于旋转矩阵的6个约束条件使得对旋转矩阵的插值几乎不可能。

以上例子说明为了能够实现姿态的有效插补我们只讨论旋转矩阵肯定是不行的,还需要其他关于姿态的更简单的表达,这也就是我们讨论姿态描述的初衷了。

除了旋转矩阵之外还有几种常用的用于进行姿态描述的方法:欧拉角,轴角,四元数。后面的几篇文章,我们将围绕着这几种姿态描述方法展开,本篇博客将介绍欧拉角。

2. 欧拉角

2.1 一点点体会

说些题外话,对于位置我们很容易找到它的描述方法,比如在笛卡尔坐标系下用 xyz三个坐标值就可以很好的描述位置,位置的三个分量是非常容易解耦的。位置另外一个很好的特点是它的变换是满足交换律的。比如我先沿 x 轴平移1m,再沿 y轴平移1m得到的变换与先沿 y 轴平移1m再沿 x 轴平移1m得到的变换是一样的。姿态就不同了,先绕 x 轴旋转45度,再绕 y 轴旋转45度对应的变换与先绕 y 轴旋转45度再绕 x 轴旋转45度对应的变换不是一种变换。姿态变换不满足交换律!这大概就是姿态描述要困难得多的原因。

想象一下既然旋转矩阵有六个约束即三个独立变量,那么我们可以怎样更简洁的描述姿态呢?你可能想到既然位置可以用三个坐标值来描述,那么姿态能不能用三个角来描述呢?你是对的,这就是欧拉角,由传奇人物欧拉首先提出。

2.2 欧拉角定义

欧拉角是能够唯一确定刚体姿态的三个独立的角变量。说白了就是用三个角度来描述刚体在坐标系中的姿态。从这个定义中我们看到欧拉角只规定了用三个独立的角变量,没有指明是哪三个角,也没有指明这些角如何定义。所以欧拉角的组合有很多种。

2.3 ZXZ刚体系欧拉角

我们以绕新坐标系旋转的ZXZ欧拉角为例来说明。还是提前说一下,其实欧拉角的定义方式有两种,第一种是三个旋转均是相对于原始坐标系进行的(以后我们称这种欧拉角为世界系欧拉角),第二种是三个旋转均是以前一次旋转得到的新坐标系为基础继续旋转(以后我们称这种欧拉角为刚体系欧拉角)。关于这一点在6. 机器人正运动学---齐次变换矩阵的三种解读中我们有相关的介绍。说明一下刚体系欧拉角和世界系欧拉角是我为了方便取的名字,这两种欧拉角更专业的名称我不清楚,如果哪位知道麻烦指点一下。

这里所谓的绕新坐标系旋转的ZXZ欧拉角就是刚体系欧拉角的一种,如下图是这种欧拉角对应的示意图。我来介绍一下这张图中的要素。

首先图中有蓝色的坐标系{0}和红色的坐标系{1},我们研究坐标系的变换就在这两个坐标系之间进行。图中的蓝色和红色的椭圆(实际是圆)分别对应Ox_{0}y_{0}Ox_{1}y_{1}两个平面。这两个平面的交线为N,我们称这个交线为节线。\alpha 对应 x_{0} 与节线矢量的夹角,\beta 对应 z_{0} 与 z_{1} 之间的夹角,\gamma 对应节线矢量与 x_{1} 的夹角。

在这张图中坐标系{0}经历三次变换可以得到坐标系{1}。

  1. 坐标系{0}绕其自身 z 轴旋转 \alpha 得到坐标系{a};
  2. 坐标系{a}绕其自身的 x 轴旋转 
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值