<!-- 車輪位置 (Wheel Placement) -->
<!-- 輪子位於底盤中心,y 軸為兩側 -->
<xacro:property name="wheel_x_offset" value="0.0"/>
<xacro:property name="wheel_y_offset" value="${base_width * 0.5}"/>
<xacro:property name="wheel_z_center" value="${wheel_radius - base_height/2}"/>
<!-- 萬向輪位置 (Caster Placement) -->
<xacro:property name="caster_x_offset" value="${-base_length/2 + 0.05}"/>
<xacro:property name="caster_z_offset" value="${caster_radius - base_height/2}"/>
這些變數的定義旨在讓您的 URDF/Xacro 檔案更具彈性,方便調整機器人各部分的相對位置,而無需修改 URDF 文件中每個關節的硬編碼座標。
這段程式碼主要在做以下幾件事:
車輪位置 (Wheel Placement):
wheel_x_offset
: 設為0.0
,這意味著輪子將位於底盤的前後中心點。wheel_y_offset
: 使用base_width * 0.5
來計算,這是一個非常好的做法。它確保無論您如何改變底盤的寬度(base_width
),左右兩個輪子都會精確地貼在底盤的兩側。wheel_z_center
: 使用wheel_radius - base_height/2
來計算。這確保了輪子的中心點位於與底盤底部相同的高度。當您在 Gazebo 中放置機器人時,這樣可以讓機器人的底盤與地面保持恰當的距離,避免輪子懸空或穿透地面。
萬向輪位置 (Caster Placement):
caster_x_offset
: 使用-base_length/2 + 0.05
來計算,這將萬向輪向前移動了一點(0.05
公尺),使其位於機器人的前方,而不是正中央。這對於確保機器人穩定性至關重要,可以防止它在移動時傾斜。caster_z_offset
: 使用caster_radius - base_height/2
來計算,與車輪類似,這確保了萬向輪的中心點與底盤底部對齊。
為什麼這樣做是正確的?
這種參數化的方法是使用 Xacro 的核心優勢。它將機器人的物理尺寸與其在 URDF 中的位置定義分開,提供了以下幾個好處:
易於調整:當您需要更改機器人尺寸時,例如將底盤加長或加寬,您只需修改頂部的幾個變數(如
base_width
和base_length
),而無需手動調整每個輪子和感測器的座標。減少錯誤:手動計算和輸入座標容易出錯。使用數學運算(如
*
和/
)可以確保所有零件之間的相對位置關係是精確無誤的。可讀性:這讓您的 URDF 文件更加清晰易懂,其他人可以一目瞭然地看出各個零件的擺放邏輯。
總體而言,這些 Xacro 變數的定義非常專業且符合 ROS URDF/Xacro 的最佳實踐。它們為您的機器人模型提供了良好的結構和可維護性。
沒有留言:
張貼留言