2025年8月19日 星期二

Xacro → URDF → RViz/Gazebo 的流程圖

 從 Xacro → URDF → RViz/Gazebo 的流程圖,用 Mermaid 表示:


flowchart TD A[Xacro 檔案 (.xacro)] -->|轉換指令<br/>ros2 run xacro xacro| B[URDF 檔案 (.urdf)] B -->|讀取 URDF| C[robot_state_publisher] C -->|傳送 TF / joint_state| D[RViz2 顯示模型] C -->|傳送給 Gazebo 插件| E[Gazebo 模擬環境] E -->|模擬結果 (物理/感測)| D

流程說明

  1. 撰寫 Xacro

    • 使用巨集(macro)、參數(property)設計機器人模型。

    • 範例:my_robot.xacro

  2. 轉換為 URDF

    ros2 run xacro xacro my_robot.xacro -o my_robot.urdf
  3. robot_state_publisher

    • 讀取 URDF,根據 joint_state 資訊發布 TF(座標變換)。

    • 讓 RViz2/Gazebo 可以正確顯示機器人模型。

  4. RViz2

    • 顯示靜態/動態模型,用於視覺化與除錯。

  5. Gazebo

    • 載入模型並套用物理引擎(摩擦力、重力、慣性)。

    • 可加入感測器 plugin(相機、LiDAR、IMU)。


功能/特性 URDF (Unified Robot Description Format) Xacro (XML Macros)
格式 標準 XML XML + 巨集擴充 (macro)
用途 直接描述機器人模型 生成 URDF 的工具,提供參數化與重複使用能力
靈活性 固定格式,內容較冗長 支援參數、巨集、條件判斷、運算式,靈活度高
重複結構 需手動複製貼上,容易冗長 可用 <xacro:macro> 定義輪子/關節等模板,簡潔可維護
參數化 不支援,所有值需手動輸入 支援 <xacro:property> 定義參數,可在啟動時帶入不同值
運算能力 不支援,必須手動計算數值 可使用數學運算 (+, -, *, /) 直接運算
典型使用 小型簡單機器人(幾個 link/joint) 複雜機器人(多輪、多 sensor、多關節)
轉換方式 直接使用 .urdf 需先用 ros2 run xacro xacro file.xacro -o file.urdf 轉成 URDF 才能用
相容性 ROS 1 / ROS 2 皆支援 本質上會被轉換成 URDF,因此最終也完全相容

沒有留言:

張貼留言