This repository models different stochastic noise sources in an IMU - namely white noise, brown noise and pink noise. It implements montecarlo simulations to understand the position errors generated from each of these noise sources for the IMU parameters obtained from AD curves (stationary data collected greater than 5hrs). The position error is computed by dead-reckoning using rk method.
The repository also has verification scripts to confirm the errors of the model and check the accuracy in modeling of each noise source.
Note: In future we will also add bulk model parameters and their effect on the overall error growth when an IMU is used.
Important submodules:
- config_files (local gitlab instance): Different branches of the config files store different IMUs' noise values.
- some public github projects: which have done similar work.
- [✓] configure the simulation for pink noise senstivity analysis and check the parameters being set are right.
- [✓] Delete tau in the configuration files of pink simulation as well as from the code.
- [✓] setup new functions in the code for running pink noise simulations.
- [✓] run the senstivity analysis - simulation in parallel in hulk or crunch.
- [] setup simulation configs for each sensor by removing the folder name in the
config files and editing the mc_sim_config.
- [✓] - vn100 -
- [✓] - voxl
- [✓] - xsense
- [] - TUM - BMI160
- [] - EUROC - ADIS16448
- [] Simulations:
- [] - vn100 → w - , b- , p- , wbp- , wb-
- [] - icp42688p → w - ✗ , b - ✗, p - ✗ , wbp_ag - ✗ , wb_ag - ✗
- [] - xsens → w - , b - , p - ✗ , wbp_ag - ✗ , wb_ag -
- [] - TUM → w- , b- , p- , wbp- , wb-
- [] - integration of stationary data vs simulated model - replication of the behavior for TUM dataset.
- [] - comparison of wb and wbp of xsens and vn100 imu.
- [] - experimental dead-reckoning - error compilation from all flights. Remove arbitrary functions.
- [] edit the config files for different sensors and check the values with AD curves.
- [] Run simulations for different sensors and record their results.
- [] Improve visualization scripts for plotting all sensors together.
- Github repository with important modeling hints
- IEEE standard on fiber optic gyros - v2
- [IEEE standard on fibler optic gyros
A collection of scripts to simulate and validate IMU noise models.
On MATLAB command line, run the following:
The groups of scripts are described below
script_paths
main
save_public_datasets_to_std_struct
experimental_AD_curves
experimental_AD_curves_TUM
inflated_vs_actual_AD_comparison
theoretical_AD_curves
sensor_model_verification
process_mc_sim_logs
MonteCarloSim_w
MonteCarloSim_wb
MonteCarloSim_wbp
MonteCarloSim_wb_ag
Plots
dead_reckoning_euroc
VOXL data is stored in the following way:
+-- home
+-- datasets
+-- vio_calibration_all_setups
+-- voxl_deck
+--- imu0_params.yaml
+--- vn100_params.yaml
+--- april_grid_params.yaml
+--- voxl_calibration_flight<id1-id2>.bag
+-- voxl_m500_logs
+-- flight1 (has rosbag, gt data and euroc format IMU data)
+--Optitrack_data
+-- take_file_optitrack.csv (from optitrack)
+--voxl_run_flight1_<date>.bag (obtained during flight log, is modified with a script)
+--qvio_log_run_flight1.txt (obtained during flight log)
+--data_imu0.txt (EUROC format style file, after data collect scripts)
+--data_vn100_modified_time.txt (converted to voxl time, after data collect scripts)
+-- flight2
.
.
+-- flightN
+-- vio_results
+-- flight1
+--gt_raw_flight1_<date>.csv (optitrack frame, utc time)
+--gt_W_flight1_time_offset.csv (World frame - ROS convention, voxl time)
+--vinsmono_flight1_imu0.csv (generated from vinsmono, imu0 parameters)
+--vinsmono_result_flight1_vn100.csv (generated from vinsmono, vn100 parameters)
+--imu0_euroc.csv
+--vn100_euroc.csv
+--voxl_run_flight1_<date>.mat (obtained from bag2mat tool and related config file)
+-- flight2
.
.
+-- flightN
|