基于ROS实现多传感器时间软同步
Autonomous vehicle 杂谈_15
一. 写在前面:
- 为什么需要时间同步?有什么时间同步方法? 需要时间同步的原因其实很简单,如果未经手动设定,我们所使用的车载传感器的频率是不一样的。比如你用的相机是15HZ,而激光雷达是20HZ,那么在做多传感器数据融合的时候,就无法实现一帧图片对应一帧点云;因此时间同步就是必须的了。而实现多传感器时间同步的方法主要有两种,一种是软同步,另一种是硬同步。(解释详见:)。
- 本文实现方法介绍: 本文所使用的方法是基于ROS::message_filter的,这个方法的原理是:时间同步器会从多个源(这里指的就是LiDAR和Camera)接收到不同类型的消息,当且仅当它们有着相同的时间戳的时候,才把它们发布出去。从而实现一定程度上的多传感器时间同步。
- 一句总结:软同步更易实现、硬同步更加精确。
二. 代码复现
### 1. 代码拷贝 cd mkdir -p SensorTimeSync_ws/src cd SensorTimeSync_ws/src git clone https://github.com/demoxxxyf/SensorsTimeSync.git cd SensorTimeSync mkdir include cd ../../ catkin_make # 显示 [100%] Built target data_tb 完成代码拷贝 ### 2. 代码使用 source devel/setup.bash rosrun data_tb data_tb # 记得启动 ros master rosbag play *** # 播放你想要同步的bag rosbag record -a # 记录同步好的bag
结果展示
rqt_bag 同步好的bag.bag
查看sync/img和sync/lidar即可