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
00028
00029
00030
00031
00032
00033 int main(int argc, char **argv)
00034 {
00035
00036 ArSimpleConnector connector(&argc, argv);
00037
00038
00039 ArRobot robot;
00040
00041 ArSick sick;
00042
00043 double dist, angle;
00044 std::list<ArPoseWithTime *> *readings;
00045 std::list<ArPoseWithTime *>::iterator it;
00046 double farDist, farAngle;
00047 bool found;
00048
00049 if (!connector.parseArgs() || argc > 1)
00050 {
00051 connector.logOptions();
00052 exit(1);
00053 }
00054
00055
00056 robot.addRangeDevice(&sick);
00057
00058
00059 if (!connector.connectRobot(&robot))
00060 {
00061 printf("Could not connect to robot... exiting\n");
00062 Aria::shutdown();
00063 return 1;
00064 }
00065
00066
00067 robot.runAsync(true);
00068
00069
00070 connector.setupLaser(&sick);
00071
00072 sick.runAsync();
00073
00074 if (!sick.blockingConnect())
00075 {
00076 printf("Could not connect to SICK laser... exiting\n");
00077 Aria::shutdown();
00078 return 1;
00079 }
00080
00081 printf("Connected\n");
00082 ArUtil::sleep(500);
00083
00084 int times = 0;
00085 while (times++ < 3)
00086 {
00087
00088 sick.lockDevice();
00089 dist = sick.currentReadingPolar(-90, 90, &angle);
00090 if (dist < sick.getMaxRange())
00091 printf("Closest reading %.2f mm away at %.2f degrees\n", dist, angle);
00092 else
00093 printf("No close reading.\n");
00094 readings = sick.getCurrentBuffer();
00095 int i = 0;
00096 for (it = readings->begin(), found = false; it != readings->end(); it++)
00097 {
00098 i++;
00099 dist = (*it)->findDistanceTo(ArPose(0, 0));
00100 angle = (*it)->findAngleTo(ArPose(0, 0));
00101 if (!found || dist > farDist)
00102 {
00103 found = true;
00104 farDist = dist;
00105 farAngle = angle;
00106 }
00107 }
00108 printf("%d readings\n", i);
00109 if (found)
00110 printf("Furthest reading %.2f mm away at %.2f degrees\n",
00111 farDist, farAngle);
00112 else
00113 printf("No far reading found.\n");
00114
00115 sick.unlockDevice();
00116 ArUtil::sleep(100);
00117 }
00118
00119 Aria::shutdown();
00120 return 0;
00121 }
00122
00123
00124
00125