Implementation of [1], different from open source code base [2], this version keeps no modification to orbslam3[3]. Calibration part is contained in folder /calib
.
Same as [3].
- put orb vocabulary to
/Vocabulary/ORBVoc.txt
- prepare your camera config file to
/config
- build all
cmake -B build
cmake --build build -- -j8
- Config
calib.yaml
andcam.yaml
properly, run orbslam to save atlas first! Calibration performance heavily depends on orbslam's performance.
# calib.yaml
# slam or calib
Mode: slam
# 0 for mono
# 1 for stero
# 2 for rgbd
Camera1.Type: 2
Camera1.Image: "/usb_front/image"
Camera1.Depth: "/usb_front/depth/image_raw"
Camera2.Type: 2
Camera2.Image: "/usb_back/image"
Camera2.Depth: "/usb_back/depth/image_raw"
# cam.yaml
# System.LoadAtlasFromFile: "atlas"
./build/calib/calib ./Vocabulary/ORBvoc.txt config/sim/calib.yaml config/sim/cam.yaml config/sim/cam.yaml
- Load atlas to conduct calibration!!
# calib.yaml
# slam or calib
Mode: calib
# cam.yaml
System.LoadAtlasFromFile: "atlas"
./build/calib/calib ./Vocabulary/ORBvoc.txt config/sim/rgbd2.yaml config/sim/rgbd2.yaml
Little modifications made to ORBSLAM3 for better usage, all modifications are leading with comments: // modify: xxx
- orb vocabulary only need to be loaded once.
- windows in viewer(pangolin or opencv) should be binded to different names.
Keep in mind that we try to keep ORBSLAM3 untouched just like the original code.
Datasets are collected in Gazebo as ground-truth are easily obtained.
- front-side rgbd pair
front to side | Ground-truth | Calib |
---|---|---|
Rot(deg) | [46.781, 13.995, -75.567] | [45.9, 13.405, -75.415] |
Trans(m) | [-0.307, -0.684, 0.530] | [-0.3204, -0.7022, 0.5254] |
- front-back rgbd pair
front to side | Ground-truth | Calib |
---|---|---|
Rot(deg) | [-180, 0, -180] | [-181.189, -0.514, -179.79] |
Trans(m) | [0, 0.356, -1.930] | [-0.087, 0.297, -1.878] |
- front-front monocular pair
front to side | Ground-truth | Calib |
---|---|---|
Rot(deg) | [45, 0, 0] | [44.990 -0.033 -0.0057] |
Trans(m) | - | - |
For '-', monocular case scale is unable to be accurately estimated.
- Easiest installation.
- Nearly non-intrusive to [3] with software enginearing.
- Ideas of [1] are all implemented at folder
/calib
, much more organized than [2]. - Seems to be more robust than [2] based on my two simulation datasets.
- Play bag once and run calib forever leveraging the Atlas module provided by [3]
[1] J. Xu et al., "CamMap: Extrinsic Calibration of Non-Overlapping Cameras Based on SLAM Map Alignment," in IEEE Robotics and Automation Letters, vol. 7, no. 4, pp. 11879-11885, Oct. 2022, doi: 10.1109/LRA.2022.3207793.