机器人雅可比矩阵

一、雅可比矩阵的作用

机器人雅克比矩阵描述的是关节速度和末端笛卡尔速度和角速度之间的关系。它的行数等于机器人在空间中自由度的数目,列数等于机器人关节的数目。

二、雅可比矩阵的求解

1、矢量积法

对于移动关节 z i \boldsymbol{z}_i zi
仅有移动,仅对末端执行器产生一个与 z i \boldsymbol{z}_i zi方向相同的角速度,大小为 q ˙ i \dot{q}_i q˙i,因此:
[ v w ] = [ 0 z i ] q ˙ i \begin{bmatrix}\boldsymbol{v}\\ \boldsymbol{w}\\ \end{bmatrix}=\begin{bmatrix} \boldsymbol{0}\\ \boldsymbol{z}_i\\ \end{bmatrix}\dot{q}_i [vw]=[0zi]q˙i
所以,雅可比矩阵第 i i i列为:
J i = [ 0 z i ] \boldsymbol{J}_i=\begin{bmatrix} \boldsymbol{0}\\ \boldsymbol{z}_i\\ \end{bmatrix} Ji=[0zi]
对于转动关节 z i \boldsymbol{z}_i zi
仅有转动,对末端执行器产生一个大小为 q ˙ i \dot{q}_i q˙i,方向与 z i \boldsymbol{z}_i zi方向相同的角速度,以及一个 ( z i × 0 p i p e ) q ˙ i (\boldsymbol{z}_i \times ^{0}\boldsymbol{p}_i\boldsymbol{p}_e)\dot{q}_i (zi×0pipe)q˙i的线速度,因此:
[ v w ] = [ z i × 0 p i p e z i ] q ˙ i \begin{bmatrix}\boldsymbol{v}\\ \boldsymbol{w}\\ \end{bmatrix}=\begin{bmatrix} \boldsymbol{z}_i \times ^{0}\boldsymbol{p}_i\boldsymbol{p}_e\\ \boldsymbol{z}_i\\ \end{bmatrix}\dot{q}_i [vw]=[zi×0pipezi]q˙i
其中, 0 p i p e ^{0}\boldsymbol{p}_i\boldsymbol{p}_e 0pipe为末端执行器原点相对于坐标系{ i i i}的位置矢量在世界坐标系{ 0 0 0}下的表示,故 0 p i p e ^{0}\boldsymbol{p}_i\boldsymbol{p}_e 0pipe= 0 R i ⋅ i p i p e ^{0}\boldsymbol{R}_i \cdot ^{i}\boldsymbol{p}_i\boldsymbol{p}_e 0Riipipe
所以,雅可比矩阵第 i i i列为:
J i = [ z i × ( 0 R i ⋅ i p i p e ) z i ] \boldsymbol{J}_i=\begin{bmatrix} \boldsymbol{z}_i \times (^{0}\boldsymbol{R}_i \cdot ^{i}\boldsymbol{p}_i\boldsymbol{p}_e)\\ \boldsymbol{z}_i\\ \end{bmatrix} Ji=[zi×(0Riipipe)zi]

2、微分变换法

x , y , z x,y,z x,y,z旋转 θ \theta θ角的旋转矩阵为:
R ( x , θ ) = [ 1 0 0 0 c o s θ − s i n θ 0 s i n θ c o s θ ] R ( y , θ ) = [ c o s θ 0 s i n θ 0 1 0 − s i n θ 0 c o s θ ] R ( z , θ ) = [ c o s θ − s i n θ 0 s i n θ c o s θ 0 0 0 1 ] \boldsymbol{R}(x,\theta)=\begin{bmatrix}1&0&0\\ 0&cos\theta&-sin\theta\\ 0&sin\theta&cos\theta\\ \end{bmatrix} \boldsymbol{R}(y,\theta)=\begin{bmatrix}cos\theta&0&sin\theta\\ 0&1&0\\ -sin\theta&0&cos\theta\\ \end{bmatrix} \boldsymbol{R}(z,\theta)=\begin{bmatrix}cos\theta&-sin\theta&0\\ sin\theta&cos\theta&0\\ 0&0&1\\ \end{bmatrix} R(x,θ)= 1000cosθsinθ0sinθcosθ R(y,θ)= cosθ0sinθ010sinθ0cosθ R(z,θ)= cosθsinθ0sinθcosθ0001
θ \theta θ极小时 s i n θ = θ sin\theta=\theta sinθ=θ, c o s θ = 1 cos\theta=1 cosθ=1,记分别绕 x , y , z x,y,z x,y,z旋转的角度为 δ x , δ y , δ z \delta_x,\delta_y,\delta_z δx,δy,δz,则绕 x , y , z x,y,z x,y,z的旋转矩阵可以写为:
R ( x , δ x ) = [ 1 0 0 0 1 − δ x 0 δ x 1 ] R ( y , δ y ) = [ 1 0 δ y 0 1 0 − δ y 0 1 ] R ( z , δ z ) = [ 1 − δ z 0 δ z 1 0 0 0 1 ] \boldsymbol{R}(x,\delta_x)=\begin{bmatrix}1&0&0\\ 0&1&-\delta_x\\ 0&\delta_x&1\\ \end{bmatrix} \boldsymbol{R}(y,\delta_y)=\begin{bmatrix}1&0&\delta_y\\ 0&1&0\\ -\delta_y&0&1\\ \end{bmatrix} \boldsymbol{R}(z,\delta_z)=\begin{bmatrix}1&-\delta_z&0\\ \delta_z&1&0\\ 0&0&1\\ \end{bmatrix} R(x,δx)= 10001δx0δx1 R(y,δy)= 10δy010δy01 R(z,δz)= 1δz0δz10001
因此,旋转矩阵可以写为:
R = R ( x , δ x ) R ( y , δ y ) R ( z , δ z ) = [ 1 − δ z δ y δ z 1 − δ x − δ y δ x 1 ] \boldsymbol{R}=\boldsymbol{R}(x,\delta_x)\boldsymbol{R}(y,\delta_y)\boldsymbol{R}(z,\delta_z)=\begin{bmatrix}1&-\delta_z&\delta_y\\ \delta_z&1&-\delta_x\\ -\delta_y&\delta_x&1\\ \end{bmatrix} R=R(x,δx)R(y,δy)R(z,δz)= 1δzδyδz1δxδyδx1
当微分平移向量为 δ d = d x i + d y j + d z k \boldsymbol{\delta}_d=d_x\boldsymbol{i}+d_y\boldsymbol{j}+d_z\boldsymbol{k} δd=dxi+dyj+dzk时,结合上述旋转矩阵可以写出变换矩阵为:
T = [ 1 − δ z δ y d x δ z 1 − δ x d y − δ y δ x 1 d z 0 0 0 1 ] \boldsymbol{T}=\begin{bmatrix}1&-\delta_z&\delta_y&d_x\\ \delta_z&1&-\delta_x&d_y\\ -\delta_y&\delta_x&1&d_z\\0&0&0&1 \end{bmatrix} T= 1δzδy0δz1δx0δyδx10dxdydz1
对变换矩阵 i T i + 1 ^{i}\boldsymbol{T}_{i+1} iTi+1,它对坐标系{ i i i}的微分变换可以表示为:
i T i + 1 + d i T i + 1 = i T i + 1 ⋅ T r a n ( δ x , δ y , δ z , d ) d i T i + 1 = i T i + 1 ⋅ ( T r a n ( δ x , δ y , δ z , d ) − I ) ^{i}\boldsymbol{T}_{i+1}+d^{i}\boldsymbol{T}_{i+1}=^{i}\boldsymbol{T}_{i+1}\cdot\boldsymbol{Tran}(\delta_x,\delta_y,\delta_z,d)\\ d^{i}\boldsymbol{T}_{i+1}=^{i}\boldsymbol{T}_{i+1}\cdot(\boldsymbol{Tran}(\delta_x,\delta_y,\delta_z,d)-\boldsymbol{I}) iTi+1+diTi+1=iTi+1Tran(δx,δy,δz,d)diTi+1=iTi+1(Tran(δx,δy,δz,d)I)
i Δ i , i + 1 = T r a n ( δ x , δ y , δ z , d ) − I ^{i}\Delta_{i,i+1}=\boldsymbol{Tran}(\delta_x,\delta_y,\delta_z,d)-\boldsymbol{I} iΔi,i+1=Tran(δx,δy,δz,d)I,其中 δ x , δ y , δ z \delta_x,\delta_y,\delta_z δx,δy,δz分别为绕坐标系{ i i i}的 x , y , z x,y,z x,y,z轴的旋转角度, d d d为坐标系{ i i i}下的位置矢量, i Δ i , i + 1 ^{i}\Delta_{i,i+1} iΔi,i+1为坐标系{ i i i}下的微分变换算子。
对变换矩阵 i T i + 1 ^{i}\boldsymbol{T}_{i+1} iTi+1,它对坐标系{ i + 1 i+1 i+1}的微分变换可以表示为:
i T i + 1 + d i T i + 1 = T r a n ( δ x , δ y , δ z , d ) ⋅ i T i + 1 d i T i + 1 = ( T r a n ( δ x , δ y , δ z , d ) − I ) ⋅ i T i + 1 ^{i}\boldsymbol{T}_{i+1}+d^{i}\boldsymbol{T}_{i+1}=\boldsymbol{Tran}(\delta_x,\delta_y,\delta_z,d)\cdot^{i}\boldsymbol{T}_{i+1}\\ d^{i}\boldsymbol{T}_{i+1}=(\boldsymbol{Tran}(\delta_x,\delta_y,\delta_z,d)-\boldsymbol{I})\cdot^{i}\boldsymbol{T}_{i+1} iTi+1+diTi+1=Tran(δx,δy,δz,d)iTi+1diTi+1=(Tran(δx,δy,δz,d)I)iTi+1
i + 1 Δ i , i + 1 = T r a n ( δ x , δ y , δ z , d ) − I ^{i+1}\Delta_{i,i+1}=\boldsymbol{Tran}(\delta_x,\delta_y,\delta_z,d)-\boldsymbol{I} i+1Δi,i+1=Tran(δx,δy,δz,d)I,其中 δ x , δ y , δ z \delta_x,\delta_y,\delta_z δx,δy,δz分别为绕坐标系{ i + 1 i+1 i+1}的 x , y , z x,y,z x,y,z轴的旋转角度, d d d为坐标系{ i i i}下的位置矢量, i + 1 Δ i , i + 1 ^{i+1}\Delta_{i,i+1} i+1Δi,i+1为坐标系{ i + 1 i+1 i+1}下的微分变换算子。
微分变换算子 Δ \Delta Δ
Δ = [ 0 − δ z δ y d x δ z 0 − δ x d y − δ y δ x 0 d z 0 0 0 0 ] \Delta=\begin{bmatrix}0&-\delta_z&\delta_y&d_x\\ \delta_z&0&-\delta_x&d_y\\ -\delta_y&\delta_x&0&d_z\\0&0&0&0 \end{bmatrix} Δ= 0δzδy0δz0δx0δyδx00dxdydz0
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由机器人末端相对基坐标系的齐次变换矩阵为:
0 T 6 = 0 T 1 ⋅ 1 T 2 ⋅ 2 T 3 ⋅ 3 T 4 ⋅ 4 T 5 ⋅ 5 T 6 ^{0}\boldsymbol{T}_{6}=^{0}\boldsymbol{T}_{1}\cdot^{1}\boldsymbol{T}_{2}\cdot^{2}\boldsymbol{T}_{3}\cdot^{3}\boldsymbol{T}_{4}\cdot^{4}\boldsymbol{T}_{5}\cdot^{5}\boldsymbol{T}_{6} 0T6=0T11T22T33T44T55T6
i i i个关节的微分变换引起机器人末端的微分变换为:
d ( 0 T 6 ) = 0 T 6 ⋅ 6 Δ 0 , 6 ⋅ d q i d(^{0}\boldsymbol{T}_{6})=^{0}\boldsymbol{T}_{6}\cdot^{6}\Delta_{0,6}\cdot dq_i d(0T6)=0T66Δ0,6dqi
i + 1 Δ i , i + 1 = i T i + 1 − 1 ⋅ i Δ i , i + 1 ⋅ i T i + 1 ^{i+1}\Delta_{i,i+1}=^{i}\boldsymbol{T}_{i+1}^{-1}\cdot^{i}\Delta_{i,i+1}\cdot^{i}\boldsymbol{T}_{i+1} i+1Δi,i+1=iTi+11iΔi,i+1iTi+1可得:
6 Δ i , 6 = i T 6 − 1 ⋅ i Δ i , 6 ⋅ i T 6 ^{6}\Delta_{i,6}=^{i}\boldsymbol{T}_{6}^{-1}\cdot^{i}\Delta_{i,6}\cdot^{i}\boldsymbol{T}_{6} 6Δi,6=iT61iΔi,6iT6
其中, i T 6 = i T i + 1 ⋅ i + 1 T i + 2 ⋅ ⋅ ⋅ 5 T 6 ^{i}\boldsymbol{T}_{6}=^{i}\boldsymbol{T}_{i+1}\cdot^{i+1}\boldsymbol{T}_{i+2}\cdot\cdot\cdot^{5}\boldsymbol{T}_{6} iT6=iTi+1i+1Ti+25T6,故:
6 Δ i , 6 = ( i T i + 1 ⋅ i + 1 T i + 2 ⋅ ⋅ ⋅ 5 T 6 ) − 1 ⋅ i Δ i , 6 ⋅ ( i T i + 1 ⋅ i + 1 T i + 2 ⋅ ⋅ ⋅ 5 T 6 ) ^{6}\Delta_{i,6}=(^{i}\boldsymbol{T}_{i+1}\cdot^{i+1}\boldsymbol{T}_{i+2}\cdot\cdot\cdot^{5}\boldsymbol{T}_{6})^{-1}\cdot^{i}\Delta_{i,6}\cdot(^{i}\boldsymbol{T}_{i+1}\cdot^{i+1}\boldsymbol{T}_{i+2}\cdot\cdot\cdot^{5}\boldsymbol{T}_{6}) 6Δi,6=(iTi+1i+1Ti+25T6)1iΔi,6(iTi+1i+1Ti+25T6)
i T 6 = [ i n x i o x i a x i p x i n y i o y i a y i p y i n z i o z i a z i p z 0 0 0 1 ] ^{i}\boldsymbol{T}_{6}=\begin{bmatrix}^{i}n_x&^{i}o_x&^{i}a_x&^{i}p_x\\ ^{i}n_y&^{i}o_y&^{i}a_y&^{i}p_y\\ ^{i}n_z&^{i}o_z&^{i}a_z&^{i}p_z\\0&0&0&1 \end{bmatrix} iT6= inxinyinz0ioxioyioz0iaxiayiaz0ipxipyipz1
[ 6 d x 6 d y 6 d z 6 δ x 6 δ x 6 δ x ] = [ i n x i n y i n z ( i p × i n ) x ( i p × i n ) y ( i p × i n ) z i o x i o y i o z ( i p × i o ) x ( i p × i o ) y ( i p × i o ) z i a x i a y i a z ( i p × i a ) x ( i p × i a ) y ( i p × i a ) z 0 0 0 i n x i n y i n z 0 0 0 i o x i o y i o z 0 0 0 i a x i a y i a z ] [ d i x d i y d i z δ i x δ i y δ i z ] \begin{bmatrix}^{6}d_{x}\\^{6}d_{y}\\^{6}d_{z}\\^{6}\delta_{x}\\^{6}\delta_{x}\\^{6}\delta_{x}\end{bmatrix}=\begin{bmatrix}^{i}n_x&^{i}n_y&^{i}n_z&(^{i}p \times ^{i}n)_x&(^{i}p \times ^{i}n)_y&(^{i}p \times ^{i}n)_z\\ ^{i}o_x&^{i}o_y&^{i}o_z&(^{i}p \times ^{i}o)_x&(^{i}p \times ^{i}o)_y&(^{i}p \times ^{i}o)_z\\ ^{i}a_x&^{i}a_y&^{i}a_z&(^{i}p \times ^{i}a)_x&(^{i}p \times ^{i}a)_y&(^{i}p \times ^{i}a)_z\\0&0&0&^{i}n_x& ^{i}n_y&^{i}n_z\\0&0&0&^{i}o_x& ^{i}o_y&^{i}o_z\\0&0&0&^{i}a_x& ^{i}a_y&^{i}a_z\end{bmatrix}\begin{bmatrix}d_{ix}\\d_{iy}\\d_{iz}\\ \delta_{ix}\\ \delta_{iy}\\ \delta_{iz}\end{bmatrix} 6dx6dy6dz6δx6δx6δx = inxioxiax000inyioyiay000inzioziaz000(ip×in)x(ip×io)x(ip×ia)xinxioxiax(ip×in)y(ip×io)y(ip×ia)yinyioyiay(ip×in)z(ip×io)z(ip×ia)zinzioziaz dixdiydizδixδiyδiz
对于移动关节 i i i
d i = [ d i x d i y d i z ] = [ 0 0 1 ] , δ i = [ δ i x δ i y δ i z ] = [ 0 0 0 ] d_{i}=\begin{bmatrix}d_{ix}&d_{iy}&d_{iz}\end{bmatrix}=\begin{bmatrix}0&0&1\end{bmatrix},\delta_{i}=\begin{bmatrix}\delta_{ix}&\delta_{iy}&\delta_{iz}\end{bmatrix}=\begin{bmatrix}0&0&0\end{bmatrix} di=[dixdiydiz]=[001],δi=[δixδiyδiz]=[000]
因此:
J l i = [ i n z i o z i a z ] , J a i = [ 0 0 0 ] \boldsymbol{J}_{li}=\begin{bmatrix} ^{i}n_z\\^{i}o_z\\^{i}a_z\end{bmatrix},\boldsymbol{J}_{ai}=\begin{bmatrix}0\\0\\0 \end{bmatrix} Jli= inzioziaz ,Jai= 000
对于转动关节 i i i
d i = [ d i x d i y d i z ] = [ 0 0 0 ] , δ i = [ δ i x δ i y δ i z ] = [ 0 0 1 ] d_{i}=\begin{bmatrix}d_{ix}&d_{iy}&d_{iz}\end{bmatrix}=\begin{bmatrix}0&0&0\end{bmatrix},\delta_{i}=\begin{bmatrix}\delta_{ix}&\delta_{iy}&\delta_{iz}\end{bmatrix}=\begin{bmatrix}0&0&1\end{bmatrix} di=[dixdiydiz]=[000],δi=[δixδiyδiz]=[001]
因此:
J l i = [ ( i p × i n ) z ( i p × i o ) z ( i p × i z ) z ] , J a i = [ i n z i o z i a z ] \boldsymbol{J}_{li}=\begin{bmatrix} (^{i}p \times ^{i}n)_z\\(^{i}p \times ^{i}o)_z\\(^{i}p \times ^{i}z)_z \end{bmatrix},\boldsymbol{J}_{ai}=\begin{bmatrix} ^{i}n_z\\^{i}o_z\\^{i}a_z \end{bmatrix} Jli= (ip×in)z(ip×io)z(ip×iz)z ,Jai= inzioziaz

3、世界坐标系下的雅可比矩阵

上述雅可比矩阵为工具坐标系{ e e e}下的关节速度与末端速度、角速度之间的映射,即工具坐标系{ e e e}下的雅可比矩阵。
世界坐标系{ 0 0 0}下的末端速度、角速度与工具坐标系{ e e e}下的末端速度、角速度之间的转换关系为:
[ v w ] = [ 0 R e 0 0 0 R e ] [ e v e w ] \begin{bmatrix}\boldsymbol{v}\\ \boldsymbol{w}\\ \end{bmatrix}=\begin{bmatrix} ^{0}\boldsymbol{R}_{e}& \boldsymbol{0}\\ \boldsymbol{0}& ^0\boldsymbol{R}_{e}\\ \end{bmatrix}\begin{bmatrix} ^{e}\boldsymbol{v}\\ ^{e}\boldsymbol{w}\\ \end{bmatrix} [vw]=[0Re000Re][evew]
因此,当想要获得世界坐标系{ 0 0 0}下的关节速度与末端速度、角速度之间的映射即世界坐标系{ 0 0 0}下的雅可比矩阵时,只需要将工具坐标系{ e e e}下的雅可比矩阵左乘世界坐标系{ 0 0 0}与工具坐标系{ e e e}之间的旋转矩阵 0 R e ^{0}\boldsymbol{R}_e 0Re,即:
J 0 = [ 0 R e 0 0 0 R e ] J e \boldsymbol{J}_{0}=\begin{bmatrix} ^{0}\boldsymbol{R}_{e}& \boldsymbol{0}\\ \boldsymbol{0}& ^0\boldsymbol{R}_{e}\\ \end{bmatrix} \boldsymbol{J}_{e} J0=[0Re000Re]Je

  • 10
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
连续体机器人的逆向运动学问题可以通过雅可比矩阵来解决。雅可比矩阵是一个矩阵,它描述了机器人末端执行器的速度与关节速度之间的关系。在连续体机器人中,雅可比矩阵的行数取决于机器人的自由度数目,而列数取决于末端执行器的线速度和角速度。 对于连续体机器人的逆向运动学问题,我们需要根据末端执行器的期望速度来求解关节速度。通过雅可比矩阵的逆矩阵,我们可以将末端执行器的速度转换为关节速度。具体来说,雅可比矩阵的逆矩阵可以通过求解雅可比矩阵的伪逆来得到。 雅可比矩阵的前三行代表线速度的传递,后三行代表角速度的传递。每一列代表对应的关节速度对机器人末端执行器的线速度和角速度的影响。因此,通过求解雅可比矩阵的逆矩阵,我们可以得到关节速度与末端执行器速度之间的关系,从而解决连续体机器人的逆向运动学问题。 参考资料: [1] Winter:连续体机器人的正逆向运动学模型-(4)雅可比矩阵解决逆向运动 - 知乎 [3] 机械臂的雅可比矩阵有下列特点:平面机械臂的雅可比矩阵最多有3行;空间机械臂的雅可比矩阵最多有6行;具有n个关节的空间机械臂的雅可比矩阵是6Xn阶;雅可比矩阵的前3行代表线速度的传递,后3行代表角速度的传递;雅可比矩阵的每一列代表对应的关节速度对机械臂末端线速度和角速度的影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值