EKF Updater Class for MSCKF Camera Measurements.
More...
#include <msckf_updater.hpp>
|
| MsckfUpdater (unsigned int cam_id, bool is_extrinsic, const std::string &log_file_directory, double data_log_rate, double min_feat_dist, std::shared_ptr< DebugLogger > logger) |
| MSCKF EKF Updater constructor. More...
|
|
bool | TriangulateFeature (const double local_time, EKF &ekf, const FeatureTrack &feature_track, Eigen::Vector3d &pos_f_in_l) |
| Triangulate feature seen from multiple camera frames. More...
|
|
void | UpdateEKF (EKF &ekf, const double time, const FeatureTracks &feature_tracks, double px_error) |
| EKF updater function. More...
|
|
| Updater (unsigned int sensor_id, std::shared_ptr< DebugLogger > logger) |
| EKF Updater constructor. More...
|
|
|
static void | DistortionJacobian (const Eigen::Vector2d &xy_norm, const Intrinsics &intrinsics, Eigen::MatrixXd &H_d) |
| Computes the derivative of raw distorted to normalized coordinate. More...
|
|
static void | ProjectionJacobian (const Eigen::Vector3d &position, Eigen::MatrixXd &jacobian) |
| Function to calculate jacobian for camera projection function. More...
|
|
static Eigen::Vector2d | Project (const Eigen::Vector3d pos_f_in_c) |
| Project a 3D position in the camera frame to a 2D bearing. More...
|
|
static Eigen::Vector2d | Distort (const Eigen::Vector2d &xy_norm, const Intrinsics &intrinsics) |
| Distort a normalized camera coordinate using intrinsics. More...
|
|
static void | KalmanUpdate (EKF &ekf, const Eigen::MatrixXd &jacobian, const Eigen::VectorXd &residual, const Eigen::MatrixXd &measurement_noise_input) |
|
EKF Updater Class for MSCKF Camera Measurements.
◆ MsckfUpdater()
MsckfUpdater::MsckfUpdater |
( |
unsigned int |
cam_id, |
|
|
bool |
is_extrinsic, |
|
|
const std::string & |
log_file_directory, |
|
|
double |
data_log_rate, |
|
|
double |
min_feat_dist, |
|
|
std::shared_ptr< DebugLogger > |
logger |
|
) |
| |
|
explicit |
MSCKF EKF Updater constructor.
- Parameters
-
cam_id | Camera sensor ID |
is_extrinsic | Camera extrinsic calibration flag |
log_file_directory | Directory to save log files |
data_log_rate | Maximum average rate to log data |
min_feat_dist | Closest feature distance to consider |
logger | Debug logger pointer |
◆ Distort()
Eigen::Vector2d MsckfUpdater::Distort |
( |
const Eigen::Vector2d & |
xy_norm, |
|
|
const Intrinsics & |
intrinsics |
|
) |
| |
|
static |
Distort a normalized camera coordinate using intrinsics.
- Parameters
-
xy_norm | Normalized camera coordinate |
intrinsics | camera intrinsics |
- Returns
- Distorted XY coordinate
◆ DistortionJacobian()
void MsckfUpdater::DistortionJacobian |
( |
const Eigen::Vector2d & |
xy_norm, |
|
|
const Intrinsics & |
intrinsics, |
|
|
Eigen::MatrixXd & |
H_d |
|
) |
| |
|
static |
Computes the derivative of raw distorted to normalized coordinate.
- Parameters
-
xy_norm | Normalized coordinates we wish to distort |
intrinsics | Camera intrinsics |
H_d | Derivative of measurement z in respect to normalized |
◆ Project()
Eigen::Vector2d MsckfUpdater::Project |
( |
const Eigen::Vector3d |
pos_f_in_c | ) |
|
|
static |
Project a 3D position in the camera frame to a 2D bearing.
- Parameters
-
pos_f_in_c | Feature position in the camera frame |
- Returns
- Projected 2D position
◆ ProjectionJacobian()
void MsckfUpdater::ProjectionJacobian |
( |
const Eigen::Vector3d & |
position, |
|
|
Eigen::MatrixXd & |
jacobian |
|
) |
| |
|
static |
Function to calculate jacobian for camera projection function.
- Parameters
-
position | Position in camera coordinates |
jacobian | Resulting camera projection jacobian |
◆ TriangulateFeature()
bool MsckfUpdater::TriangulateFeature |
( |
const double |
local_time, |
|
|
EKF & |
ekf, |
|
|
const FeatureTrack & |
feature_track, |
|
|
Eigen::Vector3d & |
pos_f_in_l |
|
) |
| |
Triangulate feature seen from multiple camera frames.
- Parameters
-
ekf | EKF address |
local_time | Measurement in EKF time |
feature_track | Single feature track |
pos_f_in_l | Output estimate of feature position in camera frame given observations |
- Returns
- If triangulation was successful
- Todo:
- : Need to continue debugging the triangulated features
- Todo:
- : Add input flag
◆ UpdateEKF()
void MsckfUpdater::UpdateEKF |
( |
EKF & |
ekf, |
|
|
const double |
time, |
|
|
const FeatureTracks & |
feature_tracks, |
|
|
double |
px_error |
|
) |
| |
EKF updater function.
- Parameters
-
ekf | EKF address |
time | Time of update |
feature_tracks | Feature tracks to be used for state update |
px_error | Standard deviation of pixel error |
- Todo:
- : Add threshold for total distance/angle before triangulating
- Todo:
- Chi^2 distance check
The documentation for this class was generated from the following files: