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

ROS1 catkin build 介紹



🛠️ catkin build 介紹

catkin build 是一個用於建構(build)ROS (Robot Operating System) 專案的指令。它是 catkin_make 的一個更現代、更強大的替代品,設計用於建構大型的 Catkin 工作空間(workspace)。

核心功能與優勢

  1. 平行建構 (Parallelism):

    • catkin build 最重要的優勢之一是它能自動利用您的電腦的多核處理器,同時建構多個套件 (packages)。這顯著加快了大型工作空間的建構時間。

  2. 單一套件建構 (Isolating Package Builds):

    • 如果某個套件建構失敗,catkin build 通常可以更清楚地指示是哪個套件出錯,而且只會嘗試重新建構失敗的套件及其相依項,而不是整個工作空間。

  3. 更清晰的輸出 (Better Output):

    • 它提供了一個更簡潔、更具組織性的終端機輸出,讓您可以一目了然地看到哪些套件正在建構、哪些已完成,以及建構所需的時間。

  4. 隔離的建構空間 (Isolated Build Space):

    • catkin build 會在工作空間(通常是 src 資料夾的父目錄)中建立一個獨立的 build 資料夾來存放所有中間建構檔案,而不是像 catkin_make 一樣將所有東西都放在一個 devel 資料夾中。

    • 它還提供一個隔離的安裝空間 (isolated install space),這對於建立發行版或測試單一套件的安裝效果很有幫助。

基本使用

1. 安裝 (如果尚未安裝)

catkin build 並不屬於 ROS 的核心安裝,但通常會隨 ROS 系統一起安裝。如果沒有,您可能需要安裝它:

Bash
sudo apt update
sudo apt install python3-catkin-tools

或對於舊版 ROS (如 Melodic/Kinetic):

Bash
sudo apt update
sudo apt install python-catkin-tools

2. 建立 Catkin 工作空間

您需要一個標準的 Catkin 工作空間結構。

Bash
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace # 建立一個空的 CATKIN_IGNORE 檔案
cd ..

3. 執行建構

在您的工作空間根目錄(例如 ~/catkin_ws)下執行:

Bash
catkin build
  • 建構特定的套件:

    Bash
    catkin build <package_name>
    
  • 清除並重新建構 (Clean and Build):

    Bash
    catkin clean # 清除建構檔案
    catkin build
    

4. 設定環境

建構完成後,您需要將新的執行檔路徑加入到您的終端機環境中,這樣您才能執行您建構的節點 (nodes):

Bash
source ~/catkin_ws/devel/setup.bash
# 如果您使用了 --install 選項,則改為
# source ~/catkin_ws/install/setup.bash

總結

特性catkin buildcatkin_make
平行建構預設啟用,效率更高需手動使用 -j 參數
工作空間結構有單獨的 build 資料夾,更乾淨建構結果都放在 devel
指令介面提供更多選項,更清晰的輸出較為基本
推薦用途推薦用於所有 Catkin 工作空間適用於簡單、單一套件的建構

您是否希望我進一步介紹 catkin build 的常用選項(例如:-j--install--cmake-args)或是說明 如何將現有的 catkin_make 工作空間轉換為使用 catkin build 呢?

2025年11月12日 星期三

PX4-ROS 無人導航開發研究

PX4-ROS 無人導航開發研究

一個使用 ROS、Gazebo 和 PX4 進行四軸無人機自主導航的互動式研究計畫

專案總覽

本計畫的目標是研究與開發一套基於 PX4 飛行控制器、ROS (機器人作業系統) 和 Gazebo 模擬環境的四軸無人機自主導航系統。這將涉及飛行器的基本配置、感測器的整合(如 LiDAR 和立體相機)、SLAM(即時定位與地圖構建)演算法的實現,以及最終在模擬和現實世界中的導航驗證。此儀表板將作為我們研究和開發過程的指南。

下圖展示了本研究計畫的三個核心階段:硬體配置、感知導航以及系統組裝。每個階段都是後續步驟的基礎。

Rviz (ROS Visualization) 介紹說明

 Rviz 是 ROS 生態系統中一個不可或缺的視覺化工具,它與 Gazebo 各司其職,共同構成了機器人模擬和除錯的兩大支柱。


👁️ Rviz (ROS Visualization) 介紹說明

Rviz (ROS Visualization) 是一個 3D 可視化環境,它能以圖形化方式展示 ROS 系統的狀態信息、傳感器數據、地圖、路徑規劃等。

簡而言之:

  • Gazebo模擬 物理世界和生成逼真傳感器數據的工具。

  • Rviz視覺化 ROS 系統內部數據和狀態的工具。

📊 Rviz 的核心功能與角色

特性Rviz (ROS Visualization)
主要功能視覺化 ROS Topic 數據,如點雲、影像、路徑、地圖和 TF 座標系。
輸入/輸出輸入: 監聽 ROS Topic。 輸出: 3D 視覺化圖形。
物理模擬無。 Rviz 僅顯示數據,不進行任何物理或動力學計算。
核心優勢除錯與分析。它能將抽象的數據(例如一個 4x4 的變換矩陣或一大串 LiDAR 點)以直觀的 3D 方式呈現給開發者。

🔍 在您的 ROS 整合專案中的應用

對於您的「ROS URDF 自走車與機械手臂整合」專案來說,Rviz 將是您除錯和展示成果的主要介面

1. 機器人模型與狀態

  • 功能: Rviz 透過訂閱 /robot_description (URDF 內容) 和 /joint_states 兩個 Topic,顯示機器人模型的幾何外觀和當前關節角度。

  • 應用: 您可以在 Rviz 中實時查看自走車底盤和機械手臂是否按照控制指令正確移動。

2. 地圖與定位 (SLAM/Navigation)

  • 功能: Rviz 訂閱地圖 Topic (/map) 和定位 Topic (/amcl_pose 或 EKF/UKF 輸出)。

  • 應用: 您可以直觀地看到機器人在環境地圖中的位置、它估計的姿態 (Pose),以及它正在使用的導航路徑。

3. 感知與電腦視覺 (Perception)

  • 功能: Rviz 訂閱 LiDAR 數據 (/scan/point_cloud)、深度攝影機的影像和點雲數據。

  • 應用:

    • LiDAR: 檢查 LiDAR 點雲是否正確反映環境中的障礙物。

    • 物件抓取: 視覺化電腦視覺算法識別出的目標物件的位置和邊界框 (Bounding Box),通常以 Marker 形式顯示。

4. 協同動作與除錯 (MoveIt! & tf2)

  • 功能:

    • MoveIt! Plugin: Rviz 內建 MoveIt! 插件,用來執行和視覺化手臂的動作規劃。您可以設定起始點和目標點,MoveIt! 會在 Rviz 中顯示規劃出的路徑 (Path),以及可能發生的碰撞區域

    • TF 座標樹: Rviz 可以顯示 ROS 系統中所有定義的 tf 座標系 (frames),以及它們之間的層級關係。

  • 應用: 這是您解決座標轉換難題的命脈。您可以觀察 mapodombase_linkarm_base_linkend_effector 等座標系之間的轉換關係是否正確、是否隨車輛移動而正確更新。


🎯 下一步指導

您現在對這個整合專案的三個核心要素 (ROS, URDF, Gazebo, Rviz) 都有了基礎理解。接下來,我們將開始設計模型和除錯的關鍵步驟。

我們應該著手解決這個整合系統中最關鍵的兩大挑戰之一:

  1. ⚙️ XACRO 模型結構規劃: 如何為您的自走車與機械手臂組合,規劃一個穩健的 XACRO 檔案結構,確定所有 link 和 joint 的命名以及它們的幾何關係?

  2. 🗺️ tf2 座標樹設計: 專門設計一個穩定的 tf2 座標轉換樹 (tF tree),以便處理車體移動時,手臂座標系變動的問題,這是自走車和手臂協作的命脈?