用一颗学美术的心来理解PID调节

这种图(↑)大家都会画吧?什么?你不会?那这样的(↓)呢?
我的天?你还不会?那我降低要求,给你支笔,让你对上面那张图涂颜色好了。(一脸嫌弃)
什么?你就涂成这样?竟然还有留白?
好吧,我不怪你。给你一只细一点勾线笔的笔好了。
你就把图搞成这样啊?竟然还有涂到外面去的?再给你一块橡皮好了,这下总好了吧。
泡老师:嗯,我很满意。那么下课了!
同学心声:(啊?这就下课了啊)
泡老师:当然不是。
同学心声:(你怎么听到我的心声的???黑人问号)
泡老师:开玩笑的(hhhh)。
下面我们就来看看PID好了,我们上面是不是用了三种工具?
现在我们开始取名字。第一支粗的笔叫P,第二支细的笔叫I,橡皮擦叫D。
大家发现没有P其实是一个很粗的刷子,它可以帮助我们快速的把大面积的色块刷完,这样的话,我们画图的速度就会很快,但一个不小心就会超出本来应该画图的区域。I是一支细的笔,可以帮助我们完善由于P而造成的留白。D是一块橡皮擦,可以补救擦除那些超出画图区域的画笔。要完成这样的效果,我们会发现一个特点。为了快,P画刷必须大,I橡皮擦必须比P画刷小,同时D要比I小一点,这样效果才会比较好。对于不同的涂色区域,我们也会对三者有不同的要求,如果是一张很大很大的图,势必这三个工具本身绝对尺寸就需要很大。反之,如果图很小,三者也同时要求很小。对于不同的边界,我们也需要调节这三者的相对大小,来适应图的具体特点。
好,我们现在把刚才说的东西套到PID调节里,我们PID在控制里,P代表比例环节,I代表积分环节,D代表微分环节。比例环节可以使得我们的控制系统快速接近希望的性能附近(也就是上面说的希望把区域涂满色),这时候积分环节可以让操作更加精确,同时微分环节D可以把超过预定的量的部分(这个部分专业称为超调量)给消除。三者配合,就可以让我们的性能达到预期性能。由于每个任务要求不同(比如图太阳内部和外焰的绝对体积大小、涂色曲面差异),我们需要认真选择三个环节的大小,也就是工业上俗称的调参来适应复杂多变的任务。
比如:我们画图时候就可以选择粗笔的大小,勾线笔的大小,以及橡皮擦的大小。
这时候,我们发现对于有些系统控制对超调量要求不是很高的,可以采用PI(粗笔+勾线笔)控制。对于那些可以在预定值附近的,可以采用PD(粗笔+橡皮擦)控制。实际上,我们也可单独用P(粗笔,大不了不那么精确),单独用I(勾线笔,大不了慢一点),但不可以单独用D(橡皮擦,都没画怎么能擦呢?)
当然,用PID(粗笔+勾线笔+橡皮擦)肯定是最吼的。但是?穷画家也要考虑成本,工业上更需要根据需要权衡利弊(trade-off),所以一切要以技术性和经济性的综合考虑来选择控制方式。
所以,这里给大家看一副极为土豪的画。
看到这里相信大家应该对自动控制原理的核心——PID控制有了一个很清晰的认识。但是我们是否所有时候都需要让涂色都这么完美完成呢?比如第一幅图,人家就没有很严格的去涂色,但很好的视觉效果。所以,这里需要打一个问号(?)欲知后事如何,且听下回因式分解。
用一颗学美术的心来理解PID调节的更多相关文章
- 解决初学者学不懂android,不理解android的设计
最近在忙着搞一个小项目,所以没有来得及写一些原创性的东西,好容易今天中秋节,就趁现在写一些吧,今天仍然看了些老马的视频,尽管这些东西以前都用过,但是感觉仍然学到了不少东西,说给大家听希望大家也要不要不 ...
- 《通过C#学Proto.Actor模型》之PID
PID对象是代表Actor对象的进程,是能过Actor.Spawn(props)获取的:它有什么成员呢?既然代理Actor,首先有一个ID,标识自己是谁,Actor在Spawn时可以命名这个ID,否则 ...
- 小强学渲染之OpenGL状态机理解
状态机是理论上的一种机器,呃这个说法非常非常的抽象.通俗一点理解,状态机描述了一个对象在其生命周期内所经历的各种状态,状态间的转变,发生转变的动因,条件及转变中所执行的活动.或者说,状态机是一种行为, ...
- 【转】跟我一起学Spring 3(4)–深入理解IoC(控制反转)和DI(依赖注入)
在继续下面的章节之前,我们要先说说大名鼎鼎的IoC和DI. 我们经常会听说IoC,也就是Inversion of Controller,控制反转.事实上,IoC并不是一个新鲜的概念,最早可能是在198 ...
- 跟我学SharePoint 2013视频培训课程——理解SharePoint网站的体系结构(3)
课程简介 第三天,理解SharePoint 2013 网站的体系结构 视频 SharePoint 2013 交流群 41032413
- 由ES规范学JavaScript(二):深入理解“连等赋值”问题
var foo={rzx:1} var bar =foo; foo.x=foo={rzx:100} console.log(foo.x) console.log(bar.x) 有这样一个热门问题: ...
- 跟哥一起学python(3)- 理解“变量”
我们把前面的程序稍微改一下,来了解python中的变量. # file: ./4/4_1.py # 定义变量 hello_str = "hello, world!" # 字符串打印 ...
- RabbitMQ入门,我是动了心的
人一辈子最值得炫耀的不应该是你的财富有多少(虽然这话说得有点违心,呵呵),而是你的学习能力.技术更新迭代的速度非常快,那作为程序员,我们就应该拥有一颗拥抱变化的心,积极地跟进. 在 RabbitMQ ...
- 第一份开发工作,边学边做android
我刚刚毕业,在培训学校学的Java web开发,虽然学的没有大学生那么丰富细致,没有他们理论基础扎实,但是这是我学习软件开发的唯一方式了. 从小学我学习就是倒数2.3等,所有人都认为我是个没法学习的孩 ...
随机推荐
- pytorch官网上两个例程
caffe用起来太笨重了,最近转到pytorch,用起来实在不要太方便,上手也非常快,这里贴一下pytorch官网上的两个小例程,掌握一下它的用法: 例程一:利用nn 这个module构建网络,实现 ...
- 【vim】删除标记内部的文字 di[标记]
当我开始使用 Vim 时,一件我总是想很方便做的事情是如何轻松的删除方括号或圆括号里的内容.转到开始的标记,然后使用下面的语法: di[标记] 比如,把光标放在开始的圆括号上,使用下面的命令来删除圆括 ...
- aiohttp分流处理
# -*- coding: utf-8 -*- # @Time : 2018/12/26 9:55 PM # @Author : cxa # @Software: PyCharm import asy ...
- 关于素数:求不超过n的素数,素数的判定(Miller Rabin 测试)
关于素数的基本介绍请参考百度百科here和维基百科here的介绍 首先介绍几条关于素数的基本定理: 定理1:如果n不是素数,则n至少有一个( 1, sqrt(n) ]范围内的的因子 定理2:如果n不是 ...
- Linux清除文件内容的几种方法
# 清空或删除大文件内容的五种方法: # 法一:通过重定向到 Null 来清空文件内容 $ >test.sh # 法二:使用 ‘true' 命令重定向来清空文件 $ true > test ...
- Cookie/Session机制详解(转载)
原文链接:http://blog.csdn.net/fangaoxin/article/details/6952954 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用 ...
- S5PV210 PWM定时器
第一节 S5PV210的PWM定时器S5PV210共有5个32bit的PWM定时器,其中定时器0.1.2.3有PWM功能,定时器4没有输出引脚.PWM定时器使用PCLK_PSYS作为时钟源,相关知识可 ...
- Ex 6_5棋子放置问题_第八次作业
题目貌似有问题 (b) 子问题定义: 设maxValue[i][j]为棋盘的前i行中最后一行为i时第i行按照第j种放置方式放置时得到的最大覆盖值,comp[i][j]为第i种放置方式与第j种放置方式是 ...
- Day5-----------------------系统监控
1.top 命令 查看终端信息 who 显示终端用户有哪些 bash 开启终端进程 PID:进程身份证 buffer:缓冲区 cache:高速缓存 进程:动起来的文件,CPU调用运行的过程 2.fre ...
- ES6 模块与 CommonJS 模块的差异
ES6 模块与 CommonJS 模块完全不同.它们有两个重大差异 CommonJS 输出是值的拷贝,即原来模块中的值改变不会影响已经加载的该值,ES6静态分析,动态引用,输出的是值的引用,值改变,引 ...