23 #include "../mobile_robot_wall_cts.h" 31 #include "../mobile_robot.h" 55 int main(
int argc,
char** argv)
57 cerr <<
"==================================================" << endl
58 <<
"Test of histogram filter" << endl
59 <<
"1D Mobile robot localisation example" << endl
60 <<
"==================================================" << endl;
64 int num_cond_args = 1;
68 int cond_arg_dims[num_cond_args];
69 cond_arg_dims[0] = num_states;
71 std::vector<int> cond_args(num_cond_args);
72 double prob_diag = 0.9;
73 double prob_nondiag = (1-prob_diag)/(num_states-1);
74 for (
int state_kMinusOne = 0 ; state_kMinusOne < num_states ; state_kMinusOne++)
76 cond_args[0] = state_kMinusOne;
77 for (
int state_k = 0 ; state_k < num_states ; state_k++)
79 if (state_kMinusOne == state_k) sys_pdf.
ProbabilitySet(prob_diag,state_k,cond_args);
84 std::cerr <<
"discrete system model created" << std::endl;
91 measNoise_Mu(1) = 0.0;
93 SymmetricMatrix meas_noise_Cov(
MEAS_SIZE);
95 ColumnVector meas_noise_Mu(1);
97 Gaussian measurement_Uncertainty(meas_noise_Mu, meas_noise_Cov);
102 std::cout <<
"measurement model created" << std::endl;
108 std::cout <<
"uniform prior density created" << std::endl;
115 std::cout <<
"filter created" << std::endl;
123 ColumnVector input(2);
131 cout <<
"MAIN: Starting estimation" << endl;
132 unsigned int time_step;
136 mobile_robot.
Move(input);
140 ColumnVector measurement = mobile_robot.
Measure();
141 measurement(1) = -measurement(1);
144 filter.
Update(&sys_model,&meas_model,measurement);
153 cout <<
"After " << time_step+1 <<
" timesteps " << endl;
154 cout <<
" Posterior probabilities = " << endl;
155 for (
int state = 0 ; state< posterior->
NumStatesGet() ; state++) cout << state <<
": " << (
double)(posterior->
ProbabilityGet(state)) << endl;
158 cout <<
"======================================================" << endl
159 <<
"End of the Histogram filter for 1D mobile robot localisation" << endl
160 <<
"======================================================" Class representing a PDF on a discrete variable.
Class representing the histogram filter.
This is a class simulating a mobile robot.
MatrixWrapper::ColumnVector Measure()
Class representing Gaussian (or normal density)
int main(int argc, char **argv)
virtual DiscretePdf * PostGet()
Get Posterior density.
void Move(MatrixWrapper::ColumnVector inputs)
void ProbabilitySet(const double &prob, const int &input, const std::vector< int > &condargs) const
Set the probability (Typical for discrete Pdf's)
Abstract Class representing all FULLY Discrete Conditional PDF's.
Class for discrete System Models.
Probability ProbabilityGet(const int &state) const
Implementation of virtual base class method.
unsigned int NumStatesGet() const
Get the number of discrete States.
virtual bool Update(SystemModel< int > *const sysmodel, const int &u, MeasurementModel< MeasVar, int > *const measmodel, const MeasVar &z, const int &s)
Full Update (system with inputs/sensing params)