机械臂逆运动学建模
本例展示了如何利用模糊系统对两关节机械臂的逆运动学进行建模。
什么是逆运动学?
运动学是关于运动的科学。在一个双关节机械臂中,给定关节的角度,运动学方程给出了手臂尖端的位置。逆运动学是指逆向过程。给定机械臂尖端的期望位置,为了将机械臂尖端定位在期望位置,关节的角度应该是什么?通常有不止一个解决方案,有时可能是一个很难解决的问题。
这是机器人技术中的一个典型问题,需要解决它来控制机械臂执行指定的任务。在二维输入空间中,给定给定坐标的双关节机械臂,问题简化为找到两个角度。第一个角度是在第一个臂和地面(或者它附着的任何东西)之间。第二个角在第一条胳膊和第二条胳膊之间。
图1:两关节机械臂的两个角度示意图,θ₁
和θ
为什么要使用模糊逻辑?
对于像双关节机械臂这样的简单结构,在给定手臂尖端的期望位置的情况下,可以用数学方法推导出关节处的角度。然而,对于更复杂的结构(例如:在三维输入空间中操作的n关节机械臂),推导出逆运动学的数学解可能是具有挑战性的。
利用模糊逻辑,我们可以构建一个模糊推理系统,如果问题的正运动学已知,则可以推导出逆运动学,从而避免了开发解析解的需要。此外,模糊解决方案易于理解,不需要特殊的背景知识来理解和评价它。
在下一节中,将描述开发此类解决方案的大致轮廓,然后详细阐述详细步骤。
模糊解概述
由于已知两关节机械臂的正运动学公式,推导了两关节整个转角范围内机械臂尖端的x坐标和y坐标。保存坐标和角度作为训练数据用于训练自适应神经模糊推理系统(ANFIS)网络。
在训练过程中,ANFIS网络学习映射坐标(x
,y
)到角(θ₁
,θ
)。经过训练的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;第二臂的%长度1 = 0:0.1:pi/2;%所有可能的值Theta2 = 0:0.1;%所有可能的值[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数据集dat2 = [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
每个输入变量的隶属函数。训练系统150
epoch和抑制命令窗口显示训练信息。
opt = anfisOptions;opt.InitialFIS = 7;opt.EpochNumber = 150;opt.DisplayANFISInformation = 0;opt.DisplayErrorValues = 0;opt.DisplayStepSize = 0;opt.DisplayFinalResults = 0;
使用第一组训练数据训练ANFIS系统,data1
.
disp (b>培训第一个ANFIS网络。)
b>培训首个ANFIS网络。
Anfis1 = Anfis1 (data1,opt);
改变输入隶属函数的数量,使用第二组训练数据训练ANFIS系统,data2
.
disp (——b>培训第二个ANFIS网络。)
——>训练第二个ANFIS网络。
opt.InitialFIS = 6;Anfis2 = anfis(data2,opt);
在本例中,基于不同势值的实验选择了输入隶属函数的个数和训练epoch。
anfis1
和anfis2
表示将在更大的控制系统中部署的两个经过训练的ANFIS网络。
一旦训练完成,两个ANFIS网络就学会了近似角度(θ₁
,θ
)作为坐标(x
,y
)。使用模糊方法的一个优点是,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] = 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);推导出% θ
THETA1D
和THETA2D
保存值的变量是θ₁
和θ
用逆运动学公式推导。
θ₁
和θ
使用该命令获得训练后的ANFIS网络的预测值evalfis
它计算给定输入的FIS。
在这里,evalfis
是用来找出相同的x-y值的FIS输出在前面的逆运动学公式中使用。
Xy = [x (:) y (:)];THETA1P = evalfis(anfis1,XY);anfis1预测的百分比THETA2P = evalfis(anfis2,XY);由anfis2预测的%
现在,我们可以看到FIS输出与推导出的值有多接近。
theta1diff = THETA1D(:) - THETA1P;theta2diff = THETA2D(:) - THETA2P;Subplot (2,1,1) plot(theta1diff) ylabel(“那个……那个……”)标题(“推导出-预测出”) subplot(2,1,2) plot(theta2diff) ylabel(“theta2d - theta2p”)标题(“推导出-预测出”)
错误在1 e - 3
范围,对于它所使用的应用来说,这是一个相当好的数字。但是,这对于另一个应用程序可能是不可接受的,在这种情况下,到简称anfis
功能可能会被调整,直到得到一个可接受的解决方案。此外,还可以探索其他技术,如输入选择和模拟问题的替代方法。
围绕经过训练的ANFIS网络构建解决方案
现在,给定一个特定的任务,比如机器人在装配线上捡起一个物体,更大的控制系统将使用训练过的ANFIS网络作为参考,就像查找表一样,根据手臂尖端的理想位置来确定手臂的角度。知道所需的角度和关节的当前角度后,系统将对手臂的关节施加适当的力,使其移动到所需的位置。
的invkine
命令会启动一个GUI,显示两个经过训练的ANFIS网络在被要求跟踪椭圆时的表现。
图4:用于逆运动学建模的GUI。
示例中使用的两个ANFIS网络已经进行了预训练,并部署到一个更大的系统中,该系统控制双关节机器人手臂的尖端在输入空间中跟踪椭圆。
要跟踪的椭圆可以四处移动。将椭圆移动到稍微不同的位置,观察系统如何通过将机械臂的尖端从当前位置移动到椭圆新位置上最近的点来做出响应。还观察到,只要要跟踪的椭圆位于表示用于训练网络的数据网格的“x”标记点内,系统就会平稳响应。一旦椭圆移动到训练数据的范围之外,ANFIS网络就会做出不可预测的反应。这强调了拥有相关和有代表性的培训数据的重要性。必须根据预期的操作范围生成数据,以避免此类不可预测性和不稳定性问题。