diff --git a/include/tiago_modules/play_motion_module.h b/include/tiago_modules/play_motion_module.h
index f383d44f5158a4ef614a152f92bdd09de8fab3a2..0ab39ae1c1463ac72eb8c93ebdf5ed94131a48af 100644
--- a/include/tiago_modules/play_motion_module.h
+++ b/include/tiago_modules/play_motion_module.h
@@ -61,6 +61,7 @@ class CPlayMotionModule : public CModule<play_motion_module::PlayMotionModuleCon
   public:
     CPlayMotionModule(const std::string &name,const std::string &name_space=std::string(""));
     void execute_motion(play_motion_ids motion_id);
+    void execute_motion(std::string motion_name);
     void stop(void);
     bool is_finished(void);
     play_motion_module_status_t get_status(void);
diff --git a/src/play_motion_module.cpp b/src/play_motion_module.cpp
index 003a96c6affd583a60add23e2c52552aba7619b1..ef176448c79939a8536d77cd8064848a43eacf44 100644
--- a/src/play_motion_module.cpp
+++ b/src/play_motion_module.cpp
@@ -165,6 +165,27 @@ void CPlayMotionModule::execute_motion(play_motion_ids motion_id)
   }
 }
 
+void CPlayMotionModule::execute_motion(std::string motion_name)
+{
+  std::string motion;
+
+  if(this->is_finished())
+  {
+    if(this->module_nh.getParam("/play_motion/motions/" + motion_name + "/meta/name", motion)) //If motion exists
+    {
+      this->goal.motion_name=motion_name;
+      this->goal.skip_planning=false;
+      this->goal.priority=0;
+      this->new_motion=true;
+    }
+    else
+    {
+      ROS_WARN("CPlayMotionModule: Motion name does not exist");
+      this->status=PLAY_MOTION_MODULE_INVALID_ID;
+    }
+  }
+}
+
 void CPlayMotionModule::stop(void)
 {
   if(this->state!=PLAY_MOTION_MODULE_IDLE)