2025年9月30日 星期二

檢查 URDF (Unified Robot Description Format) 或 XACRO (XML Macro) 格式

 檢查 URDF (Unified Robot Description Format)XACRO (XML Macro) 格式的正確性是機器人建模中至關重要的一步。如果格式有誤,ROS 的各個工具(如 MoveIt!、Gazebo、Rviz)將無法正確解析和使用機器人模型。

以下是檢查這兩種格式最標準且最有效的步驟和指令:


1. 檢查 XACRO 檔案(*.xacro

XACRO 是一種宏語言,它必須先被轉換成純粹的 URDF 檔案,才能進行最終的語法檢查。

步驟 A: XACRO 轉 URDF

此步驟會檢查 XACRO 的宏、參數、數學運算是否正確,並將其展開為單一、完整的 URDF 檔案。

ROS 版本指令 (在終端機執行)說明
ROS 1 & ROS 2rosrun xacro xacro <你的檔案>.urdf.xacro > robot_generated.urdf使用 xacro 工具解析 XACRO 檔案,並將最終生成的純 URDF 內容 重新導向 到一個新的 robot_generated.urdf 檔案中。
  • 驗證:

    • 成功: 如果指令執行成功,且終端機沒有顯示任何錯誤訊息,則表示 XACRO 自身的語法和宏的展開是正確的。新的 robot_generated.urdf 檔案將會出現在當前目錄下。

    • 失敗: 如果 XACRO 檔案中有引用錯誤、宏定義錯誤、或數學運算錯誤,xacro 會拋出 XacroException 錯誤。

步驟 B: 檢查 XACRO 轉譯的 URDF 語法

你可以將兩個步驟合併為一條指令(適用於 ROS 2 或較新的 ROS 1 版本):

Bash
check_urdf <(rosrun xacro xacro <你的檔案>.urdf.xacro)
  • 說明: 這個指令利用 shell 的程序替換功能,將 XACRO 的輸出(純 URDF)直接作為 check_urdf 的輸入,而無需創建一個臨時檔案。


2. 檢查 URDF 檔案(*.urdf

check_urdf 是 ROS 中專門用來檢查 URDF 檔案結構和語法正確性的工具。

指令: 基礎語法檢查

確保你已安裝 liburdfdom-tools

  • ROS 1/2: sudo apt install liburdfdom-tools

Bash
check_urdf <你的檔案>.urdf
  • 驗證:

    • 成功: 如果檔案語法正確,它會顯示機器人的基本資訊,例如:

      robot name is: my_robot
      -------------Successfully Parsed XML-------------
      root Link: base_link has X child(ren)
      ...
      
    • 失敗: 如果 URDF 有任何 XML 結構錯誤 (例如標籤未閉合) 或 URDF 規範錯誤 (例如找不到 parentchild link),它會顯示詳細的錯誤訊息,指出錯誤的行號和原因。


3. 視覺化驗證 (最實用且可靠)

雖然命令列工具可以檢查語法,但只有 RvizGazebo 才能確認你的機器人模型在幾何、位置和關節上是否符合預期。

步驟 A: 在 Rviz 中視覺化模型

這是在 ROS 環境下檢查模型正確性的黃金標準。如果模型能在 Rviz 中正確顯示並能移動,則說明 URDF/XACRO 檔案是完全正確的。

  1. 確保 ROS 環境已設定。

  2. 使用 robot_state_publisher 啟動模型:

    • ROS 2: 你通常會撰寫一個 launch 檔案來載入 XACRO/URDF 檔案,並啟動 robot_state_publisherjoint_state_publisher_gui

      Bash
      # 範例:使用 launch 檔案
      ros2 launch <你的package> display.launch.py model:=<你的檔案>.urdf.xacro
      
    • ROS 1 (舊方法):

      Bash
      roslaunch urdf_tutorial display.launch model:=<你的檔案路徑>/robot.urdf.xacro
      
  3. 在 Rviz 中檢查:

    • 確認模型外觀: 檢查各個 link 的幾何形狀(visual tag)是否正確,位置是否正確,沒有奇怪的偏移或旋轉。

    • 確認關節運動: 在啟動的 joint_state_publisher_gui 視窗中拖動滑桿,檢查機器人的 joint 運動是否符合預期(如旋轉方向、角度限制等)。

步驟 B: 使用 urdf_to_graphiz (可選)

這個工具可以生成一個 PDF 檔案,用圖形化的方式展示機器人 Link 和 Joint 的層級關係,對於複雜的機械手臂模型非常有用。

  1. 安裝工具:

    Bash
    # ROS 1/2
    sudo apt install graphviz
    sudo apt install ros-$(rosversion -d)-urdf-to-graphiz
    
  2. 執行指令:

    Bash
    urdf_to_graphiz <你的檔案>.urdf
    

    (如果你使用 XACRO,請先轉換成 .urdf 檔案再執行此命令。)

  3. 驗證: 它會生成一個 .pdf 檔案(例如 my_robot.pdf),清晰地展示所有 LinkJoint 的樹狀結構。

在您的自走車與機械手臂整合專案中,我強烈建議使用 Rviz 視覺化驗證。這能同時檢查 URDF 結構TF 座標系是否正確,確保手臂和底盤的座標轉換(<origin> 標籤)沒有錯誤,這是實現精準抓取的核心前提。




沒有留言:

張貼留言