PTP是一个网络同步时钟的协议,全称是Precise Time Protocol,也称为IEEE 1588,其有IEEE1588v1和IEEE1588v2两个版本(其中v1版本是为工业自动化测量和控制系统开发的,适用于工业局域网应用。v2版本是在v1版本的基础上,专门针对通信网改进的,我们使用的是IEEE1588v2版本)。当硬件支持时,PTP 精度能达到亚微秒,在外界第三方PTP Master接入时连接方式如图 2中所示。其中激光雷达为PTP Slave设备,其点云数据包中的Timestamp 段(微秒时间戳)和Date & Time 段(日期及时间)严格按照PTP master 设备提供的PTP 时间同步,两者组成数据包的绝对时间。
Hesai激光雷达设置PTP时间同步
虽然禾赛官方用户手册中称需要额外的PTP master设备来获取绝对时间,但是在Ubuntu系统中可以安装一个linuxptp软件模拟实现第三方PTP master功能。
主要操作步骤如下:
- 进入Hesai激光雷达操作网页(作者的是192.168.3.201),设置时间来源为PTP:
- 保存配置,重新初始化雷达,使设置生效。
- 安装linuxptp软件
sudo apt update
sudo apt install linuxptp
- 输入下述命令查看当前电脑中的网卡
ifconfig
可以看到上图中有两个网口,一个是电脑自带的网口,另外一个是通过网口转USB的转接线实现。
- 通过下述命令查看禾赛激光雷达链接的网口是否支持PTP(enxf8e43bb4ab3d)
sudo ethtool -T YOUR_INTERFACE
- 若支持PTP,我们继续使用下述命令启动1588v2协议。
sudo ptp4l -m -4 -i YOUR_INTERFACE -S
- 若想要使用802.1AS协议,则使用下述命令。(802.1AS与1588v2协议之间的区别参考此链接)
sudo ptp4l -S -i YOUR_INTERFACE -f ./configs/gPTp.cfg -m
gPTp.cfg文件可以找禾赛技术工程师获取。
- 进行时间同步后,启动Hesai雷达驱动,进入操作网页(192.168.3.201),等待一段时间,使激光雷达进行PTP时间同步。查看效果如下图所示:
当红框标记区域中的PTP模式从Free Run变为Tracking时,则代表PTP同步成功。
9) 启动调试使用的compare time以及gnuplot查看hesai激光雷达数据的时间戳。
可以看到,相邻两帧之间的时间差非常接近0.1s,为小数点后五位,说明在静止状态下同步的时间还是比较准的。