基于深度学习与深度神经网络的舵机控制系统及方法与流程

文档序号:16894700发布日期:2019-02-15 23:28阅读:354来源:国知局
基于深度学习与深度神经网络的舵机控制系统及方法与流程

本发明属于舵机的控制技术,具体涉及基于深度学习与深度神经网络的舵机控制系统及方法。



背景技术:

近年来,机器人技术的发展越来越成为现代工业的主流,在众多机器人产品中,电机作为其最核心、最关键的动力传动装置之一越来越受到重视,其中最为突出的一种数字化控制电机就是舵机。

舵机是主要由电机、功率输出控制电路、角度检测模块以及其内部的控制算法组成的,舵机的工作方式是:先从功率输出控制电路发出信号控制电机的转动方向与输出功率,经过齿轮组的机械传动机构传动到输出轴上,在输出轴上的角度检测模块通过对角度的检测,将角度参数反馈回给功率输出控制电路,功率输出控制电路通过判断反馈回来的角度信息判断对电机的操控,使电机尽可能地旋转到的预定的角度。

通常,较为普遍的舵机是通过pwm即脉冲占空比控制的,其控制信号的输入仅有三根导线,分别为地线、信号线、电源线。舵机内部的控制单元通过将输入的pwm信号与基准值进行比较,来确定上位机输入的舵机角度,大多数的舵机都是通过这种方式控制的。而高级点的总线伺服舵机则是通过总线通讯的方式,上位机通过通讯模块与舵机相连,通过相应的总线协议,将设定的角度、旋转速度等参数输入到舵机,使舵机操作更加高效、精准。但是这样的设计存在弊端,由于其内部的控制算法通常仅为pid算法或者模糊算法,其算法参数是不变的,意味着在非线性环境下,负载的变化会对舵机的性能产生影响,因为内部控制算法只是对某一特定范围的负载做出了优化,但是当负载超出范围时,其精度就会下降,稳态误差就会增加,同时异常抖动的情况将会出现。只有在不同的负载环境下,对控制算法做出不同的设定才能更好的应对,因此有必要对舵机的算法与控制系统进行改进与升级。



技术实现要素:

为了解决上述现有技术所存在的问题,本发明提供了基于深度学习与深度神经网络的舵机控制系统,该系统通过机器视觉识别,对舵机的输出位置与其负载进行识别,并将结果汇总到舵机控制单元内部的神经网络,通过不断自适应学习,达到在多种负载、多种情况下保持最优的性能,有效解决了传统舵机在多种环境下或多变环境中性能不稳定的问题。

本发明还提供了基于深度学习与深度神经网络的舵机控制方法。

本发明舵机控制系统采用如下技术方案来实现:基于深度学习与深度神经网络的舵机控制系统,包括机器视觉识别模块、pid控制器、电机模块、摄像机及上位机,pid控制器分别与机器视觉识别模块、电机模块、上位机连接;机器视觉识别模块设有机器视觉识别深度神经网络,pid控制器设有pid神经网络;

机器视觉识别模块与摄像机相连,控制摄像机的拍摄和各项参数设定,将摄像机获得的视频信息上传至上位机,对摄像机所采集的图像经过机器视觉识别深度神经网络的处理获得图像的特征数据;

上位机输入电机的目标角度值,pid控制器将电机的当前实际角度值与目标角度值相减,得到误差值以及其变化率、累积值;将误差值以及其变化率、累积值、图像的特征数据、pid控制器上一次输出之后的电机当前实际角度值与上一次pid控制器的输出值输入到pid神经网络中,经过pid神经网络分析和计算,输出pid算法的比例系数kp、积分系数ki和微分系数kd;将pid算法的三个系数输入到pid控制器中,由pid控制器计算得到输出值并传输至电机,控制电机角度变化。

优选地,舵机控制系统还包括编码器,编码器分别与电机模块、pid控制器连接,用于检测电机的当前实际角度值。

本发明舵机控制方法采用如下技术方案来实现:基于深度学习与深度神经网络的舵机控制方法,通过上述舵机控制系统运行,舵机控制方法包括以下步骤:

1)上位机将电机的目标角度值传输至pid控制器;

2)摄像机采集到舵机的运作状况以及所接负载状况,将图像发送至机器视觉识别模块;机器视觉识别模块将摄像机所采集的图像复制一份上传至上位机,并对摄像机所采集的图像经过机器视觉识别深度神经网络的处理获得图像的特征数据,将图像的特征数据发送至pid控制器;

3)pid控制器通过编码器获得电机的当前实际角度值;

4)pid控制器根据电机的当前实际角度值与目标角度值,计算得到误差值以及其变化率、累积值;将误差值以及其变化率、累积值、图像的特征数据、pid控制器上一次输出之后的电机当前实际角度值与上一次pid控制器的输出值输入到pid神经网络中,经过pid神经网络分析和计算,输出pid算法的比例系数kp、积分系数ki和微分系数kd;将pid算法的三个系数输入到pid控制器中,由pid控制器计算得到输出值并传输至电机,控制电机模块运转,电机带动输出轴,带动负载转动;

5)编码器和摄像机再将电机输出的实际角度值采集回去进行下一次计算处理,如此循环往复,使实际角度值尽可能的贴近目标角度值。

与现有技术相比,本发明具有如下优点及有益效果:

1、本发明通过机器视觉识别,对舵机的输出位置与其负载进行识别,并将结果汇总到舵机控制单元内部的神经网络,通过不断自适应学习,达到在多种负载、多种情况下保持最优的性能,有效解决了传统舵机在多种环境下或多变环境中性能不稳定的问题。

2、本发明将pid神经网络与机器视觉识别深度神经网络组网,将机器视觉识别获取的数据作为pid神经网络的新输入值输入到pid算法当中,使pid神经网络通过机器视觉识别可以获取到更多的关于舵机及其周围环境的可视化信息,通过对外部环境的识别,使得pid三个参数的调整更加符合实际,更加高效可靠。

附图说明

图1是深度神经网络与pid神经网络相结合的控制原理框图;

图2是深度神经网络与pid神经网络的连接示意图;

图3是本发明的舵机系统结构图;

图4是stm32控制模块的工作流程图。

具体实施方式

下面将结合附图及具体实施例来对本发明进行详细的说明,但本发明的实施方式不限于此。

参见图1,本发明将机器视觉识别深度神经网络与pid神经网络相结合,实现对舵机的控制。其控制原理与步骤是这样的:上位机输入目标角度值rm(k),系统将当前实际角度值yout(k)与其相减,得到误差值e(k)以及其变化率ec(k)、累积值ei(k),将这三个值输入到pid神经网络当中,同时pid控制器上一次输出之后的电机当前实际角度值与上一次pid控制器的输出值u(k-1)也输入到pid神经网络,并且从机器视觉识别深度神经网络获取到图像的特征数据后也输入进pid神经网络中。经过pid神经网络的不断分析和计算,输出三个值,分别为比例系数kp、积分系数ki、微分系数kd;将这三个值输入到pid控制器中,最后由pid控制器输出u(k)至电机,并使电机的角度变化,产生新的角度值yout(k+1)。

参见图2,机器视觉识别深度神经网络与pid神经网络相连接,从摄像机拍摄回来的图像输入到机器视觉识别深度神经网络的输入“神经元”,图像数据由多层隐含层依次处理和传输,最后将识别到的图像特征数据发送到输出“神经元”;输出“神经元”将机器视觉识别深度神经网络的输出数据输入到pid神经网络的输入“神经元”,同时另外获取得到的误差值e(t)、误差变化率ec(t)、误差累积值ei(t)、当前角度yout(t)、上一次pid控制器的输出值u(t),以及上一次pid神经网络输出的比例系数kp、积分系数ki、微分系数kd输入到pid神经网络的输入“神经元”。经过pid神经网络内隐含层对输入的数据进行计算和判断等处理,最终将处理结果输入到三个输出“神经元”,并输出pid算法的三个系数,即比例kp、积分ki、微分kd。

由于神经网络是模仿人类大脑神经系统的一种智能算法,具有对数据特征进行自我学习的能力,神经网络不需要事先了解模型特征后再进行对数据的计算,因此神经网络算法具有极其广泛的适应性,只要数据样本足够多,神经网络输出的结果就会更加准确。所以本发明使用机器视觉识别深度神经网络与pid神经网络,能使舵机控制的适用性更强,提高鲁棒性。而且只要调整神经网络每一个“神经元”的权值,那么在同样的输入下,输出的结果就会改变,如果是以学习的样品作为基准来调整权值的,那么输出的结果就会往该基准上接近,则整个“神经元”作为函数来看更加符合所需要求。所以只要当有足够的神经元,足够的输入量,整个神经网络就能表达出复杂的非线性的函数结构,通过这样的结构就能实现在非线性环境下的准确识别。

pid神经网络设有pid算法。pid算法是传统控制算法中最为成熟的一种简易算法,其适用性广,原理简单,参数相对独立,且在不同应用场景中可灵活变化,因此非常适于与神经网络相结合。pid算法包涵有三个重要的参数:比例(kp)、积分(ki)、微分(kd),它们组成的函数式就是经典的pid算法:(位置式)

也有这样的:(增量式)

u(k)=u(k-1)+(kp+ki)e(k)-(kp+2kd)e(k-1)+kde(k-2)

e(t)表示实际误差,u(t)表示算法的输出,一般表示为控制器的输出大小。pid算法依靠比例、积分、微分这三个可设定的参数来实现,通过对这三个参数的不同设定,可以在不同负载下,不同工作方式中实现相适合的控制方式。

(1)比例:在pid算法中引入比例系数,是为了提高算法的响应性能。控制的输出与输入的误差呈比例,误差越大,输出越大,这样在误差偏大的时候,系统的响应更加迅速,提高系统的响应性能。过大的比例系数,系统的响应更快,但由于在正向误差下没有减速,容易发生超调现象。

(2)积分:在pid算法中引入积分系数,是为了减少系统的稳态误差。控制的输出与输入的误差在时间上的积分成线性关系,当误差在时间上的保持越久,控制的输出越高,这样就能使得当稳态出现误差时,经过一定时间,控制的输出不断变大,从而误差将减少,直到误差消失,控制的输出与外部负载相抗衡,控制的状态维持不变。适当的积分系数大小可以解决稳态误差,但是由于其需要一定时间才能消除,所以响应性差,但希望通过提高积分系数,从而提高响应性能的话,极易产生超调现象,因为正向误差的积分需要反向误差消除。

(3)微分:在pid算法中引入微分系数,是为了减少系统在控制过程中的超调现象。控制的输出与输入的误差在时间上的微分呈线性关系,根据以上函数式,此为负线性相关。当输入的误差缩小的变化率增加时,其输出减少至反向,使控制呈减速状态,使得在误差接近零时,速度减至极小,以此防止出现超调现象。如果将微分系数调整过大,虽然超调现象可能消失,但是其响应性能就会收到严重影响。

一个优秀的控制算法要求其能以最高的速度到达既定位置,且能够长久稳定地保持,而引入神经网络可以使得pid算法中的三个系数动态变化,在任何情况下都可以将三个系数调整到最佳,输入神经网络的值有当前误差以及误差的变化率与其累计值,为了能考虑更多因素还加入当前角度值、当前输出大小和上一次输出反馈回来的三个输出值,经过深度学习过的神经网络的内部多个神经元的权值对输入的数据进行特征提取、分类、计算。具体流程为:使用bp算法对神经网络进行深度学习的训练,其算法将神经网络内部的神经元的权值训练到最合适的大小,使得可以输出最接近预期的数值。计算时,神经网络内部除了输入层的每一层的每个神经元通过内部权值对上一层的输出进行linearregression模型计算,然后使用激活函数sigmoid函数将结果输出为非线性数值,下一层神经元再引用这一层的输出计算出下一层的输出直到计算到输出层为止,最后输出能够使得pid算法取得最大效率的三个控制系数,保证比例系数适中而不会过大导致超调,也不会过小导致稳态误差变大,也使得积分系数与微分系数不会过高而使得系统的稳定性降低,从而使得其在任何环境下输出都能取得绝佳的性能。而传统的pid算法由于三个系数固定不变,导致其输出性能适用性差,不能在任何环境下保持其高效可靠的性能。神经网络将误差值、误差的变化率值、误差的累积值、当前位置值和输出处反馈回来的比例、积分、微分这三个系数输入进去,通过对输入的数据进行计算分析并整合输入到三个输出“神经元”上,这三个输出“神经元”就将数值传输到比例、积分、微分这三个系数中,当误差较大时提高比例系数,误差较小时减少比例系数,提高微分和积分系数,还可以根据负载的多少来调整一下相关系数,以此来实现神经网络与pid算法的组合,形成基于神经网络的pid控制算法。

参见图3,本发明舵机控制系统具体包括机器视觉识别模块、stm32控制模块、串口通讯模块、高速并行通讯模块、电机模块、高精度编码器、摄像机及上位机。采用stm32控制模块作为pid控制器,实现pid神经网络的计算;stm32控制模块分别与串口通讯模块、高速并行通讯模块、电机模块、高精度编码器连接,电机模块还分别与高精度编码器、摄像机连接,机器视觉识别模块分别与高速并行通讯模块、摄像机、上位机连接,上位机经串口通讯模块与stm32控制模块连接。

机器视觉识别模块使用计算机作为深度神经网络的计算工具,并与摄像机相连,控制摄像机的拍摄和各项参数设定,本实施例中摄像机为高速高清摄像机,所以可以拍摄到更多细节,同时可以将摄像机获得的视频信息上传至上位机,并将摄像机获取的图像数据输入进深度神经网络,经过神经网络内部大量的神经元对输入数据的计算,最终将计算好的数值传送到输出神经元,经过sigmoid函数对数值的整理,输出层的所有输出神经元所输出的所有数据可化为图像信息的特征码(即图像的特征数据),拍摄到的不同的载物或不同的舵机旋转角度都能计算出不同的特征码,这样子下一阶段的pid神经网络就能运用这些归类识别好的特征码来计算出最符合当前情况的控制输出。机器视觉识别模块设有机器视觉识别深度神经网络。

stm32控制模块使用的是基于armcortex-m4内核的stm32fzet6控制芯片,拥有多达144个io口,11个独立的定时器,5个独立的usart通讯单元,为控制提供更多外围功能,其中5个通讯单元保证在多机同时通讯中互相不受干扰,且其cortex-m4内核加了浮点运算功能,为神经网络的计算提供更高的计算性能,提高神经网络的运算速度,提高控制系统的反应能力。

串口通讯模块使用rs485转换模块,上位机通过rs485总线发送控制信号至串口通讯模块,串口通讯模块将控制信号转成ttl电平,然后传输给stm32控制模块。

高速并行通讯模块将机器视觉识别模块与stm32控制模块相连,以同时多位传输的功能为其提供高速通讯能力,使得在控制过程中保证两者之间信息的高速传输,减少延时与滞后。

电机模块可受stm32控制模块控制其输出和转向,电机模块的输出轴有减速齿轮组,以降低速度和提高转矩,输出轴与高精度编码器相连。本发明使用电机可以是直流电机或交流电机,对直流电机的控制通过对h桥的信号输入进行正反转控制,通过stm32控制模块输出的pwm信号控制功率管开关占比,达到平均功率的可控;对交流电机的控制通过改变相序进行正反转控制,stm32控制模块通过对输入的电压进行调节达到输出功率的控制。

高精度编码器采用绝对编码器,为一种对转轴角度进行高精度测量的装置。高精度绝对编码器使用16位精度的ssi绝对编码器,通讯方式选择ssi通讯协议与stm32控制模块进行通讯,stm32控制模块通过与编码器通讯可以获取当前电机输出的实际角度值。本发明将绝对编码器的轴与电机的输出轴相连,这样就可以检测到电机输出的实际角度值。

本发明舵机控制方法实现的基本流程为:

1)上位机发送的电机目标角度值经过串口通讯模块传入stm32控制模块。

2)与此同时,摄像机采集到舵机的运作状况以及所接负载状况,将图像发送至机器视觉识别模块;机器视觉识别模块将摄像机所采集的图像复制一份上传至上位机,并对摄像机所采集的图像经过深度神经网络的处理获得图像的特征数据,将图像的特征数据经过高速并行通讯模块发送至stm32控制模块。

3)stm32控制模块从高精度绝对编码器中获得电机的当前实际角度值。

4)stm32控制模块根据电机的当前实际角度值与目标角度值,计算得到误差值以及其变化率、累积值;将误差值以及其变化率、累积值、图像的特征数据、pid控制器上一次输出之后的电机当前实际角度值与上一次pid控制器的输出值输入到pid神经网络中,经过pid神经网络分析和计算,输出pid算法的比例系数kp、积分系数ki和微分系数kd;将pid算法的三个系数输入到pid控制器中,由pid控制器计算得到输出值并传输至电机,控制电机模块运转,电机带动输出轴,带动负载。

5)然后绝对编码器和摄像机再将电机输出的实际角度值采集回去进行下一次计算处理,如此循环往复,使实际角度值尽可能的贴近目标角度值。

图4示意了stm32控制模块内部的工作流程。

开始时,stm32控制模块通过与上位机通讯,获取电机的目标角度值,并记录下来供下次调用,并且与绝对编码器通讯,获得电机的当前实际角度值;然后获得经机器视觉识别模块上传的图像特征数据;获取上一次计算后pid控制器输出的数值以及经pid神经网络计算后获得的三个控制参数;将所获控制参数输入进pid神经网络,经过pid神经网络内部除了输入层的每一层的每个神经元内部权值对上一层的输出进行linearregression模型计算,然后使用激活函数sigmoid将结果输出为非线性数值,下一层神经元再引用这一层的输出计算出下一层的输出,直到计算到输出层为止。最后输出得到三个输出值,其三个输出值就是新的pid神经网络的三个控制参数,同时记录下来以供下次循环调用。

将目标角度值与实际角度值相减获得误差值e(t),并记录下来以供下次循环调用。同时该误差值与上一次计算获得的误差值相减得误差值的变化率e(t)/dt。并且将误差值与上一次计算获得的误差累积值相加得到新的误差累积值:

并记录下来以供下次循环调用。将获得的三个控制参数、误差值、误差变化率与误差累积值输入到位置式pid算法的函数当中,函数式为:

函数u(t)就是最终pid控制器的输出数值,记录下来以供下次循环调用。将计算所得的数值输出出去以控制电机的运行。然后再来一次新的循环,使控制的电机不断调整状态以达到稳定在目标角度的目的。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1