自动控制原理学习--平衡小车的控制算法(二)

上一节 在matlab建模,这一节PID控制.

一、模型

             

直接先放一张matlab simulink的模型(只有直线速度环和平衡环,串联PID),就在上一节的基础上加了两个PID。

二、PID控制

PID的好处就是可以不用动力学建模(当然用最好,从根轨迹分析去找参数),免去一大堆的公式计算(就算炼丹式调参),但是不好调参,至于PID的原理,可以去b站后cdsn搜,一搜一大堆,个人推荐去B站搜,视频直接点。 

注意几点:P 比例项存在zero稳态误差,占整个控制量的50%-60%左右

;D并不影响稳态(把对象往稳态拉回来),只影响动态(拉得有多快);I主要影响稳态;

为了安全起见,有几个trick:

1.积分限幅;如果用了积分I,如果被控对象被卡住(或者被人按住),那可能E(误差)就飘很大,所以可以考虑对积分进行条件判断进行限制;

2.积分分离:为防止E突变很大,导致I突变,超调量就变得很大,可以在E一定范围内积分才继续(当E大于某个阈值时就不要进行I积分,该轮的ei为0);

3.微分先行: 防止一开始E突变,让D项不收E影响,不把E喂给D,而是直接把反馈喂给D;

(一)如何调PID

先了解PID相关的传递函数

以上就是如果知道模型(如平衡小车的动力学模型),直接用根轨迹分析,看看P D I不同参数下的表现来选取参数,但实际上很多情况是不知道模型的,可以按下面这种方面调参:

Ku 是临界P值大小,就算临近系统发散时的比例项P大小,Tu就算临界调节时间。

不过simulink里面有个直接帮你计算PID的选项,可以省事很多,如下图

本例的平衡小车matlab仿真做了两个控制环,一个速度环串接平衡环,调的时候先单独调平衡环,再加入速度环PID调速度环,平衡环不用D项,如果想手调可以参考上面的ZN方法试试。

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

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

相关文章

Kubernetes学习-集群搭建篇(一) 搭建Master结点

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Kubernetes渐进式学习-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 1. 前言 2. 集群搭建方式 3. 环境说明 4. 利用kubeadm初始化Ma…

【强训笔记】day14

NO.1 思路&#xff1a;用一个哈希表&#xff0c;先遍历s1&#xff0c;统计哈希表内的字符个数&#xff0c;在遍历s2&#xff0c;s2中的字符在哈希表中减去&#xff0c;如果哈希表中的字符个数小于0那么就输出No。 代码实现&#xff1a; #include <iostream> #include&…

文件名长度调整:指定文件重命名长度,优化你的文件存储体验

在数字时代&#xff0c;文件存储和管理是我们日常生活和工作中不可或缺的一部分。然而&#xff0c;随着文件数量的增加&#xff0c;文件名长度的管理变得尤为重要。合理的文件名长度不仅可以提高文件检索的效率&#xff0c;还能优化整体的存储体验。 为什么文件名长度很重要&am…

【UnityRPG游戏制作】Unity_RPG项目_玩法相关※

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

使用DBeaver连接postgreSql提示缺少驱动

重新安装电脑之后用dbeaver链接数据库的时候&#xff0c;链接PG库一直提示缺少驱动&#xff0c;当选择下载驱动的时候又非常非常慢经常失败&#xff0c;尝试了一下更改源然后下载库驱动就非常快了&#xff0c;当然也包括dbeaver的自动更新。 方法&#xff1a;点击菜单栏【窗口…

Golang 开发实战day13 - Reciver Functions

&#x1f3c6;个人专栏 &#x1f93a; leetcode &#x1f9d7; Leetcode Prime &#x1f3c7; Golang20天教程 &#x1f6b4;‍♂️ Java问题收集园地 &#x1f334; 成长感悟 欢迎大家观看&#xff0c;不执着于追求顶峰&#xff0c;只享受探索过程 Golang 开发实战day13 - 接收…

Rust 通用代码生成器莲花,红莲尝鲜版二十三,多对多候选,增强数据库反射项目功能

Rust 通用代码生成器莲花&#xff0c;红莲尝鲜版二十三&#xff0c;此版本新增了多对多候选功能&#xff0c;增强了数据库自动反射功能和模板向导的编辑器。请部署在 Tomcat9 的 webapps 目录下。 多对多候选功能大大增强了一个数据库自动反射成一个项目的功能&#xff0c;它可…

手机端如何生成gif?一个方法在线转换gif

当我们看到网络上好看个性的gif动画表情包的时候是不是也很想自己制作呢&#xff1f;很多小伙伴都不知道要怎么在手机上制作gif动图吧&#xff01;下面&#xff0c;给大家分享一款操作简单无需下载的动态图片在线制作&#xff08;https://www.gif.cn/&#xff09;的操作工具&am…

高端建站和普通建站有哪些不同

高端建站与普通建站之间存在着显著的差异&#xff0c;从设计到功能、用户体验以及服务质量等各个方面都有所区别。以下是高端建站和普通建站的不同之处&#xff1a; ### 1. 设计质量 - **高端建站**&#xff1a;注重精美、独特的设计风格&#xff0c;通常由专业设计师团队负责。…

深入理解网络原理5----HTTP协议

文章目录 一、HTTP协议格式二、HTTP请求2.1 URL 基本格式2.2 URL encode2.3 "方法" (method)2.4 认识请求 "报头" (header) 三、HTTP 响应3.1 "状态码" (status code) 四、HTPPS工作过程&#xff08;经典面试题&#xff09; 提示&#xff1a;以下…

Vue+OpenLayers7入门到实战:OpenLayers解析通过fetch请求的GeoJson格式数据,并叠加要素文字标注,以行政区划边界为例

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战 前言 本章介绍如何使用OpenLayers7在地图上通过fetch请求geojson数据,然后通过OpenLayers解析为Feature要素叠加到图层上,并且通过动态设置标注方式显示要素属性为文字标注。 本章还是以行政区划边界为例,这个…

『FPGA通信接口』DDR(4)DDR3内存条SODIMMs读写测试

文章目录 前言1.MIG IP核配置2.测试程序3.DDR应用4.传送门 前言 不论是DDR3颗粒还是DDR3内存条&#xff0c;xilinx都是通过MIG IP核实现FPGA与DDR的读写。本文区别于DDR颗粒&#xff0c;记录几个与颗粒配置不同的地方。关于DDR的原理与MIG IP的简介&#xff0c;请查看前面文章&…