【关于四足机器人那些事】雅克比矩阵

一、引入

假设有6个函数,每个函数有6个独立的变量,即:

y 1 = f 1 ( x 1 , x 2 , x 3 , x 4 , x 5 , x 6 ) y 2 = f 2 ( x 1 , x 2 , x 3 , x 4 , x 5 , x 6 ) y 6 = f 6 ( x 1 , x 2 , x 3 , x 4 , x 5 , x 6 ) \begin{matrix} y_1 = f_1(x_1, x_2, x_3, x_4, x_5, x_6)\\ y_2 = f_2(x_1, x_2, x_3, x_4, x_5, x_6)\\ \vdots \\ y_6 = f_6(x_1, x_2, x_3, x_4, x_5, x_6)\\ \end{matrix}

我们用矢量形式表达上式,即:

Y = F ( X ) Y = F(X)

现在,如果我们要计算 y i y_i 的微分关于 x i x_i 的微分的函数,通过多元函数求导法则,可以计算出:

δ y 1 = f 1 x 1 δ x 1 + f 1 x 2 δ x 2 + + f 1 x 6 δ x 6 δ y 2 = f 2 x 1 δ x 1 + f 2 x 2 δ x 2 + + f 2 x 6 δ x 6 δ y 6 = f 6 x 1 δ x 1 + f 6 x 2 δ x 2 + + f 6 x 6 δ x 6 \begin{matrix} \delta y_1 = \frac{\partial f_1}{\partial x_1}\delta x_1 + \frac{\partial f_1}{\partial x_2}\delta x_2 + \cdots + \frac{\partial f_1}{\partial x_6}\delta x_6 \\ \\ \delta y_2 = \frac{\partial f_2}{\partial x_1}\delta x_1 + \frac{\partial f_2}{\partial x_2}\delta x_2 + \cdots + \frac{\partial f_2}{\partial x_6}\delta x_6\\ \vdots \\ \delta y_6 = \frac{\partial f_6}{\partial x_1}\delta x_1 + \frac{\partial f_6}{\partial x_2}\delta x_2 + \cdots + \frac{\partial f_6}{\partial x_6}\delta x_6 \end{matrix}

同样,我们以矢量形式表示:

δ Y = F X δ X (1) \delta Y = \frac{\partial{F}}{\partial{X}}\delta X \tag{1}

式(1)中的 F X \frac{\partial{F}}{\partial{X}} 6 × 6 6\times6 偏导数矩阵。它,就是我们所说的雅克比矩阵 J J

速度映射

如果 f 1 ( X ) f_1(X) f 6 ( X ) f_6(X) 都是非线性函数,那么,这些偏导数都是关于 x i x_i 的函数,我们可以用以下式子表达:

δ Y = J ( X ) δ X (2) \delta Y = J(X) \delta X \tag{2}

式(2)两边同时除以时间微分 d t d_t ,我们就可以将雅克比矩阵看作是 X X 中的速度映射为 Y Y 中的速度:

Y ˙ = J ( X ) X ˙ \dot{Y} = J(X)\dot X

在任一瞬间,X都有一个确定的值, J ( X ) J(X) 是个线性变换,在每一新时刻,如果X发生改变, J ( X ) J(X) 也会发生改变

在机器人学中,通常使用雅克比将关节速度与操作臂末端的速度联系起来:

v = J ( θ ) Θ ˙ (3) v = J(\theta)\dot \Theta \tag 3

其中, Θ \Theta 为关节角组成的向量, v v 为速度向量。对于6关节机械臂,雅克比矩阵为 J R 6 × 6 J \in \mathbb{R}^{6\times6} ,关节角 Θ R 6 × 1 \Theta \in \mathbb{R}^{6\times1} ,速度 v R 6 × 1 v \in \mathbb{R}^{6\times1} ,而 v v 是由一个 3 × 1 3\times1 的线速度和一个 3 × 1 3\times1 的角速度所组成,表达为:

v = [ v ω ] v = \begin{bmatrix} v\\ \omega \end{bmatrix}

对于两连杆机构,如下图,我们很容易写出它的关节速度(世界坐标系下)与执行器末端速度的关系:

v w = [ l 1 s 1 θ ˙ 1 l 2 s 12 ( θ ˙ 1 + θ ˙ 2 ) l 1 c 1 θ ˙ 1 + l 2 c 12 ( θ ˙ 1 θ ˙ 2 ) 0 ] = [ l 1 s 1 l 2 s 12 l 2 s 12 l 1 c 1 + l 2 c 12 l 2 c 12 0 0 0 ] [ θ ˙ 1 θ ˙ 2 0 ] v_w = \begin{bmatrix} -l_1s_1\dot\theta_1-l_2s_{12}(\dot \theta_1 + \dot \theta_2)\\ l_1c_1\dot \theta_1 +l_2c_{12}(\dot \theta_1 \dot \theta_2)\\ 0 \end{bmatrix} = \begin{bmatrix} -l_1s_1-l_2s_{12} & -l_2s_{12}\\ l_1c_1 + l_2c_{12} & l_2c_{12} \\ 0 &0&0 \end{bmatrix} \begin{bmatrix} \dot \theta_1\\ \dot \theta_2 \\ 0 \end{bmatrix}

以及相对于执行器末端的速度:

v b = [ l 1 s 2 θ ˙ 1 l 1 c 2 θ ˙ 1 + l 2 ( θ ˙ 1 + θ ˙ 2 ) 0 ] = [ l 1 s 2 0 0 l 1 c 2 + l 2 l 2 0 0 0 0 ] [ θ ˙ 1 θ ˙ 2 0 ] v_b = \begin{bmatrix} l_1s_2 \dot \theta_1 \\ l_1c_2\dot \theta_1 + l_2(\dot \theta_1 +\dot \theta_2) \\ 0 \end{bmatrix} = \begin{bmatrix} l_1s_2 & 0 &0\\ l_1c_2+l_2 & l_2 &0 \\ 0& 0&0 \end{bmatrix} \begin{bmatrix} \dot \theta_1\\ \dot \theta_2 \\ 0 \end{bmatrix}

因此,我们能够算出世界坐标系的雅克比矩阵为:

J w ( Θ ) = [ l 1 s 1 l 2 s 12 l 2 s 12 l 1 c 1 + l 2 c 12 l 2 c 12 ] J_w(\Theta) = \begin{bmatrix} -l_1s_1-l_2s_{12} & -l_2s_{12}\\ l_1c_1 + l_2c_{12} & l_2c_{12} \end{bmatrix}

末端执行器坐标系下的雅克比:

J b ( Θ ) = [ l 1 s 2 0 l 1 c 2 + l 2 l 2 ] J_b(\Theta) = \begin{bmatrix} l_1s_2 & 0\\ l_1c_2+l_2 & l_2 \end{bmatrix}
在这里插入图片描述

发布了75 篇原创文章 · 获赞 722 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/weixin_41045354/article/details/105452971