Skip to content

激光雷达时间同步协议

时间同步是多传感器融合系统的基石。激光雷达扫描一帧点云需要一定时间,且通常需要与相机、IMU、GNSS 等异构传感器协同工作,只有当所有数据共享一个精确、统一的时间基准时,融合才具有意义。本文系统梳理激光雷达常用的三种时间同步机制——内部晶振、PPS(含 NMEA)与 PTP(IEEE 1588)——的原理、配置方法与工程实践。

典型的激光雷达会将所有点云与 IMU 数据打上时间戳,标记到一个公共定时器上,该定时器通常具有约 10 纳秒的精度。这个公共定时器可被配置为运行在以下三种时钟源之一:

时钟源说明
内部振荡器源自高精度、低漂移振荡器(通常为 TCXO)的内部时钟
外部脉冲输入(PPS)来自外部连接器的光隔离数字输入,用于对接外部硬件触发信号(如 GPS)
IEEE 1588 PTP通过支持 IEEE 1588 的网络配置定时,无需额外硬件信号

对应上述三种时钟源,常见的时间戳模式(timestamp mode)如下:

时间戳模式时钟源精度等级典型场景
TIME_FROM_INTERNAL_OSC内部晶振低漂移自由运行单传感器测试、快速原型验证
TIME_FROM_SYNC_PULSE_IN外部 PPS 脉冲(可配合 NMEA)纳秒级GPS/GNSS 授时、多传感器硬同步
TIME_FROM_PTP_1588PTP 网络时钟<1 μs< 1\ \mu s多传感器网络同步、车载以太网

说明:PPS + NMEA 的组合通常并不是一个独立的时间戳模式,而是通过将时间戳模式设为外部脉冲输入,同时将多功能 IO 端口配置为 NMEA UART 输入来实现的。PPS 提供精确的秒脉冲相位,NMEA 提供对应的绝对 UTC 时间。

二、内部晶振时钟(TIME_FROM_INTERNAL_OSC)

Section titled “二、内部晶振时钟(TIME_FROM_INTERNAL_OSC)”

激光雷达内部通常配备一个高精度、低漂移的 TCXO(温度补偿晶体振荡器),作为默认时钟源。传感器上电后,内部时钟从零开始计数(epoch = 0),无需任何外部同步信号或网络连接即可工作。

参数值
时钟源内部高精度低漂移振荡器
时间戳分辨率纳秒(UDP 数据包中同时包含秒和纳秒寄存器)
最小增量约 10 ns10\ \text{ns}
启动延迟零延迟,上电即用
外部依赖无
适用场景局限性
单传感器快速测试,无需配置网络或接线多传感器无法融合——各雷达的内部时钟完全独立
原型验证阶段的临时方案长期运行后时间戳与真实时间偏差持续累积
非时间敏感的独立感知任务不适用于任何需要绝对时间的场景

三、PPS 同步(TIME_FROM_SYNC_PULSE_IN)

Section titled “三、PPS 同步(TIME_FROM_SYNC_PULSE_IN)”

PPS(Pulse Per Second,每秒脉冲)是一种硬件级时间同步信号。外部时钟源(如 GPS 接收机、原子钟、专用时钟发生器)每秒产生一个精确的电脉冲,激光雷达通过外部脉冲输入接口接收该脉冲,并将其作为时间基准。

在该模式下,传感器使用一个与外部脉冲输入同步的自由运行计数器,计数自上电以来的秒数(脉冲数)和纳秒数。如果同时启用了 NMEA UART 输入,则秒寄存器会跳变到从 NMEA $GPRMC 消息中提取的时间——这就是 PPS + NMEA(GPS 授时)的实现方式。

PPS 输入接口通常是光隔离数字输入,典型的电平要求如下:

参数最小电压最大电压最小驱动电流
LOGIC LOW−30 V-30\ \text{V}2 V2\ \text{V}N/A
LOGIC HIGH2.9 V2.9\ \text{V}30 V30\ \text{V}3 mA @ 3.3V–5V,5 mA @ 24V 及以上

接线时需将外部时钟源的 PPS 输出接到脉冲输入引脚,NMEA UART 输出接到多功能 IO 引脚,并共地。应避免将 GPS 接收机直接接到天线。

参数值
信号类型数字脉冲(TTL 电平)
脉冲频率1 Hz(每秒一次)
电压范围3.3–15V 逻辑电平,最小驱动电流 5 mA
极性可配置:ACTIVE_HIGH(默认)或 ACTIVE_LOW

在纯 PPS 模式下,传感器仅使用 PPS 脉冲来锁定内部时钟的相位(phase),但不知道每个脉冲对应的绝对时间(如 UTC 时间戳)。传感器只知道”第 N 个脉冲”。这种模式适用于有外部高精度时钟但不需要绝对 UTC 时间的场景。

当时间戳模式设置为外部脉冲输入,同时多功能 IO 配置为 NMEA UART 输入时,传感器同时接收 PPS 脉冲和 NMEA 串口数据。PPS 提供精确的秒脉冲相位,NMEA 提供对应的绝对 UTC 时间。

激光雷达通常接受以下 GPS 配置:

参数支持的值
NMEA 语句类型主要为 $GPRMC(部分设备支持其他语句)
波特率9600 或 115200
极性正常或反转(ACTIVE_HIGH 或 ACTIVE_LOW)
电压3.3–15V 逻辑电平,最小驱动电流 5 mA

如果 GPS 无法满足这些最低要求,需要使用额外电路进行电压缓冲。

NMEA 语句是一个简单的 ASCII 字符串,以 $ 字符开头,以回车字符结尾;字段由 , 字符分隔;最后的校验和字段由 * 字符分隔。标准消息的最大字符长度为 80 个字符。

$GPRMC 语句示例:

$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
字段描述
$GPRMCRecommended Minimum sentence C
123519Fix taken at 12:35:19 UTC
AStatus A=active or V=Void
4807.038Latitude 48 deg 07.038
NLatitude cardinal reference
01131.000Longitude 11 deg 31.000
ELongitude cardinal reference
022.4Speed over the ground in knots
084.4Track angle in degrees True
230394Date — 23rd of March 1994
003.1Magnetic Variation
WMagnetic cardinal reference
*6AThe checksum data, always begins with *

激光雷达通常通过计算自 00:00:00 Thursday, 1 January 1970(Unix Epoch)以来的秒数来交付数据包中的时间。

闰秒参数(leap seconds)默认为 0,意味着此计算不会考虑任何闰秒,报告的是 Unix Epoch 时间。协调世界时(UTC)落后于国际原子时(TAI)一定偏移(1972 年引入 UTC 时的初始 10 秒偏移 + 此后累计的闰秒,截至 2019 年 2 月共 37 秒)。因此将闰秒参数设为 37 将使时间戳与 TAI 标准匹配。

参数类型默认值有效值说明
timestamp_modeKeywordINTERNAL_OSCSYNC_PULSE_IN时间戳模式
multipurpose_io_modeKeywordOFFINPUT_NMEA_UART将多功能 IO 配置为 NMEA UART 输入
sync_pulse_in_polarityKeywordACTIVE_HIGHACTIVE_HIGH / ACTIVE_LOW外部脉冲输入极性
nmea_in_polarityKeywordACTIVE_HIGHACTIVE_HIGH / ACTIVE_LOWNMEA UART 输入极性。高电平有效、空闲低电平、起始位在下降沿之后时用 ACTIVE_HIGH;若使用 RS-232 信号反转则用 ACTIVE_LOW
nmea_baud_rateKeywordBAUD_9600BAUD_9600 / BAUD_115200NMEA UART 输入的期望波特率
nmea_leap_secondsInteger0≥0\geq 0添加到时间戳的闰秒数。对于 Unix Epoch 时间应设置为 0
nmea_ignore_valid_charInteger00 / 1设为 0 表示若有效字符未设置则忽略 NMEA 消息;设为 1 表示无论有效字符如何都使用消息进行时间同步

配置 PPS + NMEA 后,应通过设备的状态接口验证以下几项:

  1. 验证 PPS 信号锁定:locked 状态为 1。若未锁定,检查极性并根据需要更改。
  2. 验证 NMEA 信号锁定:locked 状态为 1。若未锁定,检查极性和波特率。
  3. 验证最后读取的消息:确认其看起来像有效的 $GPRMC 语句。
  4. 验证时间戳已更新:确认时间已更新为合理的 GPS 时间。
  • PPS 信号质量至关重要:脉冲抖动(jitter)应 <100 ns< 100\ \text{ns},否则会直接影响时间戳精度。
  • NMEA 语句延迟:NMEA 语句通过串口传输,存在固有延迟(通常 10 ms∼100 ms10\ \text{ms} \sim 100\ \text{ms}),但传感器会通过 PPS 脉冲进行相位校正,因此不影响最终精度。
  • 接线长度:PPS 信号线应尽量短(<3 m< 3\ \text{m}),避免信号衰减和电磁干扰。
  • 电源隔离:GPS 接收机和传感器应共地,但电源应独立,避免电源噪声耦合。
  • 冷启动问题:GPS 接收机冷启动时可能需要数分钟才能锁定卫星并输出有效的 PPS/NMEA,期间传感器时间戳可能不准确。
  • 示波器验证:配置 GPS 后,建议使用示波器验证信号,确保波特率、极性、电压和消息类型正确。

PTP(Precision Time Protocol,IEEE 1588)是激光雷达最灵活、最常用的时间同步方式。在该模式下,传感器使用一个单调递增的计数器,自启动以来计数秒和纳秒。一旦 PTP 同步事件发生,时间将更新为自 1970 年以来的秒和纳秒。计数器必须始终向前计时;如果新的同步事件带来更靠后的时间,计数器会向前跳变以匹配,或减慢自身速度。

4.2 PTP 底层实现:硬件时间戳 vs 软件时间戳

Section titled “4.2 PTP 底层实现:硬件时间戳 vs 软件时间戳”

4.2.1 硬件时间戳(Hardware Timestamping)

Section titled “4.2.1 硬件时间戳(Hardware Timestamping)”

网卡硬件(MAC 层/PHY 层)在接收或发送 PTP 报文的瞬间直接打上时间戳,完全避开了操作系统内核处理和 CPU 调度的延迟抖动。

  • 精度:纳秒级(<1 μs< 1\ \mu s)
  • 优点:消除 OS 内核网络栈、中断响应、CPU 调度带来的不确定性延迟,是高精度 PTP 的标准做法
  • 缺点:需要支持 PTP 硬件时间戳的专用网卡(如 Intel i210),成本较高

4.2.2 软件时间戳(Software Timestamping)

Section titled “4.2.2 软件时间戳(Software Timestamping)”

PTP 报文进入操作系统内核或用户空间时,由软件进程(CPU)打上时间戳。

  • 精度:微秒到毫秒级
  • 优点:兼容性极强,任何普通网卡都可以运行
  • 缺点:受操作系统负载、中断响应、内核网络栈处理时间影响,抖动较大,精度远不及硬件同步

使用 ethtool 验证网卡硬件时间戳能力:

Terminal window
sudo ethtool -T eno1

对于支持硬件时间戳的网卡(如 Intel i210),输出应包含以下关键能力标志:

Time stamping parameters for eno1:
Capabilities:
hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE)
software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE)
hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE)
software-receive (SOF_TIMESTAMPING_RX_SOFTWARE)
software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE)
PTP Hardware Clock: 0
Hardware Transmit Timestamp Modes:
off (HWTSTAMP_TX_OFF)
on (HWTSTAMP_TX_ON)
Hardware Receive Filter Modes:
none (HWTSTAMP_FILTER_NONE)
all (HWTSTAMP_FILTER_ALL)

如果输出中缺少 hardware-transmit 或 hardware-receive,说明该网卡不支持硬件时间戳,PTP 同步精度将大打折扣。

IEEE 1588 定义了多种 Profile(配置描述),不同的激光雷达产品支持的 Profile 集合不同。以下是实践中常见的几种 PTP Profile 特性对比:

Profile网络层级延迟机制BMCA宽松阈值
defaultL3(UDP/IPv4)E2E开启无
default-relaxedL3(UDP/IPv4)E2E开启1 秒
gptpL2(以太网 MAC)P2P开启无
gptp-relaxedL2(以太网 MAC)P2P开启1 秒
automotive-slaveL2(以太网 MAC)P2P强制关闭无
default-l2-relaxedL2(以太网 MAC)E2E开启1 秒
  • 网络层级:Layer 3(UDP/IPv4)
  • 延迟机制:E2E(End-to-End,端到端)
  • BMCA:开启
  • 多播/单播:仅多播(Multicast),不支持单播协商

优点:兼容性最广的 IEEE 1588v2 模式,几乎所有通用 PTP Master 设备和普通 Linux 主机都支持;基于 UDP/IP 协议,可穿透路由器,支持跨网段的复杂网络拓扑;是最常用的 PTP 配置。

缺点:经过 IP 协议栈(L3),在没有端到端透明时钟(Transparent Clock)交换机支持下,受网络排队和拥塞影响较大,精度略逊于 L2;启动时需要经过 BMCA 选举,同步较慢(可能需要 30–60 秒)。

第三方 Grandmaster 时钟配置要求:

参数值
TransportUDP IPv4
Delay MechanismE2E
Sync ModeTwo-Step
Announce Interval1(每 2 秒发送一次)
Sync Interval0(每 1 秒发送一次)
Delay Request Interval0(每 1 秒发送一次)

4.3.2 default-relaxed(宽松默认配置)

Section titled “4.3.2 default-relaxed(宽松默认配置)”

与 default 完全相同的传输机制,但放宽了时钟跳变的容忍度。当偏移量超过 1 秒时,宽松模式会直接跳变到 Grandmaster 时间,而不是逐步调整。

优点:在不稳定的网络环境中,如果 Master 时钟发生跳变或因 CPU 满载导致 PTP 报文丢失,雷达不会轻易报错或断开同步。

缺点:掩盖了潜在的网络问题,点云时间戳可能出现短暂跳跃,不适合要求严格绝对时间的生产环境。

4.3.3 gptp(Generalized PTP / IEEE 802.1AS)

Section titled “4.3.3 gptp(Generalized PTP / IEEE 802.1AS)”
  • 网络层级:Layer 2(以太网 MAC 层)
  • 延迟机制:P2P(Peer-to-Peer,点到点)
  • Two-Step 假设:强制假设两步法
  • BMCA:开启

gPTP 是 IEEE 802.1AS 标准的通用名称,通过简化支持的选项来提高 PTP 的互操作性,是现代汽车网络和时间敏感网络(TSN)的基础标准。

优点:互操作性好。

缺点:要求极其苛刻——网络链路上的每一个节点(包括所有交换机)都必须在硬件层面支持 gPTP 标准。如果中间有一个普通交换机,P2P 延迟测量就会失败。

4.3.4 gptp-relaxed(宽松 gPTP 配置)

Section titled “4.3.4 gptp-relaxed(宽松 gPTP 配置)”

gptp 的宽松版本,适用于开发调试阶段或网络环境不完全满足 gPTP 严格要求的场景。当偏移量超过 1 秒时,宽松模式会直接跳变到 Grandmaster 时间。

优点:在 gPTP 网络环境不完全稳定的开发阶段,提供更好的鲁棒性。

缺点:掩盖了潜在的网络问题,不适合要求严格绝对时间的生产环境。

4.3.5 automotive-slave(汽车从站模式)

Section titled “4.3.5 automotive-slave(汽车从站模式)”
  • 网络层级:Layer 2(以太网 MAC 层)
  • 延迟机制:P2P(Peer-to-Peer)
  • Two-Step 假设:强制假设两步法
  • BMCA:强制关闭(Disabled)
  • Announce 消息:抑制发送
  • 时间收敛控制器:比 default Profile 快约 8 倍

这是针对车载应用优化的核心配置。Automotive Slave PTP Profile 是 gPTP 的车载特定用例扩展,它禁用了 BMCA 并处理时间步进以加速收敛。

优点:

  • 极速收敛:时间控制回路的收敛速度比 default 模式快约 8 倍,非常适合车辆点火后要求传感器立刻工作的场景。
  • 拓扑稳定:主从关系在架构设计时就已固定,不会因为网络轻微波动导致主节点重新选举。
  • 强制 Slave 模式:可强制雷达为 Slave,忽略 BMCA。

缺点:

  • 缺乏动态容灾能力——如果预设的 Grandmaster 发生故障,雷达不会尝试寻找新的 Master 节点。
  • 网络拓扑必须在设计阶段就确定好主从关系。

4.3.6 default-l2-relaxed(宽松 Layer 2 配置)

Section titled “4.3.6 default-l2-relaxed(宽松 Layer 2 配置)”
  • 网络层级:Layer 2(以太网 MAC 层)
  • 延迟机制:E2E(End-to-End)
  • BMCA:开启
  • 宽松阈值:1 秒时间步进阈值

基于 default Profile,但将网络传输设置为 L2,并具有宽松的 1 秒时间步进阈值。当偏移量超过 1 秒时,宽松模式会直接跳变到 Grandmaster 时间,而不是逐步调整。

优点:兼具 L2 传输的低延迟优势和宽松模式的鲁棒性。

缺点:掩盖了潜在的网络问题,点云时间戳可能出现短暂跳跃,不适合要求严格绝对时间的生产环境。

PTP 参数defaultdefault-relaxedgPTPgPTP-relaxedautomotive-slavedefault-l2-relaxed
grandmaster_identity有效值有效值有效值有效值NA有效值
port_stateSLAVESLAVESLAVESLAVESLAVESLAVE
gm_presenttruetruetruetruefalsetrue
master_offset<1 μs< 1\ \mu s<1 μs< 1\ \mu s<1 μs< 1\ \mu s<1 μs< 1\ \mu s<1 μs< 1\ \mu s<1 μs< 1\ \mu s

重要说明:在 automotive-slave 模式下,gm_present 显示为 false 且 grandmaster_identity 为 NA 是正常行为,因为该模式禁用了 BMCA 和 Announce 消息,雷达不会通过标准 BMCA 流程识别 Grandmaster。

激光雷达通常会响应 PTP 管理消息。LinuxPTP 的 pmc(参见 man pmc)工具可用于查询本地网络上的所有 PTP 设备:

Terminal window
sudo pmc 'get PARENT_DATA_SET' 'get CURRENT_DATA_SET' \
'get PORT_DATA_SET' 'get TIME_STATUS_NP' -i eno2

示例输出:

sending: GET PARENT_DATA_SET
sending: GET CURRENT_DATA_SET
sending: GET PORT_DATA_SET
sending: GET TIME_STATUS_NP
bc0fa7.fffe.c48254-1 seq 0 RESPONSE MANAGEMENT PARENT_DATA_SET
parentPortIdentity ac1f6b.fffe.1db84e-2
parentStats 0
observedParentOffsetScaledLogVariance 0xffff
observedParentClockPhaseChangeRate 0x7fffffff
grandmasterPriority1 128
gm.ClockClass 6
gm.ClockAccuracy 0x21
gm.OffsetScaledLogVariance 0x4e5d
grandmasterPriority2 128
grandmasterIdentity 001747.fffe.700038
bc0fa7.fffe.c48254-1 seq 1 RESPONSE MANAGEMENT CURRENT_DATA_SET
stepsRemoved 2
offsetFromMaster 61355.0
meanPathDelay 117977.0
bc0fa7.fffe.c48254-1 seq 2 RESPONSE MANAGEMENT PORT_DATA_SET
portIdentity bc0fa7.fffe.c48254-1
portState SLAVE
logMinDelayReqInterval 0
peerMeanPathDelay 0
logAnnounceInterval 1
announceReceiptTimeout 3
logSyncInterval 0
delayMechanism 1
logMinPdelayReqInterval 0
versionNumber 2
bc0fa7.fffe.c48254-1 seq 3 RESPONSE MANAGEMENT TIME_STATUS_NP
master_offset 61355
ingress_time 0
cumulativeScaledRateOffset +0.000000000
scaledLastGmPhaseChange 0
gmTimeBaseIndicator 0
lastGmPhaseChange 0x0000'0000000000000000.0000
gmPresent true
gmIdentity 001747.fffe.700038

工程实践中的通用建议:确保激光雷达与 PTP Master 之间最多只经过一个网络交换机。 理想情况下,传感器应直接连接到 PTP Grandmaster,或者使用一个简单的 Layer-2 千兆以太网交换机即可。不推荐使用多个交换机,因为会增加不必要的抖动。

4.6 Linux PTP Grandmaster 完整配置方案

Section titled “4.6 Linux PTP Grandmaster 完整配置方案”

以下方案使用通用的 Linux 工具(linuxptp + chrony)将一台 Linux 主机配置为 PTP Grandmaster,适用于实验室和多传感器台架。

Terminal window
sudo apt update
sudo apt install linuxptp chrony ethtool

需要的软件包:

  • linuxptp:包含 ptp4l(管理硬件并作为 PTP 节点参与)、phc2sys(将以太网控制器的硬件时钟同步到 Linux 系统时钟或共享内存区域)、pmc(查询网络上的 PTP 节点)。
  • chrony:NTP 和 PTP 时间同步守护进程,可配置为同时监听互联网 NTP 时间源和 PTP Master 时钟。
  • ethtool:查询给定以太网接口的硬件和驱动程序功能。

编辑 /etc/linuxptp/ptp4l.conf,在文件末尾添加:

boundary_clock_jbod 1
[eno1]
[eno2]

将上述修改添加到现有文件的末尾。删除或编辑 ptp4l.conf 文件的默认设置部分将导致错误。

创建 systemd drop-in 目录覆盖系统服务文件:

Terminal window
sudo mkdir -p /etc/systemd/system/ptp4l.service.d

创建 /etc/systemd/system/ptp4l.service.d/override.conf:

[Service]
ExecStart=
ExecStart=/usr/sbin/ptp4l -f /etc/linuxptp/ptp4l.conf

重启 ptp4l 服务:

Terminal window
sudo systemctl daemon-reload
sudo systemctl restart ptp4l
sudo systemctl status ptp4l

4.6.3 配置 ptp4l 作为本地 Master 时钟

Section titled “4.6.3 配置 ptp4l 作为本地 Master 时钟”

IEEE-1588 BMCA 将基于多个 Master 选择一个 Grandmaster 时钟。需要配置非默认 clockClass 使其赢得 BMCA。

编辑 /etc/linuxptp/ptp4l.conf,将默认 clockClass 值替换为更低的值(更高优先级):

#clockClass 248
clockClass 128

ptp4l 服务仅广播以太网控制器的 PTP 硬件时钟,而非 Linux 系统时间。

4.6.4 配置 phc2sys 同步系统时钟到 PTP 时钟

Section titled “4.6.4 配置 phc2sys 同步系统时钟到 PTP 时钟”

创建 /etc/systemd/system/phc2sys.service.d/override.conf:

[Service]
ExecStart=
ExecStart=/usr/sbin/phc2sys -w -s CLOCK_REALTIME -c eno2

如果需要从 CLOCK_REALTIME 同步多个接口,则需要运行多个 phc2sys 实例,因为它只接受单个 slave(即 -c)参数。

4.6.5 配置 Chrony 使用 PTP 设置系统时钟

Section titled “4.6.5 配置 Chrony 使用 PTP 设置系统时钟”

创建 /etc/systemd/system/phc2shm.service:

[Unit]
Description=Synchronize PTP hardware clock (PHC) to NTP SHM
Documentation=man:phc2sys
After=ntpdate.service
Requires=ptp4l.service
After=ptp4l.service
[Service]
Type=simple
ExecStart=/usr/sbin/phc2sys -s eno1 -E ntpshm -w
[Install]
WantedBy=multi-user.target

在 /etc/chrony/chrony.conf 中添加 PTP 时间源:

refclock SHM 0 poll 1 refid ptp

重启 chrony 并验证跟踪精度:

Terminal window
sudo systemctl restart chrony
chronyc tracking

示例输出:

Reference ID : 70747000 (ptp)
Stratum : 1
Ref time (UTC) : Thu Mar 14 02:22:58 2019
System time : 0.000000298 seconds slow of NTP time
Last offset : -0.000000579 seconds
RMS offset : 0.001319735 seconds
Frequency : 0.502 ppm slow
Residual freq : -0.028 ppm
Skew : 0.577 ppm
Root delay : 0.000000001 seconds
Root dispersion : 0.000003448 seconds
Update interval : 2.0 seconds
Leap status : Normal
Terminal window
chronyc sources -v

示例输出:

MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
#* ptp 0 1 377 1 +27ns [ +34ns ] +/- 932ns
~- chilipepper.canonical.com 2 6 377 61 -482us[ -482us] +/- 99ms
~- pugot.canonical.com 2 6 377 62 -498us[ -498us] +/- 112ms

关键指标:PTP 时间源显示 +27ns [ +34ns ] +/- 932ns,表明 PTP Grandmaster 正常工作,系统时钟与 PTP 时间的偏差仅约 27 纳秒。如果此误差较大,chrony 将选择 NTP 时间源并将 PTP 时间源标记为无效,这通常表示上游 PTP Grandmaster 或 linuxptp 配置有误。

五、同步信号输出(SYNC_PULSE_OUT)

Section titled “五、同步信号输出(SYNC_PULSE_OUT)”

除了接收外部同步信号,许多激光雷达还能通过多功能 IO 端口输出同步脉冲信号,用于将同步信号传递给其他设备(如相机、其他雷达)。

通过多功能 IO 模式参数可配置以下输出模式:

模式说明
OFF不输出同步脉冲信号
INPUT_NMEA_UART将端口重新配置为输入(详见 PPS + NMEA 章节)
OUTPUT_FROM_INTERNAL_OSC输出与内部时钟同步的脉冲信号
OUTPUT_FROM_SYNC_PULSE_IN输出与外部输入脉冲同步的脉冲信号
OUTPUT_FROM_PTP_1588输出与外部 PTP IEEE 1588 Master 同步的脉冲信号
OUTPUT_FROM_ENCODER_ANGLE输出以用户定义的整数角度为间隔的脉冲信号(旋转式雷达)
参数类型默认值有效值说明
sync_pulse_out_polarityKeywordACTIVE_LOWACTIVE_HIGH / ACTIVE_LOW输出极性
sync_pulse_out_frequencyInteger1≥1\geq 1输出脉冲频率(Hz)
sync_pulse_out_angleInteger3600–360编码器角度模式下的脉冲间隔角度(度)
sync_pulse_out_pulse_widthInteger10≥0\geq 0脉冲宽度(ms),以 1 ms 为增量

注意:如果脉冲宽度 × 输出频率接近 1 秒,输出脉冲将无法正常工作(不会返回到 0)。例如,在 10 Hz 旋转和 10 ms 脉冲宽度下,每转脉冲数存在上限。

相位锁定允许传感器在每转的顶部、十分之一(10 Hz 模式)或二十分之一(20 Hz 模式)秒处一致地通过特定角度。相位锁定控制回路通常以 1000 Hz 运行。

传感器必须首先从外部源进行时间同步,并且必须处于 PTP 或外部脉冲输入时间戳模式,然后才能进入相位锁定。

相位锁定使用激光雷达坐标系中以毫度为单位的角度。角度在此坐标系中从顶部看时逆时针递增:

角度方向
0°0°朝向外部连接器
90°90°从连接器逆时针四分之一转
180°180°连接器对面
270°270°从连接器逆时针四分之三转
参数类型默认值有效值说明
phase_lock_enableBooleanfalsetrue / false是否启用相位锁定
phase_lock_offsetInteger00–360000激光雷达坐标系中的锁定角度(毫度)

以三颗传感器安装在车辆上、需要在相同时刻指向车辆前方为例,可分别将它们锁定在不同角度(如 0°0°、120°120°、240°240°),从而实现多传感器精确相位对齐。

七、传感器间干扰抑制(Inter-sensor Interference Mitigation)

Section titled “七、传感器间干扰抑制(Inter-sensor Interference Mitigation)”

当两颗传感器近距离工作时,它们可能会将彼此的激光脉冲解释为自己的脉冲,产生传感器间串扰。抑制串扰是一个两步过程:

  1. 相位锁定两颗传感器,使其同时指向对方;
  2. 在每颗传感器上设置方位角窗口(azimuth window),使其在指向彼此时不发送数据。

最佳方案:在两颗传感器之间放置物理屏障是抑制串扰的最佳选择。

两颗传感器的连接器都朝向车辆后方时:

步骤 1:通过外部 GPS 或 PTP 时间同步两颗传感器。

步骤 2:相位锁定两颗传感器,使其同时指向对方(如一颗锁定在 90°90°,另一颗锁定在 270°270°)。

步骤 3:设置方位角窗口。假设两颗传感器间距 100 mm,需要设置 282°282° 的方位角窗口,排除 78°78° 的互相指向区域:

  • 传感器 1 的方位角窗口:从 129°129° 逆时针到 51°51°([129000, 51000] 毫度);
  • 传感器 2 的方位角窗口:从 309°309° 逆时针到 231°231°([309000, 231000] 毫度)。
维度内部晶振PPS(纯脉冲)PPS + NMEAPTP defaultPTP default-relaxedPTP gPTPPTP gPTP-relaxedPTP automotive-slavePTP default-l2-relaxed
时钟源内部晶振外部脉冲外部脉冲 + 串口PTP 网络PTP 网络PTP 网络PTP 网络PTP 网络PTP 网络
精度低漂移自由运行纳秒级纳秒级<1 μs< 1\ \mu s<1 μs< 1\ \mu s<1 μs< 1\ \mu s<1 μs< 1\ \mu s<1 μs< 1\ \mu s<1 μs< 1\ \mu s
绝对时间无无有(UTC)有有有有有有
网络依赖无无无(串口)有(L3 UDP)有(L3 UDP)有(L2)有(L2)有(L2)有(L2)
启动延迟零即时GPS 冷启动数分钟30–60 秒30–60 秒30–60 秒30–60 秒极快(8×)30–60 秒
跨网段N/AN/AN/A支持支持不支持不支持不支持不支持
硬件要求无PPS 源GPS + PPS 源硬件时间戳网卡硬件时间戳网卡gPTP 交换机gPTP 交换机gPTP 交换机普通交换机
容灾能力N/A取决于外部源取决于 GPSBMCA 重选BMCA 重选BMCA 重选BMCA 重选无BMCA 重选
适用场景单传感器测试高精度外部时钟GPS 授时实验室/机器人不稳定网络开发AVB/TSN 网络gPTP 开发调试自动驾驶量产开发调试
精度(从高到低):
PPS + NMEA ≈ PPS > PTP (Hardware TS) >> PTP (Software TS) >> Internal
纳秒级 纳秒级 < 1 μs 微秒~毫秒级 低漂移自由运行
启动速度(从快到慢):
Internal ≈ PPS > automotive-slave >> 其他所有 PTP Profile
零延迟 即时 ~数秒 30–60 秒
是否需要多传感器时间融合?
├── 否 → 内部晶振模式即可(零配置,插电即用)
└── 是 → 是否有物理接线条件(PPS/GPS)?
├── 是 → 是否需要绝对 UTC 时间?
│ ├── 是 → PPS + NMEA(GPS 授时,纳秒级精度)
│ └── 否 → PPS(纯脉冲同步,纳秒级精度)
└── 否 → 是否为车载/量产环境?
├── 是 → 是否有全链路 gPTP/TSN 交换机?
│ ├── 是 → PTP automotive-slave(极速收敛,首选)
│ └── 否 → PTP default + 硬件时间戳网卡
└── 否 → 网络环境是否稳定?
├── 是 → PTP default(最通用,兼容性最广)
└── 否 → PTP default-relaxed 或 default-l2-relaxed
应用场景推荐方案理由
单传感器快速测试内部晶振零配置,插电即用
实验室多传感器台架PTP default + Intel i210兼容性最广,跨网段支持
机器人平台PTP default 或 gPTP取决于机器人网络架构
自动驾驶研发PTP gPTP + gPTP 交换机高精度,TSN 兼容
自动驾驶量产PTP automotive-slave极速收敛,拓扑稳定
车载 GPS 授时PPS + NMEA绝对 UTC 时间,纳秒级精度
高精度标定PPS + NMEA 或 PTP + 硬件时间戳最高精度要求
多雷达 + 相机融合PTP automotive-slave + phc2sys + 相位锁定系统级时间统一 + 相位对齐
开发调试环境PTP default-relaxed 或 default-l2-relaxed宽松阈值,鲁棒性好
症状可能原因解决方案
port_state 停留在 LISTENINGMaster 配置参数不匹配检查 Master 的 Announce/Sync 间隔、Delay 机制、Two-Step 设置
gm_present 为 false(非 automotive-slave)未检测到 PTP Master检查网络连接、交换机配置、Master 是否运行
master_offset 持续增大网卡不支持硬件时间戳更换支持硬件时间戳的网卡(如 Intel i210)
同步后时间戳跳跃Profile 的宽松阈值触发检查网络稳定性,考虑使用非 relaxed Profile
chrony 选择 NTP 而非 PTPPTP Grandmaster 配置有误检查 PTP Grandmaster 配置和 linuxptp 配置
症状可能原因解决方案
PPS 未锁定PPS 信号未到达传感器检查接线、信号电平、脉冲频率、极性
NMEA 未锁定NMEA 信号未正确接收检查极性和波特率并根据需要更改
最后读取的消息无效NMEA 语句格式不正确确认 GPS 输出标准 $GPRMC 语句
时间戳不准确闰秒参数设置错误确认当前 TAI 闰秒值(目前为 37)
间歇性锁定PPS 信号质量差使用更高精度的时钟源,缩短接线长度,使用示波器验证
GPS 冷启动延迟GPS 接收机未锁定卫星等待 GPS 冷启动完成(通常 1–5 分钟)
症状可能原因解决方案
相位锁定偏移告警相位锁定偏移误差超过阈值检查时间同步是否正常,检查电机运行状态
相位锁定失败相位锁定控制多次未能实现锁定检查时间同步源与电机,必要时联系设备厂商
启动期锁定失败启动期间相位锁定失败确认时间同步源正常工作,检查时间戳模式是否为 PTP 或 PPS
传感器间串扰两颗传感器近距离工作使用相位锁定 + 方位角窗口,或放置物理屏障

常用的网络调试工具:

  • ethtool:查询链路层统计信息和配置。
  • netstat:查询 IP 层统计信息。
  • iPerf/iPerf3:验证网络吞吐量和丢包率。

iPerf 测试示例:

Terminal window
# 接收端
iperf --server --port 5300
# 发送端(模拟 300Mbps UDP 流量,20KB 包大小)
iperf --client 192.168.88.248 --port 5300 --udp --bitrate 300M --length 20K

激光雷达的时间同步方案可以归纳为以下几个要点:

  1. 三种典型时间戳模式(内部晶振、外部脉冲输入、PTP)覆盖从零配置到纳秒级精度的全场景需求。
  2. 多种 PTP Profile(default、default-relaxed、gptp、gptp-relaxed、automotive-slave、default-l2-relaxed)提供从通用网络到车载量产的全链路覆盖。
  3. automotive-slave 模式是车载应用的差异化选择——加速收敛 + 强制 Slave + 抑制 Announce。
  4. PPS + NMEA 提供最高精度的 GPS/GNSS 授时方案,支持标准 $GPRMC 语句。
  5. 同步信号输出支持将同步信号传递给相机、其他雷达等下游设备。
  6. 相位锁定以高频控制回路运行,支持多传感器精确相位对齐。
  7. 传感器间干扰抑制通过相位锁定 + 方位角窗口实现。
  8. 硬件时间戳网卡是 PTP 高精度同步的必要条件,推荐 Intel i210 等支持 PHC 的网卡。
  9. ptp4l + phc2sys + chrony 联合方案可实现系统级亚微秒时间精度(chrony 跟踪精度可达约 +27 ns+27\ \text{ns})。