首先,引入雅克比矩阵公式:
J=[u1u2⋯une1e2⋯en]\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˙1u˙2⋯u˙ne˙1e˙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]
其中 ui=ei×ri\mathbf{u}_{i}=\mathbf{e}_{i} \times \mathbf{r}_{i}ui=ei×ri , u˙i=e˙i×ri+ei×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˙ ,我们已知 ei\mathbf{e}_{i}ei 、ri\mathbf{r}_{i}ri
ei\mathbf{e}_{i}ei :坐标系{i}的Z轴单位方向向量在基坐标系下{0}下的坐标,由 Ti0T_{\mathrm{i}}^{0}Ti0 的第三列的前三个元素给出
ri\mathbf{r}_{i}ri:ri=oe0−oi0\mathbf{r}_{i}=\mathbf{o}_{e}^{0}-\mathbf{o}_{i}^{0}ri=oe0−oi0
oi0\mathbf{o}_{i}^{0}oi0 为坐标系{i}原点在基坐标{0}下的三维坐标,由 Ti0T_{\mathrm{i}}^{0}Ti0 的第四列的前三个元素给出
ri\mathbf{r}_{i}ri 为在基坐标系下,坐标系{i}原点到末端点的距离
ri\mathbf{r}_{i}ri 还有另一种表示方式:ri=ai+ai+1+⋯+an\mathbf{r}_{i}=\mathbf{a}_{i}+\mathbf{a}_{i+1}+\cdots +\mathbf{a}_{n}ri=ai+ai+1+⋯+an (式中的 ai\mathbf{a}_{i}ai 必须化为基坐标下表示)
其中 aii\mathbf{a}_{i}^{i}aii 为坐标系{i+1}的原点在坐标系{i}下的三维坐标,由 Ti+iiT_{\mathrm{i+i}}^{i}Ti+ii 的的第四列的前三个元素给出,若要化为基坐标下表示,需乘以一个旋转变换矩阵 Ri0\mathbf{R}_{i}^{0}Ri0
需要我们求:e˙i\dot{\mathbf{e}}_{i}e˙i 、r˙i\dot{\mathbf{r}}_{i}r˙i
其中 e˙i=ωi×ei\dot{\mathbf{e}}_{i}=\boldsymbol{\omega}_{i} \times \mathbf{e}_{i}e˙i=ωi×ei 、r˙i=ωi×ai+ωi+1×ai+1+⋯+ωn×an\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+1i+1=Rii+1ωii+θ˙i+1zi+1i+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=Ri+10ωi+1i+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×ei\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×ai+ωi+1×ai+1+⋯+ωn×an\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×ri+ei×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˙ )