# 系列文章目錄
` 一共三篇文章`
<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、自主導航與影像處理技術,以提升無人機的智能化能力。本文將詳細介紹如何搭建此系統。
---
`提示:以下是本篇文章正文内容,下面案例可供参考`
# 一、WSL Ubuntu 22.04 安裝?
- 在 Windows 上安裝 WSL 和 Ubuntu 22.04
打開 PowerShell(以管理員身份運行),輸入以下命令安裝 WSL 和最新的 Ubuntu 發行版
```PowerShell
wsl --install
```
- 更新並升級系統
在終端中輸入以下命令更新包列表並升級已安裝的軟體包
```bash
sudo apt update
sudo apt upgrade -y
```
- WSL2 虛擬網路介面未建立
檢查是否擁有vEthernet (WSL)
選擇[控制台] >> [網路和網際網路] > [檢視網路狀態及工作] > [變更介面卡設定]

如果沒有vEthernet檢查WSL的版本是否為version 2
```CMD
wsl --list --verbose
```

需要檢查WSL是否為version 2,如果沒有需要升級
在PowerShell中執行
```PowerShell
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -NoRestart
```
然後重新開機,打開CMD輸入以下指令升級成version 2
```CMD
wsl --set-version Ubuntu-22.04 2
```

升級完成後就可以看到vEthernet

# 二、安裝 Python、pip,並建立虛擬環境
## 1.安裝 Python 和 pip
- 確認 Python 版本
```bash
python3 --version
```
- 如果未安裝或需要更新,執行以下命令:
```bash
sudo apt install python3
sudo apt install python3-pi
```
## 2.設置 Python 虛擬環境
- 安裝 `venv` 模組
```bash
sudo apt install python3-venv
```
- 創建並啟動虛擬環境
```bash
python3 -m venv px4env
source px4env/bin/activate
```
# 三、下載PX4-Autopilot
```bash
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot
git submodule update --init --recursive
```
# 四、編譯STIL,PX4 STIL
- 編譯並建立 SITL
```bash
make px4_sitl_default
```
- 相關PX4 SITL資料
- ⭐[Gazebo Classic Simulation](https://docs.px4.io/main/en/sim_gazebo_classic/) (有介紹make指令有哪一些)
- ⭐[PX4 development environment on Windows 10 or 11](https://docs.px4.io/main/en/dev_setup/dev_env_windows_wsl.html)
# 五、安裝套件,解決相依性錯誤
- 安裝 PX4 依賴包
```bash
make px4_sitl_default
```
- 安裝系統依賴包
在虛擬環境中安裝必要的 Python 模組
```bash
sudo apt install git zip qtbase5-dev libqt5opengl5-dev \
python3-dev python3-pyqt5 python3-numpy python3-pip \
python3-empy python3-toml python3-jinja2 python3-setuptools \
ninja-build exiftool
```
- 常見錯誤及解決方案
**error:ModuleNotFoundError: No module named 'genmsg'**
```bash
pip install pyros-genmsg
```
**error:ModuleNotFoundError: No module named 'em'**
**error:AttributeError: module 'em' has no attribute 'RAW_OPT'**
```bash
pip install empy==3.3.4
```
**error:ModuleNotFoundError: No module named 'menuconfig'**
```bash
pip install kconfiglib
```
**warning:Failed to import lxml module etree**
```bash
sudo apt install libxml2 libxml2-dev libxslt1-dev
pip install lxml
```
# 六、啟動STIL
```bash
make px4_sitl_default none_iris
```

---
# 總結
PX4 SITL 提供了一個強大的無人機飛控模擬環境,讓開發者能夠在無需實體硬體的情況下測試飛行控制演算法、導航策略以及與地面站 (QGroundControl) 或 AI 系統 (MAVSDK) 的整合。透過 TCP/UDP 通訊,SITL 可與 AirSim、Gazebo 或其他模擬器 互動,實現虛擬測試與驗證。