diff --git a/humanoid_common_msgs/msg/humanoid_follow_targetAction.msg b/humanoid_common_msgs/msg/humanoid_follow_targetAction.msg
new file mode 100644
index 0000000000000000000000000000000000000000..414a05340dd13adfe5f83e91b2a9cd3f1e9ab306
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_follow_targetAction.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+humanoid_follow_targetActionGoal action_goal
+humanoid_follow_targetActionResult action_result
+humanoid_follow_targetActionFeedback action_feedback
diff --git a/humanoid_common_msgs/msg/humanoid_follow_targetActionFeedback.msg b/humanoid_common_msgs/msg/humanoid_follow_targetActionFeedback.msg
new file mode 100644
index 0000000000000000000000000000000000000000..1fd67e2ba5730aef8d562bf458dd981e270c83af
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_follow_targetActionFeedback.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+Header header
+actionlib_msgs/GoalStatus status
+humanoid_follow_targetFeedback feedback
diff --git a/humanoid_common_msgs/msg/humanoid_follow_targetActionGoal.msg b/humanoid_common_msgs/msg/humanoid_follow_targetActionGoal.msg
new file mode 100644
index 0000000000000000000000000000000000000000..c4fe78c79bde1c0b947d36b05d67ec3910317399
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_follow_targetActionGoal.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+Header header
+actionlib_msgs/GoalID goal_id
+humanoid_follow_targetGoal goal
diff --git a/humanoid_common_msgs/msg/humanoid_follow_targetActionResult.msg b/humanoid_common_msgs/msg/humanoid_follow_targetActionResult.msg
new file mode 100644
index 0000000000000000000000000000000000000000..5ae6aee6212cc1129f5b943de655425f6c0e76f4
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_follow_targetActionResult.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+Header header
+actionlib_msgs/GoalStatus status
+humanoid_follow_targetResult result
diff --git a/humanoid_common_msgs/msg/humanoid_follow_targetFeedback.msg b/humanoid_common_msgs/msg/humanoid_follow_targetFeedback.msg
new file mode 100644
index 0000000000000000000000000000000000000000..ffc82fb65e6fbf7bf92882f0d0485ebd45b9bcc2
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_follow_targetFeedback.msg
@@ -0,0 +1,6 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+#feedback
+float32 current_pan
+float32 current_tilt
+
+
diff --git a/humanoid_common_msgs/msg/humanoid_follow_targetGoal.msg b/humanoid_common_msgs/msg/humanoid_follow_targetGoal.msg
new file mode 100644
index 0000000000000000000000000000000000000000..91594520145838da1cab94614195ad47a92e3532
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_follow_targetGoal.msg
@@ -0,0 +1,6 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+#goal definition
+float32 target_pan
+float32 target_tilt
+float32[] pan_range
+float32[] tilt_range
diff --git a/humanoid_common_msgs/msg/humanoid_follow_targetResult.msg b/humanoid_common_msgs/msg/humanoid_follow_targetResult.msg
new file mode 100644
index 0000000000000000000000000000000000000000..979b112f8d3158f6549e88adf219c322fdeaa527
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_follow_targetResult.msg
@@ -0,0 +1,3 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+#result definition
+bool    successful
diff --git a/humanoid_common_msgs/msg/humanoid_gripperAction.msg b/humanoid_common_msgs/msg/humanoid_gripperAction.msg
new file mode 100644
index 0000000000000000000000000000000000000000..227fc76b2f0bf16c9c8e1e406152077eeee62d63
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_gripperAction.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+humanoid_gripperActionGoal action_goal
+humanoid_gripperActionResult action_result
+humanoid_gripperActionFeedback action_feedback
diff --git a/humanoid_common_msgs/msg/humanoid_gripperActionFeedback.msg b/humanoid_common_msgs/msg/humanoid_gripperActionFeedback.msg
new file mode 100644
index 0000000000000000000000000000000000000000..7d858065c756047fbfc67101618f65546ea05c77
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_gripperActionFeedback.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+Header header
+actionlib_msgs/GoalStatus status
+humanoid_gripperFeedback feedback
diff --git a/humanoid_common_msgs/msg/humanoid_gripperActionGoal.msg b/humanoid_common_msgs/msg/humanoid_gripperActionGoal.msg
new file mode 100644
index 0000000000000000000000000000000000000000..d80f3b016171b1dbc0dd1e6c9082215190cec9b1
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_gripperActionGoal.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+Header header
+actionlib_msgs/GoalID goal_id
+humanoid_gripperGoal goal
diff --git a/humanoid_common_msgs/msg/humanoid_gripperActionResult.msg b/humanoid_common_msgs/msg/humanoid_gripperActionResult.msg
new file mode 100644
index 0000000000000000000000000000000000000000..5f7864599f3e79b3f74de298ec05252421b131c8
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_gripperActionResult.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+Header header
+actionlib_msgs/GoalStatus status
+humanoid_gripperResult result
diff --git a/humanoid_common_msgs/msg/humanoid_gripperFeedback.msg b/humanoid_common_msgs/msg/humanoid_gripperFeedback.msg
new file mode 100644
index 0000000000000000000000000000000000000000..adfab76838b6e8e40cbb7dc88e7324ed06407d27
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_gripperFeedback.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+#feedback
+float32 current_angle_top
+float32 current_angle_bot
+
diff --git a/humanoid_common_msgs/msg/humanoid_gripperGoal.msg b/humanoid_common_msgs/msg/humanoid_gripperGoal.msg
new file mode 100644
index 0000000000000000000000000000000000000000..595913544b5b01832b2a6189ceda6daa68bfa305
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_gripperGoal.msg
@@ -0,0 +1,3 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+#goal definition
+bool    open
diff --git a/humanoid_common_msgs/msg/humanoid_gripperResult.msg b/humanoid_common_msgs/msg/humanoid_gripperResult.msg
new file mode 100644
index 0000000000000000000000000000000000000000..979b112f8d3158f6549e88adf219c322fdeaa527
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_gripperResult.msg
@@ -0,0 +1,3 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+#result definition
+bool    successful
diff --git a/humanoid_common_msgs/msg/humanoid_motionAction.msg b/humanoid_common_msgs/msg/humanoid_motionAction.msg
new file mode 100644
index 0000000000000000000000000000000000000000..dc70ec5918ca168fa9219ac29f0e465b7084f574
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_motionAction.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+humanoid_motionActionGoal action_goal
+humanoid_motionActionResult action_result
+humanoid_motionActionFeedback action_feedback
diff --git a/humanoid_common_msgs/msg/humanoid_motionActionFeedback.msg b/humanoid_common_msgs/msg/humanoid_motionActionFeedback.msg
new file mode 100644
index 0000000000000000000000000000000000000000..ff4d78658ed6fd80047df5efc571adc156120cce
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_motionActionFeedback.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+Header header
+actionlib_msgs/GoalStatus status
+humanoid_motionFeedback feedback
diff --git a/humanoid_common_msgs/msg/humanoid_motionActionGoal.msg b/humanoid_common_msgs/msg/humanoid_motionActionGoal.msg
new file mode 100644
index 0000000000000000000000000000000000000000..d0e38d3f12a26b1298e663b217cbef962650a020
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_motionActionGoal.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+Header header
+actionlib_msgs/GoalID goal_id
+humanoid_motionGoal goal
diff --git a/humanoid_common_msgs/msg/humanoid_motionActionResult.msg b/humanoid_common_msgs/msg/humanoid_motionActionResult.msg
new file mode 100644
index 0000000000000000000000000000000000000000..58b2f12e2d309d83270a25d5087e68a5d41ff3d7
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_motionActionResult.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+Header header
+actionlib_msgs/GoalStatus status
+humanoid_motionResult result
diff --git a/humanoid_common_msgs/msg/humanoid_motionFeedback.msg b/humanoid_common_msgs/msg/humanoid_motionFeedback.msg
new file mode 100644
index 0000000000000000000000000000000000000000..a729a54550f0a0ed5e5319a6a069228ff2ae34df
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_motionFeedback.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+#feedback
+int32   current_page
+int32   current_step
+
diff --git a/humanoid_common_msgs/msg/humanoid_motionGoal.msg b/humanoid_common_msgs/msg/humanoid_motionGoal.msg
new file mode 100644
index 0000000000000000000000000000000000000000..a9d8514e999c5743690c3507ef641b879fa8ce40
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_motionGoal.msg
@@ -0,0 +1,3 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+#goal definition
+int32   motion_id
diff --git a/humanoid_common_msgs/msg/humanoid_motionResult.msg b/humanoid_common_msgs/msg/humanoid_motionResult.msg
new file mode 100644
index 0000000000000000000000000000000000000000..979b112f8d3158f6549e88adf219c322fdeaa527
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_motionResult.msg
@@ -0,0 +1,3 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+#result definition
+bool    successful
diff --git a/humanoid_common_msgs/msg/humanoid_stairsAction.msg b/humanoid_common_msgs/msg/humanoid_stairsAction.msg
new file mode 100644
index 0000000000000000000000000000000000000000..e73bdd483e4c004e623aca284f81cfff6fd323f1
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_stairsAction.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+humanoid_stairsActionGoal action_goal
+humanoid_stairsActionResult action_result
+humanoid_stairsActionFeedback action_feedback
diff --git a/humanoid_common_msgs/msg/humanoid_stairsActionFeedback.msg b/humanoid_common_msgs/msg/humanoid_stairsActionFeedback.msg
new file mode 100644
index 0000000000000000000000000000000000000000..e2b64283debdeedc0cd5c8e28c61cad7d79b5a61
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_stairsActionFeedback.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+Header header
+actionlib_msgs/GoalStatus status
+humanoid_stairsFeedback feedback
diff --git a/humanoid_common_msgs/msg/humanoid_stairsActionGoal.msg b/humanoid_common_msgs/msg/humanoid_stairsActionGoal.msg
new file mode 100644
index 0000000000000000000000000000000000000000..48705914e7b835bf088c7d00aa23eed249889797
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_stairsActionGoal.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+Header header
+actionlib_msgs/GoalID goal_id
+humanoid_stairsGoal goal
diff --git a/humanoid_common_msgs/msg/humanoid_stairsActionResult.msg b/humanoid_common_msgs/msg/humanoid_stairsActionResult.msg
new file mode 100644
index 0000000000000000000000000000000000000000..046a7d3a125893ef17756e5fa881283b7a6bf0da
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_stairsActionResult.msg
@@ -0,0 +1,5 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+
+Header header
+actionlib_msgs/GoalStatus status
+humanoid_stairsResult result
diff --git a/humanoid_common_msgs/msg/humanoid_stairsFeedback.msg b/humanoid_common_msgs/msg/humanoid_stairsFeedback.msg
new file mode 100644
index 0000000000000000000000000000000000000000..86ec2334c27d9b1529c2e6adc1eebeeae6a3fcc0
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_stairsFeedback.msg
@@ -0,0 +1,4 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+#feedback
+int32   current_phase
+
diff --git a/humanoid_common_msgs/msg/humanoid_stairsGoal.msg b/humanoid_common_msgs/msg/humanoid_stairsGoal.msg
new file mode 100644
index 0000000000000000000000000000000000000000..9d2eb2517a37ad3815dc183f033178d912627cc8
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_stairsGoal.msg
@@ -0,0 +1,3 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+#goal definition
+bool    up
diff --git a/humanoid_common_msgs/msg/humanoid_stairsResult.msg b/humanoid_common_msgs/msg/humanoid_stairsResult.msg
new file mode 100644
index 0000000000000000000000000000000000000000..979b112f8d3158f6549e88adf219c322fdeaa527
--- /dev/null
+++ b/humanoid_common_msgs/msg/humanoid_stairsResult.msg
@@ -0,0 +1,3 @@
+# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======
+#result definition
+bool    successful
diff --git a/qr_detector/include/.qr_detector_driver.h.swp b/qr_detector/include/.qr_detector_driver.h.swp
new file mode 100644
index 0000000000000000000000000000000000000000..b1aa67cdfa285d2450455b304169e07f8a6958a1
Binary files /dev/null and b/qr_detector/include/.qr_detector_driver.h.swp differ
diff --git a/qr_detector/src/qr_detector_driver_node.cpp b/qr_detector/src/qr_detector_driver_node.cpp
index 235e4e503fd29abcd85d831d22330c2e836a4631..abfcb7f0d4e66fa079f86c160e19ca2dcd8a73b6 100644
--- a/qr_detector/src/qr_detector_driver_node.cpp
+++ b/qr_detector/src/qr_detector_driver_node.cpp
@@ -71,13 +71,13 @@ void QrDetectorDriverNode::image_callback(const sensor_msgs::Image::ConstPtr& ms
   
     this->driver_.findQR(this->gray,tag_ids,poses);
     this->camera_pose_tag_pose_array_msg_.header.stamp       = ros::Time::now();
-    this->camera_pose_tag_pose_array_msg_.header.frame_id    = msg->header.frame_id;
+    this->camera_pose_tag_pose_array_msg_.header.frame_id    = this->driver_.get_camera_frame();
     this->camera_pose_tag_pose_array_msg_.tags.resize(tag_ids.size());
     for(unsigned int i=0;i<tag_ids.size();i++)
     {
       this->camera_pose_tag_pose_array_msg_.tags[i].tag_id          = tag_ids[i];
       this->camera_pose_tag_pose_array_msg_.tags[i].header.stamp    = ros::Time::now();
-      this->camera_pose_tag_pose_array_msg_.tags[i].header.frame_id = msg->header.frame_id;
+      this->camera_pose_tag_pose_array_msg_.tags[i].header.frame_id = this->driver_.get_camera_frame();
       this->camera_pose_tag_pose_array_msg_.tags[i].position.x      = poses[i][0];
       this->camera_pose_tag_pose_array_msg_.tags[i].position.y      = poses[i][1];
       this->camera_pose_tag_pose_array_msg_.tags[i].position.z      = poses[i][2];
@@ -87,7 +87,7 @@ void QrDetectorDriverNode::image_callback(const sensor_msgs::Image::ConstPtr& ms
       this->camera_pose_tag_pose_array_msg_.tags[i].orientation.z   = poses[i][6];      
       transform.setOrigin(tf::Vector3(poses[i][0],poses[i][1],poses[i][2]));
       transform.setRotation(tf::Quaternion(poses[i][4],poses[i][5],poses[i][6],poses[i][3]));
-      this->tag_pose_br.sendTransform(tf::StampedTransform(transform,ros::Time::now(),msg->header.frame_id,tag_ids[i]+"_det"));
+      this->tag_pose_br.sendTransform(tf::StampedTransform(transform,ros::Time::now(),this->driver_.get_camera_frame(),tag_ids[i]+"_det"));
     }
     this->camera_pose_publisher_.publish(this->camera_pose_tag_pose_array_msg_);
   }