Ouster激光雷达使用PTP时间同步

本文介绍了如何在Ubuntu18.04系统上利用LinuxPTP服务和PTP4l、phc2sys工具,通过Inteli210以太网接口或TrimbleGM100GPS进行时间同步,特别是针对OusterOS1-128激光雷达的时间戳校准。通过检查网卡的PTP支持,配置相关服务和启动脚本,以及调整Ouster驱动的timestamp_mode,实现了精确的时间同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IEEE1588(the Precision Time Protocol 简称为 PTP )全称是“网络测量和控制系统的精密时钟同步协议标准”,可以使用ubuntu中的网卡作为时间的master也可以外接一个精准的时钟,来实现传感器的时间同步。

Ouster官方参考链接
激光雷达与系统PTP时间同步

+-------------------------------------+
| Ubuntu 18.04 System                 |
| * 2x Intel i210 Ethernet Interfaces |
| * Linux PTP service                 |
|                                     |
|      eno1                 eno2      |
+-------+---------------------+-------+
        |                     |
+-------+-------+    +--------+------+
| Trimble GM100 |    |               + +
|  GPS -> PTP   |    |  Ouster OS1   | |
|  grandmaster  |    |               | |
|  (optional)   |    |               | |
+---------------+    +---------------- |
                      +--------------- +

本篇博客主要介绍单独使用一个NUC连接Ouster OS1-128激光雷达来实现PTP时间同步。

准备工作

安装linuxptp,chrony,ethtool等工具

sudo apt update

sudo apt install linuxptp chrony ethtool

确保以太网接口支持PTP功能

# 查看网络接口
ifconfig
# 查看是否有PTP功能
sudo ethtool -T YOUR_INTERFACE

出现类似如下结果,则证明支持PTP功能(PTP Hardware Clock: 0)

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)

出现下述结果,则证明不支持:(PTP Hardware Clock: none)

Time stamping parameters for enxf8e43bb4ab3d:
Capabilities:
	software-transmit     (SOF_TIMESTAMPING_TX_SOFTWARE)
	software-receive      (SOF_TIMESTAMPING_RX_SOFTWARE)
	software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
PTP Hardware Clock: none
Hardware Transmit Timestamp Modes: none
Hardware Receive Filter Modes: none

若支持PTP功能,则继续下述操作,否则需要外接一个外部的钟。

PTP4l

  • 修改/etc/linuxptp/ptp4l.conf 文件中内容。
clockClass 128
boundary_clock_jbod 1
[YOUR_INTERFACE] <- (这个放到文档中的最后,如我的为[enp86s0]
  • 创建一个文件夹
sudo mkdir -p /etc/systemd/system/ptp4l.service.d
  • 在文件夹中新建下述文件,并添加内容
sudo touch /etc/systemd/system/ptp4l.service.d/override.conf
sudo gedit /etc/systemd/system/ptp4l.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/sbin/ptp4l -f /etc/linuxptp/ptp4l.conf

phc2sys

  • 创建一个文件夹
sudo mkdir -p /etc/systemd/system/phc2sys.service.d
  • 在文件夹中新建下述文件,并添加内容
sudo touch  /etc/systemd/system/phc2sys.service.d/override.conf

sudo gedit /etc/systemd/system/phc2sys.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/sbin/phc2sys -w -s CLOCK_REALTIME -c YOUR_INTERFACE(你的以太网接口名字)

修改此 /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 YOUR_INTERFACE -E ntpshm -w 
[Install]
WantedBy=multi-user.target

注:YOUR_INTERFACE为你的以太网接口名字

启动各项服务

sudo systemctl daemon-reload
sudo systemctl restart ptp4l
sudo systemctl restart phc2sys
sudo systemctl restart phc2shm

启动ouster驱动

修改ouster驱动中的Launch文件中内容timestamp_mode (string) - Method used to timestamp measurements [TIME_FROM_INTERNAL_OSC, TIME_FROM_SYNC_PULSE_IN, TIME_FROM_PTP_1588]为TIME_FROM_PTP_1588。

  • 启动ouster
source devel/setup.bash
roslaunch ouster_ros ouster_XXX.launch

接受对应的topic 并查看时间戳

Ouster_IMU: 1769 1683895566.722931
Ouster_Lidar: 177 1683895566.733269
Ouster_IMU: 1770 1683895566.737509
Ouster_IMU: 1771 1683895566.742845
Ouster_IMU: 1772 1683895566.752959
Ouster_IMU: 1773 1683895566.763221
Ouster_IMU: 1774 1683895566.772937
Ouster_IMU: 1775 1683895566.783624

注:需要读者自己写一个小程序

### 配置激光雷达进行时间同步 为了在Windows系统上配置激光雷达进行时间同步,需关注特定型号的激光雷达及其支持工具。对于Ouster激光雷达而言,虽然提及的小软件`OSLiDAR_Discovery.exe`主要用于获取设备IP地址[^1],并未涉及时间同步的具体操作。 然而,针对时间同步部分,通常情况下,如果涉及到时钟同步功能的应用场景,用户应当注意设置选项中的相关参数调整。这些参数对于需要使用时钟同步功能的情况至关重要;而对于无需此功能的用户,则保持默认即可[^2]。具体到实施层面: #### NTP服务器配置 多数现代激光雷达设备允许通过网络时间协议(NTP)来实现高精度的时间同步。这一般是在设备管理界面或初始化脚本中完成。下面是一个简单的Python脚本例子用于配置NTP服务,适用于那些可以通过命令行接口接受指令的激光雷达设备: ```python import subprocess def configure_ntp(ntp_server='pool.ntp.org'): try: command = f'ntpdate {ntp_server}' result = subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) print(f"NTP synchronization successful:\n{result.stdout.decode()}") except Exception as e: print(f"Failed to synchronize with NTP server: {e}") configure_ntp() ``` 该脚本尝试联系指定的NTP服务器更新本地系统的日期和时间。请注意实际应用时可能需要根据具体的激光雷达API文档修改上述代码逻辑以适配不同品牌或型号的要求。 #### 使用制造商提供的专用工具 某些品牌的激光雷达可能会提供专门设计用来简化安装过程以及高级特性配置(如时间同步)的图形化应用程序或是CLI(Command Line Interface),例如Velodyne Lidar公司为其产品系列提供了复杂的VeloView软件包,尽管它主要面向于数据可视化而非单纯的时间同步任务[^4]。因此建议查阅所使用激光雷达标配软件手册寻找是否有内置的时间同步解决方案。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓晨的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值