(五)【平衡小车制作】位置式PID、直立环与速度环概念

news2024/12/29 8:50:14

声明:本博客是B站视频【天下行走的平衡小车视频】的笔记

一、PID控制算法概念

PID控制,即为对偏差进行比例、积分和微分控制。由三个元素构成:比例(P),积分(I),微分(D)


工程中P必然存在,在P的基础上又有如PI控制(比例积分),PD控制(比例微分),PID控制(比例积分微分)。

比例项:提高响应速度,减小静差。
积分项:消除稳态误差。
微分项:减小震荡以及超调。
 

二、位置式PID

1.理论分析

        位置式PID是根据编码器的脉冲累加测量电机的位置信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微信进行控制,使偏差趋向于零的过程。

2.公式

 PWM_out=Kp×e(k)+Ki×Σe(k)+Kd×[e(k)-e(k-1)]

  • e(k):本次偏差
  • e(k-1):上一次偏差
  • Σe(k):e(k)以及以前的偏差的累积和,其中k为1,2,…
  • PWM_out:输出

3.结构框图

在这里插入图片描述

 4.C语言实现

int Position_PID(int Encoder, int Target)
{
	static float Bias, PWM_out, Integral_bias, Last_bias;
	Bias = Encoder-Target;		// 计算偏差
	Integral_bias += Bias;		// 计算偏差的积分
	// 位置式PID控制器公式
	PWM_out = Position_Kp*Bias+Position_Ki* Integral_bias+ Position_KD*(Bias- Last_bias)
	Last_bias = Bias;			// 保存上一次偏差
	return PWM_out;				// 输出
}

三、直立环

1.理论

  小车往那边倒,车轮就往哪边开,这样就可以保持车子的平衡。

在这里插入图片描述

 2.公式

a=b1×θ+b2×θ’

比例微分控制【PDout=Kp×Angle+Kd×(Angle- Angle_last)】

3.结构框图

在这里插入图片描述

四、速度环、串级PID

1.理论

  通过速度反馈使得小车保持平衡。

在这里插入图片描述

 2.串级控制系统

在这里插入图片描述

 

  • 速度环输入:① 给定速度;② 速度反馈。
  • 速度环输出:角度值(直立环的期望角度输入)
  • 直立环输入:① 给定角度(速度环输出);② 角度反馈。
  • 直立环输出:PWM(直接控制小车)

3.公式

① 【PD控制器】直立环输出=Kp1×角度偏差+Kd×角度偏差微分
(角度偏差=真实角度-期望角度)

② 【PI控制器】速度环输出=Kp2×编码器偏差+Ki×编码器偏差的积分
(编码器偏差=反馈编码器值-期望编码器值)
【Notes:(1)速度环输出=直立环的期望角度;(2)Kp1:直立环Kp;(3)Kp2:速度环Kp】

③ 串级输出out=Kp1×真实角度+Kd×角度偏差的微分-Kp1×(Kp2×编码器偏差-Ki×编码器偏差的积分)
 

注:平衡小车更多教程关注我的专栏---平衡小车

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统应用编程(六)Linux网络编程(下篇)

本篇主要内容: 一、Linux的文件描述符二、多路IO转接(上)1.基础版多路IO转接select▶ 关于select( )函数▶ select( )改写上篇案例 2.加强版多路IO转接poll3.顶配版多路IO转接epoll▶ epoll相关函数(1)创建监听红黑树&…

重装系统后,MySQL install错误,找不到dll文件,或者应用程序错误

文章目录 1.找不到某某dll文件2.mysqld.exe - 应用程序错误使用DX工具直接修复 1.找不到某某dll文件 由于找不到VCRUNTIME140_1.dll或者MSVCP120.dll,无法继续执行代码,重新安装程序可能会解决此问题。 在使用一台重装系统过的电脑,再次重新…

Yolov8实战:交通roadsign识别,通过加入CVPR203 DCNV3和BiLevelRoutingAttention,暴力涨点

1.roadsign数据集介绍 数据集大小:877张 类别:speedlimit、crosswalk、trafficlight、stop 2.基于YOLOV8的roadsign识别 2.1 原始yolov8性能分析 原始map为0.841 2.1 加入DCNV3 博客地址: https://cv2023.blog.csdn.net/article/detai…

手写 EventBus:从零到一实现自己的事件总线库

简介:在本文中,我们将详细介绍如何从头开始实现一个轻量级的 EventBus 库。我们将以 XEventBus 为例,阐述整个实现过程,以及在实现过程中遇到的关键问题和解决方法。 一 引言 什么是 EventBus? EventBus 是一个基于…

C++ 多线程编程(三) 获取线程的返回值——future

C11标准库增加了获取线程返回值的方法&#xff0c;头文件为<future>&#xff0c;主要包括future、promise、packaged_task、async四个类。 那么&#xff0c;了解一下各个类的构成以及功能。 1 future future是一个模板类&#xff0c;它是传输线程返回值&#xff08;也…

2-Lampiao百个靶机渗透(精写-思路为主)框架漏洞利用2

特别注明&#xff1a;本文章只用于学习交流&#xff0c;不可用来从事违法犯罪活动&#xff0c;如使用者用来从事违法犯罪行为&#xff0c;一切与作者无关。 文章目录 前言一、环境重新部署二、AWVSxray联动和xraybs联动1.安装AWVSxray2.让xray和bs先联动3.AWVS和xray联动 三、p…

【Spring框架全系列】如何创建一个SpringBoot项目

&#x1f307;哈喽&#xff0c;大家好&#xff0c;我是小浪。前几篇博客我们已经介绍了什么是Spring&#xff0c;以及如何创建一个Spring项目&#xff0c;OK&#xff0c;那么单单掌握Spring是完全不够的&#xff0c;Spring的家族体系十分强大&#xff0c;我们还需要深入学习&am…

力扣---LeetCode160. 相交链表(代码详解+流程图)

文章目录 前言160. 相交链表链接&#xff1a;思路&#xff1a;方法一&#xff1a;暴力求解法1.1 时间复杂度&#xff1a;O(M*N)1.2 代码&#xff1a; 方法二&#xff1a;双指针2.1 时间复杂度&#xff1a;O(N)2.2 代码&#xff1a;2. 3流程图&#xff1a; 注意&#xff1a;补充…

13. Transformer(下)

P33 Transformer&#xff08;下&#xff09; 视频链接 P33 Transformer&#xff08;下&#xff09; 1. Decoder: Autoregressive(AT) Decoder原理&#xff1a; Encoder vs Decoder&#xff1a; Masked&#xff1a; how to stop&#xff1a; 2. Decoder: Non-autoregressive(…

网络基础——网络的发展史

作者简介&#xff1a;一名计算机萌新、前来进行学习VUE,让我们一起进步吧。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;我叫于豆豆吖的主页 目录 前言 一.网络发展史 1. ARPANET 2.TCP/IP协议 3. 互联网 4.Web浏览器 5.搜索引擎 6. 社交网…

如果你访问了某个网站,又不想让人知道怎么办?

问大家一个问题&#xff1a;如果你访问了某个网站&#xff0c;又不想让人知道怎么办&#xff1f; 你可能会说&#xff0c;把浏览器浏览历史记录清除&#xff0c;或者直接用无痕模式。 如果你只能想到这一层&#xff0c;那只能说图young&#xff01; 这么说吧&#xff0c;理论…

操作系统原理 —— 调度的概念、层次(十一)

调度的基本概念 在操作系统中的调度&#xff0c;是指操作系统从就序队列中选择一个作业&#xff0c;或者进程进行执行。 举个例子&#xff1a; 比如我们去银行窗口排队&#xff0c;排队的人就相当于就绪列表&#xff0c;窗口就相当于是操作系统&#xff0c;窗口需要服务排队…

npm的使用和命令

3.0 npm 什么是npm 是node管理包的工具 3.1 初始化包管理描述文件 package.json npm init // 会询问你每次的选项 或 npm init -y // 不询问你选项&#xff0c;默认就是确定 首先建立一个文件在路径里面全选写cmd 然后打开环境 在里面写npm init -y回车 就会在你原来空的文…

编写用户帮助/操作手册指南

背景&#xff1a; 用户操作手册是一份指导用户使用产品或服务的重要手册。 一个新系统&#xff0c;需要写用户操作手册&#xff0c;该从何下笔&#xff1f;本篇是一篇教你编写用户帮助/操作手册的指南&#xff5e; 首先&#xff0c;先来看一个反例 &#xff1a; 这个是我入职…

移动通信(17)预编码

源于某篇学位论文 利用预编码技术可以有效抑制大规模天线传输中的干扰&#xff0c;提高链路的峰值速率。大规模天线技术在提升性能的同时也存在很大的干扰问题。多天线传输中带来的多径干扰不可忽视。通常在接收端抑制干扰算法通常实现起来较为复杂&#xff0c;若采用预编码技…

安装Node.js和cnpm

一、安装Node.js 1.下载 Node.js官网下载 根据自身系统下载对应的安装包&#xff08;我这里为Windows10 64位&#xff0c;故选择下载第一个安装包&#xff09; 2、然后点击安装&#xff0c;选择自己要安装的路径&#xff0c;此处我选择的是&#xff1a;D:\Program Files\node…

中级软件设计师备考---UML

目录 面向对象的基础概念面向对象的设计原则UML的各类图设计模式对比分类 面向对象的基础概念 【只介绍一些我个人不太熟悉的概念】 继承和泛化&#xff1a;泛化和继承可以理解为是一个逆过程&#xff1a;泛化就是有子类抽象出一个父类&#xff0c;而继承就是由父类具体化一个…

程序员崩溃的N个瞬间

说到程序员&#xff0c;在外界眼里&#xff0c;他们是掌控代码的大神&#xff0c;他们是改变世界的王者。其实程序员的工作不容易&#xff0c;不信&#xff0c;就来看看程序员崩溃的各种瞬间—— 01、公司实习生找bug 02、在调试时&#xff0c;将断点设置在错误的位置 03、当我…

eventMesh 本地搭建记录

官方文档: Apache EventMesh (Incubating) | Apache EventMesh (作为整体了解 可以先看看架构) 按照官方文档需要搭建服务 eventmesh-store 文档推荐的是 rocketmq docker pull apache/rocketmq:4.9.4 部署rmq 的过程 1.nameServer docker run -d -p 9876:9876 -v pwd/d…

NECCS|全国大学生英语竞赛C类|词汇和语法|语法题|时态 非谓语动词 |19:00~20:15|完形填空·词性转化

14:35&#xff5e;14:45 15:45&#xff5e;16:2019:00&#xff5e;20:15 http://t.csdn.cn/XbsUy 目录 &#xff08;一&#xff09;时态 7. 将来进行时 8. 过去将来进行时 9. 现在完成时 10. 过去完成时​编辑 11. 将来完成时 12. 现在完成时 13. 过去完成进行时 &#xff08;…