From 23ec28016aa536633f32ae7b8a12372b3a5b475f Mon Sep 17 00:00:00 2001
From: Sam Pfeiffer <sam.pfeiffer@pal-robotics.com>
Date: Mon, 26 Sep 2016 18:16:17 +0200
Subject: [PATCH] Fix gripper movement in simulation. Add colors to model

---
 talos_description/gazebo/gazebo.urdf.xacro    |   1 +
 talos_description/urdf/arm/arm.urdf.xacro     |   4 +
 talos_description/urdf/arm/wrist.urdf.xacro   |   1 +
 .../urdf/gripper/gripper.gazebo.xacro         | 175 ++++++++++++++----
 .../urdf/gripper/gripper.transmission.xacro   |  13 ++
 .../urdf/gripper/gripper_v2.urdf.xacro        |  37 ++--
 talos_description/urdf/head/head.urdf.xacro   |  12 ++
 talos_description/urdf/leg/leg_v2.urdf.xacro  |  19 ++
 .../urdf/sensors/xtion_pro_live.gazebo.xacro  |   2 +
 9 files changed, 213 insertions(+), 51 deletions(-)

diff --git a/talos_description/gazebo/gazebo.urdf.xacro b/talos_description/gazebo/gazebo.urdf.xacro
index 916a7dc..9ec18fd 100644
--- a/talos_description/gazebo/gazebo.urdf.xacro
+++ b/talos_description/gazebo/gazebo.urdf.xacro
@@ -14,6 +14,7 @@
     <plugin filename="libgazebo_world_odometry.so" name="gazebo_ros_odometry">
       <frameName>torso_2_link</frameName>
       <topicName>floating_base_pose</topicName>
+      <updateRate>100.0</updateRate>
     </plugin>
   </gazebo>
 
diff --git a/talos_description/urdf/arm/arm.urdf.xacro b/talos_description/urdf/arm/arm.urdf.xacro
index 1c7f08a..f020b56 100644
--- a/talos_description/urdf/arm/arm.urdf.xacro
+++ b/talos_description/urdf/arm/arm.urdf.xacro
@@ -205,18 +205,22 @@
    <gazebo reference="${name}_${side}_1_link">
      <mu1>0.9</mu1>
      <mu2>0.9</mu2>
+     <material>Gazebo/FlatBlack</material>
    </gazebo>
    <gazebo reference="${name}_${side}_2_link">
      <mu1>0.9</mu1>
      <mu2>0.9</mu2>
+     <material>Gazebo/FlatBlack</material>
    </gazebo>
    <gazebo reference="${name}_${side}_3_link">
      <mu1>0.9</mu1>
      <mu2>0.9</mu2>
+     <material>Gazebo/FlatBlack</material>
    </gazebo>
    <gazebo reference="${name}_${side}_4_link">
      <mu1>0.9</mu1>
      <mu2>0.9</mu2>
+     <material>Gazebo/FlatBlack</material>
    </gazebo>
 
    <gazebo reference="${name}_${side}_1_joint">
diff --git a/talos_description/urdf/arm/wrist.urdf.xacro b/talos_description/urdf/arm/wrist.urdf.xacro
index f2c3af7..efa3435 100644
--- a/talos_description/urdf/arm/wrist.urdf.xacro
+++ b/talos_description/urdf/arm/wrist.urdf.xacro
@@ -167,6 +167,7 @@
     <gazebo reference="${name}_${side}_7_link">
       <mu1>0.9</mu1>
       <mu2>0.9</mu2>
+      <material>Gazebo/FlatBlack</material>
     </gazebo>
 
     <gazebo reference="${name}_${side}_5_joint">
diff --git a/talos_description/urdf/gripper/gripper.gazebo.xacro b/talos_description/urdf/gripper/gripper.gazebo.xacro
index 5a1f5e1..9a2a741 100644
--- a/talos_description/urdf/gripper/gripper.gazebo.xacro
+++ b/talos_description/urdf/gripper/gripper.gazebo.xacro
@@ -10,43 +10,144 @@
 -->
 <robot xmlns:xacro="http://ros.org/wiki/xacro">
 
-  <!-- MACROS FOR MIMIC JOINTS -->
-  <xacro:macro name="finger_mimics" params="name">
-    <plugin name="mimic_${name}_inner_double_joint" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
-      <joint>${name}_joint</joint>
-      <mimicJoint>${name}_inner_double_joint</mimicJoint>
-      <multiplier>1.0</multiplier>
-      <offset>0.0</offset>
-      <hasPID/>
-    </plugin>
-    <plugin name="mimic_${name}_fingertip_1_joint" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
-      <joint>${name}_joint</joint>
-      <mimicJoint>${name}_fingertip_1_joint</mimicJoint>
-      <multiplier>-1.0</multiplier>
-      <offset>0.0</offset>
-      <hasPID/>
-    </plugin>
-    <plugin name="mimic_${name}_fingertip_2_joint" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
-      <joint>${name}_joint</joint>
-      <mimicJoint>${name}_fingertip_2_joint</mimicJoint>
-      <multiplier>-1.0</multiplier>
-      <offset>0.0</offset>
-      <hasPID/>
-    </plugin>
-    <plugin name="mimic_${name}_motor_single_joint" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
-      <joint>${name}_joint</joint>
-      <mimicJoint>${name}_motor_single_joint</mimicJoint>
-      <multiplier>1.0</multiplier>
-      <offset>0.0</offset>
-      <hasPID/>
-    </plugin>
-    <plugin name="mimic_${name}_fingertip_3_joint" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
-      <joint>${name}_joint</joint>
-      <mimicJoint>${name}_fingertip_3_joint</mimicJoint>
-      <multiplier>-1.0</multiplier>
-      <offset>0.0</offset>
-      <hasPID/>
-    </plugin>
+  <!-- VIRTUAL (mimic) JOINTS -->
+  <xacro:macro name="virtual_joints" params="name">
+    <gazebo>
+      <plugin name="mimic_${name}_inner_double_joint" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
+        <joint>${name}_joint</joint>
+        <mimicJoint>${name}_inner_double_joint</mimicJoint>
+        <multiplier>1.0</multiplier>
+        <offset>0.0</offset>
+        <!-- <hasPID/> -->
+      </plugin>
+      <plugin name="mimic_${name}_fingertip_1_joint" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
+        <joint>${name}_joint</joint>
+        <mimicJoint>${name}_fingertip_1_joint</mimicJoint>
+        <multiplier>-1.0</multiplier>
+        <offset>0.0</offset>
+        <!-- <hasPID/> -->
+      </plugin>
+
+      <plugin name="mimic_${name}_fingertip_2_joint" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
+        <joint>${name}_joint</joint>
+        <mimicJoint>${name}_fingertip_2_joint</mimicJoint>
+        <multiplier>-1.0</multiplier>
+        <offset>0.0</offset>
+        <!-- <hasPID/> -->
+      </plugin>
+      
+      <plugin name="mimic_${name}_inner_single_joint" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
+        <joint>${name}_joint</joint>
+        <mimicJoint>${name}_inner_single_joint</mimicJoint>
+        <multiplier>-1.0</multiplier>
+        <offset>0.0</offset>
+        <!-- <hasPID/> -->
+      </plugin>
+
+      <plugin name="mimic_${name}_motor_single_joint" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
+        <joint>${name}_joint</joint>
+        <mimicJoint>${name}_motor_single_joint</mimicJoint>
+        <multiplier>-1.0</multiplier>
+        <offset>0.0</offset>
+        <!-- <hasPID/> -->
+      </plugin>
+      <plugin name="mimic_${name}_fingertip_3_joint" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
+        <joint>${name}_joint</joint>
+        <mimicJoint>${name}_fingertip_3_joint</mimicJoint>
+        <multiplier>-1.0</multiplier>
+        <offset>0.0</offset>
+       <!-- <hasPID/> -->
+      </plugin>
+  </gazebo>
+
+<!--     <plugin filename="libgazebo_underactuated_finger.so" name="gazebo_${name}_underactuated">
+      <actuatedJoint>${name}_joint</actuatedJoint>
+      <virtualJoint>
+        <name>${name}_inner_double_joint</name>
+        <scale_factor>1.0</scale_factor>
+      </virtualJoint> -->
+<!--       <virtualJoint>
+        <name>${name}_fingertip_1_joint</name>
+        <scale_factor>-1.0</scale_factor>
+      </virtualJoint>
+      <virtualJoint>
+        <name>${name}_fingertip_2_joint</name>
+        <scale_factor>-1.0</scale_factor>
+      </virtualJoint>
+      <virtualJoint>
+        <name>${name}_motor_single_joint</name>
+        <scale_factor>1.0</scale_factor>
+      </virtualJoint>
+      <virtualJoint>
+        <name>${name}_fingertip_3_joint</name>
+        <scale_factor>-1.0</scale_factor>
+      </virtualJoint> -->
+<!--     </plugin> -->
+
+
+  <gazebo reference="${name}_joint">
+    <implicitSpringDamper>1</implicitSpringDamper>
+    <provideFeedback>1</provideFeedback>
+  </gazebo>
+
+  <gazebo reference="${name}_inner_double_joint">
+    <implicitSpringDamper>1</implicitSpringDamper>
+    <provideFeedback>1</provideFeedback>
+  </gazebo>
+
+  <gazebo reference="${name}_fingertip_1_joint">
+    <implicitSpringDamper>1</implicitSpringDamper>
+    <provideFeedback>1</provideFeedback>
+  </gazebo>
+
+  <gazebo reference="${name}_fingertip_2_joint">
+    <implicitSpringDamper>1</implicitSpringDamper>
+    <provideFeedback>1</provideFeedback>
+  </gazebo>
+
+  <gazebo reference="${name}_motor_single_joint">
+    <implicitSpringDamper>1</implicitSpringDamper>
+    <provideFeedback>1</provideFeedback>
+  </gazebo>
+
+  <gazebo reference="${name}_fingertip_3_joint">
+    <implicitSpringDamper>1</implicitSpringDamper>
+    <provideFeedback>1</provideFeedback>
+  </gazebo>
+
+  <gazebo reference="${name}_base_link">
+    <material>Gazebo/FlatBlack</material>
+  </gazebo>
+
+  <gazebo reference="${name}_motor_double_link">
+    <material>Gazebo/Orange</material>
+  </gazebo>
+
+  <gazebo reference="${name}_inner_double_link">
+    <material>Gazebo/Orange</material>
+  </gazebo>
+
+  <gazebo reference="${name}_fingertip_1_link">
+    <material>Gazebo/FlatBlack</material>
+  </gazebo>
+
+  <gazebo reference="${name}_motor_single_link">
+    <material>Gazebo/Orange</material>
+  </gazebo>
+  
+
+  <gazebo reference="${name}_inner_single_link">
+    <material>Gazebo/Orange</material>
+  </gazebo>
+
+  <gazebo reference="${name}_fingertip_2_link">
+    <material>Gazebo/FlatBlack</material>
+  </gazebo>
+
+  <gazebo reference="${name}_fingertip_3_link">
+    <material>Gazebo/FlatBlack</material>
+  </gazebo>
+
   </xacro:macro>
 
 </robot>
\ No newline at end of file
diff --git a/talos_description/urdf/gripper/gripper.transmission.xacro b/talos_description/urdf/gripper/gripper.transmission.xacro
index 86e9439..ea9b889 100644
--- a/talos_description/urdf/gripper/gripper.transmission.xacro
+++ b/talos_description/urdf/gripper/gripper.transmission.xacro
@@ -22,4 +22,17 @@
     </transmission>
   </xacro:macro>
 
+  <xacro:macro name="gripper_virtual_transmission" params="name reduction" >
+    <transmission name="${name}_trans">
+      <type>transmission_interface/SimpleTransmission</type>
+      <actuator name="${name}_motor" >
+        <mechanicalReduction>${reduction}</mechanicalReduction>
+      </actuator>
+      <joint name="${name}_joint" >
+        <hardwareInterface>hardware_interface/JointStateInterface</hardwareInterface>
+      </joint>
+    </transmission>
+  </xacro:macro>
+
+
 </robot>
\ No newline at end of file
diff --git a/talos_description/urdf/gripper/gripper_v2.urdf.xacro b/talos_description/urdf/gripper/gripper_v2.urdf.xacro
index 7b0ccae..1ab5ac0 100644
--- a/talos_description/urdf/gripper/gripper_v2.urdf.xacro
+++ b/talos_description/urdf/gripper/gripper_v2.urdf.xacro
@@ -113,7 +113,7 @@
               <origin xyz="0.00000 0.00525 -0.05598" 
                       rpy="${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad}"/>
               <axis xyz="1 0 0" />
-              <limit lower="${0.00000 * deg_to_rad}" upper="${0.00000 * deg_to_rad}" effort="1.0" velocity="1.0" />
+              <limit lower="${-60.0 * deg_to_rad}" upper="${0.0 * deg_to_rad}" effort="100.0" velocity="1.0" />
               <mimic joint="${name}_joint" multiplier="${1.0}" offset="0.0" />
 
             </joint> 
@@ -152,9 +152,9 @@
               <origin xyz="0.03200 0.04589 -0.06553" 
                       rpy="${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad}"/>
               <axis xyz="1 0 0" />
-              <limit lower="${0.00000 * deg_to_rad}" upper="${0.00000 * deg_to_rad}" effort="1.0" velocity="1.0" />
+              <limit lower="${0.0 * deg_to_rad}" upper="${60.0 * deg_to_rad}" effort="100.0" velocity="1.0" />
               <mimic joint="${name}_joint" multiplier="${-1.0}" offset="0.0" />
-            </joint>
+           </joint>
 
 
             <link name="${name}_fingertip_2_link">
@@ -188,12 +188,12 @@
               <origin xyz="-0.03200 0.04589 -0.06553" 
                       rpy="${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad}"/>
               <axis xyz="1 0 0" />
-              <limit lower="${0.00000 * deg_to_rad}" upper="${0.00000 * deg_to_rad}" effort="1.0" velocity="1.0" />
+              <limit lower="${0.0 * deg_to_rad}" upper="${60.0 * deg_to_rad}" effort="100.0" velocity="1.0" />
               <mimic joint="${name}_joint" multiplier="${-1.0}" offset="0.0" />
-            </joint>
+           </joint>
 
 
-             <link name="${name}_motor_single_link">
+            <link name="${name}_motor_single_link">
               <inertial>
                 <origin xyz="0.02589 -0.01284 -0.00640" rpy="0.00000 0.00000 0.00000"/>
                 <mass value="0.14765"/>
@@ -224,13 +224,13 @@
               <origin xyz="0.00000 -0.02025 -0.03000" 
                       rpy="${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad}"/>
               <axis xyz="1 0 0" />
-              <limit lower="${0.00000 * deg_to_rad}" upper="${0.00000 * deg_to_rad}" effort="1.0" velocity="1.0" />
+              <limit lower="${0.0 * deg_to_rad}" upper="${60.0 * deg_to_rad}" effort="100.0" velocity="1.0" />
               <mimic joint="${name}_joint" multiplier="${-1.0}" offset="0.0" />
-            </joint>
+           </joint>
 
 
 
-          <link name="${name}_inner_single_link">
+            <link name="${name}_inner_single_link">
               <inertial>
                 <origin xyz="0.00000 -0.03253 -0.01883" rpy="0.00000 0.00000 0.00000"/>
                 <mass value="0.05356"/>
@@ -261,10 +261,10 @@
               <origin xyz="0.00000 -0.00525 -0.05598" 
                       rpy="${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad}"/>
               <axis xyz="1 0 0" />
-              <limit lower="${0.00000 * deg_to_rad}" upper="${0.00000 * deg_to_rad}" effort="1.0" velocity="1.0" />
+              <limit lower="${0.0 * deg_to_rad}" upper="${60.0 * deg_to_rad}" effort="100.0" velocity="1.0" />
               <mimic joint="${name}_joint" multiplier="${-1.0}" offset="0.0" />
 
-            </joint> 
+           </joint> 
 
 
             <link name="${name}_fingertip_3_link">
@@ -298,14 +298,23 @@
               <origin xyz="0.00000 -0.04589 -0.06553" 
                       rpy="${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad} ${180.00000 * deg_to_rad}"/>
               <axis xyz="1 0 0" />
-              <limit lower="${0.00000 * deg_to_rad}" upper="${0.00000 * deg_to_rad}" effort="1.0" velocity="1.0" />
+              <limit lower="${0.0 * deg_to_rad}" upper="${60.0 * deg_to_rad}" effort="100.0" velocity="1.0" />
               <mimic joint="${name}_joint" multiplier="${-1.0}" offset="0.0" />
-            </joint>
+           </joint> 
+         
 
 
-        <xacro:finger_mimics name="${name}" />
+        <xacro:virtual_joints name="${name}" />
         <xacro:gripper_transmission name="${name}" reduction="1.0" />
 
+        <!-- virtual mimic joints -->
+        <xacro:gripper_virtual_transmission name="${name}_inner_double" reduction="1.0"/>
+        <xacro:gripper_virtual_transmission name="${name}_fingertip_1" reduction="1.0"/>
+        <xacro:gripper_virtual_transmission name="${name}_fingertip_2" reduction="1.0"/>
+        <xacro:gripper_virtual_transmission name="${name}_inner_single" reduction="1.0"/>
+        <xacro:gripper_virtual_transmission name="${name}_motor_single" reduction="1.0"/>
+        <xacro:gripper_virtual_transmission name="${name}_fingertip_3" reduction="1.0"/>
+
  </xacro:macro>
 
 </robot>
diff --git a/talos_description/urdf/head/head.urdf.xacro b/talos_description/urdf/head/head.urdf.xacro
index a24c9c9..c2cdb35 100644
--- a/talos_description/urdf/head/head.urdf.xacro
+++ b/talos_description/urdf/head/head.urdf.xacro
@@ -72,8 +72,15 @@
     <gazebo reference="${name}_joint">
        <implicitSpringDamper>1</implicitSpringDamper>
     </gazebo>
+
+    <gazebo reference="${name}_link">
+      <material>Gazebo/FlatBlack</material>
+    </gazebo>
+
   </xacro:macro>
 
+  
+
   <!--************************-->
   <!--      HEAD_2 (PAN)      -->
   <!--************************-->
@@ -127,6 +134,11 @@
     </gazebo>
 
 
+    <gazebo reference="${name}_link">
+      <material>Gazebo/White</material>
+    </gazebo>
+
+
   </xacro:macro>
 
   <xacro:macro name="talos_head" params="name parent">
diff --git a/talos_description/urdf/leg/leg_v2.urdf.xacro b/talos_description/urdf/leg/leg_v2.urdf.xacro
index 9b29827..5f5a4e9 100644
--- a/talos_description/urdf/leg/leg_v2.urdf.xacro
+++ b/talos_description/urdf/leg/leg_v2.urdf.xacro
@@ -330,6 +330,25 @@
      <provideFeedback>1</provideFeedback>
    </gazebo>
 
+  <gazebo reference="leg_${prefix}_1_link">
+    <material>Gazebo/FlatBlack</material>
+  </gazebo>
+  <gazebo reference="leg_${prefix}_2_link">
+    <material>Gazebo/FlatBlack</material>
+  </gazebo>
+  <gazebo reference="leg_${prefix}_3_link">
+    <material>Gazebo/FlatBlack</material>
+  </gazebo>
+  <gazebo reference="leg_${prefix}_4_link">
+    <material>Gazebo/FlatBlack</material>
+  </gazebo>
+  <gazebo reference="leg_${prefix}_5_link">
+    <material>Gazebo/White</material>
+  </gazebo>
+  <gazebo reference="leg_${prefix}_6_link">
+    <material>Gazebo/White</material>
+  </gazebo>
+
  </xacro:macro>
    
 </robot>
diff --git a/talos_description/urdf/sensors/xtion_pro_live.gazebo.xacro b/talos_description/urdf/sensors/xtion_pro_live.gazebo.xacro
index 92066ec..6ac77d3 100644
--- a/talos_description/urdf/sensors/xtion_pro_live.gazebo.xacro
+++ b/talos_description/urdf/sensors/xtion_pro_live.gazebo.xacro
@@ -90,6 +90,8 @@
           <distalostionT2>0.00000001</distalostionT2>
         </plugin>
       </sensor>
+
+      <material>Gazebo/FlatBlack</material>
     </gazebo>
   </xacro:macro>
 </robot>
-- 
GitLab