From afd394277a992061820717decf68eaa263c105fb Mon Sep 17 00:00:00 2001 From: Ely Repiso Polo <erepiso@iri.upc.edu> Date: Mon, 17 May 2021 11:39:21 +0000 Subject: [PATCH] add changes in robot ASP-SI, only one person accompaniment, last version in the docker. This version works perfectly. --- include/akp_local_planner_alg_node.h | 4 +-- launch/gazebo_ASPSI_OK_ana.launch | 22 ++++++++++++++++ launch/gazebo_ASPSI_OK_ana_brl.launch | 24 +++++++++++++++++ src/akp_local_planner_alg_node.cpp | 38 +++++++++++++-------------- 4 files changed, 67 insertions(+), 21 deletions(-) diff --git a/include/akp_local_planner_alg_node.h b/include/akp_local_planner_alg_node.h index 2724e6a..50c3ef7 100644 --- a/include/akp_local_planner_alg_node.h +++ b/include/akp_local_planner_alg_node.h @@ -42,7 +42,7 @@ #include <iri_robot_aspsi/AkpLocalPlannerConfig.h> // [publisher subscriber headers] -// #include <iri_nav_msgs/companionStateResults.h> +#include <iri_nav_msgs/companionStateResults.h> #include <std_msgs/Float64MultiArray.h> #include <std_msgs/UInt64.h> #include <geometry_msgs/Twist.h> @@ -150,7 +150,7 @@ class AkpLocalPlanner : public nav_core::BaseLocalPlanner geometry_msgs::PoseWithCovarianceStamped tibi_restart_pose_; ros::Publisher companionState_publisher_; //publisher of planner state, for the companion state to do that tibi talks. - // iri_nav_msgs::companionStateResults companionState_companionStateResults_msg_; // was to obtain som states from severan situations and do a authomatic robot's speech for human-robot interaction. Do not needed for only accompaniment. + iri_nav_msgs::companionStateResults companionState_companionStateResults_msg_; // was to obtain som states from severan situations and do a authomatic robot's speech for human-robot interaction. Do not needed for only accompaniment. // [publisher attributes] ros::Publisher g_plan_pub_; diff --git a/launch/gazebo_ASPSI_OK_ana.launch b/launch/gazebo_ASPSI_OK_ana.launch index ba1860a..3db1b61 100644 --- a/launch/gazebo_ASPSI_OK_ana.launch +++ b/launch/gazebo_ASPSI_OK_ana.launch @@ -44,8 +44,30 @@ <param name="AkpLocalPlanner/sim_target_per" value="False"/> <param name="AkpLocalPlanner/frame_robot_footprint" value="ana/base_link"/> </node> + +<!-- node states companion --> + <node pkg ="iri_state_machine_companion" + type="iri_state_machine_companion" + name="state_mach_comp" + output="screen"> + <remap from="/ana/state_mach_comp/people_tracks" + to="/ana/mht/tracks" /> + <remap from="/ana/state_mach_comp/odom" + to="/ana/odom" /> + <remap from="/ana/state_mach_comp/companionState" + to="/ana/companionState" /> + <remap from="/ana/state_mach_comp/tibi_akp_status" + to="/ana/ana_akp_tatus"/> + <param name="~/threshold_max_dist_between_robot_and_person_conf" value="3.0" /> + <param name="~/frame_map" value="map" /> + <param name="~/frame_robot_footprint" value="ana/base_link" /> + <param name="~/robot" value="ana" /> + <param name="terrinet_project_conf" value="true"/> + </node> </group> + + <node name="dr" pkg ="rqt_reconfigure" type="rqt_reconfigure" /> </launch> diff --git a/launch/gazebo_ASPSI_OK_ana_brl.launch b/launch/gazebo_ASPSI_OK_ana_brl.launch index 8361d8f..6d60eb1 100644 --- a/launch/gazebo_ASPSI_OK_ana_brl.launch +++ b/launch/gazebo_ASPSI_OK_ana_brl.launch @@ -44,8 +44,32 @@ <param name="AkpLocalPlanner/sim_target_per" value="False"/> <param name="AkpLocalPlanner/frame_robot_footprint" value="ana/base_link"/> </node> + +<!-- node states companion --> + <node pkg ="iri_state_machine_companion" + type="iri_state_machine_companion" + name="state_mach_comp" + output="screen"> + <remap from="/ana/state_mach_comp/people_tracks" + to="/ana/mht/tracks" /> + <remap from="/ana/state_mach_comp/odom" + to="/ana/odom" /> + <remap from="/ana/state_mach_comp/companionState" + to="/ana/companionState" /> + <remap from="/ana/state_mach_comp/tibi_akp_status" + to="/ana/ana_akp_tatus"/> + <param name="~/threshold_max_dist_between_robot_and_person_conf" value="3.0" /> + <param name="~/frame_map" value="map" /> + <param name="~/frame_robot_footprint" value="ana/base_link" /> + <param name="~/robot" value="ana" /> + <param name="terrinet_project_conf" value="true"/> + </node> + </group> + + + <node name="dr" pkg ="rqt_reconfigure" type="rqt_reconfigure" /> </launch> diff --git a/src/akp_local_planner_alg_node.cpp b/src/akp_local_planner_alg_node.cpp index a14eb69..e333a77 100644 --- a/src/akp_local_planner_alg_node.cpp +++ b/src/akp_local_planner_alg_node.cpp @@ -215,7 +215,7 @@ void AkpLocalPlanner::init() this->tibi_pose_for_sim_ = this->public_node_handle_.advertise<geometry_msgs::PoseWithCovarianceStamped>("tibi_pose_for_sim", 10); // publisher to restart robot pose in simulation - //this->companionState_publisher_ = this->public_node_handle_.advertise<iri_nav_msgs::companionStateResults>("companionState", 100); + this->companionState_publisher_ = this->public_node_handle_.advertise<iri_nav_msgs::companionStateResults>("companionState", 100); //publisher teleop, para cambiar mis parametros internos. @@ -1105,40 +1105,40 @@ bool AkpLocalPlanner::computeVelocityCommands(geometry_msgs::Twist& cmd_vel) // ESTADO planner. if(!stop_robot_manually_){ if(output_screen_messages_){ROS_INFO(" no people msg");} - //companionState_companionStateResults_msg_.numCompanionPeople=0; // if no_people poner .numCompanionPeople=0; // si no encuentro los ids de las person companion + companionState_companionStateResults_msg_.numCompanionPeople=0; // if no_people poner .numCompanionPeople=0; // si no encuentro los ids de las person companion } }else{ - //companionState_companionStateResults_msg_.numCompanionPeople=num_people_for_state_;//num_people_for_state_; Only one person accompaniment. + companionState_companionStateResults_msg_.numCompanionPeople=num_people_for_state_;//num_people_for_state_; Only one person accompaniment. } - //this->companionState_companionStateResults_msg_.idsCompanionPeople.resize(0); + this->companionState_companionStateResults_msg_.idsCompanionPeople.resize(0); - // this->companionState_companionStateResults_msg_.idsCompanionPeople.resize(1); - // companionState_companionStateResults_msg_.idsCompanionPeople[0]=id_person_companion_; + this->companionState_companionStateResults_msg_.idsCompanionPeople.resize(1); + companionState_companionStateResults_msg_.idsCompanionPeople[0]=id_person_companion_; - //companionState_companionStateResults_msg_.maximumRobotVelocity=this->planner_.get_max_v_by_system(); + companionState_companionStateResults_msg_.maximumRobotVelocity=this->planner_.get_max_v_by_system(); Sdestination robot_actual_dest=this->planner_.get_robot_destination(); - //companionState_companionStateResults_msg_.destinations.resize(1); - //iri_nav_msgs::destination actual_dest_pers_robot; - //actual_dest_pers_robot.personid=id_person_companion_; - //actual_dest_pers_robot.position.x=robot_actual_dest.x; -// actual_dest_pers_robot.position.y=robot_actual_dest.y; -// actual_dest_pers_robot.position.z=0.0; - //companionState_companionStateResults_msg_.destinations[0]=actual_dest_pers_robot; + companionState_companionStateResults_msg_.destinations.resize(1); + iri_nav_msgs::destination actual_dest_pers_robot; + actual_dest_pers_robot.personid=id_person_companion_; + actual_dest_pers_robot.position.x=robot_actual_dest.x; + actual_dest_pers_robot.position.y=robot_actual_dest.y; + actual_dest_pers_robot.position.z=0.0; + companionState_companionStateResults_msg_.destinations[0]=actual_dest_pers_robot; // estas dos siguientes era mejor no usarlas y no decir nada. Hubiera sido un incordio y ya se veia que estaba evitando obstaculos. - //companionState_companionStateResults_msg_.estoyEvitandoObstaculosEstaticos=false; //this->planner_.get_bool_evitando_obst_estaticos(); - //companionState_companionStateResults_msg_.estoyEvitandoObstaculosDynamicos=false;//this->planner_.get_bool_evitando_obst_dynamicos(); - //companionState_companionStateResults_msg_.estateNoPathObstacleClose=this->planner_.get_obstacle_very_close_no_path(); + companionState_companionStateResults_msg_.estoyEvitandoObstaculosEstaticos=false; //this->planner_.get_bool_evitando_obst_estaticos(); + companionState_companionStateResults_msg_.estoyEvitandoObstaculosDynamicos=false;//this->planner_.get_bool_evitando_obst_dynamicos(); + companionState_companionStateResults_msg_.estateNoPathObstacleClose=this->planner_.get_obstacle_very_close_no_path(); bool robot_in_lat=true; robot_in_lat=true; - //companionState_companionStateResults_msg_.robotLateral=robot_in_lat; + companionState_companionStateResults_msg_.robotLateral=robot_in_lat; if(output_screen_messages_){ ROS_INFO("(actual) NO path; this->planner_.get_obstacle_very_close_no_path()=%d",this->planner_.get_obstacle_very_close_no_path()); } - // this->companionState_publisher_.publish(this->companionState_companionStateResults_msg_); + this->companionState_publisher_.publish(this->companionState_companionStateResults_msg_); if((see_std_out_mesages_ros_)||(see_std_out_velocities_ros_)){ std::cout<< "LAST ROBOT VELOCITY (Si V!=0, TODO BIEN) => V.x="<<cmd_vel.linear.x<<"; y="<<cmd_vel.linear.y <<"; W="<< cmd_vel.angular.z<<"; this->config_.speed_k="<<this->config_.speed_k<< std::endl; } -- GitLab