探索 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" 錯誤。
cd <您的 PX4-Autopilot 目錄路徑>
make clean
# 或者更徹底的清理 (如果上面不行就用這個):
# make distclean
2. 構建 SITL 目標
我們使用 Gazebo 作為模擬器。最常見且通常是預設的 Gazebo 模型是四旋翼飛行器 (Iris),它適合測試 SITL 的基本功能。
# 這是標準的構建指令:構建 px4_sitl 目標,並指定與 Gazebo 搭配
make px4_sitl gazebo_iris
成功標誌: 如果構建成功,您應該會在
build/px4_sitl_default/bin/目錄下找到px4這個可執行檔。
步驟二:執行 SITL 與 Gazebo 連接
當構建成功後,您可以使用 make 命令直接啟動模擬環境。
1. 啟動 Iris 模型模擬
這個命令會執行以下動作:
啟動
px4SITL 執行檔。將
px4連接到 Gazebo 實例。在 Gazebo 中載入一個名為
iris的四旋翼模型。在終端機中啟動 QGroundControl (GCS) 介面(如果已安裝)。
# 在 PX4-Autopilot 根目錄下執行:
make px4_sitl gazebo_iris
2. 啟動自訂模型模擬 (例如地面車輛)
如果您要模擬地面車輛(與您的 AMR 相似),PX4 提供了地面車的預設目標,例如 rover:
# 構建並啟動地面車輛
make px4_sitl gazebo_rover
觀察現象:
將會彈出 Gazebo 視窗,並載入您指定的模型 (例如 Iris 或 Rover)。
在執行的終端機中,您會看到 PX4 韌體的輸出日誌,包含
uORB主題發布狀態、感測器初始化等資訊。
步驟三:ROS2/MAVLink 介面(銜接 ROS2 導航)
要讓您的 ROS2 導航堆疊(例如 SLAM 或規劃器)能夠控制這個 SITL 實例,您需要一個 MAVLink 橋接器。
ROS2 的推薦選項是 px4_ros_pkg 或 mavros:
安裝 MAVROS (傳統但穩定):
Bash# (如果使用 ROS Humble 或更新版本,請確認您的 MAVROS 版本支援 ROS2) # 通常透過 apt 安裝 sudo apt install ros-<您的ROS版本>-mavros ros-<您的ROS版本>-mavros-msgs啟動 MAVROS 節點: 在 SITL 運行時,您在另一個終端機中執行 MAVROS 節點。它會自動偵測 PX4 SITL 的 MAVLink 流量。
Bashros2 launch mavros mavros_node.launch fcu_url:=udp://:14540@127.0.0.1:14557fcu_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配置,以便使用原生的 ROS2diff_drive_controller? (這將是下一步推進 AMR 專案的關鍵)
沒有留言:
張貼留言