ekf_cal  0.4.0
A Kalman filter-based sensor calibration package
To-Do List

Member Camera::Callback (const CameraMessage &camera_message)
Undistort points post track?
Member Camera::Camera (Camera::Parameters cam_params)
add detector/extractor parameters to input
Member Camera::GenerateFrameID ()
apply similar function to sensor/tracker IDs
Class EKF

Implement check for correlation coefficients to be between +/- 1

Add gravity initialization/check

Create generic function to update(r,H,R)

Member EKF::GetAugState (unsigned int camera_id, unsigned int frame_id, double time)
: Use higher order interpolation between states?
Member EKF::PredictModel (double local_time)
: Use RK4 or other higher-order prediction step
Class EkfCalNode

Option to publish health metrics

Option to publish visualization messages

Create generic callback that can be used to store and sort measurements

TF2 Publishing Flag

Option to publish health metrics

Option to publish visualization messages

debug issue with future extrapolation in RVIZ

Member EkfCalNode::PublishState ()
Copy states before converting to vectors due to race conditions.
Member FeatureTrack::true_feature_position
: Remove true feature position once MSCKF complete
Member FeatureTracker::FeatureTracker (FeatureTracker::Parameters params)
add detector/extractor parameters to input
Member FeatureTracker::GridFeatures (std::vector< cv::KeyPoint > &key_points, int rows, int cols)

Implement non-maximal suppression instead

replace this with some kind of boolean array. Eigen?

Do keypoint vector editing in place

Member FeatureTracker::RANSAC (std::vector< cv::DMatch > &matches_in, std::vector< cv::KeyPoint > &curr_key_points, std::vector< cv::DMatch > &matches_out) const
: Undistort?
Member FeatureTracker::Track (double time, unsigned int frame_id, const cv::Mat &img_in, cv::Mat &img_out)

create occupancy grid of key_points using minimal pixel distance

: Get down-sample parameters from input

Mask using maximum distance from predicted IMU rotations

Member FiducialUpdater::GetMeasurementJacobian (EKF &ekf)
Test camera calibration jacobians
Member FiducialUpdater::UpdateEKF (EKF &ekf, const double time, const BoardDetection &board_detection)
Chi^2 distance check
Class GPS
Bias Stability and Noise process inputs for GPSs
Member ImuUpdater::ZeroAccelerationUpdate (EKF &ekf, double local_time, const Eigen::Vector3d &acceleration, const Eigen::Matrix3d &acceleration_covariance, const Eigen::Vector3d &angular_rate, const Eigen::Matrix3d &angular_rate_covariance)
Test stationary rotation
Member Intrinsics::f_x
Develop better defaults
Member MsckfUpdater::TriangulateFeature (const double local_time, EKF &ekf, const FeatureTrack &feature_track, Eigen::Vector3d &pos_f_in_l)

: Add input flag

: Need to continue debugging the triangulated features

Member MsckfUpdater::UpdateEKF (EKF &ekf, const double time, const FeatureTracks &feature_tracks, double px_error)

: Add threshold for total distance/angle before triangulating

Chi^2 distance check

Class Sensor
Function for checking callback rate
Member Updater::KalmanUpdate (EKF &ekf, const Eigen::MatrixXd &jacobian, const Eigen::VectorXd &residual, const Eigen::MatrixXd &measurement_noise_input)
switch to passing EKF pointer