Go to the documentation of this file.00001 #include <ros/ros.h>
00002 #include <vision_srvs/srvjlo.h>
00003
00004 using namespace vision_srvs;
00005
00006
00007 #define JLO_IDQUERY "idquery"
00008 #define JLO_FRAMEQUERY "framequery"
00009 #define JLO_DELETE "del"
00010 #define JLO_UPDATE "update"
00011 #define ID_WORLD 1
00012
00013 int main(int argc, char* argv[])
00014 {
00015 ros::init(argc, argv, "testclient") ;
00016 srvjlo msg;
00017
00018 msg.request.command = JLO_FRAMEQUERY;
00019 if(argc > 2)
00020 msg.request.query.parent_id = atoi(argv[2]);
00021 else
00022 msg.request.query.parent_id = 1;
00023 if(argc > 1)
00024 msg.request.query.id = atoi(argv[1]);
00025 else
00026 msg.request.query.id = 864;
00027 if(argc > 15)
00028 msg.request.query.name = argv[15];
00029 msg.request.query.type = 0;
00030 int width = 4;
00031 for(int r = 0; r < width; r++)
00032 {
00033 for(int c = 0; c < width; c++)
00034 {
00035 if(r == c)
00036 msg.request.query.pose[r * width + c] = 1;
00037 else
00038 msg.request.query.pose[r * width + c] = 0;
00039 }
00040 }
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 if(argc < 15)
00051 {
00052 msg.request.query.pose[0] = 0.874767;
00053 msg.request.query.pose[1] = 0.480757;
00054 msg.request.query.pose[2] = 0.060465;
00055 msg.request.query.pose[3] = 0.050978;
00056 msg.request.query.pose[4] = 0.296898;
00057 msg.request.query.pose[5] = -0.433193;
00058 msg.request.query.pose[6] = -0.850997;
00059 msg.request.query.pose[7] = 0.188964;
00060 msg.request.query.pose[8] = -0.382929;
00061 msg.request.query.pose[9] = 0.762375;
00062 msg.request.query.pose[10] = -0.521679;
00063 msg.request.query.pose[11] = 0.777142;
00064 }
00065 else
00066 {
00067 int i = 0;
00068 msg.request.query.pose[i] = atof(argv[i + 3]);
00069 i++;
00070 msg.request.query.pose[i] = atof(argv[i + 3]);
00071 i++;
00072 msg.request.query.pose[i] = atof(argv[i + 3]);
00073 i++;
00074 msg.request.query.pose[i] = atof(argv[i + 3]);
00075 i++;
00076 msg.request.query.pose[i] = atof(argv[i + 3]);
00077 i++;
00078 msg.request.query.pose[i] = atof(argv[i + 3]);
00079 i++;
00080 msg.request.query.pose[i] = atof(argv[i + 3]);
00081 i++;
00082 msg.request.query.pose[i] = atof(argv[i + 3]);
00083 i++;
00084 msg.request.query.pose[i] = atof(argv[i + 3]);
00085 i++;
00086 msg.request.query.pose[i] = atof(argv[i + 3]);
00087 i++;
00088 msg.request.query.pose[i] = atof(argv[i + 3]);
00089 i++;
00090 msg.request.query.pose[i] = atof(argv[i + 3]);
00091 }
00092
00093 printf("Showing Query with PosId %d with parent %d:\n", (int)msg.request.query.id, (int)msg.request.query.parent_id);
00094
00095 for(int r = 0; r < width; r++)
00096 {
00097 for(int c = 0; c < width; c++)
00098 {
00099 printf( "%f ", msg.request.query.pose[r * width + c]);
00100 }
00101 printf("\n");
00102 }
00103
00104 width = 6;
00105 for(int r = 0; r < width; r++)
00106 {
00107 for(int c = 0; c < width; c++)
00108 {
00109 if(r == c)
00110 {
00111 if(r == 5)
00112 {
00113 msg.request.query.cov[r * width + c] = 6.0;
00114 }
00115 else
00116 msg.request.query.cov[r * width + c] = 0.10;
00117 }
00118 else
00119 msg.request.query.cov[r * width + c] = 0;
00120 }
00121 }
00122
00123
00124
00125
00126
00127
00128
00129 ros::NodeHandle n;
00130 ros::ServiceClient client = n.serviceClient<srvjlo>("/located_object", true);
00131 boost::xtime t0 ,t1;
00132 boost::xtime_get(&t0, boost::TIME_UTC);
00133 int calls = 10000;
00134 for(int i =0; i < calls ; i++)
00135 {
00136 boost::xtime t2 ,t3;
00137 boost::xtime_get(&t2, boost::TIME_UTC);
00138 client.call(msg);
00139 boost::xtime_get(&t3, boost::TIME_UTC);
00140
00141 }
00142 boost::xtime_get(&t1, boost::TIME_UTC);
00143 printf("%ds %d ms per %d calls\n", t1.sec - t0.sec, (t1.nsec - t0.nsec) / 1000000, calls);
00144
00145 int width2 = 4;
00146 printf("Showing PosId %d with parent %d:\n", (int)msg.response.answer.id, (int)msg.response.answer.parent_id);
00147
00148 for(int r = 0; r < width2; r++)
00149 {
00150 for(int c = 0; c < width2; c++)
00151 {
00152 printf( "%f ", msg.response.answer.pose[r * width2 + c]);
00153
00154 }
00155 printf("\n");
00156 }
00157 printf("Type: %d\n", msg.response.answer.type);
00158
00159 return 0;
00160 }