开环和闭环,控制工程常用的PID算法

《马斯克传》第47章的标题为“开环警告”。故事的背景是2018年7月,泰国青少年足球运动员在探索洞穴时被洪水围困,马斯克想逞一回英雄,蹭一蹭热点,他召集SpaceX和Boring Company的工程师,很快打造了一个类似吊舱的迷你潜艇,他认为可以把这个东西送进被水淹没的洞穴,救出这些男孩。

7月8日,马斯克向泰国救援队的一位领导核实情况,确保他正在打造的这种装备可以派上用场。当天晚些时候,马斯克带着7名工程师、迷你潜艇和一大堆设备,登上了他的私人飞机。晚上11点抵达泰国北部,泰国总理亲自迎接,总理还带上印有SpaceX的帽子。凌晨2点以后,马斯克和他的工程师带着头灯,涉过齐腰深的水域,进入了黑暗山洞。当时,水肺潜水员开展的救援行动也在同时进行,而且率先成功了,马斯克带去的迷你潜艇没有用上!

现场提供救援的63岁的英国洞穴探险家Vernon Unsworth接受CNN采访时说,他认为马斯克只是在作秀,他做的潜艇插不上手!

马斯克在推特上激烈回应Unswarth,并在没有任何证据的情况下,在帖子结尾写道:“对不起,你这个恋童癖者,你可真是自找的”。舆论哗然,特斯拉股价当日下跌3.5%。但马斯克不管不顾,他暗示,Unswarth是一个来自英国的单身白人老头,在泰国旅居了三四十年,主要在芭堤雅海滩活动。马斯克说:你不会去那边寻找洞穴,你只是为了寻找其他乐子,因为那一带以儿童性交易闻名。

马斯克在没有证据的情况下,一味凭着主观猜测以及类似阴谋论的暗示来抹黑Unswarth,给特斯拉的公司品牌声誉造成很大损失,引起了投资者的担忧。

马斯克的弟弟金博尔把马斯克的这场危机称作他处于一种“开环状态”。这是一个专业词汇,指的是一个物体或者系统没有可以为其提供指导的反馈机制,比如跟一枚制导导弹比起来,手枪的子弹就处于开环状态,因为子弹在发射后只能按设置好的规律飞行,而制导导弹在飞行的过程中可以根据目标离自身的距离不断调整自己的速度和方向。

金博尔说“每当我们有朋友进入开环状态,就意味着他们没有收到不断迭代、更新的反馈,他们似乎也并不怎么关心结果,这时我们会主动让其搞清楚现在到底怎么回事。”

金博尔这里说到的“开环状态”、“无反馈”、“迭代”等概念来自自动控制工程中的PID算法,中文对应的名称为“比例积分微分算法”。这是一个非常著名的算法,B站上有关于这个算法的很多讨论。生活场景中,比如“驱动机器人前进10米”,“开启空调将房间温度稳定在26°”以及“利用无人机的升力,将无人机向上升高到100米”等,都是控制工程问题。解决这样的工程问题,都要用到PID算法。

开环控制和闭环控制

举一个例子,假设我们需要控制一个机器人,让其沿着前进的方向前进10米,这样的控制程序应该怎么写呢?

最简单的方法就是驱动机器人前进,假设其前进速度为v,则机器人前进的时间为:

t=10/v

我们驱动机器人前进t秒即可。这种控制方式就是开环控制,因为机器人的输出,也就是机器人离目标的距离,并不会影响我们施加给机器人的动力。

图片加载中

使用开环控制对于精度要求不高的简单情况是可以的,但是如果机器人在前进的道路上方向发生偏离或者前进的路面上平坦度并不处处一致,则欲使机器人精确前进10米,实际上做不到。

在这种情况下,工程上采用的是一种闭环回路。这种情况下机器人的输入,或者说我们下达给机器人的指令不再是一个恒定的量,它会根据机器人的输出,也就是机器人的当前位置,或者机器人离目标位置的差距不断进行调整。

PID算法是闭环控制的一种,也是应用最广泛的一种。

PID算法描述

PID算法又称比例积分微分算法,是自动控制系统中广泛应用的一种控制策略。它的目的是根据期望设定值与实际测量值之间的误差来调节系统的输出。PID算法由比例控制、积分控制和导数控制三部分组成。

图片加载中

1.比例控制(P):

比例控制元件产生与电流误差成正比的输出。它将增益因子(Kp)应用于误差,其中输出被计算为增益和误差的乘积。

比例控制提高了系统的响应速度,减小了稳态误差。然而,如果单独使用,它可能导致超调和不稳定。

2.积分控制(I):

积分控制部分考虑随时间累积的误差。它计算误差的积分,并将其乘以增益因子(Ki)。

该组件有助于消除稳态误差,通过不断调整控制信号,以减少累积误差。在存在系统偏差或长期干扰的情况下,积分控制特别有效。

3.导数控制(D):

导数控制分量考虑误差的变化率。它计算误差的导数并将其乘以增益因子(Kd)。

导数控制有助于预测误差的未来趋势,有助于阻尼振荡,提高系统的稳定性和响应性。防止超调,缩短振荡时间。

PID算法的整体输出是比例控制分量、积分控制分量和导数控制分量之和:

输出= (Kp *误差)+ (Ki *误差积分)+ (Kd *误差导数)

增益(Kp, Ki, Kd)通常通过迭代来确定,以达到控制系统的期望性能。调整过程包括调整kp、ki、kd以优化系统稳定性、响应速度和精度。

PID控制过程模拟仿真

B站有一个视频讲解了用excel来模拟仿真PID算法(【PID控制】用EXCEL学习PID控制算法】https://www.bilibili.com/video/BV1kS4y1B7Uo?vd_source=258a2ac8fb55ab6ba496a663905f6196)。

让我们采用这个方法来模拟驱动机器人前进10米时,机器人位置随着时间变化的过程。

第一种是开环驱动情况,机器人每秒行进0.5米,第1秒开始,位置为0米。假设的是一种理想场景,前进过程中没有遇到风的阻力,而且机器行进的速度精确为0.5米每秒。

根据以上条件,机器人第2秒位置为0.5米,第3秒位置为1米,直到第20秒时,机器人的位置为9.5米。机器人的速度保持恒定,不会随着阻力以及自己与目标的位置而变化。

第二种是闭环控制的一种情形。假设机器人前进的过程中遇到了阻力,阻力的大小可以设置成不同的值。分成下面两种情形。

第一种情形我们模拟一种过冲和振荡情况,阻力设置为0.4米每秒。其中Kp参数为0.5,Ki参数为0.3,Kd参数为0.1。

图片加载中

Excel表格中,x表示机器人的当前位置,error表示机器人离目标的距离,积分为error的累加,微分为error的当前值减去上一个值,x'表示PID反馈量,比如x'4=$D$1*B4+$H$1*D4+E4*$J$1。x的下一个数值等于上一个数值加上反馈量再减去阻力,比如A4=A3+C3-$F$1,其中$F$1为阻力,也即是bug的值。

第二种情形我们模拟一种过冲和振荡都最小的情况。阻力设置为0.3,其中Kp参数为0.6,Ki参数为0.02,Kd参数为0.05。

通过模拟仿真可以得到下列结论:

  • 在开环状态下,改变阻力的大小,机器人最后的位置和遇到的阻力有关。阻力越大,机器人最后时刻离目标的偏差越大。
  • 在PID闭环控制时,任意改变阻力bug的大小,机器人都可以最后逼近目标。将目标值target改成任意数值,x系列数值(机器人位置)最后都可以逼近目标。
  • 在PID闭环控制时,不同的PID系数也就是kp、ki、kd的数值选择,将得到不同的x折线图。也就是说虽然x最后会逼近目标,但是经历的上冲和振荡直到最后稳定的过程是不一样的,达到稳态的时间不一样。微调三个参数的目标是保证x系列在逼近目标的过程中,过冲和振荡最小,进入稳态的时间最小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值