Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <stdio.h>
00019 #include <math.h>
00020 #include "gpc.h"
00021
00022 #define deg2rad(x) (x*M_PI/180)
00023
00024 int main() {
00025
00026 double theta = deg2rad(4);
00027 double t[2] = {0.3,-0.2};
00028 printf("x_true = %f %f %f deg\n", t[0], t[1], theta*180/M_PI);
00029
00030 double p[5][2] = {{1,0},{0,1},{-1,0},{2,1},{4,2}};
00031 double alpha[5] = {deg2rad(0),
00032 deg2rad(10), deg2rad(20), deg2rad(50),deg2rad(-20)};
00033
00034 struct gpc_corr c[5];
00035 int k;
00036 for(k=0;k<5;k++) {
00037 c[k].p[0] = p[k][0];
00038 c[k].p[1] = p[k][1];
00039 c[k].q[0] = t[0] + p[k][0]*cos(theta) - p[k][1]*sin(theta);
00040 c[k].q[1] = t[1] + p[k][0]*sin(theta) + p[k][1]*cos(theta);
00041 c[k].C[0][0] = cos(alpha[k])*cos(alpha[k]);
00042 c[k].C[0][1] = c[k].C[1][0] = cos(alpha[k])*sin(alpha[k]);
00043 c[k].C[1][1] = sin(alpha[k])*sin(alpha[k]);
00044 }
00045
00046 double x[3];
00047 gpc_solve(5,c,x);
00048
00049 printf("estimated x = %f %f %f deg\n", x[0], x[1],x[2]*180/M_PI);
00050 return 0;
00051 }
00052