跳转至

运动学

运动学是描述的艺术。

这里使用 \(\Phi\) 表示保距变换,即 \(\Phi: \mathbb{R}^n \to \mathbb{R}^n\),满足 \(\|\Phi(x) - \Phi(y)\| = \|x - y\|\)。一般来说保距变换表示先旋转后平移的效果。保距变换的描述形式有很多种,但是其作用形式是一样的。我们对不同的描述形式稍作区分,但是在具体的公式中并不明确指出。

  • \(\Phi_h\) 齐次变换矩阵
  • \(\Phi_{qt}\) 旋转单位四元数+平移向量
  • \(\Phi_{dq}\) 对偶四元数

使用 dh 参数计算末端位姿

dh 参数是一种机器人关节表示方法,一般来说对于每个关节有四个参数,分别是 \(\theta, d, a, \alpha\)。其中 \(\theta\) 表示关节的旋转角度,\(d\) 表示关节的平移距离,\(a\) 表示关节的长度,\(\alpha\) 表示关节的旋转角度。

计算末端位姿的过程本质上是计算从基座姿态到末端姿态的保距变换 \(\Phi_{io}\) 。进一步地,我们将这个变换过程拆解为多个保距变换的乘积,即 \(\Phi = \Phi_1 \Phi_2 \cdots \Phi_n\)。这里的 \(\Phi_i\) 表示第 \(i\) 个关节的变换。

由此,问题转化为如何计算每一节关节所代表的保距变换。此时问题就回到了从 dh 计算对应关节的保距变换上。假设每个关节的 dh 参数为 \(\theta_i, d_i, a_i, \alpha_i\),那么对应的保距变换为

\[ \Phi=\Phi _{\text{沿x轴平移} a}* \Phi _{\text{绕x轴旋转} \alpha}* \Phi _{\text{沿z轴平移} d}* \Phi _{\text{绕z轴旋转} \theta} \]

在不同表述下自然有不同的形式

\[ \Phi_h = \begin{bmatrix} \cos \theta & -\sin \theta & 0 & a \\ \sin \theta \cos \alpha & \cos \theta \cos \alpha & -\sin \alpha & -d\sin \alpha \\ \sin \theta \sin \alpha & \cos \theta \sin \alpha & \cos \alpha & d\cos \alpha \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \]

如此如此,这般这般

于是你可以轻松的计算出每个关节所代表的保距变换,作用在基座位姿上就得到了末端位姿。