2025年9月3日 星期三

車輪位置 by xacro format

 

  <!-- 車輪位置 (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_widthbase_length),而無需手動調整每個輪子和感測器的座標。

  • 減少錯誤:手動計算和輸入座標容易出錯。使用數學運算(如 */)可以確保所有零件之間的相對位置關係是精確無誤的。

  • 可讀性:這讓您的 URDF 文件更加清晰易懂,其他人可以一目瞭然地看出各個零件的擺放邏輯。

總體而言,這些 Xacro 變數的定義非常專業且符合 ROS URDF/Xacro 的最佳實踐。它們為您的機器人模型提供了良好的結構和可維護性。




沒有留言:

張貼留言