![]() |
NDEVR
API Documentation
|
This class generates random bias and noise for modeling a 9-DoF IMU. More...
Public Member Functions | |
| Vector< 3, fltp08 > | accelBias () const |
| Returns the current accelerometer bias per axis in ug. | |
| void | addAccelerometerNoise (Vector< 3, fltp08 > &gravity_vector, const Time ¤t_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 ¤t_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 ¤t_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, fltp08 > | currentGyroBias () const |
| Returns the current gyroscope bias per axis in deg/hr. | |
| Buffer< GenericOptionGroup > | groups () |
| 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, fltp08 > | acc_non_linearity_mean_ppm = Vector<3, fltp08>(0.0) |
| Accel non-linearity mean in ppm. | |
| Vector< 3, fltp08 > | acc_non_linearity_std_ppm = Vector<3, fltp08>(0.0) |
| Accel non-linearity std dev in ppm. | |
| Vector< 3, fltp08 > | acc_scale_error_max_ppm = Vector<3, fltp08>(0.0) |
| Accel scale factor error maximum in ppm. | |
| Vector< 3, fltp08 > | acc_scale_error_mean_ppm = Vector<3, fltp08>(0.0) |
| Accel scale factor error mean in ppm. | |
| Vector< 3, fltp08 > | acc_scale_error_std_ppm = Vector<3, fltp08>(0.0) |
| Accel scale factor error std dev in ppm. | |
| Vector< 3, fltp08 > | acc_scale_temperature_error_mean_ppm = Vector<3, fltp08>(0.0) |
| Accel scale temperature error mean in ppm. | |
| Vector< 3, fltp08 > | acc_scale_temperature_error_std_ppm = Vector<3, fltp08>(0.0) |
| Accel scale temperature error std dev in ppm. | |
| Vector< 3, fltp08 > | accel_bias_instability_mean_ug = Vector<3, fltp08>(0.0) |
| Accel bias instability average in ug. | |
| Vector< 3, fltp08 > | accel_bias_instability_std_ug = Vector<3, fltp08>(0.0) |
| Accel bias instability std dev in ug. | |
| Vector< 3, fltp08 > | accel_bias_offset_max_ug = Vector<3, fltp08>(0.0) |
| Accel turn-on bias maximum in ug. | |
| Vector< 3, fltp08 > | accel_bias_offset_mean_ug = Vector<3, fltp08>(0.0) |
| Accel turn-on bias average in ug. | |
| Vector< 3, fltp08 > | accel_bias_offset_std_ug = Vector<3, fltp08>(0.0) |
| Accel turn-on bias std dev in ug. | |
| Vector< 3, fltp08 > | accel_bias_temperature_mean_error = Vector<3, fltp08>(0.0) |
| Accel bias temperature sensitivity mean in ug/sqrt(Hz). | |
| Vector< 3, fltp08 > | accel_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, fltp08 > | accel_noise_density_max_ug_rt_hz = Vector<3, fltp08>(0.0) |
| Accel noise density maximum in ug/sqrt(Hz). | |
| Vector< 3, fltp08 > | accel_noise_density_mean_ug_rt_hz = Vector<3, fltp08>(0.0) |
| Accel noise density average in ug/sqrt(Hz). | |
| Vector< 3, fltp08 > | accel_noise_density_std_ug_rt_hz = Vector<3, fltp08>(0.0) |
| Accel noise density std dev in ug/sqrt(Hz). | |
| Vector< 3, fltp08 > | accel_velocity_walk_mean = Vector<3, fltp08>(0.0) |
| Accel velocity random walk mean. | |
| Vector< 3, fltp08 > | accel_velocity_walk_std = Vector<3, fltp08>(0.0) |
| Accel velocity random walk std dev. | |
| Vector< 3, fltp08 > | gyro_bias_instability_mean_dph = Vector<3, fltp08>(0.0) |
| Gyro bias instability average in deg/hr. | |
| Vector< 3, fltp08 > | gyro_bias_instability_std_dph = Vector<3, fltp08>(0.0) |
| Gyro bias instability std dev in deg/hr. | |
| Vector< 3, fltp08 > | gyro_bias_offset_max_dph = Vector<3, fltp08>(0.0) |
| Gyro turn-on bias maximum in deg/hr. | |
| Vector< 3, fltp08 > | gyro_bias_offset_mean_dph = Vector<3, fltp08>(0.0) |
| Gyro turn-on bias average in deg/hr. | |
| Vector< 3, fltp08 > | gyro_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, fltp08 > | gyro_noise_density_max_dps_rt_hz = Vector<3, fltp08>(0.0) |
| Gyro noise density maximum in deg/s/sqrt(Hz). | |
| Vector< 3, fltp08 > | gyro_noise_density_mean_dps_rt_hz = Vector<3, fltp08>(0.0) |
| Gyro noise density average in deg/s/sqrt(Hz). | |
| Vector< 3, fltp08 > | gyro_noise_density_std_dps_rt_hz = Vector<3, fltp08>(0.0) |
| Gyro noise density std dev in deg/s/sqrt(Hz). | |
| Vector< 3, fltp08 > | gyro_non_linearity_max_ppm = Vector<3, fltp08>(0.0) |
| Gyro non-linearity maximum in ppm. | |
| Vector< 3, fltp08 > | gyro_non_linearity_mean_ppm = Vector<3, fltp08>(0.0) |
| Gyro non-linearity mean in ppm. | |
| Vector< 3, fltp08 > | gyro_non_linearity_std_ppm = Vector<3, fltp08>(0.0) |
| Gyro non-linearity std dev in ppm. | |
| Vector< 3, fltp08 > | gyro_random_walk_mean = Vector<3, fltp08>(0.0) |
| Gyro angular random walk mean. | |
| Vector< 3, fltp08 > | gyro_random_walk_std = Vector<3, fltp08>(0.0) |
| Gyro angular random walk std dev. | |
| Vector< 3, fltp08 > | gyro_scale_error_max_ppm = Vector<3, fltp08>(0.0) |
| Gyro scale factor error maximum in ppm. | |
| Vector< 3, fltp08 > | gyro_scale_error_mean_ppm = Vector<3, fltp08>(0.0) |
| Gyro scale factor error mean in ppm. | |
| Vector< 3, fltp08 > | gyro_scale_error_std_ppm = Vector<3, fltp08>(0.0) |
| Gyro scale factor error std dev in ppm. | |
| Vector< 3, fltp08 > | gyro_scale_temperature_error_mean_ppm = Vector<3, fltp08>(0.0) |
| Gyro scale temperature error mean in ppm. | |
| Vector< 3, fltp08 > | gyro_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, fltp08 > | mag_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, fltp08 > | max_accel_bias_ug = Vector<3, fltp08>(3000.0) |
| Maximum accel bias offset from OEM datasheet in ug. | |
| Vector< 3, fltp08 > | max_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. | |
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.
|
inline |
Adds noise to gravity_vector and updates bias to simulate a real-world accel using model: vector = vector + noise + bias.
| gravity_vector | the gravity vector in G's |
| current_time | the 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().
|
inline |
Adds noise to angular_rate and updates bias to simulate a real-world gyro using model: angular_rate = angular_rate + noise + bias.
| angular_rate | the vector for each axis of the gyro in Angle/sec |
| current_time | the 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().
|
inline |
Adds noise to gravity_vector to simulate a real-world magnetometer using model: vector = vector + noise + bias.
(bias is assumed static for magnetometer)
| magnetic_vector | the normalized magnetic field vector. |
| current_time | the 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().
|
inline |
Adds a 3D vector as three separate axis options to an option group.
| [in] | group | The option group to add to. |
| [in] | vector | The 3D vector values. |
| [in] | name | The 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().
|
inline |
Builds and returns the gyroscope and accelerometer option groups for configuration.
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().
|
inline |
Loads accelerometer noise parameters from an INI file.
| [in] | file | The file to read from. |
Definition at line 315 of file IMUNoiseSimulator.h.
References file, groups(), INIFactory::readAsciiFile(), setAccelerometerOptions(), and INIFactory::setPreserveOrder().
|
inline |
Loads gyroscope noise parameters from an INI file.
| [in] | file | The file to read from. |
Definition at line 304 of file IMUNoiseSimulator.h.
References file, groups(), INIFactory::readAsciiFile(), setGyroOptions(), and INIFactory::setPreserveOrder().
|
inline |
Saves accelerometer noise parameters to an INI file.
| [in] | file | The file to write to. |
Definition at line 294 of file IMUNoiseSimulator.h.
References file, groups(), INIFactory::setPreserveOrder(), and INIFactory::writeToAsciiFile().
|
inline |
Saves gyroscope noise parameters to an INI file.
| [in] | file | The file to write to. |
Definition at line 284 of file IMUNoiseSimulator.h.
References file, groups(), INIFactory::setPreserveOrder(), and INIFactory::writeToAsciiFile().
Sets the current accelerometer bias.
| [in] | bias | The bias vector per axis in ug. |
Definition at line 134 of file IMUNoiseSimulator.h.
|
inline |
Applies accelerometer noise parameters from an option group.
| [in] | accel | The option group containing accelerometer parameters. |
Definition at line 258 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, GenericOptionGroup::getValue(), and setVector().
Referenced by loadAccelerometerSettings().
Sets the current gyroscope bias.
| [in] | bias | The bias vector per axis in deg/hr. |
Definition at line 145 of file IMUNoiseSimulator.h.
|
inline |
Applies gyroscope noise parameters from an option group.
| [in] | gyro | The option group containing gyro parameters. |
Definition at line 225 of file IMUNoiseSimulator.h.
References GenericOptionGroup::getValue(), 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, gyro_vibration_rectification_std, and setVector().
Referenced by loadGyroSettings().
|
inline |
Sets the simulated temperature in Celsius, affecting temperature-dependent noise parameters.
| [in] | temperature | The temperature in Celsius. |
Definition at line 333 of file IMUNoiseSimulator.h.
|
inline |
Reads a 3D vector from three axis options in an option group.
| [in] | group | The option group to read from. |
| [in] | vector | The 3D vector to populate. |
| [in] | name | The 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().