第十章 PX4-Pixhawk-姿态控制
- 這一章節(jié)我們對姿態(tài)控制進行解析,姿態(tài)解算我們還是從啟動文件開始,找到姿態(tài)解算的啟動文件rc.mc_app,這里面找到姿態(tài)解算的啟動項為mc_att_control start 這里面不帶任何參數(shù),直接就是start。?
根據(jù)編譯規(guī)則我們可以知道調(diào)用的事mc_att_control_main.cpp文件,這里我們不對這個函數(shù)之間的調(diào)用和new在繼續(xù)去解讀,如果不懂得就去參考前面幾篇博客。這里我們直接到task_main函數(shù)中去進行解讀。?
首先還是訂閱相關(guān)數(shù)據(jù)和更新相關(guān)數(shù)據(jù)主要是PID數(shù)據(jù)和相關(guān)限幅數(shù)據(jù)。注意哦,姿態(tài)相關(guān)的參數(shù)都是在這里看的出可以調(diào)節(jié)的,調(diào)節(jié)的參數(shù)在mc_att_control params.c中,這些參數(shù)大家如果不怕炸雞可以去試著調(diào)一調(diào)。?
接著進入大循環(huán),首先還是防阻塞時間配置,配置好了之后就跑到輪詢中。首先是對采樣時間限制在2ms到20ms之間,然后就是更新飛機的相關(guān)數(shù)據(jù)。?
到這里就開始進入到控制模式了,首先是對姿態(tài)速度控制模式是否被使能,這個主要是利用遙控來控制來控制俯仰和橫滾的速率的,然后判斷遙控給出的值是否超過閾值,如果超過了就采用rattitude模式,前提是還要被使能,否則就進入角度控制模式。?
根據(jù)流程來說我們還是先分享角度控制吧。首先在角度控制中需要判斷是否為那種尾座式飛機,我們這里只分析多旋翼,所以我們這里只對多旋翼的分析一下,多旋翼的就直接進入到姿態(tài)控制函數(shù)中。我們直接進入到conrtol_attitude函數(shù)中,這里的參數(shù)是時間間隔參數(shù)在積分項會用到。?
首先獲取期望值,至于獲取哪些值就自己到msg文件中自己去看,里面具體也有注釋比較容易懂,都是英文寫的,要是實在英語不過關(guān)就在線去。然后再獲取期望油門值。然后通過期望四元素經(jīng)過DCM得到旋轉(zhuǎn)R矩陣。然后就是計算偏航值,這里的算法自己去找找理論去,這個利用了向量的計算方法,然后計算偏差角度。這一堆里面涉及到很多的理論,基本是向量運算,本人實力有限也不確定能不能講清楚,所以這里不對這些來詳細解讀,這些里面主要是對偏航來做一系列計算。?
回到函數(shù)我們會知道在經(jīng)過姿態(tài)控制函數(shù)之后就得到了姿態(tài)的期望值roll、pich、yaw、油門然后進行發(fā)布數(shù)據(jù)。?
進入到else中這里是對速度控制,然后遙控控制又超過了閾值,這里會將遙控數(shù)據(jù)經(jīng)過轉(zhuǎn)換得到期望值最后進行發(fā)布數(shù)據(jù)。?
接著就進入到角度度控制環(huán)路中這里面首先就是獲取控制的角速率包括roll、pich、yaw計算當(dāng)前角速率和期望角速率的偏差,然后計算控制量,這里面就用到了PID調(diào)節(jié)接著就是對各個數(shù)據(jù)的范圍進行判定,這里就不用說了吧,對于搞飛機的這里的算法還是沒問題吧。經(jīng)典PID而已。?
到這里就基本講完了,主要是計算控制量然后發(fā)布數(shù)據(jù)。這里提一下那些模式的控制在commander.cpp中這個文件我們也會講,不過這個比較遠,因為PX4里面的東西還遠遠沒有講完,有興趣的同學(xué)可以先去看看,那里面可以說是APP層的一個控制,很多的命令控制都在這個文件中。
總結(jié)
以上是生活随笔為你收集整理的第十章 PX4-Pixhawk-姿态控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RTK无人机应用市场
- 下一篇: px4官网调参指南 多旋翼无人机PID调