maplab系列8:ImuCameraSynchronizer
阿新 • • 發佈:2018-12-04
ImuCameraSynchronizer 是用來同步imu和image的。這是任何vio程式必要的一部分,所以這裡單獨拿出來分析一下。
首先使用:
- addCameraImage
- 把image存入VisualNPipeline中
- VisualNPipeline本來可以用來提取特徵點和track,但這裡只用來儲存image流,所以使用了NullVisualPipeline型別
- 使用VisualNPipeline的processImageBlockingIfFull加入新的image
- addImuMeasurements
- 新的imu資料存入ImuMeasurementBuffer中
兩個函式不斷把imu和圖片資料加入到物件中
一共有兩個執行緒:
- checkIfMessagesAreIncomingWorker
- 檢測退出訊號
- 檢測最近多少時間內是否沒有imu或者img資料收到,異常檢測
- processDataThreadWorker
- 用getNextBlocking從佇列中拿出一張圖,如果佇列沒有圖就block在這裡。
- 跳過初始kFramesToSkipAtInit個frame
- 檢查和上一幀時間間隔是否小於min_nframe_timestamp_diff_ns_
- 建立新的new_imu_nframe_measurement
- 把這個新的frame給這個結構
- getImuDataInterpolatedBordersBlocking得到最新frame和上一frame之間所有的imu,如果imu數量不夠,會跳過