倒立摆

基于一阶倒立摆系统的模糊神经网络PID控制

*爱你&永不变心* 提交于 2020-01-26 03:05:03
基于一阶倒立摆系统的模糊神经网络PID控制 1.1 研究背景 模糊系统、神经网络和遗传算法被认为是21世纪人工智能最具发展前途的三个重要领域。它们构成了所谓的“智能计算”。随着科学技术的飞速发展,现代工业控制系统变得越来月复杂,基于精确数学模型的传统控制已经达不到理想的控制效果。智能控制是一种模拟人类智能的高级控制系统,它是基于知识的控制,是将控制者和专家经验与知识作为被控对象的模型。 倒立摆系统是一种典型的高阶、非线性、强耦合、多变量、不稳定的装置,通常被用来检验控制策略的有效性。因为倒立摆系统的竖直稳定状态与机器人直立行走的形态相似,同时又与火箭和飞控很相似,所以对倒立摆系统的学习和研究具有广泛、深远的事件意义。关于倒立摆的学习和研究对其它工程控制问题具有指导意义。 1.2 模糊神经网络概述 模糊控制是一门发展迅速、具有广阔应用前景的技术,它不受数学模型的束缚,而是利用人类专家的经验形成模糊语言,生成模糊控制列表,并在实际应用中经过人们反复修正,然后通过计算机采用查表的方法在控制列表中找出相应的模糊控制量,最后经过一定的比例运算得到实际控制量加到被控对象上。模糊控制的规则是由人类专家的经验知识写出的,所以模糊控制能够容易被理解。模糊控制的原理如图1.1所示。 图1.1 模糊控制原理框图 人工神经网络是指从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型

基于强化学习的倒立摆控制策略Matlab实现(附代码) 二刷

微笑、不失礼 提交于 2020-01-25 15:44:44
我的 微信公众号名称 :深度学习与先进智能决策 微信公众号ID :MultiAgent1024 公众号介绍 :主要研究强化学习、计算机视觉、深度学习、机器学习等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!   本文将之前的一篇 基于强化学习的倒立摆控制策略Matlab实现 文章再次进行了扩充。 问题描述   大多数先进控制技术都需要对过程及其环境有较深的了解,一般用拉普拉斯变换或动态微分方程来描述过程动态特性。然而在过程控制领域,许多系统过于复杂,或者其内在规律难以了解,因此很难得到过程的定量知识,也即无法建立起精确的数学模型,但是我们能够获得这些系统的一些输入输出数据。   在被控对象的模型未知,只有数据可用的情况下,设计一个控制器,依据系统的输入输出数据进行自我学习调节,最终实现对控制对象的控制。为了使得设计的自我学习控制算法具有一般性,控制对象需是复杂的、不稳定的、非线性系统。 摘要   针对模型未知只有数据可用的复杂非线性偏微分系统,本文设计了一种基于强化学习的数据驱动学习算法,从与控制对象的交互中学习优化策略。首先建立倒立摆的数学模型,但是只是利用其产生输入输出数据。基于输入输出数据,在未知倒立摆数学模型情况下,实现对倒立摆的控制。 1.引言   作为人工智能的核心,机器学习的根本目的是使计算机能够具备模拟甚至实现人类学习活动的能力

直线型一阶倒立摆1---概念篇

南楼画角 提交于 2020-01-14 14:46:45
一、倒立摆系统的研究目的和意义 倒立摆控制系统(InvertedPendulumSystem简称IPS)是一个复杂的、不稳定的、非线性系统,是进行控制理论教学及开展各种控制实验的理想实验平台。倒立摆的典型性在于:作为被控对象,它是一个高阶次、不稳定、多变量、非线性、强耦合的复杂被控系统,可以有效地反应出控制中的许多问题。 对倒立摆系统的研究能有效的反映控制中的许多典型问题:如非线性问题、鲁棒性问题、镇定问题、随动问题以及跟踪问题等。通过对倒立摆的控制,用来检验新的控制方法是否有较强的处理非线性和不稳定性问题的能力。同时,其控制方法在军工、航天、机器人和一般工业过程领域中都有着广泛的用途,如机器人行走过程中的平衡控制、火箭发射中的垂直度控制和卫星飞行中的姿态控制等。 倒立摆的种类有很多,接其澎式可分为:悬挂式倒立摆、旋转式倒立摆、环形倒立摆和平面倒立摆;按级数可分为:一级、二级、三级、四级、多级等;接其运动轨道可分为:水平式、倾斜式;按控制电机 又可分为:单电机和多级电机。 研究倒立摆系统具有的挑战意义不仅仅是由于级数的增加而产生的控制难度,并且由于他的本身所具有的复杂性、不稳定性以及非线性的特点进而不断研究拓展的新的理论方法,以应用到新的控制对象中,提供更好的实验理论和实验平台。对于机器人的直立行走,航天飞行器的飞行平稳控制都具有非常大的意义,不断进行理论与工业的实践结合

倒立摆实验程序

巧了我就是萌 提交于 2019-12-29 20:22:02
这里写自定义目录标题 倒立摆实验程序 导出 导入 倒立摆实验程序 clear; t0=0; tf=20; x0=[0.5;-0.2;0;0]; [t,x]=ode45(‘dlfun’,[t0,tf],x0); figure; plot(t,x(:,1),‘r’,t,x(:,2),‘b’); title(‘输出曲线’); legend(‘旋臂角度’,‘摆杆角度’); function xdot=dlfun(t,x); m1=0.2; m2=0.052; l1=0.10; l2=0.12; r=0.2; km=0.0236; ke=0.2865; g=9.8; j1=0.004; j2=0.001; f1=0.01; f2=0.001; a=j1+m2 r r; b=m2 r l2; c=j2; d=f1+km ke; e=(m1 l1+m2 r) g; f=f2; h=m2 l2 g; u=1; xdot=zeros(4,1); xdot(1)=x(3); xdot(2)=x(4); xdot(3)=((-d c). x(3)+(f b cos(x(2)-x(1))). x(4)+b b sin(x(2)-x(1)). cos(x(2)-x(1)). x(3). x(3)-b c sin(x(1)-x(2)). x(4). x(4)+e c sin(x(1))-h b sin(x(2