七、MSP432飛控快速二次開發(fā)入門教程
飛控代碼二次開發(fā)是指利用飛控已有的姿態(tài)控制、速度控制、位置控制、SDK庫、API函數(shù)、外部視覺解析等基本單元模塊,針對特定賽題任務(wù),用戶自行編寫代碼,對項目功能進行二次開發(fā)完成對應(yīng)任務(wù)。
弄懂基本單元模塊各自功能與運行邏輯后,調(diào)用代碼功能接口函數(shù),可以快速高效率的實現(xiàn)二次開發(fā)。比賽的準備階段大多數(shù)時間并不是在基于單片機驅(qū)動程序、芯片資源使用層面開發(fā),而是基于飛控應(yīng)用+機器視覺層面,針對具體賽題做二次應(yīng)用開發(fā)。
特別的難點在于賽題是利用有限的定位傳感器(光流、激光測距、超聲波、openmv等),結(jié)合現(xiàn)場標記特征,實現(xiàn)有效的室內(nèi)定位功能。國賽以往賽題中限定使用樹莓派等板卡計算機設(shè)備,依靠激光雷達/視覺SLAM等高精度定位手段沒法在國賽比賽中得以使用。
1、飛行控制的基本流程
① 總控制器GankerPilot_Control()函數(shù)
首先利用遙控器各個通道的狀態(tài),確定飛控當前的飛行模式,然后運行總控制器,得到控制量后將映射輸出成四個電機轉(zhuǎn)速后,調(diào)用PWM輸出函數(shù)去控制電調(diào)。



① 總控制器Controler_Mode_Select()函數(shù)
5通道為高度手動(低位)與定高模式(高位)控制通道——定高控制)
8通道為水平自穩(wěn)(低位)到光流定點(高位)模式控制通道——定點控制
6通道為非SDK模式(低位)到SDK模式(高位)控制通道——SDK控制
7通道為非一鍵降落(低位)到一鍵降落(高位)控制通道——降落控制
其中需要特別注意的是:
8通道中光流定點模式高位起作用的前提是飛行器之前需要工作在定高模式模式,即5通道必須先置為高位。
6通道中SDK模式高位起作用的前提是飛行器之前需要工作在光流定點模式,即5、8通道必須均先置為高位。



總控制器Total_Control()函數(shù)
總控制器分為主導控制器與姿態(tài)控制器,其中主導控制器根據(jù)遙控器設(shè)置的當前模式和預(yù)設(shè)的SDK狀態(tài),確定執(zhí)行哪一種控制模式,包括姿態(tài)自穩(wěn)、定高、定點、降落、SDK控制等。主導控制器最后輸出包括油門控制、期望姿態(tài)角度、角速度等。姿態(tài)控制器的輸入由主導控制器給出,姿態(tài)控制器內(nèi)部執(zhí)行的是水平姿態(tài)角度+角速度控制。用戶二次開發(fā)具體功能任務(wù)時,基本是都是在Main_Leading_Control()中的Auto_Flight_Ctrl()中添加代碼。




在Main_Leading_Control()中一鍵降落擁有最高優(yōu)先級,無論之前處于任何模式切第7通道到高位時,飛行器會執(zhí)行自動降落函數(shù),完成飛行器的降落。注意自動降落過程中遙控器對水平姿態(tài)、速度調(diào)節(jié)依然有效。

當飛控不處于一鍵降落模式時,飛行器會根據(jù)5、6、8通道狀態(tài)決策飛行模式。
高度手動控制模式時,油門控制、姿態(tài)期望角度、角速度直接來源于遙控器給定。用戶需要實時手動調(diào)節(jié)油門、方向桿去控制無人機飛行(不推薦新手操作)。

高度自動控制模式時,油門控制來源與豎直高度位置、速度、加速度控制器輸出,無人機會根據(jù)當前狀態(tài)實時調(diào)整油門控制量,自動保持高度或者期望速度飛行。

光流定點控制模式時,水平姿態(tài)控制期望來源與水平位置、速度制器輸出,無人機會根據(jù)當前狀態(tài)實時調(diào)整姿態(tài)期望輸入,自動保持水平位置或者期望速度飛行。

SDK控制模式時,水平姿態(tài)控制期望來源與外部視覺位置控制、水平位置、速度制器輸出,無人機會根據(jù)當前狀態(tài)實時調(diào)整姿態(tài)期望輸入,自動完成循跡、追蹤物塊、APrilTag定位、自定義軌跡等自主飛行任務(wù)。



