NDEVR
API Documentation
IMUNoiseSimulator

This class generates random bias and noise for modeling a 9-DoF IMU. More...

Collaboration diagram for IMUNoiseSimulator:
[legend]

Public Member Functions

Vector< 3, fltp08accelBias () const
 Returns the current accelerometer bias per axis in ug.
void addAccelerometerNoise (Vector< 3, fltp08 > &gravity_vector, const Time &current_time)
 Adds noise to gravity_vector and updates bias to simulate a real-world accel using model: vector = vector + noise + bias.
void addGyroNoise (Vector< 3, fltp08 > &angular_rate, const Time &current_time)
 Adds noise to angular_rate and updates bias to simulate a real-world gyro using model: angular_rate = angular_rate + noise + bias.
void addMagnetometerNoise (Vector< 3, fltp08 > &magnetic_vector, const Time &current_time)
 Adds noise to gravity_vector to simulate a real-world magnetometer using model: vector = vector + noise + bias.
void addVector (GenericOptionGroup &group, const Vector< 3, fltp08 > &vector, const StringView name)
 Adds a 3D vector as three separate axis options to an option group.
Vector< 3, fltp08currentGyroBias () const
 Returns the current gyroscope bias per axis in deg/hr.
Buffer< GenericOptionGroupgroups ()
 Builds and returns the gyroscope and accelerometer option groups for configuration.
void initializeAccelBiasesMemsense ()
 Initializes accelerometer noise parameters based on Memsense datasheet values.
void initializeGyroBiasesMemsense ()
 Initializes gyroscope noise parameters based on Memsense datasheet values.
void initializeMagBiasesMemsense ()
 Initializes magnetometer noise parameters based on Memsense datasheet values.
void loadAccelerometerSettings (File file)
 Loads accelerometer noise parameters from an INI file.
void loadGyroSettings (File file)
 Loads gyroscope noise parameters from an INI file.
void reset ()
 Resets the internal state, invalidating all last-update timestamps.
void saveAccelerometerSettings (File file)
 Saves accelerometer noise parameters to an INI file.
void saveGyroSettings (File file)
 Saves gyroscope noise parameters to an INI file.
void setAccelBias (const Vector< 3, fltp08 > &bias)
 Sets the current accelerometer bias.
void setAccelerometerOptions (const GenericOptionGroup &accel)
 Applies accelerometer noise parameters from an option group.
void setGyroBias (const Vector< 3, fltp08 > &bias)
 Sets the current gyroscope bias.
void setGyroOptions (const GenericOptionGroup &gyro)
 Applies gyroscope noise parameters from an option group.
void setTemperature (fltp08 temperature)
 Sets the simulated temperature in Celsius, affecting temperature-dependent noise parameters.
void setVector (const GenericOptionGroup &group, Vector< 3, fltp08 > &vector, const StringView name)
 Reads a 3D vector from three axis options in an option group.

Public Attributes

Vector< 3, fltp08acc_non_linearity_mean_ppm = Vector<3, fltp08>(0.0)
 Accel non-linearity mean in ppm.
Vector< 3, fltp08acc_non_linearity_std_ppm = Vector<3, fltp08>(0.0)
 Accel non-linearity std dev in ppm.
Vector< 3, fltp08acc_scale_error_max_ppm = Vector<3, fltp08>(0.0)
 Accel scale factor error maximum in ppm.
Vector< 3, fltp08acc_scale_error_mean_ppm = Vector<3, fltp08>(0.0)
 Accel scale factor error mean in ppm.
Vector< 3, fltp08acc_scale_error_std_ppm = Vector<3, fltp08>(0.0)
 Accel scale factor error std dev in ppm.
Vector< 3, fltp08acc_scale_temperature_error_mean_ppm = Vector<3, fltp08>(0.0)
 Accel scale temperature error mean in ppm.
Vector< 3, fltp08acc_scale_temperature_error_std_ppm = Vector<3, fltp08>(0.0)
 Accel scale temperature error std dev in ppm.
Vector< 3, fltp08accel_bias_instability_mean_ug = Vector<3, fltp08>(0.0)
 Accel bias instability average in ug.
Vector< 3, fltp08accel_bias_instability_std_ug = Vector<3, fltp08>(0.0)
 Accel bias instability std dev in ug.
Vector< 3, fltp08accel_bias_offset_max_ug = Vector<3, fltp08>(0.0)
 Accel turn-on bias maximum in ug.
Vector< 3, fltp08accel_bias_offset_mean_ug = Vector<3, fltp08>(0.0)
 Accel turn-on bias average in ug.
Vector< 3, fltp08accel_bias_offset_std_ug = Vector<3, fltp08>(0.0)
 Accel turn-on bias std dev in ug.
Vector< 3, fltp08accel_bias_temperature_mean_error = Vector<3, fltp08>(0.0)
 Accel bias temperature sensitivity mean in ug/sqrt(Hz).
Vector< 3, fltp08accel_bias_temperature_std_error = Vector<3, fltp08>(0.0)
 Accel bias temperature sensitivity std dev in ug/sqrt(Hz).
fltp08 accel_dynamic_range = 4.0
 Accelerometer dynamic range in g.
Vector< 3, fltp08accel_noise_density_max_ug_rt_hz = Vector<3, fltp08>(0.0)
 Accel noise density maximum in ug/sqrt(Hz).
Vector< 3, fltp08accel_noise_density_mean_ug_rt_hz = Vector<3, fltp08>(0.0)
 Accel noise density average in ug/sqrt(Hz).
Vector< 3, fltp08accel_noise_density_std_ug_rt_hz = Vector<3, fltp08>(0.0)
 Accel noise density std dev in ug/sqrt(Hz).
Vector< 3, fltp08accel_velocity_walk_mean = Vector<3, fltp08>(0.0)
 Accel velocity random walk mean.
Vector< 3, fltp08accel_velocity_walk_std = Vector<3, fltp08>(0.0)
 Accel velocity random walk std dev.
Vector< 3, fltp08gyro_bias_instability_mean_dph = Vector<3, fltp08>(0.0)
 Gyro bias instability average in deg/hr.
Vector< 3, fltp08gyro_bias_instability_std_dph = Vector<3, fltp08>(0.0)
 Gyro bias instability std dev in deg/hr.
Vector< 3, fltp08gyro_bias_offset_max_dph = Vector<3, fltp08>(0.0)
 Gyro turn-on bias maximum in deg/hr.
Vector< 3, fltp08gyro_bias_offset_mean_dph = Vector<3, fltp08>(0.0)
 Gyro turn-on bias average in deg/hr.
Vector< 3, fltp08gyro_bias_offset_std_dph = Vector<3, fltp08>(0.0)
 Gyro turn-on bias std dev in deg/hr.
fltp08 gyro_bias_temperature_mean_error = 0.0
 Gyro bias temperature sensitivity mean error.
fltp08 gyro_bias_temperature_std_error = 0.0
 Gyro bias temperature sensitivity std dev error.
fltp08 gyro_g_sensitivity = 0.0
 Gyro g-sensitivity coefficient.
fltp08 gyro_input_range = 480.0
 Gyroscope input range in degrees per second.
Vector< 3, fltp08gyro_noise_density_max_dps_rt_hz = Vector<3, fltp08>(0.0)
 Gyro noise density maximum in deg/s/sqrt(Hz).
Vector< 3, fltp08gyro_noise_density_mean_dps_rt_hz = Vector<3, fltp08>(0.0)
 Gyro noise density average in deg/s/sqrt(Hz).
Vector< 3, fltp08gyro_noise_density_std_dps_rt_hz = Vector<3, fltp08>(0.0)
 Gyro noise density std dev in deg/s/sqrt(Hz).
Vector< 3, fltp08gyro_non_linearity_max_ppm = Vector<3, fltp08>(0.0)
 Gyro non-linearity maximum in ppm.
Vector< 3, fltp08gyro_non_linearity_mean_ppm = Vector<3, fltp08>(0.0)
 Gyro non-linearity mean in ppm.
Vector< 3, fltp08gyro_non_linearity_std_ppm = Vector<3, fltp08>(0.0)
 Gyro non-linearity std dev in ppm.
Vector< 3, fltp08gyro_random_walk_mean = Vector<3, fltp08>(0.0)
 Gyro angular random walk mean.
Vector< 3, fltp08gyro_random_walk_std = Vector<3, fltp08>(0.0)
 Gyro angular random walk std dev.
Vector< 3, fltp08gyro_scale_error_max_ppm = Vector<3, fltp08>(0.0)
 Gyro scale factor error maximum in ppm.
Vector< 3, fltp08gyro_scale_error_mean_ppm = Vector<3, fltp08>(0.0)
 Gyro scale factor error mean in ppm.
Vector< 3, fltp08gyro_scale_error_std_ppm = Vector<3, fltp08>(0.0)
 Gyro scale factor error std dev in ppm.
Vector< 3, fltp08gyro_scale_temperature_error_mean_ppm = Vector<3, fltp08>(0.0)
 Gyro scale temperature error mean in ppm.
Vector< 3, fltp08gyro_scale_temperature_error_std_ppm = Vector<3, fltp08>(0.0)
 Gyro scale temperature error std dev in ppm.
fltp08 gyro_vibration_noise_coef_mean = 0.0
 Gyro vibration noise coefficient mean.
fltp08 gyro_vibration_noise_coef_std = 0.0
 Gyro vibration noise coefficient std dev.
fltp08 gyro_vibration_rectification_mean = 0.0
 Gyro vibration rectification error mean.
fltp08 gyro_vibration_rectification_std = 0.0
 Gyro vibration rectification error std dev.
Vector< 3, fltp08mag_bias_gauss = Vector<3, fltp08>(0.0)
 Current magnetometer bias per axis in gauss.
fltp08 mag_bias_offset_mean_ugauss = 0.0016
 Magnetometer turn-on bias offset mean in ugauss.
fltp08 mag_bias_offset_std_ugauss = 0.0016
 Magnetometer turn-on bias offset std dev in ugauss.
fltp08 mag_noise_density_mean_ugauss_rt_hz = 80
 Magnetometer noise density mean in ugauss/sqrt(Hz). Best guess from incomplete datasheet.
fltp08 mag_noise_density_std_ugauss_rt_hz = 80
 Magnetometer noise density std dev in ugauss/sqrt(Hz).
Vector< 3, fltp08max_accel_bias_ug = Vector<3, fltp08>(3000.0)
 Maximum accel bias offset from OEM datasheet in ug.
Vector< 3, fltp08max_accel_noise_density_ug_rt_hz = Vector<3, fltp08>(0.0)
 Maximum accel noise density from OEM datasheet in ug/sqrt(Hz).
fltp08 max_mag_bias_offset_gauss = 0.0085
 Maximum magnetometer bias offset in gauss.

Detailed Description

This class generates random bias and noise for modeling a 9-DoF IMU.

Parameters can be derived from spec sheets or allan variance analysis. Each axis of the IMU is treated independently. Once initialized, temperature or other variables can be modified.

Definition at line 18 of file IMUNoiseSimulator.h.

Member Function Documentation

◆ addAccelerometerNoise()

void IMUNoiseSimulator::addAccelerometerNoise ( Vector< 3, fltp08 > & gravity_vector,
const Time & current_time )
inline

Adds noise to gravity_vector and updates bias to simulate a real-world accel using model: vector = vector + noise + bias.

Parameters
gravity_vectorthe gravity vector in G's
current_timethe current time of the simulation

Definition at line 476 of file IMUNoiseSimulator.h.

References acc_scale_error_max_ppm, acc_scale_error_std_ppm, acc_scale_temperature_error_mean_ppm, accel_bias_instability_mean_ug, accel_bias_instability_std_ug, accel_bias_offset_mean_ug, accel_bias_offset_std_ug, accel_noise_density_mean_ug_rt_hz, accel_noise_density_std_ug_rt_hz, clip(), IsInvalid(), max_accel_bias_ug, and sqrt().

◆ addGyroNoise()

void IMUNoiseSimulator::addGyroNoise ( Vector< 3, fltp08 > & angular_rate,
const Time & current_time )
inline

Adds noise to angular_rate and updates bias to simulate a real-world gyro using model: angular_rate = angular_rate + noise + bias.

Parameters
angular_ratethe vector for each axis of the gyro in Angle/sec
current_timethe current time of the simulation

Definition at line 424 of file IMUNoiseSimulator.h.

References clip(), gyro_bias_instability_mean_dph, gyro_bias_offset_mean_dph, gyro_bias_temperature_mean_error, gyro_bias_temperature_std_error, gyro_noise_density_mean_dps_rt_hz, gyro_noise_density_std_dps_rt_hz, gyro_scale_error_max_ppm, gyro_scale_error_mean_ppm, gyro_scale_error_std_ppm, IsInvalid(), and sqrt().

◆ addMagnetometerNoise()

void IMUNoiseSimulator::addMagnetometerNoise ( Vector< 3, fltp08 > & magnetic_vector,
const Time & current_time )
inline

Adds noise to gravity_vector to simulate a real-world magnetometer using model: vector = vector + noise + bias.

(bias is assumed static for magnetometer)

Parameters
magnetic_vectorthe normalized magnetic field vector.
current_timethe current time of the simulation

Definition at line 524 of file IMUNoiseSimulator.h.

References clip(), IsInvalid(), mag_bias_gauss, mag_bias_offset_mean_ugauss, mag_bias_offset_std_ugauss, mag_noise_density_mean_ugauss_rt_hz, mag_noise_density_std_ugauss_rt_hz, max_mag_bias_offset_gauss, and sqrt().

◆ addVector()

void IMUNoiseSimulator::addVector ( GenericOptionGroup & group,
const Vector< 3, fltp08 > & vector,
const StringView name )
inline

Adds a 3D vector as three separate axis options to an option group.

Parameters
[in]groupThe option group to add to.
[in]vectorThe 3D vector values.
[in]nameThe base name for the options.

Definition at line 97 of file IMUNoiseSimulator.h.

References GenericOptionGroup::addOption(), String::append(), cast(), TranslatedString::DirectString(), name, String::toLower(), and String::toTitleString().

Referenced by groups().

◆ groups()

Buffer< GenericOptionGroup > IMUNoiseSimulator::groups ( )
inline

Builds and returns the gyroscope and accelerometer option groups for configuration.

Returns
A buffer containing the gyro and accelerometer GenericOptionGroups.

Definition at line 151 of file IMUNoiseSimulator.h.

References acc_non_linearity_mean_ppm, acc_non_linearity_std_ppm, acc_scale_error_mean_ppm, acc_scale_error_std_ppm, acc_scale_temperature_error_mean_ppm, acc_scale_temperature_error_std_ppm, accel_bias_instability_mean_ug, accel_bias_instability_std_ug, accel_bias_offset_max_ug, accel_bias_offset_mean_ug, accel_bias_offset_std_ug, accel_bias_temperature_mean_error, accel_bias_temperature_std_error, accel_dynamic_range, accel_noise_density_max_ug_rt_hz, accel_noise_density_mean_ug_rt_hz, accel_noise_density_std_ug_rt_hz, accel_velocity_walk_mean, accel_velocity_walk_std, Buffer< t_type, t_memory_manager >::add(), GenericOptionGroup::addOption(), addVector(), gyro_bias_instability_mean_dph, gyro_bias_instability_std_dph, gyro_bias_offset_max_dph, gyro_bias_offset_mean_dph, gyro_bias_offset_std_dph, gyro_bias_temperature_mean_error, gyro_bias_temperature_std_error, gyro_g_sensitivity, gyro_input_range, gyro_noise_density_max_dps_rt_hz, gyro_noise_density_mean_dps_rt_hz, gyro_noise_density_std_dps_rt_hz, gyro_non_linearity_max_ppm, gyro_non_linearity_mean_ppm, gyro_non_linearity_std_ppm, gyro_random_walk_mean, gyro_random_walk_std, gyro_scale_error_max_ppm, gyro_scale_error_mean_ppm, gyro_scale_error_std_ppm, gyro_scale_temperature_error_mean_ppm, gyro_scale_temperature_error_std_ppm, gyro_vibration_noise_coef_mean, gyro_vibration_noise_coef_std, gyro_vibration_rectification_mean, and gyro_vibration_rectification_std.

Referenced by loadAccelerometerSettings(), loadGyroSettings(), saveAccelerometerSettings(), and saveGyroSettings().

◆ loadAccelerometerSettings()

void IMUNoiseSimulator::loadAccelerometerSettings ( File file)
inline

Loads accelerometer noise parameters from an INI file.

Parameters
[in]fileThe file to read from.

Definition at line 315 of file IMUNoiseSimulator.h.

References file, groups(), INIFactory::readAsciiFile(), setAccelerometerOptions(), and INIFactory::setPreserveOrder().

◆ loadGyroSettings()

void IMUNoiseSimulator::loadGyroSettings ( File file)
inline

Loads gyroscope noise parameters from an INI file.

Parameters
[in]fileThe file to read from.

Definition at line 304 of file IMUNoiseSimulator.h.

References file, groups(), INIFactory::readAsciiFile(), setGyroOptions(), and INIFactory::setPreserveOrder().

◆ saveAccelerometerSettings()

void IMUNoiseSimulator::saveAccelerometerSettings ( File file)
inline

Saves accelerometer noise parameters to an INI file.

Parameters
[in]fileThe file to write to.

Definition at line 294 of file IMUNoiseSimulator.h.

References file, groups(), INIFactory::setPreserveOrder(), and INIFactory::writeToAsciiFile().

◆ saveGyroSettings()

void IMUNoiseSimulator::saveGyroSettings ( File file)
inline

Saves gyroscope noise parameters to an INI file.

Parameters
[in]fileThe file to write to.

Definition at line 284 of file IMUNoiseSimulator.h.

References file, groups(), INIFactory::setPreserveOrder(), and INIFactory::writeToAsciiFile().

◆ setAccelBias()

void IMUNoiseSimulator::setAccelBias ( const Vector< 3, fltp08 > & bias)
inline

Sets the current accelerometer bias.

Parameters
[in]biasThe bias vector per axis in ug.

Definition at line 134 of file IMUNoiseSimulator.h.

◆ setAccelerometerOptions()

◆ setGyroBias()

void IMUNoiseSimulator::setGyroBias ( const Vector< 3, fltp08 > & bias)
inline

Sets the current gyroscope bias.

Parameters
[in]biasThe bias vector per axis in deg/hr.

Definition at line 145 of file IMUNoiseSimulator.h.

◆ setGyroOptions()

◆ setTemperature()

void IMUNoiseSimulator::setTemperature ( fltp08 temperature)
inline

Sets the simulated temperature in Celsius, affecting temperature-dependent noise parameters.

Parameters
[in]temperatureThe temperature in Celsius.

Definition at line 333 of file IMUNoiseSimulator.h.

◆ setVector()

void IMUNoiseSimulator::setVector ( const GenericOptionGroup & group,
Vector< 3, fltp08 > & vector,
const StringView name )
inline

Reads a 3D vector from three axis options in an option group.

Parameters
[in]groupThe option group to read from.
[in]vectorThe 3D vector to populate.
[in]nameThe base name for the options.

Definition at line 115 of file IMUNoiseSimulator.h.

References String::append(), cast(), GenericOptionGroup::getValue(), name, and String::toLower().

Referenced by setAccelerometerOptions(), and setGyroOptions().


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