快捷搜索: 王者荣耀 脱发

基于ROS实现多传感器时间软同步

Autonomous vehicle 杂谈_15


一. 写在前面:

  1. 为什么需要时间同步?有什么时间同步方法?  需要时间同步的原因其实很简单,如果未经手动设定,我们所使用的车载传感器的频率是不一样的。比如你用的相机是15HZ,而激光雷达是20HZ,那么在做多传感器数据融合的时候,就无法实现一帧图片对应一帧点云;因此时间同步就是必须的了。而实现多传感器时间同步的方法主要有两种,一种是软同步,另一种是硬同步。(解释详见:)。
  2. 本文实现方法介绍:  本文所使用的方法是基于ROS::message_filter的,这个方法的原理是:时间同步器会从多个源(这里指的就是LiDAR和Camera)接收到不同类型的消息,当且仅当它们有着相同的时间戳的时候,才把它们发布出去。从而实现一定程度上的多传感器时间同步。
  3. 一句总结:软同步更易实现、硬同步更加精确。

二. 代码复现

### 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即可


如有问题,敬请指正。欢迎转载,但请注明出处。
经验分享 程序员 微信小程序 职场和发展