diff --git a/cfg/IriStateMachineCompanion.cfg b/cfg/IriStateMachineCompanion.cfg index 0d1e1aaef52dc94d9e4299cbe8af87fb029c0658..87364bd173ecc65784e378059cd6ddb12cd90cb4 100755 --- a/cfg/IriStateMachineCompanion.cfg +++ b/cfg/IriStateMachineCompanion.cfg @@ -40,7 +40,7 @@ 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) # threshold_max_dist_between_robot_and_person_ -gen.add("threshold_max_dist_between_robot_and_person_conf", double_t, 0, "Maximum distance between robot and person to talk (meters)", 5.0, 0.0, 30.0) - +gen.add("threshold_max_dist_between_robot_and_person_conf", double_t, 0, "Maximum distance between robot and person to talk (meters)", 3.5, 0.0, 30.0) +gen.add("threshold_less_max_vel_robot_conf", double_t, 0, "less max vel of person because robot needs 0.2m/s more to react", 0.2, 0.0, 3.0) exit(gen.generate(PACKAGE, "IriStateMachineCompanionAlgorithm", "IriStateMachineCompanion")) diff --git a/include/iri_state_machine_companion_alg_node.h b/include/iri_state_machine_companion_alg_node.h index d2cf55303f0cca4142de710d0e173103b13c535b..3a4e8b048d5f078f14e50d91c17f2d3ebeb39ed0 100644 --- a/include/iri_state_machine_companion_alg_node.h +++ b/include/iri_state_machine_companion_alg_node.h @@ -96,7 +96,7 @@ class IriStateMachineCompanionAlgNode : public algorithm_base::IriBaseAlgorithm< unsigned int id_person_companion_, id_second_person_companion_; double threshold_max_dist_between_robot_and_person_; - + double threshold_less_max_vel_robot_; // [service attributes] // [client attributes] diff --git a/src/iri_state_machine_companion_alg_node.cpp b/src/iri_state_machine_companion_alg_node.cpp index 896084ab64f02acb0ba99fc20953220226d9c7f7..7732ac6a2ccf8adb205729d49ef3c708054fe7a5 100644 --- a/src/iri_state_machine_companion_alg_node.cpp +++ b/src/iri_state_machine_companion_alg_node.cpp @@ -8,7 +8,7 @@ IriStateMachineCompanionAlgNode::IriStateMachineCompanionAlgNode(void) : { //init class attributes if necessary this->loop_rate_ = 2;//in [Hz] TODO: ver a cuantos ercios ir. -ROS_INFO("ini node"); +//ROS_INFO("ini node"); this->fixed_frame = "/map"; this->robot_frame = "/tibi/base_link"; @@ -31,7 +31,7 @@ ROS_INFO("ini node"); // [init clients] // [init action servers] -ROS_INFO("node created"); +//ROS_INFO("node created"); // [init action clients] } @@ -92,30 +92,30 @@ void IriStateMachineCompanionAlgNode::mainNodeThread(void) unsigned int actual_numCompanionPeople=save_companionStatus_mesage_global_.numCompanionPeople; - ROS_INFO("save_companionStatus_mesage_global_.numCompanionPeople=%d",save_companionStatus_mesage_global_.numCompanionPeople); + //ROS_INFO("save_companionStatus_mesage_global_.numCompanionPeople=%d",save_companionStatus_mesage_global_.numCompanionPeople); if(actual_numCompanionPeople==0){ this->tibi_akp_status_UInt64_msg_.data =1; // status no people. } // TODO status fake person ==2 and status return other goal ==3 bool aboiding_stat_obst = save_companionStatus_mesage_global_.estoyEvitandoObstaculosEstaticos; - ROS_INFO("save_companionStatus_mesage_global_.estoyEvitandoObstaculosEstaticos=%d",save_companionStatus_mesage_global_.estoyEvitandoObstaculosEstaticos); + //ROS_INFO("save_companionStatus_mesage_global_.estoyEvitandoObstaculosEstaticos=%d",save_companionStatus_mesage_global_.estoyEvitandoObstaculosEstaticos); if(aboiding_stat_obst==true){ //this->tibi_akp_status_UInt64_msg_.data =4; // aboiding static obstacles } bool aboiding_dyn_obst = save_companionStatus_mesage_global_.estoyEvitandoObstaculosDynamicos; - ROS_INFO("save_companionStatus_mesage_global_.estoyEvitandoObstaculosDynamicos=%d",save_companionStatus_mesage_global_.estoyEvitandoObstaculosDynamicos); + //ROS_INFO("save_companionStatus_mesage_global_.estoyEvitandoObstaculosDynamicos=%d",save_companionStatus_mesage_global_.estoyEvitandoObstaculosDynamicos); if(aboiding_dyn_obst==true){ //this->tibi_akp_status_UInt64_msg_.data =5; // aboiding dynamic obstacles } if(!save_companionStatus_mesage_global_.idsCompanionPeople.empty()){ id_person_companion_=save_companionStatus_mesage_global_.idsCompanionPeople[0]; - ROS_INFO("id_person_companion_=%d",id_person_companion_); + //ROS_INFO("id_person_companion_=%d",id_person_companion_); if(save_companionStatus_mesage_global_.idsCompanionPeople.size()>1){ id_second_person_companion_=save_companionStatus_mesage_global_.idsCompanionPeople[1]; - ROS_INFO("id_second_person_companion_=%d",id_second_person_companion_); + //ROS_INFO("id_second_person_companion_=%d",id_second_person_companion_); } } @@ -130,14 +130,17 @@ void IriStateMachineCompanionAlgNode::mainNodeThread(void) //std::cout<< "this->obs; id=" <<this->obs[u].id<<"; x="<<this->obs[u].x<<"; y="<<this->obs[u].y<<"; vx="<<this->obs[u].vx<<"; vy="<<this->obs[u].vy<< std::endl; } - ROS_INFO("save_companionStatus_mesage_global_.maximumRobotVelocity=%f; person_companion_velocity=%f",save_companionStatus_mesage_global_.maximumRobotVelocity,person_companion_velocity); + //ROS_INFO("save_companionStatus_mesage_global_.maximumRobotVelocity=%f; person_companion_velocity=%f",save_companionStatus_mesage_global_.maximumRobotVelocity,person_companion_velocity); + threshold_less_max_vel_robot_=config_.threshold_less_max_vel_robot_conf; + double max_robot_velocity=save_companionStatus_mesage_global_.maximumRobotVelocity; - if(max_robot_velocity < person_companion_velocity){ + if((max_robot_velocity - threshold_less_max_vel_robot_) < person_companion_velocity){ this->tibi_akp_status_UInt64_msg_.data =7; // status walk slowly, please. I can not follow you. } threshold_max_dist_between_robot_and_person_=config_.threshold_max_dist_between_robot_and_person_conf; - ROS_INFO("threshold_max_dist_between_robot_and_person_=%f; distance_robot_person_comp=%f",threshold_max_dist_between_robot_and_person_,distance_robot_person_comp); + + //ROS_INFO("threshold_max_dist_between_robot_and_person_=%f; distance_robot_person_comp=%f",threshold_max_dist_between_robot_and_person_,distance_robot_person_comp); if(distance_robot_person_comp > threshold_max_dist_between_robot_and_person_){ this->tibi_akp_status_UInt64_msg_.data =8; //status wait for me, please. @@ -159,7 +162,7 @@ void IriStateMachineCompanionAlgNode::mainNodeThread(void) /* [subscriber callbacks] */ void IriStateMachineCompanionAlgNode::companionState_callback(const iri_nav_msgs::companionStateResults::ConstPtr& msg) { - ROS_INFO("IriStateMachineCompanionAlgNode::companionState_callback: New Message Received"); + //ROS_INFO("IriStateMachineCompanionAlgNode::companionState_callback: New Message Received"); //use appropiate mutex to shared variables if necessary //this->alg_.lock(); @@ -186,7 +189,7 @@ void IriStateMachineCompanionAlgNode::companionState_mutex_exit(void) void IriStateMachineCompanionAlgNode::odom_callback(const nav_msgs::Odometry::ConstPtr& msg) { - ROS_INFO("IriStateMachineCompanionAlgNode::odom_callback: New Message Received"); + //ROS_INFO("IriStateMachineCompanionAlgNode::odom_callback: New Message Received"); //use appropiate mutex to shared variables if necessary //this->alg_.lock(); @@ -276,7 +279,7 @@ void IriStateMachineCompanionAlgNode::odom_mutex_exit(void) void IriStateMachineCompanionAlgNode::people_tracks_callback(const iri_perception_msgs::detectionArray::ConstPtr& msg) { - ROS_INFO("IriStateMachineCompanionAlgNode::people_tracks_callback: New Message Received"); + //ROS_INFO("IriStateMachineCompanionAlgNode::people_tracks_callback: New Message Received"); //use appropiate mutex to shared variables if necessary //this->alg_.lock();