零基础制作平衡小车【连载】10---PID调参

2023-10-29

PID实战也已经结束了,基本上也算上是一个小项目了完成了,既然完成了,这篇就来做个总结一下吧。

网上很多关于PID调参的文档,基本都是理论,也没有图片说明,这对于小白入门来说很是头疼。别人的理论咱都看的懂,一到自己就懵逼。为了解决这一问题,我把程序源码放到公众号了,你可下载下来,在结合我这片文档说明,自己动手实践一下。自己不实践,心里总是没底,只有自己体会一下,才能真正弄明白。

PID调参

首先说说调参吧,关于PID调参,我用一句话总结一下:跟着感觉走。

为啥要这样说呢,因为对于初学者来说,只是写个程序,然后用试凑法进行匹配PID三个系数,以此来达到较好的控制效果。试凑法是什么,不就是跟着感觉走嘛,这种感觉就跟写英语试卷一样。

不过话又说过来,这个感觉可不是随心所欲,为所欲为的,这也是有一定理论基础支撑的。一般调节方法我做个总结,如下:

1.先调节P项,其他项系数都设为0

这个P项怎么调呢?再调之前我们先回忆一下【连载6】讲的内容,P到底有什么用。首先看下单独P项的公式:

OUTp= K*Ek
OUTp= 系数*(设定值 - 当前采样值)

Ek为当前误差。

以我们实战的例子来讲,假设我们设定的目标值为100,我们此刻采样的编码器的值为50,此时PID中I和D的系数都为0,也就说后面两项不用管,只关心P项就行了。而P项公式是当前误差乘上一个系数,这个系数就是我们要设定的P项系数,那么我们是不是应该将P尽可能的大,因为我们需要系统尽快的达到设定值,根据这个思路我们先将P设定为0.5,先试试效果。

当P = 0.5时,实际效果如下图:
在这里插入图片描述

图片上的点点是实际采样的编码器脉冲数,横线是我们设定的目标值。

看看点点形成的抛物线,虽然能达到目标值,但是时间有点长,这个效果不是最好的,当然这个也不是绝对的,有些系统是需要慢慢接近目标值的,要看系统要求。这里我们控制转速,目的是让转速尽可能快的接近目标值,因此我们在加大P项试试。

当P = 1时,实际效果如下图:

在这里插入图片描述

相比上面那张图片是不是明显更快的接近目标值了,抛物线更陡了,说明速度更快了。一般情况下,我们单独调节P时要将实际采样值超过目标值的百分之30-50左右,那么我们试试将P设为5

当P = 5时,感觉还不错,抖个两三下就可以达到很好地效果了,实际效果如下图:

在这里插入图片描述

2.在P = 5的基础上,调节I

你会发现,只有一个P就能达到几乎无静态误差的效果,原因是程序中采集完编码器值代入pid计算,计算完会得出一个增量值,之后用之前的pwm加上计算之后的增量值,如果这次刚好没误差,pwm会保持上一次的值。不过加上I你会发现,不仅速度变快了,而且过冲变小。

当I = 1时,实际效果如下图:效果是不是特别好,迅速达到目标值稳定下来。
相比刚才没有I的时候,过冲是不是变小了。这种效果基本上已经算的上是完美了、
在这里插入图片描述

当I = 2时,实际效果如下图:I的抑制太大
在这里插入图片描述
当I = 0.05时,实际效果如下图:I的抑制太小

在这里插入图片描述

其实就本系统而言,已经不需要D了,目前P=5,I=1时效果就已经很不错了。不过既然是学习,就把每一个参数都演示一下,看看到底都是起到什么作用,和我们前面说的理论是否一致。

3.在P = 5,I = 0.05的基础上,调节D
选择I=0.05是为了让系统继续有个过冲,因为D是起到预判作用的,会削弱增长的速度,如果I=1,在加上D,系统的增长速度就慢了。

当D = -0.05时,实际效果如下图:

在这里插入图片描述
当D=-1时,效果如下图:你会发现D越大,回弹的力度就越大,系统震荡时间变长。这是积分作用时间长造成的。微分过大,造成阻尼过大,积分面积就过大,造成超调。 在没达到目标值前,积分都是正的,越接近目标值,pd作用越小,而积分却累积了很大。第一次超调之后积分才慢慢可以和负的抵消。最后慢慢接近目标值。

在这里插入图片描述

最终确定P=5,I=0.05,D=-0.05。

这就是整个PID调参过程。

总结

  1. P的作用是将系统尽可能快的接近目标值,在调参的时候,先将ID设为0,之后将系统调节至超调量为目标值的50%左右,通俗的讲就是将系统超过目标值一些。
  2. I的作用是消除静态误差
  3. D的作用也是阻尼,当Kd越大,你会发现震荡越严重,就像一个弹簧,你往外拉的力越大,弹簧反弹的力越大

其实光看是不行的,只有自己亲自调试一遍,心里才有谱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

零基础制作平衡小车【连载】10---PID调参 的相关文章

  • 打造完美人像,PixCake像素蛋糕助您一键修图

    您是否曾经为自己的人像照片需要进行繁琐的修图而感到困扰 是否曾经想要打造出完美的自拍照 却不知道该如何下手 现在 我们为您推荐一款强大的人像处理技术修图软件 PixCake像素蛋糕 PixCake像素蛋糕是一款基于AI人像处理技术的修图软件
  • 多模态、长文本、智能体,智谱AI推出GLM-4模型全家桶,发布即上线!

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 2024年01月16日 智谱AI首届技术开放日 Zhipu DevDay 在北京中关村国家自主创新示范区展示中心成功举办 现场 智谱AI团队全面展示了其投身于大模型事业三年多来所
  • 基于opencv的大米计数统计(详细处理流程+代码)

    在我每周的标准作业清单中 有一项是编写计算机视觉算法来计算该图像中米粒的数量 因此 当我的一个好朋友M给我发了一张纸上的扁豆照片 显然是受到上述转发的启发 请我帮他数一下谷物的数量时 它勾起了我怀旧的回忆 因此 我在我的旧硬盘上寻找很久以前
  • 毕业设计:基于卷积神经网络的验证码识别系统 机器视觉 人工智能

    目录 前言 设计思路 一 课题背景与意义 二 算法理论原理 2 1 字符分割算法 2 2 深度学习 三 检测的实现 3 1 数据集 3 2 实验环境搭建 3 3 实验及结果分析 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实
  • 【毕业设计选题】复杂背景下的无人机(UVA)夜间目标检测系统 python 人工智能 深度学习

    前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度的 对本科同学来说是充满挑战 为帮助大家顺利通过和节省时间
  • 2024 人工智能与大数据专业毕业设计(论文)选题指导

    目录 前言 毕设选题 选题迷茫 选题的重要性 更多选题指导 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生
  • 手把手教你用 Stable Diffusion 写好提示词

    Stable Diffusion 技术把 AI 图像生成提高到了一个全新高度 文生图 Text to image 生成质量很大程度上取决于你的提示词 Prompt 好不好 前面文章写了一篇文章 一份保姆级的 Stable Diffusion
  • 机器学习算法实战案例:时间序列数据最全的预处理方法总结

    文章目录 1 缺失值处理 1 1 统计缺失值 1 2 删除缺失值 1 3 指定值填充 1 4 均值 中位数 众数填充
  • 机器学习算法实战案例:Informer实现多变量负荷预测

    文章目录 机器学习算法实战案例系列 答疑 技术交流 1 实验数据集 2 如何运行自己的数据集 3 报错分析 机器学习算法实战案例系
  • 2023最新pytorch安装(超详细版)

    前言 一 判断是否有Nvidia 英伟达显卡 二 CPU版 2 1 安装Anaconda 2 2 创建虚拟环境 2 3安装pytorch 2 4 验证pytorch是否安装成功 三 GPU版 3 1 安装Anaconda 3 2 创建虚拟环
  • AI在保护环境、应对气候变化中的作用

    对于AI生命周期数据领域的全球领导者而言 暂时搁置我们惯常的AI见解和AI生命周期数据内容产出 来认识诸如世界地球日这样的自然环境类活动日 似乎是个奇怪的事情 我们想要知道 数据是否真的会影响我们的地球环境 简而言之 是 确实如此 但作为一
  • 回望计算机视觉会议ICCV的31年

    作者 原野寻踪 编辑 汽车人 原文链接 https zhuanlan zhihu com p 670393313 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 本文只做
  • Cortex-M3与M4权威指南

    处理器类型 所有的ARM Cortex M 处理器是32位的精简指令集处理器 它们有 32位寄存器 32位内部数据路径 32位总线接口 除了32位数据 Cortex M处理器也可以有效地处理器8位和16位数据以及支持许多涉及64位数据的操作
  • 如何在Windows中通过端口查找PID并使用java杀死找到的任务

    我需要通过进程端口在java代码中杀死进程 我可以在 cmd 中手动执行此操作 例如 C gt netstat a n o findstr 6543 TCP 0 0 0 0 6543 0 0 0 0 0 LISTENING 1145 TCP
  • mysql.server 启动时出现 PID 错误?

    我刚刚尝试使用自制程序 在 Mac OS X 10 6 上 安装 MySQL 但我在第一个障碍时遇到了问题 当尝试手动启动服务器 mysql server start 时 出现以下错误 ERROR Manager of pid file q
  • STM32内部时钟

    我对 STM32F7 设备 意法半导体的 Cortex M7 微控制器 上的时钟系统感到困惑 参考手册没有充分阐明这些时钟之间的差异 SYSCLK HCLK FCLK 参考手册中阅读章节 gt RCC 为 Cortex 系统定时器 SysT
  • STM32F0、ST-link v2、OpenOCD 0.9.0:打开失败

    我在用着发射台 http www ti com ww en launchpad about htmlgcc arm none eabi 4 9 2015q2 为 STM32F0 进行编译 现在我想使用该集合中的 arm none eabi
  • 如何通过VBA获取当前Excel实例的进程ID,而不使用标题?

    如何获取运行 VBA 代码的当前 Excel 实例的进程 ID 我不想通过标题中的名称来请求它 当我有两个或多个具有相同标题的 Excel 实例时 这会导致问题 您可以使用此方法来获取当前进程ID Declare Function GetC
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • 如何在bash中列出所有后台pid

    要么我无法正确表达我的搜索 要么答案不容易找到 但我正在尝试找出如何列出我的所有后台任务 PID 例如 到目前为止 我发现要列出我们使用的最后一个 PID 但现在我想列出之前任务的 PID 如果存在 但我找不到如何做到这一点 最终我想列出我

随机推荐

  • 数组指针 一维

    概念 我们把指向数组的指针叫做数组指针 后面还会学到指针数组 这两个是不一样的 根据中学语文偏正词组的知识可以知道 前者是指针 后者是数组 数组的指针其实就是数组在内存的起始地址 先看一个例子 int a 6 i 那么a i 和 a i 是
  • 目标检测常用评价指标及其计算方法

    目录 一 目标检测常用评价指标 二 速度指标 三 精度指标 1 混淆矩阵 2 Precision Recall F1 F 1 Precision 2 Recall 3 F1 4 F 3IoU Intersection over Union
  • C++字符串与转移字符

    先看以下代码 include
  • WCE下添加fliter及使用filter(二)

    转载请标明是引用于 http blog csdn net chenyujing1234 完成注册表cim capture reg START CIM Capture DShow filter HKEY CLASSES ROOT Filter
  • CSDN博客的文字颜色、字体和字号设置

    文章目录 一 文本颜色设置 字体颜色参考 二 文本字号设置 三 文本字体设置 四 实战演练 五 转载自 一 文本颜色设置 代码 font color red 1 我是文本 红色red font font color blue 2 我是文本
  • 倒计时小插件,懒人专用

    一 下载该插件 下载地址 https download csdn net download weixin 43684214 78400201 二 解压后 打开浏览器的开发者模式 三 安装后效果如图
  • 在openEuler平台构建带timescaledbV2时序数据库插件的PostgreSqlV14.5容器

    在openEuler平台部署特定版本的PostgreSql在安装包收集上存在较大难题 本次需求为制作zabbix系统所需的timescaledbV2插件的PostgreSqlV14 5数据库 在评估多种方案后 采用了基于CentOS底包制作
  • Windows系统C++版 YOLOv4船舶目标检测实战

    克隆或下载YOLOv4 YOLOv4网址 https github com AlexeyAB darknet 如果安装了Git软件 可直接克隆项目到本地 nvcc V git clone https github com AlexeyAB
  • YAML学习

    YAML格式 简单说明 是一个可读性高 用来表达数据序列的格式 YAML的意思其实是 仍是一种标记语言 但为了强调这种语言以数据做为中心 而不是以标记语言为重点 基本语法 缩进时不允许使用Tab键 只允许使用空格 大小写敏感 缩进的空格数目
  • 阻塞、非阻塞、同步、异步的区别

    前言 在理解这些概念之前 我们要先知道 我们调用write这个函数时 其实只是将用户态的数据给到内核态中 然后内核操作系统会帮我们完成接下来的操作 同理 调用read函数 其实是将内核态中的数据拷贝到用户态里 而内核是怎样获取到这些数据的
  • 全桥并离网成熟逆变器,可实现并网充电,放电 原理图,源码

    全桥并离网成熟逆变器 可实现并网充电 放电 原理图 源码 id 626680411017
  • [ 靶场环境篇 ] pikachu 靶场环境搭建(特别详细)

    博主介绍 博主介绍 大家好 我是 PowerShell 很高兴认识大家 主攻领域 渗透领域 数据通信 通讯安全 web安全 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论 一起进步 文末有彩蛋 作者水平有限 欢
  • 【PAT】1033 旧键盘打字 (20 分)

    1033 旧键盘打字 20 分 旧键盘上坏了几个键 于是在敲一段文字的时候 对应的字符就不会出现 现在给出应该输入的一段文字 以及坏掉的那些键 打出的结果文字会是怎样 输入格式 输入在 2 行中分别给出坏掉的那些键 以及应该输入的文字 其中
  • ZeroTier实现内网穿透详细教程,无需公网IP,实现异地组网

    ZeroTier实现内网穿透详细教程 无需公网IP 实现异地组网 ZeroTier 1 官网注册账号 创建自己的局域网段 2 点击创建好的网络 进入设置界面进行设置 3 下载客户端 安装客户端 然后连接到网络中 4 加入网络成功后 需要返回
  • Python基础进阶知识点全汇总:入门你需要掌握哪些知识点?

    Python基础进阶需要掌握哪些知识点 Python将是每个程序员的标配 有编程基础再掌握Python语言对于日后的升职加薪更有利 Python语言简洁利于理解 语法上相对容易能够让开发者更专注于业务逻辑的实现 Python基础进阶知识点
  • 区块链开发教程推荐

    区块链的重要性已经毋庸置疑 但对大多数跃跃欲试的开发者而言 去中心化思想 非对称加密 共识算法等技术点的理解和运用 都是入门区块链开发的挑战 合适的区块链开发教程可以极大地缩短区块链开发的学习周期 因此 本文汇总整理了以太坊 比特币 EOS
  • PyQt圆形按钮

    不规则形状的控件一直是图形界面设计的不可缺少的一项 但是有些控件的不规则实现却比较困难 这篇文字专注于圆形按钮的实现 此实现方法比较简单 没有任何难点 且看实现效果 按钮初始图片 Hovered图片 Pressed图片 当然 将图片设置为r
  • Maven(下载、安装、环境配置详细图文)

    能够帮助你们解决问题是博主的荣幸 你们的支持是我创作的最大动力 欢迎关注点赞 文章目录 一 Maven下载 二 Maven配置 三 验证 四 Maven仓库设置 setting xml设置 总结 一 Maven下载 提示 安装之前需要先确认
  • 《大规模并行处理器编程实战(第2版)》今年翻译的一本书出版

    大规模并行处理器编程实战 第2版 今年翻译的一本书 终于出版了 这本书原作者写得很不错 我们翻译的水平有限 希望大家轻拍 http product china pub com 3768940
  • 零基础制作平衡小车【连载】10---PID调参

    PID实战也已经结束了 基本上也算上是一个小项目了完成了 既然完成了 这篇就来做个总结一下吧 网上很多关于PID调参的文档 基本都是理论 也没有图片说明 这对于小白入门来说很是头疼 别人的理论咱都看的懂 一到自己就懵逼 为了解决这一问题 我