此示例显示如何使用模糊系统在双关节机械臂中模拟逆运动学。
运动学是运动的科学。在一个两关节机器人手臂中,给定关节的角度,运动学方程就给出了手臂尖端的位置。逆运动学指的是反向过程。给定机械臂尖端的理想位置,关节的角度应该是多少才能将机械臂尖端定位在理想位置。通常有不止一个解决方案,有时可能是一个很难解决的问题。
这是一种典型的机器人问题,需要解决以控制机器人手臂以执行它被指定为执行的任务。在二维输入空间中,用双关节机械臂和给定期望的坐标,问题减少以找到所涉及的两个角度。第一角度位于第一臂和地面之间(或其附加的任何东西)。第二角度位于第一臂和第二臂之间。
图1:图中显示了带有两个角度的两关节机械臂,Theta1.
和Theta2.
对于简单的结构,如两关节机器人手臂,它是可能的数学推导关节角度给定的理想位置的手臂尖端。然而,对于更复杂的结构(例如:在三维输入空间中操作的n关节机器人手臂),推导出逆运动学的数学解可能具有挑战性。
使用模糊逻辑,我们可以构造一个模糊推理系统,如果问题的正运动学已知,就可以推导出逆运动学,从而避免需要开发解析解。此外,模糊解决方案很容易理解,不需要特殊的背景知识来理解和评价它。
在以下部分中,描述了用于开发这种解决方案的广泛概要,并稍后详细说明了详细步骤。
由于双关节机械臂的前向动力学公式是已知的,因此推导出臂的尖端的x和y坐标,用于两个关节的整个旋转角度范围。坐标和角度被保存为培训ANFIS(自适应神经模糊推理系统)网络的训练数据。
在培训期间,ANFIS网络了解映射坐标(x
,y
)到角度(Theta1.
,Theta2.
).然后将培训的ANFIS网络用作更大控制系统的一部分以控制机器人臂。了解机器人臂的所需位置,控制系统使用训练的ANFIS网络来推导接头的角位置,并相应地将力施加到机器人臂的接头上以使其移动到所需的位置。
ANFIS代表自适应神经模糊推理系统。它是一种混合神经模糊技术,将神经网络的学习能力带到模糊推理系统。学习算法使用训练输入/输出数据调整Sugeno型模糊推理系统的隶属函数。
在这种情况下,输入/输出数据是指“坐标/角度”数据集。坐标充当对ANFI的输入,角度充当输出。学习算法教导ANFI通过称为训练的过程将坐标映射到角度。在培训结束时,培训的ANFIS网络将学习输入输出映射,并准备好部署到较大的控制系统解决方案中。
让Theta1.
第一臂与地面之间的角度。让Theta2.
是第二臂和第一臂之间的角度(参见图1例证)。让第一臂的长度成为L1
那是第二臂L2
.
假设第一接头的自由度有限旋转,并且它可以在0到90度之间旋转。类似地,假设第二接头具有有限的自由度来旋转,并且可以在0到180度之间旋转。(此假设夺走了需要处理一些将混淆话语的特殊情况。)因此,0 <= theta1 <= pi / 2
和0 <= theta2 <= pi
.
图2:显示所有可能的插图Theta1.
和Theta2.
价值观。
现在,对于每个组合Theta1.
和Theta2.
用正运动学公式推导出x、y坐标的值。
以下代码片段显示如何为所有组合生成数据Theta1.
和Theta2.
值并保存到要用作训练数据的矩阵中。以下部分解释了在两个矩阵中保存数据的原因。
l1 = 10;第一臂的%长度l2 = 7;%长度的第二臂θ₁= 0:0.1:π/ 2;%所有可能的theta1值THETA2 = 0:0.1:PI;%所有可能的值[theta1,theta2] = meshgrid(theta1,theta2);%生成Theta1和Theta2值的网格x = l1 * cos(theta1)+ l2 * cos(theta1 + theta2);%compute x坐标Y = L1 * SIN(THETA1)+ L2 * SIN(THETA1 + THETA2);%compute y坐标数据量= [X(:) Y(:) THETA1(:)];%创建x-y-theta1数据集data2 = [x(:) y(:) theta2(:)];%创建x-y-theta2数据集
以下绘图显示通过循环通过不同组合生成的所有X-Y数据点Theta1.
和Theta2.
推导出每一个的x和y坐标。可以使用以下代码生成绘图。为了便于理解,对图做了进一步的注释。
情节(X (:), Y (:), ' r。');轴相等;ylabel('Y','fontsize',10) title('X-Y坐标为所有的theta1和theta2组合','fontsize',10)
图3:为所有人产生的X-Y坐标Theta1.
和Theta2.
使用向前运动学公式的组合
为这个问题构建ANFIS解决方案的一种方法是建立两个ANFIS网络,一个人预测Theta1.
另一个是预测Theta2.
.
为了使ANFIS网络能够预测它们必须用采样输入输出数据训练的角度。第一个ANFIS网络将用x和y坐标培训,如输入和对应Theta1.
值作为输出。矩阵data1
包含X-Y-THETA1
要求第一个ANFIS网络所需的数据集。因此data1
将用作数据集以培训第一个ANFIS网络。
同样,第二个ANFIS网络将用x和y坐标培训,作为输入和对应Theta2.
值作为输出。矩阵data2
包含x-y-theta2
训练第二个ANFIS网络所需的数据集。因此data2
将用作数据集以培训第二个ANFIS网络。
要训练ANFIS网络,首先使用anfisoptions.
命令。对于本例,使用7
每个输入变量的成员资格函数。训练系统150.
设置和取消显示训练信息的命令窗口。
选择= anfisOptions;opt.InitialFIS = 7;opt.EpochNumber = 150;opt.DisplayANFISInformation = 0;opt.DisplayErrorValues = 0;opt.DisplayStepSize = 0;opt.DisplayFinalResults = 0;
使用第一组培训数据列车,data1
.
DISP(' - >培训第一个ANFIS网络。')
- >培训第一个ANFIS网络。
ANFIS1 = ANFIS(DATA1,OPT);
更改输入会员函数的数量并使用第二组培训数据列出ANFIS系统,data2
.
DISP(——>培训第二ANFIS网络)
- >培训第二个ANFIS网络。
opt.InitialFIS = 6;anfis2 =简称anfis (data2选择);
对于本例,输入隶属函数的数量和训练时点的选择是基于对不同潜在值的实验。
anfis1
和anfis2
代表将在较大的控制系统中部署的两个培训的ANFIS网络。
一旦训练完成,两个ANFIS网络已经学会了近似角度(Theta1.
,Theta2.
)作为坐标的函数(x
,y
).使用模糊方法的一个优点是,ANFIS网络现在可以近似的角度坐标是相似的,但不完全相同的训练。例如,经过训练的ANFIS网络现在能够逼近训练数据集中包含的两点之间的坐标角度。这将允许最后的控制器在输入空间平稳地移动手臂。
我们现在有两个训练有素的ANFIS网络,准备部署到更大的系统中,利用这些网络来控制机械臂。
在训练网络之后,一个重要的后续步骤是验证网络,以确定ANFIS网络在更大的控制系统中表现如何。
由于这个例子问题处理的是一个两关节机器人手臂,它的逆运动学公式可以导出,这是可能的测试ANFIS网络产生的答案与推导公式的答案。
假设ANFIS网络在操作范围内具有低误差是重要的0
8 < y < 10
.
x = 0:0.1:2;%x坐标进行验证y = 8:0.1:10;%Y坐标进行验证
的Theta1.
和Theta2.
数值从x和y坐标使用逆运动学公式推导。
[x,y] = meshgrid(x,y);C2 =(X. ^ 2 + Y. ^ 2 - l1 ^ 2 - l2 ^ 2)/(2 * l1 * l2);S2 = SQRT(1 - C2。^ 2);theta2d = atan2(s2,c2);% 2被推导出来K1 = L1 + L2。* C2;K2 = L2 * S2;theta1d = atan2(y,x) - atan2(k2,k1);推导出%theta1
Theta1d.
和Theta2d.
变量的值是Theta1.
和Theta2.
用逆运动学公式推导。
Theta1.
和Theta2.
通过使用命令获得训练的ANFIS网络预测的值evalfis
这为给定输入评估了FIS。
在这里,evalfis
用于在逆运动学公式中使用前面使用的相同X-Y值的FIS输出。
xy = [x(:)y(:)];theta1p = evalfis(ANFIS1,XY);ANFIS1预测的%THETA1theta2p = evalfis(ANFIS2,XY);anfis2预测的% theta2
现在,我们可以看到FIS输出对推导值的近距离。
theta1diff = theta1d(:) - theta1p;theta2diff = theta2d(:) - theta2p;子图(2,1,1);情节(Theta1diff);ylabel(“THETA1D THETA1P”,'字体大小',10)标题(“推导-预测”,'字体大小',10)子图(2,1,2);情节(Theta2diff);ylabel(“THETA2D THETA2P”,'字体大小',10)标题('推导出Theta2 - 预测的Theta2','字体大小', 10)
错误是1E-3
范围是它正在使用的应用程序的相当良好的数字。然而,这对于另一个应用程序可能不可接受,在这种情况下,其中的参数ANFIS.
功能可能会被调整,直到得到一个可接受的解决方案。此外,还可以探讨其他技术,如输入选择和问题建模的替代方法。
现在给定一个特定的任务,例如机器人捡一个对象在一个流水线,大型控制系统将使用训练有素的简称ANFIS网络作为参考,就像一个查找表,来确定角度的武器必须给定的期望位置的手臂。知道期望的角度和关节的当前角度后,系统将适当地对手臂的关节施加力,使它们向期望的位置移动。
的Invkine.
命令启动了一个GUI,它显示两个培训的ANFIS网络在被要求跟踪椭圆时如何执行。
图4:逆运动学建模GUI。
该示例中使用的两个ANFIS网络已经预先预先估计,并且部署到更大的系统中,该系统控制双关节机器人ARM的尖端以跟踪输入空间中的椭圆。
可以追踪的椭圆可以移动。将椭圆移动到稍微不同的位置,并观察系统如何通过将机器人臂的尖端从其当前位置移动到椭圆上的新位置上的最近点来响应。还观察到系统顺利响应,只要要跟踪的椭圆在于表示用于训练网络的数据网格的“X”标记的斑点。一旦椭圆在训练的数据范围之外,ANFIS网络就无法预测地响应。这强调了具有相关和代表数据进行培训的重要性。必须基于预期的操作范围生成数据,以避免此类不可预测性和不稳定问题。