主要内容

机械臂逆运动学建模

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

什么是逆运动学?

运动学是研究运动的科学。在一个双关节机械臂中,给定关节的角度,运动学方程给出了臂尖的位置。逆运动学是指逆过程。给定机械臂尖端的理想位置,关节的角度应该是多少,才能将机械臂尖端定位在理想位置。通常有不止一个解决方案,有时会成为一个难以解决的问题。

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

图1:图示具有两个角度的双关节机械臂,θ₁而且θ

为什么使用模糊逻辑?

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

利用模糊逻辑,我们可以构建一个模糊推理系统,在已知问题的正运动学的情况下推导出逆运动学,从而避免了需要开发解析解。此外,模糊解易于理解,不需要特殊的背景知识来理解和评价它。

在下一节中,将描述开发这种解决方案的大致轮廓,然后详细阐述具体步骤。

模糊解概述

由于已知双关节机械臂的正运动学公式,推导出了两个关节旋转角度的整个范围内臂尖的x坐标和y坐标。保存坐标和角度作为训练数据,用于训练自适应神经模糊推理系统(ANFIS, adaptive neural -fuzzy inference system)网络。

在训练过程中,ANFIS网络学会绘制坐标(xy)到角度(θ₁θ).经过训练的ANFIS网络随后被用作更大的控制系统的一部分来控制机械臂。在知道机械臂的期望位置后,控制系统使用训练过的ANFIS网络来推断关节的角度位置,并对机械臂的关节施加相应的力,将其移动到期望的位置。

什么是ANFIS?

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

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

数据生成

θ₁第一臂与地面的夹角。让θ为第二臂与第一臂的夹角(参见图1)。让第一臂的长度为l1第二臂是l2

假设第一个关节的旋转自由度有限它可以在0到90度之间旋转。同样,假设第二个关节的旋转自由度有限,可以在0到180度之间旋转。(这个假设就不需要处理一些会混淆论述的特殊情况了。)因此,0 < =θ₁< =π/ 2而且0 < =θ< =π

图2:显示所有可能情况的插图θ₁而且θ值。

现在,对于每一个组合θ₁而且θ利用正运动学公式推导了x、y坐标的取值。

下面的代码片段显示如何为所有组合生成数据θ₁而且θ值并保存到一个矩阵中用作训练数据。下面一节将解释将数据保存为两个矩阵的原因。

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

下面的图显示了通过不同组合循环生成的所有X-Y数据点θ₁而且θ然后分别推导出x和y坐标。可以使用以下代码生成该图。为了便于理解,情节被进一步注释。

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

图3:生成X-Y坐标θ₁而且θ正运动学公式的组合

建立ANFIS网络

为这一问题建立ANFIS解决方案的一种方法是建立两个ANFIS网络,一个用于预测θ₁另一个是预测θ

为了使ANFIS网络能够预测角度,它们必须用样本输入输出数据进行训练。第一个ANFIS网络将以X和Y坐标作为输入和对应的坐标进行训练θ₁值作为输出。矩阵data1包含了x-y-theta1训练第一个ANFIS网络所需的数据集。因此data1将被用作训练第一个ANFIS网络的数据集。

同样,第二个ANFIS网络将以X和Y坐标作为输入和对应的坐标进行训练θ值作为输出。矩阵data2包含了x-y-theta2训练第二个ANFIS网络所需的数据集。因此data2将被用作训练第二个ANFIS网络的数据集。

要训练ANFIS网络,首先使用anfisOptions命令。对于本例,指定一个FIS对象7每个输入变量的隶属函数。培训系统150epoch和抑制“命令窗口”显示训练信息。

opt = 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,opt);

在本例中,基于对不同电位值的实验选择了输入隶属函数的个数和训练周期。

anfis1而且anfis2表示两个经过训练的ANFIS网络,将部署在更大的控制系统中。

一旦训练完成,两个ANFIS网络已经学会了近似角度(θ₁θ)作为坐标(xy).使用模糊方法的一个优点是ANFIS网络现在可以近似于坐标的角度,这些坐标与训练时的坐标相似,但并不完全相同。例如,经过训练的ANFIS网络现在能够近似计算包含在训练数据集中的两点之间的坐标的角度。这将允许最终控制器在输入空间中平稳地移动手臂。

我们现在有两个训练有素的ANFIS网络,准备部署到更大的系统中,利用这些网络来控制机械臂。

验证ANFIS网络

训练完网络后,一个重要的后续步骤是验证网络,以确定ANFIS网络在更大的控制系统内的表现如何。

由于这个例子问题涉及的是一个双关节机械臂,它的逆运动学公式可以推导出来,因此有可能用推导出的公式的答案来检验ANFIS网络所产生的答案。

假设ANFIS网络在工作范围内具有低误差是很重要的0 < x < 2而且8 < y < 10

X = 0:0.1:2;用于验证的% x坐标Y = 8:0.1:10;用于验证的% y坐标

θ₁而且θ利用逆运动学公式从x坐标和y坐标推导出数值。

[X,Y] =网格(X,Y);c2 = (x²+ y²- l1²- l2²)/(2*l1*l2);S2 =√(1 - c2.^2);THETA2D = atan2(s2,c2);% theta2是推导出来的K1 = l1 + l2.*c2;K2 = l2*s2;THETA1D = atan2(Y,X) - atan2(k2,k1);% theta1被推导出来

THETA1D而且THETA2D保存值的变量是吗θ₁而且θ利用逆运动学公式进行推导。

θ₁而且θ使用该命令可以得到经过训练的ANFIS网络预测的值evalfis它为给定的输入计算FIS。

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

Xy = [x (:) y (:)];THETA1P = evalfis(anfis1,XY);% theta1由anfis1预测THETA2P = evalfis(anfis2,XY);% theta2由anfis2预测

现在,我们可以看到FIS的输出相对于推导出的值有多接近。

theta1diff = THETA1D(:) - THETA1P;theta2diff = THETA2D(:) - THETA2P;Subplot (2,1,1) plot(theta1diff) ylabel(' theta1d - theta1p ')标题('推导的-预测的') subplot(2,1,2) plot(theta2diff) ylabel(' theta2d - theta2p ')标题('推导的-预测的'

图中包含2个轴对象。Axes对象1,标题为infer theta1 - predictive theta1包含一个类型为line的对象。Axes对象2,标题为infer theta2 - predictive theta2包含一个类型为line的对象。

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

围绕训练过的ANFIS网络构建解决方案

现在给定一个特定的任务,比如机器人在装配线上捡起一个物体,更大的控制系统将使用训练过的ANFIS网络作为参考,就像一个查找表,以确定手臂的角度必须是什么,给定手臂的尖端所需的位置。知道所需的角度和关节的当前角度后,系统将对手臂的关节施加适当的力,将它们移动到所需的位置。

invkine命令启动一个GUI,显示当被要求跟踪椭圆时,两个经过训练的ANFIS网络是如何执行的。

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

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

要跟踪的椭圆可以四处移动。将椭圆移动到稍微不同的位置,通过将机械臂的尖端从当前位置移动到椭圆新位置上最近的点,观察系统如何响应。还可以观察到,只要要跟踪的椭圆位于“x”标记的点(代表用于训练网络的数据网格)内,系统就会平稳响应。一旦椭圆移出了它训练的数据范围,ANFIS网络的反应就不可预测了。这就强调了为培训提供相关和有代表性的数据的重要性。必须根据预期的作业范围生成数据,以避免这种不可预测性和不稳定性问题。

另请参阅

|

相关的话题