【轮式平衡机器人】——角度/速度/方向控制分析软件控制框架

轮式平衡机器人具有自不稳定性,可类比一级倒立摆系统的控制方法,常见有反馈线性化方法、非线性PID控制、自适应控制、自抗扰控制,还有改进的传统缺乏对外界干扰和参数改变鲁棒性的滑模变结构控制。我们采用较为简单的双闭环PID控制实现平衡模型。

一、角度平衡控制(PD内环)

由上面的系统传递函数可知,该系统一共2个极点\pm\sqrt{g/L},但根据奈奎斯特判据,其中一个极点位于s平面的右半面会引起系统的不稳定性,可加入反馈环节消除这种不稳定,能有效避免闭环过程中参数波动产生的扰乱系统的效果,且减小系统时间常数和非线性的影响。

反馈控制器可以是PI,可以是PD,也可以是PID,考虑到角度控制环节的角度信息由陀螺仪MPU6050采集,采集时有信号噪声和零点漂移,为了防止这些误差被积分环节放大,所以采用PD控制

比例P:k1
微分D:k2*s

再次分析得到2个极点(不赘述),当k1>g,k2>0时,满足两个极点位于s平面左半面的稳定条件。

在整个角度环路中,k1和k2的阶分别代表了角度(θ)与角速度(θ的微分),所以控制平衡的控制量x由角度和角速度计算而来。——这样来理解,首先因为产生倾角θ所以产生控制量,前倾的时候车轮也要向前运动,后倾则车轮要向后,所以认为电动机的控制量x与θ之间存在x=k1*θ比例关系,但是当角度θ为0时,x也为0,实际会存在惯性小车不平衡,所以引入一个与角速度(即θ的微分)相关的阻尼力来平衡,则x=k1*θ+k2*dθ/dt。

角度与角速度的反馈主要由MPU6050传感器获得!

二、速度控制器(PI外环)

在完成上面平衡的前提下做速度控制实际上十分复杂——改变速度的同时不能影响基本的平衡控制,所以不能将速度的控制效果直接加到电动机速度的改变中。

为了简化控制量与控制结果之间的关系,可将速度控制看作平衡控制(与角度相关)的外环控制,即将直立平衡控制的目标看作速度控制的结果。因为倾角决定了速度(向前倾的程度与机器人在该方向上运动速度正相关),且由于倾角的存在导致平衡控制的偏差存在,因此需要加速去消除倾角的存在,从而维持平衡:

速度反馈主要利用编码器信号eQEP功能模块读取实现,原来直立平衡控制的输入量变为速度控制的输出量,形成串级控制系统。内环使用PD控制,这里为了消除静态误差,外环速度控制采用PI控制。

三、方向控制器(P辅助)

轮式平衡机器人具有两轮同轴的机械特性,方向控制主要来自两轮的差速,转向控制建立在前两个控制的基础上,不能影响正常的直立平衡。平衡小车对转向控制的精度和响应速度要求不高,只采用比例控制P。

可以使用z轴陀螺仪的角速度数据与设定目标转向角速度做偏差来计算控制量进行P控制,避免了通过车轮编码器信号来判断转向时无法考虑打滑等因素的缺点、陀螺仪数据用于计算转向角时可能产生的误差累积,优点是算法简单,但也存在对高频信号采样失真的缺点。

四、控制框架

下面从整体概貌上谈谈轮式平衡小车的目标效果,考虑了CD摄像头循迹、APP控制、超声波避障等拓展功能。

①系统初始化

②串口中断程序

设计串口中断程序可以实现下列拓展功能:

③主中断程序

主程序的运行需要精确的时钟周期来保证平衡控制的稳定运行,如使用单片机的定时器Timer0实现5ms为周期陀螺仪信号读取、编码器信号读取、PWM控制量计算、启停信号的检测以及CCD相机信号的读取、中值线计算的过程。

app蓝牙串口发送来的控制信号通过串口中断接收,在速度控制量计算时介入;定速自主循迹通过图像采集模块得到的电压值进行中线识别,根据转向控制量计算出两轮的电机差速PWM控制量。

往期精彩

STM32专栏(付费9.9)icon-default.png?t=N7T8http://t.csdnimg.cn/E2F88

OpenCV-Python专栏(付费9.9)icon-default.png?t=N7T8http://t.csdnimg.cn/zK1jV

AI底层逻辑专栏(付费9.9)icon-default.png?t=N7T8http://t.csdnimg.cn/zic0f

机器学习专栏(免费)icon-default.png?t=N7T8http://t.csdnimg.cn/FaXzAFreeRTOS专栏(免费)icon-default.png?t=N7T8http://t.csdnimg.cn/SjIqU电机控制专栏(免费)icon-default.png?t=N7T8http://t.csdnimg.cn/FNWM7

AI拓展驿站 

人工智能(AI)>机器学习>深度学习!机器学习可做传统预测、图像识别、自然语言处理等。

机器学习(统计方法)是实现人工智能的一种途径,深度学习(深度神经网络)是机器学习中的一种方法!

机器学习三个关键词:数据、模型、预测!

数据集结构:特征值(特征)+目标值(标签)!

机器学习分类:①监督学习:输入数据有特征有标签,若标签为类别则为分类问题,若标签为连续型数据则为回归问题。②无监督学习:输入数据有特征但无标签(即无特定目标值),典型的聚类问题。

自学路线:B站视频入门——实战类书籍——理论型书籍(数学基础、李航的统计学习方法、机器学习“西瓜书”、深度学习““花书”)

学习库和框架:B站视频先scikit-learn再tensorflow!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

指标异常检测和诊断

检测 是发现问题 诊断 是找到原因 误差的分类 系统误差:系统误差是由于仪器本身不精确,或实验方法粗略,或实验原理不完善而产生的。随机误差:随机误差是由各种偶然因素对实验者、测量仪器、被测物理量的影响而产生的。粗大误差&…

【C++】用wxWidgets实现多文档窗体程序

一、基本步骤和示例代码 在wxWidgets中,要实现多文档窗体程序,通常会使用wxMDIParentFrame和wxMDIChildFrame类来创建一种标准的MDI(多文档接口)应用。以下是基本步骤和示例代码,演示如何使用wxWidgets创建多文档界面…

ChatGLM vs ChatGPT

所有的NLP大模型 都是transformer结构 1.Mask attention 的策略不同 2.训练任务目标不同 国内大模型nb公司:百度、清华智谱 一、主流大模型 粉色:Encoder-only。 绿色:Encoder-Decoder,尽头智谱ChatGLM。 蓝色:…

机械设计-哈工大课程学习-螺旋传动

二、摩擦类型 1、静态摩擦:这是身体静止时所经历的摩擦。换句话说,就是身体有运动倾向时的摩擦力。 2、动态摩擦:这是身体在运动时所经历的摩擦。也称为动摩擦。动摩擦有以下两种类型: ①滑动摩擦:一个物体在另一个…

声明式注解对XXL-JOB的定时任务代码生效吗?

说明:源于博主的思考,本文验证一下声明式注解,即Transactional注解,对XXL-JOB的定时任务是否生效。 准备 首先,创建一个需要事务的场景。有两张表,一张部门表,一张用户表,用户隶属…

huggingface学习 | 云服务器使用hf_hub_download下载huggingface上的模型文件

系列文章目录 huggingface学习 | 云服务器使用git-lfs下载huggingface上的模型文件 文章目录 系列文章目录一、hf_hub_download介绍二、找到需要下载的huggingface文件三、准备工作及下载过程四、全部代码 一、hf_hub_download介绍 hf_hub_download是huggingface官方支持&…

【Godot4自学手册】第二节主人公设置

继续学习Godot,今天是第二节的内容,本节主要完成游戏玩家的设置,将玩家展现在场景中。 一、新建一个主场景 首先在场景面板中单击2D场景,如图。 这样我们就有了一个2D场景,我们将Node2D重新命名为“Main”&#xff…

核密度曲线(python

目录 1.代码:2.效果:小结: 1.代码: import pandas as pd import matplotlib.pyplot as plt # 读入数据 file r123.xlsx sheet Sheet2 col S213 # 标题名称 title col 供订比曲线 xlabel 供订比 # 横轴显示范围 xleft 0 xr…

数据操作——缺失值处理

缺失值处理 缺失值的处理思路 如果想探究如何处理无效值, 首先要知道无效值从哪来, 从而分析可能产生的无效值有哪些类型, 在分别去看如何处理无效值 什么是缺失值 一个值本身的含义是这个值不存在则称之为缺失值, 也就是说这个值本身代表着缺失, 或者这个值本身无意义, 比如…

各省份经济不平等和家庭支出分布数据:恩格尔系数和泰尔指数(2000-2022年)

中国各省的恩格尔系数和泰尔指数数据为我们提供了关于这些地区居民消费结构和收入差距的了解。 恩格尔系数是衡量居民生活水平和消费结构的一个重要指标,它表示食品支出占家庭总支出的比例。通常,恩格尔系数较低表明居民的生活水平较高。 泰尔指数则是…

ChatGPT时代对大数据应用的展望

前言: 2022年底,科技圈有个爆炸性新闻,ChatGPT的诞生,引发了世界范围内的震惊;人工智能在与人交流上有了划时代的技术突破,可以和人深入的理解交流,让许多公司和领域对这项技术有了更多遐想。对…

ElasticSearch(ES) 搜索入门笔记

文章目录 ElasticSearch(ES) 搜索入门笔记环境准备-本地安装ES和Kibanamapping字段类型mapping 参数Analyzer自定义分析器分析器的测试中文分词 ik_maxNormalizer 其他关于mapping的要点 ES 搜索[match all 查询](https://www.elastic.co/guide/en/elasticsearch/reference/cur…

77. 组合 - 力扣(LeetCode)

题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 输入示例 n 4, k 2输出示例 [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ]解题思路 我们使用回溯、深度优先遍历的思想,我们使用一个栈 path…

【C++】命名空间(namespace)

文章目录 1. 为什么要有命名空间?2. 命名空间介绍3.命名空间三种使用方式4. 注意 1. 为什么要有命名空间? 在C语言中,局部变量和全局变量如果同名,在使用时可能会造成冲突。这并不是想避免就能避免的,在程序中,不仅仅是变量&…

《WebKit 技术内幕》之八(3):硬件加速机制

3 其他硬件加速模块 3.1 2D图形的硬件加速机制 其实网页中有很多绘图操作是针对2D图形的,这些操作包括通常的网页绘制,例如绘制边框、文字、图片、填充等,它们都是典型的2D绘图操作。在HTML5中,规范又引入了2D绘图的画布功能&a…

校企对接实习管理系统的设计与实现-计算机毕业设计源码11959

摘 要 校企合作实习是一种重要的实践教学模式,但是在实际的推行过程中,存在许多管理问题。其中包括远程指导困难、学生管理困难、校企信息沟通不畅等问题一直困扰着校方负责管理实习的教师们。随着互联网系统开发技术的发展,应用web技术开发…

一文梳理金融风控建模全流程(Python)

▍目录 一、简介 风控信用评分卡简介 Scorecardpy库简介 二、目标定义与数据准备 目标定义 数据准备 三、安装scorecardpy包 四、数据检查 五、数据筛选 六、数据划分 七、变量分箱 卡方分箱 手动调整分箱 八、建立模型 相关性分析 多重共线性检验VIF KS和AUC …

学习笔记|串口通信的基础知识|同步/异步|RS232|常见的串口软件的参数|STC32G单片机视频开发教程(冲哥)|第二十集:串口通信基础

目录 1.串口通信的基础知识串口通信(Serial Communication)同步/异步?全双工?常见的串口软件的参数 2.STC32的串口通信实现原理引脚选择:实现分时复用模式选择串口1模式1,模式1波特率计算公式 3.串口通信代码实现编写串口1通信程序…

【嘉立创EDA-PCB设计指南】4.模块化布局

前言:本文对本专栏中的【嘉立创EDA-PCB设计指南】前面绘制的原理图进行模块化布局,首先进行预布局(将每个模块放一起),然后进行精细化布局(按照原理图来精细化布局)。 目录 模块化预布局 模块…

cesium实现动态围栏

项目中使用到了cesium,需要实现动态的围栏的效果, 在网上也找了好多案例,通过着色器来实现效果,为此也有好多博主也附上了自己的代码,也许是因为使用方法不同,复制代码并修改依旧还是没有通过他们的方式实现效果【着色…