一种基于神经网络的6轴机器人动力学参数辨识方法与流程
机器人动力学是探讨机器人控制的基础，所以动力学参数辨识是机器人控制中非常关键的一项技术，工业机器人实现高精度控制，平滑运动轨迹都需要高精度的动力学参数。
目前机器人动力学传参数辨识大多采用遗传算法来优化激励轨迹，用最小二乘法来进行动力学参数的迭代估计，动力学参数估计精度不高，导致工业机器人难以准确控制。
针对现有技术的不足，本发明公开了一种基于神经网络的6轴机器人动力学参数辨识方法，提高了动力学参数的估计精度，具有较高的容错性。
一种基于神经网络的6轴机器人动力学参数辨识的方法，包括以下几个步骤:
根据拉格朗日动力学方程，推导出机器人显性线性表达式，根据最小惯性原理将表达式简化成线性形式，给出需要辨识的动力学参数，观测矩阵。
第二步激励轨迹优化进行关节角度的傅里叶级数展开，为了得到边界连续，关节角速度，角加速度在周期起始等于0的傅里叶级数，需要对它进行优化(改进)，以五次多项式来代替常数项，得到改进的傅里叶级数如下:
以免疫克隆算法来优化得到傅里叶级数的系数，得到优化的激励轨迹;
第三步实验采样让机器人跟随激励轨迹运动，多个周期，不同时刻用光电编码器采集多组机器人的关节角度，得到多组关节力矩作为实验样本，同时得到电机反馈电流，根据转矩系数，求出电机输出力矩即为关节力矩;
第四步数据处理通过三标准差以及中位值平均滤波法对实验采集的数据进行数据预处理，来降低数据噪声对实验的影响;
第五步动力学参数估计根据实验得到的多组观测矩阵以及关节力矩，通过神经网络来辨识出动力学参数。
第六步参数验证给出一条不同于激励轨迹的可执行轨迹，机器人跟随轨迹运动，多个周期，不同时刻采集多组机器人的关节角度，电机反馈电流，根据所求的动力学参数得到理论的关节力矩与实验得到关节力矩做对比，用力矩残差根来评价动力学参数的可靠性。
(1)首先对抗原进行识别，即对需要优化的问题进行分析，选出优化特征。
针对需要优化的特征进行可行性分析，然后构造出它的亲和度函数，作为问题的评价指标，同时构造出问题的约束条件。
(8)判断得到的新种群是否满足算法的终止条件，终止条件为迭代次数超过200次，如果满足终止条件，则终止寻优过程，否则继续进行迭代寻优。
进一步的，所述的第四步具体为对采样得到的多组观测矩阵数据，先进行三标准差准则，除去粗大误差;之后再用中位值平均滤波法对实验数据进行处理，来降低数据噪声带来的影响。
进一步的，所述的第五步具体为将实验得到观测矩阵作为神经网络的输入，初始的权重设置为0-1的随机值，实验得到的关节力矩作为神经网络输出的标签，理论的关节力矩作为神经网络的输出。
采用批量梯度下降优化算法来估计动力学参数，训练完的神经网络的权重即为待估计的动力学参数。
进一步的，所述的第一步中，对于n关节的机器人系统,考虑关节摩擦的影响,其动力学方程可以用二阶非线性微分方程来表示:
进一步的，所述的第三步中，将实验得到的关节角度，将其拟合成傅里叶级数，对其求微分得到关节角速度，再对求微分得到关节角加速度，组成多组观测矩阵作为实验样本。
本发明的优势和有益效果在于如下几点:
动力学参数辨识的传统方法有解体测量法，cad法，整体辨识法，本发明提出的方法属于整体辨识法的一种，相较于其他俩种方法，整体解析法是通过机器人实际运行得到的，更符合实际场景，辨识的结果与实际更加接近，而且不需要对机器人进行解体，方便安全。
目前的动力学参数辨识方法对数据处理大多采用均值化滤波方法，本发明提出以三标准差准则以及中位值平均滤波法对数据进行处理，除去因操作失误或不正确带来粗大误差，中位值平均滤波综合了两种滤波算法的优点，既能抑制随机干扰，又能滤除明显的脉冲干扰。
对于激励轨迹大多采用遗传算法进行优化，容易陷入局部最优，计算比较复杂，本发明采用人工免疫算法能够有效避免局部最优的情况发生，算法的收敛速度较快。
目前的动力学参数辨识方法对动力学参数估计大多采用加权最小二乘迭代法，本发明提出以神经网络来估计动力学参数，神经网络有着较高的容错性与高速寻找优化解的能力，通过神经网络可以很快，很准确的估计机器人的动力学参数。
图1是本发明中机器人动力学参数估计的流程框图;
图2是本发明中免疫克隆优化算法的流程图;
图3是本发明中免疫克隆算法优化效果的示意图;
图4是本发明中神经网络的结构的示意图;
图5是本发明的梯度下降优化算法的示意图;
图6是本发明的验证动力学参数可靠性的流程图。
下面结合说明书附图，对本发明的技术方案作进一步说明。
d-h参数
alpha1=pi/2;a1=160;d1=0;theta1=q1;init_theta1=0
alpha2=0;a2=575;d2=0;theta2=q2;init_theta2=pi/2
alpha3=pi/2;a3=130;d3=644;theta3=q3;init_theta3=0
alpha4=-pi/2;a4=0;d4=0;theta4=q4;init_theta4=0
alpha5=pi/2;a5=0;d5=0;theta5=q5;init_theta5=-pi/2
alpha6=0;a6=0;d6=109.5;theta6=q6;init_theta6=pi/2
本发明采用以下步骤:
一种基于神经网络的6轴机器人动力学参数辨识的方法，主要包括以下几个步骤:
根据拉格朗日动力学方程，推导出机器人显性线性表达式，根据最小惯性参数原理将表达式简化成线性形式，并给出需要辨识的动力学参数，观测矩阵。
对于n关节的机器人系统,考虑关节摩擦的影响,其动力学方程可以用二阶非线性微分方程来表示:
第二步激励轨迹优化对关节角度进行傅里叶级数展开，为了得到边界连续，关节角速度，角加速度在周期起始等于0的傅里叶级数，需要对它进行优化(改进)，以五次多项式来代替常数项，得到改进的傅里叶级数:
同时，机器人的关节位置，速度和加速度受到约束，所以激励轨迹的寻优问题是一个多约束的最优问题。
优化指标为观测矩阵的条件数最小，传统的方法求解异常复杂，因此，采用免疫克隆选择算法，来获得较好的优化结果。
免疫克隆选择算法寻优步骤如下:
针对需要优化的特征进行可行性分析，然后构造出它的亲和度函数，即为观测矩阵的条件数最小，作为问题的评价指标，同时构造出问题的约束条件。
所述的第二步具体为判断得到的新种群是否满足算法的终止条件，终止条件为迭代次数超过200次。
如果满足终止条件，则终止寻优过程，否则继续进行迭代寻优。
免疫克隆算法迭代计算得到优化的傅里叶级数系数，生成优化的激励轨迹。
算法流程图如附图2，人工免疫算法优化的效果图，如附图3。
第三步实验采样让机器人跟随激励轨迹运动，多个周期，不同时刻用光电编码器采集多组机器人的关节角度，将实验得到的关节角度，将其拟合成傅里叶级数，对其求微分得到关节角速度，再对求微分得到关节角加速度，组成多组观测矩阵作为实验样本，根据惯性矩阵和哥氏力矩阵推导出观测矩阵具体为:
w1_1=ddq1;w1_2=ddq1*sin(q2)^2+dq1*dq2*sin(2*q2);w1_3=-ddq1*sin(2*q2)
-2*dq1*dq2*cos(2*q2);w1_4=ddq2*sin(q2)+dq2^2*cos(q2);w1_5=ddq2*cos(q2)
-dq2^2*sin(q2);w1_6=0;w1_7=2*a2*(ddq1*cos(q2)-dq1*dq2*sin(q2));w1_8=
-2*a2*(ddq1*sin(q2)-dq1*dq2*cos(q2));w1_9=-0.5*ddq1*cos(2*q2+2*q3)+
dq1*(dq2+dq3)*sin(2*q2+2*q3);w1_10=-ddq1*sin(2*q2+2*q3)-
2*dq1*(dq2+dq3)*cos(2*q2+2*q3);
w1_11=(ddq2+ddq3)*sin(q2+q3)+(dq2+dq3)^2*cos(q2+q3);
w1_12=(ddq2+ddq3)*cos(q2+q3)+(dq2+dq3)^2*sin(q2+q3);
w1_14=ddq1*(a3*cos(q3)+a3*cos(2*q2+q3)+2*a2*cos(q2+q3))
-2*dq1*dq2*(a3*sin(2*q2+q3)+a2*sin(q2+q3))
-dq1*dq3*(2*a2*sin(q2+q3)+a3*sin(q3)+a3*sin(q3+2*q2));
w1_15=-ddq1*(a3*sin(q3)+a3*sin(2*q2+q3)+2*a2*sin(q2+q3))
-2*dq1*dq2*(a3*cos(2*q2+q3)+a2*cos(q2+q3))
-dq1*dq3*(2*a2*cos(q2+q3)+a3*cos(q3)+a3*cos(q3+2*q2));
w2_4=ddq1*sin(q2);w2_5=ddq1*cos(q2);w2_6=ddq2;
w2_11=ddq1*sin(q2+q3);w2_12=ddq1*cos(q2+q3);w2_13=ddq2+ddq3;
w2_14=(2*ddq2*ddq3)*a3*cos(q3)-a3*sin(q3)*(2*dq2+dq3)*dq3
+(a2*sin(q2+q3)+a3*sin(q3+2*q2))*ddq1^2+g*cos(q2+q3);
w2_15=-(2*ddq2*ddq3)*a3*sin(q3)-a3*cos(q3)*(2*dq2+dq3)*dq3
+(a2*cos(q2+q3)+a3*cos(q3+2*q2))*ddq1^2-g*sin(q2+q3);
w3_11=ddq1*sin(q2+q3);w3_12=ddq1*cos(q2+q3);w3_13=ddq2+ddq3;
w3_14=ddq2*a3*cos(q3)+q1^2*(a2*sin(q2+q3)+a3*sin(q2+q3)*cos(q2)+
dq2^2*a3*sin(q3)+g*cos(q2+q3);
w3_15=-ddq2*a3*sin(q3)+dq1^2*(a2*cos(q2+q3)+0.5*a3*(cos(q3)+cos(2*q2+q3)))
+dq2^2*a3*cos(q3)-g*sin(q2+q3);
其中q1、q2、q3代表各关节的角度，dq1、dq2、dq3代表各关节的角速度，ddq1、ddq2、ddq3代表各关节的角加速度，g代表重力加速度。
同时得到电机反馈电流，根据转矩系数，求出的电机输出力矩即为关节力矩。
第四步数据处理通过三标准差准则，除去实验数据中的粗大误差，在通过中位值平均滤波法对实验采集的数据进行处理，来降低数据噪声对实验的影响。
采用批量梯度下降法来训练模型，训练完成的神经网络的权重即为待辨识的动力学参数，神经网络的结构附图4，梯度下降优化算法示意图附5。