坐标旋转

详细介绍坐标旋转的过程。开发环境: MATLAB 2016b + Robotics Toolbox 10.2.

前言

坐标旋转是机器人控制、航天器控制中不可缺少的基本功。在与其他同行交流的过程中,因坐标旋转而发生争论,特此将坐标旋转的推导过程记录,以防再发生混乱。

坐标旋转的推导过程

首先建立坐标系,假定坐标系$ OX_1Y_1Z_1 $(以下简称1系)由坐标系$ OX_0Y_0Z_0 $(以下简称0系)绕$ Z_0 $轴逆时针旋转$ \theta $所得(右手旋转方向为正)。略去Z方向,在XY平面的示意图如下(这是由于在三维空间中是绕轴旋转,二维空间中绕点旋转):

上图中,P点在0系中的坐标为$ (x_0, y_0) $,在1系中的坐标为$ (x_1, y_1) $。易得:

作$ AM \bot OC $,根据几何知识,易得:

根据几何知识,易有:

02 $ \tag{1} $

03 $ \tag{2} $

由上式可得:

由于绕$Z$轴旋转,因此有:

将上述结论式(1)、(3)~(4)整理成矩阵形式,有:
04 $ \tag{5} $

上式中,$T$的下角标表示参考坐标系,上角标表示旋转后的坐标系。由此可得到从0系绕$Z$轴旋转$\theta$到1系的旋转矩阵:

05 $ \tag{6} $

同理,可得从0系绕 Y 轴或 X 轴旋转到1系的旋转矩阵为:

06 $ \tag{7} $

式(6)~(7)可以理解为用0系的坐标来得到1系的坐标。

同理,可以得到从1系到0系的旋转$-\theta$矩阵为:

07 $ \tag{8} $

上式可以理解为用1系的坐标来得到0系。

从式(6)~(8)可以看出:

值得注意的是,说是旋转矩阵不同,其实最本质的还是在于所求坐标在哪个系的表达方式的问题,如式(10)所示。

15

因此,与其费尽心思去记容易混淆的坐标旋转矩阵,不如懂得原理之后,每逢遇到旋转矩阵,就在脑海里想象整个的坐标旋转公式,搞明白等式左边的坐标是在哪个坐标系中表示。

在航天器和机器人中的坐标旋转

上节讲述了坐标旋转的推导过程,这在航天器和机器人两个领域是常用到的。但两个领域不同之处在于,航天器中往往采用的是用参考坐标系坐标来得到旋转后坐标系坐标的描述方式,机器人中则更习惯采用用旋转后坐标系坐标得到参考坐标系坐标的描述方式。

在经典的《机器人建模和控制》中,给出坐标旋转的定义方式如下图所示:

08
09

注意在上图中,作者声明了上角标表示参考坐标系,下角标表示旋转后的坐标系。

在《Robotics Modeling, Planning and Control》中,坐标旋转的描述方式为:

10
11
12

从以上的三张图中可以看出,其推导方式与上一节一致,但采用了用旋转后的坐标来得到参考坐标系中的坐标的描述方式。

上述两种描述方式在MTATLAB中均有相应的函数来实现:

13
14

除了上述MATLAB自带的坐标旋转函数外,通过额外安装 Robotics Toolbox,可以更方便地求得坐标旋转的结果,如下图所示。

16

Robotics Toolbox的下载地址:http://petercorke.com/wordpress/toolboxes/robotics-toolbox

笔者使用MATLAB2016b + RTB-10.2.zip(November 13, 2017),可以正常安装,其他的安装包存在文件缺失或者与MATLAB版本不匹配的问题。安装方法是将该压缩包解压到MATLAB的安装目录bin下面(或者打开MATLAB后,将解压的安装包直接拷贝到MATLAB的文件浏览器中),然后打开文件夹,运行文件:rvctools/startup_rvc.m。

关于该工具箱的使用方法,请参考由Cola倾情推荐的Robotics, vision and control

------ 本文结束感谢您的阅读------
Donate a cup of cola?