# 系列文章目錄 ` 一共三篇文章` <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兩行刪除(#號的部分需要刪除)** ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXensW0DWR2ft5fs5k1iqMp-qTRDGvVccv2Uju2ZeX6AcYJ-wtYDhmc-izFeXugA2Gsvs2RyshRHOgevjIzovB5BsVDOrPee7ZozjIeYJATq78AMhHa0cCVoM6BI-ugcPrKtDQ7hzQ?key=LyxcTDonVrvH6fc4-F9MtG22) 再次編譯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畫面** **![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfhWF-GPbHjaAKqMXyEgbgbjJCLfVNs5Y-IEWsKP0BFwRDOnxC9ohCGZkNrLbNHAAMn5Ek5vfDZXM8z6FdP7t0n5HsN5Di_mYWABbCSng-bS0wyltK1hrtp3OglQ_Sse9B96ExJxw?key=LyxcTDonVrvH6fc4-F9MtG22)** # 五、開啟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** **![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdZlKSe67675yH7ZscZkANgnqXG4yRJbel2RCxp2VXIgcwD81a5aBqzSJZiE79qIXoAZutFmVmOCUM4LuNJxAi5Eu1Icyi0YXu4yFvsUM1g0iUgJGpoECWFrZuEUcRuizDMD6q80Q?key=LyxcTDonVrvH6fc4-F9MtG22)** --- # 總結 透過本指南,您已成功在 Raspberry Pi 5 上完成 PX4 SITL 與 AirSim 和 QGroundControl 的整合,建立了一個輕巧且高度靈活的無人機模擬測試平台。藉由此平台,您不僅能進行快速的演算法驗證,也能便利地進一步與各式實體感測器及飛控硬體進行 Hardware-in-the-loop(HITL)實驗,大幅提升開發效率並降低測試成本。未來,您可繼續利用此架構深入探索更多創新的無人機應用與研究,開啟更豐富且多元的無人載具應用之路。