檢查 URDF (Unified Robot Description Format) 或 XACRO (XML Macro) 格式的正確性是機器人建模中至關重要的一步。如果格式有誤,ROS 的各個工具(如 MoveIt!、Gazebo、Rviz)將無法正確解析和使用機器人模型。
以下是檢查這兩種格式最標準且最有效的步驟和指令:
1. 檢查 XACRO 檔案(*.xacro
)
XACRO 是一種宏語言,它必須先被轉換成純粹的 URDF 檔案,才能進行最終的語法檢查。
步驟 A: XACRO 轉 URDF
此步驟會檢查 XACRO 的宏、參數、數學運算是否正確,並將其展開為單一、完整的 URDF 檔案。
驗證:
成功: 如果指令執行成功,且終端機沒有顯示任何錯誤訊息,則表示 XACRO 自身的語法和宏的展開是正確的。新的
robot_generated.urdf
檔案將會出現在當前目錄下。失敗: 如果 XACRO 檔案中有引用錯誤、宏定義錯誤、或數學運算錯誤,
xacro
會拋出XacroException
錯誤。
步驟 B: 檢查 XACRO 轉譯的 URDF 語法
你可以將兩個步驟合併為一條指令(適用於 ROS 2 或較新的 ROS 1 版本):
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
check_urdf <你的檔案>.urdf
驗證:
成功: 如果檔案語法正確,它會顯示機器人的基本資訊,例如:
robot name is: my_robot -------------Successfully Parsed XML------------- root Link: base_link has X child(ren) ...
失敗: 如果 URDF 有任何 XML 結構錯誤 (例如標籤未閉合) 或 URDF 規範錯誤 (例如找不到
parent
或child
link),它會顯示詳細的錯誤訊息,指出錯誤的行號和原因。
3. 視覺化驗證 (最實用且可靠)
雖然命令列工具可以檢查語法,但只有 Rviz 或 Gazebo 才能確認你的機器人模型在幾何、位置和關節上是否符合預期。
步驟 A: 在 Rviz 中視覺化模型
這是在 ROS 環境下檢查模型正確性的黃金標準。如果模型能在 Rviz 中正確顯示並能移動,則說明 URDF/XACRO 檔案是完全正確的。
確保 ROS 環境已設定。
使用
robot_state_publisher
啟動模型:ROS 2: 你通常會撰寫一個
launch
檔案來載入 XACRO/URDF 檔案,並啟動robot_state_publisher
和joint_state_publisher_gui
。Bash# 範例:使用 launch 檔案 ros2 launch <你的package> display.launch.py model:=<你的檔案>.urdf.xacro
ROS 1 (舊方法):
Bashroslaunch urdf_tutorial display.launch model:=<你的檔案路徑>/robot.urdf.xacro
在 Rviz 中檢查:
確認模型外觀: 檢查各個
link
的幾何形狀(visual
tag)是否正確,位置是否正確,沒有奇怪的偏移或旋轉。確認關節運動: 在啟動的
joint_state_publisher_gui
視窗中拖動滑桿,檢查機器人的joint
運動是否符合預期(如旋轉方向、角度限制等)。
步驟 B: 使用 urdf_to_graphiz
(可選)
這個工具可以生成一個 PDF 檔案,用圖形化的方式展示機器人 Link 和 Joint 的層級關係,對於複雜的機械手臂模型非常有用。
安裝工具:
Bash# ROS 1/2 sudo apt install graphviz sudo apt install ros-$(rosversion -d)-urdf-to-graphiz
執行指令:
Bashurdf_to_graphiz <你的檔案>.urdf
(如果你使用 XACRO,請先轉換成
.urdf
檔案再執行此命令。)驗證: 它會生成一個
.pdf
檔案(例如my_robot.pdf
),清晰地展示所有 Link 和 Joint 的樹狀結構。
在您的自走車與機械手臂整合專案中,我強烈建議使用 Rviz 視覺化驗證。這能同時檢查 URDF 結構和 TF 座標系是否正確,確保手臂和底盤的座標轉換(<origin>
標籤)沒有錯誤,這是實現精準抓取的核心前提。
沒有留言:
張貼留言