FPGA 学习小组
登录
直播中
吴珺
7年用户
196经验值
私信
关注
如何利用SoPC实现神经网络速度控制器?
开启该帖子的消息推送
FPGA
网络
由于时变非线性和强耦合的控制系统还没有精确的数学模型,因而传统的依赖被控对象数学模型的控制策略及其控制系统的封闭式结构很难对其实施有效控制。神经网络控制能够很好地克服系统中模型参数的变化和非线性等不确定因素影响,并且随着可编程片上系统SoPC和大规模现场可编程门阵列
FPGA
的出现,为神经网络控制器的硬件实现提供了新的载体。
回帖
(2)
邓莎
2019-8-12 16:36:44
本文以Altera FPGA及内含的一个Nios II嵌入式软核处理器作为上位机来研究机械手臂直流电机速度控制器的片上可编程系统(SoPC)。根据模块化的设计思想,采用Verilog HDL语言,将神经网络控制器和其他威廉希尔官方网站 模块在FPGA芯片内以硬件方式实现。
1 系统总体结构
系统控制部分采用Altera公司的CycloneII EP2C35芯片,取代了传统的单片机或DSP。FPGA与单片机最大的区别是它的并行性,FPGA能够并行地采集、处理和输出信号,是实现神经网络并行运算的关键,对提高系统的运行速度起了很大的作用。其FPGA芯片内集成的Nios II软核处理器作为上位机,根据末端执行器的速度,采用C++语言进行坐标变换和轨迹规划,定时向伺服控制系统发出控制命令和运行参数。系统总体框图如图1所示。
2 神经网络速度控制器
2.1 神经网络参数辨识自适应控制的基本原理
用作自适应控制器的BPNNC,输入为电机给定转速y与实际转速yf相比较得到的转速误差e及其变化率ec,输出为PWM的控制信号Vp(k)。用作参数辨识的BPNNI的输入为驱动系统的实际输入(即BPNNC的输出值Vp)和电机实际转速yf,输出为辩识的系统输出y*,y*为预测转速,利用y*代替yf,用作RBFNNC的在线训练。图2为参数辨识自适应控制方框图。
本文所用的两个BPNN都是双输入单输出网络,离线训练的样本均通过实验方法获得。NNC的输入样本向量为Xci={e(k),ec(k)},输出样本向量为Yci={Vp(k)};NNI的输入样本向量XIi={Vp(k-1),yf(k-1)},输出样本向量YIi={y*(k)}。网络参数的学习分两步进行:先在离线训练中确定隐层节点的个数及其各层的网络连接初始权值,再通过在线训练自适应地调整权值。
两个BPNN都采用三层网络。输入层结点只起信号传输作用,隐含层和输出层神经元的激活函数采用Sigmoid函数:
网络训练采用负梯度下降的误差反向传播算法。
2.2 BPNN在FPGA中的硬件可重构实现
目前基于SRAM工艺的FPGA具有易失性的特点,每次重新加电后FPGA都要重配置,才能使其进入工作状态。配置信息通常存放在片外存储器中,因此导致FPGA器件的资源配置可改变特性刚好可以满足由上述可知的BP网络的结构可重构、激活函数可重构和学习算法可重构的要求。
从计算的角度考虑,BP网络的算法可以分为三个步骤,即前向传播、误差反向传播以及权值更新。但是考虑到神经网络的复杂性和设计文件的复用性,BP神经网络的硬件实现必须解决与算法有关的运算速度、计算精度、并行性和可存储性等问题。本文本着层次化、模块化的原则,采用由VerilogHDL硬件描述语言输入的自上而下的设计方法,把BP神经网络分为前向运算模块、误差反传及权值调整模块、权值存储模块、权值分配模块等几大功能模块。系统结构如图3。
将上述各个BP网络运算模块组合后就可以实现一整套人工神经网络。但是仅仅将这些模块简单连在一起并不能让网络进行工作或训练,还必须精确设定在每一个时钟沿对每一个模块发出正确的使能信号,使每一个模块处在工作状态或者停滞状态,并且还必须有合适的地址信号发生器在正确的时间产生正确的地址信号,使每一次数据都能从正确位置读出并写入正确的位置。本文根据BP算法的运算规则设计控制模块,并且在整个系统中采用一个共用的地址发生器。控制模块有七个输出信号,分别是:前向模块使能信号、学习模块使能信号、片内RAM及地址产生模块使能信号、片内RAM写入控制信号wen、片内RAM读出控制信号ren、片外存储器写控制信号save、片外存储器读控制信号load。因此最后的控制器可以使网络进行离线训练时将前向模块、误差反传模块和相应的控制模块同时配置到FPGA中进行网络训练。当训练好的网络正常工作时,只要在FPGA中配置前向模块和相应的控制模块就可以高速运行该神经网络。逻辑工作流程如图4所示。
2.3 BP网络控制器的仿真结果
文献[6]中,通过对一些典型应用的研究和分析发现,16位定点数是不削弱神经网络能力的最小精度要求。为避免运算规模过于庞大和节约芯片资源,本设计对32位的输出数据进行了截尾操作,仅取32位中的前16位。
源代码通过功能仿真和时序仿真测试后综合生成网表文件,最后在Altera公司的Cyclone II EP2C35器件中实现。BP网络控制器的QuartusⅡ仿真结果如图5所示。由图5可知经过多次训练后系统输出值f越来越接近于给定值t,误差err变小,小于给定误差。
本文以Altera FPGA及内含的一个Nios II嵌入式软核处理器作为上位机来研究机械手臂直流电机速度控制器的片上可编程系统(SoPC)。根据模块化的设计思想,采用Verilog HDL语言,将神经网络控制器和其他威廉希尔官方网站 模块在FPGA芯片内以硬件方式实现。
1 系统总体结构
系统控制部分采用Altera公司的CycloneII EP2C35芯片,取代了传统的单片机或DSP。FPGA与单片机最大的区别是它的并行性,FPGA能够并行地采集、处理和输出信号,是实现神经网络并行运算的关键,对提高系统的运行速度起了很大的作用。其FPGA芯片内集成的Nios II软核处理器作为上位机,根据末端执行器的速度,采用C++语言进行坐标变换和轨迹规划,定时向伺服控制系统发出控制命令和运行参数。系统总体框图如图1所示。
2 神经网络速度控制器
2.1 神经网络参数辨识自适应控制的基本原理
用作自适应控制器的BPNNC,输入为电机给定转速y与实际转速yf相比较得到的转速误差e及其变化率ec,输出为PWM的控制信号Vp(k)。用作参数辨识的BPNNI的输入为驱动系统的实际输入(即BPNNC的输出值Vp)和电机实际转速yf,输出为辩识的系统输出y*,y*为预测转速,利用y*代替yf,用作RBFNNC的在线训练。图2为参数辨识自适应控制方框图。
本文所用的两个BPNN都是双输入单输出网络,离线训练的样本均通过实验方法获得。NNC的输入样本向量为Xci={e(k),ec(k)},输出样本向量为Yci={Vp(k)};NNI的输入样本向量XIi={Vp(k-1),yf(k-1)},输出样本向量YIi={y*(k)}。网络参数的学习分两步进行:先在离线训练中确定隐层节点的个数及其各层的网络连接初始权值,再通过在线训练自适应地调整权值。
两个BPNN都采用三层网络。输入层结点只起信号传输作用,隐含层和输出层神经元的激活函数采用Sigmoid函数:
网络训练采用负梯度下降的误差反向传播算法。
2.2 BPNN在FPGA中的硬件可重构实现
目前基于SRAM工艺的FPGA具有易失性的特点,每次重新加电后FPGA都要重配置,才能使其进入工作状态。配置信息通常存放在片外存储器中,因此导致FPGA器件的资源配置可改变特性刚好可以满足由上述可知的BP网络的结构可重构、激活函数可重构和学习算法可重构的要求。
从计算的角度考虑,BP网络的算法可以分为三个步骤,即前向传播、误差反向传播以及权值更新。但是考虑到神经网络的复杂性和设计文件的复用性,BP神经网络的硬件实现必须解决与算法有关的运算速度、计算精度、并行性和可存储性等问题。本文本着层次化、模块化的原则,采用由VerilogHDL硬件描述语言输入的自上而下的设计方法,把BP神经网络分为前向运算模块、误差反传及权值调整模块、权值存储模块、权值分配模块等几大功能模块。系统结构如图3。
将上述各个BP网络运算模块组合后就可以实现一整套人工神经网络。但是仅仅将这些模块简单连在一起并不能让网络进行工作或训练,还必须精确设定在每一个时钟沿对每一个模块发出正确的使能信号,使每一个模块处在工作状态或者停滞状态,并且还必须有合适的地址信号发生器在正确的时间产生正确的地址信号,使每一次数据都能从正确位置读出并写入正确的位置。本文根据BP算法的运算规则设计控制模块,并且在整个系统中采用一个共用的地址发生器。控制模块有七个输出信号,分别是:前向模块使能信号、学习模块使能信号、片内RAM及地址产生模块使能信号、片内RAM写入控制信号wen、片内RAM读出控制信号ren、片外存储器写控制信号save、片外存储器读控制信号load。因此最后的控制器可以使网络进行离线训练时将前向模块、误差反传模块和相应的控制模块同时配置到FPGA中进行网络训练。当训练好的网络正常工作时,只要在FPGA中配置前向模块和相应的控制模块就可以高速运行该神经网络。逻辑工作流程如图4所示。
2.3 BP网络控制器的仿真结果
文献[6]中,通过对一些典型应用的研究和分析发现,16位定点数是不削弱神经网络能力的最小精度要求。为避免运算规模过于庞大和节约芯片资源,本设计对32位的输出数据进行了截尾操作,仅取32位中的前16位。
源代码通过功能仿真和时序仿真测试后综合生成网表文件,最后在Altera公司的Cyclone II EP2C35器件中实现。BP网络控制器的QuartusⅡ仿真结果如图5所示。由图5可知经过多次训练后系统输出值f越来越接近于给定值t,误差err变小,小于给定误差。
举报
李旭彤
2019-8-12 16:36:46
3 应用举例
根据前面的仿真结果,把神经网络速度控制器应用在一个机械臂上,具体实验与结果如图6。
如图6,运动控制系统模块接收到速度给定信号和命令后进行速度调节。速度调节器的输出就是PWM脉宽调制威廉希尔官方网站 的控制信号,之后产生PWM信号传给伺服电机驱动器驱动电机。速度反馈信号由装在电机轴上的光电编码器产生。为了提高反馈信号的分辨率,对光电编码器的输出信号进行倍频,从而提高了编码器的分辨率,也就提高了速度反馈信号的分辨率。速度调节采用神经网络参数辨识自适应控制。
驱动对象是一台直流力矩电机,输入电压为DC27V,额定电流2.5A,最大空载转速600r/min。图7为空载状态下转速指令由0上升到 110 r/min的阶跃输入时的系统跟踪结果。由图7可知,系统能快速响应给定转速的变化,有较好的跟踪能力和稳定性。
本文运用神经网络控制方法并且通过FPGA中的硬件实现速度反馈调控威廉希尔官方网站 ,采用C++语言在FPGA片内集成的Nios Ⅱ软核处理器中进行坐标变换和轨迹规划,构成一个完整的机械臂关节速度控制器的SoPC系统。此方案使控制器系统的集成度变高,增加了系统的抗干扰性和稳定性,同时提高了系统调试效率和控制精度,是现代机器人伺服系统向模块化、智能化发展的方向。
3 应用举例
根据前面的仿真结果,把神经网络速度控制器应用在一个机械臂上,具体实验与结果如图6。
如图6,运动控制系统模块接收到速度给定信号和命令后进行速度调节。速度调节器的输出就是PWM脉宽调制威廉希尔官方网站 的控制信号,之后产生PWM信号传给伺服电机驱动器驱动电机。速度反馈信号由装在电机轴上的光电编码器产生。为了提高反馈信号的分辨率,对光电编码器的输出信号进行倍频,从而提高了编码器的分辨率,也就提高了速度反馈信号的分辨率。速度调节采用神经网络参数辨识自适应控制。
驱动对象是一台直流力矩电机,输入电压为DC27V,额定电流2.5A,最大空载转速600r/min。图7为空载状态下转速指令由0上升到 110 r/min的阶跃输入时的系统跟踪结果。由图7可知,系统能快速响应给定转速的变化,有较好的跟踪能力和稳定性。
本文运用神经网络控制方法并且通过FPGA中的硬件实现速度反馈调控威廉希尔官方网站 ,采用C++语言在FPGA片内集成的Nios Ⅱ软核处理器中进行坐标变换和轨迹规划,构成一个完整的机械臂关节速度控制器的SoPC系统。此方案使控制器系统的集成度变高,增加了系统的抗干扰性和稳定性,同时提高了系统调试效率和控制精度,是现代机器人伺服系统向模块化、智能化发展的方向。
举报
更多回帖
rotate(-90deg);
回复
相关问答
FPGA
网络
如何
利用
卷积
神经网络
去更好地
控制
巡线智能车呢
2021-12-21
1377
人工
神经网络
实现
方法有哪些?
2019-08-01
2938
求一个基于BP
神经网络
PID
控制器
应用于双闭环直流调速系统
2021-10-13
1761
MATLAB的NARMA-L2系统辨识以及
神经
自校正
控制器
2019-07-24
4055
基于FPGA的
神经网络
的性能评估及局限性
2021-04-30
1287
基于
神经网络
控制
算法的伺服运动
控制
卡该如何去设计?
2021-06-03
1233
CMSIS-NN
神经网络
内核可以让微
控制器
效率提升5倍是真的吗?
2021-03-15
1500
如何设计BP
神经网络
图像压缩算法?
2019-08-08
3432
求助基于labview的
神经网络
pid
控制
2016-09-23
3951
如何使用stm32cube.ai部署
神经网络
?
2021-10-11
3522
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分