一级倒立摆平衡控制系统MATLAB仿真,可显示倒立摆平衡动画,对比极点配置,线性二次型,PID,PI及PD五种算法

news/2025/2/19 12:53:19/文章来源:https://www.cnblogs.com/51matlab/p/18717690

1.算法仿真效果

本课题是针对博主原来写的文章《基于MATLAB的一级倒立摆控制仿真,带GUI界面操作显示倒立摆动画,控制器控制输出》的升级。

 

升级内容包括如下几个方面:增加了PI控制器,PD控制器,同时对极点配置,线性二次型,PID,PI及PD五种算法的控制输出曲线进行对比。

 

matlab2022a仿真结果如下(完整代码运行后无水印):

 

 

 

仿真操作步骤可参考程序配套的操作视频。

 

2.算法涉及理论知识概要

       一个可以活动的小车上立着一根不稳定随时会倒下的杆。小车的轮子由电机控制,可以控制小车电机的转动力矩M。同时,也可以获取小车轮子转动的圈数N(可以精确到小数)和杆相对于垂直位置的倾角α.

 

      不考虑车轮打滑, 小车所受力大小等于电机力矩乘车轮半径, 小车位置可以从转动圈数计算出, 小车可简化为最经典的一阶倒立摆:

 

 

 

 对小车水平方向:

Mx¨+bx˙+N=F

 

对摆水平方向:

N=md2dt(x+lsin⁡θ)

 

:

N=mx¨+mlθ¨cos⁡θ¨−mlθ˙2sin⁡θ

 

对摆垂直方向:

P=mg+md2dt(lcos⁡θ)

:

 

P=mg−mlθ¨sin⁡θ¨−mlθ˙2cos⁡θ

 

关节力矩:

−Plsin⁡θ−Nlcos⁡θ=Iθ¨ ϕ=π+θ

在工作点 θ≈0 进行线性化: sin⁡θ=0,cos⁡θ=1,θ˙2=0 经过一顿操作化简之后能得到:

(I+ml2)ϕ¨−mglϕ=mlx¨ (M+m)x¨+bx˙−mlϕ¨=F=u

 

3.MATLAB核心程序

%%%%%%%%%%%%%%%%%%%%%%选择倒立摆的控制方式%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton4 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
pause;% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton5 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
close(gcbf);
clc,clear,close all% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton6 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)load mat\R1.mat
y1=y;
t1=t;load mat\R2.mat
y2=y;
t2=t;load mat\R3.mat
y3=y;
t3=t;load mat\R4.mat
y4=y;
t4=t;load mat\R5.mat
y5=y;
t5=t;figure;
subplot(211);
plot(t1,y1(:,1),'r','linewidth',2);
hold on
plot(t2,y2(:,1),'b','linewidth',2);
hold on
plot(t3,y3(:,1),'m','linewidth',2);
hold on
plot(t4,y4(:,1),'k','linewidth',2);
hold on
plot(t5,y5(:,1),'g','linewidth',2);
hold on
legend('极点配置法','线性二次型','PID','PI','PD');
title('偏转角变化对比');
xlim([0,10]);subplot(212);
plot(t1,y1(:,3),'r','linewidth',2);
hold on
plot(t2,y2(:,3),'b','linewidth',2);
hold on
plot(t3,y3(:,3),'m','linewidth',2);
hold on
plot(t4,y4(:,3),'k','linewidth',2);
hold on
plot(t5,y5(:,3),'g','linewidth',2);
hold on
legend('极点配置法','线性二次型','PID','PI','PD');
title('小车位移变化对比');
xlim([0,10]);
0sj_021m

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/884494.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Spring Initializr方式构建Spring Boot项目

按教材 下例选用IntelliJ IDEA 2024.3.3付费版 创建项目JDK版本根据实际情况。启动类简析 package com.example.demo; // 这段代码位于 com.example.demo 这个包下import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBo…

未注册类。WSL 安装似乎已损坏。WslRegisterDistribution failed with error: 0x8007019e/

前言 不知何时,我的wsl环境又坏了。 其实wsl我不怎么用,但是今天突然想用一下docker,但是没有启动成功。 于是乎我试了一下wsl,发现是wsl完全坏了。 之前卸载过wsl的某个子系统,比如ubuntu22,当初想着换24,之后很长一段时间没用过wsl。 尽管我怀疑是这个操作造成的问题,…

清华大学最新力作,DeepSeek 从入门到精通PDF

前几天,我发布了一篇关于 WPS 集成 DeepSeek 的教程,没想到大家的反响非常热烈!很多朋友都表示,通过这篇教程学到了不少关于 DeepSeek 的实用技巧,赶紧点进来看。不过,今天我给大家带来了更猛的干货——清华大学最新发布的 DeepSeek 资料!而且这次的资料更加关注 DeepSe…

安装程序无法自动安装virtual machine

安装VMware Tools 失败 发现在给过旧的系统安装 安装VMware Tools 的时候,会失败,比如 win7、win server2008等。原因 官网的说明,在这里 看不懂的自行翻译: 微软已将 Windows 驱动程序签名更改为自 2019 年 12 月 3 日起仅使用 SHA-2 算法,不支持 SHA-2 代码签名的旧版 W…

尝试在 Kubernetes 集群上用阿里云 GPU 实例部署 Ollama + DeekSeek-R1

在前一篇博文中尝试了使用阿里云 GPU 实例 ECS 单机部署了 DeekSeek-R1 7b 模型 。这篇博文记录一下在 k8s 集群上用阿里云 GPU 实例部署 DeekSeek R1 大模型的尝试过程,部署的也是 deepseek-r1:7b 模型。 先准备一台阿里云 GPU 实例,选用了共享型 GPU 实例 sgn7i,8核31G,4…

基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真

1.程序功能描述 基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真,输出收敛曲线以及三维曲面最高点搜索结果。 2.测试软件版本以及运行结果展示MATLAB2022A版本运行 3.核心程序for ij = 1:Mgen% 初始化本代最佳适应度及对应解yfit = 0.0;xbest = zeros(1,2); % 初…

Tomasulo 调度算法实现架构分析

虽然早在 1967 年就已经提出了 Tomasulo 调度算法 [1],但网上仍很少找到关于落到模块粒度的教程文档。从零复现一遍成本太大,因此用画原理图的方式做思想实验,尝试理解 Tomasulo 在电路上如何实现。 处理数据 首先明细几个概念指令(Instruction):包含指令类型(ADD、MUL、…

最新VMware Workstation虚拟机下载并安装

[2025年]最新VMware Workstation虚拟机下载并安装 1.最新VMware Workstation下载地址 2024年5月5日之后,VMware workstation不能直接在vmware官网进行下载了,需要在broadcom博通网站上进行下载 博通收购Vmware后(将workstation免费了),如下 旧的地址点击下载的时候会跳转到…

js之prototype

var TestPrototype = function () {this.propA = 1;this.methodA = function() {return this.propA;} }TestPrototype.prototype = {methodB: function() {return this.propA;} }var objA = new TestPrototype();objA.methodA() // 1 objA.methodB() // 1JavaScript 中, 任何函…

LGP4211_1 [LNTS 2014] LCA 学习笔记

LGP4211_1 [LNTS 2014] LCA 学习笔记 本题一题多解,此处记录其树剖+线段树做法。 Luogu Link 题意简述 给出一棵 \(n\) 个结点的树,以 \(1\) 为根。令 \(dep[1]=1\)。\(m\) 次询问,每次给定 \(l,r,z\),求 \(\sum_{i=l}^r dep[\text{lca}(i,z)]\)。 \(n,m\le 5^10^4\)。 做法…

LGP4211 [LNTS 2014] LCA 学习笔记

LGP4211_1 [LNTS 2014] LCA 本题一题多解,此处记录其树剖+线段树做法。 Luogu Link 题意简述 给出一棵 \(n\) 个结点的树,以 \(1\) 为根。令 \(dep[1]=1\)。\(m\) 次询问,每次给定 \(l,r,z\),求 \(\sum_{i=l}^r dep[\text{lca}(i,z)]\)。 \(n,m\le 5^10^4\)。 做法解析 题目…

自然语言处理入门【第4章】:认知语言智能

4.1 对话与问答 4.1.1 问答系统 问答系统(Question Answering System,QA System)是人工智能与自然语言处理领域的重要研究方向,旨在通过计算机技术实现对人类自然语言提问的精准理解与高效响应。与传统的搜索引擎不同,问答系统不仅需要检索相关信息,还需对问题进行语义解…