#include <ekf_slam.h>
Classes | |
struct | CorrData |
Public Member Functions | |
void | cycle (std::vector< Pose2D > &yt, cv::Mat_< double > &C_Yt, const Command &ut, const MeasurementConstPtr &zt) |
EKFSLAM (const std::vector< double > beta) | |
void | setConfig (const void *config) |
![]() | |
Type | getType () const |
const std::string | getTypeName () const |
void | reset () |
SLAMTechnique (Type type) | |
const boost::posix_time::ptime & | time_last_update () const |
Private Types | |
typedef std::shared_ptr< CorrData const > | CorrDataConstPtr |
typedef std::shared_ptr< CorrData > | CorrDataPtr |
enum | DataAssociationMode { ID = 0, NNSF_LOCAL = 1, NNSF_GLOBAL = 2 } |
enum | UpdateMode { None = 0, Single = 1, Combined = 2 } |
Private Member Functions | |
void | data_association (const MeasurementMarkerConstPtr &zt) |
void | init () |
void | integration (const MeasurementMarkerConstPtr &zt) |
void | measurement (const MeasurementMarkerConstPtr &zt, const CorrDataPtr &corr) |
cv::Matx< double, 3, 3 > | measurement_noise (const MeasurementMarker::Marker zi) |
void | NNSF_global (const MeasurementMarkerConstPtr &zt, const double gamma) |
void | NNSF_local (const MeasurementMarkerConstPtr &zt, const double gamma) |
void | prediction (const Command &ut) |
void | update () |
void | update_combined () |
void | update_single () |
Private Attributes | |
const std::vector< double > | beta_ |
parameters More... | |
std::vector< CorrDataPtr > | c_ij |
correspondences: f[k] = j <-> marker k corressponds to landmark j More... | |
std::vector< CorrDataPtr > | c_ji |
measurement to landmark correspondences More... | |
cv::Mat_< double > | C_X |
covariance matrix of y = (x m1 m2 ...) More... | |
cv::Mat_< double > | C_Y |
mean vector of x More... | |
tuw_marker_slam::EKFSLAMConfig | config_ |
std::map< int, size_t > | f_kj |
covariance matrix of x More... | |
cv::Mat_< double > | x |
mean vector of y = (x m1 m2 ...) More... | |
cv::Mat_< double > | y |
parameters for the implemented measurement noise model More... | |
std::vector< size_t > | z_known |
landmark to measurement correspondences (ignore j = 0 since landmark numbering starts with 1) More... | |
std::vector< size_t > | z_new |
measurements corresponding to known landmarks More... | |
Additional Inherited Members | |
![]() | |
enum | Type { EKF = 0 } |
![]() | |
bool | updateTimestamp (const boost::posix_time::ptime &t) |
![]() | |
boost::posix_time::time_duration | duration_last_update_ |
time of the last processed measurment More... | |
bool | reset_ |
boost::posix_time::ptime | timestamp_last_update_ |
on true the system should be reseted on the next loop More... | |
![]() | |
static std::map< Type, std::string > | TypeName_ |
extended kalman filter slam
Definition at line 17 of file ekf_slam.h.
|
private |
Definition at line 74 of file ekf_slam.h.
|
private |
Definition at line 73 of file ekf_slam.h.
|
private |
Different supported data association modes
Enumerator | |
---|---|
ID | |
NNSF_LOCAL | |
NNSF_GLOBAL |
Definition at line 47 of file ekf_slam.h.
|
private |
Different supported update modes
Enumerator | |
---|---|
None | |
Single | |
Combined |
Definition at line 56 of file ekf_slam.h.
EKFSLAM::EKFSLAM | ( | const std::vector< double > | beta | ) |
Constructor
beta | parameters for the implemented measurement noise model |
Definition at line 7 of file ekf_slam.cpp.
|
virtual |
starts the SLAM cycle and predicts the robot and landmark poses at the timestamp encoded into the measurement
yt | implicit return of the combined state yt = (xt, mt_1, ..., mt_n) with xt = (x, y, alpha), mt_i = (x_i, y_i, alpha_i) |
C_Yt | implicit return of the combined covariance matrix of combined state |
ut | current control command |
zt | measurment with a timestamp |
Implements tuw::SLAMTechnique.
Definition at line 29 of file ekf_slam.cpp.
|
private |
data association to find matching between measurements and landmarks
zt | measurements at time t |
Definition at line 124 of file ekf_slam.cpp.
|
privatevirtual |
|
private |
integrating new landmarks
Definition at line 530 of file ekf_slam.cpp.
|
private |
compares observed and predicted measurement
zt | measurements at time t |
corr | contains the indices of the measurement and associated landmark, also used for implicit return |
Definition at line 334 of file ekf_slam.cpp.
|
private |
implements the measurement noise model
zi | single measured marker |
Definition at line 399 of file ekf_slam.cpp.
|
private |
performs Nearest Neighbor Standard Filter (NNSF) by finding a minimum Mahalanobis distance assignment between measurements and unassociated landmarks
zt | measurements at time t |
gamma | gamma is a threshold such that 100*(1-alpha)% of true measurements are rejected (with alpha from the config) |
Definition at line 259 of file ekf_slam.cpp.
|
private |
performs Nearest Neighbor Standard Filter (NNSF) by associating each measurement to an up then unassociated landmark with minimum Mahalanobis distance
Note: does not avoid local optimums, i.e. to a single landmark multiple measurements could be assigned. In this case both associations are deprecated (conservative approach)
zt | measurements at time t |
gamma | gamma is a threshold such that 100*(1-alpha)% of true measurements are rejected (with alpha from the config) |
Definition at line 181 of file ekf_slam.cpp.
|
private |
|
virtual |
virtual function to set the config parameters
config | of type tuw_marker_slam::EKFSLAMConfig* |
Implements tuw::SLAMTechnique.
Definition at line 57 of file ekf_slam.cpp.
|
private |
correcting robot and landmarks poses
zt | measurements at time t |
Definition at line 413 of file ekf_slam.cpp.
|
private |
corrects the robot and landmarks poses by using all observations combined in one step
Definition at line 482 of file ekf_slam.cpp.
|
private |
iterates over each single observation and corrects the robot and landmarks poses
Definition at line 429 of file ekf_slam.cpp.
|
private |
parameters
Definition at line 156 of file ekf_slam.h.
|
private |
correspondences: f[k] = j <-> marker k corressponds to landmark j
Definition at line 165 of file ekf_slam.h.
|
private |
measurement to landmark correspondences
Definition at line 166 of file ekf_slam.h.
|
private |
covariance matrix of y = (x m1 m2 ...)
Definition at line 161 of file ekf_slam.h.
|
private |
mean vector of x
Definition at line 160 of file ekf_slam.h.
|
private |
Definition at line 155 of file ekf_slam.h.
|
private |
covariance matrix of x
Definition at line 163 of file ekf_slam.h.
|
private |
mean vector of y = (x m1 m2 ...)
Definition at line 159 of file ekf_slam.h.
|
private |
parameters for the implemented measurement noise model
Definition at line 158 of file ekf_slam.h.
|
private |
landmark to measurement correspondences (ignore j = 0 since landmark numbering starts with 1)
Definition at line 168 of file ekf_slam.h.
|
private |
measurements corresponding to known landmarks
Definition at line 169 of file ekf_slam.h.