基于卷积神经网络的冗余机械臂运动学逆解求解

2022-03-03 05:55刘世平夏文杰马梓焱黄元境张文奇
载人航天 2022年1期
关键词:运动学卷积轨迹

刘世平, 夏文杰, 陈 萌, 马梓焱, 黄元境, 张文奇

(1.上海市空间飞行器机构重点实验室, 上海 201108; 2.华中科技大学机械科学与工程学院, 武汉 430074)

1 引言

对于自由度数目小于7 的非冗余机械臂,通过所期望的末端位置和姿态信息,可使用几何解法对其运动学逆解进行求解,得到机械臂的各个关节角度来控制机械臂的运动。 与非冗余机械臂相比,冗余机械臂具有许多优良的性能,如增加机械臂灵活度、实现避障、具有良好的容错性等,但是其求解运动学逆解的过程更加复杂。

几何解法和数值解法是目前主要的7 自由度机械臂运动学逆解的求解方法。 几何解法具有求解速度快、求解精度高等优点,但是其通用性差,主要适用于符合Pieper 准则的特殊构型机械臂,通过给定臂形角,增加约束的方法进行求解。目前传统数值解法有加权最小范数法、广义/狭义雅克比伪逆法、梯度投影法等,这些方法具有良好的通用性,但是计算量大、求解时间较长、存在累积误差,并且当机械臂处于奇异位置时,无法对其运动学逆解进行求解。

为克服传统方法的不足,智能算法在冗余机械臂运动学逆解求解问题中得到应用,这些算法主要采用遗传算法、神经网络等。 Xia等通过双神经网络完成了对冗余机械臂的控制;Toshani 等通过将神经网络与非线性二次规划相结合进行7 自由度机械臂逆解的求解;欧群文等首先通过遗传算法获得7 自由度冗余机械臂运动学逆解的样本数据,然后使用RBF(径向基)神经网络对样本进行训练得到运动学逆解解法;Demby 等使用人工神经网络和自适应神经模糊推理系统对4、5、6 和7 自由度机械臂的运动学逆解进行了求解。

卷积神经网络 ( Convolutional Neural Networks, CNN)在获取数据特征方面得到广泛的应用。 本文基于某型7 自由度机械臂的运动学模型,对LeNet 模型进行改进,设计卷积神经网络对机械臂运动学逆解的问题进行求解。

2 卷积神经网络模型搭建

对该7 自由度机械臂构型连杆坐标系进行建立,坐标系如图1 所示。 DH 参数表如表1 所示。

图1 7 自由度机械臂DH 坐标系Fig.1 DH coordinates frames of the 7-DOF manipulator

表1 7 自由度机械臂DH 参数Table 1 DH parameters of the 7-DOF manipulator

各关节角度与末端位姿的关系如式(1)、式(2)所示。

式中,θ为第关节角度, T(θ) 为第1关节到第关节之间的变换矩阵,=1,2,…,7。

机械臂的末端位姿矩阵是通过7 个关节角计算得出,具有对应关系,因此可以对神经网络模型输入末端位姿矩阵来计算机械臂相应的关节角角度。 在本文建立的卷积神经网络模型中,输入层为3× 4 的位姿矩阵,包括3× 3 的旋转矩阵与1× 3 的平移矩阵;输出层为7 个神经元,代表机械臂各个关节角度。

2.1 卷积核

数据的特征可以通过卷积核进行卷积操作获得。 由于所给的输入层是3×4 的矩阵,并且该矩阵以列向量作为特征,所以输入层选用的卷积核大小为3× 1,通过卷积核可以组合列向量的值,如式(3)所示。

2.2 激活函数

激活函数可以让线性输入变为非线性输出,通过不同的神经元个数以及激活函数可以完成映射关系的实现。 目前激活函数有多种,常用的有函数、函数以及函数。 由于函数相对于其他2 种激活函数的计算复杂度低、收敛速度快,并且不容易出现梯度消失与梯度饱和等问题,因此本模型选用的激活函数为函数,如式(4)所示。

2.3 损失函数

在模型训练中,需要衡量模型所得到的预测值与真实值之间的误差,在机器学习中,将衡量误差大小的函数称为损失函数。 通常损失函数的值是正的,其值越大表示得到的模型的训练误差越大。 平方误差函数与交叉熵损失函数是目前比较常用的损失函数。 交叉熵损失函数通过计算得到输出层的每个神经元预测值在0 到1 之间,因此一般用于分类问题中。 平方误差函数直接得到预测值与真实值的误差,可以用于函数拟合,所以损失函数使用平方误差函数,见式(5)。

2.4 优化算法

根据已经给出的损失函数,为了求得最小化损失函数的值,需要通过优化算法有限次迭代神经网络模型参数来尽可能降低损失函数的值。 目前神经网络使用较多的优化算法有SGD 算法、Adam 算法等。 SGD 算法虽然可以达到全局最优,但是该算法需要自己设定学习率,对学习率的设定很严格,并且容易在模型训练过程中停在鞍点,而Adam 算法不用人为设定干预学习率且容易跳过鞍点。 该模型所选用的优化算法为Adam算法。

2.5 卷积神经网络模型结构设计

卷积神经网络能够保留数据输入的形状从而较好地得到数据的特征。 LeNet是一个具有5层网络结构的CNN 模型,含有2 个卷积层、3 个全连接层及2 个池化层。 2 个卷积层卷积核大小为5× 5,输出通道数为6 和16,3 个全连接层的输出个数为120,84 和10,最后一层的10 代表模型的输出种类个数,LeNet 已经成功用于手写数字的识别。

本文对LeNet 模型进行改进设计,模型总共设计7 层,前3 层结构为卷积层,后4 层的结构为全连接层,由于每一层输入的数据尺寸较小且卷积核较小,因此该模型不包含池化层,并且增大卷积层输出通道数以增加训练的参数,增强拟合能力。

模型的输入层是3×4 的矩阵,输入层的卷积核为3× 1,输出通道数为64,对矩阵每一个列向量的特征进行学习,下一层的卷积核为1× 1,输出通道数为64,第3 层卷积核为1× 4,输出通道数为256,第3 层对前一层数据的所有特征进行学习。 后4 层全连接的输出个数分别为256、128、64 和7,最后一层输出数7 表示7 自由度机械臂的各个关节角角度。

为防止模型对某些神经元过度依赖,造成模型过拟合问题,可以在不改变输出期望值的情况下对模型使用丢弃法,随机丢弃一些神经元。 该模型在第3 层与第4 层使用了丢弃法,丢弃概率为0.1。

3 卷积神经网络模型训练

本文建立的卷积神经网络如图2 所示,模型的输入信息为7 自由度机械臂的位姿矩阵,输出值为7 自由度机械臂各个关节角角度,训练集为10 000组数据。 该卷积神经网络的训练过程如下:

图2 卷积神经网络模型Fig.2 Convolutional neural networks model

1)参数初始化设置。 由于偏置对于神经网络中的梯度流动并无影响,神经网络偏置初始化为0。 但是当神经网络初始权重也置为0 时,正向计算时所有状态值与激活值的结果为0,同时反向计算时所有梯度为0,那么对于整个神经网络训练过程而言,相当于梯度消失了,不能进行任何有效的训练。 神经网络的训练过程中是基于梯度下降进的,因此参数的均值为0,输出和输入数据的方差一致训练效果更好,可以通过对初始参数进行高斯分布或均值分布达到该目的。 He等考虑了激活函数对输出数据分布的影响,其正态分布初始化以0 为中心,标准差为式(6)。

式中,_为权重张量中输入单位的数量。

该模型选用的激活函数为函数,因此神经网络初始权重初始化方法为He 等的方法。 为了得到较快的训练速度与较好的训练精度,模型的_设置为64,设置为160。

2)正向传播与反向传播。 数据沿着神经网络模型的结构进行正向传播,依次计算并存储模型的中间变量,通过正向传播得到的输出值与真实值的平方差计算得到单个样本的损失函数,为了防止过拟合,同时计算范数正则化对模型的权重参数进行约束,得到总的损失函数为式(7)、式(8):

式中,为总的损失函数,为单个样本损失函数,为对权重参数范数正则化的值,的取值影响约束程度,k为权重参数。

通过反向传播,从输出层到输入层,依据链式法则计算神经网络中参数的梯度,并对参数进行更新,最终得到卷积神经网络的模型。

3)实验配置与训练结果。 本文使用的开发语言为python3.7,深度学习平台为tensorflow2.0,GPU 为NVIDIA GeForceGTX 950M,CPU 为Intel Core i5-6300HQ。 通过为160 次的训练得到卷积神经网络的损失值如图3 所示,在训练过程中最后损失值接近于0,训练能够收敛,训练效果较好。

图3 卷积神经网络训练过程中损失值Fig.3 Loss value in convolution neural networks training

4 实验验证

为验证所设计模型对7 自由度机械臂运动学逆解求解的准确度与有效性,通过设计轨迹跟踪实验进行验证。 实验内容为:通过给定期望轨迹,用卷积神经网络求出7 自由度机械臂的各关节角度值,用所求得的角度通过运动学正解得到机械臂末端的运动轨迹,最后得到与期望轨迹误差值。所定义的机械臂的期望轨迹为式(9):

从轨迹中选取66 个点的位姿信息输入卷积神经网络模型中求运动学逆解得到各个关节角度如图4 所示,所计算的关节角范围在机械臂的给定范围内,并且计算得到的各关节角角度的曲线为光滑曲线,因此机械臂的运动为连续运动。

图4 机械臂各关节角角度曲线Fig.4 Angle curve of each joint angle of manipulator

把机械臂关节角角度通过运动学正解得到末端轨迹图,如图5 所示,基于卷积神经网络所求得的轨迹与期望轨迹基本重合,因此使用该方法进行机械臂运动学逆解求解得到的结果较好。

图5 轨迹对比图Fig.5 Comparison of the trajectories

同时,根据机械臂运动学正解的结果获得本模型求解过程中实际轨迹点与期望轨迹点各个方向的误差值与总体误差值,分别如图6 与图7 所示。 从图6 中得出所求实际轨迹点与期望轨迹点在各个方向上的误差在2.5 mm 以内,从图7 中得出总的误差在3 mm 以内,平均误差为1.2 mm。模型求解的误差在实际任务中能够满足所需的运动要求。 本方法求解的时间为12.96 ms,而使用该机械臂自带的粒子群算法计算时间为428 ms,使用传统的梯度投影法计算时间为637 ms,本方法在计算时间上得到了明显提高。 通过对轨迹跟踪实验的误差分析表明所设计的模型能够用来求解7 自由度机械臂运动学逆解,并且具有一定的求解精度与较短的求解时间,满足所执行实际任务的需求。

图6 实际轨迹与期望轨迹各个方向误差Fig.6 Error of the actual trajectory and expected trajectory in all directions

图7 实际轨迹与期望轨迹总误差Fig.7 Total error between actual trajectory and expected trajectory

5 结论

本文针对7 自由度冗余机械臂运动学逆解的求解问题,设计了卷积神经网络模型进行求解,得到机械臂运动轨迹到各个关节角度之间的映射关系。 通过对LeNet 模型进行改进,对卷积核、激活函数、损失函数、优化算法、模型结构与初始参数等进行设计与选择,建立了符合7 自由度机械臂运动学逆解求解问题的卷积神经网络模型。 最后设计了轨迹跟踪实验对所建立的卷积神经网络模型的有效性和求解精度进行验证,结果表明使用卷积神经网络对机械臂运动学逆解问题求解方法有效。

猜你喜欢
运动学卷积轨迹
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
基于MATLAB的工业机器人运动学分析与仿真
浅谈求轨迹方程中的增解与漏解
无从知晓
基于深度卷积网络与空洞卷积融合的人群计数
例析运动学中STS类信息题
卷积神经网络概述
捕捉物体运动轨迹
“必修1”专题复习与训练