Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of PsiSwarm-BeaconDemo_Bluetooth by
Revision 22:3643fc1c82b6, committed 2017-03-08
- Comitter:
- GusZ92
- Date:
- Wed Mar 08 11:49:39 2017 +0000
- Parent:
- 21:efe191c96cbb
- Commit message:
- 1. Flocking tune up threshold value; 2. Change the random walk to obs_avoid(new added)
Changed in this revision
--- a/main.cpp Mon Mar 06 13:52:55 2017 +0000 +++ b/main.cpp Wed Mar 08 11:49:39 2017 +0000 @@ -98,7 +98,7 @@ if(target_reached == 1) set_program(1); break; case 3: - curved_random_walk_with_interaction_program(); + obs_avoid(); break; case 4: straight_random_walk_with_interaction_program(); @@ -260,7 +260,7 @@ display.write_string("FLOCKING"); } else if(buffer[0] == 'E'){ - main_program_state = 4; + main_program_state = 3; display.write_string("RANDOM WALK"); } else if(buffer[0] == 'F'){
--- a/programs.cpp Mon Mar 06 13:52:55 2017 +0000 +++ b/programs.cpp Wed Mar 08 11:49:39 2017 +0000 @@ -6,6 +6,7 @@ // programs.cpp - Various PsiSwarm Programs for Beautiful Meme Project #include "main.h" +#include "psiswarm.h" int obstacle_avoidance_threshold = 300; int robot_avoidance_threshold = 2000; @@ -59,8 +60,48 @@ } } +int ticks = 0; +float c = 0.25; +float avoidRange = 400; +float roboSpeed = 0.5; +int lightNum = 0; +float side_factor = 0.5; //side ir sensor weight factor +void obs_avoid() +{ + float left_motor_speed = 0.5; + float right_motor_speed = 0.5; + + if (reflected_sensor_data[0] > 600){ //adjust because of high reading from robot 3 + left_motor_speed = -0.5; + set_left_motor_speed(left_motor_speed); + set_right_motor_speed(right_motor_speed); + //display.write_string("Walking R"); + } + else if (reflected_sensor_data[7] > 600){ + right_motor_speed = -0.5; + set_left_motor_speed(left_motor_speed); + set_right_motor_speed(right_motor_speed); + //display.write_string("Walking L"); + } + else { + display.clear_display(); + display.set_position(0,0); + float left_motor_speed = 0.5; + float right_motor_speed = 0.5; + int turnChance = rand() %100; + if (turnChance < 20) { + left_motor_speed = 0; + } else if (turnChance > 80) { + right_motor_speed = 0; + } + + set_left_motor_speed(left_motor_speed); + set_right_motor_speed(right_motor_speed); + } +} + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// recharging_program @@ -734,15 +775,17 @@ char buffer[255]; - if (reflected_sensor_data[0] > 300){ + if (reflected_sensor_data[0] > 600){ //adjust because of high reading from robot 3 left_motor_speed = -0.5; set_left_motor_speed(left_motor_speed); - set_right_motor_speed(right_motor_speed); + set_right_motor_speed(right_motor_speed); + //display.write_string("Walking R"); } - else if (reflected_sensor_data[7] > 300){ + else if (reflected_sensor_data[7] > 600){ right_motor_speed = -0.5; set_left_motor_speed(left_motor_speed); - set_right_motor_speed(right_motor_speed); + set_right_motor_speed(right_motor_speed); + //display.write_string("Walking L"); } else if (robot_id == 1) { display.clear_display(); @@ -771,8 +814,8 @@ } else { //used for time based turn instead of location based - set_left_motor_speed(left_motor_speed); - set_right_motor_speed(right_motor_speed); + set_left_motor_speed(0.5); + set_right_motor_speed(0.5); } }
--- a/programs.h Mon Mar 06 13:52:55 2017 +0000 +++ b/programs.h Wed Mar 08 11:49:39 2017 +0000 @@ -18,5 +18,7 @@ void role_reset(void); void tag_game_program(void); void mockFlocking(void); +void obs_avoid(void); + #endif \ No newline at end of file