From 3c2268777933e451692ed52ae2819c6ec46e9446 Mon Sep 17 00:00:00 2001
From: Sergi Hernandez Juan <shernand@iri.upc.edu>
Date: Wed, 31 May 2017 08:36:21 +0200
Subject: [PATCH] Modified the add_servo() function to check whether the new
 servo has already been assigned or not. Modified the walk and action modules
 to assign the basic necessary at construction time.

---
 .../include/humanoid_modules/humanoid_module.h             | 7 ++++++-
 humanoid_modules/src/action_module.cpp                     | 1 +
 humanoid_modules/src/walk_module.cpp                       | 2 ++
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/humanoid_modules/include/humanoid_modules/humanoid_module.h b/humanoid_modules/include/humanoid_modules/humanoid_module.h
index c943a29..b9345d4 100644
--- a/humanoid_modules/include/humanoid_modules/humanoid_module.h
+++ b/humanoid_modules/include/humanoid_modules/humanoid_module.h
@@ -96,12 +96,17 @@ CHumanoidModule<Module>::CHumanoidModule(const std::string &name,motion_module_t
 template<class Module>
 void CHumanoidModule<Module>::add_servo(const std::string &name)
 {
-  unsigned int i=0;
+  unsigned int i=0,j=0;
 
   for(i=0;i<NUM_SERVOS;i++)
   {
     if(servo_names[i]==name)
     {
+      for(j=0;j<this->assigned_servos.size();j++)
+      {
+        if(this->assigned_servos[i]==name)
+          return;// servo already assigned to this module
+      }
       this->assigned_servos.push_back(name);
       return;
     }
diff --git a/humanoid_modules/src/action_module.cpp b/humanoid_modules/src/action_module.cpp
index aec971a..20af838 100644
--- a/humanoid_modules/src/action_module.cpp
+++ b/humanoid_modules/src/action_module.cpp
@@ -9,6 +9,7 @@ CActionModule::CActionModule(const std::string &name) : CHumanoidModule(name,ACT
   this->cancel_pending=false;
   this->new_action=false;
   this->action_id=-1;
+  this->add_whole_body();
 }
 
 void CActionModule::state_machine(void)
diff --git a/humanoid_modules/src/walk_module.cpp b/humanoid_modules/src/walk_module.cpp
index 11de797..1682b70 100644
--- a/humanoid_modules/src/walk_module.cpp
+++ b/humanoid_modules/src/walk_module.cpp
@@ -20,6 +20,8 @@ CWalkModule::CWalkModule(const std::string &name) : CHumanoidModule(name,WALK_MO
   this->cmd_vel_timer.stop();
   /* joint states subscriber */
   this->joint_state_subscriber=this->module_nh.subscribe("joint_states",1,&CWalkModule::joint_state_callback,this);
+  this->add_left_leg();
+  this->add_right_leg();
 }
 
 void CWalkModule::state_machine(void)
-- 
GitLab