PX4飞控之导航及任务架构
生活随笔
收集整理的這篇文章主要介紹了
PX4飞控之导航及任务架构
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文重點介紹PX4飛控的Navigator和mission控制框架和邏輯。Navigator導航部分是無人機自主飛行控制的核心所在,其中包括自主起飛、自主降落、自主返航、自主任務以及GPS失效保護等各個部分。搞懂這個部分有助于理解無人機的自主飛行過程,閑話少說,上干貨。
PX4飛控的整體架構參見 Px4源碼框架結構圖
Navigator模塊主要功能在于確定任務類型、地理圍欄、失效保護,把任務航點更新后送給位置控制器。其中task_main函數是主函數。
在task_main 函數中,主要分為如下幾個部分:
當commander中的傳輸來的導航模式為mission時,依次運行mission.cpp中的三個函數:初始化on_activation()、主函數on_active()、退出函數on_inactive()。
對于mission模式的主函數on_active(),代碼邏輯如下:
mission的主要功能在于對航點數組pos_sp_triplet更新和賦值,航點數組包括previous、current、next三個航點,這一功能由函數set_mission_item()來實現,主要的邏輯為先從SD卡中讀取航點信息read_mission_item()賦值給結構體mission_item,然后再將當前航點復制給pos_sp_triplet.current
每當一個航點任務完成is_mission_item_reached()返回值為true,則指針++,讀取SD卡中的下一個航點。而判斷航點的是否完成由三個判斷條件:
航向控制由函數heading_sp_update()實現,將航向setpoint計算賦值給pos_sp_triplet.current.yaw,給到pos控制環,進行航向控制。
至此,導航完成了航點經緯高、航點類型、航向等信息的更新。而位置控制環以pos_sp_triplet為目標進行控制。
注:航點數組中的高度為絕對高度。
PX4飛控的整體架構參見 Px4源碼框架結構圖
Navigator模塊主要功能在于確定任務類型、地理圍欄、失效保護,把任務航點更新后送給位置控制器。其中task_main函數是主函數。
在task_main 函數中,主要分為如下幾個部分:
當commander中的傳輸來的導航模式為mission時,依次運行mission.cpp中的三個函數:初始化on_activation()、主函數on_active()、退出函數on_inactive()。
對于mission模式的主函數on_active(),代碼邏輯如下:
mission的主要功能在于對航點數組pos_sp_triplet更新和賦值,航點數組包括previous、current、next三個航點,這一功能由函數set_mission_item()來實現,主要的邏輯為先從SD卡中讀取航點信息read_mission_item()賦值給結構體mission_item,然后再將當前航點復制給pos_sp_triplet.current
每當一個航點任務完成is_mission_item_reached()返回值為true,則指針++,讀取SD卡中的下一個航點。而判斷航點的是否完成由三個判斷條件:
航向控制由函數heading_sp_update()實現,將航向setpoint計算賦值給pos_sp_triplet.current.yaw,給到pos控制環,進行航向控制。
至此,導航完成了航點經緯高、航點類型、航向等信息的更新。而位置控制環以pos_sp_triplet為目標進行控制。
注:航點數組中的高度為絕對高度。
總結
以上是生活随笔為你收集整理的PX4飞控之导航及任务架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6 Git 分支 - 变基
- 下一篇: 链表数据结构图解 和 代码实现