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;
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);
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];
178 for (
unsigned int i = 0; i < 3; i++)
180 est.
pos_[i] = tmp(i + 1);
181 est.
vel_[i] = tmp(i + 4);
199 double sigma_max = 0;
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);
virtual void getEstimate(BFL::StatePosVel &est) const
get filter posterior
virtual MatrixWrapper::SymmetricMatrix CovarianceGet() const
const std::string & getName() const
return the name of the tracker
virtual MatrixWrapper::ColumnVector ExpectedValueGet() const
virtual double getTime() const
return the time of the tracker
void MatrixSet(unsigned int i, const MatrixWrapper::Matrix &m)
virtual double getLifetime() const
return the lifetime of the tracker
bool tracker_initialized_
BFL::ExtendedKalmanFilter * filter_
Class representing state with pos and vel.
BFL::LinearAnalyticMeasurementModelGaussianUncertainty * meas_model_
static const double damping_velocity
BFL::LinearAnalyticSystemModelGaussianUncertainty * sys_model_
double calculateQuality()
virtual Gaussian * PostGet()
virtual ~TrackerKalman()
destructor
virtual void initialize(const BFL::StatePosVel &mu, const BFL::StatePosVel &sigma, const double time)
initialize tracker
MatrixWrapper::Matrix sys_matrix_
BFL::LinearAnalyticConditionalGaussian * meas_pdf_
BFL::LinearAnalyticConditionalGaussian * sys_pdf_
ConditionalPdf< MatrixWrapper::ColumnVector, MatrixWrapper::ColumnVector > * MeasurementPdfGet()
virtual bool updateCorrection(const tf::Vector3 &meas, const MatrixWrapper::SymmetricMatrix &cov)
virtual bool Update(SystemModel< MatrixWrapper::ColumnVector > *const sysmodel, const MatrixWrapper::ColumnVector &u, MeasurementModel< MatrixWrapper::ColumnVector, MatrixWrapper::ColumnVector > *const measmodel, const MatrixWrapper::ColumnVector &z, const MatrixWrapper::ColumnVector &s)
void AdditiveNoiseSigmaSet(const MatrixWrapper::SymmetricMatrix &sigma)
MatrixWrapper::SymmetricMatrix sys_sigma_
virtual bool updatePrediction(const double time)
update tracker
TrackerKalman(const std::string &name, const BFL::StatePosVel &sysnoise)
constructor