# 系列文章目錄 ` 一共三篇文章` <a href="https://hackmd.io/@UnmannedVehicle/H1x6IIA31l">Catalogue</a> <a href="https://hackmd.io/@UnmannedVehicle/S1ZqRhLiye">QGroundControl 與 AirSim 整合指南 - 建立STIL(Software-In-The-Loop)</a> <a href="https://hackmd.io/@UnmannedVehicle/rJJMLIAnyl">QGroundControl 與 AirSim 整合指南 - 建立地面站控制虛擬飛行器</a> <a href="https://hackmd.io/@UnmannedVehicle/By2OU8Ah1l">QGroundControl 與 AirSim 整合指南 - STIL on the Raspberry Pi 5</a> --- > 提示:AirSim、SITL、QGroundControl、PX4、Ardupilot --- # 前言 `[AirSim] ←→ (TCP) ←→ [PX4 SITL(Software-In-The-Loop)] ←→ (UDP) ←→ [QGroundControl(QGC)]` 這篇文章將探討如何實現 AirSim、PX4 SITL 以及 QGroundControl 之間的數據傳輸與控制。本架構適用於無人機模擬環境,並且可以讓開發者在虛擬場景中測試飛行控制演算法、導航策略與自動化飛行計畫,無需實體硬體即可進行開發與驗證。 | 名詞 | 定義 | |:--|:--| | AirSim | 作為無人機的模擬環境,負責渲染虛擬世界並提供物理模擬。 | | PX4 SITL | 作為飛控系統的核心,透過 TCP 與 AirSim 交換感測器數據與控制指令。 | | QGC | 作為地面站,透過 UDP 與 PX4 SITL 進行通訊,提供 UI 介面以監控無人機狀態與發送控制指令。 | **AirSim ↔ PX4 SITL** AirSim 模擬無人機的物理環境,透過 TCP連接 PX4 SITL,而 PX4 SITL用來模擬 PX4 飛行控制器。 **PX4 SITL ↔ QGroundControl**l 透過UDP通訊,PX4 SITL傳送 MAVLink 訊息給 QGroundControl進行監控,同時PX4 SITL允許QGroundControl發送飛行指令(如起飛、降落、導航)。 這種架構使開發者能夠在軟體環境中模擬完整的無人機任務,並且可以進一步整合 AI、自主導航與影像處理技術,以提升無人機的智能化能力。本文將詳細介紹如何搭建此系統。 --- `提示:以下是本篇文章正文内容,下面案例可供参考` # 一、安裝Unreal Engine - 安裝網址:**⭐ [Epic Games 官方網站](https://www.unrealengine.com/)** **需要登入並建立帳號,才可以安裝Unreal Engine。** 在UE5中,UE5 捨棄了 PhysX 物理引擎(改用 Chaos 物理引擎)。但AirSim 仍然依賴 PhysXVehicles 插件,所以AirSim 官方並不支援 UE5。AirSim 目前最佳支援的版本為 UE4.27。 如果要用UE5進行開發,你需要: 1.在 AirSim/Source/AirSim.cpp 移除 PhysXVehicles 相關的代碼。 2.修改 AirSimGameMode 讓其支援 Chaos。 ![UE4_27](https://hackmd.io/_uploads/S1RmaYRhJe.png) 設置環境變數 ```CMD setx Path "%Path%;C:\Program Files\Epic Games\UE_4.27\Engine\Binaries\Win64" ``` # 二、安裝Visual Studio 2022 - 安裝網址:**⭐ [Visual Studio 2022 官方下載](https://visualstudio.microsoft.com/zh-hant/downloads/)** **可以嘗試在「開始」選單搜尋:** ``` x64 Native Tools Command Prompt for VS 2022 ``` **Unreal Engine 官方僅支援 Microsoft Visual C++ (MSVC) 作為 Windows 平台的編譯器,因此 AirSim 也必須使用 MSVC 編譯。x64 Native Tools Command Prompt for VS 2022 確保 AirSim 使用 MSVC 進行編譯,避免與 UE 的工具鏈不匹配。** # 三、下載編譯AirSim - **直接下載執行檔案可以先測試:⭐[AirSim release binaries](https://github.com/Microsoft/AirSim/releases)** **若需要進行二次開發則需要下載原始碼:** ```CMD git clone https://github.com/PX4/PX4-Autopilot.git --recursive ``` **相關PX4資料:** - **⭐[px4官網](https://px4.io/)** 如果有產生錯誤,需要先Clean在Build。需要使用x64 Native Tools Command Prompt。 ```CMD cd C:\專案放置的地方\AirSim\ C:\專案放置的地方\AirSim> clean.cmd C:\專案放置的地方\AirSim> build.cmd ``` **Build完成後會產生Unreal Engine的專案檔** ![AirSim Build](https://hackmd.io/_uploads/B1lI6KRn1x.png) ![AirSim in UE4](https://hackmd.io/_uploads/BJywptAnJl.png) # 四、AirSim參數設置 修改 `settings.json` 讓 QGC 可以與 AirSim 連接。 - **相關AirSim資料:** - ⭐[https://microsoft.github.io/AirSim/px4_sitl_wsl2/](https://microsoft.github.io/AirSim/px4_sitl_wsl2/) (設定參數參考) - ⭐[AirSim Simulation](https://px-4.com/main/en/sim_airsim/) (影片參考) - ⭐[AirSim px4_setup](https://microsoft.github.io/AirSim/px4_setup/) 修改設定檔案C:\Users\xxx\Documents\AirSim\settings.json ```JSON { "SettingsVersion": 1.2, "SimMode": "Multirotor", "ClockType": "SteppableClock", "Vehicles": { "PX4": { "VehicleType": "PX4Multirotor", "UseSerial": false, "LockStep": true, "UseTcp": true, "TcpPort": 4560, "ControlIp": "remote", "ControlPortLocal": 14540, "ControlPortRemote": 14580, "LocalHostIp": "172.17.144.1", "Sensors":{ "Barometer":{ "SensorType": 1, "Enabled": true, "PressureFactorSigma": 0.0001825 } }, "Parameters": { "NAV_RCL_ACT": 0, "NAV_DLL_ACT": 0, "COM_OBL_ACT": 1, "LPE_LAT": 47.641468, "LPE_LON": -122.140165 } } } } ``` **WSL(SITL)的IP,在WSL中輸入查詢ip addr show eth0。** ![WSL ip address](https://hackmd.io/_uploads/Hy-YptAh1x.png) **Windows中輸入ipconfig查詢IP設定** ![CMD ip address](https://hackmd.io/_uploads/H16taKR2ye.png) # 五、連接 Mission Planner Mission Planner所需要設定的連線IP,是WSL的IP。 Mission Planner 與 SITL的連線這邊設定成UDP,用來監控AirSim飛機模擬的狀態。 在啟動SITL的時候會先需要設定AirSim的IP ```bash export PX4_SIM_HOST_ADDR=172.17.144.1 ``` **所要設定的Port會顯示在WSL(SITL)執行的資訊中** ![MAVlink SITL Port](https://hackmd.io/_uploads/B1Qj6KC3kg.png) **QGC設定UDP的畫面** ![QGC UDP setting](https://hackmd.io/_uploads/SkPhTFRhJx.png) **連線成功後就可以看到Airsim中無人機的設定** ![AirSim Vehicle](https://hackmd.io/_uploads/r1h2TYChJx.png) --- # 總結 本指南介紹了 **如何將 QGroundControl (QGC) 與 AirSim 整合,實現地面站對虛擬無人機的控制**。透過此整合,開發者可以在模擬環境中**監控無人機狀態、規劃航線、手動或自動控制飛行**,無需實體硬體即可測試 PX4 飛控系統的運作。