From f7dab752dbcd9346589046a553523b4e8c9a13bd Mon Sep 17 00:00:00 2001
From: Ely Repiso Polo <erepiso@iri.upc.edu>
Date: Wed, 8 May 2019 11:20:33 +0000
Subject: [PATCH] the method works for an approached person moving

---
 include/people_simulation_alg_node.h |  2 +-
 launch/people_sim.launch             |  2 +-
 launch/people_simulation.launch      |  2 +-
 map/empty_destinations.txt           | 12 ++++----
 src/people_simulation_alg_node.cpp   | 43 +++++++++++++++++-----------
 5 files changed, 37 insertions(+), 24 deletions(-)

diff --git a/include/people_simulation_alg_node.h b/include/people_simulation_alg_node.h
index 3443b1b..653de2e 100644
--- a/include/people_simulation_alg_node.h
+++ b/include/people_simulation_alg_node.h
@@ -94,7 +94,7 @@ class PeopleSimulationAlgNode : public algorithm_base::IriBaseAlgorithm<PeopleSi
     tf::TransformListener tf_listener_;
     std::string robot_;
 
-    
+    unsigned int id_person_to_approach_ros_;
 
   public:
    /**
diff --git a/launch/people_sim.launch b/launch/people_sim.launch
index 080ca27..15f5e7f 100644
--- a/launch/people_sim.launch
+++ b/launch/people_sim.launch
@@ -16,7 +16,7 @@
 		type="iri_people_simulation_approaching"
 		name="iri_people_simulation_approaching"
 		output="screen">
-	    <param name="number_persons" value="20"/>
+	    <param name="number_persons" value="40"/>
         <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_approaching)/map/4_destinations.txt" />
diff --git a/launch/people_simulation.launch b/launch/people_simulation.launch
index 9854cf8..006886f 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="20"/>
+      <param name="number_persons" value="1"/>
       <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/empty_destinations.txt b/map/empty_destinations.txt
index 4d07d23..551e10c 100644
--- a/map/empty_destinations.txt
+++ b/map/empty_destinations.txt
@@ -1,5 +1,7 @@
-4
-0, 0, -15, 0.5, 1, 1
-1, 15, 15, 0.5, 1, 0
-2, 0, 15, 0.5, 1, 3
-3, 15, -15, 0.5, 1, 2
+6
+0, 0, -25, 0.5, 5, 1,2,3,4,5
+1, 25, 25, 0.5, 5, 0,2,3,4,5
+2, 0, 25, 0.5, 5, 0,1,3,4,5
+3, 25, -25, 0.5, 5, 0,1,2,4,5
+4, 15, 25, 0.5, 5, 0,1,2,3,5
+5, 15, -25, 0.5, 5, 0,1,2,3,4
diff --git a/src/people_simulation_alg_node.cpp b/src/people_simulation_alg_node.cpp
index 106dec2..1236a5d 100644
--- a/src/people_simulation_alg_node.cpp
+++ b/src/people_simulation_alg_node.cpp
@@ -194,26 +194,36 @@ void PeopleSimulationAlgNode::mainNodeThread(void)
     for( std::list<Cperson_abstract*>::const_iterator iit = person_list->begin();
           iit!=person_list->end(); iit++ )
     {
-			track_marker_.id = (*iit)->get_id();
-			track_marker_.pose.position.x = (*iit)->get_current_pointV().x;
-			track_marker_.pose.position.y = (*iit)->get_current_pointV().y;
-			MarkerArray_msg_.markers.push_back(track_marker_);
-			id_marker_.id = (*iit)->get_id();
-			id_marker_.pose.position.x = (*iit)->get_current_pointV().x;
-			id_marker_.pose.position.y = (*iit)->get_current_pointV().y;
-			std::ostringstream target_id;
-			target_id << id_marker_.id;
-			id_marker_.text = target_id.str();
-			MarkerArray_msg_.markers.push_back(id_marker_);
-		}
+	track_marker_.id = (*iit)->get_id();
+	track_marker_.pose.position.x = (*iit)->get_current_pointV().x;
+	track_marker_.pose.position.y = (*iit)->get_current_pointV().y;
+	if(track_marker_.id==id_person_to_approach_ros_){
+	  track_marker_.color.r = 1.0;
+	  track_marker_.color.g = 0.0;
+	  track_marker_.color.b = 0.0;
+	}else{
+	  track_marker_.color.r = 0.0;
+	  track_marker_.color.g = 1.0;
+	  track_marker_.color.b = 0.0;
+	}
+
+	MarkerArray_msg_.markers.push_back(track_marker_);
+	id_marker_.id = (*iit)->get_id();
+	id_marker_.pose.position.x = (*iit)->get_current_pointV().x;
+	id_marker_.pose.position.y = (*iit)->get_current_pointV().y;
+	std::ostringstream target_id;
+	target_id << id_marker_.id;
+	id_marker_.text = target_id.str();
+	MarkerArray_msg_.markers.push_back(id_marker_);
+    }
     //draw robot if any
     if (  scene_.get_robot() != NULL )
     {
-		  track_marker_.id = 0;
+	track_marker_.id = 0;
     	track_marker_.ns = "robot";
-		  track_marker_.pose.position.x = scene_.get_robot()->get_current_pointV().x;
-		  track_marker_.pose.position.y = scene_.get_robot()->get_current_pointV().y;
-		  MarkerArray_msg_.markers.push_back(track_marker_);
+	track_marker_.pose.position.x = scene_.get_robot()->get_current_pointV().x;
+	track_marker_.pose.position.y = scene_.get_robot()->get_current_pointV().y;
+	MarkerArray_msg_.markers.push_back(track_marker_);
     	track_marker_.ns = "tracks";
     }
 
@@ -289,6 +299,7 @@ void PeopleSimulationAlgNode::node_config_update(Config &config, uint32_t level)
 	freeze_ = config.freeze;
 	scene_.set_number_virtual_people( n_persons_ );
   	scene_.set_id_person_to_apperoach(config.id_person_to_approach);
+	id_person_to_approach_ros_=config.id_person_to_approach;
  	
   this->alg_.unlock();
 }
-- 
GitLab