☰
VMware Ubuntu禾赛激光雷达:PTP(1588v2)时间同步 + ROS2 Humble Rviz点云显示
2026/10/14 10:36:14 网站建设 项目流程

文章标签:Ubuntu、VMware、禾赛JT128、PTP1588v2、ROS2 Humble、Rviz2摘要:本文记录在VMware虚拟机Ubuntu22.02环境下,禾赛激光雷达1588‑v2(PTP)时间同步完整实操流程;同时记录ROS2 Humble环境搭建、禾赛ROS2驱动编译配置、Rviz查看点云全过程,包含GitHub拉取代码网络踩坑、工作空间目录规范、配置文件修改等实操避坑。

前言

激光雷达除了网络连通之外,时间同步是非常关键的一环。多传感器融合时,需要雷达点云拥有准确时间戳,本文使用linuxptp实现1588‑v2 PTP时间同步,把Ubuntu虚拟机设置为PTP主时钟,给禾赛JT128雷达授时。 同时完整记录ROS2 Humble安装、禾赛SDK&ROS2驱动编译、Rviz查看点云全部实操,记录实际踩坑点,方便大家复现。

测试环境: 虚拟机系统:Ubuntu22.02

ROS版本:ROS2 Humble

雷达型号:禾赛JT128

雷达IP:192.168.1.201

对接雷达网卡:ens33(桥接网卡)

1 PTP 1588‑v2时间同步配置

方案:虚拟机Ubuntu作为PTP主时钟(Grand Master),雷达作为从设备同步虚拟机时间;使用UDP/IP传输模式。

1.1 雷达端配置PTP参数

打开PandarView2→LidarUtilities工具:

  1. 填入雷达IP,连接雷达;
  2. 切换到Time Sync页面;
  3. PTP Profile选择1588v2;
  4. 保存配置,雷达会重启时间同步模块。

1.2 Ubuntu安装linuxptp工具

# 安装ptp工具 sudo apt-get install linuxptp 安装ethtool,查看网卡PTP硬件时间戳能力 sudo apt-get install ethtool

查看网卡是否支持硬件时间戳:

sudo ethtool -T ens33

💡重要提示:VMware虚拟机虚拟网卡不支持硬件时间戳(Hardware Clock: none),只能使用软件时间戳模式。

1.3 启动PTP主时钟(UDP/IP模式)

-4代表UDP/IP模式;‑i ens33指定对接雷达网卡;‑S即--software‑timestamping强制软件时间戳(虚拟机必须加这个参数)不加该参数ptp4l会直接报错无法启动,虚拟机该现象属于正常;‑m打印运行日志。

sudo ptp4l -m -4 -i ens33 -S

看到日志输出assuming the grand master role,代表本机已经成为PTP主时钟。

⚠️注意:ptp4l命令是前台运行,关闭终端就会停止授时;

1.4 验证同步状态

  1. 在LidarUtilities的Time Sync页面,PTP Status状态变为tracking,代表雷达已经成功跟踪PTP主时钟,时间同步完成。
  2. PandarView2显示雷达时间戳为UTC时间,国内东八区需要+8小时才等于本地北京时间,不是故障。

2 ROS2 Humble安装

本文使用鱼香ROS一键安装脚本,适合国内网络环境。

鱼香ROS - 杭州鱼香机器人科技有限公司

运行脚本后,选择一键安装ROS2 Humble。

安装完成后验证版本:

source /opt/ros/humble/setup.bash echo $ROS_DISTRO

输出humble代表ROS2安装成功。

3 编译禾赛HesaiLidar_SDK_2.0(底层SDK)

3.1 安装依赖

首先需要安装的是禾赛的SDK,可以去github下载相应的SDK包

下载完成后,进入下图片的文件夹内跟着操作

克隆这步可以省略,因为刚刚已经下载,然后开始第二步,安装依赖

sudo apt update sudo apt install -y build-essential cmake libboost-all-dev libyaml-cpp-dev libpcl-dev libpcap-dev openssl

依赖包说明:

  1. build‑essential:gcc/g++编译器,C++编译必备
  2. cmake:编译构建工具
  3. libboost‑all‑dev:C++工具库,禾赛SDK大量使用
  4. libyaml‑cpp‑dev:解析yaml配置文件
  5. libpcl‑dev:PCL点云库
  6. libpcap‑dev:pcap离线回放、抓包库
  7. openssl:加密通讯依赖

3.2 SDK编译

进入SDK源码根目录执行:

mkdir -p build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc)

对于有图形界面的可以跟着我这样操作,直接打开文件夹在终端打开即可,没有的就按照他的提示进入SDK源目录中。注意这里面的是文件夹,不是压缩包,刚刚下载的是压缩包需解压。

4 搭建ROS2工作空间,编译HesaiLidar_ROS_2.0驱动

4.1 创建ROS2工作空间目录

进入github中禾赛的页面,进入ROS_2里面,不过他没有中文文档,开个浏览器翻译就行。这个安装ROS_2的安装过程和禾赛官网操作指南里面的Rviz查看点云一样,而且目前我只是想看Rviz中的点云图,所以就跟着操作指南里面进行操作即可,github里面有部分是我暂时用不到的,后续用到再进行更新,好下面就开始一步一步操作即可

前面两步都是安装工具,第三步需要注意,要在虚拟机中创建一个新的文件夹,然后在里面新建一个src文件夹放源码。

示例工作空间根目录:~/10.12

ROS2规范:源码包必须放在src文件夹内部。

也可以直接在终端用命令创建文件夹

mkdir -p ~/10.12/src cd ~/10.12/src

4.2 获取源码

进入src目录,选择在终端打开执行克隆命令,不过因为网络原因一般下载会出现失败,就会出现下图情况,不过别担心。

你可以直接去他们github官网下载ROS2.0的包

下载完成后同样解压成文件夹,不过注意的是一般情况下ROS文件夹如下:

而我们解压出来的文件夹是HesaiLidar_ROS_2.0-master

这个时候我们就需要根据ROS空间结构把他移动到src目录下并且对他重命名

重命名完成后需要进入该文件夹对雷达的配置文件进行修改匹配

4.3 修改雷达yaml配置文件

yaml文件中的配置根据雷达和自己的要求进行对应的修改,改完以后记得进行保存操作。

进入src/HesaiLidar_ROS_2.0/config/,编辑config.yaml修改关键参数:

  • source_type:1(1=实时雷达在线)
  • device_ip_address: 192.168.1.201雷达IP
  • udp_port:2368
  • host_ip_address:192.168.1.100虚拟机桥接网卡IP(在需要单播时设置,广播情况下为空即可)

4.4 colcon编译工作空间

回到工作空间根目录

执行终端命令

cd ~/10.12

或者直接进入即可

colcon build --symlink-install # 加载工作空间环境 . install/local_setup.bash

--symlink‑install软链接模式,修改yaml配置文件不需要重新编译。

然后等它加载完成

完成以后在运行下方代码就可以打开Rviz查看当前雷达的点云图

ros2 launch hesai_ros_driver start.py

5 其他方式启动驱动,Rviz查看点云

以后也无需再进入10.12文件夹再执行命令,只需要执行下面命令就可以打开Rviz,不过记得修改文件名。

# 加载ROS2系统环境 source /opt/ros/humble/setup.bash # 加载自己工作空间驱动环境 source ~/10.12/install/setup.bash # 启动禾赛驱动 ros2 launch hesai_ros_driver start.py

6 常见踩坑总结

  1. VMware虚拟机PTP只能软件时间戳:ptp4l命令必须加‑S,虚拟网卡不支持硬件时间戳。
  2. PTP输出时间是UTC时间,北京时间需要+8小时,不属于故障。
  3. 下载Github zip压缩包,文件夹会带‑master后缀,务必重命名,避免CMake缓存冲突编译报错。
  4. 优先网络排查:先ping雷达、tcpdump抓2368端口UDP确认收到数据包,再调试上层ROS驱动。
  5. ‑‑symlink‑install模式下修改yaml配置直接生效,不用重复colcon build。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询