這兩個 Xacro (XML Macro) 文件分別定義了:
macros.xacro:包含機器人模型的 慣性計算巨集,
可用來計算不同形狀(圓柱、長方體、球體)的慣性張量。
materials.xacro:定義了一些 材質顏色,用於機器人模型的視覺外觀設定。
1 macros.xacro(巨集函數)
這個文件主要包含用來 計算物理屬性的巨集,適用於機器人不同形狀的零件。
#主要功能
定義不同形狀的慣性 (inertia) 計算方式
使用 Xacro 巨集 (<macro>) 來避免重複編寫慣性張量
#內容解析
<?xml version="1.0"?>
<robot>
<!-- 圓柱形慣性計算 -->
<macro name="cylinder_inertia" params="m r h">
<inertia
ixx="${m*(3*r*r+h*h)/12}" ixy="0" ixz="0"
iyy="${m*(3*r*r+h*h)/12}" iyz="0"
izz="${m*r*r/2}"
/>
</macro>
<!-- 長方體慣性計算 -->
<macro name="box_inertia" params="m x y z">
<inertia
ixx="${m*(y*y+z*z)/12}" ixy="0" ixz="0"
iyy="${m*(x*x+z*z)/12}" iyz="0"
izz="${m*(x*x+y*y)/12}"
/>
</macro>
<!-- 球形慣性計算 -->
<macro name="sphere_inertia" params="m r">
<inertia
ixx="${2*m*r*r/5}" ixy="0" ixz="0"
iyy="${2*m*r*r/5}" iyz="0"
izz="${2*m*r*r/5}"
/>
</macro>
</robot>
#macros.xacro 的作用 避免重複計算慣性張量
直接使用 <xacro:cylinder_inertia>、<xacro:box_inertia>、<xacro:sphere_inertia>,不用每次手動計算。
計算不同形狀的慣性
cylinder_inertia (m, r, h) → 計算圓柱的慣性。
box_inertia (m, x, y, z) → 計算長方體的慣性。
sphere_inertia (m, r) → 計算球體的慣性。
#使用方式
假設有一個長方體底盤,使用巨集來計算慣性:
<link name="chassis">
<inertial>
<mass value="10.0"/>
<xacro:box_inertia m="10.0" x="0.5" y="0.3" z="0.1"/>
</inertial>
</link>
這樣就不需要手動寫 <inertia>,提高可讀性與可重用性。
2materials.xacro(機器人材質)
這個文件負責 定義機器人的材質顏色,主要透過 <material> 來指定不同顏色。
#內容解析
<?xml version="1.0"?>
<robot>
<!-- 定義黑色 -->
<material name="black">
<color rgba="0.0 0.0 0.0 1.0"/>
</material>
<!-- 定義藍色 -->
<material name="blue">
<color rgba="0.0 0.0 0.8 1.0"/>
</material>
<!-- 定義綠色 -->
<material name="green">
<color rgba="0.0 0.8 0.0 1.0"/>
</material>
<!-- 定義灰色 -->
<material name="grey">
<color rgba="0.2 0.2 0.2 1.0"/>
</material>
<!-- 定義橙色 -->
<material name="orange">
<color rgba="${255/255} ${108/255} ${10/255} 1.0"/>
</material>
<!-- 定義棕色 -->
<material name="brown">
<color rgba="${222/255} ${207/255} ${160/255} 1.0"/>
</material>
</robot>
#materials.xacro 的作用
統一機器人顏色管理
讓所有機器人的材質都來自 materials.xacro,方便修改顏色。
提高可讀性
透過 <material name="xxx"> 讓 URDF 變得更簡潔。
#使用方式
在 myrobot.xacro 中,可以這樣引用材質:
<visual>
<geometry>
<box size="0.5 0.3 0.1"/>
</geometry>
<material name="blue"/>
</visual>
這樣 chassis 就會變成藍色,而不需要手動寫 RGB 值。
#總結
組件 作用 主要內容
macros.xacro 計算機器人不同形狀的 慣性 提供 cylinder_inertia、box_inertia、sphere_inertia 巨集
materials.xacro 定義機器人的材質顏色 提供 black、blue、green、grey、orange、brown 等材質
這兩個 Xacro 文件 幫助簡化機器人模型的定義,提高可讀性與可重用性。
#你可以這樣做
若要新增新的材質 → 在 materials.xacro 裡加一個 <material>。
若要新增新的幾何形狀 → 在 macros.xacro 裡加一個 <macro>。
這樣未來修改顏色或物理屬性時,只需要改一個地方,不需要到處修改 URDF 文件。
沒有留言:
張貼留言