雅克比矩阵求导推导

首先,引入雅克比矩阵公式:

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=[u1u2une1e2en]

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˙2u˙ne˙1e˙2e˙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=oe0oi0

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˙

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
rpr三自由度机械臂的运动学模型可以通过雅可比矩阵来描述,其推导过程如下: 首先,我们需要确定机械臂末端执行器的位置和姿态。假设机械臂的基座坐标系为 $O_0$,末端执行器的坐标系为 $O_3$,则末端执行器的位置可以用三维向量表示为: $$ \boldsymbol{p} = \begin{bmatrix} x \\ y \\ z \end{bmatrix} $$ 末端执行器的姿态可以用欧拉角表示为 $\boldsymbol{\theta} = [\theta_1, \theta_2, \theta_3]$,其中 $\theta_1$、$\theta_2$、$\theta_3$ 分别表示绕 $x$、$y$、$z$ 轴的旋转角度。 接下来,我们需要确定机械臂各关节的坐标系和相对运动关系。假设机械臂的三个关节分别为 $J_1$、$J_2$、$J_3$,它们的坐标系分别为 $O_1$、$O_2$、$O_3$,则它们之间的相对位置和姿态关系可以用以下变换矩阵表示: $$ \boldsymbol{T}_{01} = \begin{bmatrix} \cos\theta_1 & -\sin\theta_1 & 0 & 0 \\ \sin\theta_1 & \cos\theta_1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}, \quad \boldsymbol{T}_{12} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos\theta_2 & -\sin\theta_2 & 0 \\ 0 & \sin\theta_2 & \cos\theta_2 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}, \quad \boldsymbol{T}_{23} = \begin{bmatrix} \cos\theta_3 & -\sin\theta_3 & 0 & 0 \\ \sin\theta_3 & \cos\theta_3 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} $$ 其中,$\boldsymbol{T}_{01}$ 表示从 $O_1$ 到 $O_0$ 的变换矩阵,$\boldsymbol{T}_{12}$ 表示从 $O_2$ 到 $O_1$ 的变换矩阵,$\boldsymbol{T}_{23}$ 表示从 $O_3$ 到 $O_2$ 的变换矩阵。 有了以上变换矩阵,我们可以通过正向运动学计算出末端执行器的位置和姿态。但是,反向运动学需要求解关节变量 $\theta_1$、$\theta_2$、$\theta_3$ 对末端执行器位置和姿态的导数,因此需要求出雅可比矩阵雅可比矩阵可以用以下公式计算: $$ \boldsymbol{J} = \begin{bmatrix} \frac{\partial p_x}{\partial \theta_1} & \frac{\partial p_x}{\partial \theta_2} & \frac{\partial p_x}{\partial \theta_3} \\ \frac{\partial p_y}{\partial \theta_1} & \frac{\partial p_y}{\partial \theta_2} & \frac{\partial p_y}{\partial \theta_3} \\ \frac{\partial p_z}{\partial \theta_1} & \frac{\partial p_z}{\partial \theta_2} & \frac{\partial p_z}{\partial \theta_3} \\ \frac{\partial \theta_1}{\partial t} & \frac{\partial \theta_2}{\partial t} & \frac{\partial \theta_3}{\partial t} \end{bmatrix} $$ 其中,$\frac{\partial p}{\partial \theta}$ 表示末端执行器位置对关节变量的导数,$\frac{\partial \theta}{\partial t}$ 表示关节变量对时间的导数,即关节速度。 根据链式法则,我们可以将 $\frac{\partial p}{\partial \theta}$ 分解为以下三个部分的乘积: $$ \frac{\partial p}{\partial \theta} = \frac{\partial p}{\partial O_3} \cdot \frac{\partial O_3}{\partial O_2} \cdot \frac{\partial O_2}{\partial \theta} $$ 其中,$\frac{\partial p}{\partial O_3}$ 表示末端执行器位置对 $O_3$ 坐标系的变换矩阵的导数,$\frac{\partial O_3}{\partial O_2}$ 表示 $O_3$ 坐标系对 $O_2$ 坐标系的变换矩阵的导数,$\frac{\partial O_2}{\partial \theta}$ 表示 $O_2$ 坐标系对关节变量的导数。 根据变换矩阵求导公式,可以得到: $$ \frac{\partial p}{\partial O_3} = \begin{bmatrix} \frac{\partial x}{\partial O_{3_{11}}} & \frac{\partial x}{\partial O_{3_{12}}} & \frac{\partial x}{\partial O_{3_{13}}} \\ \frac{\partial y}{\partial O_{3_{21}}} & \frac{\partial y}{\partial O_{3_{22}}} & \frac{\partial y}{\partial O_{3_{23}}} \\ \frac{\partial z}{\partial O_{3_{31}}} & \frac{\partial z}{\partial O_{3_{32}}} & \frac{\partial z}{\partial O_{3_{33}}} \end{bmatrix} $$ $$ \frac{\partial O_3}{\partial O_2} = \begin{bmatrix} \frac{\partial O_{3_{11}}}{\partial O_{2_{11}}} & \frac{\partial O_{3_{11}}}{\partial O_{2_{12}}} & \frac{\partial O_{3_{11}}}{\partial O_{2_{13}}} & 0 & 0 & 0 \\ \frac{\partial O_{3_{21}}}{\partial O_{2_{11}}} & \frac{\partial O_{3_{21}}}{\partial O_{2_{12}}} & \frac{\partial O_{3_{21}}}{\partial O_{2_{13}}} & 0 & 0 & 0 \\ \frac{\partial O_{3_{31}}}{\partial O_{2_{11}}} & \frac{\partial O_{3_{31}}}{\partial O_{2_{12}}} & \frac{\partial O_{3_{31}}}{\partial O_{2_{13}}} & 0 & 0 & 0 \\ 0 & 0 & 0 & \frac{\partial O_{3_{11}}}{\partial O_{2_{21}}} & \frac{\partial O_{3_{11}}}{\partial O_{2_{22}}} & \frac{\partial O_{3_{11}}}{\partial O_{2_{23}}} \\ 0 & 0 & 0 & \frac{\partial O_{3_{21}}}{\partial O_{2_{21}}} & \frac{\partial O_{3_{21}}}{\partial O_{2_{22}}} & \frac{\partial O_{3_{21}}}{\partial O_{2_{23}}} \\ 0 & 0 & 0 & \frac{\partial O_{3_{31}}}{\partial O_{2_{21}}} & \frac{\partial O_{3_{31}}}{\partial O_{2_{22}}} & \frac{\partial O_{3_{31}}}{\partial O_{2_{23}}} \end{bmatrix} $$ $$ \frac{\partial O_2}{\partial \theta} = \begin{bmatrix} \frac{\partial O_{2_{11}}}{\partial \theta_1} & \frac{\partial O_{2_{11}}}{\partial \theta_2} & \frac{\partial O_{2_{11}}}{\partial \theta_3} \\ \frac{\partial O_{2_{21}}}{\partial \theta_1} & \frac{\partial O_{2_{21}}}{\partial \theta_2} & \frac{\partial O_{2_{21}}}{\partial \theta_3} \\ \frac{\partial O_{2_{31}}}{\partial \theta_1} & \frac{\partial O_{2_{31}}}{\partial \theta_2} & \frac{\partial O_{2_{31}}}{\partial \theta_3} \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix} $$ 将以上三个矩阵相乘,得到 $\frac{\partial p}{\partial \theta}$。 同理,我们可以计算出关节变量对时间的导数 $\frac{\partial \theta}{\partial t}$,即关节速度。最终,将 $\frac{\partial p}{\partial \theta}$ 和 $\frac{\partial \theta}{\partial t}$ 组合成雅可比矩阵 $\boldsymbol{J}$,即可完成反向运动学的求解。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值