机械臂逆运动学建模

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

什么是反向运动学?

运动学是运动科学。在给定关节的角度的两个联合机器人臂中,运动学方程给出了臂尖的位置。逆运动学指的是反向过程。给定机械臂尖端的所需位置,关节的角度应该是为了在所需位置定位臂的尖端。通常有多个解决方案,有时可以是一个难以解决的问题。

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

图1:显示有两个角度的双关节机器人胳膊的例证,Theta1.θ

为什么使用模糊逻辑?

对于像双关节机械臂这样的简单结构,可以在鉴于臂尖的所需位置,数学地推断接头处的角度。然而,具有更复杂的结构(例如:在三维输入空间中运行的N-联合机器人臂),其致力于逆运动学的数学解决方案可能会挑战。

使用模糊逻辑,如果已知问题的前进运动学,我们可以构建模糊推理系统,从而揭示了逆运动学,因此隐藏了开发分析解决方案的需要。此外,模糊解决方案很容易理解,不需要特殊的背景知识来理解和评估它。

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

模糊解概述

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

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

简称ANFIS是什么?

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

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

数据生成

Theta1.是第一臂和地面之间的角度。让θ为第二臂与第一臂之间的夹角(图1为说明)。让第一条手臂的长度l1而第二臂的那个是l2

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

图2:说明一切可能Theta1.θ价值观。

对于每一个组合Theta1.θ使用前向运动型公式推断出x和y坐标。

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

l1 = 10;第一臂的长度l2 = 7;第二臂的长度Theta1 = 0:0.1:PI / 2;%所有可能的值θ= 0:0.1:π;%所有可能的theta2值[θ₁,θ₂]= meshgrid(θ₁,θ₂);%生成一个由ta1和ta2值组成的网格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数据点Theta1.θ并为每个辅助x和y坐标。可以使用下面显示的代码片段生成图。绘图的图表进一步说明,以便更容易理解。

情节(X (:), Y (:), ' r。');轴相等;xlabel('X','fontsize',10) ylabel('Y','fontsize',10) title('使用正运动学公式生成的所有ta1和ta2组合的X-Y坐标','fontsize',10)

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

建立简称ANFIS网络

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

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

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

要培训ANFIS网络,首先使用该网络指定培训选项anfisOptions命令。对于此示例,请指定FIS对象7.每个输入变量的成员关系函数。对系统进行培训150.epochs并抑制命令窗口显示培训信息。

选择= 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,OPT);

为此示例,基于具有不同潜在值的实验选择输入隶属函数和训练时期的数量。

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

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

我们现在有两个培训的ANFIS网络,准备部署到较大的系统中,该系统将利用这些网络来控制机器人臂。

验证简称ANFIS网络

培训了网络,一个重要的后续步骤是验证网络以确定ANFIS网络在较大控制系统内部的执行程度如何。

由于此示例问题处理了一个双联接机器人臂,其逆运动学公式可以衍生出来,因此可以测试ANFIS网络从派生公式中答案产生的答案。

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

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

Theta1.θ使用逆运动学公式从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);推导出%theta2K1 = l1 + l2.*c2;k2 = l2 * s2;tta1d = atan2(Y,X) - atan2(k2,k1);推导出%theta1

THETA1DTHETA2D是保持值的变量Theta1.θ推断使用逆运动学公式。

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

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

Xy = [x (:) y (:)];THETA1P = evalfis (anfis1, XY);anfis1所预测的theta2p = evalfis(ANFIS2,XY);ANFIS2预测的%THETA2

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

theta1diff = THETA1D(:) - THETA1P;theta2diff = THETA2D(:) - THETA2P;次要情节(2,1,1);情节(theta1diff);ylabel ('theta1d  -  theta1p'“字形大小”10)标题('推导出Theta1  - 预测Theta1'“字形大小”, 10)次要情节(2,1,2);情节(theta2diff);ylabel ('theta2d  -  theta2p'“字形大小”10)标题(“推断的-预测的”“字形大小”,10)

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

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

现在给定一个特定的任务,例如机器人在装配线上拾取一个物体,更大的控制系统将使用经过训练的ANFIS网络作为参考,很像一个查找表,以确定手臂的角度必须是多少,给定手臂尖端的所需位置。了解关节的所需角度和当前角度后,系统将在手臂的关节上适当地施加力,以将其移动到所需位置。

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

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

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

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

另请参阅

|

相关的话题