Skip to content

逆运动学

参考书目

《机器人建模与控制》[美] Mark W. Spong, Seth Hutchinson, M. Vidyasager

一般的逆运动学问题

给定一个\(4\times 4\)的齐次变换矩阵\(H = \begin{bmatrix}R & o\\ 0 & 1\end{bmatrix}\),寻找下列方程一个解或多个解: $$ (_n^0T)(q_1, q_2, …, q_n) = H $$ 其中: $$ (_n^0T)(q_1, q_2, …, q_n) = A_1(q_1)A_2(q_2)…A_n(q_n) $$

运动学解耦

适用条件:有6个关节且后3个关节轴线交于一点。 (解释:一共6个关节,所以会有0号到6号共7根连杆,也就会有\(z_0\)轴到\(z_6\)轴7条\(z\)轴。其中\(z_0\)轴连关节1,\(z_1\)轴连关节2,…,\(z_5\)轴连关节6。这里说的后3个关节轴线,指的是连关节4、5、6的\(z\)轴,也就是\(z_3\)\(z_4\)\(z_5\)

核心思想:以一个带球形手腕的六自由度机械臂为例,我们可以先求手腕中心(后3个关节轴线的交点)的位置——求前三个关节变量,再求手腕的姿态角度——求后三个关节变量。 这种方式将前三个关节变量与后三个关节变量解耦,简化了计算。

已知量:齐次变换矩阵\(H\)\(R\)\(o\)已知,即末端执行器相对于参考坐标系的位置坐标和姿态角度已知 $\((_6^0R)(q_1, q_2, …, q_6) = R\\ (_6^0o)(q_1, q_2, …, q_6) = o\)$

求解方式

  1. 求手腕中心的位置。 因为\(z_3, z_4, z_5\)交于同一点(手腕中心,记为\(^0o_c\))。只需要让\(o_c\)沿着\(z_5\)轴的方向平移\(d_6\)长度就能到达\(o_6\)的位置(已知信息中的\(o\))。所以可列式: $\(o = (^0o_c) + d_6 \cdot (_5^0R) \cdot \begin{bmatrix}0\\0\\1\end{bmatrix}\)$ 其中的\((_5^0R) \cdot \begin{bmatrix}0\\0\\1\end{bmatrix}\)代表\(z_5\)轴在参考坐标系中的姿态角度。因为本例(斯坦福机械臂)中,\(z_5\)轴与\(z_6\)轴重合,所以上式改写为 $\(o = (^0o_c) + d_6\cdot R\cdot \begin{bmatrix}0\\0\\1\end{bmatrix}\)$ \(o\)\(R\)都是已知量,\(d_6\)也是一个已知的系统定值,所以可以确定手腕中心在参考系下的坐标 $\((^0o_c) = \begin{bmatrix}x_c\\y_c\\z_c\end{bmatrix} = \begin{bmatrix}o_x\\o_y\\o_z\end{bmatrix} - \begin{bmatrix}d_6r_{13}\\d_6r_{23}\\d_6r_{33}\end{bmatrix}\)$ 手腕中心的位置只与前三个关节变量有关,从而可以计算出前三个关节变量(假设我们真的可以计算出来)
  2. 求手腕的姿态角度。 在上一小点,我们算出了前三个关节变量,于是可以求出\(_3^0R\). 因为 $\((_6^0R) = (_3^0R)(_6^3R)\)$ 所以可以求出手腕姿态角度 $\(\begin{aligned}(_6^3R) &= (_3^0R)^{-1}(_6^0R)\\ &= (_3^0R)^TR\end{aligned}\)$ 因为手腕姿态角度只与后三个关节变量有关,所以可以计算出后三个关节变量。