---
# System prepended metadata

title: PX4+ROS2+Micro XRCE-DDS+ROS 2 Workspace安裝
tags: [操作, PX4, 基本操作]

---

# PX4+ROS2+Micro XRCE-DDS+ROS 2 Workspace安裝
## 基本安裝
以下安裝是以Ubuntu22.04為主
[Ubuntu 22.04](https://releases.ubuntu.com/jammy/)
假設你是全新的Ubuntu系統，那你必須安裝VSC
[安裝參考網站](https://learningsky.io/tools-ubuntu-install-visual-studio-code/)
[VSC](https://code.visualstudio.com/)
```
sudo dpkg -i 下載的安裝檔名稱
```
如果要安裝中文在CMD中輸入
```
sudo apt install fcitx5 fcitx5-chewing
```
安裝完成輸入
```
reboot
```
開機後在CMD輸入,到圖片中設定
```
ibus-setup
```
![image](https://hackmd.io/_uploads/rkWCXk2ZWx.png)
## 安裝github
1. 透過執行以下命令更新儲存庫：
```
sudo apt-get update
```
2. 使用以下命令安裝 Git：
```
sudo apt install git
```
 ## 安裝python
要確保empy的版本是3.3.4，不然再colcon build 時會出現問題。
```
sudo apt update
sudo apt install python3-pip
```
```
pip3 --version
```
```
pip3 uninstall empy
```
```
pip3 install empy==3.3.4
```
```
sudo apt install python3-colcon-common-extensions
```
## 安裝PX4
#### 1. 下載 PX4 的官方原始碼，並加上 --recursive 參數來同時下載所有子模組（如 MAVLink、Firmware 等）。
#### 2. 執行 PX4 官方提供的安裝腳本，這會根據你的 Ubuntu 系統版本安裝 PX4 所需的開發工具、依賴函式庫（如 cmake、ninja、python 套件）等。
#### 3. 進入 PX4 專案資料夾，使用 make px4_sitl 編譯並啟動 Software-In-The-Loop (SITL) 模擬器，這是模擬 PX4 在電腦上運行的環境，方便不連接真實硬體的情況下開發與測試。
```
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
cd PX4-Autopilot/
make px4_sitl
```

## 安裝ROS2
### ROS 2 是 PX4 常用的通訊中介平台，用來實現 UAV 與其他軟體（如感測器、控制器）的互聯。
#### 設定系統語系為英文 en_US.UTF-8，避免安裝或執行過程中出現亂碼或語系不符的錯誤。
```
locale
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
locale
```
#### 安裝工具以新增 APT 軟體倉庫，並啟用 Ubuntu 的 universe 倉庫，這裡包含許多 ROS 依賴套件。
```
sudo apt install software-properties-common
sudo add-apt-repository universe
```
#### 下載並安裝 ROS 軟體倉庫的 GPG 金鑰（驗證來源）。
```
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
```
#### 根據目前 Ubuntu 發行版本（如 jammy）新增 ROS 2 軟體來源到系統。
```
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
```
####  更新套件資訊與系統升級。
```
sudo apt update
sudo apt upgrade
```

#### 安裝 ROS 2 Humble 的完整桌面版，包括常用工具（如 rviz, gazebo, rqt）與開發函式庫；python3-argcomplete 用於支援 tab 補全。
```
sudo apt install ros-humble-desktop python3-argcomplete
```
#### 匯入 ROS 環境變數（每次開新 terminal 時都需要，或寫進 .bashrc 自動載入）。
```
source /opt/ros/humble/setup.bash
```
## ROS2測試
#### 啟動 ROS 2 範例節點（Node），讓你確認 ROS 2 安裝是否成功並開始互動式測試。
```
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker
```
#### 以下為成功發出訊息示意圖
![螢幕擷取畫面 2025-06-11 210006](https://hackmd.io/_uploads/BJ1-ClPmxx.png)

```
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener
```
#### 以下為成功接收訊息示意圖
![螢幕擷取畫面 2025-06-11 210014](https://hackmd.io/_uploads/H13ZAlPXee.png)


## 設定 Micro XRCE-DDS 代理程式和客戶端
* Micro XRCE-DDS Agent 是一個代理程式，它在 ROS 2 主機（如 Ubuntu 電腦） 和 微控制器（用戶端） 之間做橋樑。
* 「XRCE」代表 eXtremely Resource-Constrained Environment，專門設計給資源有限的裝置（如飛控板）。
* 微控制器上的程式會透過 UDP 與代理通訊，代理再轉送資料給 ROS 2 DDS 通訊架構。

#### 1. 從 GitHub 下載 Micro XRCE-DDS Agent 的原始碼。
#### 2. 建立並進入建構資料夾，用於編譯原始碼。
#### 3. 使用 cmake 產生編譯設定，並用 make 編譯原始碼。
#### 4. 安裝編譯完成的可執行檔與函式庫到系統中（通常安裝到 /usr/local/bin 與 /usr/local/lib）。
#### 5. 通知系統更新動態連結庫的搜尋路徑，讓 Agent 的函式庫能被正確載入。
```
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib
```
#### 啟動代理程式，並指定使用：
#### UDP over IPv4 (udp4) 通訊協定

* 埠號 8888
* 當你執行這個指令後，代理程式會開始聽取來自 MCU 的 UDP 封包，並與 ROS 2 DDS 架構做橋接。

```
MicroXRCEAgent udp4 -p 8888
```

## 安裝 ROS 2 Workspace
### 建構 PX4 與 ROS 2 通訊所需的套件 px4_ros_com 和 px4_msgs，這是你在使用 ROS 2 控制 PX4 飛控器（例如透過 offboard mode） 必備的步驟。
#### 這段指令會：
#### 建立一個 ROS 2 的工作區目錄，叫做 ws_sensor_combined
#### src/ 是用來放原始碼套件的資料夾（符合 ROS 2 工作區結構）
#### 然後切換進入 src/，準備放入套件
```
mkdir -p ~/ws_sensor_combined/src/
cd ~/ws_sensor_combined/src/
```
#### 下載 PX4 對應的 ROS 2 套件
```
git clone https://github.com/PX4/px4_msgs.git
git clone https://github.com/PX4/px4_ros_com.git

```
#### 回到工作區根目錄（~/ws_sensor_combined）
#### 載入 ROS 2 的環境變數（因為你正在使用 ROS 2 工具 colcon）
#### 使用 colcon build 編譯整個工作區
```
cd ..
source /opt/ros/humble/setup.bash
colcon build
```
![螢幕擷取畫面 2025-06-11 212933](https://hackmd.io/_uploads/rJJR4ZPQge.png)
 ## 安裝QGC
 [QGC安裝辦法](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/getting_started/download_and_install.html)
 
```
sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libfuse2 -y
sudo apt install libxcb-xinerama0 libxkbcommon-x11-0 libxcb-cursor-dev -y
```
#### 記得下載QGroundControl-x86_64.AppImage
#### 要進入你存放檔案的地方，我這邊是放在Downloads
```
cd Downloads
chmod +x ./QGroundControl-x86_64.AppImage
./QGroundControl-x86_64.AppImage
```

## 虛擬模擬

[PX4模擬](https://hackmd.io/@Yo6S6-QbTX2tGrnWSw-aUw/SyBNddx-lx)

## Offboard
#### 跟著官網做就行了
[官網](https://docs.px4.io/main/en/ros2/user_guide)
#### 建立一個資料夾可以操作offboard
```
mkdir -p ~/ws_sensor_combined/src/
cd ~/ws_sensor_combined/src/
git clone https://github.com/PX4/px4_msgs.git
git clone https://github.com/PX4/px4_ros_com.git
```
#### 因為我們是22.04，所以使用humble
```
cd ..
source /opt/ros/humble/setup.bash
colcon build
```

#### 以下跟著步驟做

```
cd ~/ws_sensor_combined/
source /opt/ros/humble/setup.bash
```

```
source install/local_setup.bash
```


```
ros2 launch px4_ros_com sensor_combined_listener.launch.py
```



成功會看到
![image](https://hackmd.io/_uploads/S1HRz4dxbe.png)












