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) const
 Predict acceleration measurement. More...
 
Eigen::MatrixXd GetZeroAccelerationJacobian (EKF &ekf) const
 Zero acceleration Jacobian method. More...
 
void UpdateEKF (EKF &ekf, const 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) const
 Calculate IMU measurement jacobian. More...
 
void AngularUpdate (EKF &ekf, const Eigen::Vector3d &angular_rate, const Eigen::Matrix3d &angular_rate_covariance) const
 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...
 

Additional Inherited Members

- Static Public Member Functions inherited from Updater
static void KalmanUpdate (EKF &ekf, const Eigen::MatrixXd &jacobian, const Eigen::VectorXd &residual, const Eigen::MatrixXd &measurement_noise_input)
 
- 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 
) const

IMU state angular rate updater.

Parameters
ekfEKF address
angular_rateAngular rate measurement
angular_rate_covarianceAngular rate covariance

◆ GetMeasurementJacobian()

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

Calculate IMU measurement jacobian.

Parameters
ekfEKF address
Returns
Measurement jacobian

◆ GetZeroAccelerationJacobian()

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

Zero acceleration Jacobian method.

Parameters
ekfEKF address
Returns
Measurement Jacobian matrix

◆ PredictMeasurement()

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

Predict acceleration measurement.

TODO: The frames are not correct here.

Parameters
ekfEKF address
Returns
Predicted measurement vector

◆ UpdateEKF()

void ImuUpdater::UpdateEKF ( EKF ekf,
const 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 address
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 address
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: