00001
00002
00003
00004
00005 #ifndef CAJUN_TRANSFORMATIONS_H
00006 #define CAJUN_TRANSFORMATIONS_H
00007
00008
00009 #include "heading_data.H"
00010 #include "motion_data.H"
00011 #include "nav_data.H"
00012 #include "scan_data.H"
00013 #include "scan_gp_data.H"
00014
00015
00016 namespace cajun
00017 {
00018 void multiply4By4 (double first[4][4], double second[4][4],
00019 double results[4][4]);
00020 void multiplyMatrices (double rotMat[4][4], double coord[4],
00021 double results[4]);
00022 void transMatrix (double thetaX, double thetaY, double thetaZ,
00023 double displacement[4], double transMatrix[4][4]);
00024 void compute_sick_transf_matrix (double thetaX, double thetaY,
00025 double thetaZ,
00026 double displacement[4]);
00027
00028 double interpolate (double t,
00029 double t0, double v0, double t1, double v1);
00030 double interpolate_angle (double t,
00031 double t0, double v0, double t1, double v1);
00032
00033 nav_data_t interpolate (double tstamp,
00034 nav_data_t const &nav0,
00035 nav_data_t const &nav1);
00036 motion_data_t interpolate (double tstamp,
00037 motion_data_t const &motion0,
00038 motion_data_t const &motion1);
00039 heading_data_t interpolate (double tstamp,
00040 heading_data_t const &heading0,
00041 heading_data_t const &heading1);
00042
00043 void translate (scan_data_t const &sick,
00044 nav_data_t const &nav,
00045 motion_data_t const &motion,
00046 void process (scan_gp_data_t const &points));
00047
00048 extern double sick_transf_mat[4][4];
00049 };
00050
00051 #endif