R3LIVE项目实战(5) — R3LIVE数据采集与时间同步

目录

1 R3LIVE数据采集运行步骤

1.1 录制数据集

1.2 修改config下对应的配置文件

1.3 启动相机和雷达节点

1.4 运行R3LIVE与播包

2 R3LIVE在线运行


1 R3LIVE数据采集运行步骤

1.1 录制数据集

采集数据需要注意的一点是,不同传感器之间的时间同步问题,因为LIVOX默认是从开始启动激光雷达开始算时间的并不是ROS系统时间,如果直接记录数据,是跑不起来的。下面给出对应的解决方案。可以通过如下的命令录制数据:

rosbag record -O test.bag 节点1 节点2 ...

录制好数据集后,通过如下命令查看bag的详细信息,包括时间戳是否对齐

rqt_bag test.bag

接着在节点名右键鼠标 -> View -> Raw查看时间戳信息,发现时间戳没有对齐,可以通过下面的方法解决。

方法1:直接用R3LIVE作者提供的LIVOX驱动
https://github.com/ziv-lin/livox_ros_driver_for_R2LIVE

作者之间将时间戳再源码中更改了,所以用这个驱动启动直接记录数据是可行的。再记录之前需要打开livox_lidar_config.json文件中的时间同步功能。并选择一个接口名称,我这里选择的是相机的接口。

方法2: PTP时间同步的方法

下面是PTP时间同步的方法,是相对容易的一种。

首先ifconfig确认一下网卡情况:

通过下面的指令来检查网卡是否支持软件/硬件时间戳功能(本机有线网卡“eth0”)。

ethtool -T eth0

以下情况说明是可以通过软件同步的方法来实现的。

出现下面的则不能通过PTP进行时间同步

然后安装PTP时间同步工具。

 sudo apt install ptpd

执行时间同步命令

sudo ptpd -M -i enp3s0 -C

输出:Now in state: PTP_MASTER, Best master说明同步成功。最后重新录制数据集,检查是否对齐。

1.2 修改config下对应的配置文件

具体修改标定的内参和外参、图像的尺寸。在R3LIVE中设置外参时,要对此处的得到的外参结果求逆,不然得不到最后的点云着色效果。具体操作是将R按对角线反转,T取负号。

1.3 启动相机和雷达节点

roslaunch zed_wrapper zed2i.launch #启动相机
roslaunch livox_ros_driver livox_lidar_msg.launch # 启动雷达
sudo ptpd -M -i enp3s0 -C #启动时间同步

1.4 运行R3LIVE与播包

修改并运行R3LIVE的r3live_bag.launch节点,修改对应的话题名

robag play录制的数据集,最后得到正确的结果,如果没有时间戳同步,则接受不到对应的图像,激光点云也没有颜色。

2 R3LIVE在线运行

在线运行时,与提前录制数据集方法相同,修改相应的雷达和相机的话题名称,启动相机和雷达的节点,同时要注意启动时间同步的功能。

总结:

  1. 因为LIVOX默认是从开始启动激光雷达开始算时间的并不是系统时间,而相机是基于系统时间,要做时间同步。
  2. 修改标定的内参和外参,之前标定的是相机到雷达的,R3live下面配置的雷达到相机的,所以要把得到外参旋转矩阵求逆,再填入,平移矩阵则取负。

猜你喜欢

转载自blog.csdn.net/qq_41921826/article/details/132605462