welcom ! Handel home

2025年11月13日 星期四

PX4_ROS 2/MAVROS Offboard Control 模式 for Gazebo Classic

 好的,關於 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 總體建制步驟

由於您提到 MAVROSGazebo Classic,這通常指向一個結合了 ROS 2 和 ROS 1 工具鏈的複雜設置,或者使用 MAVROS 的 ROS 2 版本。

步驟 1: 安裝開發環境與 PX4

  1. 安裝 Ubuntu 和 ROS 2: 建議使用 Ubuntu 20.04 (Foxy)Ubuntu 22.04 (Humble),並安裝對應的 ROS 2 版本。

  2. 安裝 PX4 開發環境: 按照 PX4 官方指南安裝必要的工具鏈,包括 Gazebo Classic (SITL 所需)。

    Bash
    # 官方建議的腳本會安裝所有依賴,包括 ROS 1 (Melodic/Noetic) 或 ROS 2 相關依賴
    # 參閱 PX4 官方文件: Development Environment on Linux
    
  3. 克隆並編譯 PX4-Autopilot:

    Bash
    git 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。

  1. 安裝 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
    
  2. 如果套件不可用,則從源碼編譯。

步驟 3: 建立 ROS 2 工作空間與 Offboard 範例

  1. 建立 ROS 2 工作空間:

    Bash
    mkdir -p ~/px4_ws/src
    cd ~/px4_ws
    colcon build
    
  2. 獲取 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 範例。

  3. 編譯 ROS 2 工作空間:

    Bash
    cd ~/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 節點

  1. 啟動 Gazebo Classic SITL (帶 MAVROS 介面):

    • 在一個終端機中,切換到 PX4-Autopilot 目錄,並使用啟動指令:

      Bash
      cd ~/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 橋接。

  2. 啟動 ROS 2 Offboard 控制節點:

    • 在另一個終端機中,首先確保您的 ROS 2 工作空間環境已載入:

      Bash
      cd ~/px4_ws
      source install/local_setup.bash
      
    • 然後執行您的 Offboard 節點:

      Bash
      ros2 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 介面?

沒有留言: