GMPHDUnicycle2DNoIdFilter.h
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
00019
00020
00021
00022
00023
00024
00025
00030
00031 #ifndef __GMPHD_UNICYCLE_2D_NO_ID_FILTER_H
00032 #define __GMPHD_UNICYCLE_2D_NO_ID_FILTER_H
00033
00034 #include <Spaces.h>
00035 #include <GaussianMixture.h>
00036 #include "PHDFilter.h"
00037 #include <map>
00038
00039 #define NO_ID -1
00040 #define STEADY_ID -2
00041
00042 using namespace MipBaselib;
00043 using namespace arma;
00044
00045 namespace MipAlgorithms{
00046
00048
00049
00053 class GMPHDUnicycle2DNoIdFilterPars:public PHDFilterPars{
00054 public:
00055
00056
00058 DMat N_n_x;
00059
00060
00062 DMat H;
00064 DMat N_n_z;
00065
00066
00069 Decimal truncThresh;
00071 int maxNumComponents;
00074 Decimal mergThresh;
00075
00077 int partNumber;
00078
00079
00081 GMPHDUnicycle2DNoIdFilterPars();
00083 GMPHDUnicycle2DNoIdFilterPars(Decimal pS, Decimal pD, Time t, DMat& nx, DMat& h, DMat& nz, Decimal tt, int mc, Decimal mt, int pN);
00084 };
00085
00086
00090 class GMPHDUnicycle2DNoIdFilterVars:public PHDFilterVars{
00091
00092 public:
00093
00094 Pose myLastPose;
00095 Decimal lastMeasurementNumber;
00096
00097 GaussianMixtureJointId prediction;
00098
00099 vector<DCol> predictedMeasures;
00100 vector<DMat> predictedCovariances;
00101 vector<DMat> kalmanGains;
00102 vector<DMat> stepKCovariances;
00103 bool firstStepAfterMeasurements;
00104
00105 GaussianMixtureJointId belief;
00106
00107 GMPHDUnicycle2DNoIdFilterVars();
00108
00109 vector<int> lastOtherRobotPoseNum;
00110 map<int,Pose> lastOtherRobotPose;
00111 map<int,Pose> odometries;
00112 };
00113
00114
00118 class GMPHDUnicycle2DNoIdFilter:public PHDFilter{
00119 private:
00120 GMPHDUnicycle2DNoIdFilterVars* _gmvars;
00121 GMPHDUnicycle2DNoIdFilterPars* _gmpars;
00122
00123 public:
00124 GMPHDUnicycle2DNoIdFilter();
00125
00126 GMPHDUnicycle2DNoIdFilter(GMPHDUnicycle2DNoIdFilterPars inParams);
00127
00128 void step(PHDFilterIn &in);
00129
00130 string print();
00131
00132 void getBelief(GaussianMixtureJointId &gm);
00133
00134 string getObjectName() const {
00135 return "GMPHDUnicycle2DNoIdFilter";
00136 }
00137
00138 PHDFilterOutputType getOutputType(){
00139 return PHD_OUT_GM;
00140 }
00141
00142
00143 protected:
00144 void _computeOdometries(PHDFilterIn &in);
00145
00146 void _predictBirthTarget(PHDFilterIn &in);
00147 void _predictExistingTarget();
00148 void _buildPHDUpdateComponents(PHDFilterIn &in);
00149 void _updateWithMeasurements(PHDFilterIn &in);
00150 void _prune();
00151
00152
00153 void _initialize(PHDFilterIn &in);
00154 void _normalStep(PHDFilterIn &in);
00155
00156 Decimal _mahalanobisDist(GaussianComponent& a, GaussianComponent& b);
00157
00158 };
00159
00160
00161
00162 }
00163
00164
00165 #endif
00166
00167
00168
00169
00170
00171
00172
00173