3、激光雷达驱动与数据读取:安装驱动、启动节点、可视化点云
好,咱们进入第三章。这一章很实在——就是让激光雷达转起来,把数据拿到手,再在屏幕上看到点云。
说实话,我刚开始搞无人机避障那会儿,光装驱动就折腾了一整天。后来发现,很多坑其实是可以提前避开的。今天我把这些经验都摊开来讲。
3.1 选对驱动,少走弯路
市面上常见的激光雷达,驱动方式不太一样。我主要接触过两类:
- RPLIDAR(思岚系列):便宜、轻量,适合小型无人机
- Velodyne(如VLP-16):贵、精度高,适合工业级应用
它们的驱动包在ROS里都有现成的。你不需要自己写底层通信代码,但得知道怎么装、怎么配。
核心思路:驱动包本质上是一个ROS节点,负责把雷达的串口或网络数据转换成ROS的
3.2 安装RPLIDAR驱动
我个人习惯用源码编译,因为能随时看代码、改参数。当然,apt安装也行,但有时候版本太旧。
# 创建工作空间(如果还没有)
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
# 克隆rplidar驱动
git clone https://github.com/Slamtec/rplidar_ros.git
# 编译
cd ~/catkin_ws
catkin_make
# 设置环境变量
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
嗯,这里要注意:记得给串口权限。我遇到过好几次,驱动节点启动不了,一看日志——权限不足。
避坑指南:我曾经因为忘记加串口权限,排查了半小时。执行这条命令:
sudo chmod 666 /dev/ttyUSB0
或者更稳妥的做法,把用户加到dialout组:
sudo usermod -a -G dialout $USER
3.3 安装Velodyne驱动
Velodyne的驱动稍微复杂一点,因为它走的是网络UDP协议。你需要设置好本机IP,确保和雷达在同一个网段。
# 同样用源码编译
cd ~/catkin_ws/src
git clone https://github.com/ros-drivers/velodyne.git
# 编译
cd ~/catkin_ws
catkin_make
配置网络时,我建议把雷达的IP设为静态。不然每次重启都要重新找IP,很烦。
| 雷达型号 | 默认IP | 本机IP建议 |
|---|---|---|
| VLP-16 | 192.168.1.201 | 192.168.1.100 |
| HDL-32E | 192.168.3.10 | 192.168.3.100 |
3.4 启动驱动节点
驱动装好了,怎么启动?说白了就是运行一个launch文件。
RPLIDAR启动示例:
roslaunch rplidar_ros rplidar.launch
这个launch文件里,默认会启动rplidarNode节点,发布/scan话题。你可以用rostopic echo /scan看看数据长什么样。
Velodyne启动示例:
roslaunch velodyne_pointcloud VLP16_points.launch
它会发布/velodyne_points话题,数据类型是PointCloud2。你想想看,16线雷达的数据量比单线大得多,所以处理起来要更小心。
我的小技巧:启动节点后,先用rostopic list看看有哪些话题。再用rostopic hz /scan检查发布频率。如果频率不对,八成是驱动配置有问题。
3.5 用RViz可视化点云
数据拿到了,但光看数字没感觉。RViz就是让你“看见”点云的工具。
启动RViz很简单:
rosrun rviz rviz
然后手动添加显示组件:
- 点击左下角“Add”按钮
- 选择“By topic”标签
- 找到/scan或/velodyne_points
- 点击“OK”
嗯,这里有个常见问题:点云显示不出来。别慌,检查两件事:
- Fixed Frame是否设置正确?RPLIDAR一般设为laser_frame,Velodyne设为velodyne
- 话题是否真的在发布?用rostopic echo确认一下
经验之谈:我习惯在RViz里同时显示多个视角。比如一个俯视图看整体,一个侧视图看细节。这样调试避障算法时,能快速定位问题。
3.6 本章知识体系
下面这张图,是我自己梳理的驱动与数据读取流程。你看一眼,心里就有数了。
3.7 常见问题与解决
最后,我把这些年踩过的坑整理一下。你遇到了,直接对照着查。
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 驱动节点启动失败 | 串口权限不足 | chmod 666 /dev/ttyUSB0 |
| RViz看不到点云 | Fixed Frame未设置 | 设置为laser_frame或velodyne |
| 点云数据不更新 | 话题频率异常 | 检查雷达连接线、供电 |
| Velodyne无数据 | IP不在同一网段 | 修改本机IP为192.168.1.x |
最后说一句:驱动装好、数据能看,这只是第一步。下一章我们会真正开始处理这些点云数据,做避障判断。但今天的内容,是后面所有工作的基础。别急,慢慢来。