主要内容

机械臂逆运动学建模

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

什么是逆运动学?

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

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

图1:展示两个角度的双关节机械臂的插图,θ₁θ

为什么使用模糊逻辑?

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

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

在下一节中,将描述开发此类解决方案的大致概要,稍后将详细阐述具体步骤。

模糊解概述

由于已知两关节机械臂的正运动学公式,因此在两个关节的整个旋转角度范围内,推导出了手臂尖端的x和y坐标。保存坐标和角度作为训练数据,用于训练ANFIS (adaptive neurofuzzy inference system)网络。

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

简称ANFIS是什么?

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

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

数据生成

θ₁第一臂与地面的夹角。让θ为第二臂与第一臂之间的夹角(图1为说明)。让第一条手臂的长度l1第二只手臂是l2

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

图2:说明一切可能θ₁θ值。

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

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

l1 = 10;第一臂的长度l2 = 7;第二臂的长度θ₁= 0:0.1:π/ 2;%所有可能的值θ= 0:0.1:π;%所有可能的ta2值[θ₁,θ₂]= meshgrid(θ₁,θ₂);%生成网格的角度值X = l1 * cos(THETA1) + l2 * cos(THETA1 + THETA2);计算x坐标Y = l1 * sin(THETA1) + l2 * sin(THETA1 + THETA2);计算y坐标data1 = [X(:) Y(:) THETA1(:)];创建数据集data2 = [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每个输入变量的成员关系函数。对系统进行培训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、选择);

改变输入的隶属函数的数量,使用第二组训练数据训练ANFIS系统,data2

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

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

anfis1anfis2代表两个训练有素的ANFIS网络,将部署在更大的控制系统中。

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

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

验证简称ANFIS网络

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

由于本示例问题处理的是一个两关节机器人手臂,其逆运动学公式可以推导出来,因此可以用推导出来的公式来测试ANFIS网络产生的答案。

假设ANFIS网络在运行范围内保持低误差是很重要的0 < x < 28 < y < 10

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

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

(X, Y) = meshgrid (X, Y);(x ^2 + y ^2 - l1^2 - l2^2)/(2*l1*l2)S2 =√(1 - c2.^2);THETA2D =量化(s2 c2);% theta2是推导出来的K1 = l1 + l2.*c2;k2 = l2 * s2;tta1d = atan2(Y,X) - atan2(k2,k1);% ta1是推导出来的

THETA1DTHETA2D变量是否包含的值θ₁θ用逆运动学公式推导。

θ₁θ使用该命令得到训练后的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”)标题(“推断的-预测的”

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

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

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

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

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

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

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

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

另请参阅

|

相关的话题