# 系列文章目錄
` 一共三篇文章`
<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、STIL、QGroundControl、PX4、Ardupilot、Raspberry Pi 5
---
# 前言
在 Raspberry Pi 5 上執行 PX4 SITL 模擬(Software-in-the-loop,SITL)有輕巧便攜、方便測試、成本低的優點。並且具有豐富的 I/O 介面,容易連接實際硬體(例如感測器或飛控板),進一步進行 Hardware-in-the-loop(HITL)實驗。
---
`提示:以下是本篇文章正文内容,下面案例可供参考`
# 一、設置 Docker 虛擬環境
為了避免版本相依性問題,建議先安裝 Docker
```bash
sudo apt update
sudo apt install -y docker.io
sudo usermod -aG docker $USER
```
拉取 Ubuntu 22.04 Docker Image
```bash
docker pull ubuntu:22.04
```
啟動容器並掛載 home 資料夾
```bash
docker run -it \
--network host \
--name ubuntu22_home \
-v $HOME:/host_home \
ubuntu:22.04 \
/bin/bash
```
若需持久性儲存,建議透過 docker-compose.yml 或 Dockerfile 管理。
進入到docker後安裝網路工具
```bash
apt-get update && apt-get install -y net-tools iproute2 sudo \
&& useradd -m -u 1000 user \
&& echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
```
若要將容器中的變更保留成新的映像檔
```bash
docker commit ubuntu22_home ubuntu22_home_custom:latest
```
顯示本機所有映像檔
```bash
docker images
```
刪除映像檔
```bash
docker rmi <image ID 或名稱>
```
顯示本機所有映像檔
```bash
docker ps -a
```
啟動已停止容器
```bash
docker start <容器ID或名稱>
```
進入已運行的容器終端機 (bash)
```bash
docker exec -it <容器ID或名稱> bash
```
# 二、設置 Python 虛擬環境(有用Docker虛擬環境可以省略)
**在終端中輸入以下命令更新包列表並升級已安裝的軟體包**
```bash
sudo apt update
sudo apt upgrade -y
```
**確認Python版本**
```bash
python3 --version
```
**如果未安裝或需要更新**
```bash
sudo apt install python3
```
**安裝venv模組**
```bash
sudo apt install python3-venv
```
**創建並啟動虛擬環境**
```bash
python3 -m venv px4env
source px4env/bin/activate
```
# 三、下載PX4-Autopilot並編譯SITL
**在終端中輸入以下命令更新包列表並升級已安裝的軟體包**
```bash
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot
git submodule update --init --recursive
```
編譯PX4程式碼
```bash
bash ./Tools/setup/ubuntu.sh
```
會遇到的問題是
```bash
E: Unable to locate package g++-multilib
E: Couldn't find any package by regex 'g++-multilib'
E: Package 'gcc-multilib' has no installation candidate
```
**需要修改ubuntu.sh,將g++-multilib、gcc-multilib兩行刪除(#號的部分需要刪除)**

再次編譯PX4程式碼
```bash
bash ./Tools/setup/ubuntu.sh
**make px4_sitl_default none_iris**
```
# 四、啟動SITL
Raspberrypi 5 IP:192.168.0.109
AirSim Host IP:192.168.0.108
QGroundControl IP:192.168.0.107
**在Raspberrypi 5,SITL環境中設定AirSim的IP**
```bash
export PX4_SIM_HOST_ADDR=192.168.0.108
```
**啟動 SITL**
```bash
make px4_sitl_default none_iris
```
**打開UDP通訊,設定QGC電腦的IP,讓QGC可以連線成功**
```bash
mavlink start -u 14570 -r 4000000 -m onboard -o 14550 -t 192.168.0.107
```
**SITL畫面**
****
# 五、開啟Airsim與QGC
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": "192.168.0.108",
"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
}
}
}
}
```
**QGC設定UDP**
****
---
# 總結
透過本指南,您已成功在 Raspberry Pi 5 上完成 PX4 SITL 與 AirSim 和 QGroundControl 的整合,建立了一個輕巧且高度靈活的無人機模擬測試平台。藉由此平台,您不僅能進行快速的演算法驗證,也能便利地進一步與各式實體感測器及飛控硬體進行 Hardware-in-the-loop(HITL)實驗,大幅提升開發效率並降低測試成本。未來,您可繼續利用此架構深入探索更多創新的無人機應用與研究,開啟更豐富且多元的無人載具應用之路。