2.5. Livox设备时间同步
2.5.1. 时间同步说明
Livox设备支持3种时间同步方式:
PTP:IEEE 1588v2.0 PTP 网络协议同步;
GPS:秒脉冲+GPRMC时间数据,组成GPS时间同步方式;
PPS:秒脉冲同步,需要上层应用程序通过其他途径(如:uart)获取每个脉冲的时间信息,并修正点云时间。目前仅LiDAR支持这种同步方式,且由于用法较为复杂,不推荐用户使用这种方式进行LiDAR时间的同步。
不同设备支持的同步方式:
设备 |
支持的同步方式 |
Livox LiDAR |
1.PTP v2 2.GPS 3.PPS(不推荐PPS) |
Livox Hub |
1.PTP v2 2.GPS |
2.5.1.1. 同步原理
2.5.1.1.1. PTP时间同步原理
同步过程使用IEEE 1588v2.0 PTP的Delay request-response机制(two steps),Livox设备作为slave端,和master时钟设备进行ptp时间同步。
master和slave时钟通过Sync、Follow_Up、Delay_Req、Delay_Resp这几个数据包的交互,得到t1、t2、t3、t4时间,通过如下计算得到传输路径延迟和两时钟的偏移:
传输路径延时:
时间偏移:
2.5.1.1.2. GPS时间同步原理
GPS时钟源的PPS端口每秒发送一次硬件脉冲(PPS信号),随后数据端口发送一次对应这个脉冲上升沿的时间信息(GPRMC格式)。
Livox设备接收到PPS信号上升沿,并由GPRMC数据解析出正确的时间信息后,会设置点云时间为GPS时间,并保持此时间基准持续累加,来实现和GPS设备的时间同步。
Livox Hub可以直接接收RS485电平的GPRMC信号;
Livox LiDAR无法直接接收GPRMC信号,需要将GPRMC数据端口接入PC,然后通过sdk协议发送给雷达;
PPS信号和GPRMC信号的时序要求:
时间 |
描述 |
有效范围 |
推荐值 |
t0 |
相邻两次秒脉冲上升沿的间隔 |
900 ms ~ 1100ms |
1000 ms |
t1 |
秒脉冲的高电平时间 |
5 ms ~ 900 ms |
10 ms ~ 200 ms |
t2 |
GPRMC的传输时间(波特率:9600bps) |
≈ 70 ms |
70 ms |
t3 |
GPRMC数据开始发送相对于脉冲上升沿的延迟 |
0 ms ~ 900 ms |
0 ms ~ 430 ms |
2.5.1.2. 应用场景
PTP:
在没有GPS和PPS硬件信号的情况下,PTP v2可用于Livox LiDAR/Hub和其他设备之间的时间同步。这种方法所需要的外部硬件支持最少,只需要在整个网络中有一个master时钟设备即可。
GPS:
Livox Hub接入多个LiDAR时可以使用这种同步方式,Livox Hub需要接入GPS接收器的PPS信号,以及GPRMC格式的时间信号,此时LiDAR点云时间会自动修正成GPS时间。
Livox LiDAR也可以使用GPS同步,但需要将GPRMC信号接入PC,然后通过SDK协议将时间数据发送给LiDAR。
2.5.2. 使用方法
2.5.2.1. PTP
当Livox LiDAR或者Hub连接到有ptp master时钟的网络中时,设备会自动同步自己的时间到主时钟。
第一步:检查网络中的master时钟是否正常:
PC上配置主时钟的方法可参考附录 配置PTP主时钟
如果网络中有Sync、Follow_Up这两个数据,则说明存在PTP master时钟源,且正常工作:
第二步:连接Livox LiDAR/Hub
通过网线正常连接Livox LiDAR/Hub即可,无需额外接线。
第三步:如何查看设备在使用PTP 1588同步
1、通过查看点云数据包头中的timestamp_type数据, 点云数据协议
如果timestamp_type为1,则说明设备正在进行PTP时间同步:
timestamp_type |
data_type |
时间类型 |
---|---|---|
1 |
uint64_t |
纳秒(ns) |
2、或者在Livox Viewer上位机中,查看Settings选项,下图的Sync State表明Hub在使用ptp 1588同步。
备注
PTP同步优先级最高,当PTP、PPS或GPS同时可用时,会优先使用PTP网络同步;
不支持具有多个主时钟的网络环境;
百纳秒精度;
2.5.2.2. GPS
为了兼容其他厂商的LiDAR硬件,Livox设备也支持GPS时间同步。
由于Livox有不同种类的硬件(LiDAR/Hub),在使用GPS同步时,可以将硬件接口分为3类:
使用Livox Hub;
使用Livox Converter 1.0连接的LiDAR(如:Mid-40、Mid-100);
使用Livox Converter 2.0连接的LiDAR(如:Tele-15、Horizon);
下面将分别介绍如何使用这3种接口进行GPS时间同步。
2.5.2.2.1. Livox Hub
硬件连接
如果GPS模块的时间信号和PPS信号是RS485电平,直接将线接入Hub的GPS时间同步口(GPS sync port)即可。
如果GPS模块的时间信号和PPS信号是TTL电平,则需要进行如下的电平转换后,才能将信号接入Hub的GPS时间同步口(GPS sync port)。
备注
Hub使用GPS同步时,不需要进行SDK软件的配置。
2.5.2.2.2. Livox Converter 1.0
目前默认使用Livox Converter 1.0的设备有:
Mid-40
Mid-100
硬件连接
将GPS模块的时间信号(GPRMC)通过TTL转usb模块接入PC,PPS信号接入LiDAR转接盒同步口(Sync Port)。
如果GPS模块输出的PPS为RS485电平的信号,则上图可以省略TTL转485模块。
软件配置
由于需要PC接收GPRMC数据,然后通过SDK协议发送给LiDAR,对产品的固件版本有如下要求:
Mid firmware version: >= v03.07.0000
SDK version >= v2.1.0
使用ROS driver的情况
1、按照上面的介绍正确连接硬件;
2、查看接入PC的usb模块的端口名称,例如 /dev/ttyUSB0
,添加到
livox_lidar_config.json
文件中“timesync_config”的“device_name”,然后将“enable_timesync”配置为
true
,波特率“baudrate_index”可以参考 Livox_ros_driver 来配置具体数值
"timesync_config": {
"enable_timesync": true,
"device_name": "/dev/ttyUSB0",
"comm_device_type": 0,
"baudrate_index": 2,
"parity_index": 0
}
3、运行launch file;
只使用SDK的情况
下面的链接是实现GPRMC数据接收和解析,并通过SDK协议发送给LiDAR的程序:
2.5.2.2.3. Livox Converter 2.0
目前包装盒中标配使用Livox Converter 2.0的设备有:
Horizon
Tele-15
硬件连接
将GPS模块的时间信号(GPRMC)通过TTL转usb模块接入PC,PPS信号接入LiDAR转接盒同步口(Sync Port)。
软件配置
由于需要PC接收GPRMC数据,然后通过SDK协议发送给LiDAR,对产品的固件版本有如下要求:
Horizon firmware version: >= v06.06.0000
Tele-15 firmware version: >= v07.09.0000
SDK version >= v2.1.0
使用ROS driver的情况
1、按照上面的介绍正确连接硬件;
2、查看接入PC的usb模块的端口名称,例如 /dev/ttyUSB0
,添加到
livox_lidar_config.json
文件中“timesync_config”的“device_name”,然后将“enable_timesync”配置为
true
,波特率“baudrate_index”可以参考
Livox_ros_driver 来配置具体数值
"timesync_config": {
"enable_timesync": true,
"device_name": "/dev/ttyUSB0",
"comm_device_type": 0,
"baudrate_index": 2,
"parity_index": 0
}
3、运行launch file;
只使用SDK的情况
下面的链接是实现GPRMC数据接收和解析,并通过SDK协议发送给LiDAR的程序:
2.5.2.3. 状态检查
1、通过查看点云数据包头中的timestamp_type数据,点云数据协议
如果timestamp_type为3,则说明设备正在进行GPS时间同步:
timestamp_type |
data_type |
时间类型 |
---|---|---|
3 |
UTC(8 Bytes) |
UTC时间格式 |
UTC时间格式:
2、或者在Livox Viewer上位机中,查看Settings选项,下图的Sync State表明Hub在使用GPS同步。
备注
通常情况下,GPS模块接收到GPS信号,才能正常输出PPS信号和时间信号。在使用时,需要确保GPS信号是稳定的;
目前时间信号只支持GPRMC/GNRMC这两种格式;
1 us级别精度
2.5.2.4. PPS
由于这个用法较为复杂,不建议使用这种同步方式
Livox LiDAR每次接收到PPS信号的上升沿后,会将当前时刻的点云时间置为0,然后重新开始计时直到下一个PPS脉冲到来。我们可以利用这个特性,来实现PPS脉冲对LiDAR时间的同步。
下面是实现这个流程的伪代码:
// PPS Time Synchronization
static uint64_t lidar_time_last;
static uint64_t lidar_time_real;
// 1. Read the PPS rising edge time, Unit is nanosecond.
uint64_t pps_time_ns = get_pps_rising_nsecond();
// 2. Read LiDAR point time, Unit is nanosecond.
uint64_t lidar_time = get_lidar_pack_time();
// 3. Update real time.
if (lidar_time < lidar_time_last)
{
//LiDAR time jump indicates the generation of PPS rising edge.
lidar_time_real = pps_time_ns + lidar_time%(1000000000);
}
else
{
lidar_time_real += lidar_time - lidar_time_last;
}
//Update history
lidar_time_last = lidar_time;
备注
用戶需要通过其他方式获得PPS上升沿的时间信息,对应上述代码中的get_pps_rising_nsecond()接口。
2.5.3. 附录
2.5.3.1. 配置PTP主时钟
下载,编译和安装:
git clone http://git.code.sf.net/p/linuxptp/code linuxptp
cd linuxptp
make
sudo make install
如果要让ptp4l正常工作,需要系统的Linux kernel version 3.0或者更新版本。通过下面的指令来检查网卡是否支持软件/硬件时间戳功能(如:查询网卡 ‘eth0’ 的状态)。
ethtool -T eth0
下图的例子中,表明eth0网卡支持硬件时间戳。
下图的例子中wlan0网卡不支持硬件和软件时间戳,linuxptp/ptp4l不能正常工作。
运行如下指令,开启ptp4l的master时钟功能:
sudo ptp4l -i eth0 -l 6 -m
如果网络中出现 Sync Message
数据,说明ptp4l程序的master时钟功能正常运行:
可以使用如下命令让系统时间和PTP硬件时钟同步:
如果需要更多相关的信息, 请参考 phc2sys链接
sudo phc2sys -c eth0 -s CLOCK_REALTIME -O 0
完成以上步骤,即可通过ptp4l实现雷达时间和PC本地系统时间的同步。