好的,關於 PX4 官方指南的 ROS 2/MAVROS Offboard Control 模式 for Gazebo Classic 的建制方式,我會為您提供一個總體的指引和關鍵步驟。
🚨 重要提醒:
Gazebo Classic/ROS 2 組合: 儘管 PX4 仍在文件和舊的模擬啟動腳本中提到 Gazebo Classic,但 PX4 官方文件主要推薦在 ROS 2 環境中使用 Gazebo (Ignition) 或 Gazebo Classic (Legacy) 進行模擬。
MAVROS vs. DDS/uORB: 在 ROS 2 環境中,PX4 官方更傾向於使用 DDS/XRCE-DDS (透過
px4_ros_com模組) 直接與 ROS 2 通訊,而非 MAVROS。然而,如果您堅持使用 MAVROS,它通常用於 ROS 1,但在 ROS 2 中也存在其封裝。
🚀 PX4 ROS 2 + Gazebo Classic + Offboard Control 總體建制步驟
由於您提到 MAVROS 和 Gazebo Classic,這通常指向一個結合了 ROS 2 和 ROS 1 工具鏈的複雜設置,或者使用 MAVROS 的 ROS 2 版本。
步驟 1: 安裝開發環境與 PX4
安裝 Ubuntu 和 ROS 2: 建議使用 Ubuntu 20.04 (Foxy) 或 Ubuntu 22.04 (Humble),並安裝對應的 ROS 2 版本。
安裝 PX4 開發環境: 按照 PX4 官方指南安裝必要的工具鏈,包括 Gazebo Classic (SITL 所需)。
Bash# 官方建議的腳本會安裝所有依賴,包括 ROS 1 (Melodic/Noetic) 或 ROS 2 相關依賴 # 參閱 PX4 官方文件: Development Environment on Linux克隆並編譯 PX4-Autopilot:
Bashgit clone https://github.com/PX4/PX4-Autopilot.git --recursive cd PX4-Autopilot # 編譯一次以確保所有依賴和模擬器設置到位 # make px4_sitl gazebo-classic
步驟 2: 安裝 MAVROS (ROS 2 版本)
如果您確定要使用 MAVROS 而非 DDS,您需要安裝或從源碼編譯 ROS 2 版本的 MAVROS。
安裝 MAVROS 2 (如果可用於您的 ROS 2 版本):
Bash# 例如:對於 Humble sudo apt install ros-humble-mavros sudo apt install ros-humble-mavros-msgs # 安裝地理定位依賴 sudo apt install geographiclib # 運行安裝腳本 # wget https://raw.githubusercontent.com/mavlink/mavros/ros2/mavros/mavros/scripts/install_geographiclib_datasets.sh # sudo bash install_geographiclib_datasets.sh如果套件不可用,則從源碼編譯。
步驟 3: 建立 ROS 2 工作空間與 Offboard 範例
建立 ROS 2 工作空間:
Bashmkdir -p ~/px4_ws/src cd ~/px4_ws colcon build獲取 Offboard 範例代碼:
最推薦: 使用 PX4 官方在
PX4-Autopilot/src/modules/或PX4/px4_ros_com裡提供的 ROS 2 Offboard 範例 (通常基於 DDS,但邏輯相似)。MAVROS 範例: 尋找並克隆一個使用 MAVROS 2 的 Offboard 範例到
~/px4_ws/src。例如,可以參考 GitHub 上的 MAVROS 2 Offboard 範例。
編譯 ROS 2 工作空間:
Bashcd ~/px4_ws source /opt/ros/<您的ROS2版本>/setup.bash colcon build --packages-select <您的Offboard套件名稱> source install/local_setup.bash
步驟 4: 啟動模擬和 Offboard 控制
您需要啟動兩個主要部分:PX4 SITL (帶 Gazebo Classic) 和 ROS 2 Offboard 節點。
啟動 Gazebo Classic SITL (帶 MAVROS 介面):
在一個終端機中,切換到
PX4-Autopilot目錄,並使用啟動指令:Bashcd ~/PX4-Autopilot # 啟動 Iris 模型在 Gazebo Classic 中,並連接 MAVROS # 確切指令可能因 PX4 版本而異,通常為: ros2 launch mavros px4_posix.launch vehicle:=iris # 或者使用 PX4 內建的 SITL 腳本: # make px4_sitl gazebo-classic_iris您可能需要調整 PX4 內建的啟動腳本,確保它在 ROS 2 環境下能夠正確與 MAVROS 2 (如果使用) 或 DDS 橋接。
啟動 ROS 2 Offboard 控制節點:
在另一個終端機中,首先確保您的 ROS 2 工作空間環境已載入:
Bashcd ~/px4_ws source install/local_setup.bash然後執行您的 Offboard 節點:
Bashros2 run <您的Offboard套件名稱> <您的Offboard可執行檔名稱>
📖 關鍵參考 (基於官方文檔的 DDS 優先方法)
鑑於您提到了 PX4 官方指南,PX4 官方目前主要推薦使用 DDS/PX4-ROS 2-Comm 進行 Offboard Control:
官方 ROS 2 Offboard Control 範例:您可以直接參考 PX4 官方文檔中的 "ROS 2 Offboard Control Example"。這個範例使用
px4_ros_com進行通訊,它繞過了 MAVROS,直接使用 uORB-DDS 橋接,是更「官方」的 ROS 2 方式。請搜尋:
PX4 Guide ROS 2 Offboard Control Example
請問您是否需要我針對 ROS 2 + DDS/px4_ros_com 的官方指南方法進行詳細說明,還是您堅持使用 MAVROS 介面?
沒有留言:
張貼留言