From 10a138f7fcdc5d81356a10b0b8e5a610f902aab3 Mon Sep 17 00:00:00 2001
From: Olivier Stasse <ostasse@laas.fr>
Date: Wed, 9 Oct 2019 11:11:21 +0200
Subject: [PATCH] Fix SpringPlugin + add transmission to
 leg_{prefix}_1_joint_passive

---
 src/SpringPlugin.cc             | 17 ++++++++++-------
 urdf/leg/leg_passive.urdf.xacro | 12 ++++++++++++
 2 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/SpringPlugin.cc b/src/SpringPlugin.cc
index 3b753f4..300fc2d 100644
--- a/src/SpringPlugin.cc
+++ b/src/SpringPlugin.cc
@@ -29,21 +29,24 @@ SpringPlugin::SpringPlugin()
 }
 
 /////////////////////////////////////////////////
-void SpringPlugin::Load(physics::ModelPtr _model,
-                           sdf::ElementPtr _sdf)
+void SpringPlugin::Load(physics::ModelPtr lmodel,
+                           sdf::ElementPtr lsdf)
 {
-  this->model = _model;
+  this->model = lmodel;
 
   // hardcoded params for this test
-  this->jointExplicitName = _sdf->Get<std::string>("joint_spring");
+  if (!lsdf->HasElement("joint_spring"))
+    ROS_ERROR_NAMED("SpringPlugin","No field joint_spring for SpringPlugin");
+  else
+    this->jointExplicitName = lsdf->Get<std::string>("joint_spring");
 
-  this->kpExplicit = _sdf->Get<double>("kp");
+  this->kpExplicit = lsdf->Get<double>("kp");
 
-  this->kdExplicit = _sdf->Get<double>("kd");
+  this->kdExplicit = lsdf->Get<double>("kd");
 
   ROS_INFO_NAMED("SpringPlugin",
                  "Loading joint : %s kp: %f kd: %f",
-                 this->jointExplicitName,
+                 this->jointExplicitName.c_str(),
                  this->kpExplicit,
                  this->kdExplicit);
 }
diff --git a/urdf/leg/leg_passive.urdf.xacro b/urdf/leg/leg_passive.urdf.xacro
index 2b3f3f4..a061f15 100644
--- a/urdf/leg/leg_passive.urdf.xacro
+++ b/urdf/leg/leg_passive.urdf.xacro
@@ -69,6 +69,18 @@
         <kd>0.0</kd>
       </plugin>
     </gazebo>
+
+    <transmission name="leg_${prefix}_1_passive_trans">
+      <type>transmission_interface/SimpleTransmission</type>
+      <actuator name="leg_${prefix}_1_motor" >
+        <mechanicalReduction>${reduction}</mechanicalReduction>
+      </actuator>
+      <joint name="leg_${prefix}_1_joint">
+        <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
+        <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
+      </joint>
+    </transmission>
+
     <!-- Joint hip_x (mesh link) : child link hip_y -> parent link hip_z -->
 
     <!-- <link name="leg_${prefix}_2_link_passive"> -->
-- 
GitLab