Warehouse Rover main program
Dependencies: mbed Team2_Library
WareHouse.cpp
- Committer:
- simon9987
- Date:
- 2022-03-11
- Revision:
- 1:e4b822ee4fdf
File content as of revision 1:e4b822ee4fdf:
#include "Common.h" bool enteredReverse = false; bool obstacleAvoidance(){ getDistance(); const unsigned int frontRight = sensorDistance[0], frontLeft = sensorDistance[1], rear = sensorDistance[2]; if((avoidObstacle(frontRight) && avoidObstacle(frontLeft)) || enteredReverse){ //all sensors are blocked car needs to stop and terminate break out of movement if(avoidObstacle(rear)){ buzzerTerminate(); sendMessage("Terminating program - car is stuck!\r\n"); stop(); resetAll(); return true; } moveReverse(); enteredReverse = true; } else if(avoidObstacle(frontRight)){ //turn right if obstacle detected on right sonar sensor steerLeft(); moveForward(); } else if(avoidObstacle(frontLeft)){ //turn left if obstacle detected on left sonar sensor steerRight(); moveForward(); } else { resetSteering(); //straighten steering wheel //if previously reversing continue to reverse else move forward if(enteredReverse) moveReverse(); else moveForward(); } return false; } bool checkColour(){ const int waitTime = 2; Colour RED = Colour(255,99,71); Colour BLUE = Colour(0,10,255); Colour YELLOW = Colour(255,255,0); Colour GREEN = Colour(0, 128, 0); Colour BLACK = Colour(0, 0, 0); Colour currentColour = getColour(); currentColour.setColourTolerance(8,8,8); // set room for error for slightly varying versions of the colour //notify operator to collect package and wait 60 seconds if(currentColour.equals(BLACK)){ stop(); sendMessage("Car has arrived. Please collect package\r\n"); for(int i = 0; i<30; ++i) buzzerPackage(); //beeps for 60 seconds to also notify operator resetAll(); return true; } if(currentColour.equals(YELLOW)){ steerRight(); //turn right if yellow is detected wait(waitTime); } else if(currentColour.equals(RED)){ steerLeft(); //turn left if red is detected wait(waitTime); } else if(currentColour.equals(BLUE) && packageDestination == 1){ steerLeft(); // if blue is detected and the package destination is set to one wait(waitTime); } else if(currentColour.equals(GREEN) && packageDestination == 2){ steerLeft(); //turn left if green is detected and the package destination is set to two wait(waitTime); } else resetSteering(); moveForward(); return false; } int main() { setUpMovement(0.2, -0.2, -0.7); setUpRGB(); packageDestination = getPackageDestination(); //returns int which correlates to package destination while (true){ if(checkColour()) // break loop if car has reached package destination break; if(obstacleAvoidance()){ //break loop if car is unable to move break; } } sendMessage("Rc car has terminated!\r\n"); // notify operator that car has finished its operation }