机械臂运动学文档格式.docx
《机械臂运动学文档格式.docx》由会员分享,可在线阅读,更多相关《机械臂运动学文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
重复利用上式,得到
机械臂末端位姿在笛卡尔坐标系中有6个自由度,3个平移,3个旋转。
所以,一般来说具有6个自由度的机械臂可以使末端实现任意的位姿。
总的机械臂变换
一般简写为Tn,对6个自由度的机械臂简写为T6。
对于任意的机械臂,无论其它有多少个关节,具有什么结构,正向运动学解都是可以得到的。
在机械臂的路径规划中,用到的是反向运动学的解
,它给出了特定的末端位姿对应的机械臂的关节角度。
一般来说,反向运动学的解不是唯一的,对具有某种结构的机械臂,封闭解可能不存在。
对于6自由度的机器人而言,运动学逆解非常复杂,一般没有封闭解。
只有在某些特殊情况下才可能得到封闭解。
不过,大多数工业机器人都满足封闭解的两个充分条件之一(Pieper准则)
(1)三个相邻关节轴交于一点
(2)三个相邻关节轴相互平行
如果机械臂多于6个关节,称关节为冗余的,这时解是欠定的。
如果对于机械臂某个特别的位姿,解不存在,称这个位姿为奇异位姿。
机械臂的奇异性可能是由于机械臂中某些坐标轴的重合,或位置不能达到引起的。
机械臂的奇异位姿分为两类:
(1)边界奇异位姿,当机械臂的关节全部展开或折起时,使得末端处于操作空间的边界或边界附近,雅克比矩阵奇异,机械臂的运动受到物理结构的约束,这时机械臂的奇异位姿称为边界奇异位姿。
(2)内部奇异位姿,两个或两个以上的关节轴线重合时,机械臂各个关节的运动相互抵消,不产生操作运动,这时机械臂的奇异位姿称为内部奇异位姿。
机械臂运动学逆解的方法可以分为两类:
封闭解和数值解、在进行逆解时总是力求得到封闭解。
因为封闭解的计算速度快,效率高,便于实时控制。
而数值解法不具有这些特点。
机械臂运动学的封闭逆解可通过两种途径得到:
代数法和几何法。
一般而言,非零连杆参数越多,到达某一目标的方式也越多,即运动学逆解的数目也越多。
在从多重解中选择解时,应根据具体情况,在避免碰撞的前提下通常按“最短行程”准则来选择。
同时还应当兼顾“多移动小关节,少移动大关节”的原则。
n个自由度的机械臂的末端位姿由n个关节变量所决定,这n个关节变量统称为n维关节矢量,记为q。
所有的关节矢量构成的空间称为关节空间。
机械臂末端的位姿用6个变量描述,3个平移(x,y,z)和3个旋转(x,y,z),记x=(x,y,z,x,y,z),x是机械臂末端在基坐标空间中的坐标,所有的矢量x构成的空间称为操作空间或作业定向空间。
工作空间是操作臂的末端能够到达的空间范围,即末端能够到达的目标点集合。
值得指出的是,工作空间应该严格地区分为两类:
(1)灵活(工作)空间指机械臂末端能够以任意方位到达的目标点集合。
因此,在灵活空间的每个点上,手爪的指向可任意规定。
(2)可达(工作)空间指机械臂末端至少在一个方位上能够到达的目标点集合。
机械臂各关节驱动器的位置组成的矢量称为驱动矢量s,由这些矢量构成的空间称为驱动空间。
3、Jacobian矩阵
机械臂的Jacobian矩阵表示机械臂的操作空间与关节空间之间速度的线性映射关系,对于一个n轴的机械臂,机械臂末端在基坐标系中的速度是
其中x是6个元素的向量。
对于6个关节机械臂Jacobian矩阵是方阵,如果它是可逆的,则可以由机械臂的末端速度求出各个关节的速度。
Jacobian矩阵在机械臂的奇异位姿上是不可逆的。
在实际应用中,当机械臂的末端位置接近奇异位置时,Jacobian矩阵是病态的,可能导致关节速度不能正确地得到。
上式解决的是正速度问题,即已知q和
求末端执行器的速度
。
对于逆速度解问题,由上式可以得到速度逆解公式为
,注意到此时需要求雅可比矩阵的逆,由线性方程组理论知上式对任意的
,
都有解的必要条件是雅可比矩阵的秩rank(J)=6,这意味着机械臂的自由度数n≥6。
这也说明了具有冗余自由度的机械臂,在末端位姿固定的条件下,能使关节在一个较大的关节空间的子空间中运动,有效地避开障碍或奇异位姿,并把关节位移限制在允许范围内,从而具有更大的运动灵活性。
雅可比矩阵可以看成是从关节空间到操作空间运动速度的传动比,同时也可用来表示两空间之间力的传递关系。
对于冗余自由度机械臂,其雅可比矩阵是长方矩阵,因J满秩且方程个数少于未知数个数,所以有无穷多个解,这时,一般是求其中的最小范数解,或采用加权最小范数解也就是说使
最小的解,其中D是对称正定加权矩阵。
此时的解是使机械臂在能量消耗最小的情况下的解。
这时,逆速度问题便转为:
求
满足
且使
最小。
实际上等同于求性能指标L在约束条件
下的极值。
应用Lagrange乘子法,以上极值为题的解是
,当D=I时,雅可比矩阵是
,称为雅可比矩阵的伪逆。
下面通过一个两自由度的平面机械臂说明雅可比矩阵的特性,根据右图中的几何关系容易求得
两边微分后写成矩阵形式
即
简写成
dx=Jdθ,式中J就称为机械臂的雅可比(Jacobian)矩阵,它由函数x,y的偏微分组成,反映了关节微小位移dθ与机械臂末端微小运动dx之间的关系。
将两边同除以dtdt得到:
dx/dt=Jdθ/dt,因此机械臂的雅可比矩阵也可以看做是操作空间中的速度与关节空间中速度的线性变换。
dx/dt称为末端在操作空间中的广义速度,简称操作速度,dθ/dt为关节速度。
可以看出,雅可比矩阵的每一列表示其它关节不动而某一关节以单位速度运动产生的末端速度。
由
可以看出,J阵的值随末端位置的不同而不同,即θ1和θ2的改变会导致J的变化。
对于关节空间的某些位姿,机械臂的雅可比矩阵的秩减少,这些位姿称为机械臂的奇异位姿。
上例机械臂雅可比矩阵的行列式为:
,当θ2=0°
或θ2=180°
时,机械臂的雅可比行列式为0,矩阵的秩为1,这时机械臂处于奇异位姿。
机械臂在操作空间的自由度将减少。
如果机械臂的雅可比J是满秩的方阵,相应的关节速度即可求出,即
,上例平面2R机械臂的逆雅可比矩阵
,显然,当θ2趋于0°
(或180°
)时,机械臂接近奇异位姿,相应的关节速度将趋于无穷大。
为了补偿机器人末端执行器位姿与目标物体之间的误差,以及解决两个不同坐标系之间的微位移关系问题,需要讨论机器人连杆在作微小运动时的位姿变化。
假设一变换的元素是某个变量的函数,对该变换的微分就是该变换矩阵各元素对该变量的偏导数所组成的变换矩阵乘以该变量的微分。
例如给定变换T为:
若它的元素是变量x的函数,则变换T的微分为:
下面讨论机械臂的微分运动,设机械臂某一连杆相对于基坐标系的位姿为T,经过微运动后该连杆相对基坐标系的位姿变为T+dT,若这个微运动是相对于基坐标系(静系)进行的(左乘),总可以用微小的平移和旋转来表示,即
所以有
根据齐次变换的对称性,若微运动是相对某个连杆坐标系i(动系)进行的(右乘),则T+dT可以表示为
令
为微分算子,则相对基系有dT=Δ0T,相对i系有dT=TΔi。
这里Δ的下标不同是由于微运动相对不同坐标系进行的。
在机械臂运动学中微分变换分为微分平移和微分旋转两类。
微分平移变换与一般平移变换一样,其变换矩阵为:
由于微分旋转时θ→0,所以sinθ→dθ,cosθ→1将它们代入旋转变换通式中得微分旋转表达式:
于是得到微分算子
,即
微分旋转与有限旋转相比,有一些特殊的性质,下面分别说明。
(1)微分旋转的无序性,当θ→0时,有sinθ→dθ,cosθ→1.若令δx=dθx,δy=dθy,δz=dθz,则绕三个坐标轴的微分旋转矩阵分别为
略去2次项,得到
两者结果相同,可见这里左乘与右乘等效。
结论:
微分旋转其结果与转动次序无关,这是与有限转动(一般旋转)的一个重要区别。
(2)微分旋转的可加性,考虑两个微分旋转复合后的效果
若Rot(δx,δy,δz)和Rot(δx’,δy’,δz’)表示两个不同的微分旋转,则两次连续转动的结果为:
上式表明:
任意两个微分旋转的结果为绕每个轴转动的元素的代数和,即微分旋转是可加的。
由等效转轴和等效转角与
等效,有
所以有kxdθ=δx,
kydθ=δy
,
kzdθ=δz,将它们代入Δ得
可见,微分变换由两个部分组成δ微分转动矢量,d微分平移矢量,合称为微分运动矢量,可表示为
例:
已知一个坐标系
,相对固定系的微分平移矢量d=[100.5],微分旋转矢量δ=[00.10],求微分变换dA。
下面讨论两坐标系之间的微分关系,设第一个坐标系为i系,第二个坐标系为j系不失一般性,假定j系就是固定的0系。
因为
所以
,整理得到
对于任何三维矢量p=[px,py,pz],其反对称矩阵s(p)定义为:
记
上式简写成
类似地,任意两坐标系{A}和{B}之间广义速度的坐标变换为:
,相对固定系的微分平移矢量d=[100.5],微分旋转矢量δ=[00.10],求A系中等价的微分平移矢量dA和微分旋转矢量δA。
解:
将d=[100.5]和δ=[00.10]代入
得到
4、机械臂轨迹规划
机械臂的轨迹规划可以在关节空间也可以在笛卡尔空间中进行,或者说机械臂轨迹规划是指在关节空间或者笛卡尔空间中研究机械臂轨迹生成方法。
简言之,机械臂轨迹规划是运动学逆解的实际应用,它描述了机械臂在多维空间中的运动路线。
在知道末端位姿的前提下,通过运动学逆解得到各个关节在相应时刻的转动量或者平移量,合理的规划指的是规划出的角位移曲线、角速度曲线以及角加速度曲线,可以有效地减少了机械臂在运动过程中的冲击和振动,使机械臂的工作寿命得以延长。
械臂可以分为点到点作业(Point-to-PointMotion)和连续路径作业(Continuous-PathMotion)。
点到点的运动指的是机械臂在运动过程中,只要求在某些点上有准确的位置和姿态,相邻的点不做要求。
连续运动要求机械臂严格的沿特定的曲线运动。
机械臂的关节角位移变化率比较小,能够有效地防止了机械臂工作时的振动和冲击。
机械臂关节角速度和角加速度变化均平顺连续,从而有效避免了机械部件的磨损,能够保证整个机械臂系统的长期、稳定的运行,满足机械臂的工作要求。
5、robotics工具箱中的相关函数
link建立一个连杆对象,例如对于本次竞赛的机械臂,根据连杆参数得到
L{1}=link([pi/20012000]);
L{2}=link([pi/200000]);
L{3}=link([-pi/200140.80pi]);
L{4}=link([-pi/271.8000pi/2]);
L{5}=link([+pi/271.8000pi]);
L{6}=link([-pi/20000pi/2]);
L{7}=link([000129.600]);
robot建立一个机械臂对象
R=robot(L)
noname(7axis,RRRRRRR)
grav=[0.000.009.81]standardD&
Hparameters
alphaAthetaDR/P
1.57080120R(std)
1.5708.00R(std)
-1.57080140.8R(std)
-1.570871.80R(std)
1.570871.80R(std)
-1.570800R(std)
00129.6R(std)
drivebot用滑块控制的机械臂图形
drivebot(R,ones(1,7)*pi)
plot机械臂的图形显示
plot(R,[pi/2pi/200000])
fkine串联机械臂正向运动学计算
tr=fkine(ROBOT,Q)
ROBOT表示机械臂对象,Q机械臂关节坐标值。
tr=fkine(R,[000pi/2000])
tr=
0.0000-0.00001.0000129.6000
-0.00001.00000.0000-0.0000
-1.0000-0.00000.0000-20.8000
0001.0000
ikine串联机械臂逆向运动学计算
q=ikine(ROBOT,T)
q=ikine(ROBOT,T,Q)
q=ikine(ROBOT,T,Q,M)
输入变量
ROBOT表示机械臂对象,T机械臂末端变换矩阵。
输出变量q机械臂关节的角度(单位是弧度),一般来说逆运动学的解不是唯一的,取决于初始值Q,缺省时是0向量。
如果机械臂的自由度(DOF)小于6,由于解空间的维数大于机械臂的自由度,这时需要第4个输入量M来确定笛卡尔坐标(手腕对应的坐标系)中的哪些量在求解中被忽略。
M中有6个元素,分别表示沿着x,y,z方向的平移和相对于x轴,y轴,z轴的旋转,值是0(忽略)或1。
非零元素的个数应该等于机械臂的自由度。
例如,对典型的有5个自由度的机械臂,一般是忽略相对手腕坐标的转动,这时M=[111110]。
另外一种用法是
qt=ikine(ROBOT,TG)
qt=ikine(ROBOT,TG,Q)
qt=ikine(ROBOT,TG,Q,M)
ROBOT表示机械臂对象,TG是4x4xN机械臂末端变换矩阵。
输出变量
qt是一组(N个)TG对应的关节坐标。
一行对应一个输入变换,每一步的初始值取上一步的值。
求解使用机械臂Jacobian矩阵的伪逆,这是数值求解方法,对于特定机械臂逆运动学解(如果可能)应该尽量使用解析解。
但是这种方法可以得到奇异点上的解,零空间中的关节角度可以任取。
q=ikine(R,tr)
q=
0.00000.00000.00000.7854-0.0000-0.78540.0000
注意:
对于机械臂末端的一个位置与姿态,逆运动学计算不是唯一的,验证
tr=fkine(R,q)
transl计算平移变换
tr=transl(X,Y,Z)
返回机械臂末端坐标X,Y,Z对应的齐次表换矩阵
tr=transl(129.6,0,20.8)
1.000000129.6000
01.000000
001.000020.8000
[XYZ]'
=transl(T)
返回齐次表换表示中的平移值,作为一个3元素的列向量
xyz=transl(tr)'
xyz=
129.6000020.8000
ctraj计算工作空间中两点T0,T1之间的轨迹
tc=ctraj(T0,T1,N)
tc=ctraj(T0,T1,R)
返回从T0到T1笛卡尔坐标系的轨迹TCN表示轨迹中的点数。
在第1中情况下,轨迹中的点在T0到T1中等距离分配。
在第2中情况下,向量R给出轨迹中每个点的距离,R中的元素取值为[01]。
一个轨迹是4x4xN矩阵,最后一个下标表示点索引。
旋转插值使用四元球形线性插值。
tr0=fkine(R,[0000000])
tr0=
1.0000-0.0000-0.0000-0.0000
0.00001.00000.00000.0000
-0.0000-0.00001.0000108.8000
tr1=fkine(R,[pi/4pi/60pi/3000])
tr1=
0.6124-0.70710.353695.6008
0.61240.70710.353695.6008
-0.5000-0.00000.8660110.3005
tc(:
:
1)=
1.000000-0.0000
01.000000.0000
001.0000108.8000
2)=
0.8976-0.38220.219847.8004
0.35710.92260.145847.8004
-0.2585-0.05230.9646109.5503
3)=
transl(tc)
ans=
-0.00000.0000108.8000
47.800447.8004109.5503
95.600895.6008110.3005
jtraj计算关节中两点Q0,Q1之间的轨迹
[QQDQDD]=jtraj(Q0,Q1,N)
[QQDQDD]=jtraj(Q0,Q1,N,QD0,QD1)
[QQDQDD]=jtraj(Q0,Q1,T)
[QQDQDD]=jtraj(Q0,Q1,T,QD0,QD1)
轨迹中的点数是N,或者是一个时间向量T。
插值使用7次多项式,边界速度由QD0,QD1指定,缺省时边界速度和加速度为0。
q0=[pipipipipipipi];
q1=[pipi/2000pi/20];
tr0=fkine(R,[pipipipipipipi]);
tr1=fkine(R,[pipi/2000pi/20]);
[QT,QD,QDD]=jtraj(q0,q1,30);
figure
subplot(2,2,1),plot(R,QT)
subplot(2,2,2),plot(QT),gridon,
legend('
q1'
'
q2'
q3'
q4'
q5'
q6'
q7'
Location'
'
NorthWest'
)
subplot(2,2,3),plot(QD),gridon
subplot(2,2,4),plot(QDD),gridon
%注意:
其中有一些曲线重合
jacob0计算机械臂在基坐标系中Jacobian矩阵
J=jacob0(ROBOT,Q)
tr2jac计算机械臂在基坐标系中Jacobian矩阵
J=TR2JAC(T)
diff2tr微分表示转换为齐次变换
tr=diff2tr(D)
返回表示微分平移与旋转的齐次变换矩阵,矩阵中包含一个反对称的旋转子矩阵。
tr2diff转换为齐次变换转换为微分表示
D=tr2diff(T)
D=tr2diff(T1,T2)
第一种形式将齐次表换矩阵表示转换为6-元素向量微分表示。
第二种形式返回6-元素向量,表示从T1到T2的在基坐标系中需要的微分移动。
J=jacob0(R,q1)
%Jacobiananddifferentialmotiondemonstration
%Adifferentialmotioncanberepresentedbya6-elementvectorwithelements
%[dxdydzdrxdrydrz]
%wherethefirst3elementsareadifferentialtranslation,andthelast3
%areadifferentialrotation.Whendealingwithinfinitisimalrotations,
%theorderbecomesunimportant.Thedifferentialmotioncouldbewritten
%intermsofcompoundedtransforms
%transl(dx,dy,dz)*trotx(drx)*troty(dry)*trotz(drz)
%butamoredirectapproachistousethefunctiondiff2tr()
D=[.1.20-.2.1.1]'
diff2tr(D)
T=fkine(R,q1)
%thenthedifferentialmotioninthesecondframewouldbegivenby
DT