3dpcp/.svn/pristine/19/19693456beb2508a94721193f1d00e9acb220a3f.svn-base
2012-09-16 14:33:11 +02:00

62 lines
1.5 KiB
Text

/** @file
* @brief The global correction based upon APX transform
*
* @author Andreas Nuechter. Institute of Computer Science, University of Osnabrueck, Germany.
* @author Jan Elseberg. Institute of Computer Science, University of Osnabrueck, Germany.
*/
#ifndef __GAPX6D_H__
#define __GAPX6D_H__
#include <vector>
using std::vector;
#include "graphSlam6D.h"
#include "icp6D.h"
#include "graph.h"
#include "newmat/newmatio.h"
//typedef vector <PtPair> vPtPair; ///< just a typedef: vPtPair = vector of type PtPair
/*
* @brief
*
*/
class gapx6D : public graphSlam6D {
public:
/**
* Constructor (default)
*/
gapx6D() {};
gapx6D(icp6Dminimizer *my_icp6Dminimizer,
double mdm = 25.0,
double max_dist_match = 25.0,
int max_num_iterations = 50,
bool quiet = false,
bool meta = false,
int rnd = 1,
bool eP = true,
int anim = -1,
double epsilonICP = 0.0000001,
int nns_method = simpleKD,
double epsilonLUM = 0.5);
virtual ~gapx6D();
double doGraphSlam6D(Graph gr, vector <Scan*> MetaScan, int nrIt);
static double LUM[4];
private:
double genBArotForLinkedPair(int firstScanNum, int secondScanNum, vPtPair *ptpairs,
double *centroids_m, double *centroids_d, NEWMAT::Matrix *B, NEWMAT::ColumnVector *A);
double genBAtransForLinkedPair(int firstScanNum, int secondScanNum,
double *centroids_m, double *centroids_d,
NEWMAT::SymmetricMatrix *B, NEWMAT::ColumnVector *A, NEWMAT::ColumnVector &X);
};
#endif