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
00036 #include "Aria.h"
00037
00038
00039 int main(int argc, char **argv)
00040 {
00041 Aria::init();
00042
00043
00044 ArSimpleConnector connector(&argc, argv);
00045
00046 ArRobot robot;
00047
00048
00049
00050 ArSick sick;
00051
00052 if (!connector.parseArgs() || argc > 1)
00053 {
00054 connector.logOptions();
00055 exit(1);
00056 }
00057
00058
00059 ArKeyHandler keyHandler;
00060
00061 Aria::setKeyHandler(&keyHandler);
00062
00063 robot.attachKeyHandler(&keyHandler);
00064
00065
00066 robot.addRangeDevice(&sick);
00067
00068 ArSonarDevice sonar;
00069 robot.addRangeDevice(&sonar);
00070
00071 ArActionTriangleDriveTo triangleDriveTo;
00072 ArFunctorC<ArActionTriangleDriveTo> lineGoCB(&triangleDriveTo,
00073 &ArActionTriangleDriveTo::activate);
00074 keyHandler.addKeyHandler('g', &lineGoCB);
00075 keyHandler.addKeyHandler('G', &lineGoCB);
00076 ArFunctorC<ArActionTriangleDriveTo> lineStopCB(&triangleDriveTo,
00077 &ArActionTriangleDriveTo::deactivate);
00078 keyHandler.addKeyHandler('s', &lineStopCB);
00079 keyHandler.addKeyHandler('S', &lineStopCB);
00080
00081 ArActionLimiterForwards limiter("limiter", 150, 0, 0, 1.3);
00082 robot.addAction(&limiter, 70);
00083 ArActionLimiterBackwards limiterBackwards;
00084 robot.addAction(&limiterBackwards, 69);
00085
00086 robot.addAction(&triangleDriveTo, 60);
00087
00088 ArActionKeydrive keydrive;
00089 robot.addAction(&keydrive, 55);
00090
00091
00092 ArActionStop stopAction;
00093 robot.addAction(&stopAction, 50);
00094
00095
00096 if (!connector.connectRobot(&robot))
00097 {
00098 printf("Could not connect to robot... exiting\n");
00099 Aria::shutdown();
00100 return 1;
00101 }
00102
00103 robot.comInt(ArCommands::SONAR, 1);
00104 robot.comInt(ArCommands::ENABLE, 1);
00105
00106
00107 robot.runAsync(true);
00108
00109
00110 connector.setupLaser(&sick);
00111
00112 sick.runAsync();
00113
00114 if (!sick.blockingConnect())
00115 {
00116 printf("Could not connect to SICK laser... exiting\n");
00117 Aria::shutdown();
00118 return 1;
00119 }
00120
00121 printf("If you press the 'g' key it'll go find a triangle, if you press 's' it'll stop.\n");
00122
00123 robot.waitForRunExit();
00124 return 0;
00125 }
00126
00127
00128