wkentaro
7/8/2016 - 3:08 AM

patch.diff

diff --git a/fanuc_lrmate200id_support/urdf/lrmate200id_macro.xacro b/fanuc_lrmate200id_support/urdf/lrmate200id_macro.xacro
index 1726dfa..1f82a04 100644
--- a/fanuc_lrmate200id_support/urdf/lrmate200id_macro.xacro
+++ b/fanuc_lrmate200id_support/urdf/lrmate200id_macro.xacro
@@ -3,6 +3,25 @@
   <xacro:include filename="$(find fanuc_resources)/urdf/common_materials.xacro"/>
   <xacro:include filename="$(find fanuc_resources)/urdf/common_constants.xacro"/>
 
+  <xacro:macro name="cylinder_inertial" params="radius length mass *origin">
+    <inertial>
+      <mass value="${mass}" />
+      <insert_block name="origin" />
+      <inertia ixx="${0.0833333 * mass * (3 * radius * radius + length * length)}" ixy="0.0" ixz="0.0"
+               iyy="${0.0833333 * mass * (3 * radius * radius + length * length)}" iyz="0.0"
+               izz="${0.5 * mass * radius * radius}" />
+    </inertial>
+  </xacro:macro>
+
+  <!-- Inertia parameters -->
+  <property name="base_link_mass" value="8.0" />  <!-- This mass might be incorrect -->
+  <property name="link_1_mass" value="2.13" />
+  <property name="link_2_mass" value="7.65" />
+  <property name="link_3_mass" value="2.91" />
+  <property name="link_4_mass" value="3.70" />
+  <property name="link_5_mass" value="1.70" />
+  <property name="link_6_mass" value="1.0" />  <!-- This mass might be incorrect -->
+
   <xacro:macro name="fanuc_lrmate200id" params="prefix">
     <link name="${prefix}base_link">
       <visual>
@@ -18,11 +37,9 @@
           <mesh filename="package://fanuc_lrmate200id_support/meshes/lrmate200id/collision/base_link.stl"/>
         </geometry>
       </collision>
-      <inertial>
-        <origin rpy="0 0 0" xyz="0 0 0"/>
-        <mass value="9"/>
-        <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
-      </inertial>
+      <xacro:cylinder_inertial radius="0.085" length="0.168" mass="${base_link_mass}">
+        <origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
+      </xacro:cylinder_inertial>
     </link>
     <link name="${prefix}link_1">
       <visual>
@@ -38,11 +55,9 @@
           <mesh filename="package://fanuc_lrmate200id_support/meshes/lrmate200id/collision/link_1.stl"/>
         </geometry>
       </collision>
-      <inertial>
-        <origin rpy="0 0 0" xyz="0 0 0"/>
-        <mass value="5"/>
-        <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
-      </inertial>
+      <xacro:cylinder_inertial radius="0.08" length="0.22" mass="${link_1_mass}">
+        <origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
+      </xacro:cylinder_inertial>
     </link>
     <link name="${prefix}link_2">
       <visual>
@@ -58,11 +73,9 @@
           <mesh filename="package://fanuc_lrmate200id_support/meshes/lrmate200id/collision/link_2.stl"/>
         </geometry>
       </collision>
-      <inertial>
-        <origin rpy="0 0 0" xyz="0 0 0"/>
-        <mass value="4"/>
-        <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
-      </inertial>
+      <xacro:cylinder_inertial radius="0.08" length="0.43" mass="${link_2_mass}">
+        <origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
+      </xacro:cylinder_inertial>
     </link>
     <link name="${prefix}link_3">
       <visual>
@@ -78,11 +91,9 @@
           <mesh filename="package://fanuc_lrmate200id_support/meshes/lrmate200id/collision/link_3.stl"/>
         </geometry>
       </collision>
-      <inertial>
-        <origin rpy="0 0 0" xyz="0 0 0"/>
-        <mass value="3"/>
-        <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
-      </inertial>
+      <xacro:cylinder_inertial radius="0.06" length="0.13" mass="${link_3_mass}">
+        <origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
+      </xacro:cylinder_inertial>
     </link>
     <link name="${prefix}link_4">
       <visual>
@@ -98,11 +109,9 @@
           <mesh filename="package://fanuc_lrmate200id_support/meshes/lrmate200id/collision/link_4.stl"/>
         </geometry>
       </collision>
-      <inertial>
-        <origin rpy="0 0 0" xyz="0 0 0"/>
-        <mass value="2"/>
-        <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
-      </inertial>
+      <xacro:cylinder_inertial radius="0.05" length="0.26" mass="${link_4_mass}">
+        <origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
+      </xacro:cylinder_inertial>
     </link>
     <link name="${prefix}link_5">
       <visual>
@@ -118,11 +127,9 @@
           <mesh filename="package://fanuc_lrmate200id_support/meshes/lrmate200id/collision/link_5.stl"/>
         </geometry>
       </collision>
-      <inertial>
-        <origin rpy="0 0 0" xyz="0 0 0"/>
-        <mass value="1"/>
-        <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
-      </inertial>
+      <xacro:cylinder_inertial radius="0.034" length="0.11" mass="${link_5_mass}">
+        <origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
+      </xacro:cylinder_inertial>
     </link>
     <link name="${prefix}link_6">
       <visual>
@@ -138,11 +145,9 @@
           <mesh filename="package://fanuc_lrmate200id_support/meshes/lrmate200id/collision/link_6.stl"/>
         </geometry>
       </collision>
-      <inertial>
-        <origin rpy="0 0 0" xyz="0 0 0"/>
-        <mass value="1"/>
-        <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
-      </inertial>
+      <xacro:cylinder_inertial radius="0.02" length="0.006" mass="${link_6_mass}">
+        <origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
+      </xacro:cylinder_inertial>
     </link>
     <link name="${prefix}tool0" />