diff --git a/cfg/PeopleSimulation.cfg b/cfg/PeopleSimulation.cfg
index e61bd3fb0b4266e7935f71b0f97d890e6c315cee..f279d73751420fc798544967bd71ba2b9bc601e8 100755
--- a/cfg/PeopleSimulation.cfg
+++ b/cfg/PeopleSimulation.cfg
@@ -40,6 +40,8 @@ gen = ParameterGenerator()
 #       Name                       Type       Reconfiguration level            Description                       Default   Min   Max
 #gen.add("velocity_scale_factor",  double_t,  0,                               "Maximum velocity scale factor",  0.5,      0.0,  1.0)
 gen.add("robot",   str_t,   0,    "robot name",   "unknown")
+gen.add("id_person_to_approach",       int_t,      0,   " id of the person to approach",    1,  0,  1)
+
 gen.add("simulation_mode",       int_t,      0,                        "Person simulation mode: 0 for normal mode: constant number of persons; 1 for people density growing",    0,  0,  1)
 gen.add("vis_mode",              bool_t,      0,                           "Visualization markers are enabled or not",   False)
 gen.add("freeze",              bool_t,      0,                  "Freezes persons to publish the same scene over time",   False)
diff --git a/include/people_simulation_alg_node.h b/include/people_simulation_alg_node.h
index 44b547005fc2e57635d7327ca85fcfc9154a43da..7afe371b0d88738f945f62d56b08e1c719ea228e 100644
--- a/include/people_simulation_alg_node.h
+++ b/include/people_simulation_alg_node.h
@@ -34,8 +34,7 @@
 #include <visualization_msgs/MarkerArray.h>
 #include <geometry_msgs/PoseStamped.h>
 #include <iri_perception_msgs/detectionArray.h>
-
-
+#include <iri_perception_msgs/InitialiceSim.h>
 
 // [service client headers]
 #include <std_srvs/Empty.h>
@@ -68,6 +67,15 @@ class PeopleSimulationAlgNode : public algorithm_base::IriBaseAlgorithm<PeopleSi
     void reset_mutex_enter(void);
     void reset_mutex_exit(void);
 
+    // server to initialice person positions.
+    ros::ServiceServer init_simulations_server_;
+    bool init_simulationsCallback(iri_perception_msgs::InitialiceSim::Request &req, iri_perception_msgs::InitialiceSim::Response &res);
+    pthread_mutex_t init_simulations_mutex_;
+    void init_simulations_mutex_enter(void);
+    void init_simulations_mutex_exit(void);
+
+     Cscene_sim::action_modeScene Action_ROS_;
+     Cscene_sim::simulation_caseScene Actual_case_ROS_;
     // [client attributes]
 
     // [action server attributes]
diff --git a/launch/people_sim.launch b/launch/people_sim.launch
index 3ece09e6d54214aaca6a12082c1c251204ed64c5..86dca540679c3324e929949abfce62d5add820c8 100644
--- a/launch/people_sim.launch
+++ b/launch/people_sim.launch
@@ -7,26 +7,26 @@
  	<node name="map_server" 
 		pkg="map_server" 
 		type="map_server" 
-		args="$(find iri_akp_local_planner)/maps/empty.yaml">
+		args="$(find iri_akp_local_planner_approaching)/maps/empty.yaml">
 			<param name="frame_id" value="/map" />			
 	</node>  
 
 
-  <node pkg="iri_people_simulation"
-		type="iri_people_simulation"
-		name="people_simulation"
+  <node pkg="iri_people_simulation_approaching"
+		type="iri_people_simulation_approaching"
+		name="iri_people_simulation_approaching"
 		output="screen">
-	    <param name="number_persons" value="40"/>
+	    <param name="number_persons" value="5"/>
         <param name="vis_mode" value="True"/>
         <param name="robot" type="string" value="$(optenv ROBOT tibi)" />
-        <param name="destination_map_path" value="$(find iri_people_simulation)/map/4_destinations.txt" />
+        <param name="destination_map_path" value="$(find iri_people_simulation_approaching)/map/4_destinations.txt" />
 
   </node>
 
   <node pkg ="rviz" 
         name="rviz" 
         type="rviz" 
-        args="-d $(find iri_people_simulation)/config/sim_vis.rviz" />
+        args="-d $(find iri_people_simulation_approaching)/config/sim_vis.rviz" />
 
 
 </launch>
diff --git a/launch/people_simulation.launch b/launch/people_simulation.launch
index 508ea7c9369c7385f556bf4d0a38ae6a7918a739..523b302bcc46207bad72c14a44c05aad49398d76 100644
--- a/launch/people_simulation.launch
+++ b/launch/people_simulation.launch
@@ -7,7 +7,7 @@
           type="iri_people_simulation_approaching"
           name="people_simulation_approaching"
           output="screen">
-      <param name="number_persons" value="1"/>
+      <param name="number_persons" value="5"/>
       <param name="vis_mode"       value="True"/>
       <param name="robot"          value="$(optenv ROBOT tibi)" />
       <param name="destination_map_path" value="$(find iri_akp_local_planner_approaching)/maps/$(arg map)_destinations.txt" />
diff --git a/map/4_destinations.txt b/map/4_destinations.txt
index 0c07b631ef44270895d15dc4d999e1b6eeb3e4dd..e0ce4de037d77582a6b14eac2f483a2161c13844 100644
--- a/map/4_destinations.txt
+++ b/map/4_destinations.txt
@@ -1,5 +1,5 @@
 4
-0, -8.0, -8.0, 0.25, 3, 1, 2, 3
-1, 4.0, -4.0, 0.25, 3, 0, 2, 3
-2, -4.0, 4.0, 0.25, 3, 0, 1, 3
-3, 8.0, 8.0, 0.25, 3, 0, 1, 2
+0, -20.0, -8.0, 0.25, 3, 1, 2, 3
+1, 29.0, -4.0, 0.25, 3, 0, 2, 3
+2, -4.0, 29.0, 0.25, 3, 0, 1, 3
+3, 20.0, 8.0, 0.25, 3, 0, 1, 2
diff --git a/src/people_simulation_alg_node.cpp b/src/people_simulation_alg_node.cpp
index 0cbe244d3ea4d3e870de570a2aff19e04aa6d1dc..36cb24da3361c8a6e3b3a9a6918664209e8bbb3a 100644
--- a/src/people_simulation_alg_node.cpp
+++ b/src/people_simulation_alg_node.cpp
@@ -19,7 +19,9 @@ PeopleSimulationAlgNode::PeopleSimulationAlgNode(void) :
   // [init clients]
   
   // [init action servers]
-  
+    // [init services] => My cervice reset cscene sim, persons to initial pose
+  this->init_simulations_server_ = this->public_node_handle_.advertiseService("init_simulations", &PeopleSimulationAlgNode::init_simulationsCallback, this);
+
   // [init action clients]
   
   init_sim();
@@ -132,7 +134,8 @@ void PeopleSimulationAlgNode::mainNodeThread(void)
 
 	std::vector<SdetectionObservation> obs_scene;
 	obs_scene.push_back( SdetectionObservation(0, ros::Time::now().toSec() ));//void observation, just for the timestamp
-	scene_.update_scene( obs_scene );
+	bool no_comp=false;
+	scene_.update_scene( obs_scene , no_comp);
 
   //publish data
   const std::list<Cperson_abstract *>* person_list = scene_.get_scene( );
@@ -262,14 +265,13 @@ void PeopleSimulationAlgNode::node_config_update(Config &config, uint32_t level)
   this->alg_.lock();
 
 	//ROS_INFO("         *******  algorithm config update  *******\n\n");
-  simulation_mode_ = (PeopleSimulationAlgNode::simulation_mode) config.simulation_mode;
-  vis_mode_ = config.vis_mode;
+  	simulation_mode_ = (PeopleSimulationAlgNode::simulation_mode) config.simulation_mode;
+  	vis_mode_ = config.vis_mode;
 	n_persons_ = config.number_persons;
 	freeze_ = config.freeze;
 	scene_.set_number_virtual_people( n_persons_ );
- 
- 
-	
+  	scene_.set_id_person_to_apperoach(config.id_person_to_approach);
+ 	
   this->alg_.unlock();
 }
 
@@ -282,3 +284,78 @@ int main(int argc,char *argv[])
 {
   return algorithm_base::main<PeopleSimulationAlgNode>(argc, argv, "people_simulation_alg_node");
 }
+
+
+
+void PeopleSimulationAlgNode::init_simulations_mutex_enter(void)
+{
+  pthread_mutex_lock(&this->init_simulations_mutex_);
+}
+
+void PeopleSimulationAlgNode::init_simulations_mutex_exit(void)
+{
+  pthread_mutex_unlock(&this->init_simulations_mutex_);
+}
+
+/* [service callback] => restart persons to initial position */
+
+bool PeopleSimulationAlgNode::init_simulationsCallback(iri_perception_msgs::InitialiceSim::Request &req, iri_perception_msgs::InitialiceSim::Response &res)
+{
+  //ROS_INFO("dabo [People_companion] AkpLocalPlanner::init_simulationsCallback: New Request Received!");
+
+  //use appropiate mutex to shared variables if necessary
+  //this->alg_.lock();
+  //this->init_simulations_mutex_enter(); //
+   switch(req.init.state){
+
+     case 0:
+          Action_ROS_=Cscene_sim::START;
+      break;
+      case 1:
+          Action_ROS_=Cscene_sim::ITER;
+      break;
+  
+    }
+    scene_.set_state_Action_person_companion(Action_ROS_);
+   // this->scene_.get_akp_for_person_companion()->set_state_Action(Action_ROS_); // We do not have companion.
+
+   switch(req.init.act_case){
+
+	case 0:
+          ROS_INFO(" [PERSONS] AkpLocalPlanner::computeVelocityCommands: case0");
+         Actual_case_ROS_=Cscene_sim::case0;
+      break;
+      case 1:
+            ROS_INFO(" [PERSONS] AkpLocalPlanner::computeVelocityCommands: case1");
+           Actual_case_ROS_=Cscene_sim::case1;
+      break;
+      case 2:
+            ROS_INFO(" [PERSONS] AkpLocalPlanner::computeVelocityCommands: case2");
+           Actual_case_ROS_=Cscene_sim::case2;
+      break;
+  
+    }
+    scene_.set_actual_simulation_case(Actual_case_ROS_);
+    Spoint person_goal_init_point=Spoint(req.init.initial_position[2].x,req.init.initial_position[2].y,ros::Time::now().toSec()); 
+
+    ROS_INFO("NodoPruebaBacioAlgNode::init_simulationsCallback: person_goal_init_point.x=%f; person_goal_init_point.y=%f",person_goal_init_point.x, person_goal_init_point.y);
+    scene_.set_person_goal_init_poin(person_goal_init_point);
+
+
+ //ROS_INFO("AkpLocalPlanner::init_simulationsCallback: Init person goal Spoint; orientation=%f",req.init.orientation[2]);
+ //   person_goal_init_point.print();
+
+  // + generar el mensaje a enviar al server.
+  
+
+  //ROS_INFO("NodoPruebaBacioAlgNode::init_simulationsCallback: Processing New Request!");
+  //do operations with req and output on res
+  //res.data2 = req.data1 + my_var;
+
+  //unlock previously blocked shared variables
+  //this->init_simulations_mutex_exit();
+  //this->alg_.unlock();
+
+  return true;
+}
+