# 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 ```  ## 安裝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 ``` #### 以下為成功發出訊息示意圖  ``` source /opt/ros/humble/setup.bash ros2 run demo_nodes_py listener ``` #### 以下為成功接收訊息示意圖  ## 設定 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 ```  ## 安裝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 ``` 成功會看到 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up