Class BasaltVIO

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

class BasaltVIO : public dai::NodeCRTP<ThreadedHostNode, BasaltVIO>

Basalt Visual Inertial Odometry node. Performs VIO on stereo images and IMU data.

Public Types

enum class LinearizationType

Values:

enumerator ABS_QR
enumerator ABS_SC
enumerator REL_SC
enum class MatchingGuessType

Values:

enumerator SAME_PIXEL
enumerator REPROJ_FIX_DEPTH
enumerator REPROJ_AVG_DEPTH
enum class KeyframeMargCriteria

Values:

enumerator KF_MARG_DEFAULT
enumerator KF_MARG_FORWARD_VECTOR

Public Functions

BasaltVIO()
~BasaltVIO()
void buildInternal() override
inline void setImuUpdateRate(int rate)
inline void setConfigPath(const std::string &path)
void setConfig(const VioConfig &config)
inline void setUseSpecTranslation(bool use)
void setLocalTransform(const std::shared_ptr<TransformData> &transform)
void setImuExtrinsics(const std::shared_ptr<TransformData> &imuExtr)
void setAccelBias(const std::vector<double> &accelBias)
void setAccelNoiseStd(const std::vector<double> &accelNoiseStd)
void setGyroBias(const std::vector<double> &gyroBias)
void setGyroNoiseStd(const std::vector<double> &gyroNoiseStd)
void setDefaultVIOConfig()
void runSyncOnHost(bool runOnHost)

Public Members

Subnode<node::Sync> sync = {*this, "sync"}
InputMap &inputs = sync->inputs
std::string leftInputName = "left"
std::string rightInputName = "right"
Input &left = inputs[leftInputName]

Input left image on which VIO is performed.

Input &right = inputs[rightInputName]

Input right image on which VIO is performed.

Input imu = {*this, {"inIMU", DEFAULT_GROUP, false, 0, {{DatatypeEnum::IMUData, true}}}}

Input IMU data.

Output transform = {*this, {"transform", DEFAULT_GROUP, {{DatatypeEnum::TransformData, true}}}}

Output transform data.

Output passthrough = {*this, {"imgPassthrough", DEFAULT_GROUP, {{DatatypeEnum::ImgFrame, true}}}}

Output passthrough of left image.

Public Static Attributes

static constexpr const char *NAME = "BasaltVIO"
struct VioConfig

Public Members

std::string optical_flow_type
int optical_flow_detection_grid_size
int optical_flow_detection_num_points_cell
int optical_flow_detection_min_threshold
int optical_flow_detection_max_threshold
bool optical_flow_detection_nonoverlap
float optical_flow_max_recovered_dist2
int optical_flow_pattern
int optical_flow_max_iterations
int optical_flow_levels
float optical_flow_epipolar_error
int optical_flow_skip_frames
MatchingGuessType optical_flow_matching_guess_type
float optical_flow_matching_default_depth
float optical_flow_image_safe_radius
bool optical_flow_recall_enable
bool optical_flow_recall_all_cams
bool optical_flow_recall_num_points_cell
bool optical_flow_recall_over_tracking
bool optical_flow_recall_update_patch_viewpoint
float optical_flow_recall_max_patch_dist
std::vector<float> optical_flow_recall_max_patch_norms
LinearizationType vio_linearization_type
bool vio_sqrt_marg
int vio_max_states
int vio_max_kfs
int vio_min_frames_after_kf
float vio_new_kf_keypoints_thresh
bool vio_debug
bool vio_extended_logging
int vio_max_iterations
double vio_obs_std_dev
double vio_obs_huber_thresh
double vio_min_triangulation_dist
bool vio_enforce_realtime
bool vio_use_lm
double vio_lm_lambda_initial
double vio_lm_lambda_min
double vio_lm_lambda_max
bool vio_scale_jacobian
double vio_init_pose_weight
double vio_init_ba_weight
double vio_init_bg_weight
bool vio_marg_lost_landmarks
bool vio_fix_long_term_keyframes
double vio_kf_marg_feature_ratio
KeyframeMargCriteria vio_kf_marg_criteria
double mapper_obs_std_dev
double mapper_obs_huber_thresh
int mapper_detection_num_points
double mapper_num_frames_to_match
double mapper_frames_to_match_threshold
double mapper_min_matches
double mapper_ransac_threshold
double mapper_min_track_length
double mapper_max_hamming_distance
double mapper_second_best_test_ratio
int mapper_bow_num_bits
double mapper_min_triangulation_dist
bool mapper_no_factor_weights
bool mapper_use_factors
bool mapper_use_lm
double mapper_lm_lambda_min
double mapper_lm_lambda_max