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

devtools/2024/9/23 10:18:44/

基于单片机STM32的两轮平衡小车,单片机的各种IO、定时器、通讯等等一大堆要理解、编程,但这些都是琐碎的文档知识,需要花时间看各个模块的接口文档进而编程,需要良好的编程逻辑思维,去获取相关的传感模块信息,以及输出数据给相关的模块,核心其实是怎么处理这些数据,怎么去控制相关的对象,这个没有文档可查,平衡小车其控制算法就是系统的核心,结合自控原理的学习,通过matlab来模拟平衡车可用的控制算法,以便方面各种调参。

一、模型

整个系统是源于实验室里的平衡小车,小车带奥比中光的深度摄像头,树莓派,不过这里只关注怎么控制平衡,所以在matlab建模里面把这部分去掉,就参考着大致的尺寸,弄一个简单模型,如下图:

                         

1.建模:平衡小车的分析可以近似倒立摆,为简化分为车身和底盘,轮子质量忽略不计

相关的动力学或力学建模在相关的算法再描述。

注意:matlab建模一定要注意转角和F的正向,否则后面PID可能有负数的比例系数,还有lqr崩掉。

如不会在matlab建模,可参考下面步骤:

1.创建simulink模型(slx文件);

2.添加世界坐标系3个模块,如下图,(打开新建的slx文件,在空白处右键 弹出搜索模块,输入模块名称选择即可)

3.为简化这里没有做方向环,所以增加了一个平移轴,限定平衡车的平动,还有一个转动轴(车身的摆动),然后在通过brick solid 模块(矩形块 三个平板和电池块加一个轮轴)和Cylindcrical solid模块(两个电机,轮子也可以用这个模块,不过我有轮子的3d模型,两个轮子直接用模型导入) ,rigid transform模块去搭建底盘和车身,rigid transform就算坐标变换方便模型搭建的朝向,这个坐标变换只针对搭建模型的,跟计算无关的),这里太多模块了,可以直接下载模型进去自己看,matlab2023a版

注:因为F 和转角有正向和负向,因此平移轴的施加力的方向(一般是Z)应该是跟上图一致朝右,转动轴的Z(转动轴已经指定为Z轴了)应该是里朝外,保证转角逆时针为正向,这点很重要,之前就算matlab建模这两个方向不对,导致浪费很多时间排错!

4.为好看和添加写地面摩擦因素,也可以加一个模拟地面的brick solid 模块 和Spatial
Contact Force模块。

基本的模块图如下:

body(车身):

搭建matlab模型时刻通过ctrl+D健或者点击run按钮到仿真环境查看环境搭建情况,也可以看看所建的轴的坐标系是否正确等。如下图:

这样就在matlab里面搭建好了仿真环境。

放下载链接:平衡小车matlab仿真建模


http://www.ppmy.cn/devtools/26449.html

相关文章

工具类,包含线程池,excel图片处理

一、线程池 public class ThreadPool {/*** 核心线程*/public static final int CORE_POOL_SIZE Runtime.getRuntime().availableProcessors() 1;/*** 线程池最大线程数*/public static final int MAX_POOL_SIZE CORE_POOL_SIZE * 2;/*** 空闲线程回收时间*/public static …

多线程模型浅谈

优质博文:IT-BLOG-CN 笔者近期在维护的项目中发现了一些比较随机的问题,时有时无的,排查之后发现是使用多线程导致的,恍然之下研究了下多线程的底层模型相关知识,现不大家简要分享下。 一个程序进程可包含多个线程&am…

(学习日记)2024.05.06:UCOSIII第六十节:User文件夹函数概览(uCOS-III->Source文件夹)第六部分

之前的章节都是针对某个或某些知识点进行的专项讲解,重点在功能和代码解释。 回到最初开始学μC/OS-III系统时,当时就定下了一个目标,不仅要读懂,还要读透,改造成更适合中国宝宝体质的使用方式。在学完野火的教程后,经过几经思考,最后决定自己锦上添花,再续上几章。 这…

C# Onnx YOLOv8_Blackjack

C# Onnx YOLOv8_Blackjack 目录 效果 模型 项目 代码 下载 效果 模型 Model Properties ------------------------- date:2024-04-23T17:17:10.378224 description:Ultralytics YOLOv8_Blackjack model trained on data.yaml author:U…

Milvus Cloud 向量数据库Reranker成本比较和使用场景

成本比较:向量检索 v.s. Cross-encoder Reranker v.s. 大模型生成 虽然 Reranker 的使用成本远高于单纯使用向量检索的成本,但它仍然比使用 LLM 为同等数量文档生成答案的成本要低。在 RAG 架构中,Reranker 可以筛选向量搜索的初步结果,丢弃掉与查询相关性低的文档,从而有…

Windows使用SSH登录本机Linux虚拟机

SSH(Secure Shell),一种网络协议,可以在安全外壳下实现数据传输通信,所以主要用于计算机间加密登录,可以简单理解为远程控制。除了计算机间直接互联,在git中也可以看到,常见的协议有…

如何使用dlib库进行目标跟踪

dlib 库本身并不直接提供目标跟踪的功能。目标跟踪是计算机视觉领域的一个独立任务,通常涉及对视频序列中的特定目标(如人脸、车辆、行人等)进行持续的识别和定位。然而,dlib 库中的某些组件(如人脸检测器、HOG特征提取…

交叉调制少样本图像生成用于结直肠组织分类

文章目录 Cross-Modulated Few-Shot Image Generation for Colorectal Tissue Classification摘要方法实验结果 Cross-Modulated Few-Shot Image Generation for Colorectal Tissue Classification 摘要 提出问题: 针对罕见癌症组织的组织病理训练数据稀缺问题&…