VINS Mono視覺SLAM總體設計框架解讀

2021-09-10 22:53:02 字數 4279 閱讀 3224

**解讀

附錄:vins-mono: a robust and versatile monocular visual-inertial state estimator 的設計思路主要突出兩點:

針對於單目的魯棒性很強的vio 系統

通用性很強的vio框架

從**和工程的設計思路無不體現著這兩點,從考慮周密的初始化過程,到球面相機模型的引入等等都有體現,至於中間的keyframe、sliding windows 以及4-dof pose graph optimization都是為了既保證優化的效能,也兼顧系統的實時性所做的一些考量。

解讀vins-mono

nonlinear graph optimization-based, tightly-coupled, sliding windows, visual-inertial bundle adjustment

code

功能ar_demo

視覺定位的乙個小應用demo

benchmark_publisher

訂閱估計的estimated_odometry, 然後與cvs中的groundtruth對比

calibration_images

訂閱相機的話題,儲存成,用於相機校準,支援魚眼相機,針孔相機

camera_model

各種相機模型的校準,入口函式

config

配置引數檔案

feature_tracker

使用光流法追蹤特徵點

pose_graph

後端優化

vins_estimator狀態估計

cmake files

function

vins_estimator/cmakelists.txt

生成vins_estimator node

feature_tracker/cmakelists.txt

生成feature_tracker node

pose_graph/cmakelists.txt

生成pose_graph node

camera_model/cmakelists.txt

生成calibration可執行程式 和camera_model庫

vins-estimator 主要程式,

pose_garph

feature_tracker 使用光流法追蹤特徵點

intrinsic_calib.cc 從其他的庫複製過來的

引數名稱

型別**

功能image_topic

string

yaml config file/image_topic

訂閱影象話題名稱

imu_topic

string

yaml config file/imu_topic

訂閱imu話題名稱

max_cnt

intyaml config file/max_cnt

max feature number in feature tracking

min_dist

intyaml config file/min_dist

min distance between two features

rowint

yaml config file/image_height

畫素行數-影象高度

colint

yaml config file/image_width

畫素列數-影象寬度

freq

intyaml config file/freq

frequence (hz) of publish tracking result. at least 10hz for good estimation. if set 0, the frequence will be same as raw image

f_threshold

double

yaml config file/f_threshold

ransac threshold (pixel)

show_track

intyaml config file/show_track

是否發布 tracking image話題

equalize

intyaml config file/equalize

當影象太亮/暗,是否開啟均衡補償

fisheye

intyaml config file/fisheye

是否使用魚眼相機

fisheye_mask

string

yaml config file/fisheye=1

fisheye_mask.jpg路徑

cam_names

std::vectorparameter.cpp全域性變數

畫素列數-影象寬度

window_size

intparameter.cpp全域性變數 20

滑動視窗的大小

stereo_track

intparameter.cpp全域性變數 false

是否使用雙目追蹤

focal_length

intparameter.cpp全域性變數460焦距

pub_this_frame

intparameter.cpp全域性變數 false

不發布這幀

num_of_cam

intparameter.h 1

camera的數量

modeltype

camera::modeltype

yaml config file/model_type kannala_brandt/mei/scaramuzza/pinhole

camera的模型

solver_time

double

max_solver_time

確保實時性,最大求解時間 0.04ms

num_iterations

intmax_num_iterations

確保實時性,最大迭代次數 8,避免冗餘計算

min_parallax

double

keyframe_parallax

關鍵幀選擇的視差閾值 10 pixel

vins_result_path

intoutput_path/vins_result_no_loop.csv

不加回環的輸出結果

estimate_extrinsic

intestimate_extrinsic

ric[0] cv_r eigen_r

eigen::matrix3d

extrinsicrotation

imu與camera的旋轉

tic[0] cv_t eigen_t

eigen::vector3d

extrinsicrotation

imu與camera的平移

init_depth

double

vins_estimator/parameters.h

camera的數量

bias_acc_threshold

double

vins_estimator/parameters.h 1

acc偏置的閾值

bias_gyr_threshold

double

vins_estimator/parameters.h 1

陀螺儀偏置的閾值

tdint

config/td

imu與camera的固有時鐘差

estimate_td

intconfig/estimate_td

置位online estimate time offset between camera and imu

rolling_shutter

introlling_shutter: 0

0-全域性快門;1-捲簾快門

num_of_cam | int | parameter.h 1 | camera的數量

featuretracker 特徵點追蹤類

camerafactory 不同的相機型別和校準模型

tictoc 計算時間差的功能類

estimator

視覺SLAM(一) 視覺SLAM框架

主要參考書目是高翔博士的 視覺slam十四講 中間會記錄一些個人實踐經驗和思考。slam伴隨著機器視覺發展和機械人導航已經相對成熟,形成了合理高效的基本框架。主要包含 感測器資料 前端視覺里程計 後端優化 回環檢測 建圖。採集根據不同應用場景和需求進行選擇,主要有如下幾種感測器 也就是單獨乙個攝像機...

視覺SLAM 視覺SLAM相關開源演算法總結

第乙個實時 單目slam系統,基於ekf優化。單目,只有tracking,進行了有效的特徵點對的匹配。之後有enft slam.適用於各種各樣的相機,除了常見的單目,雙目,rgb d的分類,還適用於透視 魚眼甚至自己設計的相機。通過使用apriltag基準標記實現slam 76 提出了一種基於李代數...

視覺SLAM習題

視覺slam習題彙總 持續更新 ch3矩陣提取 主要是利用 block 對應習題提取左上角3x3矩陣 include include includeusing namespace std int main int argc,char argv 按照官網給出的計算方法,編譯出現 error eigen...