[飛控]從零開始建模(四)-一個簡單的模型

使用MATLAB搭建模型

通過之前的三篇文章
從零開始建模(一)-牛頓歐拉方程
從零開始建模(二)-姿態更新
從零開始建模(三)-控制分配淺析

我們已經對建模的過程有了一定的瞭解,相信小夥伴們都已經躍躍欲試了,那就讓我們開始吧。

我們來簡單的實現一個飛行器的高度控制吧。
1.將期望高度和實際高度做差
2.誤差進入控制器得到輸出
3.輸出分配到執行機構(電機)
4.電機產生力
5.模型根據受到的力,得到當前的狀態包括實際高度

 

按照這個步驟我們就可以搭建一個閉環的控制系統了。(熟悉一下這個步驟,這是個通用的步驟哦)

 

少廢話,先看東西!

運行POSHOLD文件,可以看到一個動畫過程,顯示飛機在空間中的位置,同時四個長條表示飛機受到的力的大小,這樣可以很直觀的觀察飛機的動態。(我這樣的新手就愛看動畫)

 

然後是位置控制結果,很快就到達期望位置(0,0,3),沒有超調。(我的參數調的還可以吧)

 

速度環的控制過程

 

加速度環的控制過程

 

關於控制器

我也只用過PID,沒有用過其他控制器。
PID的好處就是簡單高效,給我一個誤差,還你一個期望。(來個動圖感受下)

 

我使用的控制器是模仿APM的z軸控制器函數
AC_PosControl::run_z_controller()

簡單介紹一下。(做了一點修改去掉了懸停油門,就是單純的PID)

位置誤差乘kp 得到速度期望。
速度誤差乘kp 得到加速度期望。
加速度誤差經過PID得到佔空比。

串級PID外環輸出會變成內環的期望,簡單的可以理解爲當你的週期是固定的,那麼1/dt也是個定值,誤差/dt就是微分,位置的微分就是速度,所以這裏kp=1/dt。

PID的輸出有什麼單位嗎?有什麼物理意義嗎?
沒有單位,這裏之所以說輸出是佔空比,因爲我們想控制電機,所以我們期望他是佔空比,所以我們在調參的時候要讓輸出有佔空比的性質,所以PID參數要使得輸出在0-1之間變化才合適。

如果我們想控制的輸出直接就是轉速(省略電機模型),那也可以,那麼你就的讓你的輸出像是個電機轉速(假設最高2000轉),所以你的PID參數得讓輸出在0-2000之間變化。

所以控制器其實是個很隨意的東西,有什麼物理意義是取決於你怎麼用,所以大膽用,勤思考,控制器沒啥大不了。

建模有沒有用

如果你問我,這個模型是不是可以直接代替實物?我在仿真裏調參直接就可以用?

抱歉,不行。

那這種理想化的模型有沒有用呢?
我用這個模型知道了爲什麼串級PID外環只有P。
越接近力的回內環,速度越快,參數越好調節。
龍格庫塔法和直接歐拉角積分的姿態更新區別。
現在還在對比傾轉分離的效果。
以後還會有更多有意思的想法可以實現。

對於學習,我覺得有用。

歡迎加我的個人微信交流,聽說加我的人不用建模也有對象哦^_^

 

關注微信公衆號【zinghd的思考】,回覆【建模】可以獲得這個簡單的模型,持續分享飛控乾貨,期待您的關注。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章