Airsim動態 | 不瞭解結構框架怎麼學習!

導語

如果要學習PX4二次開發最重要的什麼?肯定是需要了解整體源碼框架。同樣的,AirSim架構和設計框架也是學習AirSim比較重要的一步。組件結構圖能讓開發者瞭解各個模塊之間是如何進行交互,而代碼結構能更加清晰明確物理引擎,物理模型,傳感器模型等等文件位置,方便修改。所以本期爲大家帶來AirSim整體設計和架構,方便大家去開發研究。

一、組件結構圖 file

二、代碼結構 1.AirLib AirSim的大部分代碼都放在AirLib中,它是一個自包含庫,支持任何C++11的編譯器進行編譯。

AirLib 有以下幾個組件: (1)物理引擎:可以快速擴展實現不同的物理模型。 代碼:https://github.com/microsoft/AirSim/tree/master/AirLib/include/physics

(2)傳感器模型:氣壓計、IMU、GPS 和磁力計的僅標頭模型。 代碼:https://github.com/microsoft/AirSim/tree/master/AirLib/include/sensors

(3)物理模型:車輛配置和模型的僅標題模型。目前已經在X配置中實現了MultiRotor的模型和PX4 QuadRotor的配置。例如:MultiRotorParams.hpp 中定義了幾種不同的多旋翼模型,包括六軸飛行器。 代碼:https://github.com/microsoft/AirSim/tree/master/AirLib/include/vehiclesr

(4)API 相關文件: 這一部分主要爲API提供抽象基類,併爲特定物理平臺(如 MavLink)提供具體實現方式。它還擁有類似於RPC客戶端和服務器的類。 代碼:https://github.com/microsoft/AirSim/tree/master/AirLib/include/api

除此之外,所有常用的實用程序都在【common/】子文件夾中進行定義。而【AirSimSettings.hpp】是一個重要文件,如果要在settings.json中添加任何新字段,則需要修改這個文件內容。

AirSim支持無人機飛控的各種固件,例如它自己的 SimpleFlight、PX4 和 ArduPilot。每個固件通信的文件位於【multirotor/firmwares】文件。特定的 API接口被放在了

【api/】子文件夾中。【AirLib/src/】包含“.cpp” 文件和“.hpp”文件,其中包含“.hpp” 文件中定義的是各種可實現的實驗方法代碼。例如,【MultirotorApiBase.cpp】中包含多轉子API的基本實現,如果需要,也可以在特定固件文件中覆蓋它。

2.Unreal/Plugins/AirSim

由於AirSim需要和虛幻引擎一起結合使用,所以在【source/】文件下有一個C++文件【Content/】,該文件夾包含有blueprints和assets,一些重要組件描述如下:

(1)[SimMode_ classes]:SimMode類有助於實現許多不同的模式,例如純計算機視覺模式(Computer Vision mode),車輛或無人機類別位於【Vehicles/】文件中。

(2)[PawnSimApi]:這是所有車輛或無人機可視化的基類。每輛車都有自己的子級 (比如Multirotor,Car或者ComputerVision)Pawn 類。

(3)[UnrealSensors]:包含距離和激光雷達傳感器的實現。

(4)[WorldSimApi]:實現大多數和物理模型無關的環境API。

除了這些,【PIPCamera】中包含了相機初始化,【UnrealImageCapture】與【RenderRequest】這兩個文件是圖像渲染代碼。【AirBlueprintLib】文件中有許多用於與UE4引擎交互的實用程序和包裝方法。

3.MAVLinkCom 這是由AirSim團隊成員Chris Lovett開發的庫,它提供C++類來與 MavLink 設備通信。這個庫是獨立的,可以在任何項目中使用。 更多信息,請參閱:https://microsoft.github.io/AirSim/mavlinkcom/。

三、示例程序 AirSim 團隊爲了方便用戶使用,專門創建了一些示例程序來演示如何使用 API。比如我們前幾期講到的HelloDrone和HelloCar:(請參考:你離學會AirSim還差最後一步!這一期)都是官方提供給我們的實例。除此之外官方還提供了一個DroneShell,DroneShell 演示了模擬器正在運行一個服務器時(類似於 DroneServer),如何使用 UDP 連接到模擬器。

四、PythonClient 在最開始幾期阿木所寫安裝教程和效果展示都是通過Python API展示的,那麼PythonClient是什麼呢?PythonClient包含有Python API包裝文件和演示其用法的實例程序,讓可以用戶使用Python編程在AirSim中進行仿真。

五、虛幻框架 下面節點圖說明了虛幻遊戲引擎如何加載和調用 AirSim: file

官方資料: AirSim設計官方介紹: https://microsoft.github.io/AirSim/design/

AirSim代碼結構介紹: https://microsoft.github.io/AirSim/code_structure/

  • End -

技術發展的日新月異,阿木實驗室將緊跟技術的腳步,不斷把機器人行業最新的技術和硬件推薦給大家。看到經過我們培訓的學員在技術上突飛猛進,是我們培訓最大的價值。如果你在機器人行業,就請關注我們的公衆號,我們將持續發佈機器人行業最有價值的信息和技術。 阿木實驗室致力於前沿IT科技的教育和智能裝備,讓機器人研發更高效!

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