原文譯自“BetaFlight Filtering 101” by Oscar Liang
雖然網路上有很多針對 PID 調校的資訊,但是談到相關的濾波調校部分,卻令許多人感到難以理解。透過這篇文章,希望對濾波功能的基本觀念對大家做個介紹。
這篇文章的原作者是 SupaflyFPV.com 的 Steve Wright。
BetaFlight 原始的濾波設定一般來説是可以滿足多數的需求。但是,在一些特殊情況下,這些設定可能會產生一些問題。這時我們可以用一些技巧來解決這些狀況。
另外,因爲 Betaflight 必須安全的適用各種不同的機型,預設的濾波設定偏向保守。如果想要達到最好的飛行效能,通常需要減輕濾波設定。麻煩的是,即使針對特定的機型配置,我們也沒辦法百分之百確定降低濾波設定能提高飛行效能。所以,我們針對 SupaFPV 的機架,提供客制化的 PID 設定,來搭配我們建議的電裝配置。
透過這篇文章,你應該得到足夠的訊息來開始測試你的濾波設定。同時,也讓你瞭解到背後的技術原理,這是非常有用的。我希望你們能喜歡這篇濾波功能介紹文。
陀螺儀(Gyroscope)裏的微機電技術 (Micro Electro Mechanical System, MEMS)
多數的人只簡單的認爲陀螺儀是飛控裏的一顆能夠偵測到動作姿態的晶片。其實,這個 ”黑盒子“ 裏面包含了很多微小的電子機件 -- 這就是 ”微機電“ 這個名字的由來。
在這個SMT晶片裏包含很多微小的共振音叉(類似鋼琴調音時使用的調音叉)。這群音叉相對應於3個獨立的轉軸 pitch,roll 和 yaw。在轉動時,機械部分的微小移動會造成電極上小小的電壓變化
這個小小的電壓變化會形成類比訊號,這時我們可以透過取樣來轉換成飛控主晶片可以處理的數位訊號。所以,當我們説到 ”8k 陀螺儀“ 指的是在陀螺儀内以每秒鐘 8,000 次的頻率把電壓波形轉換成數位訊號,提供飛控及飛控韌體(BetaFlight)來做後續計算。
噪聲(Noise)
我們常常聽到噪聲這個名詞,卻不知道它的確實定義。一般説來,噪聲指的是我們耳朵聽到的聲學噪聲。當噪聲太大時就會影響到要聼到的聲音,我們就會說這個環境很吵雜。陀螺儀和 PID 控制器也會有同樣的問題。因爲陀螺儀和飛控所在的機架上同時也存在著四個高轉速馬達來驅動螺旋槳使機子能在空中快速的運動。在四軸機上,震動噪聲基本上可分成兩類:馬達震動噪聲和基本寬頻噪聲。
PID 控制器 (PID Controller)
在控制系統中,飛控韌體利用 PID 控制器(PID controller)來修正四軸機的位置姿態與控制杆位置 / 目標位置(Setpoint)的差異。PID 控制器中包含了一系列參數:P-,I-,和 D-term 都是我們熟知愛用的設定參數。要確保這個系統正常運行,首先必須輸入清晰且乾净的四軸飛行相關訊息。想象一下你會喜歡和一路尖叫的小孩加上生氣的父母親一起開車到倫敦嗎?太多的噪聲會混肴控制系統,引起很多的問題。例如不正常的震蕩或馬達發熱甚至燒毀。噪聲的控制對 PID 控制器中的 D-term 尤其重要。因爲這個部分是用來降低快速震動,可是 PID 控制器的微分計算(D-term)會大幅的放大噪聲訊號。如此一來,D-term 會嚴重的放大所有的陀螺儀噪聲。這就是爲什麽濾波要分成兩個部分:陀螺儀(gyro)濾波和 D-term 濾波。
濾波(Filtering)
濾波指的是我們將陀螺儀訊號中無用噪聲降低的程序。就像我們用濾紙過濾溶液來得到乾净的液體並把殘餘的髒東西留在濾紙上,濾波也一樣會把垃圾噪聲從陀螺儀訊號濾掉。問題是我們怎麽知道那一部分的訊號該留下來?那一部分該濾掉?四軸機的移動速度會在 0 到 30Hz 的範圍。30Hz 以上到 80Hz 的範圍有機體經過亂流時洗槳(propwash)產生的搖動。雖然我們說的頻率指的是 ”轉角的變化率“,我們還是可以簡單的想象成 1Hz 是每秒轉動一圈的速率。所以,對 PID 控制器來説,0 ~ 80 Hz 的頻率範圍包含了機子移動的訊息,我們最好把它們保留下來並盡可能的減少這個範圍的濾波或完全不濾波。
馬達噪聲帶 -- 噪聲頻率隨著油門位置升高而增加
上圖是利用 PID Toolbox 軟體(作者 Brian White)繪製的。可以看出頻率隨著馬達轉速增加而增加的 “馬達噪聲帶“ ,周圍還有一些寬頻噪聲散佈在其他頻率區域。
低通濾波器 (Low Pass Filters)
從上圖可以看出,陀螺儀的訊號涵蓋了 0Hz 到 1000Hz。可是我們有興趣的只是 0 ~ 80Hz 的範圍,因爲這個部分包含了 PID 控制器需要的機子移動的真實訊息。因此,我們需要一個濾波器把低頻訊號傳遞給 PID 控制器,同時抑制高頻雜訊。”低通“ 濾波器(Low-pass filter)正可以達到這個目的。利用低通濾波器來降低(或抑制)高頻訊號時,它的位置是由濾波曲綫轉彎點附近的 ”截止點 (Cutoff point)“ 來定義的。這個 ”截止頻率“ 就是你在飛控韌體(例如 BetaFlight 或 iNAV)中定義的數字(通常以 Hz 做單位)。在使用低通濾波器時有一個重要的觀念 -- 這個濾波器是慢慢的隨著頻率升高降低或抑制高頻訊號。雖然無法直接切掉高頻訊號,但是把截止頻率降低會更强烈的抑制高頻訊號。一個大家常犯的錯誤是當看到 200Hz 的噪聲時,直接的把低通濾波器設到 200Hz。這樣的設定無法去除這個噪聲,因爲它只降低了 200Hz 以上的訊號,卻沒有改變我們需要抑制的噪聲。所以,如果你發現一個 200Hz 的噪聲,你必須把低通濾波器設得比 200Hz 低。根據噪聲嚴重的程度和你想抑制的强度,截至頻率也許會低到 80Hz。
關於低通濾波的一個基本的觀念:截止頻率越低,你的濾波效果越强烈。
至於爲什麽不把低通濾波器的曲綫設計的非常陡峭,把 80Hz 以上的訊號直接濾掉呢?其實越强烈的濾波會對資料傳遞造成越嚴重的遲滯或延遲現象。在現實世界中,我們必須在降噪和遲滯之間取得平衡。雖然濾波造成的延遲是毫秒(ms)等級的,并不會對影響我們操控搖桿的感覺,它會降低 PID 控制系統控制機子的效率。這是因爲當延遲現象嚴重時,PID 控制器作出反應時的已經是過去很久的情況了。
低通濾波器的種類
在 BetaFlight 裏有兩種不同的濾波器 -- PT1 和 Biquad (雙二階濾波器)。在 FlightOne(前身是 RaceFlight)中,PT1 被稱爲 ”frequency“ 濾波器而 biquad 使用一樣的名稱。
PT1 是比較平緩的曲綫(一般稱爲一階 first order 或單極 single pole)。因爲它的延遲比較小,效能比較高,可是它的濾波能力不及 biquad。Biquad 濾波器的曲綫比較陡峭,所以濾波效果強,但是延遲效應也比較嚴重。飛控韌體一般會同時使用兩種濾波器的組合。你可以使用 PT1 濾波器,而在需要較强濾波效果的時候,改使用 biquad 濾波器。
上圖是 BetaFlight Configurator 中的低通濾波器設定部分(PID 調整區的部分),圖中也畫出了根據 UAV Tech ‘Filter Calc’ (作者 Mark Spatz)根據濾波器設定計算出的濾波曲綫,並表示出了相關訊息。
帶阻濾波器(Notch Filters)
另一種飛控韌體常用的濾波器就是帶阻濾波器。就像名稱所指的,它是一條凹陷曲綫,會把訊號挖掉一個坑。這種濾波器的中心點要設在噪聲峰的最高點 -- 因爲這個濾波器就是用來挖掉這個位置的訊號。在早期,我們會根據黑盒子(blackbox)分析結果,把一個靜態帶阻濾波器(static notch filter)設到噪聲峰的極大位置因爲這個噪聲一直固定在相同的位置。
然而,從 BetaFlight 3.1 起,Configurator 增加了一個動態帶阻濾波器的選項 ”Dynamic Filter“。這個高效率的帶阻濾波器會根據油門值來預測馬達噪聲頻率的升降。Dynamic Filter 目前在新版 BetaFlight 預設都是打開的。
帶阻濾波器的優點是即使設定在中心頻率强烈濾波的狀況下(可以從濾波曲綫凹陷深度看出來),延遲效應還是小於低通濾波器。所以帶阻濾波器是一個非常有效率的減噪方案。事實上,動態帶阻濾波器的效果好到我的 Supafly 可以完全不用低通濾波器來大幅增加機子效能。
D-term 濾波器
如同前面所説的,在 PID 控制器中 D-term 計算會大幅的放大陀螺儀訊號噪聲,而直接把沒有經過濾波的 D-term 輸到馬達輸出會很快的引起溫度升高,甚至可能燒毀。
上圖是利用 PID Toolbox 畫出在 D-term 下的頻譜圖,這裏可以看到噪聲被放大的情況。從左側的頻譜圖可以看出在陀螺儀噪聲被明顯的放大了,這正是我們必須使用濾波器的原因。從右側的頻譜圖可以看出來在 D-term 濾波之後,0 ~ 80Hz 的訊號幾乎沒有什麽改變,但是高頻噪聲幾乎完全被低通濾波器濾掉了。對 D-term 濾波會影響你用來調機的 D 增益值(D gain -- 在 BetaFlight configurator PID 頁面中的 D 參數)。至於到底應該使用較少的濾波搭配低 D 增益值,還是加强的濾波搭配高 D 增益值來降低洗槳現象,大家還存在著爭議。不過我的經驗是這些設定都需要找到一個平衡點。可以確定的是,太大的 D 增益且濾波不足會導致馬達變熱甚至燒毀。一般説來,如果你有馬達變熱的問題時,使用 100Hz 或低至 80Hz 的 biquad 濾波器是合理的最低濾波設定。
現實世界裏的濾波應用
現在,我們來看幾個真實世界發生的情況和濾波如何幫助解決問題。
馬達變熱
一般而言,馬達溫度略微升高是可以接受的。不過,如果變得太燙而難以觸摸就不正常了。馬達發燙可能是因爲馬達嘗試快速的修正大量的噪聲而變熱。造成這個現象的原因有很多可能,例如受到撞擊,沒有平衡或老化的馬達。雖然平穩的而且乾净的機械配置是解決問題的終極方案,濾波能在你花錢更新裝備前暫時解決問題。考慮 D-term 計算會嚴重的發達噪聲,我建議從 D-term 濾波開始調整,最簡單的調整方法是以每次 20Hz 的間隔慢慢調低 D-term 低頻濾波器的截止頻率。 因爲你必須避免降到80Hz以下,如果你的起始設定有兩個 D-term 濾波器,一旦其中一個降到了 100Hz 的範圍,你可以開始以 20Hz 的間隔降低另一個頻率比較高的濾波器。每次調整之後,可以利用停懸飛行來測試馬達溫度。如果其中一個濾波器設定在 PT1,你也可以把它調整成 biquad 來增加濾波效果。雖然我們偏好乾净無震動的機子來減少濾波的動作,適當增加濾波並不會對機子效能產生巨大的影響。如果我們的目標是在不更新零件的條件下繼續飛行,不必過度擔心改善問題時加入太多的濾波效果。
馬達振蕩(Motor Oscillations)
正常情況下馬達的運行應該是平穩的。如果馬達發出類似抖音的音調,或是機子不正常的震動或抖動,你可能處在振蕩 “Oscillation” 的狀況。發生這種情況時,PID 控制系統產生了正回饋,造成機子來回高頻振蕩。這個現象源起于 PID 的調適過程。我們常常發現,很多人在沒有完全瞭解 P或 D term 的效應就因爲調機是重要的工作而急著調機,這樣的做法很容易造成振蕩現象。所以,首先你必須確認你沒有把這些調適參數增加到超過合理的範圍。要確認這個振蕩是否源自 PID 調適,最快的方法就是把參數重置到原始預設值。如果在重置設定之後,振蕩現象仍然存在,這就可能是舊的/受損的馬達震動(機械噪聲)或是來自不良電變的電子噪聲(電子噪聲)。通常我會建議使用低等價串聯電阻電容(low ESR capacitor) 來提高電路的穩定性。可是,你也可以利用飛控韌體中的濾波功能來減輕馬達震動對 PID 控制器的影響。這時你可以透過以 20Hz 的間隔降低低通濾波器設定(但不低於 80Hz)來加强陀螺儀的濾波。這個調整可能同時會幫助減輕 D-term 的濾波,所以我建議先降低陀螺儀濾波頻率,再調整 D-term 濾波頻率,如果必要,可以降至 80Hz。如果你已經把低通濾波器降到了 80Hz 卻沒有感到什麽變化,你可以把濾波器設定改爲 biquad。在此有個地方要特別注意:如果機子有油門中點振蕩(mid throttle oscillation)的情況,要確定飛控板沒有被什麽東西壓住或受到應力限制。
降低濾波設定來增加飛行效能(Reducing Filtering for Performance)
在 BetaFlight 裏,因爲降低了延遲現象,降低濾波能增加飛行效能。我也同時發現,降低濾波可以提高飛行操控感度。增加濾波會使搖桿反應變得生硬,飛行時也比較不流暢。事實上我相信在測試飛控韌體時,保守的 PID 設定可以照顧到大多數習慣不同的用戶。相較於其他飛控韌體,BetaFlight 的保守預設包含了强烈的濾波是有道理的,因爲他必須照顧到遠多於使用其他飛控韌體的用戶(大約有 250,000 用戶)並考慮到機子的設定之間有著巨大的分歧。BetaFlight 的動態帶阻濾波器(Dynamic Notch Filter)是非常有效率的。事實上,在多數的情況下,BetaFlight 的預設濾波是可以降低的。降低的方法可能包括移除低通濾波器而只留下一個 PT1 或甚至完全沒有陀螺儀低通濾波,再加上 D-term 上的兩個 PT1 濾波器或是一個 biquad 濾波器。然而,降低濾波的過程要非常小心因爲它可能引起馬達變熱或燒毀。過程中,應該先做停懸測試,然後確認馬達是否變熱。如果你快速降低濾波時,特別注意馬達有沒有發出不正常的磨擦音或是共振音。如果你想體驗調教過的高效能飛行但不想冒這個險,你可以嘗試 Supafly 的機子。這個建議是基於我們得到客戶在網路上的多數反饋意見表示對於手感和效能在適當的調教和濾波之後的結果。我個人感覺調教良好的機子不該只限於有多年飛行經驗並瞭解調教方法的飛手才能擁有。我認爲比起直接使用預設設定,這樣更有自信,飛得更好,更能享受這項興趣,所以我特別希望能幫助其他人體驗好的機子。爲了要達到這個目的,我自己設計機架並推薦配置和調教參數來達到最好的效能。可是我仍然希望這篇文章介紹的基本概念可以鼓勵更多的人嘗試優化各種飛控中的濾波功能。
結論
在這篇文章中,我們介紹了濾波的基本概念。我們學習了陀螺儀產生的各種噪聲,以及用不同的濾波器來控制噪聲產生的不良後果。這些是基本的概念,在下一篇文章中,我們會來探討最新的 BetaFlight 4 的濾波器發展以及如何善加利用這些新功能。希望這篇文章能對你有幫助並吸收到新知。謝謝。

實在是太精闢了