7.2.1空间坐标描述.md 6.7 KB

7.2.1 空间坐标描述

1.何为位姿

1.1 引言

在书籍《天才在左,疯子在右》中有这样一个故事,有一位十七岁的少年,他对量子力学有着独特的见解和远超同龄人的知识储备,他说四维生物突破了时空的界限,在它的观察中,人类的一生的活动连线起来,就像一条长长的虫子,它可以看到人的过去,也可以看到人的未来。

我们对四维空间不了解,但对三维立体和二维的平面每天都有接触。一张铺平的中国地图是二维平面的,拔地而起的高楼大厦是三维立体的。

那我们如何用数字表示高楼在地图中的位姿呢?又如何用数字表示某个高楼中你的位姿呢?

1.2 我们先来看地图中高楼的位姿

在地图上,我们可以利用经纬度坐标系来描述位姿,在经纬度坐标系中,我们可以使用经度值和纬度值表示地图上的某一个大楼的坐标,比如天安门的经纬度经度:116.38 ,纬度:39.90

经纬度坐标系是以经纬度原点(几内亚湾)建立二维平面直角坐标系,我们就可以使用x,y来描述该坐标系中的任意一个点的位置。

经度的起点就是指0度经线,位于英国格林尼治天文台旧址。 纬度的起点就是指0度纬线,就是指赤道。而经度0和纬度0的交点,大致位于非洲西部的几内亚湾,位于海上。

img

通过经纬度可以定位到地图中的建筑物的位置,但我们依然无法得知这个建筑物的朝向(东南西北),所以除了描述位置的经纬度外,我们还需要增加一个theta($\theta$),表示朝向。这样我们就得到了一个物体在二维平面中用数学描述的三个值,经度(x)、维度(y) 和 朝向(theta)。

1.3 高楼中你的位姿

现实世界是三维的,除了经纬度还有海拔高度。所以采用经度(x)、维度(y)并不能完整的描述出空间中物体的位置,只有经纬度无法表示你所处的楼层的海拔高度,这样就没办法确定你的位置。

我们同样可以在经纬度原点建立一个三维空间直角坐标系,采用经度(x)、维度(y)和海拔高度(z)三个值来描述三维空间中任意一点的位置。

和二维空间中类似,知道了你在某一个大楼中的位置还不够,并不能判断出你的姿态(躺平的、站着的还是侧卧的),那我们该如何描述三维空间中的姿态呢?

答案是旋转矩阵,旋转矩阵是什么?我们接着往下看。

1.4 参考坐标系

无论是在二维空间还是在三维空间,我们想要描述一个物体的位置和姿态第一步就是确定一个参考坐标系,物体的位置和姿态描述我们都是以这个坐标系作为参考的。

参考坐标系,这一点很重要,因为没有绝对的坐标,只有相对的坐标。

2.位置的表示

从第一节背景中可以得知,二维平面中的位置可以用$x,y$表示,三维空间中的位置的表示可以用$x,y,z$来表示。

无论是在三维空间还是在二维平面,我们都可以使用$x,y,z$来表示位置,只不过对于二维空间来说,z的值是默认的一个固定不变的值,比如$0$

假如我们确定了一个空间直角坐标系A,我们就可以使用$x,y,z$来确定A坐标系中空间中任意一点P的位置,可以记作${^A}P$

$$ {^A}P= \begin{bmatrix} x \ y \ z \ \end{bmatrix} $$

位置矢量

直角坐标系{A}其实可以看作由一个三个互相正交(两两垂直)的单位矢量组成的。 那么在坐标系{A}中的一点P也可以写作矢量形式,其矢量形式由其在三个单位矢量上的分量组成。

image-20211102151409351

所以参考坐标系{A}中一点P也可以写作

$$ {^A}P= \begin{bmatrix} {^x}p \ {^y}p \ {^z}p \ \end{bmatrix} $$

如果说位置矢量不太好理解,可以简单的认为就是坐标轴的$x,y,z$

$$ \begin{bmatrix}{x}\{y}\{z}\\end{bmatrix} $$

3.姿态的表示 在背景中小鱼提到了除了位置,坐标描述还有另外一个非常重要的组成部分——姿态。

接着上面的说,我们已经直到坐标系A中的一个点P的位置,我们如何描述P点在{A}坐标系下的姿态呢?

我们可以以P点为原点再建立一个坐标系(也可以认为该坐标系固定在物体P点上),这样我们就可以通过描述新坐标系{P}参考坐标系{A}之间的姿态关系来表示${^A}P$点的姿态。

rviz的位姿显示

上图使用RVIZ2绘制出的,红色代表x轴,绿色代表y轴,蓝色代表z轴。

从图中可以看出,坐标系{P}的每一个轴和参考坐标系的每一个轴之间都有一个角度,比如Px轴和Ax,Ay,Az三个轴之间存在三个角度,通过这三个角度我们就可以确定Px轴和参考坐标系{A}之间的关系,以此类推,我们也可以确定,Py轴和Pz轴和{A}之间的关系。

每个轴的相对姿态关系确定了,坐标系之间的姿态也就确定了,${^A}P$点的姿态也就确定了。

旋转矩阵

我们将上述坐标系{P}的三个轴相对与参考坐标系{A}三个轴的共九个角度的余弦值,组成3*3的矩阵,该矩阵就是旋转矩阵,因该矩阵是{P}相对于{A}之间的姿态关系的表示,故记作${^A_P}R$ $$ {^AP}R=[{^A}x{P} \ {^A}y{P} \ {^A}z{P}] = \begin{bmatrix}{r{11}}&{r{12}}&{r{13}}\{r{21}}&{r{22}}&{r{23}}\{r{31}}&{r{32}}&{r_{33}}\\end{bmatrix} $$

两个向量的点乘为两个向量的长度与它们夹角余弦的积,所以$r11$可以表示为向量$P{x}$与$A{x}$的点积,所以旋转矩阵可以写为下面的形式

$$ {^AP}R = \begin{bmatrix} {P{x}\cdot Ax} & {P{y}\cdot Ax} & {P{z}\cdot Ax}\ {P{x}\cdot Ay} & {P{y}\cdot Ay} & {P{z}\cdot Ay}\ {P{x}\cdot Az} & {P{y}\cdot Az} & {P{z}\cdot A_z}\ \end{bmatrix} $$

将${^A_P}R$进行转置可得${^P_A}R$

$$ {^PA}R = \begin{bmatrix} {P{x}\cdot Ax} & {P{x}\cdot Ay} & {P{x}\cdot Az}\ {P{y}\cdot Ax} & {P{y}\cdot Ay} & {P{y}\cdot Az}\ {P{z}\cdot Ax} & {P{z}\cdot Ay} & {P{z}\cdot A_z}\ \end{bmatrix} $$

可以看出${^P_A}R$其实表示坐标系{P}作为参考坐标系下坐标系{A}的姿态,即 $$ {^P_A}R = {^A_P}R^{T} = {^A_P}R^{-1} $$

4.平移坐标变换

5.旋转坐标变换

6.左手还是右手

参考文档:

  • 机器人学导论