一、相机与IMU
相机和IMU的同步问题,首先要解决硬件同步。本人用的相机是德国Balser 相机,可以设置软件触发和硬件触发,如果设置软件触发,相机的采样频率会受曝光时间和网线长短等因素的影响,如需严格输出特定频率的图像,需设置硬件触发,假设频率为20HZ。如果用独立的相机和mems,务必硬件同步,否则误差很大,鲁棒性也不好。因为时间戳在vio里面真的很重要; 如果时间戳对不齐,外参始终都标不好.
同步方法如下:
(1)IMU的输出频率是200HZ
(2)相机有一个接收外部触发的gpio引脚, Arduino 单片机给定的频率是20HZ,具体程序请看我的博客
(3)将相机设置成固定曝光时间(一定不能设置成自动曝光),具体曝光时间要根据环境和硬件设置,原则上是在保证图片清晰的情况下曝光时间越短越好。
如此以来相机和imu就同步了,可以保证每输出一帧图像都有对应的imu输出,没两帧图像之间有10帧的imu。其实到这里硬件同步已经完成了。
注意的问题:
1、如果传感器内部有同样的时钟基准(比如UTC),那么可以用传感器自带的时间打时间戳,否则用ros; 如果用ros打时间戳就避免不了要有时间延迟,因为图像传输和imu传输都是有延迟的。硬件同步后的相机和imu实际上是时间对齐的,但是优于IMU、相机读取程序的复杂度、通信的方式等原因,导致你在pc机接收的时候是有时间差的,如果是是几毫秒,可以接受。
2、如果你想像数据集那样有groundtruth的话最好有一个RTK
3、如果你用串口传数据,一定要将串口延时设置成1ms,默认是16ms,无论如何时间戳都打不对的
参考资料:
1、自动驾驶常用数据集KITTI使用指南之一——图像雷达数据融合
2、SLAM中多传感器融合的时间同步问题
https://blog.csdn.net/wheelfjl/article/details/78653321
3、ros 下面同步相机和IMU 两个topic
https://blog.csdn.net/ttomchy/article/details/82431320
4、ROS下同时接收多个话题并实现相机和雷达的数据融合
5、ROS之订阅多个话题并对其进行同步处理(多传感器融合)
6、无人驾驶传感器融合系列(十)—— 目标追踪之相机与激光雷达数据融合
7、研究VINS/VIO的时候如何采集像EuRoc那样的数据??相机和imu如何进行时间戳同步?这里的关键是传感器的选择和时间