当PID算法遇上VEX机器人(一)

pid算法

pid的英文全称为Proportion Integration Differentiation,它是一个数学物理术语,即由比例单元(P)、积分单元(I)和微分单元(D)组成。其输入e (t)(设定值和实际值的差)与输出u (t)(比如功率值)的关系为

u(t)=Kp{e(t)+1/Ti∫e(t)dt+Td*d[e(t)]/dt} 式中积分的上下限分别是0和t 

1. 比例系数 Kp 的作用是加快系统的响应速度,提高系统的调节精度。Kp 越大,系统的响应速度越快,系统的调节精度越高,但是Kp过大(超调)会使系统不稳定。Kp 取值过小,则会使响应速度变慢,降低调节精度,从而延长调节时间,使得系统静态、动态特性变差;

2. 积分系数 Ki 的作用是消除系统的静态误差(过去的状态)。Ki 越大,使得公式中的积分项趋于0的速度越快,静态误差越小;若 Ki 过小,将使系统静态误差难以消除,影响系统的调节精度;

3. 微分系数 Kd 的作用是改善系统的动态特性(以后的状态),其作用主要是在响应过程中抑制偏差向任何方向的变化,对偏差变化进行提前预报。(关于积分、微分为什么会有这样的作用可以自己去研究积分、微分的作用功能)

讲了这么多,大家是不是对pid是什么还是不太了解呢,pid到底是一个什么东西呢。别着急,举一个非常生动形象的例子来帮助大家理解它。

现在你接到一个任务,要求你把水缸中水的温度保持在70度(允许存在些许的偏差),水缸里面有温度传感器、温度加热器和温度冷却器。根据温度传感器反馈回来的数值,我们就能够做出判读并采取行动。 

如果水的温度小于70度,那么我就给水加热;如果水的温度大于70度,那么我就给水降温。(70度是我们设定的值,温度传感器得到的值是我们得到的实际值,它们两者的差值就是我们上面公式中的e(t),为了让水温能够尽快的达到我们的要求,就需要给温度加热器/温度冷却器提供一个极大的功率(即上面公式中的u(t)),根据这两个值,我们就能够得到Kp的值) 

但是由于当水的温度达到70度的时候,虽然温度加热器停止了工作,但是温度加热器的余温还在继续给水加热,余温就有可能使得水温达到80度左右。也就是说,只根据上面的判断方式来进行操作,最终我们无法精确做到使水的温度一直保持在70度上下。要想达到70度,我们就需要提前停止加热/降温,那么要提前多久呢,这就需要我们对过去的情况和以后的趋势进行总结来得出。也就是上面公式中的积分过程(对过去)和微分过程(对未来)。

pid算法实现vex“不倒翁”机器人

如果读者看完上面的那个例子之后,对pid的功能还存在一些疑惑的话,没关系,下面我带着大家用pid算法来做一个具体的项目,相信看完之后大家应该就能够理解了。想要用代码来实现“不倒翁”的功能,首先我们的明白其中的原理,再将其翻译成代码。所以我先给大家介绍一下我们的机器人,铛铛铛,如下所示,就是我们帅气的“不倒翁”先生了。它的功能主要由两个电机、两个橡胶轮和一个陀螺仪组成来实现的。


不倒翁机器人

其实原理很简单,要想让两个轮子的机器人保持站立的状态,我们需要有一个参考角度(由陀螺仪来给出,假设为0),如果机器人往前倾斜了(陀螺仪的值大于0),那我们就应该使机器人的轮子往前滚,来保持平衡;如果机器人往后了(陀螺仪的值小于0),那我们就应该使机器人的轮子往后滚,来保持平衡。从机器人的角度来考虑如何实现上面的过程,就是根据实际得到的陀螺仪的数据-设定的参考值得到差值e(t),接着主控将Kp*e(t)(也就是公式中的u(t))的值作为输出的功率传达给电机,电机开始转动,带动轮子转来保持平衡。在理想的环境下,按照上述的方式进行操作理应就能够实现平衡,但是由于车有惯性,一下可能就过调了(Kp值过大),直接倒了。这时,就需要对以前所有的误差进行处理,通过积分系数来减小误差,来消除系统的静态误差。除此之外,我们还应该对误差的变化率进行处理(对误差的走向进行预测),也就是对误差进行求导处理,以此来改善系统的动态特性。

----------由于篇幅受限,我将在下一篇中来讲解程序是如何实现。   

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容