ekf_cal  0.4.0
A Kalman filter-based sensor calibration package
ImuUpdater Class Reference

EKF Updater Class for IMU Sensors. More...

#include <imu_updater.hpp>

Inheritance diagram for ImuUpdater:
[legend]
Collaboration diagram for ImuUpdater:
[legend]

Public Member Functions

 ImuUpdater (unsigned int imu_id, bool is_extrinsic, bool is_intrinsic, const std::string &log_file_directory, double data_log_rate, std::shared_ptr< DebugLogger > logger)
 IMU EKF Updater Constructor. More...
 
Eigen::VectorXd PredictMeasurement (EKF &ekf)
 Predict acceleration measurement. More...
 
Eigen::MatrixXd GetZeroAccelerationJacobian (EKF &ekf)
 Zero acceleration Jacobian method. More...
 
void UpdateEKF (EKF &ekf, double time, const Eigen::Vector3d &acceleration, const Eigen::Matrix3d &acceleration_covariance, const Eigen::Vector3d &angular_rate, const Eigen::Matrix3d &angular_rate_covariance)
 EKF update method for IMU measurements. More...
 
bool 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)
 Check for and perform a zero-acceleration update. More...
 
Eigen::MatrixXd GetMeasurementJacobian (EKF &ekf)
 Calculate measurement jacobian. More...
 
void AngularUpdate (EKF &ekf, const Eigen::Vector3d &angular_rate, const Eigen::Matrix3d &angular_rate_covariance)
 IMU state angular rate updater. More...
 
- Public Member Functions inherited from Updater
 Updater (unsigned int sensor_id, std::shared_ptr< DebugLogger > logger)
 EKF Updater constructor. More...
 
void KalmanUpdate (EKF &ekf, const Eigen::MatrixXd &jacobian, const Eigen::VectorXd &residual, const Eigen::MatrixXd &measurement_noise)
 

Additional Inherited Members

- Protected Attributes inherited from Updater
unsigned int m_id
 Associated sensor ID.
 
std::shared_ptr< DebugLoggerm_logger
 Debug logger.
 

Detailed Description

EKF Updater Class for IMU Sensors.

Constructor & Destructor Documentation

◆ ImuUpdater()

ImuUpdater::ImuUpdater ( unsigned int  imu_id,
bool  is_extrinsic,
bool  is_intrinsic,
const std::string &  log_file_directory,
double  data_log_rate,
std::shared_ptr< DebugLogger logger 
)

IMU EKF Updater Constructor.

Parameters
imu_idIMU Sensor ID
is_extrinsicswitch if this is the base sensor
is_intrinsicswitch if imu intrinsics should be calibrated
log_file_directoryLogging file directory
data_log_rateMaximum average rate to log data
loggerDebug logger pointer

Member Function Documentation

◆ AngularUpdate()

void ImuUpdater::AngularUpdate ( EKF ekf,
const Eigen::Vector3d &  angular_rate,
const Eigen::Matrix3d &  angular_rate_covariance 
)

IMU state angular rate updater.

Parameters
angular_rateAngular rate measurement
angular_rate_covarianceAngular rate covariance
omg_biasAngular rate bias

◆ GetMeasurementJacobian()

Eigen::MatrixXd ImuUpdater::GetMeasurementJacobian ( EKF ekf)

Calculate measurement jacobian.

Parameters
pos_i_in_bIMU position in the body frame
ang_i_to_bIMU orientation to the body frame
ang_b_to_lBody orientation to the local frame
Returns
Measurement jacobian

◆ GetZeroAccelerationJacobian()

Eigen::MatrixXd ImuUpdater::GetZeroAccelerationJacobian ( EKF ekf)

Zero acceleration Jacobian method.

Parameters
ekfEKF pointer
Returns
Measurement Jacobian matrix

◆ PredictMeasurement()

Eigen::VectorXd ImuUpdater::PredictMeasurement ( EKF ekf)

Predict acceleration measurement.

TODO: The frames are not correct here.

Parameters
ekfEKF pointer
Returns
Predicted measurement vector

◆ UpdateEKF()

void ImuUpdater::UpdateEKF ( EKF ekf,
double  time,
const Eigen::Vector3d &  acceleration,
const Eigen::Matrix3d &  acceleration_covariance,
const Eigen::Vector3d &  angular_rate,
const Eigen::Matrix3d &  angular_rate_covariance 
)

EKF update method for IMU measurements.

Parameters
ekfEKF pointer
timeMeasurement time
accelerationMeasured acceleration
acceleration_covarianceEstimated acceleration error
angular_rateMeasured angular rate
angular_rate_covarianceEstimated angular rate error

◆ ZeroAccelerationUpdate()

bool 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 
)

Check for and perform a zero-acceleration update.

Parameters
ekfEKF pointer
local_timeMeasurement in local EKF time
accelerationMeasured acceleration
acceleration_covarianceEstimated acceleration error
angular_rateMeasured angular rate
angular_rate_covarianceEstimated angular rate error
Todo:
Test stationary rotation

The documentation for this class was generated from the following files: