00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "Aria.h"
00027
00037 int main(int argc, char **argv)
00038 {
00039 Aria::init();
00040 ArArgumentParser parser(&argc, argv);
00041 parser.loadDefaultArguments();
00042 ArSimpleConnector simpleConnector(&parser);
00043 ArRobot robot;
00044 ArSonarDevice sonar;
00045 ArAnalogGyro gyro(&robot);
00046 robot.addRangeDevice(&sonar);
00047
00048
00049
00050 ArKeyHandler keyHandler;
00051 Aria::setKeyHandler(&keyHandler);
00052 robot.attachKeyHandler(&keyHandler);
00053 printf("You may press escape to exit\n");
00054
00055
00056 ArActionLimiterForwards limiterAction("speed limiter near", 300, 600, 250);
00057 ArActionLimiterForwards limiterFarAction("speed limiter far", 300, 1100, 400);
00058 ArActionLimiterTableSensor tableLimiterAction;
00059 robot.addAction(&tableLimiterAction, 100);
00060 robot.addAction(&limiterAction, 95);
00061 robot.addAction(&limiterFarAction, 90);
00062
00063
00064 ArActionGoto gotoPoseAction("goto");
00065 robot.addAction(&gotoPoseAction, 50);
00066
00067
00068 if (!Aria::parseArgs() || !parser.checkHelpAndWarnUnparsed())
00069 {
00070 Aria::logOptions();
00071 exit(1);
00072 }
00073
00074
00075 if (!simpleConnector.connectRobot(&robot))
00076 {
00077 printf("Could not connect to robot... exiting\n");
00078 Aria::exit(1);
00079 }
00080 robot.runAsync(true);
00081
00082
00083 robot.enableMotors();
00084 robot.comInt(ArCommands::SOUNDTOG, 0);
00085
00086 bool first = true;
00087 int goalNum = 0;
00088 while (Aria::getRunning())
00089 {
00090 robot.lock();
00091
00092
00093
00094 if (first || gotoPoseAction.haveAchievedGoal())
00095 {
00096 first = false;
00097 goalNum++;
00098 if (goalNum > 4)
00099 goalNum = 1;
00100
00101
00102 if (goalNum == 1)
00103 gotoPoseAction.setGoal(ArPose(5000, 0));
00104 else if (goalNum == 2)
00105 gotoPoseAction.setGoal(ArPose(5000, 5000));
00106 else if (goalNum == 3)
00107 gotoPoseAction.setGoal(ArPose(0, 5000));
00108 else if (goalNum == 4)
00109 gotoPoseAction.setGoal(ArPose(0, 0));
00110
00111 ArLog::log(ArLog::Normal, "Going to next goal at %.0f %.0f",
00112 gotoPoseAction.getGoal().getX(), gotoPoseAction.getGoal().getY());
00113 }
00114 robot.unlock();
00115 }
00116
00117
00118 Aria::shutdown();
00119 return 0;
00120 }