編輯導語:PID控制算法應該是比較常見和廣泛應用的一個算法了,常用于無人機、平衡車等,進行速度、狀态的控制;本文作者分享了關于自動控制算法PID的原理和用途,我們一起來看一下。
生活中的一些小電器,無人機的飛行姿态和飛行速度控制等等,都應用到 PID——PID 控制在自動控制原理中是一套比較經典的算法。
我們常見到這類設備,隻不過沒有留心或者發現了沒有深入探究以及主動搜索一下其中的原理而已。
為什麼說産品經理需要保持強烈的好奇心?發現生活、身邊的美,探究一下為我所用。
比如我們家裡的恒溫熱水器、小米的平衡車,我們常常說的自動駕駛、無人機、掃地機、大火的服務機器人等等産品上有廣泛的應用。
不管你學沒學過控制理論,隻要涉及到機電一體化系統,一定會接觸到 PID 控制算法。
為什麼需要 PID 控制器呢?
你一定用過恒溫熱水壺,你想讓熱水壺的水保持在一個恒定的溫度,回到家拿起來就喝,不需要慢慢等水燒開再等到水冷卻到适合咕咚咕咚喝的溫度。
這時候就需要一種算法先将水溫加熱到目标位置附近,能夠“預見”這個水溫的變化趨勢,然後還能根據各種環境影響因素造成誤差去調節以維持設定目标。
當然,熱水壺不需要那麼高的精确度,可能隻用 PD 就搞定了。
那,比如自動駕駛中控制汽車維持在某個設定的速度行駛,或将汽車保持在一個固定車道内行駛,這就需要非常精準。
這下你知道 PID 到底是個什麼東東了吧!
接下來,我們了解一下他的原理。
一、什麼是 PID及其原理1. 什麼是 PID
PID,即比例 Proportion、積分 Integral 和微分 Derivative 三個單詞的縮寫;比例積分微分控制,簡稱PID控制。
簡單講,根據給定值和實際輸出值構成控制偏差,将偏差按比例、積分和微分通過線性組合構成控制量,對被控對象進行控制。
常規 PID 控制器作為一種線性控制器。
2. PID 原理
常規的 PID 控制原理圖:
系統由 PID 控制器和被控對象(常常是執行機構,如電機等)組成。
現在知道了 PID 控制器是怎麼工作的,那麼為什麼需要比例、積分、微分三個環節呢?具體有什麼作用呢?
- 比例環節:當被控制對象現狀與目标有差距的時候,控制器就産生一個控制使得被控制對象向目标靠近。所以這是根據目标差距進行一個有比例的調節。
- 微分環節:當被控制對象越來越接近目标的時候,當然不能按照比例調節的給定量去執行。所以引入一個對未來趨勢的判斷給定量。
- 積分環節:當比例和微分環節控制達到預設目标時,對一段時間内的靜态誤差進行糾偏。
從時間的角度講,比例作用是針對系統當前誤差進行控制,積分作用則針對系統誤差的曆史,而微分作用則反映了系統誤差的變化趨勢,這三者的組合是“過去、現在、未來”的完美結合。
引述百度的标準解釋:
- 比例環節:即時成比例地反應控制系統的偏差信号e(t),偏差一旦産生,控制器立即産生控制作用以減小誤差。當偏差e=0時,控制作用也為0;因此,比例控制是基于偏差進行調節的,即有差調節。
- 積分環節:能對誤差進行記憶,主要用于消除靜态差,提高系統的無差度,積分作用的強弱取決于積分時間常數Ti,Ti越大,積分作用越弱,反之則越強。
- 微分環節:能反映偏差信号的變化趨勢(變化速率),并能在偏差信号值變得太大之前,在系統中引入一個有效的早期修正信号,從而加快系統的動作速度,減小調節時間。
例子稍微極端一點兒,假設你在高速公路上想跟着你前面的車 100 米的距離跑,并且假設你前面的車是自動駕駛的定速巡航。
這時,你把三個環節想象成你自己=比例,你另外的兩個兄弟,一個是微分,一個是積分。
現在你們倆的車相距 300m,你一腳油門下去,車子急加速開始逼近目标。
你的車慢慢靠近 100m 這個目标。
這時,你的兄弟「微分」說:“兄弟,慢點慢點!!快要接近了”。這就是微分的作用,對未來的判斷和控制。
你肯定不會一次性就将這個跟車距離調整好了。可能你一會兒小于 100m ,一會兒你又大于 100m 跟蹤距離。
就這樣你跟你兄弟這樣來來回回的調整,終于将跟車距離調整在 100m 左右這樣的距離(比較極端哈,人為是不可能做到的)。
可是路上有坑窪呀、有風阻、還有上坡這樣的環境幹擾因素。
這時,你那個好久沒說話的兄弟「積分」起作用了,他一直在監視你這段平穩駕駛(100m 跟車的穩定狀态)狀态的誤差,然後進行計算,告訴你給多少油門。
至此,我想應該對 PID 有了初步的認識。
接下來通過一個稍微詳細點兒的例子了解一下 PID 三個環節是如何工作的。
二、PID 三個環節如何工作我們就用比較火熱的自動駕駛來簡單舉例,那自動駕駛很直觀的就有兩個應用,一個是保持固定的車道行駛,一個就是保持固定的速度行駛。
保持固定的車道就是控制方向盤,保持固定速度就是控制油門;這兩個都比較直觀,我們就用固定速度(定速巡航)來簡單舉例。
定速巡航也是非常成熟的技術了,在很多中低端車型上已經成了标配。
1. 我們先講 P——比例調節
現在我們想讓我們的車在高速公路上保持 100km/h 的速度行駛,當前速度是 40km/h。
想要到達 100km/h 有三種執行方式:
- 猛踩油門,車速快速提升,以最快的速度接近 100km/h;
- 溫和的踩油門,車速中等,以溫和的速度接近 100km/h;
- 緩慢的踩油門,車速較慢,以較慢的速度接近 100km/h。
分别對應的 P 值是:較大、中等、較小。
直觀的反應對比如圖:
從圖中可以看出:
- 當 P 值較大時,車輛以更快的速度和最短的時間達到 100km/h;
- 當 P 值中等時,車輛相對于 P 值較大時,反應相對慢點兒,也就是以相對較慢和更長一點兒的時間到達 100km/h;
- 當 P 值較小時,車輛的反應速度就更慢,到達 100km/h 所耗費的時間也更長。
說到這兒你可能就明白了。
車輛的反應速度和耗費時間的長短取決于 P 值的大小——也就是 P 值越大,車輛反應越快,耗時越短。
P 值大,雖然反應快,但是反應劇烈,類似于猛加速,坐在汽車裡有強烈的推背感;相應的當靠近目标的時候,由于慣性容易沖過頭,并且為了抑制過大沖過頭就需要猛烈的踩刹車,乘坐的人就身體向前傾。
另外由于慣性比較大的原因,車輛需要更長的時間才能調整到恒定 100km/h 的速度,因為車輛需要較長的時間來調整震蕩。
這樣的乘坐體驗就不是很好,這就需要我們設置一個合理的 P 值,車輛的反應不那麼劇烈,反應時間你也能夠接受。
類似于你開汽車,你用 S 檔(有的叫運動檔,有的叫超車檔)超車,較大的功率輸出,較快的提速,然後切換到 D 檔(行車檔)維持;你可以感受一下,同樣的油門,S 檔與 D 檔的反應不一樣,P 值設置不一樣。
好了,既然有了 P 為什麼還需要 D 呢?
人類的欲望是無止盡的,總希望越多越好,越快越好(前提是付出的越少越好)。
這時就引入一個 D ,反應速度再快一點兒,但是反應又不那麼劇烈;也就是在中等的 P 值前提下,比隻有 P 的情況下更快的到達 100 的速度(用時更少),但是車輛又不劇烈的震蕩(比沒有 D 的時候更溫和)。
2. D——微分調節
為了不讓車輛速度沖過頭,我們再給他一個反向的減速度。就是讓車輛在越接近 100 的時候,車速解決 100 的速度越慢;與 100km/h 差距越大的時候,接近速度越快。
注意,這個速度不是車輛的行駛速度,是達到目标速度 100 的時間長短。
這點兒可能不太容易理解,這個相當于你車速已經到了 90km/h,為了防止過沖,這時候你開始松油門,松的比較快;當到達 95km/h 的時候,你油門松的就比較慢。
D 值的設置也有三種情況:
- D 值較大,到達目标速度的時間就比較長;
- D 值較小,會産生震蕩,車速會在 100 上下波動,緩慢的進入 100 的車速維持;
- D 值合适,車速較快達到 100,并且不會震動。
直觀的反應對比圖:
P 值不變的前提下 D 值影響的變化表現。
D 值太大了,減速度就大了,也可以理解為靠近目标速度 100 的阻力大。那這樣達到目标耗費的時間就較長。
D 值太小了,雖然能夠較快的達到目标,但是 D 值對 P 的影響力不夠,容易過沖,并且需要經過多次調整才能進入穩定狀态。
在 P 和 D 的相互作用,調節控制下,最終得到的理想狀态是這樣的。
既能在較快時間内達到目标,又不會使得反應劇烈造成不适感。
有了 P 和 D 是不是很完美了呢?貌似很完美,但是我們希望更加完美就需要引入一個 I 進入。
3. I——積分調節
有了 P 和 D 貌似已經很完美了,但是這個世界是不穩定的,沒有一直保持不變的狀态,正如那句話“一切都不在變化,唯一不變的隻有變化”。
你終于将你的車輛穩定在 100km/h 之後,但是依然有來個方面的影響因素,内在和外在。
内在的是,你車輛的燃油效率是在變化的,外在的是風阻、路面狀态(比如摩擦比、平整度、微小的坡度等)都在變化,這些幹擾因素都在影響你車輛的恒定目标速度。
所以,I (積分)就介入檢測過去一段時間内車速狀态,然後進行積分,适當的幫助 P 一把。
I 值設置也有三種情況:
- I 值過大,調整的力度太大了,容易造成過沖,需要幾次調整才能讓車速回歸正常,車輛會振蕩;
- I 值過小,調整的力度太小了,幫助 P 的作用不大,所以需要較長時間才能回到正常;
- I 值合适,給一個合适的力來幫助 P ,讓車速在一個合适的時間内回到目标值。
直觀的反應對比圖:
以上就是 PID 三環節的調節,使得被控制對象能夠達到一個穩定平衡的運行系統。
最後,用一個動圖,看看三者之間的關系。
三、PID 應用
其實我們在在日常生活中能看到很多産品都有 PID 的運用,但并不是都會将 PID 三個調節都用上。
不同的産品根據不同的使用環境,做相應的調整;P 是一定要用的,I 和 D 就是看系統響應速度,輸入震蕩程度等情況,根據實現效果和控制精度等進行相應的取舍。
當然,也有工程師工程技術能力的因素,以及怎麼設計的問題。
比如,很早以前,我用過一個某大牌的三軸手持雲台,我在沒有裝載手機的情況下開機,三軸開始亂轉,這就是設計的問題;在開機的時候,目标與現狀差距很大,這時候工程師讓 I 介入了,造成過沖,其實隻要将 I 進行分離設計就好。
再比如,平衡車很多的時候,很多廠家不明所以的就進入這個市場;最後進入市場的産品,一開機,平衡車前後劇烈振蕩,半天才進入平衡狀态,有的甚至一直不能進入平衡狀态,直到你強行扶着站上去才勉強能用。
這項技術雖然是已經發展幾十年的技術了,在工業和日常生活的小産品上有廣泛的應用。
産品經理雖然不需要深入的去了解技術,但是需要充分詳盡的了解使用場景,使用體驗,競争的目前狀況,幫助工程師進行産品設計。也需要根據實際情況做相應的取舍,因為成本也許需要考慮的重要因素。
作者:Arvinzhou,zf519678391;公衆号:面壁求知,ID:AIPM001)歡迎關注我!
本文由 @周較瘦 發布于人人都是産品經理。未經許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!