瘋殼AI開源無人機PID基礎

2021-10-06 06:35:43 字數 2302 閱讀 2667

pid控制是自動控制系統中最常用的一種控制手段,它的誕生主要是為了解決自動控制系統的快、穩、準的問題。

pid控制中的p指的是proportion(比例),即對輸入的偏差乘以乙個係數;i指的是integral(積分),即對輸入偏差進行積分運算;而d指的是derivative(微分),即對輸入偏差進行微分運算。通過比例、積分、微分結合適當的反饋就可以形成一套穩定的閉環調節系統。如下圖所示為cocofly的pid控制器的結構圖。

其中期望角度(高度)由遙控器提供,角度環(高度環)以及角速度環(高速度環)由pid**處理,stm32輸出四路pwm到無人機的電機控制埠,imu(慣性測量單元)以及飛行姿態提供反饋值。

pid控制的過程,其實是不斷糾正偏差的過程,其中的偏差=當前被控物件的反饋值-設定的期望值。

這裡舉乙個比較簡單又經典的pid控制的例子,比如需要控制乙個機械人以pid的方式向前行走110步,然後停下來。此時這個110步則是設定的期望值。

如果按照p比例控制,也就是控制機械人按照一定的比例走,然後停下。比如比例係數為108,則走一次就走了108步,再走一次的話就超過110步了,所以就不走了。從這裡可得知p比例控制是一種最簡單的控制方式,控制器的輸出與輸入誤差訊號成比例關係。但是僅有比例控制時系統輸出存在穩態誤差。比如上面的只能走到108,或者超過108步,無論怎樣都走不到110。

為了消除穩態誤差,在控制器中必須引入「積分項i」。積分項對誤差的影響取決於時間的積分,隨著時間的增加,積分項會增大。這樣,即便誤差很小,積分項也會隨著時間的增加而加大,它推動控制器的輸出增大,從而使穩態誤差進一步減小,直到等於0。即在「積分項i」控制中,控制器的輸出與輸入誤差訊號成正比關係,且比例+積分(pi)控制器可以使系統在進入穩態後無穩態誤差。

也就是說,如果按照pi(比例、積分)控制的方式,則是控制機械人按照一定的步伐走到112步然後回頭接著走,走到108步位置時,然後又回頭向110步位置走。在110位置處來回晃蕩幾次,最後停在110步的位置。

微分項,主要用於預判誤差變化的趨勢從而作出對應的改變。在自動控制系統在克服誤差的調節過程中可能會出現振盪甚至失穩,原因是存在較大慣性元件(環節)或滯後元件,具有抑制誤差的作用,其變化總是落後於誤差的變化。解決的辦法是使抑制誤差作用的變化「超前」,即在誤差接近於零時,抑制誤差的作用就應該是零。這就是說,在控制器中僅引入「比例p」項往往是不夠的,比例項的作用僅是放大誤差的幅值,而目前需要增加的是「微分項」,它能**誤差變化的趨勢。這樣,具有比例+微分的控制器就能夠提前使抑制誤差的控制作用等於零,甚至為負值,從而避免了被控量的嚴重超調。所以對有較大慣性或滯後的被控物件,比例p+微分d(pd)控制器能改善系統在調節過程中的動態特性。

也就是說,如果按照pd比例、微分控制的方式,則為控制機械人按照一定的步伐走到一百零幾步後,再慢慢地走向110步的位置靠近,如果最後能精確停在110步的位置,就是無靜差控制;如果停在110步附近(如109步或111步位置),就是有靜差控制。由此得知在微分控制d中,控制器的輸出與輸入誤差訊號的微分(即誤差的變化率)成正比關係。

前面說到pid是為了解決自動控制系統中的快、穩、準的問題的。其中那麼他們之間的關係以及對應調節引數是什麼呢?如下表所示。

特性概述

關聯的引數

快速性系統對動態響應的要求,由響應時間的長短來衡量。

p和d可以提高響應速度,i降低響應速度。

穩定性在平衡狀態下,系統受到某個干擾後,經過一段時間其被控量可以達到某一穩定狀態。

p和i降低系統穩定性,d提高系統穩定性。

準確性系統處於穩態時,其穩態誤差。

p和i提高穩態精度,d無作用

在飛控系統中pid是極為重要的一環,在cocofly飛控系統中也多處應用到了pid主要集中在altctrl.c、ctrl.c中。如下圖所示為高度環pid控制原始碼。

如下圖所示為高度速度環pid控制原始碼。

如下圖所示為角度環pid控制原始碼。

如下圖所示為角速率環pid控制原始碼。

瘋殼AI開源無人機串列埠(基礎收發)

在嵌入式開發領域講的串列埠通常指的是uart,uart即為通用非同步收發傳輸器 universal asynchronous receiver transmitter 是一種通用序列資料匯流排,用於非同步通訊。該匯流排雙向通訊,可以實現全雙工傳輸和接收。uart常常用於兩個微控制器之間進行資料傳輸,...

瘋殼AI開源無人機PWM(電機控制)

脈衝寬度調製 pwm 是英文 pulse width modulation 的縮寫,簡稱脈寬調變,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量 通訊到功率控制與變換的許多領域中。pwm在生活中非常的常見,小到呼吸燈的閃爍,達到航天飛船都會應用到pwm技術。pwm...

瘋殼AI開源無人機串列埠(視覺資料獲取)

openmv是乙個開源 低成本 功能強大的機器視覺模組。以stm32f767為核心,整合了ov7725攝像頭晶元,在小巧的硬體模組上,用c語言高效地實現了核心機器視覺演算法,提供python程式設計介面。開發者 電子發燒友以及智慧型裝置開發商都可以用python語言使用openmv提供的機器視覺功能...