diff --git a/include/fake_laser_gen_alg_node.h b/include/fake_laser_gen_alg_node.h index b61fd62d23849e7b50ba79f14ccb275de930576d..99a535460280458c7d9a081915597e23bc23f7ef 100644 --- a/include/fake_laser_gen_alg_node.h +++ b/include/fake_laser_gen_alg_node.h @@ -41,7 +41,7 @@ */ class FakeLaserGenAlgNode : public algorithm_base::IriBaseAlgorithm<FakeLaserGenAlgorithm> { - enum laser_mode{Zero=0, one_obstacle, two_obstacles, n_obstacles, n_obstacles_2, scene, scene_2,corrido_obstacles_companion_2_paths,corrido_obstacles_companion_3_paths,corridor_obstacles_which_narrows_companion_1_paths, n_obstacles3, n_obstacles4, scene_3, scene_4, n_obstacles5, n_obstacles6, n_obstacles7, n_obstacles8,n_obstacles7_robot2017_videos}; + enum laser_mode{Zero=0, one_obstacle, two_obstacles, n_obstacles, n_obstacles_2, scene, scene_2,corrido_obstacles_companion_2_paths,corrido_obstacles_companion_3_paths,corridor_obstacles_which_narrows_companion_1_paths, n_obstacles3, n_obstacles4, scene_3, scene_4, n_obstacles5, n_obstacles6, n_obstacles7, n_obstacles8,n_obstacles7_robot2017_videos, scene_5,scene_6,n_obstacles9,scene_7,n_obstacles10,n_obstacles11 }; private: // [publisher attributes] diff --git a/src/fake_laser_gen_alg_node.cpp b/src/fake_laser_gen_alg_node.cpp index 6d353ff56df9fa688670425b9f22be921d7c9cb9..f44aea88fa60a2e11cd0f22ae197392dd15d324e 100644 --- a/src/fake_laser_gen_alg_node.cpp +++ b/src/fake_laser_gen_alg_node.cpp @@ -91,18 +91,20 @@ void FakeLaserGenAlgNode::node_config_update(Config &config, uint32_t level) //*********/ //laser_mode_=FakeLaserGenAlgNode::n_obstacles7; // [ultimo que estaba usando BUENO, datos paper robot2017] caso estrechez en medio del camino! caso obstaculos a 1.94 m entre ellos. va con empty_map_whit_obstacles2 - - //laser_mode_=FakeLaserGenAlgNode::n_obstacles5; //caso estrechez en medio del camino. Muy estrecho! //laser_mode_=FakeLaserGenAlgNode::n_obstacles3; //caso estrechez en medio del camino! obstaculos a 2.2305 m entre ellos va con empty_map_whit_obstacles1 - // laser_mode_=FakeLaserGenAlgNode::n_obstacles7_robot2017_videos; - //laser_mode_=FakeLaserGenAlgNode::n_obstacles8; // [ultimo que estaba usando BUENO] caso estrechez en medio del camino! caso obstaculos a 1.4965 m entre ellos. va con empty_map_whit_obstacles2 + // laser_mode_=FakeLaserGenAlgNode::n_obstacles8; // [ultimo que estaba usando BUENO] caso estrechez en medio del camino! caso obstaculos a 1.4965 m entre ellos. va con empty_map_whit_obstacles2 //laser_mode_=FakeLaserGenAlgNode::n_obstacles6; //caso estrechez en medio del camino! //laser_mode_=FakeLaserGenAlgNode::scene_3; // caso pasillo, esquina. (Ancho) //laser_mode_=FakeLaserGenAlgNode::scene_2; // Estrecho! caso pasillo, esquina. //laser_mode_=FakeLaserGenAlgNode::scene_4; // pasillo esquina, medio ancho, medio estrecho! + //laser_mode_=FakeLaserGenAlgNode::scene_7; // Caso pared lateral grande en lado izquierdo pantalla. +//laser_mode_=FakeLaserGenAlgNode::n_obstacles10; //Caso obstaculo en el lateral izquierdo que lo evita bien el grupo (solo faltaria salir de un poco más atras) + +//laser_mode_=FakeLaserGenAlgNode::n_obstacles11; // nuevo caso puerta para el caso del companion de 2 personas. + switch(laser_mode_) { case FakeLaserGenAlgNode::one_obstacle : @@ -231,6 +233,44 @@ void FakeLaserGenAlgNode::node_config_update(Config &config, uint32_t level) } break; + case FakeLaserGenAlgNode::scene_5 : // Case only one lateral big wall. + { + ROS_INFO("scene"); + for (unsigned int n = 20; n<700; ++n) + LaserScan_msg_.ranges[n] = 5.0 / sin(LaserScan_msg_.angle_increment * (double) n); + } + break; + + case FakeLaserGenAlgNode::scene_6 : // Case only one lateral big wall. + { + ROS_INFO("scene"); + /*for (unsigned int n = 20; n<700; ++n) + LaserScan_msg_.ranges[n] = 5.0 / sin(LaserScan_msg_.angle_increment * (double) n);*/ + for (unsigned int n = 758; n<805; ++n) + LaserScan_msg_.ranges[n] = -2.0 / sin(LaserScan_msg_.angle_increment * (double) n); + for (unsigned int n = 805; n<1040; ++n) + LaserScan_msg_.ranges[n] = -5.0 / cos(LaserScan_msg_.angle_increment * (double) n); + for (unsigned int n = 1137; n<1260; ++n) + LaserScan_msg_.ranges[n] = 3.0 / cos(LaserScan_msg_.angle_increment * (double) n); + for (unsigned int n = 1260; n<1400; ++n) + LaserScan_msg_.ranges[n] = -3.0 / sin(LaserScan_msg_.angle_increment * (double) n); + } + break; + + case FakeLaserGenAlgNode::scene_7 : // Case only one lateral big wall. + { + ROS_INFO("scene"); + for (unsigned int n = 758; n<805; ++n) + LaserScan_msg_.ranges[n] = -2.0 / sin(LaserScan_msg_.angle_increment * (double) n); + for (unsigned int n = 805; n<1040; ++n) + LaserScan_msg_.ranges[n] = -5.0 / cos(LaserScan_msg_.angle_increment * (double) n); + /*for (unsigned int n = 1137; n<1260; ++n) + LaserScan_msg_.ranges[n] = 3.0 / cos(LaserScan_msg_.angle_increment * (double) n); + for (unsigned int n = 1260; n<1400; ++n) + LaserScan_msg_.ranges[n] = -3.0 / sin(LaserScan_msg_.angle_increment * (double) n);*/ + } + break; + case FakeLaserGenAlgNode::corrido_obstacles_companion_2_paths : { ROS_INFO("corrido_obstacles_companion_2_paths"); @@ -413,41 +453,87 @@ void FakeLaserGenAlgNode::node_config_update(Config &config, uint32_t level) case FakeLaserGenAlgNode::n_obstacles8 : // caso obstaculos a 1.4965 m entre ellos. va con empty_map_whit_obstacles2 { ROS_INFO("n obstacles 3"); - /* LaserScan_msg_.ranges[100]= 4.0; - LaserScan_msg_.ranges[100+40]= 4.0; - LaserScan_msg_.ranges[340]= 4.0; - LaserScan_msg_.ranges[340+40]= 4.0; - LaserScan_msg_.ranges[580]= 4.0; - LaserScan_msg_.ranges[580+40]= 4.0; - LaserScan_msg_.ranges[820]= 4.0; - LaserScan_msg_.ranges[820+40]= 4.0; - LaserScan_msg_.ranges[1060]= 4.0; - LaserScan_msg_.ranges[1060+40]= 4.0; - LaserScan_msg_.ranges[1300]= 4.0; - LaserScan_msg_.ranges[1300+40]= 4.0;*/ - - LaserScan_msg_.ranges[100]= 7.0; - LaserScan_msg_.ranges[100+40]= 7.0; - LaserScan_msg_.ranges[340]= 7.0; - //LaserScan_msg_.ranges[340+40]= 7.0; - // LaserScan_msg_.ranges[660]= 13.25; - LaserScan_msg_.ranges[680-15]= 13.0; + for (unsigned int n = 665; n<688; ++n){ // 726.5 -> 745 ooo 665 -> 688 + LaserScan_msg_.ranges[n]=13.15; + } + /* LaserScan_msg_.ranges[680-15]= 13.0; LaserScan_msg_.ranges[680-10]= 13.25; LaserScan_msg_.ranges[680-5]= 13.25; LaserScan_msg_.ranges[680]= 13.15; - LaserScan_msg_.ranges[680+8]= 13.15; // 6.5 pasan... + LaserScan_msg_.ranges[680+8]= 13.15; // 6.5 pasan...*/ // LaserScan_msg_.ranges[680+5]= 13.0; - LaserScan_msg_.ranges[730-3.5]= 13.15; //4.5 pasan... + /* LaserScan_msg_.ranges[730-3.5]= 13.15; //4.5 pasan... LaserScan_msg_.ranges[730]= 13.15; LaserScan_msg_.ranges[730+5]= 13.15; LaserScan_msg_.ranges[730+10]= 13.15; LaserScan_msg_.ranges[730+15]= 13.15; - LaserScan_msg_.ranges[730+20]= 13.15; - LaserScan_msg_.ranges[1300+18]= 7.0; + LaserScan_msg_.ranges[730+20]= 13.15;*/ + for (unsigned int n = 726.5; n<740; ++n){ // 726.5 -> 745 ooo 665 -> 688 + LaserScan_msg_.ranges[n]=13.15; + } + // LaserScan_msg_.ranges[1300+18]= 7.0; + } + break; + + case FakeLaserGenAlgNode::n_obstacles11 : // caso obstaculos a 1.4965 m entre ellos. va con empty_map_whit_obstacles2 + { + ROS_INFO("n obstacles 3"); + for (unsigned int n = 675; n<698; ++n){ // 726.5 -> 745 ooo 665 -> 688 + LaserScan_msg_.ranges[n]=13.15; + } + + for (unsigned int n = 736.5; n<760; ++n){ // 726.5 -> 745 ooo 665 -> 688 + LaserScan_msg_.ranges[n]=13.15; + } + } break; + case FakeLaserGenAlgNode::n_obstacles9 : // caso obstaculos a 1.4965 m entre ellos. va con empty_map_whit_obstacles2 + { + ROS_INFO("n obstacles 3"); + + /* LaserScan_msg_.ranges[680-15]= 13.0; + LaserScan_msg_.ranges[680-10]= 13.25; + LaserScan_msg_.ranges[680-5]= 13.25; + LaserScan_msg_.ranges[680]= 13.15; + LaserScan_msg_.ranges[680+8]= 13.15; */ // 6.5 pasan... + for (unsigned int n = 665; n<688; ++n){ // 726.5 -> 745 ooo 665 -> 688 + LaserScan_msg_.ranges[n]=13.15; + } + /* LaserScan_msg_.ranges[730-3.5]= 17.15; //4.5 pasan... + LaserScan_msg_.ranges[730]= 17.15; + LaserScan_msg_.ranges[730+3]= 17.15; + LaserScan_msg_.ranges[730+6]= 17.15; + LaserScan_msg_.ranges[730+9]= 17.15; + LaserScan_msg_.ranges[730+12]= 17.15; + // LaserScan_msg_.ranges[1300+18]= 7.0;*/ + } + break; + + case FakeLaserGenAlgNode::n_obstacles10 : // caso obstaculo a la izquierda del grupo. Bueno para luego hacer experimentos con obstaculos. Se ve bien como se acerca más a la persona con menos fuerza de obstaculos. + { + ROS_INFO("n obstacles 3"); + + + /* LaserScan_msg_.ranges[680-15]= 13.0; + LaserScan_msg_.ranges[680-10]= 13.25; + LaserScan_msg_.ranges[680-5]= 13.25; + LaserScan_msg_.ranges[680]= 13.15; + LaserScan_msg_.ranges[680+8]= 13.15; */ // 6.5 pasan... + for (unsigned int n = 675; n<698; ++n){ // 726.5 -> 745 ooo 665 -> 688 + LaserScan_msg_.ranges[n]=13.15; + } + /* LaserScan_msg_.ranges[730-3.5]= 17.15; //4.5 pasan... + LaserScan_msg_.ranges[730]= 17.15; + LaserScan_msg_.ranges[730+3]= 17.15; + LaserScan_msg_.ranges[730+6]= 17.15; + LaserScan_msg_.ranges[730+9]= 17.15; + LaserScan_msg_.ranges[730+12]= 17.15; + // LaserScan_msg_.ranges[1300+18]= 7.0;*/ + } + break; case FakeLaserGenAlgNode::n_obstacles6 : {