EF-Calib: Spatiotemporal Calibration of Event- and Frame-Based Cameras Using Continuous-Time Trajectories
We have tested EF-Calib on machines with the following configurations:
- Ubuntu 20.04 LTS
- ROS Noetic
- OpenCV 4+
- Ceres 1.13.0
To work with event cameras, especially for the Dynamic Vision Sensors (DVS/DAVIS), you need to install some drivers. Please follow the instructions at rpg_dvs_ros before moving on to the next step. Note that you need to replace the name of the ROS distribution with the one installed on your computer.
We use catkin tools to build the code. You should have it installed during the driver installation.
Please follow this link to install Ceres-solver. Note that versions above 2.0.0 might encounter issues due to some recent changes.
Please follow this link to install OpenCV 4.
You should have created a catkin workspace in Driver Installation. If not, please go back and create one.
Clone this repository into the src
folder of your catkin workspace.
$ cd ~/catkin_ws/src
$ git clone https://github.com/wsakobe/EF-Calib.git
Build all the packages of EF-Calib.
$ catkin build
First, record the image data and event streams synchronized according to the method described in the paper. Alternatively, you can download an example rosbag from this link
Configure parameters in the config/setup.yaml
file.
BagName
: File path of the recorded rosbagsquare_size
: Adjacent feature spacing on the calibration boardinit_window_size
: Minimum number of frames required for initializationboard_width
: Calibration board size (number of features in the width direction)board_height
: Calibration board size (number of features in the height direction)knot_distance
: B-spline knot spacingcontinue_number
: Minimum number of consecutive B-spline knotsopt_time
: Total duration of the rosbag
Next, run the following commands to extract features from frames and events into corner_info.bag
and circle_info.bag
, respectively.
$ source ../devel/setup.bash
$ cd EF-Calib
$ ./run.sh
Once valid corner_info.bag
and circle_info.bag
files are obtained, run the estimator node to complete the calibration process. If successful, the calibration results will be displayed in the Terminal.
$ roslaunch estimator estimator.launch
This code was developed by Shaoan Wang from Peking University.
For researchers that have leveraged or compared to this work, please cite the following:
@ARTICLE{10705060,
author={Wang, Shaoan and Xin, Zhanhua and Hu, Yaoqing and Li, Dongyue and Zhu, Mingzhu and Yu, Junzhi},
journal={IEEE Robotics and Automation Letters},
title={EF-Calib: Spatiotemporal Calibration of Event- and Frame-Based Cameras Using Continuous-Time Trajectories},
year={2024},
volume={9},
number={11},
pages={10280-10287},
keywords={Cameras;Calibration;Trajectory;Splines (mathematics);Robot vision systems;Accuracy;Lighting;Spatiotemporal phenomena;Synchronization;Pattern recognition;Calibration and identification;sensor fusion;event camera;spatiotemporal calibration},
doi={10.1109/LRA.2024.3474475}
}
The B-spline module is adapted from basalt. Thanks for the excellent job!