91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解PX4/Pixhawk飛控軟件架構

發布時間:2021-11-23 10:38:55 來源:億速云 閱讀:316 作者:柒染 欄目:互聯網科技

今天就跟大家聊聊有關如何理解PX4/Pixhawk飛控軟件架構,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1、PX4軟件架構簡介

PX4是目前最流行的開源飛控板之一。PX4的軟件系統實際上就是一個firmware,其核心OS為NuttX(http://www.nuttx.org/)實時ARM系統。其固件同時附帶了一系列工具集、系統驅動/模塊與外圍軟件接口層,所有這些軟件(包括用戶自定義的飛控軟件)隨OS內核一起,統一編譯為固件形式,然后上傳到飛控板中,從而實現對飛控板的軟件配置。

如何理解PX4/Pixhawk飛控軟件架構
PX4配套的軟件架構主要分為4層。理解其軟件架構是開發用戶自定義飛控應用軟件的基礎。
a) API層:這個好理解。
b) 框架層:包含了操作基礎飛行控制的默認程序集(節點)
c) 系統庫:包含了所有的系統庫和基本交通控制的函數
d) OS內核:提供硬件驅動程序、網絡、UAVCAN和故障安全系統

上述是個面向PX4系統實現者的相對具體的軟件架構。實際上還有另外一種面向PX4自定義飛控應用開發者的高層軟件架構描述,相對抽象,但更簡單,就是整個PX4的軟件從整體上分為2層:

a) PX4 flight stack:一系列自治無人機自動控制算法的集合
b) PX4 Middleware:一系列針對無人機控制器、傳感器等物理設備的驅動及底層通信、調度等機制的集合

PX4軟件架構中,最有意思的一點在于整個架構的抽象性(多態性)。即,為了最大限度保障飛控算法代碼的重用性,其將飛控邏輯與具體的底層控制器指令實現進行了解耦合。一套高層飛控算法(如autopilot、GeoFence等)在不做顯著修改的情況下,能夠適用于固定翼、直升機、多旋翼等多種機型的控制場合,這時候就體現出PX4飛控的威力來了:在用戶程序寫好之后,如果需要替換無人機機架的話,僅需簡單的修改一下機架配置參數即可,高層的用戶自定義飛控應用幾乎無需修改。

理解上述初衷至關重要。有很多搞自動化出身、沒太多軟件經驗的朋友傾向于直接使用底層控制協議來控制飛控板,但實際上PX4架構已經在更高的抽象層面上提供了更好的選擇,無論是代碼維護成本、開發效率、硬件兼容性都能顯著高于前者。很多支持前者方式的開發者的理由主要在于高層封裝機制效率較低,而飛控板性能不夠,容易給飛控板造成較大的處理負載,但實際從個人感覺上來看,遵循PX4的軟件架構模式反倒更容易實現較高處理性能,不容易產生控制擁塞,提升無人機側系統的并發處理效率。
 

2、PX4控制協議與邏輯

Mavlink是目前最常見的無人機飛控協議之一。PX4對Mavlink協議提供了良好的原生支持。該協議既可以用于地面站(GCS)對無人機(UAV)的控制,也可用于UAV對GCS的信息反饋。其飛控場景一般是這樣的:

a) 手工飛控:GCS -> (MavLink) -> UAV
b) 信息采集:GCS <- (Mavlink) <- UAV
c) 自治飛控:User App -> (MavLink) -> UAV

也就是說,如果你想實現地面站控制飛行,那么由你的地面站使用Mavlink協議,通過射頻信道(或 wifi etc.)給無人機發送控制指令就可以了。如果你想實現無人機自主飛行,那么就由你自己寫的應用(運行在無人機系統上)使用Mavlink協議給無人機發送本地的控制指令就可以了。

然而,為實現飛控架構的靈活性,避免對底層實現細節的依賴,在PX4中,并不鼓勵開發者在自定義飛控程序中直接使用Mavlink,而是鼓勵開發者使用一種名為uORB((Micro Object Request Broker,微對象請求代理)的消息機制。其實uORB在概念上等同于posix里面的命名管道(named pipe),它本質上是一種進程間通信機制。由于PX4實際使用的是NuttX實時ARM系統,因此uORB實際上相當于是多個進程(驅動級模塊)打開同一個設備文件,多個進程(驅動級模塊)通過此文件節點進行數據交互和共享。

在uORB機制中,交換的消息被稱之為topic,一個topic僅包含一種message類型(即數據結構)。每個進程(或驅動模塊)均可“訂閱”或“發布”多個topic,一個topic可以存在多個發布者,而且一個訂閱者可也訂閱多個topic。而正因為有了uORB機制的存在,上述飛控場景變成了:

a) 手工飛控:GCS -> (MavLink) -> (uORB topic) -> UAV
b) 信息采集:GCS <- (Mavlink) <- (uORB topic) <- UAV
c) 自治飛控:User App -> (uORB topic) -> (MavLink) -> UAV

有了以上背景基礎,便可以自寫飛控邏輯了,僅需在PX4源碼中,添加一個自定義module,然后使用uORB訂閱相關信息(如傳感器消息等),并發布相關控制信息(如飛行模式控制消息等)即可。具體的uORB API、uORB消息定義可參考PX4文檔與源碼,所有控制命令都在firmware代碼的msg里面,不再敷述。

最后值得一提的是,在PX4系統中,還提供了一個名為mavlink的專用module,源碼在firmware的src/modules/mavlink中,這貨與linux的控制臺命令工具集相當相似,其既可以作為ntt控制臺下的命令使用,又可作為系統模塊加載后臺運行。

實現的功能包括:

1)uORB消息解析,將uORB消息實際翻譯為具體的Mavlink底層指令,或反之。

2)通過serial/射頻通信接口獲取或發送Mavlink消息,既考慮到了用戶自寫程序的開發模式,也適用于類似linux的腳本工具鏈開發模式,使用起來很靈活。

看完上述內容,你們對如何理解PX4/Pixhawk飛控軟件架構有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吴江市| 达拉特旗| 唐海县| 枞阳县| 宝坻区| 乌兰县| 拉孜县| 金秀| 望江县| 北川| 景德镇市| 苗栗市| 常宁市| 富蕴县| 紫阳县| 灵璧县| 方城县| 东乡| 庄河市| 乐清市| 石渠县| 手机| 乌拉特后旗| 安阳市| 浏阳市| 庆云县| 琼海市| 新泰市| 凌海市| 东港市| 兴文县| 德庆县| 建湖县| 瑞安市| 陇川县| 鹤壁市| 秀山| 临沂市| 元朗区| 余干县| 仪陇县|