基于神经网络的倒立摆控制系统设计

问题:一级倒立摆装置如图所示。装在小车上的倒立摆在水平力的作用下,通过控制小车的运动速度使偏转角θ为0,即可使倒立摆直立起来。


一、参数分析
全部的主要参数就是以上七个,其中需要用到的是小车质量M、摆杆质量m、摆杆转动轴心到杆质心的长度l以及摆杆惯量!
二、受力分析(不多赘述,百度一大堆,直接进入数据采集模块)

三、数据采集
这里首先我们打开matlab的help参考页面的搜索Inverted pendulum找到以下这个matlab自带的modol。(这个modol其实就是基于LQR控制的一个倒立摆小车模型)
打开modol会看到以下界面:
这里我们就可以看到右下角的LQR控制器;同时红圈部分分别是正弦,方波,阶跃信号;我们接下来会使用LQR控制器来采集数据,这些数据将用来训练网络。

同时点击pendulum模块可以看到四个参数;分别就是小车质量M,摆杆质量m,以及质心距和重力加速度!ok,其他的参数(摩擦系数、位置)都是此模型默认的,具体的数值,我并不清楚!

这里我们将正弦信号作为输入信号,点击运行,会看到倒立摆小车模型会在左右移动,此时点击Scope1示波器可以看到:
回到matlab的workspace
双击打开simout变量;这里就是我们模型的输出结果;

ok接下来把他保存起来,使用mat格式!
重复以上方法,更换其他的响应曲线用来采集数据数据;当然其中也可以接在默认的输入端,直接进行手动控制小车移动,同时采集数据;
四、神经网络模型
ok,现在数据我们有了;(我自己分别使用了正弦、方波、手动信号输入)

接下来看一下这五列数据;前四列就是我们的输入数据,最后一列就是我们的输出结果;这也就是说,我们将需要一个四输入,一输出的神经网络来训练;(数据的具体含义,由于我对次系统模型分析并不全面,重点放在神经网络这部分,所以没有具体研究,暂且不做解释)
开始吧。搭建网络,都是最简单的基本函数操作,看一下应该都明白!比较基础,不多赘述,直接上代码!

clc;
clear all;
%数据划分
xy1=simoutimpulse.DATA
xy2=simoutsin.DATA
xy3=simoutrandom.DATA
xy=[xy1;xy2;xy3]
Y=xy(:,5)
X=xy(:,1:4)
Y=Y(1:7000)';
X=X(1:7000,:)' ; %神经网络的数据格式要求每列是一个样本,所以p和t在训练前要转置一下,即p=p';t=t'
%神经网络创建
net=newff(minmax(X),[10,1],{'tansig' 'purelin','trainlm'});
% 传递函数TF
% purelin: 线性传递函数。
% tansig :正切S型传递函数。
net.trainParam.epochs = 3000;
[net,tr]=train(net,X,Y);
trainout=sim(net,X)%经BP得到的结果%%附上训练数据响应以及测试数据BP的结果对比分析
%原始数据训练拟合结果
% figure;
% t=1:1:length(Y)
% plot(t,Y,'r',t,trainout,'*g');
% legend('原函数','训练拟合值');title('训练数据响应')
% testX=testXY(:,1:4)';
% testY=testXY(:,5)';
% 测试数据
% test_trainout=sim(net,testX);%经BP得到的结果
% figure;
% i=0:0.02:40
% plot(i,testY,'r',i,test_trainout,'g');  title('test data结果')
%误差
% error=test_trainout-testY
% figure;
% i=0:0.02:40
% plot(i,error,'r'); axis([0 40 -0.2 0.2]); title('error')

ok,下一步我们就要将我们训练好的网络模型用来控制我们的倒立摆小车了!好首先再看一下simulink的模型(前面的modol图),我们需要做的就是将LQR控制器替换成我们的神经网络控制器,那么我们需要生成一个神经网络控制器;ok,我们使用这个函数:

clc;clear;close all
load('NET.mat')
gensim(net,-1)   %生成simulink的控制元件


因为我们的网络模型已经训练好了,所以现在直接生成控制器就可以了!这里有matlab默认的控制器仿真,但我不懂这个。

生成的控制器直接用鼠标拖进去到之前的modol然后把LQR替换掉就可以了,具体链接如图所示!

一切准备就绪,可以开始跑了,同样使用正弦、方波、手动、以及阶跃响,通过波形图来观察我们的网络控制器具体情况!!!

ok,基本上就这样,最好把波形图的最开始的那一段时间绘制出来观察一下,看看到达稳定状态所需要的时间以及超调情况!!

基于神经网络的倒立摆控制系统设计相关推荐

  1. 单级倒立摆matlab仿真程序,单级倒立摆控制系统设计及MATLAB中的仿真..doc

    单级倒立摆控制系统设计及MATLAB中的仿真. 单级倒立摆控制及仿真单级倒立摆系统是一种广泛应用的物理模型.控制单级倒立摆载体的运动是保证倒立摆稳定 完成了对倒立摆载体的角度制导运动微分方程 Matl ...

  2. 基于LQR的倒立摆控制——python代码——dlqr步骤推导

    推荐一个自动控制小车开源项目:本文结合老王自动驾驶控制算法第五讲的离散LQR进行学习复盘 Inverted Pendulum Control - PythonRobotics documentatio ...

  3. matlab穆尔,基于matlab(矩阵实验室)的倒立摆控制系统仿真(34页)-原创力文档

    基于MATLAB的倒立摆控制系统仿真 摘 要 自动控制原理(包括经典部分和现代部分)是电气信息工程学院学生的一门必修专业基础课,课程中的一些概念相对比较抽象,如系统的稳定性.可控性.收敛速度和抗干扰能 ...

  4. 基于matlab的倒立摆设计,基于matlab的倒立摆设计.doc

    基于matlab的倒立摆设计.doc 摘要IAbstract.II第一章绪论11.1倒立摆的研究背景.11.2国内外现状.21.3应解决的问题和技术要求.21.4工作内容.3第二章MATLAB仿真软件 ...

  5. 基于惯性轮倒立摆原理的自行车

    背景 自平衡车有很多种,其中一种是利用惯性轮倒立摆原理,早在2003年,日本的村田顽童就已经问世,它采用的就是惯性轮倒立摆原理.后来其他研究组织和个人纷纷效仿,制作出了五花八门的基于惯性轮倒立摆原理的 ...

  6. matlab模糊控制 论文,基于matlab的倒立摆模糊控制毕业论文报告.doc

    基于matlab的倒立摆模糊控制毕业论文报告 (此文档为word格式,下载后您可任意编辑修改!) 智能控制理论及应用 课程设计报告 题 目: 基于matlab的倒立摆模糊控制 院 系: 西北民族大学电 ...

  7. 智能窗帘传感器c语言程序,基于单片机的智能窗帘控制系统设计(附程序代码)

    基于单片机的智能窗帘控制系统设计(附程序代码)(论文18000字,程序代码) 摘要:二十一世纪初以来,科学技术不断发展,智能家居涌现于各家各户,人们越来越重视生活质量的提高.但是传统的手动开合窗帘耗时 ...

  8. matlab最小拍控制怎么求传递函数,基于Matlab 的最少拍控制系统设计

    - 计算机控制技术实验 -基于Matlab 的最少拍控制系统设计 学院:计算机科学与技术 班级: 姓名: 学号: 指导老师: 日期: 基于Matlab 的最少拍控制系统设计 一. 实验目的 学习使用 ...

  9. 基于数字电路交通灯信号灯控制系统设计-基于单片机病房温度监测与呼叫系统设计-基于STM32的无线蓝牙心电监护仪系统设计-基于STM32的智能蓝牙温控风扇控制设计-基于STM32的智能温室控制系统设计

    1617基于数字电路交通灯信号灯控制系统设计(仿真电路,论文报告)  摘  要:交通灯控制系统在城市交通控制中发挥着重要的作用,本次课程设计就是以城市交通灯控制系统为背景的,主要通过运用学过的数字电路 ...

  10. 模拟地铁自动售票系统C语言,基于PLC的地铁自动售票机控制系统设计.doc

    基于PLC的地铁自动售票机控制系统设计 基于PLC的地铁自动售票机控制系统设计 摘 要:随着社会经济的迅速发展,地铁列车也开始广泛出现于人们视野中.地铁列车具有形式速度快,价格低廉的优势,因此在各大城 ...

最新文章

  1. Java必会的工具库,让你的代码量减少90%
  2. Redis的数据结构及应用场景
  3. 深度学习图像分割:网络结构设计一览
  4. BZOJ 1738: [Usaco2005 mar]Ombrophobic Bovines 发抖的牛( floyd + 二分答案 + 最大流 )
  5. python快捷_汇总学习Python必备的42个快捷键,看完收获满满
  6. 数据可视化|实验八 实现scatterplot关系图
  7. idea中报错……的解决方式!
  8. Android中让Service被关闭后再重新启动
  9. 目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结(转)
  10. java js合并_JS合并单元格
  11. css选择器思维导图
  12. linux的审计功能(audit)
  13. 姑娘美丽人体日志博客_60个美丽诱人的博客设计
  14. matlab电路元件二极管,tvs二极管有正负极吗?TVS管正负极区分方法
  15. 直播问答的后博弈时代:社交化或许才是未来
  16. Linux Ubuntu系统fwknop单包授权认证(SPA)流程
  17. 查找相交链表相交节点
  18. 行级标签文本格式化标签
  19. oracle 使用trigger实现主键自增
  20. linux使用usb转ttl,USB转TTL转换器 USB V2.0 - 宇泰(UTEK) - 全球领先智能通讯解决方案提供商!...

热门文章

  1. 毫秒级超低延时直播产品实测(PRTC直播/webRTC直播)
  2. Python爬虫从入门到精通:(14)验证码识别_Python涛哥
  3. 【数学建模】预测模型——多元回归分析 SPSS实现
  4. [逆向破解]lua脚本解密
  5. Arcgis(三)——重分类
  6. 程序员为什么要写博客?怎么写博客?
  7. 聚类分析 距离 matlab,matlab聚类分析_matlab
  8. android 获取设备的serialNumber和Mac地址
  9. java网上购物商城文献综述,JSP电子商务网上购物系统的设计(源代码+论文+开题报告+外文翻译+文献综述)...
  10. 因果信号的傅里叶变换_信号傅里叶变换系列文章(1):傅里叶级数、傅里叶系数以及傅里叶变换...