文章标签:
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工具:
- 填入雷达IP,连接雷达;
- 切换到
Time Sync页面; PTP Profile选择1588v2;- 保存配置,雷达会重启时间同步模块。
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 验证同步状态
- 在
LidarUtilities的Time Sync页面,PTP Status状态变为tracking,代表雷达已经成功跟踪PTP主时钟,时间同步完成。 - 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依赖包说明:
build‑essential:gcc/g++编译器,C++编译必备cmake:编译构建工具libboost‑all‑dev:C++工具库,禾赛SDK大量使用libyaml‑cpp‑dev:解析yaml配置文件libpcl‑dev:PCL点云库libpcap‑dev:pcap离线回放、抓包库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/src4.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雷达IPudp_port:2368host_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.py5 其他方式启动驱动,Rviz查看点云
以后也无需再进入10.12文件夹再执行命令,只需要执行下面命令就可以打开Rviz,不过记得修改文件名。
# 加载ROS2系统环境 source /opt/ros/humble/setup.bash # 加载自己工作空间驱动环境 source ~/10.12/install/setup.bash # 启动禾赛驱动 ros2 launch hesai_ros_driver start.py6 常见踩坑总结
- VMware虚拟机PTP只能软件时间戳:
ptp4l命令必须加‑S,虚拟网卡不支持硬件时间戳。 - PTP输出时间是UTC时间,北京时间需要+8小时,不属于故障。
- 下载Github zip压缩包,文件夹会带
‑master后缀,务必重命名,避免CMake缓存冲突编译报错。 - 优先网络排查:先
ping雷达、tcpdump抓2368端口UDP确认收到数据包,再调试上层ROS驱动。 ‑‑symlink‑install模式下修改yaml配置直接生效,不用重复colcon build。