//Code by Graham Gier, USC ID# 7227272017 #include #include #include #include #include using namespace std; double ambient; double normalize(int v) { if (v>ambient) { v=ambient; } return 1.0-v/ambient; } void alive() { ambient = (robot.getLight("left") + robot.getLight("center") + robot.getLight("right")) / 3.0; // Braitenberg vehicle#1: Alive while (true) { int L = robot.getLight("center"); robot.forward(normalize(L)); } disconnect(); } void coward() { ambient = (robot.getLight("left") + robot.getLight("center") + robot.getLight("right")) / 3.0; while (true) { int L = robot.getLight("left"); int R = robot.getLight("right"); robot.motors(normalize(L), normalize(R)); } disconnect(); } void aggressive() { ambient = (robot.getLight("left") + robot.getLight("center") + robot.getLight("right")) / 3.0; while (true) { int R = robot.getLight("right"); int L = robot.getLight("left"); robot.motors(normalize(R), normalize(L)); } disconnect(); } void indecisive() { ambient = (robot.getLight("left") + robot.getLight("center") + robot.getLight("right")) / 3.0; while(true) { if (robot.getLight("center") <= ambient) robot.forward(1, 1); else robot.backward(1,1); } } int main() { connect("/dev/tty.Fluke2-0221-Fluke2"); cout<<"choose a behavior"<> input; if (input == 1) alive(); else if (input ==2) coward(); else if (input == 3) aggressive(); else if (input == 4) indecisive(); disconnect(); return 0; }