VioManagerOptions struct
Struct which stores all options needed for state estimation.
Contents
- Reference
 
This is broken into a few different parts: estimator, trackers, and simulation. If you are going to add a parameter here you will need to add it to the parsers. You will also need to add it to the print statement at the bottom of each.
Public functions
- 
              void print_and_load(const std::shared_ptr<ov_core::
YamlParser>& parser = nullptr)  - This function will load the non-simulation parameters of the system and print.
 - 
              void print_and_load_estimator(const std::shared_ptr<ov_core::
YamlParser>& parser = nullptr)  - This function will load print out all estimator settings loaded. This allows for visual checking that everything was loaded properly from ROS/CMD parsers.
 - 
              void print_and_load_noise(const std::shared_ptr<ov_core::
YamlParser>& parser = nullptr)  - This function will load print out all noise parameters loaded. This allows for visual checking that everything was loaded properly from ROS/CMD parsers.
 - 
              void print_and_load_state(const std::shared_ptr<ov_core::
YamlParser>& parser = nullptr)  - This function will load and print all state parameters (e.g. sensor extrinsics) This allows for visual checking that everything was loaded properly from ROS/CMD parsers.
 - 
              void print_and_load_trackers(const std::shared_ptr<ov_core::
YamlParser>& parser = nullptr)  - This function will load print out all parameters related to visual tracking This allows for visual checking that everything was loaded properly from ROS/CMD parsers.
 - 
              void print_and_load_simulation(const std::shared_ptr<ov_core::
YamlParser>& parser = nullptr)  - This function will load print out all simulated parameters. This allows for visual checking that everything was loaded properly from ROS/CMD parsers.
 
Public variables
- StateOptions state_options
 - Core state options (e.g. number of cameras, use fej, stereo, what calibration to enable etc)
 - 
              ov_init::
InertialInitializerOptions init_options  - Our state initialization options (e.g. window size, num features, if we should get the calibration)
 - double dt_slam_delay
 - Delay, in seconds, that we should wait from init before we start estimating SLAM features.
 - bool try_zupt
 - If we should try to use zero velocity update.
 - double zupt_max_velocity
 - Max velocity we will consider to try to do a zupt (i.e. if above this, don't do zupt)
 - double zupt_noise_multiplier
 - Multiplier of our zupt measurement IMU noise matrix (default should be 1.0)
 - double zupt_max_disparity
 - Max disparity we will consider to try to do a zupt (i.e. if above this, don't do zupt)
 - bool zupt_only_at_beginning
 - If we should only use the zupt at the very beginning static initialization phase.
 - bool record_timing_information
 - If we should record the timing performance to file.
 - std::string record_timing_filepath
 - The path to the file we will record the timing information into.
 - NoiseManager imu_noises
 - Continuous-time IMU noise (gyroscope and accelerometer)
 - UpdaterOptions msckf_options
 - Update options for MSCKF features (pixel noise and chi2 multiplier)
 - UpdaterOptions slam_options
 - Update options for SLAM features (pixel noise and chi2 multiplier)
 - UpdaterOptions aruco_options
 - Update options for ARUCO features (pixel noise and chi2 multiplier)
 - UpdaterOptions zupt_options
 - Update options for zero velocity (chi2 multiplier)
 - double gravity_mag
 - Gravity magnitude in the global frame (i.e. should be 9.81 typically)
 - Eigen::Matrix<double, 6, 1> vec_dw
 - Gyroscope IMU intrinsics (scale imperfection and axis misalignment, column-wise, inverse)
 - Eigen::Matrix<double, 6, 1> vec_da
 - Accelerometer IMU intrinsics (scale imperfection and axis misalignment, column-wise, inverse)
 - Eigen::Matrix<double, 9, 1> vec_tg
 - Gyroscope gravity sensitivity (scale imperfection and axis misalignment, column-wise)
 - Eigen::Matrix<double, 4, 1> q_ACCtoIMU
 - Rotation from gyroscope frame to the "IMU" accelerometer frame.
 - Eigen::Matrix<double, 4, 1> q_GYROtoIMU
 - Rotation from accelerometer to the "IMU" gyroscope frame frame.
 - double calib_camimu_dt
 - Time offset between camera and IMU.
 - 
              std::unordered_map<size_t, std::shared_ptr<ov_core::
CamBase>> camera_intrinsics  - Map between camid and camera intrinsics (fx, fy, cx, cy, d1...d4, cam_w, cam_h)
 - std::map<size_t, Eigen::VectorXd> camera_extrinsics
 - Map between camid and camera extrinsics (q_ItoC, p_IinC).
 - bool use_mask
 - If we should try to load a mask and use it to reject invalid features.
 - std::map<size_t, cv::Mat> masks
 - Mask images for each camera.
 - bool use_stereo
 - If we should process two cameras are being stereo or binocular. If binocular, we do monocular feature tracking on each image.
 - bool use_klt
 - If we should use KLT tracking, or descriptor matcher.
 - bool use_aruco
 - If should extract aruco tags and estimate them.
 - bool downsize_aruco
 - Will half the resolution of the aruco tag image (will be faster)
 - bool downsample_cameras
 - Will half the resolution all tracking image (aruco will be 1/4 instead of halved if dowsize_aruoc also enabled)
 - int num_opencv_threads
 - Threads our front-end should try to use (opencv uses this also)
 - bool use_multi_threading_pubs
 - If our ROS image publisher should be async (if sim this should be no!)
 - bool use_multi_threading_subs
 - If our ROS subscriber callbacks should be async (if sim and serial then this should be no!)
 - int num_pts
 - The number of points we should extract and track in each image frame. This highly effects the computation required for tracking.
 - int fast_threshold
 - Fast extraction threshold.
 - int grid_x
 - Number of grids we should split column-wise to do feature extraction in.
 - int grid_y
 - Number of grids we should split row-wise to do feature extraction in.
 - int min_px_dist
 - Will check after doing KLT track and remove any features closer than this.
 - 
              ov_core::
TrackBase:: HistogramMethod histogram_method  - What type of pre-processing histogram method should be applied to images.
 - double knn_ratio
 - KNN ration between top two descriptor matcher which is required to be a good match.
 - double track_frequency
 - Frequency we want to track images at (higher freq ones will be dropped)
 - 
              ov_core::
FeatureInitializerOptions featinit_options  - Parameters used by our feature initialize / triangulator.
 - int sim_seed_state_init
 - Seed for initial states (i.e. random feature 3d positions in the generated map)
 - int sim_seed_preturb
 - Seed for calibration perturbations. Change this to perturb by different random values if perturbations are enabled.
 - int sim_seed_measurements
 - bool sim_do_perturbation
 - If we should perturb the calibration that the estimator starts with.
 - std::string sim_traj_path
 - Path to the trajectory we will b-spline and simulate on. Should be time(s),pos(xyz),ori(xyzw) format.
 - double sim_distance_threshold
 - double sim_freq_cam
 - Frequency (Hz) that we will simulate our cameras.
 - double sim_freq_imu
 - Frequency (Hz) that we will simulate our inertial measurement unit.
 - double sim_min_feature_gen_distance
 - Feature distance we generate features from (minimum)
 - double sim_max_feature_gen_distance
 - Feature distance we generate features from (maximum)
 
Function documentation
              void ov_msckf:: VioManagerOptions:: print_and_load(const std::shared_ptr<ov_core:: YamlParser>& parser = nullptr)
            
            This function will load the non-simulation parameters of the system and print.
| Parameters | |
|---|---|
| parser | If not null, this parser will be used to load our parameters | 
              void ov_msckf:: VioManagerOptions:: print_and_load_estimator(const std::shared_ptr<ov_core:: YamlParser>& parser = nullptr)
            
            This function will load print out all estimator settings loaded. This allows for visual checking that everything was loaded properly from ROS/CMD parsers.
| Parameters | |
|---|---|
| parser | If not null, this parser will be used to load our parameters | 
              void ov_msckf:: VioManagerOptions:: print_and_load_noise(const std::shared_ptr<ov_core:: YamlParser>& parser = nullptr)
            
            This function will load print out all noise parameters loaded. This allows for visual checking that everything was loaded properly from ROS/CMD parsers.
| Parameters | |
|---|---|
| parser | If not null, this parser will be used to load our parameters | 
              void ov_msckf:: VioManagerOptions:: print_and_load_state(const std::shared_ptr<ov_core:: YamlParser>& parser = nullptr)
            
            This function will load and print all state parameters (e.g. sensor extrinsics) This allows for visual checking that everything was loaded properly from ROS/CMD parsers.
| Parameters | |
|---|---|
| parser | If not null, this parser will be used to load our parameters | 
              void ov_msckf:: VioManagerOptions:: print_and_load_trackers(const std::shared_ptr<ov_core:: YamlParser>& parser = nullptr)
            
            This function will load print out all parameters related to visual tracking This allows for visual checking that everything was loaded properly from ROS/CMD parsers.
| Parameters | |
|---|---|
| parser | If not null, this parser will be used to load our parameters | 
              void ov_msckf:: VioManagerOptions:: print_and_load_simulation(const std::shared_ptr<ov_core:: YamlParser>& parser = nullptr)
            
            This function will load print out all simulated parameters. This allows for visual checking that everything was loaded properly from ROS/CMD parsers.
| Parameters | |
|---|---|
| parser | If not null, this parser will be used to load our parameters | 
Variable documentation
              int ov_msckf:: VioManagerOptions:: sim_seed_measurements
            
Measurement noise seed. This should be incremented for each run in the Monte-Carlo simulation to generate the same true measurements, but diffferent noise values.
              double ov_msckf:: VioManagerOptions:: sim_distance_threshold
            
We will start simulating after we have moved this much along the b-spline. This prevents static starts as we init from groundtruth in simulation.