diff --git a/cfg/FakeLaserGen.cfg b/cfg/FakeLaserGen.cfg index c99496b3bfd10142f79db6fe5fe13542ddead930..a73f51c9fa9cba048f6e4adef4e05384c2754a02 100755 --- a/cfg/FakeLaserGen.cfg +++ b/cfg/FakeLaserGen.cfg @@ -39,6 +39,6 @@ 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("laser_mode", int_t, 0, "#0-circle, #1-Single obstacle #2-Two obstacles, #3-multiple obstacles, #4-multiple obstacles2, #5-scene, #6-scene_2", 0, 0, 6) +gen.add("laser_mode", int_t, 0, "#0-circle, #1-Single obstacle #2-Two obstacles, #3-multiple obstacles, #4-multiple obstacles2, #5-scene, #6-scene_2 #7-multiple obstacles3", 0, 0, 10) exit(gen.generate(PACKAGE, "FakeLaserGenAlgorithm", "FakeLaserGen")) diff --git a/include/fake_laser_gen_alg_node.h b/include/fake_laser_gen_alg_node.h index c6b5b8f311ea1ed4133bc3fe74c4e3d418e59a16..6e8d1a5df8ce133027cca795cac4dd4dde21d899 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}; + enum laser_mode{Zero=0, one_obstacle, two_obstacles, n_obstacles, n_obstacles_2, scene, scene_2, n_obstacles_3, n_obstacles_4, n_obstacles_5}; private: // [publisher attributes] diff --git a/launch/fake_laser_gen.launch b/launch/fake_laser_gen.launch index 98d62fafeb3ee0723b2e3f8c7697bc2d2c51fe54..4b46292c0ff03bb5efb5f7b5bed9d4189397147b 100644 --- a/launch/fake_laser_gen.launch +++ b/launch/fake_laser_gen.launch @@ -5,7 +5,7 @@ type="fake_laser_gen" name="$(optenv ROBOT tibi)_fake_laser_gen" output="screen"> - <param name="laser_mode" value="0" /> + <param name="laser_mode" value="9" /> <remap from="~scan" to="/$(optenv ROBOT tibi)/sensors/front_laser_scan"/> </node> diff --git a/src/fake_laser_gen_alg_node.cpp b/src/fake_laser_gen_alg_node.cpp index b43f16a40921f165e9c16fb0111b5e8690b54aaf..10b3fd1f63d3e96e8332303fbf863f113d1fcfdb 100644 --- a/src/fake_laser_gen_alg_node.cpp +++ b/src/fake_laser_gen_alg_node.cpp @@ -87,6 +87,9 @@ void FakeLaserGenAlgNode::node_config_update(Config &config, uint32_t level) //plot fixed map LaserScan_msg_.ranges.clear(); LaserScan_msg_.ranges.resize(1436,59.9); + +// NOTE TO MARTA: the good scenarios are: n obstacles 3 (num 7); n obstacles 4 (num 8); n obstacles 5 (num 9); (Also if you want, you can include more scerarios, but save these ones. + switch(laser_mode_) { case FakeLaserGenAlgNode::one_obstacle : @@ -166,6 +169,161 @@ void FakeLaserGenAlgNode::node_config_update(Config &config, uint32_t level) for (unsigned int n = 1260; n<1400; ++n) LaserScan_msg_.ranges[n] = -1.0 / sin(LaserScan_msg_.angle_increment * (double) n); break; + + case FakeLaserGenAlgNode::n_obstacles_3 : // 7!? + 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[1]= 10.0; + LaserScan_msg_.ranges[241]= 10.0; + LaserScan_msg_.ranges[481]= 10.0; + LaserScan_msg_.ranges[721]= 10.0; + LaserScan_msg_.ranges[961]= 10.0; + LaserScan_msg_.ranges[1201]= 10.0; + LaserScan_msg_.ranges[1+20]= 10.0; + LaserScan_msg_.ranges[241+20]= 10.0; + LaserScan_msg_.ranges[481+20]= 10.0; + LaserScan_msg_.ranges[721+20]= 10.0; + LaserScan_msg_.ranges[961+20]= 10.0; + LaserScan_msg_.ranges[1201+20]= 10.0; + break; + + case FakeLaserGenAlgNode::n_obstacles_4 : // 8!? + ROS_INFO("n obstacles 4"); + 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[1]= 10.0; + LaserScan_msg_.ranges[1+20]= 10.0; + LaserScan_msg_.ranges[121]= 10.0; + LaserScan_msg_.ranges[121+20]= 10.0; + LaserScan_msg_.ranges[241]= 10.0; + LaserScan_msg_.ranges[241+20]= 10.0; + LaserScan_msg_.ranges[361]= 10.0; + LaserScan_msg_.ranges[361+20]= 10.0; + LaserScan_msg_.ranges[481]= 10.0; + LaserScan_msg_.ranges[481+20]= 10.0; + LaserScan_msg_.ranges[601]= 10.0; + LaserScan_msg_.ranges[601+20]= 10.0; + LaserScan_msg_.ranges[721]= 10.0; + LaserScan_msg_.ranges[721+20]= 10.0; + LaserScan_msg_.ranges[841]= 10.0; + LaserScan_msg_.ranges[841+20]= 10.0; + LaserScan_msg_.ranges[961]= 10.0; + LaserScan_msg_.ranges[961+20]= 10.0; + LaserScan_msg_.ranges[1081]= 10.0; + LaserScan_msg_.ranges[1081+20]= 10.0; + LaserScan_msg_.ranges[1201]= 10.0; + LaserScan_msg_.ranges[1201+20]= 10.0; + break; + + case FakeLaserGenAlgNode::n_obstacles_5 : // 8!? + ROS_INFO("n obstacles 5"); + 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[1]= 10.0; + LaserScan_msg_.ranges[1+20]= 10.0; + LaserScan_msg_.ranges[121]= 10.0; + LaserScan_msg_.ranges[121+20]= 10.0; + LaserScan_msg_.ranges[241]= 10.0; + LaserScan_msg_.ranges[241+20]= 10.0; + LaserScan_msg_.ranges[361]= 10.0; + LaserScan_msg_.ranges[361+20]= 10.0; + LaserScan_msg_.ranges[481]= 10.0; + LaserScan_msg_.ranges[481+20]= 10.0; + LaserScan_msg_.ranges[601]= 10.0; + LaserScan_msg_.ranges[601+20]= 10.0; + LaserScan_msg_.ranges[721]= 10.0; + LaserScan_msg_.ranges[721+20]= 10.0; + LaserScan_msg_.ranges[841]= 10.0; + LaserScan_msg_.ranges[841+20]= 10.0; + LaserScan_msg_.ranges[961]= 10.0; + LaserScan_msg_.ranges[961+20]= 10.0; + LaserScan_msg_.ranges[1081]= 10.0; + LaserScan_msg_.ranges[1081+20]= 10.0; + LaserScan_msg_.ranges[1201]= 10.0; + LaserScan_msg_.ranges[1201+20]= 10.0; + + + LaserScan_msg_.ranges[50]= 15.0; + LaserScan_msg_.ranges[50+10]= 15.0; + // LaserScan_msg_.ranges[150]= 15.0; + // LaserScan_msg_.ranges[150+10]= 15.0; + LaserScan_msg_.ranges[200]= 15.0; + LaserScan_msg_.ranges[200+10]= 15.0; + // LaserScan_msg_.ranges[250]= 15.0; + // LaserScan_msg_.ranges[250+10]= 15.0; + LaserScan_msg_.ranges[300]= 15.0; + LaserScan_msg_.ranges[300+10]= 15.0; + // LaserScan_msg_.ranges[350]= 15.0; + // LaserScan_msg_.ranges[350+10]= 10.0; + LaserScan_msg_.ranges[400]= 15.0; + LaserScan_msg_.ranges[400+10]= 15.0; + // LaserScan_msg_.ranges[450]= 15.0; + // LaserScan_msg_.ranges[450+10]= 15.0; + LaserScan_msg_.ranges[500]= 15.0; + LaserScan_msg_.ranges[500+10]= 15.0; + // LaserScan_msg_.ranges[550]= 15.0; + // LaserScan_msg_.ranges[550+10]= 15.0; + LaserScan_msg_.ranges[600]= 15.0; + LaserScan_msg_.ranges[600+10]= 15.0; + + // LaserScan_msg_.ranges[650]= 15.0; + // LaserScan_msg_.ranges[650+10]= 15.0; + LaserScan_msg_.ranges[700]= 15.0; + LaserScan_msg_.ranges[700+10]= 15.0; + // LaserScan_msg_.ranges[750]= 15.0; + // LaserScan_msg_.ranges[750+10]= 15.0; + LaserScan_msg_.ranges[800]= 15.0; + LaserScan_msg_.ranges[800+10]= 15.0; + // LaserScan_msg_.ranges[850]= 15.0; + // LaserScan_msg_.ranges[850+10]= 15.0; + LaserScan_msg_.ranges[900]= 15.0; + LaserScan_msg_.ranges[900+10]= 15.0; + // LaserScan_msg_.ranges[950]= 15.0; + // LaserScan_msg_.ranges[950+10]= 15.0; + LaserScan_msg_.ranges[1000]= 15.0; + LaserScan_msg_.ranges[1000+10]= 15.0; + // LaserScan_msg_.ranges[1050]= 15.0; + // LaserScan_msg_.ranges[1050+10]= 15.0; + LaserScan_msg_.ranges[1100]= 15.0; + LaserScan_msg_.ranges[1100+10]= 15.0; + // LaserScan_msg_.ranges[1150]= 15.0; + // LaserScan_msg_.ranges[1150+10]= 15.0; + + break; + case FakeLaserGenAlgNode::Zero : default : ROS_INFO("zero");