2025年11月24日 星期一

PX4 SITL 模擬

 探索 PX4 SITL 模擬,這是個很好的選擇,因為它可以讓您在軟體層次上驗證控制邏輯。

啟動 PX4 SITL(Software-in-the-Loop)模擬涉及兩個主要步驟:構建(Build) 韌體,然後 執行(Run) 韌體並連接到模擬器(通常是 Gazebo)。

由於您先前遇到了編譯錯誤,我們將從最穩定的流程開始。

🚀 啟動 PX4 SITL 模擬步驟

這個流程假設您已經在 Linux 環境下配置了所有必要的依賴項,例如 ROS、Gazebo、和 PX4 的工具鏈。

步驟一:構建 PX4 SITL 目標 (解決編譯問題)

我們需要成功構建 px4_sitl 執行檔。請確保您位於 PX4-Autopilot 專案的根目錄下。

1. 執行清理 (Clean)

我們首先執行強制的清理,以解決您先前的 "still dirty" 錯誤。

Bash
cd <您的 PX4-Autopilot 目錄路徑>
make clean 
# 或者更徹底的清理 (如果上面不行就用這個):
# make distclean

2. 構建 SITL 目標

我們使用 Gazebo 作為模擬器。最常見且通常是預設的 Gazebo 模型是四旋翼飛行器 (Iris),它適合測試 SITL 的基本功能。

Bash
# 這是標準的構建指令:構建 px4_sitl 目標,並指定與 Gazebo 搭配
make px4_sitl gazebo_iris
  • 成功標誌: 如果構建成功,您應該會在 build/px4_sitl_default/bin/ 目錄下找到 px4 這個可執行檔。


步驟二:執行 SITL 與 Gazebo 連接

當構建成功後,您可以使用 make 命令直接啟動模擬環境。

1. 啟動 Iris 模型模擬

這個命令會執行以下動作:

  1. 啟動 px4 SITL 執行檔。

  2. px4 連接到 Gazebo 實例。

  3. 在 Gazebo 中載入一個名為 iris 的四旋翼模型。

  4. 在終端機中啟動 QGroundControl (GCS) 介面(如果已安裝)。

Bash
# 在 PX4-Autopilot 根目錄下執行:
make px4_sitl gazebo_iris

2. 啟動自訂模型模擬 (例如地面車輛)

如果您要模擬地面車輛(與您的 AMR 相似),PX4 提供了地面車的預設目標,例如 rover

Bash
# 構建並啟動地面車輛
make px4_sitl gazebo_rover
  • 觀察現象:

    • 將會彈出 Gazebo 視窗,並載入您指定的模型 (例如 Iris 或 Rover)。

    • 在執行的終端機中,您會看到 PX4 韌體的輸出日誌,包含 uORB 主題發布狀態、感測器初始化等資訊。


步驟三:ROS2/MAVLink 介面(銜接 ROS2 導航)

要讓您的 ROS2 導航堆疊(例如 SLAM 或規劃器)能夠控制這個 SITL 實例,您需要一個 MAVLink 橋接器。

ROS2 的推薦選項是 px4_ros_pkgmavros

  1. 安裝 MAVROS (傳統但穩定):

    Bash
    # (如果使用 ROS Humble 或更新版本,請確認您的 MAVROS 版本支援 ROS2)
    # 通常透過 apt 安裝
    sudo apt install ros-<您的ROS版本>-mavros ros-<您的ROS版本>-mavros-msgs
    
  2. 啟動 MAVROS 節點: 在 SITL 運行時,您在另一個終端機中執行 MAVROS 節點。它會自動偵測 PX4 SITL 的 MAVLink 流量。

    Bash
    ros2 launch mavros mavros_node.launch fcu_url:=udp://:14540@127.0.0.1:14557
    
    • fcu_url: 指定了 MAVROS 應該在哪裡監聽 PX4 SITL 的 MAVLink 通訊。

完成這些步驟後:

  • PX4 SITL 在背景運行,執行控制邏輯。

  • Gazebo 提供物理模擬。

  • MAVROS 負責將 PX4 的數據 (例如姿態、位置) 轉為 ROS Topics,並將 ROS Commands (例如速度指令) 轉為 MAVLink 傳給 PX4。

🚨 建議 (針對您的 AMR 專案)

雖然 PX4 SITL 是一個強大的工具,但對於標準的 ROS2 兩輪車 AMR,使用 ros2_control 搭配 diff_drive_controller 通常更簡單、更直接,且更符合 ROS 生態系統的設計。它省去了 MAVLink 橋接的複雜性。

您希望:

  • A. 繼續調試 PX4 SITL 的啟動過程,並確認您能看到 Gazebo 視窗?

  • B. 暫時將 PX4 放在一邊,讓我協助您審查 URDF/ros2_control 配置,以便使用原生的 ROS2 diff_drive_controller (這將是下一步推進 AMR 專案的關鍵)

沒有留言:

張貼留言