雅可比矩阵
在机器人学中,雅可比矩阵最常用于表示关节速度与末端笛卡尔速度之间的关系,有公式:
![\nu = J(\theta)\dot{\theta}\\\](https://i-blog.csdnimg.cn/blog_migrate/744cc57db94cea00f5bf69e344ce3822.png)
![(1.0)](https://i-blog.csdnimg.cn/blog_migrate/bb7b0fa84bd7dc7a93adc084b98d3a07.png)
![\nu](https://i-blog.csdnimg.cn/blog_migrate/4eaf21ce76dc52f6eac21c3cc41c6a7f.png)
![v](https://i-blog.csdnimg.cn/blog_migrate/2bd40b4a76c2cad53a0283bfbae48e61.png)
![w](https://i-blog.csdnimg.cn/blog_migrate/1c7a330b82678d6b033d9748f5120af9.png)
![\nu=\left[\begin{array}{c} v\\ w \end{array}\right]\\](https://i-blog.csdnimg.cn/blog_migrate/4eaf21ce76dc52f6eac21c3cc41c6a7f.png%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bc%7D+v%5C%5C+w+%5Cend%7Barray%7D%5Cright%5D%5C%5C)
![(1.1)](https://i-blog.csdnimg.cn/blog_migrate/6fc79b53bf90cdd2847e541d54c76456.png)
线速度向量包括
![x,y,z](https://i-blog.csdnimg.cn/blog_migrate/55b1e042df26617dcde3e7e4aab8a414.png)
![v=\left[\begin{array}{c} v_x\\ v_y\\ v_z \end{array}\right]\\](https://i-blog.csdnimg.cn/blog_migrate/2bd40b4a76c2cad53a0283bfbae48e61.png%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bc%7D+v_x%5C%5C+v_y%5C%5C+v_z+%5Cend%7Barray%7D%5Cright%5D%5C%5C)
![(1.2)](https://i-blog.csdnimg.cn/blog_migrate/99789a1c168be984211ac74962a78e22.png)
角速度向量包括
![x,y,z](https://i-blog.csdnimg.cn/blog_migrate/55b1e042df26617dcde3e7e4aab8a414.png)
![w=\left[\begin{array}{c} w_x\\ w_y\\ w_z \end{array}\right]\\](https://i-blog.csdnimg.cn/blog_migrate/1c7a330b82678d6b033d9748f5120af9.png%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bc%7D+w_x%5C%5C+w_y%5C%5C+w_z+%5Cend%7Barray%7D%5Cright%5D%5C%5C)
![(1.3)](https://i-blog.csdnimg.cn/blog_migrate/60fe7a5533d73af158be608f0b38b9a0.png)
将
![(1.1-1.3)](https://i-blog.csdnimg.cn/blog_migrate/6f5d610bfb39390e666503d66335bd74.png)
![(1.0)](https://i-blog.csdnimg.cn/blog_migrate/bb7b0fa84bd7dc7a93adc084b98d3a07.png)
![\nu=\left[\begin{array}{c} v_x\\ v_y\\ v_z\\ w_x\\ w_y\\ w_z\\ \end{array}\right]=J(\theta)\dot\theta\\](https://i-blog.csdnimg.cn/blog_migrate/4eaf21ce76dc52f6eac21c3cc41c6a7f.png%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bc%7D+v_x%5C%5C+v_y%5C%5C+v_z%5C%5C+w_x%5C%5C+w_y%5C%5C+w_z%5C%5C+%5Cend%7Barray%7D%5Cright%5D%3DJ%28%5Ctheta%29%5Cdot%5Ctheta%5C%5C)
![(1.4)](https://i-blog.csdnimg.cn/blog_migrate/ab74eef9eb3c1a833f50f8d5a8838886.png)
关节速度
在DH建模法中,关节分为转动型(R型,revolute)、滑动杆 / 平移(P型,prismatic)。因此,
![\theta](https://i-blog.csdnimg.cn/blog_migrate/679f2e1de0bb439ac572e914fed0f16f.png)
![\dot{\theta}](https://i-blog.csdnimg.cn/blog_migrate/406bdbb103fade5f51f52f56198c16ac.png)
速度与微分
首先,回到初中物理公式:速度=距离/时间。在大学物理中,瞬时速度公式:
![v = \frac{dr}{dt}\\](https://i-blog.csdnimg.cn/blog_migrate/2bd40b4a76c2cad53a0283bfbae48e61.png+%3D+%5Cfrac%7Bdr%7D%7Bdt%7D%5C%5C+)
![(1.5)](https://i-blog.csdnimg.cn/blog_migrate/a2e01adc87dae97a3aaea41f9b4f6414.png)
物体在某一时刻的瞬时速度
![v](https://i-blog.csdnimg.cn/blog_migrate/2bd40b4a76c2cad53a0283bfbae48e61.png)
![r](https://i-blog.csdnimg.cn/blog_migrate/96cd0c66831377044bebc676cc938856.png)
![t](https://i-blog.csdnimg.cn/blog_migrate/3b1922fd3ef8dd7c883fb35b699da495.png)
末端微分
对于机械臂,末端的微分运动
![[D]](https://i-blog.csdnimg.cn/blog_migrate/03ed9abb9e97ca99f1d85a771a6b948d.png)
![x,y,z](https://i-blog.csdnimg.cn/blog_migrate/55b1e042df26617dcde3e7e4aab8a414.png)
![dx,dy,dz](https://i-blog.csdnimg.cn/blog_migrate/555ce359cc592029c4ca91842a0f9bb4.png)
![x,y,z](https://i-blog.csdnimg.cn/blog_migrate/55b1e042df26617dcde3e7e4aab8a414.png)
![\delta x,\delta y,\delta z](https://i-blog.csdnimg.cn/blog_migrate/bc3ced03b9457f6da6052d22fb7c2fd9.png)
![\left[D\right]=\left[\begin{array}{c} dx\\ dy\\ dz\\ \delta x\\ \delta y\\ \delta z \end{array}\right]\\](https://i-blog.csdnimg.cn/blog_migrate/fc5c603f98d707c27c10e5b334d52949.png)
![(1.6)](https://i-blog.csdnimg.cn/blog_migrate/b756141fe8743e9972f45c973ac700cd.png)
关节微分
对于机械臂,关节的微分运动与关节类型有关,DH建模法6R协作臂为例,关节微分为每个关节角的微分旋转,表示为
![[D_\theta]](https://i-blog.csdnimg.cn/blog_migrate/8487929ce03ccec5fddf22c32d8ee388.png)
![[D_\theta] = \left[\begin{array}{c} d\theta_1\\ d\theta_2\\ d\theta_3\\ d\theta_4\\ d\theta_5\\ d\theta_6 \end{array}\right]\\](https://i-blog.csdnimg.cn/blog_migrate/8487929ce03ccec5fddf22c32d8ee388.png+%3D+%5Cleft%5B%5Cbegin%7Barray%7D%7Bc%7D+d%5Ctheta_1%5C%5C+d%5Ctheta_2%5C%5C+d%5Ctheta_3%5C%5C+d%5Ctheta_4%5C%5C+d%5Ctheta_5%5C%5C+d%5Ctheta_6+%5Cend%7Barray%7D%5Cright%5D%5C%5C)
![(1.7)](https://i-blog.csdnimg.cn/blog_migrate/2572720c28485aaac2480a6fd0e03bca.png)
由于速度变成了微分,下面是雅可比矩阵把微分联系起来的公式:
![\left[D\right]=\left[\begin{array}{c} dx\\ dy\\ dz\\ \delta x\\ \delta y\\ \delta z \end{array}\right]=\left[J\right] \left[\begin{array}{c} d\theta_1\\ d\theta_2\\ d\theta_3\\ d\theta_4\\ d\theta_5\\ d\theta_6 \end{array}\right]=[J][D_\theta]\\](https://i-blog.csdnimg.cn/blog_migrate/30ddd49cd950f85056c46944c1fa57b0.png)
![(1.8)](https://i-blog.csdnimg.cn/blog_migrate/21f87f7771d59793e262278b8097962a.png)
微分运动
微分运动包括平移、旋转和组合变换(平移+旋转),平移表示为:
![Trans(dx,dy,dz)\\](https://i-blog.csdnimg.cn/blog_migrate/613bc65c7af29b30433a69246767701d.png)
![(1.9)](https://i-blog.csdnimg.cn/blog_migrate/5e88c1fb5fb90ccecf1c815cc7973e54.png)
坐标系绕
![q](https://i-blog.csdnimg.cn/blog_migrate/45c95dc0526e5d302c45be407166eb1d.png)
![d\theta](https://i-blog.csdnimg.cn/blog_migrate/5d7de75ec6dc4e56faeaf75932a8ef7c.png)
![Rot(q,d\theta)\\](https://i-blog.csdnimg.cn/blog_migrate/e204c24bee5b372ae9430697a6845392.png)
![(1.10)](https://i-blog.csdnimg.cn/blog_migrate/5ec31aa6a5754cabbc20bfbcc009abff.png)
绕一般轴的旋转是由绕
![x,y,z](https://i-blog.csdnimg.cn/blog_migrate/55b1e042df26617dcde3e7e4aab8a414.png)
![(d\theta)q=(\delta x)i+(\delta y)j+(\delta z)k\\](https://i-blog.csdnimg.cn/blog_migrate/adae0e2ec300eb1b7c4e098598aea595.png)
![(1.11)](https://i-blog.csdnimg.cn/blog_migrate/9a75854554e19a84cf0078c302b5598f.png)
所以由1.10式和1.11式,有
![Rot(q,d\theta)=Rot(x,\delta x)Rot(y,\delta y)Rot(z,\delta z)=\left[\begin{array}{cccc} 1 & -\delta z & \delta y & 0\\ \delta z & 1 & -\delta x & 0\\ -\delta y & \delta x & 1 & 0\\ 0 & 0 & 0 & 1 \end{array}\right]\\](https://i-blog.csdnimg.cn/blog_migrate/ecbbc211c4e9ae9f1e36fa6561abc0a1.png)
![(1.12)](https://i-blog.csdnimg.cn/blog_migrate/745cf0b28ceadfaef18916493fba812e.png)
坐标系的微分变换
设原坐标系为
![T](https://i-blog.csdnimg.cn/blog_migrate/51d9020f7a89028fa8905549e9b9dc6f.png)
![dT](https://i-blog.csdnimg.cn/blog_migrate/bbcc51ba54cae87535fcaa9aaf49b71d.png)
![[T+dT]=[Trans(dx,dy,dz)Rot(q,d\delta)][T]\\ dT=[Trans(dx,dy,dz)Rot(q,d\delta)-I][T]](https://i-blog.csdnimg.cn/blog_migrate/192877d07f6e0e07543cb614d94daa16.png)
![(1.13)](https://i-blog.csdnimg.cn/blog_migrate/2a24ee67cc6c2d9cd19a64c8849677de.png)
1.13式右边的变换可用
![\Delta](https://i-blog.csdnimg.cn/blog_migrate/50e296835ec2f99ff5c636340a9d1e71.png)
![\Delta](https://i-blog.csdnimg.cn/blog_migrate/50e296835ec2f99ff5c636340a9d1e71.png)
![\Delta=[Trans(dx,dy,dz)Rot(q,d\delta)-I]\\=\left[\begin{array}{cccc} 0 & -\delta z & \delta y & dx\\ \delta z & 0 & -\delta x & dy\\ -\delta y & \delta x & 0 & dz\\ 0 & 0 & 0 & 0 \end{array}\right]](https://i-blog.csdnimg.cn/blog_migrate/50e296835ec2f99ff5c636340a9d1e71.png%3D%5BTrans%28dx%2Cdy%2Cdz%29Rot%28q%2Cd%5Cdelta%29-I%5D%5C%5C%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bcccc%7D+0+%26+-%5Cdelta+z+%26+%5Cdelta+y+%26+dx%5C%5C+%5Cdelta+z+%26+0+%26+-%5Cdelta+x+%26+dy%5C%5C+-%5Cdelta+y+%26+%5Cdelta+x+%26+0+%26+dz%5C%5C+0+%26+0+%26+0+%26+0+%5Cend%7Barray%7D%5Cright%5D)
![(1.14)](https://i-blog.csdnimg.cn/blog_migrate/db0265ce6cd709640abefbf25f318e97.png)
式1.14表示相对于固定参考坐标系的微分变换。在DH建模法中,都是通过前一个关节的坐标系求下一个关节坐标系,因此,还需要找出相对于当前坐标系的微分变换。
坐标系的相对微分变换
设
![^T\Delta](https://i-blog.csdnimg.cn/blog_migrate/b545332ef50a9472cde5b7fb18775c02.png)
![^T\Delta](https://i-blog.csdnimg.cn/blog_migrate/b545332ef50a9472cde5b7fb18775c02.png)
![[dT]=[\Delta] [T]=[T]^T\Delta\\](https://i-blog.csdnimg.cn/blog_migrate/ad82657f20e310883cb7e57c75d8f84b.png)
![(1.15)](https://i-blog.csdnimg.cn/blog_migrate/6015cc43d3c64e1a1435b3b5277ead5e.png)
由式1.15可推出:
![^T\Delta=[T^-1]\Delta[T]\\](https://i-blog.csdnimg.cn/blog_migrate/b545332ef50a9472cde5b7fb18775c02.png%3D%5BT%5E-1%5D%5CDelta%5BT%5D%5C%5C)
![(1.16)](https://i-blog.csdnimg.cn/blog_migrate/0d34f100ce71cfebbc1e5523f6b2e4b6.png)
由式1.16可以看出,坐标系相对自身变换的算子,可以通过坐标系自身
![T](https://i-blog.csdnimg.cn/blog_migrate/51d9020f7a89028fa8905549e9b9dc6f.png)
![\Delta](https://i-blog.csdnimg.cn/blog_migrate/50e296835ec2f99ff5c636340a9d1e71.png)
![T=\left[\begin{array}{cccc} nx & ox & ax & px\\ ny & oy & ay & py\\ nz & oz & az & pz\\ 0 & 0 & 0 & 1 \end{array}\right]\\ T^{-1}=\left[\begin{array}{cccc} nx & ny & nz & -p.n\\ ox & oy & oz & -p.o\\ ax & ay & az & -p.a\\ 0 & 0 & 0 & 1 \end{array}\right]\\](https://i-blog.csdnimg.cn/blog_migrate/51d9020f7a89028fa8905549e9b9dc6f.png%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bcccc%7D+nx+%26+ox+%26+ax+%26+px%5C%5C+ny+%26+oy+%26+ay+%26+py%5C%5C+nz+%26+oz+%26+az+%26+pz%5C%5C+0+%26+0+%26+0+%26+1+%5Cend%7Barray%7D%5Cright%5D%5C%5C+T%5E%7B-1%7D%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bcccc%7D+nx+%26+ny+%26+nz+%26+-p.n%5C%5C+ox+%26+oy+%26+oz+%26+-p.o%5C%5C+ax+%26+ay+%26+az+%26+-p.a%5C%5C+0+%26+0+%26+0+%26+1+%5Cend%7Barray%7D%5Cright%5D%5C%5C)
![(1.17)](https://i-blog.csdnimg.cn/blog_migrate/1a48a8ac1879266e0c73463b9a1b6356.png)
将式1.17代入1.16中,可以算出
![^T\Delta=\left[\begin{array}{cccc} 0 & -\delta\cdot a & \delta\cdot o & \delta \cdot (p\times n)+d\cdot n\\ \delta\cdot a & 0 & -\delta\cdot n & \delta \cdot (p\times o)+d\cdot o\\ -\delta\cdot o & \delta\cdot n & 0 & \delta \cdot (p\times a)+d\cdot a\\ 0 & 0 & 0 & 0 \end{array}\right]\\](https://i-blog.csdnimg.cn/blog_migrate/b545332ef50a9472cde5b7fb18775c02.png%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bcccc%7D+0+%26+-%5Cdelta%5Ccdot+a+%26+%5Cdelta%5Ccdot+o+%26+%5Cdelta+%5Ccdot+%28p%5Ctimes+n%29%2Bd%5Ccdot+n%5C%5C+%5Cdelta%5Ccdot+a+%26+0+%26+-%5Cdelta%5Ccdot+n+%26+%5Cdelta+%5Ccdot+%28p%5Ctimes+o%29%2Bd%5Ccdot+o%5C%5C+-%5Cdelta%5Ccdot+o+%26+%5Cdelta%5Ccdot+n+%26+0+%26+%5Cdelta+%5Ccdot+%28p%5Ctimes+a%29%2Bd%5Ccdot+a%5C%5C+0+%26+0+%26+0+%26+0+%5Cend%7Barray%7D%5Cright%5D%5C%5C)
![(1.18)](https://i-blog.csdnimg.cn/blog_migrate/e330c7999610ec0af0c95bca183a9abd.png)
定义
![^T\Delta](https://i-blog.csdnimg.cn/blog_migrate/b545332ef50a9472cde5b7fb18775c02.png)
![^T\Delta=\left[\begin{array}{cccc} 0 & -^T\delta z & ^T\delta y & ^Tdx\\ ^T\delta z & 0 & -^T\delta x & ^Tdy\\ -^T\delta y & ^T\delta x & 0 & ^Tdz\\ 0 & 0 & 0 & 0 \end{array}\right]\\](https://i-blog.csdnimg.cn/blog_migrate/b545332ef50a9472cde5b7fb18775c02.png%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bcccc%7D+0+%26+-%5ET%5Cdelta+z+%26+%5ET%5Cdelta+y+%26+%5ETdx%5C%5C+%5ET%5Cdelta+z+%26+0+%26+-%5ET%5Cdelta+x+%26+%5ETdy%5C%5C+-%5ET%5Cdelta+y+%26+%5ET%5Cdelta+x+%26+0+%26+%5ETdz%5C%5C+0+%26+0+%26+0+%26+0+%5Cend%7Barray%7D%5Cright%5D%5C%5C)
![(1.19)](https://i-blog.csdnimg.cn/blog_migrate/9e50a3ec6d71b89f26ed0b9ede671f44.png)
于是由1.18和1.19可推出:
![^T\delta x=\delta \cdot n\\ ^T\delta y=\delta \cdot o\\ ^T\delta z=\delta \cdot a\\ ^Td x=n \cdot [\delta\times p +d]\\ ^Td y=o \cdot [\delta\times p +d]\\ ^Td z=a \cdot [\delta\times p +d]](https://i-blog.csdnimg.cn/blog_migrate/5f17fe7f485ef5098847b6ae54099a59.png)
![(1.20)](https://i-blog.csdnimg.cn/blog_migrate/93dee1d61154a0119e71b98c50971b66.png)
旋转关节
在DH建模中,对于旋转关节进一步简化式1.20有:
![^T\delta x=n_z\\ ^T\delta y=o_z\\ ^T\delta z=a_z\\ ^Td x=(-n_xp_y+n_yp_x)\\ ^Td y=(-o_xp_y+o_yp_x)\\ ^Td z=(-a_xp_y+a_yp_x)](https://i-blog.csdnimg.cn/blog_migrate/caaf46d2bb22710fa367a2e49453c864.png)
![(1.21)](https://i-blog.csdnimg.cn/blog_migrate/93d25b2e20a6aa8642700f4831e7555a.png)
移动关节
在DH建模中,对于移动关节进一步简化式1.20有:
![^T\delta x=0\\ ^T\delta y=0\\ ^T\delta z=0\\ ^Td x=n_z\\ ^Td y=o_z\\ ^Td z=a_z](https://i-blog.csdnimg.cn/blog_migrate/18f6aa7d97df5592fa65acb702280a79.png)
![(1.22)](https://i-blog.csdnimg.cn/blog_migrate/406e926004ed48e663f310ebd4e2cc7c.png)
雅可比矩阵计算
到这里,雅各比矩阵基本上就已经出来了。对于协作臂从关节0坐标系开始,一直到关节6,相对自身进行微分变换,将所有的微分变换加起来,就是末端最终的微分变换:
![\left[\begin{array}{c} ^{T6}dx\\ ^{T6}dy\\ ^{T6}dz\\ ^{T6}\delta x\\ ^{T6}\delta y\\ ^{T6}\delta z \end{array}\right]=\left[\begin{array}{cccccc} ^{T6}J_{11} & ^{T6}J_{12} & . & . & . & ^{T6}J_{16}\\ ^{T6}J_{21} & ^{T6}J_{22} & . & . & . & ^{T6}J_{26}\\ ^{T6}J_{31} & . & . & . & . & ^{T6}J_{36}\\ ^{T6}J_{41} & . & . & . & . & ^{T6}J_{46}\\ ^{T6}J_{51} & . & . & . & . & ^{T6}J_{56}\\ ^{T6}J_{61} & . & . & . & . & ^{T6}J_{66} \end{array}\right]\left[\begin{array}{c} d\theta_1\\ d\theta_2\\ d\theta_3\\ d\theta_4\\ d\theta_5\\ d\theta_6 \end{array}\right]\\](https://i-blog.csdnimg.cn/blog_migrate/bc34fbb5d54bc04d78908d9913a84c91.png)
![(1.23)](https://i-blog.csdnimg.cn/blog_migrate/d28ad61a8c226f29dee9f8b6c08be2c6.png)
对于式1.23中的每一列,可根据关节类型用1.21或1.22来求解。有:
![^Td x=^{T6}J_{1i}\\ ^Td y=^{T6}J_{2i}\\ ^Td z=^{T6}J_{3i}\\^T\delta x=^{T6}J_{4i}\\ ^T\delta y=^{T6}J_{5i}\\ ^T\delta z=^{T6}J_{6i}\\](https://i-blog.csdnimg.cn/blog_migrate/14d6669313699b09e9107639a62e4ad6.png)
![(1.24)](https://i-blog.csdnimg.cn/blog_migrate/92e1bb480a9ba4c327afb91d7055ab06.png)
而1.24中对应使用的坐标系就是每个关节依次相对自身变换得到的坐标系,第
![i](https://i-blog.csdnimg.cn/blog_migrate/b1677f9423a31be742701330c190cf05.png)
![^{i-1}T_6](https://i-blog.csdnimg.cn/blog_migrate/ec43edb84e8b3837409a1acb75257d44.png)
![^{i-1}T_6](https://i-blog.csdnimg.cn/blog_migrate/ec43edb84e8b3837409a1acb75257d44.png)
![v2-2e543875ae700de7c35e7313b44a3453_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/f7305c87b3f6763f7384d6763c1c228b.png)
![\begin{align} ^0T_6 &=A_1A_2A_3A_4A_5A_6 \\ ^1T_6 &=A_2A_3A_4A_5A_6\\ ^2T_6&=A_3A_4A_5A_6\\ ^3T_6&=A_4A_5A_6\\ ^4T_6&=A_5A_6\\ ^5T_6&=A_6\\ \end{align}\\](https://i-blog.csdnimg.cn/blog_migrate/72ffda96dc96ad3645f59824554205bd.png)
![(1.25)](https://i-blog.csdnimg.cn/blog_migrate/6214b8a1773b20c7af1423018be6d312.png)
总结
雅可比矩阵用于将关节速度与末端速度联系起来,雅可比矩阵中的每个元素是对应运动学方程对其中一个变量的导数。雅可比矩阵的行是协作臂的自由度,列是关节数。