2014-01-13 94 views
4

語境四軸PID控制器

我的任務是設計和建造的速度PID控制器的微四軸比蒼蠅室內。 Quadcopter飛行的房間配備了基於攝像頭的高精度室內跟蹤系統,可以爲四軸飛行器提供速度和位置數據。最終的系統應該能夠接受每個軸(x,y,z)的目標速度並以該速度驅動四軸飛行器。

四軸飛行器的控制輸入是高度的滾轉/俯仰/偏航角度和推力百分比。

我的想法是爲每個軸實現一個PID控制器,其中SP是該方向上所需的速度,測量值是跟蹤系統提供的速度,輸出值是滾轉/俯仰/偏航角,以及分別推力百分比。

不幸的是,因爲這是我第一次接觸控制理論,我不確定我是否正朝着正確的方向前進。

問題

  • 我瞭解基本的PID控制器原理,但它仍然是 我不清楚它如何能速度(米/秒)轉換成滾動/俯仰/偏航 (弧度)通過只求和誤差並乘以常數? 是的,速度和滾轉/俯仰直接成正比,所以它是否意味着通過乘以正確的常數得到正確的 結果?

  • 對於垂直速度控制器的情況,如果速度設置爲0,則四軸飛行器實際上應該保持其高度而不上升或下降。如何將其與PID控制器集成在一起,以便在誤差實際爲0時推力值不爲0(應保持懸停,不會下降)?我應該爲輸出添加一個常數項嗎?

  • 一旦系統已經實現,在調整PID增益參數時有什麼好方法 ?手動試錯?

  • 在系統的開發中的下一個步驟是,所測量的位置由室內 跟蹤條件是取作爲設定點的期望 位置的位置PID控制器(X,Y,Z)的附加層 系統和輸出是x/y/z速度。這是一個好方法嗎? 這些PID控制層分離的原因是該項目是促進可重用性的更大框架的一部分。使用直接將位置座標作爲設定值並輸出滾動/俯仰/偏航/推力值的單層PID控制器會更好嗎?

回答

1
  • 這就是基本思想。理論上你可以用系統中的幾個常量來轉換一個單位。在你的情況下,你的P,I,D常量將隱式包含正確的轉換因子。例如,如果在理想化的系統中,您希望通過P = 0.5度的反饋來控制角度,那麼您可以使用的所有速度都是速度,並且您知道5度傾斜度爲1米/秒,那麼您會編程P控制器將測得的速度乘以0.1,結果將成爲角度的控制輸入。
  • 我認爲最好的方法是實現一個SISO PID控制器,不是以高度(h)爲單位,而是以推力百分比作爲輸出的垂直速度(dh/dt),但我不確定這一點。
  • 不幸的是,如果您對參數沒有預先的瞭解,那將是唯一的出路。我建議,如果四軸崩潰,不會做太大的傷害這聽起來是個不錯的路要走
+3

經過相當多的試驗和錯誤的工作。 [YouTube的結果視頻](https://www.youtube.com/watch?v=kC0z7a7aisg) – xabre

1

我的博客可能是你的興趣:http://oskit.se/quadcopter-control-and-how-to-really-implement-it/

的基本原理是很容易理解。調音比較困難。我花了很多時間才能真正弄清楚什麼要輸入到PID控制器中,以及諸如+和 - 變量符號之類的小事情。但最終我解決了這些問題。

測試PID控制器的最佳方法是有一些方法來動態設置您的值,以便您不必每次重新編譯固件。我在我工作的quadcopter固件中使用mavlink。通過mavlink,可以使用任何支持mavlink協議的地面控制軟件輕鬆配置直升機。

從小處開始,使用現成的控制器構建工作直升機,然後編寫自己的控制器。然後測試它並調整它並進行試驗。除非你自己試着製造一個直升機,否則你永遠不會真正瞭解PID控制器。我的裸機軟件開發庫可以幫助您輕鬆編寫軟件,而無需擔心硬件驅動程序的實施。鏈接:https://github.com/mkschreder/martink