位姿描述和坐标变换

引子

想象我们用手去拿起桌子上的杯子,我们会观察杯子所处的状态调整我们的手的状态。我们观察杯子状态是观察杯子的位姿,调整手状态也为调整手的位姿。位姿包括位置和姿态。调整手状态的过程即为坐标变换,将一个位姿转换为另一个位姿。那么位姿和坐标变换如何表达呢?
在这里插入图片描述

首先考虑刚体具有几个自由度?

1. 刚体描述

在这里插入图片描述

二维平面的刚体描述

如上图所示,对于二维平面的刚体,其可以沿着X轴和Y轴移动,可以绕着某个垂直平面的固定轴转动。因此二维平面刚体具有三个自由度:

  • 两个自由度的移动
  • 一个自由度的转动

三维空间的刚体描述

三维空间需要三个相互垂直的X、Y和Z坐标轴描述。三维平面的刚体可以沿着X轴、Y轴和Z轴移动,也可以绕着三维空间的X轴、Y轴和Z轴旋转。因此三维空间刚体具有六个自由度:

  • 三个自由度的移动
  • 三个自由度的转动

三维空间的刚体的三自由度移动和三自由度转动如何描述呢?如下图所示:
在这里插入图片描述

  • 其移动可以使用坐标系原点位置判定
  • 其转动可以使用坐标系姿态判定

使用什么描述刚体的位姿,即移动和转动呢?

2. 位姿描述

首先建立参考坐标系{A}\{ A \}{A}和刚体坐标系{B}\{ B \}{B}

位置描述

刚体位置可以使用含有三个元素的位置矢量进行表示,如下图所示。
APBORG=[PxPyPz] ^{A}\textrm{P}_{BORG} = \begin{bmatrix} P_x\\ P_y\\ P_z \end{bmatrix} APBORG=PxPyPz
在这里插入图片描述

姿态描述

刚体姿态可以使用刚体坐标系{B}\{ B \}{B}相对于参考坐标系{A}\{ A \}{A}的主轴矢量AX^B^{A}\hat{X}_{B}AX^BAY^B^{A}\hat{Y}_{B}AY^BAZ^B^{A}\hat{Z}_{B}AZ^B进行表示。通过将刚体坐标系{B}\{ B \}{B}的主轴矢量X^B\hat{X}_{B}X^BY^B\hat{Y}_{B}Y^BZ^B\hat{Z}_{B}Z^B投影到参考坐标系{A}\{ A \}{A}的主轴向量X^A\hat{X}_{A}X^AY^A\hat{Y}_{A}Y^AZ^A\hat{Z}_{A}Z^A得到。因此刚体姿态可以使用旋转矩阵表示:
BAR=(AX^B,AY^B,AZ^B)=[X^B⋅X^AY^B⋅X^AZ^B⋅X^AX^B⋅Y^AY^B⋅Y^AZ^B⋅Y^AX^B⋅Z^AY^B⋅Z^AZ^B⋅Z^A] _{B}^{A}\textrm{R} = (^{A}\hat{X}_{B}, ^{A}\hat{Y}_{B}, ^{A}\hat{Z}_{B})= \begin{bmatrix} \hat{X}_{B} \cdot \hat{X}_{A} & \hat{Y}_{B} \cdot \hat{X}_{A} & \hat{Z}_{B} \cdot \hat{X}_{A} \\ \hat{X}_{B} \cdot \hat{Y}_{A} & \hat{Y}_{B} \cdot \hat{Y}_{A} & \hat{Z}_{B} \cdot \hat{Y}_{A} \\ \hat{X}_{B} \cdot \hat{Z}_{A} & \hat{Y}_{B} \cdot \hat{Z}_{A} & \hat{Z}_{B} \cdot \hat{Z}_{A} \end{bmatrix} BAR=(AX^B,AY^B,AZ^B)=X^BX^AX^BY^AX^BZ^AY^BX^AY^BY^AY^BZ^AZ^BX^AZ^BY^AZ^BZ^A
进一步观察,参考坐标系{A}\{ A \}{A}相对于刚体坐标系{B}\{ B \}{B}的姿态表示为:
ABR=[BX^ABY^ABZ^A]=[X^A⋅X^BX^A⋅Y^BX^A⋅Z^BY^A⋅X^BY^A⋅Y^BY^A⋅Z^BZ^A⋅X^BZ^A⋅Y^BZ^A⋅Z^B]ABR=BART _{A}^{B}\textrm{R} = \begin{bmatrix} ^{B}\hat{X}_{A}\\ ^{B}\hat{Y}_{A}\\ ^{B}\hat{Z}_{A} \end{bmatrix} = \begin{bmatrix} \hat{X}_{A} \cdot \hat{X}_{B} & \hat{X}_{A} \cdot \hat{Y}_{B} & \hat{X}_{A} \cdot \hat{Z}_{B} \\ \hat{Y}_{A} \cdot \hat{X}_{B} & \hat{Y}_{A} \cdot \hat{Y}_{B} & \hat{Y}_{A} \cdot \hat{Z}_{B} \\ \hat{Z}_{A} \cdot \hat{X}_{B} & \hat{Z}_{A} \cdot \hat{Y}_{B} & \hat{Z}_{A} \cdot \hat{Z}_{B} \end{bmatrix} \\ _{A}^{B}\textrm{R} = _{B}^{A}\textrm{R}^{T} ABR=BX^ABY^ABZ^A=X^AX^BY^AX^BZ^AX^BX^AY^BY^AY^BZ^AY^BX^AZ^BY^AZ^BZ^AZ^BABR=BART

位姿描述

刚体坐标系{B}\{ B \}{B}的位姿表示为:
{B}={BAR,APBORG} \{B\}=\{ _{B}^{A}\textrm{R}, ^{A}\textrm{P}_{BORG} \} {B}={BAR,APBORG}

如何描述坐标系{B}\{ B \}{B}相对于坐标系{A}\{ A \}{A}的关系呢?

3. 坐标变换

在这里插入图片描述
位置矢量和旋转矩阵不但可以描述刚体位姿,还可以用来表示对矢量或者点进行移动变换和旋转变换:
AP=BARBP+APBORG[AP1]=[BARAPBORG01]⋅[BP1] ^{A}\textrm{P}=_{B}^{A}\textrm{R}^{B}\textrm{P}+^{A}\textrm{P}_{BORG} \\ \begin{bmatrix} ^{A}\textrm{P}\\ 1 \end{bmatrix}=\begin{bmatrix} _{B}^{A}\textrm{R} & ^{A}\textrm{P}_{BORG} \\ 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} ^{B}\textrm{P}\\ 1 \end{bmatrix} AP=BARBP+APBORG[AP1]=[BAR0APBORG1][BP1]
可以进一步定义变换矩阵:
BAT=[BARAPBORG01]AP=BATBP _{B}^{A}\textrm{T}=\begin{bmatrix} _{B}^{A}\textrm{R} & ^{A}\textrm{P}_{BORG} \\ 0 & 1 \end{bmatrix} \\ ^{A}\textrm{P}=_{B}^{A}\textrm{T}^{B}\textrm{P} BAT=[BAR0APBORG1]AP=BATBP
位姿(坐标变换)具有六个自由度,坐标变换矩阵TTT具有四个基础矩阵:

  • 1个位移矩阵:

Trans(px,py,pz)=[100px010py001pz0001] Trans(p_x, p_y, p_z) = \begin{bmatrix} 1 & 0 & 0 & p_x\\ 0 & 1 & 0 & p_y\\ 0 & 0 & 1 & p_z\\ 0 & 0 & 0 & 1 \end{bmatrix} Trans(px,py,pz)=100001000010pxpypz1

  • 三个旋转矩阵扩展为变换矩阵:

Rot(x,α)=[10000cos(α)sin(α)00−sin(α)cos(α)00001]Rot(y,α)=[cos(α)0−sin(α)00100sin(α)0cos(α)00001]Rot(z,α)=[cos(α)sin(α)00−sin(α)cos(α)0000000001] Rot(x,\alpha) = \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & cos(\alpha) & sin(\alpha) & 0\\ 0 & -sin(\alpha) & cos(\alpha) & 0\\ 0 & 0 & 0 & 1 \end{bmatrix} \\ Rot(y,\alpha) = \begin{bmatrix} cos(\alpha) & 0 & -sin(\alpha) & 0\\ 0 & 1 & 0 & 0\\ sin(\alpha) & 0 & cos(\alpha) & 0\\ 0 & 0 & 0 & 1 \end{bmatrix} \\ Rot(z,\alpha) = \begin{bmatrix} cos(\alpha) & sin(\alpha) & 0 & 0\\ -sin(\alpha) & cos(\alpha) & 0 & 0\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 1 \end{bmatrix} Rot(x,α)=10000cos(α)sin(α)00sin(α)cos(α)00001Rot(y,α)=cos(α)0sin(α)00100sin(α)0cos(α)00001Rot(z,α)=cos(α)sin(α)00sin(α)cos(α)0000000001

坐标系{B}\{ B \}{B}与坐标系{A}\{ A \}{A}的相对关系如何转换?

4. 逆变换

已知坐标系{B}\{ B \}{B}相对于坐标系{A}\{ A \}{A},即BAT_{B}^{A}\textrm{T}BAT已知,计算坐标系{A}\{ A \}{A}相对于坐标系{B}\{ B \}{B}的变换矩阵ABT_{A}^{B}\textrm{T}ABT

旋转矩阵为:
ABR=BART _{A}^{B}\textrm{R} = _{B}^{A}\textrm{R}^{T} ABR=BART
APBORG^{A}\textrm{P}_{BORG}APBORG转换为坐标系{B}\{ B \}{B}的描述为:
B(APBORG)=ABRAPBORG+BPAORG ^{B}(^{A}\textrm{P}_{BORG})=_{A}^{B}\textrm{R}^{A}\textrm{P}_{BORG}+^{B}\textrm{P}_{AORG} B(APBORG)=ABRAPBORG+BPAORG
公式左边为0,可得:
BPAORG=−ABRAPBORG=−BARTAPBORG ^{B}\textrm{P}_{AORG} = -_{A}^{B}\textrm{R}^{A}\textrm{P}_{BORG}=-_{B}^{A}\textrm{R}^{T}{^{A}\textrm{P}_{BORG}} BPAORG=ABRAPBORG=BARTAPBORG
坐标系{A}\{ A \}{A}相对于坐标系{B}\{ B \}{B}的变换矩阵ABT_{A}^{B}\textrm{T}ABT为:

ABT=[BART−BARTAPBORG01]ABT=BAT−1 _{A}^{B}\textrm{T}=\begin{bmatrix} _{B}^{A}\textrm{R}^{T} & -_{B}^{A}\textrm{R}^{T}{^{A}\textrm{P}_{BORG}} \\ 0 & 1 \end{bmatrix} \\ _{A}^{B}\textrm{T} = _{B}^{A}\textrm{T}^{-1} ABT=[BART0BARTAPBORG1]ABT=BAT1

参考

台大林沛群机器人:https://www.bilibili.com/video/BV1v4411H7ez?spm_id_from=333.851.header_right.fav_list.click

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值