46 using MatrixWrapper::Matrix;
47 using MatrixWrapper::ColumnVector;
48 using MatrixWrapper::SymmetricMatrix;
59 tracker_initialized_(false)
63 for (
unsigned int i = 1; i <= 3; i++)
68 ColumnVector sys_mu(6);
72 for (
unsigned int i = 0; i < 3; i++)
82 Matrix meas_matrix(3, 6);
84 for (
unsigned int i = 1; i <= 3; i++)
85 meas_matrix(i, i) = 1;
87 ColumnVector meas_mu(3);
89 SymmetricMatrix meas_sigma(3);
91 for (
unsigned int i = 0; i < 3; i++)
92 meas_sigma(i + 1, i + 1) = 0;
93 BFL::Gaussian meas_noise(meas_mu, meas_sigma);
94 meas_pdf_ =
new BFL::LinearAnalyticConditionalGaussian(meas_matrix, meas_noise);
111 ColumnVector mu_vec(6);
112 SymmetricMatrix sigma_vec(6);
114 for (
unsigned int i = 0; i < 3; i++)
116 mu_vec(i + 1) = mu.
pos_[i];
117 mu_vec(i + 4) = mu.
vel_[i];
118 sigma_vec(i + 1, i + 1) = pow(sigma.
pos_[i], 2);
119 sigma_vec(i + 4, i + 4) = pow(sigma.
vel_[i], 2);
121 prior_ = BFL::Gaussian(mu_vec, sigma_vec);
138 for (
unsigned int i = 1; i <= 3; i++)
157 assert(cov.columns() == 3);
160 ColumnVector meas_vec(3);
161 for (
unsigned int i = 0; i < 3; i++)
162 meas_vec(i + 1) = meas[i];
165 static_cast<BFL::LinearAnalyticConditionalGaussian*
>(
meas_model_->MeasurementPdfGet())->AdditiveNoiseSigmaSet(cov);
177 ColumnVector tmp =
filter_->PostGet()->ExpectedValueGet();
178 for (
unsigned int i = 0; i < 3; i++)
180 est.
pos_[i] = tmp(i + 1);
181 est.
vel_[i] = tmp(i + 4);
187 ColumnVector tmp =
filter_->PostGet()->ExpectedValueGet();
199 double sigma_max = 0;
200 SymmetricMatrix cov =
filter_->PostGet()->CovarianceGet();
201 for (
unsigned int i = 1; i <= 2; i++)
202 sigma_max = std::max(sigma_max, sqrt(cov(i, i)));
204 return 1.0 - std::min(1.0, sigma_max / 1.5);