9#ifndef INCLUDE_SRC_FILTER_H_
10#define INCLUDE_SRC_FILTER_H_
12#include <DataHandler/DataHandler.h>
40 typedef Eigen::Matrix<double, total_states, 1>
vector3D_t;
41 typedef Eigen::Matrix<double, 2 * total_states, 1>
vector6D_t;
45 typedef Eigen::Matrix<double, total_states, total_states>
matrix3D_t;
46 typedef Eigen::Matrix<double, 2 * total_states, 2 * total_states>
matrix6D_t;
69 typedef Eigen::Matrix<double, 2 * total_states, total_measurements>
77 typedef Eigen::Matrix<double, total_measurements, 2 * total_states>
83 typedef Eigen::Matrix<double, total_measurements, 1>
86 typedef Eigen::Matrix<double, total_measurements, total_measurements>
90 typedef Eigen::Matrix<double, 2 * total_states, 2 * total_states>
135 measurementCovariance_t::Zero();
304 explicit Filter(DataHandler &data);
matrix3D_t marginalise(const matrix6D_t &)
Schur complement-based marginalisation that marginalises a 6x6 matrix into a 3x3 matrix.
Definition filter.cpp:475
matrix3D_t computePseudoInverse(const matrix3D_t &)
Definition filter.cpp:635
matrix6D_t augmentedPrecision_t
Definition filter.h:62
void normaliseAngle(double &)
Normalise an angle between .
Definition filter.cpp:571
Eigen::Matrix< double, total_measurements, 1 > huberMeasurementThresholds_t
Definition filter.h:84
vector3D_t state_t
Definition filter.h:49
Eigen::Matrix< double, 2 *total_states, 1 > vector6D_t
Definition filter.h:41
Eigen::Matrix< double, 2, 1 > vector2D_t
Definition filter.h:39
vector6D_t augmentedInformation_t
Definition filter.h:58
void performInference()
Performs robot state inference using the EKF bayesian inference framework for all robots provided.
Definition filter.cpp:99
std::vector< EstimationParameters > robot_parameters
Houses all estimation parameters for all robots.
Definition filter.h:230
matrix3D_t precision_t
Definition filter.h:61
vector6D_t augmentedState_t
Definition filter.h:50
static const unsigned short total_measurements
The total number of system measurements: range [m] and bearing [rad].
Definition filter.h:31
const huberStateThresholds_t state_thresholds
The thresholds for the huber state cost function.
Definition filter.h:249
Eigen::Matrix< double, total_inputs, total_inputs > processCovariance_t
Definition filter.h:80
vector2D_t measurement_t
Definition filter.h:65
virtual void prediction(const Robot::Odometry &, EstimationParameters &)=0
matrix6D_t augmentedCovariance_t
Definition filter.h:54
@ ORIENTATION
Definition filter.h:36
@ Y
Definition filter.h:36
@ X
Definition filter.h:36
void motionModel(const Robot::Odometry &, EstimationParameters &, const double)
The unicycle motion model used to perform motion predictions.
Definition filter.cpp:297
measurement_t measurementModel(EstimationParameters &, const EstimationParameters &)
Uses the non-linear measurement model to predict what the measurement from the system would be given ...
Definition filter.cpp:395
Eigen::Matrix< double, total_states, total_states > matrix3D_t
Definition filter.h:45
DataHandler & data_
Data class housing all the data pertaining to cooperative localisation (positioning).
Definition filter.h:97
@ FORWARD_VELOCITY
Definition filter.h:34
@ ANGULAR_VELOCITY
Definition filter.h:34
Eigen::Matrix< double, 2 *total_states, 1 > huberStateThresholds_t
Definition filter.h:89
augmentedCovariance_t createAugmentedMatrix(const covariance_t &, const covariance_t &)
Combines the covariance/precision matrix of the 3 states of the ego vehicle (x,y,orientation),...
Definition filter.cpp:555
Eigen::Matrix< double, total_measurements, total_measurements > huberMeasurementWeights_t
Definition filter.h:87
vector3D_t information_t
Definition filter.h:57
void calculateMotionJacobian(const Robot::Odometry &, EstimationParameters &, const double)
Calculates the Jacobian matrix of the unicycle motion model in terms of the systems states (x,...
Definition filter.cpp:333
static const unsigned short total_inputs
The total number of system inputs: forward velocity [m/s] and angular velocity [rad/s].
Definition filter.h:26
augmentedState_t calculateNormalisedEstimationResidual(const EstimationParameters &)
Calculates the normalised residual of the initial estimate and updated estimate.
Definition filter.cpp:610
Eigen::Matrix< double, total_states, total_inputs > processJacobian_t
Definition filter.h:75
huberMeasurementWeights_t HuberMeasurement(const measurement_t &, const huberMeasurementThresholds_t &)
Huber Measurement cost function,.
Definition filter.cpp:229
augmentedInformation_t createAugmentedVector(const state_t &, const state_t &)
Combines the 3 states of the ego vehicle (x,y,orientation), with the state of the agent measured to c...
Definition filter.cpp:522
const huberMeasurementThresholds_t measurement_thresholds
The thresholds for the huber measurement cost function.
Definition filter.h:241
huberStateWeights_t HuberState(const augmentedState_t &, const huberStateThresholds_t &)
Huber State cost function,.
Definition filter.cpp:256
Eigen::Matrix< double, 2, 2 > matrix2D_t
Definition filter.h:44
measurement_t calculateNormalisedInnovation(const EstimationParameters &)
Calculates the normalised residual of the value produced by the sensor measurement and the prior esti...
Definition filter.cpp:583
Eigen::Matrix< double, total_states, total_states > motionJacobian_t
Definition filter.h:73
Eigen::Matrix< double, 2 *total_states, total_measurements > kalmanGain_t
Definition filter.h:70
matrix3D_t covariance_t
Definition filter.h:53
matrix2D_t measurementCovariance_t
Definition filter.h:66
@ BEARING
Definition filter.h:35
@ RANGE
Definition filter.h:35
Eigen::Matrix< double, total_states, 1 > vector3D_t
Definition filter.h:40
Eigen::Matrix< double, total_measurements, 2 *total_states > measurementJacobian_t
Definition filter.h:78
Eigen::Matrix< double, 2 *total_states, 2 *total_states > huberStateWeights_t
Definition filter.h:91
virtual void correction(EstimationParameters &, const EstimationParameters &)=0
static const unsigned short total_states
The total number of system states: x coordinate [m], y-coordinate [m], and orientation (heading) [rad...
Definition filter.h:21
std::vector< EstimationParameters > landmark_parameters
Houses all estimation parameters for all landmarks.
Definition filter.h:235
void calculateProcessJacobian(EstimationParameters &, const double)
Calculates the Jacobian matrix of the motion model evaluated in terms of the process inputs.
Definition filter.cpp:362
void calculateMeasurementJacobian(EstimationParameters &, const EstimationParameters &)
Jacobian of the measurement model evaluated in terms of the systems states: x,y, and heading.
Definition filter.cpp:444
Eigen::Matrix< double, 2 *total_states, 2 *total_states > matrix6D_t
Definition filter.h:46
Houses the parameters required for performing Bayesian filtering.
Definition filter.h:103
covariance_t error_covariance
Estimation Error Covariance: 3x3 matrix.
Definition filter.h:151
measurement_t measurement
Recieved range and bearing measurement: 2x1 matrix.
Definition filter.h:119
augmentedState_t estimation_residual
The difference between the prior and posterior state estimtes.
Definition filter.h:143
processJacobian_t process_jacobian
Jacobian matrix of the motion model evaluated in terms of the process inputs.
Definition filter.h:196
measurementCovariance_t measurement_noise
Measurement noise covariance matrix: 2x2 matrix.
Definition filter.h:184
precision_t precision_matrix
Precision matrix: 3x3 matrix.
Definition filter.h:224
unsigned short barcode
Definition filter.h:105
state_t information_vector
Information vector: 3x1 matrix.
Definition filter.h:215
kalmanGain_t kalman_gain
Kalman gain: 5x2 matrix.
Definition filter.h:160
measurementJacobian_t measurement_jacobian
Jacobian of the measurement model: 2 x 6 matrix.
Definition filter.h:201
unsigned short id
Definition filter.h:104
state_t state_estimate
Estimated robot state - x coordinate [m], y-coordinate [m], and orientation (heading) [rad]: 3x1 matr...
Definition filter.h:114
measurement_t innovation
The difference between the measurement recieved by the sensor and the predicted measurement based on ...
Definition filter.h:129
motionJacobian_t motion_jacobian
Jacobian matrix of the motion model evaluated in terms of the systems states: x, y and orientation.
Definition filter.h:190
measurementCovariance_t innovation_covariance
Measurement innovation covariance matrix: 2x2 matrix.
Definition filter.h:134
processCovariance_t process_noise
Odometry process noise covariance matrix: 2x2 matrix.
Definition filter.h:173