基于MATLAB的倒立摆系统控制

2023-05-16

摘要

倒立摆系统是由导轨、小车和各级摆杆组成。小车依靠直流电机施加的控制力,可以在导轨上左右移动,位移和摆杆角度信息由传感器测得,目标是使倒立摆在有限长的导轨上竖立稳定, 达到动态平衡。由于倒立摆系统本身所具有的高阶次、不稳定、多变量、非线性和强耦合特性,许多现代控制理论的研究人员一直将它视为典型的研究对象,不断从中发掘出新的控制策略和控制方法,相关的科研成果在航天科技和机器人学方面获得了广阔的应用。

针对问题一,我们对系统的物理方程进行了处理,把它化成状态空间表达式标准型,然后利用MATLAB里面的函数ss2tf,c2dm分别计算出系统的连续传递函数和采样时间为0.001时的离散传递函数,并用bode函数画出了系统的波特图。

针对问题二,当模型参数不变化时,直接用step函数画出系统的阶跃响应图,当杆的长度随时间变化时,采用ODE方法画出系统的阶跃响应图,同时也用simulink仿真出系统的阶跃响应。

针对问题三,采用eig函数求出状态矩阵的特征根,根据根与0的大小关系判断系统的稳定性,发现,存在根大于0,所以系统不稳定;采用lyap函数通过李雅普洛夫方程计算Q矩阵,发现方程无解,所以系统不稳定;采用LMI工具箱的方法,计算得出tmin>0,不符合LMI方程,所以系统不稳定。

针对问题四,采用构造矩阵的方法,计算构造矩阵的秩,得出构造矩阵的秩均等于矩阵的维数,所以系统完全能控能观。

针对问题五,采用simulink仿真的方法,采用两个PID控制器对输入进行控制,当采用尝试法取得PID1的Kp=-2000,Ki=100.Kd=-100,PID2的Kp=1000,Ki=20,Kd=100时,系统稳定。

关键词:倒立摆、MATLAB、SIMULINK仿真、PID控制、系统稳定性

1、问题重述

倒立摆用铰链安装在伺服电动机驱动的小车上。在无外力作用时,倒立摆不能保持在垂直位置而会左右倾倒,为此需给小车在水平方向上施加适当的作用力u 。

对于该倒立摆系统,完成如下系统分析与设计问题:

1.建立其状态空间模型,采用MATLAB命令求出其传递函数的连续和离散形式(采样时间0.001秒),画出系统Bode图;

2.   ①不考虑模型参数变化时,画出系统的单位阶跃响应曲线;

      ②由于外界环境变化和测量仪器的误差,杆的长度随时间发生如下变化时,利用ODE方法或Simulink方法画出系统的单位阶跃响应曲线;

3.用三种方法(特征根、Lyapunov方程、LMI)分析该系统的稳定性;

4.分析系统的能控性和能观性;

5.用PID控制,实现系统的稳定,并画出闭环系统输出z的曲线。

2、符号说明与假设

表1:符号说明

符号

定义

 

摆杆偏离垂线的角度(rad)

 

小车水平方向的瞬时位置坐标

 

水平方向上施加给小车的作用力

 

小车通过铰链作用于摆杆的力的水平分量

 

小车通过铰链作用于摆杆的力的垂直分量

 

小车质量

 

杆质量

 

杆长度

 

重力加速度

表2:假设说明

假设

假设内容

假设一

忽略摆杆质量

假设二

假设摆杆偏离垂线的角度很小

假设三

忽略各种摩擦阻力的作用

3、问题分析

在无外力作用时,倒立摆不能保持在垂直位置而会左右倾倒,为此需给小车在水平方向上施加适当的作用力u,则摆杆重心的水平、垂直坐标分别为z+lsin\theta ,lcos\theta 。忽略摆杆质量,则系统的重心近似位于摆锤重心,且系统围绕其重心的转动惯量 近似为0。

图2 受力图

此时倒立摆系统的运动可分解为重心的水平运动、重心的垂直运动及绕重心的转动这3个运动。根据牛顿动力学,可得:

小车的动力学方程为:

由以上各式可得:

又由于\theta极小,所以可化简为:

最终整理可得倒立摆的线性系统模型:

输出y=z

4、问题解决

4.1问题一

对于问题一,可以先建立系统的状态空间表达式,令_{}x1\left ( t \right )=\theta ,_{x}2=z

又因为M=1,m=0.1,l=0.5,g=10,带入上式,可得

即:

通过MATLAB程序运算,可得连续传递函数为:

采样时间0.001秒时的离散形式为:

系统的波特图通过MATLAB画出为:

图3 波特图

由波特图可知,系统的相角裕度为0,截止频率为0.955rad/s,所以系统不稳定。

 

 

4.2问题二

1.不考虑模型参数变化时,系统的阶跃响应如图:

图4 系统阶跃响应图

2. 由于外界环境变化和测量仪器的误差,杆的长度随时间发生如下变化l=0.5+0.1\sin \theta 时,采用ODE方法的阶跃响应如图:

图5 ODE方法阶跃响应图

Simulink仿真原理图如下:

图6 仿真原理图

仿真结果如下:

图7 仿真结果图

 

4.3问题三

1.特征根法

计算结果如下:

w =

 

         0         0         0         0

         0         0         0         0

         0         0    4.6904         0

         0         0         0   -4.6904

可知,4.6904>0,所以系统不稳定。

2. Lyapunov方程方法

结果如下:

因为Lyapunov方程无解,所以不存在相对应的Q矩阵,所以系统不稳定。

3.LMI方法

结果如下:

因为tmin>0,所以表明 LMI 系统是不可行的,所以没有Q矩阵,即系统不稳定。

4.4问题四

对系统的能控性和能观性分析,可以运用构造矩阵的秩的大小来判断。能控性判据:对n维连续时间线性时不变系统,构成能控性判别矩阵:

则系统完全能控的充要条件是:

能观性判据为:对n维连续时间线性时不变系统,构成能观性判别矩阵:

则系统完全能观的充要条件为:

通过构造并用MATLAB计算,结果如下:

因为构造的为四阶矩阵,而秩均等于4,所以系统完全能控能观。

 

 

4.5问题五

运用simulink仿真系统的模型,并加入PID控制器,因为有两个输入,所以要加入两个PID控制器,仿真模型如下:

图8 PID控制

 

经过尝试法,调节两个PID的系数,当PID1的Kp=-2000,Ki=100.Kd=-100,PID2的Kp=1000,Ki=20,Kd=100时,系统稳定,仿真图如下:

图9 倒立摆角度控制仿真图

图10 小车位移仿真图

由图可知,倒立摆在运行之后,会出现一小会的不稳定,然后会一直处于稳定状态.

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于MATLAB的倒立摆系统控制 的相关文章

  • equals()方法和hashCode()方法

    1 hashCode 简介 该方法主要是利用一定的规则生成对象的哈希码 xff0c 也称散列码 它是是由对象导出的一个整数值 xff0c 是没有规律的 关于hashCode 使用的哈希算法 xff0c 越糟糕的哈希算法越容易产生哈希碰撞 产
  • 手把手教你基于STM32的BootLoader的OTA远程升级

    本文系21ic论坛蓝V作者小叶三千原创撰写 上次发过SD卡的Bootloader离线升级后 xff0c 应大家的要求 xff0c 这次就讲一下STM32的OTA远程升级 OTA又叫空中下载技术 xff0c 是通过移动通信的空中接口实现对移动
  • 转知乎,感觉非常棒,适合普通人c++学习路线图

    作者 xff1a 刘凯新 链接 xff1a https www zhihu com question 23447320 answer 39322848 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业
  • InfluxDB和IotDB介绍与性能对比

    InfluxDB简介 InfluxDB 是用Go语言编写的一个开源分布式时序 事件和指标数据库 xff0c 无需外部依赖 用于存储和分析时间序列数据的开源数据库 适合存储设备性能 日志 物联网传感器等带时间戳的数据 其设计目标是实现分布式和
  • CVSNT SERVER Configuration

    title CVSNT SERVER Configuration 64 author H819 64 version 0 5 Copyright free reference note author name and the article
  • JavaScript高级使用(对象、BOM、封装)

    JavaScript高级 今天给大家介绍以下几个内容 xff1a JavaScript 面向对象JavaScript 内置对象JavaScript BOMJavaScript 封装 JavaScript面向对象 其实JavaScript中的
  • Python函数(函数定义、函数调用)用法详解

    Python 中 xff0c 函数的应用非常广泛 xff0c 前面章节中我们已经接触过多个函数 xff0c 比如 input print range len 函数等等 xff0c 这些都是 Python 的内置函数 xff0c 可以直接使用
  • zsh配置

    原本用WindTerm 43 bash xff0c WindTerm提供了高亮 自动记忆补全等功能 xff0c 基本上也够用 WindTerm还是比较早期阶段 xff0c 功能细节上还有待完善 xff0c 稳定性方面也有些小问题 比如用vi
  • Android CHRE (Context Hub Runtime Environment)简介

    当前的ARM处理的多个核心 xff0c Android系统运行在速度最快的大核上 xff0c 通常叫AP xff08 Application Processor xff09 AP主要为性能 体验优化 xff0c 相对来说能耗高 处理器中还有
  • Docker pull 命令

    Docker pull 命令 Docker 命令大全 docker pull 从镜像仓库中拉取或者更新指定镜像 语法 docker pull OPTIONS NAME TAG 64 DIGEST OPTIONS说明 xff1a a 拉取所有
  • strrchr函数的实现

    lt span style 61 34 font size 18px 34 gt include lt stdio h gt include lt string h gt char strrchr char const s1 int ch
  • UCOSIII概述

    又给自己挖了一个小坑 xff0c 今天开始学习UCOS xff0c 本篇文章只是作为学习笔记 xff0c 并不是什么教程 文章目录 序言源码概览配置文件UCOSIII与移植相关代码文件UCOS与CPU相关代码文件UCOSIII库文件UCOS
  • UCOSIII中的消息传递

    文章目录 序言什么是消息队列消息队列相关函数OSQCreate OSQPend OSQPost 消息队列实验总结 序言 前面我们介绍了信号量 xff0c 通过信号量我们能够解决优先级反转 xff0c 资源共享冲突等问题 xff0c 但是我们
  • Qt之可视化QSS生成器(初探)

    简述 QSS是Qt的样式表 xff0c 类似于CSS xff0c 目前主要支持CSS2 写代码调样式非常不直观 xff0c 因此需要一个所见即所得的可视化样式生成器 xff0c 网上有很多CSS样式生成器 xff0c 最适合网页开发人员的1
  • 【秒懂音视频开发】26_RTMP服务器搭建

    流媒体 基本概念 流媒体 xff08 Streaming media xff09 xff0c 也叫做 xff1a 流式媒体 是指将一连串的多媒体数据压缩后 xff0c 经过互联网分段发送数据 xff0c 在互联网上即时传输影音以供观赏的一种
  • 论文笔记之PPDM(Parallel Point Detection and Matching for Real-time Human-Object Interaction Detection)

    分为两分支 xff0c 一个用于点 xff08 人 物 交互三个点 xff09 检测 xff0c 一个用于点匹配 xff0c 达到了实时的效果 CVPR2020接收 论文地址 xff1a https arxiv org pdf 1912 1
  • FFmpeg入门 - rtmp推流

    FFmpeg入门 视频播放 音视频开发老马的博客 CSDN博客介绍了怎样用ffmpeg去播放视频 里面用于打开视频流的avformat open input函数除了打开本地视频之外 实际上也能打开rtmp协议的远程视频 实现拉流 demo
  • C/C++音视频高级开发 FFmpeg编程入门

    1 播放器框架 1 1常用音视频术语 容器 xff0f 文件 xff08 Conainer File xff09 xff1a 即特定格式的多媒体文件 xff0c 比如mp4 flv mkv等 媒体流 xff08 Stream xff09 x
  • 在vs code中调试编译有多个.c或.cpp文件的项目,报错undefined reference to “xxx“(cJSON小项目为例)

    项目下载链接 xff1a https sourceforge net projects cjson 项目主要文件 xff1a cJSON c cJSON h test c 问题点 xff1a 有完整的头文件但编译时找不到 xff0c 一直报
  • LSTM网络中各层解读

    构建深度神经网络最关键的部分之一是 当数据流经不同的层时 xff0c 要对其有一个清晰的视图 xff0c 这些层经历了维度的变化 形状的改变 扁平化和重新塑造 结构顺序 每层解读 xff1a 把单词变为tokens xff1b embedd

随机推荐