跳到主要内容

用 PTP 同步时间

1 概述

禾赛激光雷达产品支持 PTP(Precision Time Protocol,精确时间协议),用户可通过这一功能实现多传感器之间的精确时间同步。

2 使用方法

使用 PTP 时间同步功能的方法如下:

2.1 参数配置

通过网页控制页面或 LidarUtilities 软件方式对激光雷达进行 PTP 相关参数配置(如下图所示,各参数选项信息详见对应产品的使用手册):

网页控制页面 - Settings(适用于 Pandar 系列/QT 系列/XT 系列等型号)

ptpconfig_web

LidarUtilities - Time Sync(适用于 OT128/AT128P 等型号)

ptpconfig_LU

注:LidarUtilities 软件可通过禾赛官网获取(OT128AT128P)。

2.2 进行 PTP 时间同步

将激光雷达连接至外部时钟源设备,对时钟源进行 PTP 主时钟相关参数配置后启动 PTP 授时。

禾赛激光雷达产品支持使用软件模拟方式或专用硬件主时钟设备方式进行 PTP 时间同步,具体操作方法如下:

2.2.1 使用软件模拟方式进行 PTP 时间同步

通过软件模拟方式进行激光雷达 PTP 时间同步的硬件设备连接方式参考如下:

SWptpsetup

针对不同类型的 PTP 时间同步协议,可按照以下方法在 Ubuntu 系统中配置 PTP 主时钟:

2.2.1.1 1588v2 协议

对于 1588v2 协议,常用的开源 PTP 时间同步模拟软件有 linuxptp 和 ptpd,对应的使用方法分别如下:

2.2.1.1.1 linuxptp(推荐)
  1. 安装
sudo apt-get install linuxptp
  1. 使用 ethtool 命令查看本地网络接口所支持的 PTP 同步功能
sudo apt-get install ethtool
sudo ethtool -T 网络接口名

注:查看本地网络接口名的方法参见Ubuntu 系统如何查看本地网络接口名

  • 终端打印信息如下:
ethtoolprint

此处显示的 hardware 或 software 表示该网络接口是否具备硬件时间戳能力,或仅支持软件时间戳功能。其中,硬件时间戳的同步精度能够达到几微秒甚至更低,而软件时间戳的时间同步偏差则一般要大于硬件时间戳方式。

  1. 运行以下指令,将主机网络接口配置为主时钟并启动授时

首先检查2.1 参数配置 中的 PTP Network Transport 选项,执行对应操作。

  • 3.1 Network Transport -> UDP/IP
sudo ptp4l –m -4 –i 网络接口名 –S
  • 3.2 Network Transport -> L2
sudo ptp4l –m -2 –i 网络接口名 –S
  1. 观察命令行打印信息,当此时网络接口显示为Grand Master状态时,代表本地主机已正常配置为 PTP 主时钟:
ptp4lprint

若此时激光雷达网页控制页面或 LidarUtilities 界面上显示的 PTP 状态同步更新为TrackingLocked且 offset 数字有变化,则表示激光雷达与 PTP 主时钟之间的时间同步已成功建立(参考下图所示):

网页控制页面 - Home(Pandar 系列/QT 系列/XT 系列等型号)

trackingstatus

LidarUtilities - Time Sync(OT128/AT128P 等型号)

lockedstatus

需要注意,当禾赛激光雷达 PTP 状态显示为‘Tracking’时,仅代表当前激光雷达与 PTP 主时钟之间的时间戳偏移(Master Offset)未满足‘Locked’状态对应的 Time Offset 参数阈值(此阈值可在激光雷达控制页面中设置,默认为±1μs,最大可支持±100μs),实际激光雷达已处于正常的 PTP 时间同步状态。

2.2.1.1.2 ptpd
  1. 安装
sudo apt-get install ptpd
  1. 运行以下指令,将主机网络接口配置为主时钟并启动授时
sudo ptpd -i 网络接口名 -C -M
  1. 观察命令行输出信息,当此时网络接口显示为PTP_MASTER状态时,代表本地主机已正常配置为 PTP 主时钟:
ptpdprint

若此时激光雷达网页控制页面或 LidarUtilities 软件所显示的 PTP 状态同步刷新为TrackingLocked且 offset 数字有变化,则表示激光雷达与 PTP 主时钟之间的时间同步已成功建立。

注:对于多台激光雷达同时进行 PTP 时间同步的情况,仅需要在网络连接中加入交换机以实现 PTP 报文的转发,此过程不影响上述 PTP 主时钟的配置方法。

2.2.1.2 802.1AS 协议
2.2.1.2.1 单台激光雷达 PTP 同步

对于单台 lidar 上使用 802.1AS 协议进行时间同步,建议使用 linuxptp 软件工具进行配置,操作方法如下:

  1. 安装
sudo apt-get install linuxptp
  1. 使用 ethtool 命令查看本地网络接口所支持的 PTP 同步功能
sudo apt-get install ethtool
sudo ethtool -T 网络接口名
  1. 运行以下指令,将主机网络接口配置为主时钟并启动授时
  • 3.1 新建 gPTP.cfg 文件
touch gPTP.cfg
  • 3.2 根据 PTP 主时钟的基本参数配置选择 gPTP.cfg 文件内容

a. 标准 802.1AS 协议

将标准 802.1AS 协议内容复制到 gPTP.cfg 文件中

[global]
gmCapable 1
priority1 248
priority2 248
logAnnounceInterval 0
logSyncInterval -3
syncReceiptTimeout 3
neighborPropDelayThresh 800000
min_neighbor_prop_delay -20000000
assume_two_step 1
path_trace_enabled 1
follow_up_info 1
transportSpecific 0x1
ptp_dst_mac 01:80:C2:00:00:0E
network_transport L2
delay_mechanism P2P
domainNumber 0

注:部分禾赛激光雷达产品(如 OT128、AT128P 等)支持 802.1AS(AUTOSAR) 协议选项,该选项对应的 PTP 主时钟参数配置方法实际与标准 802.1AS 协议参数配置相同。

b. 802.1AS Automotive 协议

将 802.1AS Automotive 协议内容复制到 gPTP.cfg 文件中

[global]

# Options carried over from gPTP.

gmCapable 1
priority1 248
priority2 248
logSyncInterval -3
syncReceiptTimeout 3
neighborPropDelayThresh 800
min_neighbor_prop_delay -20000000
assume_two_step 1
path_trace_enabled 1
follow_up_info 1
transportSpecific 0x1
ptp_dst_mac 01:80:C2:00:00:0E
network_transport L2
delay_mechanism P2P
#

# Automotive Profile specific options

#
BMCA noop
serverOnly 1
inhibit_announce 1
asCapable true
inhibit_delay_req 1
  • 3.3 在 gPTP.cfg 文件目录下运行授时指令
sudo ptp4l -S -i 网络接口名 -m -f gPTP.cfg
  1. 检查命令行打印信息

a. 标准 802.1AS 协议 当此时网络接口显示为下图状态时,代表本地主机已正常配置为 PTP 主时钟:

ptp4lprint_gptp

b. 802.1AS Automotive 协议 当此时网络接口显示为下图状态时,代表本地主机已正常配置为 PTP 主时钟:

ptp4lprint_gptp_Automotive

若此时激光雷达网页控制页面或 LidarUtilities 软件所显示的 PTP 状态同步刷新为TrackingLocked且 offset 数字有变化,则表示激光雷达与 PTP 主时钟之间的时间同步已成功建立。

2.2.1.2.2 多台激光雷达 PTP 同步

在网络中对多台激光雷达同时使用 802.1AS 协议进行时间同步,需要事先确认所使用的交换机型号是否支持TSN(即时间敏感网络,属于 IEEE 802.1 的扩展协议栈,旨在以太网协议的数据链路层提供一套通用的时间敏感机制,以确保数据传输的实时性和可靠性)。

  1. 对于支持 TSN 的交换机,将每台激光雷达的 Switch Type 参数都设置为'TSN'(如下图所示),并按照单台激光雷达的 PTP 授时方法将主机配置为 PTP 主时钟,若此时激光雷达网页控制页面或 LidarUtilities 软件所显示的 PTP 状态同步刷新为TrackingLocked,则表示激光雷达与 PTP 主时钟之间的时间同步已成功建立。

网页控制页面 - Settings(Pandar 系列/QT 系列/XT 系列等型号)

TSN_web

LidarUtilities - Time Sync(OT128/AT128P 等型号)

TSN
  1. 对于不支持 TSN 选项的普通类型交换机,则无法直接使用标准的 linuxptp 软件实现对多台激光雷达进行 gPTP 时间同步。此时可以参考以下方法对 linuxptp 程序里的部分逻辑代码进行调整,使其兼容使用普通交换机的对时网络并实现多台激光雷达 gPTP 时间同步:
  • 2.1 本地克隆 linuxptp 文件夹
git clone https://github.com/richardcochran/linuxptp.git
  • 2.2 新建 ptp4l.diff 文件
touch ptp4l.diff
  • 2.3 将以下代码复制到 ptp4l.diff 文件中
diff --git a/port.c b/port.c
index b7fbfb1..3cd0ba4 100644
--- a/port.c
+++ b/port.c
@@ -2278,21 +2278,10 @@ int process_pdelay_req(struct port *p, struct ptp_message *m)
p->delayMechanism = DM_P2P;
port_set_delay_tmo(p);
}
- if (p->peer_portid_valid) {
- if (!pid_eq(&p->peer_portid, &m->header.sourcePortIdentity)) {
- pr_err("%s: received pdelay_req msg with "
- "unexpected peer port id %s",
- p->log_name,
- pid2str(&m->header.sourcePortIdentity));
- p->peer_portid_valid = 0;
- port_capable(p);
- }
- } else {
p->peer_portid_valid = 1;
p->peer_portid = m->header.sourcePortIdentity;
- pr_debug("%s: peer port id set to %s", p->log_name,
- pid2str(&p->peer_portid));
- }
+ //pr_debug("%s: peer port id set to %s", p->log_name,
+ // pid2str(&p->peer_portid));

rsp = msg_allocate();
if (!rsp) {
@@ -2475,8 +2464,8 @@ int process_pdelay_resp(struct port *p, struct ptp_message *m)
}

if (!p->peer_delay_req) {
- pr_err("%s: rogue peer delay response", p->log_name);
- return -1;
+ //pr_err("%s: rogue peer delay response", p->log_name);
+ return 0;
}
if (p->peer_portid_valid) {
if (!pid_eq(&p->peer_portid, &m->header.sourcePortIdentity)) {
  • 2.4 将 ptp4l.diff 移动到 linuxptp 文件夹中

  • 2.5 在 linuxptp 文件夹下新建终端并按顺序执行以下命令:

make clean
make
patch -p1 < ptp4l.diff

执行上述命令后,观察命令行打印信息,出现下图中的两处 Hunk 信息即为修改成功:

ptp4l_success

ptp4l.diff 文件中的修改内容被应用到 linuxptp 的 port.c 文件中(效果参考下图):

portc
  • 2.6 重新编译 linuxptp
make
  • 2.7 确认雷达参数设置

将当前网络中每台激光雷达的 Switch Type 参数分别设置为'Non-TSN'(如下图所示)

网页控制页面 - Settings(Pandar 系列/QT 系列/XT 系列等型号)

nontsn_web

LidarUtilities - Time Sync(OT128/AT128P 等型号)

nontsn
  • 2.8 在 Linuxptp 文件夹下根据参数配置运行指令进行主时钟配置并启动授时:
sudo ./ptp4l -S -i 网络接口名 -f configs/automotive-master.cfg -l 7 -m

此时命令行会持续刷新,显示master sync timeout

若此时激光雷达网页控制页面或 LidarUtilities 软件所显示的 PTP 状态同步刷新为TrackingLocked且 offset 数字有变化,则表示激光雷达与 PTP 主时钟之间的时间同步已成功建立。

2.2.2 硬件设备方式 PTP 时间同步

使用专用的硬件 PTP 主时钟设备为禾赛激光雷达进行 PTP 授时,对应的硬件连接方式可参考下图:

HWptpsetup

该授时方法通常可以获得更高的 PTP 时间同步精度(< 1μs)。与软件模拟 PTP 时间同步方式类似,用户需要根据该硬件设备的操作指导,正确配置相应的 PTP 协议与主时钟参数并启动授时(下图展示了 Trimble Thunderbolt GM200 专用 PTP Master 设备的参数配置界面)。

trimbleptp

当 PTP 主时钟启动授时后,可通过监控激光雷达的 PTP 状态(正常同步时应为TrackingLocked)以及实时接收到的点云数据时间戳,判断设备是否处于正常对时状态。

3 常见 PTP 问题排查

3.1 激光雷达无法正常建立 PTP 时间同步

  • 确认当前 PTP 时间同步网络的硬件连接是否正常;
  • 确认激光雷达和 PTP 主时钟的 PTP 对时报文是否正常发出(可通过 Wireshark 软件查看 PTP 协议相关报文),若报文发出但未接收到,确认当前设备的网络带宽负载是否可能导致丢包;
  • 检查激光雷达的 PTP 参数配置是否与 PTP 主时钟的参数配置一致,配置方法详见此处

3.2 激光雷达 PTP 同步状态不稳定

  • 确认 PTP 时间同步网络的硬件连接是否正常;
  • 确认 PTP 主时钟工作状态是否正常,是否出现时间戳异常跳变现象;
  • 确认激光雷达是否可以正常收到 PTP 主时钟发出的 PTP 对时报文(可通过 Wireshark 软件查看 PTP 协议相关报文); 操作步骤:1.在 Wireshark 中选择对应网卡,使用过滤条件 ptp;检查是否存在由主时钟发出的 Sync、Follow_Up 等报文;3.观察报文中时间戳字段是否连续、一致,判断主时钟状态是否正常;4.确认是否持续接收到上述报文。
  • 对于1588v2协议,若当前 PTP 时间同步网络中存在多个激光雷达或其他对时设备时,并且出现了 PTP 无法正常同步或者同步后频繁失锁,需确认网络内传输的数据量是否已经接近于主机网口带宽上限;建议将 PTP 主时钟和激光雷达的 PTP Network Transport 参数设置为L2,以规避 IP 网络层数据负载对于收发端口 PTP 报文传输的影响;
  • 对于802.1AS协议,若激光雷达的 PTP 状态不稳定,在正常同步和失锁状态之间切换,需确认 PTP 主时钟与激光雷达的 Sync 报文周期参数(logSyncInterval)是否一致(对于禾赛激光雷达产品,该参数固定配置为-3)。

3.3 其他问题

  • 使用交换机后若发现激光雷达与主机无法 ping 通,请检查主机 IP 是否正确或使用以下命令对主机 IP 进行配置:
sudo ip addr add 主机 IP /子网掩码(默认 24) dev 网络接口名
#example:sudo ip addr add 192.168.1.100/24 dev eno1

按照上述方法操作后,若激光雷达仍存在其他 PTP 时间同步相关问题,请联系禾赛技术支持。