首先,引入雅克比矩阵公式:
J = [ u 1 u 2 ⋯ u n e 1 e 2 ⋯ e n ] \mathbf{J}=\left[\begin{array}{c} \begin{array}{lll}\mathbf{u}_{1} & \mathbf{u}_{2} & \cdots & \mathbf{u}_{n}\end{array} \\ \begin{array}{lll}\mathbf{e}_{1} & \mathbf{e}_{2} & \cdots & \mathbf{e}_{n}\end{array}\end{array}\right] J=[u1u2⋯une1e2⋯en]
J ˙ = [ u ˙ 1 u ˙ 2 ⋯ u ˙ n e ˙ 1 e ˙ 2 ⋯ e ˙ n ] \dot{\mathbf{J}}=\left[\begin{array}{c} \begin{array}{lll}\dot{\mathbf{u}}_{1} & \dot{\mathbf{u}}_{2} & \cdots & \dot{\mathbf{u}}_{n}\end{array} \\ \begin{array}{lll}\dot{\mathbf{e}}_{1} & \dot{\mathbf{e}}_{2} & \cdots & \dot{\mathbf{e}}_{n}\end{array}\end{array}\right] J˙=[u˙1u˙2⋯u˙ne˙1e˙2⋯e˙n]
其中 u i = e i × r i \mathbf{u}_{i}=\mathbf{e}_{i} \times \mathbf{r}_{i} ui=ei×ri , u ˙ i = e ˙ i × r i + e i × r ˙ i \dot{\mathbf{u}}_{i}=\dot{\mathbf{e}}_{i} \times \mathbf{r}_{i}+\mathbf{e}_{i} \times \dot{\mathbf{r}}_{i} u˙i=e˙i×ri+ei×r˙i
为了求得 J ˙ \dot{\mathbf{J}} J˙ ,我们已知 e i \mathbf{e}_{i} ei 、 r i \mathbf{r}_{i} ri
e i \mathbf{e}_{i} ei :坐标系{i}的Z轴单位方向向量在基坐标系下{0}下的坐标,由 T i 0 T_{\mathrm{i}}^{0} Ti0 的第三列的前三个元素给出
r i \mathbf{r}_{i} ri: r i = o e 0 − o i 0 \mathbf{r}_{i}=\mathbf{o}_{e}^{0}-\mathbf{o}_{i}^{0} ri=oe0−oi0
o i 0 \mathbf{o}_{i}^{0} oi0 为坐标系{i}原点在基坐标{0}下的三维坐标,由 T i 0 T_{\mathrm{i}}^{0} Ti0 的第四列的前三个元素给出
r i \mathbf{r}_{i} ri 为在基坐标系下,坐标系{i}原点到末端点的距离
r i \mathbf{r}_{i} ri 还有另一种表示方式: r i = a i + a i + 1 + ⋯ + a n \mathbf{r}_{i}=\mathbf{a}_{i}+\mathbf{a}_{i+1}+\cdots +\mathbf{a}_{n} ri=ai+ai+1+⋯+an (式中的 a i \mathbf{a}_{i} ai 必须化为基坐标下表示)
其中 a i i \mathbf{a}_{i}^{i} aii 为坐标系{i+1}的原点在坐标系{i}下的三维坐标,由 T i + i i T_{\mathrm{i+i}}^{i} Ti+ii 的的第四列的前三个元素给出,若要化为基坐标下表示,需乘以一个旋转变换矩阵 R i 0 \mathbf{R}_{i}^{0} Ri0
需要我们求: e ˙ i \dot{\mathbf{e}}_{i} e˙i 、 r ˙ i \dot{\mathbf{r}}_{i} r˙i
其中 e ˙ i = ω i × e i \dot{\mathbf{e}}_{i}=\boldsymbol{\omega}_{i} \times \mathbf{e}_{i} e˙i=ωi×ei 、 r ˙ i = ω i × a i + ω i + 1 × a i + 1 + ⋯ + ω n × a n \dot{\mathbf{r}}_{i}=\boldsymbol{\omega}_{i} \times \mathbf{a}_{i}+\boldsymbol{\omega}_{i+1} \times \mathbf{a}_{i+1}+\cdots+\boldsymbol{\omega}_{n} \times \mathbf{a}_{n} r˙i=ωi×ai+ωi+1×ai+1+⋯+ωn×an
求解 ω i \boldsymbol{\omega}_{i} ωi :
ω i + 1 i + 1 = R i i + 1 ω i i + θ ˙ i + 1 z i + 1 i + 1 \boldsymbol{\omega}_{i+1}^{i+1}=\mathbf{R}_{i}^{i+1} \boldsymbol{\omega}_{i}^{i}+\dot{\theta}_{i+1} \mathbf{z}_{i+1}^{i+1} ωi+1i+1=Rii+1ωii+θ˙i+1zi+1i+1
ω i + 1 = R i + 1 0 ω i + 1 i + 1 \boldsymbol{\omega}_{i+1}=\mathbf{R}_{i+1}^{0}\boldsymbol{\omega}_{i+1}^{i+1} ωi+1=Ri+10ωi+1i+1
可以求得 e ˙ i \dot{\mathbf{e}}_{i} e˙i :
e ˙ i = ω i × e i \dot{\mathbf{e}}_{i}=\boldsymbol{\omega}_{i} \times \mathbf{e}_{i} e˙i=ωi×ei
也可求得 r ˙ i \dot{\mathbf{r}}_{i} r˙i :
r ˙ i = ω i × a i + ω i + 1 × a i + 1 + ⋯ + ω n × a n \dot{\mathbf{r}}_{i}=\boldsymbol{\omega}_{i} \times \mathbf{a}_{i}+\boldsymbol{\omega}_{i+1} \times \mathbf{a}_{i+1}+\cdots+\boldsymbol{\omega}_{n} \times \mathbf{a}_{n} r˙i=ωi×ai+ωi+1×ai+1+⋯+ωn×an
综上,所有参数求得,最后求得
u ˙ i = e ˙ i × r i + e i × r ˙ i \dot{\mathbf{u}}_{i}=\dot{\mathbf{e}}_{i} \times \mathbf{r}_{i}+\mathbf{e}_{i} \times \dot{\mathbf{r}}_{i} u˙i=e˙i×ri+ei×r˙i
参考文献:《Fundamentals of Robotic Mechanical Systems》5.5节
matlab seriaLink 也有相应的求雅克比矩阵的函数 jacob_dot (注:该函数求的是雅克比矩阵导数与关节速度的乘积,即 J ˙ q ˙ \dot{\mathbf{J}}\dot{\mathbf{q}} J˙q˙ )