Velodyne VLP-16 激光雷达 ROS2 运行与问题排查全记录 (Ubuntu 24.10)
Velodyne VLP-16 激光雷达 ROS2 运行与问题排查全记录 (Ubuntu 24.10)
Ubuntu 24.10 没有看见有前辈配置教程,小辈斗胆试一试😄;
本文档详细记录了在 Ubuntu 24.10 和 ROS2 Jazzy 环境下,成功运行 Velodyne VLP-16 激光雷达并解决一系列连接与配置问题的全过程。
小白建议使用 Cursor 等 AI agent 自动帮你配置完成即可;
然后输出一个运行参数的 markdown文档,方便以后自己直接输出命令;
几个前辈配置雷达的文档:值得看一看
ROS2 下如何使用veloodyne激光雷达
SLAM实操入门(六):连接Velodyne的16线激光雷达并可视化
前期准备:下载与编译 Velodyne ROS2 驱动
1 .下载 Velodyne ROS 2 驱动程序
- 目标: 获取 Velodyne VLP-16 激光雷达的 ROS 2 驱动程序。
- 下载地址: GitHub - ros-drivers/velodyne
- 步骤:
-
打开终端,进入你的 ROS 2 工作空间的
src目录:cd ~/velodyne_ws/src -
克隆 Velodyne 驱动仓库:
git clone https://github.com/ros-drivers/velodyne.git -
确认仓库已正确克隆,检查
src/velodyne目录是否存在:ls
-
2 .编译驱动程序
- 目标: 在 ROS 2 工作空间中编译 Velodyne 驱动程序,确保所有节点和依赖正确生成。
- 步骤:
-
返回工作空间根目录:
cd ~/velodyne_ws -
安装依赖(确保所有必要依赖已安装):
rosdep install --from-paths src --ignore-src -r -y注:需要提前配置好
rosdep,如果未配置,可参考 ROS 2 官方文档初始化rosdep。 -
编译工作空间:
colcon build -
编译完成后,加载环境变量:
source install/setup.bash -
验证编译结果,检查是否生成了必要的节点:
ros2 pkg list | grep velodyne预期输出应包含
velodyne_driver、velodyne_pointcloud等包。
-
注意: 如果编译过程中遇到依赖缺失或错误,请根据错误提示使用
apt或pip安装缺失的库,并重新运行colcon build。
最终正确运行步骤 ✅
硬件与网络配置
- 物理连接: 使用网线将 VLP-16 雷达与电脑连接,并确保雷达已通电。
- 设置电脑静态 IP:
- 进入系统
设置>网络>有线连接>⚙️>IPv4。 - 方法设置为
手动。 - 地址:
192.168.1.100 - 子网掩码:
255.255.255.0 - 网关: 留空
- 点击
应用并重启有线连接(开关一次)。
- 进入系统
- 断开 WiFi: 为避免网络路由冲突,请暂时关闭电脑的 WiFi 连接。

2. 启动节点与可视化
终端 A: 启动雷达驱动
# 1. 进入工作空间
cd ~/velodyne_ws
# 2. 加载环境配置文件
source install/setup.bash
# 3. 启动 Launch 文件
ros2 launch velodyne velodyne-all-nodes-VLP16-launch.py
终端 B: 启动 RViz 2
# 1. 进入工作空间
cd ~/velodyne_ws
# 2. 加载环境配置文件
source install/setup.bash
# 3. 启动 RViz2
rviz2
3. 配置 RViz 2
- 设置全局坐标系 (Fixed Frame): 在左侧
Global Options中,将Fixed Frame的值修改为velodyne,然后按回车。 - 添加点云显示 (Add PointCloud 2): 点击左下角
Add按钮,选择By topic->/velodyne_points->PointCloud2->OK.
详细问题排查之旅 🕵️♂️
第1阶段: 基础运行错误 -> Package not found
- 问题: 运行
ros2 run velodyne_driver velodyne_driver_node提示Package not found。
- 原因: 当前终端没有加载工作空间的环境变量,系统不知道去哪里找这个节点。
- 解决: 在运行 ROS2 命令前,必须在当前终端执行
source install/setup.bash。
第2阶段: RViz2 ,无数据显示 -> Fixed Frame: No tf data. Actual error: Frame [velodyne] does not exist
- 问题: 启动了驱动和 RViz2,但在 RViz2 中配置好后,依然看不到任何点云。
- 线索: RViz2 左侧
Global Status提示黄色警告:Fixed Frame: No tf data. Actual error: Frame [velodyne] does not exist。 - 分析: 这意味着 RViz2 没有收到任何来自
/velodyne_points话题的数据。 - 验证: 运行
ros2 topic echo /velodyne_points,发现终端没有任何输出。 - 结论: 问题根源在于雷达驱动节点没有成功发布点云数据。
第3阶段: 锁定网络连接问题
- 分析: 驱动不工作,最大嫌疑是网络连接中断。
- 验证1 (Ping): 运行
ping 192.168.1.201(雷达出厂默认IP),结果是100% packet loss(100%丢包)。这证实了网络不通。 - 排查1 (IP配置): 检查并指导用户将电脑有线网口设置为静态IP
192.168.1.100。 - 排查2 (网络冲突): 即便设置了静态IP,
ping依然失败。通过ip addr命令发现,电脑同时连接了有线网和WiFi,可能存在路由冲突。指导用户关闭WiFi。 - 僵局: 即便关闭了WiFi,
ping依然失败。这表明问题比想象的更底层。
第4阶段: 柳暗花明,发现真实IP地址
- 终极武器 (
tcpdump): 当所有常规方法失效后,我们使用网络抓包工具tcpdump来监听网口,查看是否有任何来自雷达的数据。
sudo tcpdump -i enp6s0
- 重大突破:
tcpdump的输出中赫然出现了IP 192.168.1.200.2368 > ...的信息。 - 真相大白: 这台雷达的IP地址不是默认的
192.168.1.201,而是192.168.1.200!
第5阶段: 最后的障碍与根源修复
-
验证2 (Ping新IP): 运行
ping 192.168.1.200,成功了!0% packet loss! -
问题复现: 尝试使用
ros2 launch ... device_ip:=192.168.1.200启动,但通过日志发现驱动节点依然在监听旧的.201地址。 -
根源定位:
- 通过
find_by_name和view_file追踪velodyne-all-nodes-VLP16-launch.py文件。 - 发现它加载了一个名为
VLP16-velodyne_driver_node-params.yaml的配置文件。 - 在这个
.yaml文件中,device_ip被硬编码为192.168.1.201。
- 通过
-
最终修复:
- 使用
replace_file_content工具,直接修改VLP16-velodyne_driver_node-params.yaml文件,将device_ip的值改为192.168.1.200。 - 由于修改了源文件,回到工作空间根目录,运行
colcon build重新编译,使修改生效。
- 使用
-
成功: 再次启动,所有节点正常工作,RViz 2 成功显示点云!

Ubuntu 24.10 没有看见有前辈配置这款雷达的教程,小辈斗胆试一试😄;
浙公网安备 33010602011771号