PX4飛控之導航及任務架構

感謝博主的分享,原文地址:http://blog.csdn.net/zhenglongf/article/details/77775658


本文重點介紹PX4飛控的Navigator和mission控制框架和邏輯。Navigator導航部分是無人機自主飛行控制的核心所在,其中包括自主起飛、自主降落、自主返航、自主任務以及GPS失效保護等各個部分。搞懂這個部分有助於理解無人機的自主飛行過程,閒話少說,上乾貨。 
PX4飛控的整體架構參見Px4源碼框架結構圖 
飛控源碼框架圖 
Navigator模塊主要功能在於確定任務類型、地理圍欄、失效保護,把任務航點更新後送給位置控制器。其中task_main函數是主函數。 
Navigator中的函數流 
在task_main 函數中,主要分爲如下幾個部分: 
navigator 
當commander中的傳輸來的導航模式爲mission時,依次運行mission.cpp中的三個函數:初始化on_activation()、主函數on_active()、退出函數on_inactive()。 
對於mission模式的主函數on_active(),代碼邏輯如下: 
mission 
mission的主要功能在於對航點數組pos_sp_triplet更新和賦值,航點數組包括previous、current、next三個航點,這一功能由函數set_mission_item()來實現,主要的邏輯爲先從SD卡中讀取航點信息read_mission_item()賦值給結構體mission_item,然後再將當前航點複製給pos_sp_triplet.current 
set_mission_item 
每當一個航點任務完成is_mission_item_reached()返回值爲true,則指針++,讀取SD卡中的下一個航點。而判斷航點的是否完成由三個判斷條件: 
mission reach 
航向控制由函數heading_sp_update()實現,將航向setpoint計算賦值給pos_sp_triplet.current.yaw,給到pos控制環,進行航向控制。 
航向控制 
至此,導航完成了航點經緯高、航點類型、航向等信息的更新。而位置控制環以pos_sp_triplet爲目標進行控制。 
注:航點數組中的高度爲絕對高度。



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