主要内容

机械臂逆运动学建模

这个例子展示了如何使用一个模糊系统来建模两关节机械臂的逆运动学。

什么是逆运动学?

运动学是运动的科学。在一个两关节机器人手臂中,给定关节的角度,运动学方程给出了手臂尖端的位置。逆运动学是指逆过程。给定机械臂尖端的理想位置,为了将机械臂尖端定位在理想位置,关节的角度应该是什么?通常有不止一个解决方案,有时可能是一个难以解决的问题。

这是一个典型的机器人问题,需要解决的问题,以控制机械臂执行指定的任务。在一个二维的输入空间中,有一个两关节的机械臂并给定所需的坐标,问题简化为找到涉及的两个角度。第一个角度是在第一个手臂和地面(或任何它附着的东西)之间。第二个角度在第一个手臂和第二个手臂之间。

图1:展示两个角度的双关节机械臂的插图,Theta1.Theta2.

为什么使用模糊逻辑?

对于像双关节机械臂这样的简单结构,在给定手臂尖端的理想位置时,可以通过数学推导出关节的角度。然而,对于更复杂的结构(例如:在三维输入空间中操作的n关节机械臂),推导出逆运动学的数学解可能具有挑战性。

利用模糊逻辑,我们可以构造一个模糊推理系统,如果问题的正运动学是已知的,就可以推导逆运动学,从而避免了开发解析解的需要。而且,模糊解很容易理解,不需要特殊的背景知识来理解和评价它。

在以下部分中,描述了用于开发这种解决方案的广泛概要,并稍后详细说明了详细步骤。

模糊解概述

由于双关节机械臂的前向动力学公式是已知的,因此推导出臂的尖端的x和y坐标,用于两个关节的整个旋转角度范围。坐标和角度被保存为培训ANFIS(自适应神经模糊推理系统)网络的训练数据。

在培训期间,ANFIS网络了解映射坐标(xy)到角度(Theta1.Theta2.).训练后的ANFIS网络将作为一个更大的控制系统的一部分来控制机器人手臂。在已知机械臂的期望位置后,控制系统利用经过训练的ANFIS网络推导出关节的角度位置,并对机械臂的关节施加相应的力,使其移动到期望位置。

简称ANFIS是什么?

ANFIS是自适应神经模糊推理系统的缩写。它是一种混合神经模糊技术,将神经网络的学习能力引入模糊推理系统。学习算法利用训练输入/输出数据调整sugeno型模糊推理系统的隶属度函数。

在本例中,输入/输出数据指的是“坐标/角度”数据集。坐标作为ANFIS的输入,角度作为输出。学习算法通过一个叫做训练的过程教会ANFIS将坐标映射到角度。在训练结束时,经过训练的ANFIS网络将学习到输入-输出映射,并准备部署到更大的控制系统解决方案中。

数据生成

Theta1.第一臂与地面的夹角。让Theta2.是第二臂和第一臂之间的角度(参见图1例证)。让第一臂的长度成为l1第二只手臂是l2

假设第一接头的自由度有限旋转,并且它可以在0到90度之间旋转。类似地,假设第二接头具有有限的自由度来旋转,并且可以在0到180度之间旋转。(此假设夺走了需要处理一些将混淆话语的特殊情况。)因此,0 < =θ₁< =π/ 20 <= theta2 <= pi

图2:说明一切可能Theta1.Theta2.值。

对于每一个组合Theta1.Theta2.用正运动学公式推导出x和y坐标的值。

以下代码片段显示如何为所有组合生成数据Theta1.Theta2.值并保存到一个矩阵中作为培训数据。将数据保存在两个矩阵中的原因将在下一节中解释。

l1 = 10;第一臂的%长度l2 = 7;第二臂的长度θ₁= 0:0.1:π/ 2;%所有可能的值THETA2 = 0:0.1:PI;%所有可能的ta2值[θ₁,θ₂]= meshgrid(θ₁,θ₂);%生成网格的角度值X = l1 * cos(THETA1) + l2 * cos(THETA1 + THETA2);计算x坐标Y = l1 * sin(THETA1) + l2 * sin(THETA1 + THETA2);%compute y坐标data1 = [X(:) Y(:) THETA1(:)];%创建x-y-theta1数据集data2 = [x(:) y(:) theta2(:)];%创建x-y-theta2数据集

以下绘图显示通过循环通过不同组合生成的所有X-Y数据点Theta1.Theta2.并推导出它们的x和y坐标。可以使用以下代码生成该图。为了便于理解,对情节作了进一步的注释。

情节(X (:), Y (:), ' r。');轴相等;xlabel('X','fontsize',10) ylabel('Y','fontsize',10) title('所有theta1和theta2组合的X-Y坐标','fontsize',10)

图3:为所有人产生的X-Y坐标Theta1.Theta2.组合使用正运动学公式

建立简称ANFIS网络

为这个问题构建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.命令。对于本例,指定一个FIS对象7每个输入变量的成员关系函数。对系统进行培训150.命令窗口显示训练信息。

选择= anfisOptions;opt.InitialFIS = 7;opt.EpochNumber = 150;opt.DisplayANFISInformation = 0;opt.DisplayErrorValues = 0;opt.DisplayStepSize = 0;opt.DisplayFinalResults = 0;

使用第一组训练数据训练ANFIS系统,data1

disp ('——>首先培训ANFIS网络'
- >培训第一个ANFIS网络。
ANFIS1 = ANFIS(DATA1,OPT);

更改输入会员函数的数量并使用第二组培训数据列出ANFIS系统,data2

disp ('——>训练第二个ANFIS网络。'
>培训第二个ANFIS网络。
opt.InitialFIS = 6;anfis2 =简称anfis (data2选择);

在本例中,通过对不同的电位值进行实验,选择输入隶属度函数的个数和训练周期。

anfis1anfis2代表将在较大的控制系统中部署的两个培训的ANFIS网络。

一旦训练完成,两个ANFIS网络已经学会了近似角度(Theta1.Theta2.)作为坐标的函数(xy).使用模糊方法的一个优点是,ANFIS网络现在可以近似坐标的角度是相似的,但不完全相同的训练。例如,经过训练的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);% theta2是推导出来的K1 = l1 + l2.*c2;k2 = l2 * s2;tta1d = atan2(Y,X) - atan2(k2,k1);推导出%theta1

THETA1DTheta2d.变量是否包含的值Theta1.Theta2.用逆运动学公式推导。

Theta1.Theta2.使用该命令得到训练后的ANFIS网络预测值evalfis用于评估给定输入的FIS。

在这里,evalfis用于在逆运动学公式中使用前面使用的相同X-Y值的FIS输出。

xy = [x(:)y(:)];theta1p = evalfis(ANFIS1,XY);anfis1所预测的THETA2P = evalfis (anfis2, XY);anfis2预测的ta2

现在,我们可以看到FIS输出对推导值的近距离。

theta1diff = theta1d(:)  -  theta1p;theta2diff = theta2d(:)  -  theta2p;子图(2,1,1)绘图(Theta1diff)ylabel(“THETA1D THETA1P”)标题(“推断的-预测的”) subplot(2,1,2) plot(theta2diff) ylabel(“THETA2D THETA2P”)标题('推导出Theta2  - 预测的Theta2'

图中包含2个轴对象。轴对象1,标题为推导的-预测的包含一个类型为line的对象。轴对象2的标题是推导的ta2 -预测的ta2包含一个类型为线的对象。

错误在1E-3范围是它正在使用的应用程序的相当良好的数字。然而,这对于另一个应用程序可能不可接受,在这种情况下,其中的参数简称anfis函数可能会被调整,直到得到一个可接受的解决方案。此外,还可以探索其他技术,如输入选择和建模问题的替代方法。

构建训练有素的ANFIS网络周围的解决方案

现在给定一个特定的任务,例如机器人捡一个对象在一个流水线,大型控制系统将使用训练有素的简称ANFIS网络作为参考,就像一个查找表,来确定角度的武器必须给定的期望位置的手臂。知道关节的期望角度和当前角度后,系统将对手臂的关节施加适当的力,使其移动到期望的位置。

invkine命令启动一个GUI,显示两个训练过的ANFIS网络在被要求跟踪一个椭圆时的表现。

图4:逆运动学建模的GUI。

在示例中使用的两个ANFIS网络已经经过预训练,并部署到一个更大的系统中,该系统控制两关节机器人手臂的尖端在输入空间中跟踪椭圆。

可以追踪的椭圆可以移动。将椭圆移动到稍微不同的位置,并观察系统如何通过将机器人臂的尖端从其当前位置移动到椭圆上的新位置上的最近点来响应。还观察到系统顺利响应,只要要跟踪的椭圆在于表示用于训练网络的数据网格的“X”标记的斑点。一旦椭圆在训练的数据范围之外,ANFIS网络就无法预测地响应。这强调了具有相关和代表数据进行培训的重要性。必须基于预期的操作范围生成数据,以避免此类不可预测性和不稳定问题。

也可以看看

|

相关的话题