STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
fsw::nav::EKFNavigationEnhanced Class Reference

Enhanced EKF Navigation with Magnetometer Support. More...

#include <EKFNavigationEnhanced.hpp>

Inheritance diagram for fsw::nav::EKFNavigationEnhanced:
[legend]
Collaboration diagram for fsw::nav::EKFNavigationEnhanced:
[legend]

Classes

struct  EnhancedConfig
 Enhanced configuration with magnetometer parameters. More...

Public Member Functions

 EKFNavigationEnhanced ()
 ~EKFNavigationEnhanced ()
bool initialize (const EnhancedConfig &config, const NavigationState &initial_state)
 Initialize with enhanced configuration.
bool processMagnetometerMeasurement (const IMUMeasurement &measurement, const calibration::IMUCalibration::CalibratedReading &calibrated)
 Process magnetometer measurement with calibration.
double getHeading () const
 Get heading estimate (from magnetometer + gyro fusion).
Eigen::Vector3d getMagneticField () const
 Get magnetic field estimate.
void setIMUCalibration (std::shared_ptr< calibration::IMUCalibrationSystem > calib_system)
 Set IMU calibration system.

Private Member Functions

void updateWithMagnetometer (const Eigen::Vector3d &mag_field)
Eigen::Vector3d computeMagnetometerMeasurement (const Eigen::VectorXd &state) const
Eigen::MatrixXd computeMagnetometerJacobian (const Eigen::VectorXd &state) const
double computeHeadingFromQuaternion (const Eigen::Quaterniond &q) const
double computeHeadingFromMagnetometer (const Eigen::Vector3d &mag_field, const Eigen::Quaterniond &q) const

Private Attributes

EnhancedConfig enhanced_config_
std::shared_ptr< calibration::IMUCalibrationSystem > imu_calibration_
Eigen::Vector3d magnetic_field_
double heading_
std::mutex mag_mutex_

Detailed Description

Enhanced EKF Navigation with Magnetometer Support.

Extends EKFNavigation to properly integrate magnetometer measurements for heading estimation and attitude correction.

Definition at line 16 of file EKFNavigationEnhanced.hpp.

Constructor & Destructor Documentation

◆ EKFNavigationEnhanced()

fsw::nav::EKFNavigationEnhanced::EKFNavigationEnhanced ( )

◆ ~EKFNavigationEnhanced()

fsw::nav::EKFNavigationEnhanced::~EKFNavigationEnhanced ( )

Member Function Documentation

◆ computeHeadingFromMagnetometer()

double fsw::nav::EKFNavigationEnhanced::computeHeadingFromMagnetometer ( const Eigen::Vector3d & mag_field,
const Eigen::Quaterniond & q ) const
private

◆ computeHeadingFromQuaternion()

double fsw::nav::EKFNavigationEnhanced::computeHeadingFromQuaternion ( const Eigen::Quaterniond & q) const
private

◆ computeMagnetometerJacobian()

Eigen::MatrixXd fsw::nav::EKFNavigationEnhanced::computeMagnetometerJacobian ( const Eigen::VectorXd & state) const
private

References state.

◆ computeMagnetometerMeasurement()

Eigen::Vector3d fsw::nav::EKFNavigationEnhanced::computeMagnetometerMeasurement ( const Eigen::VectorXd & state) const
private

References state.

◆ getHeading()

double fsw::nav::EKFNavigationEnhanced::getHeading ( ) const

Get heading estimate (from magnetometer + gyro fusion).

◆ getMagneticField()

Eigen::Vector3d fsw::nav::EKFNavigationEnhanced::getMagneticField ( ) const

Get magnetic field estimate.

◆ initialize()

bool fsw::nav::EKFNavigationEnhanced::initialize ( const EnhancedConfig & config,
const NavigationState & initial_state )

Initialize with enhanced configuration.

◆ processMagnetometerMeasurement()

bool fsw::nav::EKFNavigationEnhanced::processMagnetometerMeasurement ( const IMUMeasurement & measurement,
const calibration::IMUCalibration::CalibratedReading & calibrated )

Process magnetometer measurement with calibration.

Parameters
measurementRaw magnetometer reading
calibratedCalibrated magnetometer reading
Returns
true if processed successfully

References calibrated.

◆ setIMUCalibration()

void fsw::nav::EKFNavigationEnhanced::setIMUCalibration ( std::shared_ptr< calibration::IMUCalibrationSystem > calib_system)

Set IMU calibration system.

◆ updateWithMagnetometer()

void fsw::nav::EKFNavigationEnhanced::updateWithMagnetometer ( const Eigen::Vector3d & mag_field)
private

Member Data Documentation

◆ enhanced_config_

EnhancedConfig fsw::nav::EKFNavigationEnhanced::enhanced_config_
private

Definition at line 80 of file EKFNavigationEnhanced.hpp.

◆ heading_

double fsw::nav::EKFNavigationEnhanced::heading_
private

Definition at line 85 of file EKFNavigationEnhanced.hpp.

◆ imu_calibration_

std::shared_ptr<calibration::IMUCalibrationSystem> fsw::nav::EKFNavigationEnhanced::imu_calibration_
private

Definition at line 81 of file EKFNavigationEnhanced.hpp.

◆ mag_mutex_

std::mutex fsw::nav::EKFNavigationEnhanced::mag_mutex_
mutableprivate

Definition at line 86 of file EKFNavigationEnhanced.hpp.

◆ magnetic_field_

Eigen::Vector3d fsw::nav::EKFNavigationEnhanced::magnetic_field_
private

Definition at line 84 of file EKFNavigationEnhanced.hpp.


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