4. 激光雷达驱动与数据可视化:配置激光雷达驱动(如rplidar、velodyne),在rviz中可视化点云,录制与回放rosbag

说实话,激光雷达驱动这块,是很多初学者第一个栽跟头的地方。我见过太多人花了两天时间装驱动,结果发现是USB权限没给对。嗯,咱们今天就把这事彻底捋清楚。

4.1 激光雷达驱动配置——别让硬件卡住你

先说说市面上最常见的两款雷达:RPLIDARVelodyne。前者是入门神器,几百块就能玩;后者是工业级选手,动辄几万。但驱动配置的逻辑,其实大同小异。

4.1.1 RPLIDAR 驱动配置

我个人习惯用思岚科技的A1/A2系列,性价比确实高。配置步骤很简单:

  1. 安装驱动包
sudo apt install ros-noetic-rplidar-ros
# 或者从源码编译
cd ~/catkin_ws/src
git clone https://github.com/Slamtec/rplidar_ros.git
cd ..
catkin_make
  1. 给USB口权限——这一步很多人会忘
sudo chmod 666 /dev/ttyUSB0
# 或者一劳永逸,把用户加到dialout组
sudo usermod -a -G dialout $USER
注意: 我曾经因为没给权限,折腾了整整一个下午。每次启动都说"cannot open port",后来发现就是少了个chmod。你想想看,这种低级错误多冤。
  1. 启动驱动
roslaunch rplidar_ros rplidar.launch

启动后,用 rostopic list 看看,应该能看到 /scan 这个话题。这就是雷达原始数据。

4.1.2 Velodyne 驱动配置

Velodyne 的配置稍微复杂一点,因为它涉及到网络配置。说白了,Velodyne 是通过网线传数据的,你得把电脑IP和雷达IP配在同一个网段。

雷达型号 默认IP 电脑IP建议
VLP-16 192.168.1.201 192.168.1.100
HDL-32E 192.168.3.10 192.168.3.100
HDL-64E 192.168.3.10 192.168.3.100

配置步骤:

# 安装驱动
sudo apt install ros-noetic-velodyne

# 启动(以VLP-16为例)
roslaunch velodyne_pointcloud VLP16_points.launch
小技巧: 如果你用的是虚拟机,记得把网卡设置为桥接模式。NAT模式会导致收不到雷达数据。我刚开始用VMware时踩过这个坑。

4.2 在RViz中可视化点云——让数据"看得见"

驱动跑起来之后,数据是有了,但你看不到。这时候就需要RViz出场了。RViz是ROS的瑞士军刀,什么传感器数据都能给你可视化出来。

4.2.1 启动RViz

rosrun rviz rviz

或者你可以在launch文件里直接启动:

<node name="rviz" pkg="rviz" type="rviz" args="-d $(find your_package)/config/your_config.rviz"/>

4.2.2 添加点云显示

在RViz界面中:

  1. 点击左下角 Add 按钮
  2. 选择 By topic 选项卡
  3. 找到 /scan(单线雷达)或 /velodyne_points(多线雷达)
  4. 点击 OK

你会看到屏幕上出现了一堆点。如果是RPLIDAR,是一条线;如果是Velodyne,是一个半球形的点云。

核心知识点: 单线雷达(如RPLIDAR)发布的是 sensor_msgs/LaserScan 消息,多线雷达(如Velodyne)发布的是 sensor_msgs/PointCloud2 消息。两者在RViz中的显示方式不同,但本质都是距离信息。

4.2.3 调参小技巧

我个人习惯在RViz里调整这几个参数:

  • Size (m):点的大小,设成0.05左右比较舒服
  • Style:选 PointsFlat Squares
  • Color Transformer:选 AxisColorIntensity

为什么要调这些?说白了,默认参数下点太小,你根本看不清环境结构。调大一点,墙是墙、柱子是柱子,一目了然。

4.3 录制与回放rosbag——数据是SLAM的粮食

做SLAM,你不可能每次都扛着雷达去现场调试。所以录制rosbag就成了必备技能。我习惯把bag叫做"数据罐头",打开就能还原现场。

4.3.1 录制bag

# 录制所有话题
rosbag record -a

# 只录制雷达话题(推荐,省空间)
rosbag record /scan /tf /odom

# 指定bag文件名
rosbag record -O my_slam_data.bag /scan /tf
注意: 录制时尽量别动雷达。我曾经录了一个10分钟的bag,结果前5分钟在插线、后5分钟在调参,真正有效数据只有中间30秒。嗯,后来我就学乖了,录之前先检查好所有设备。

4.3.2 回放bag

# 基本回放
rosbag play my_slam_data.bag

# 循环回放(调试算法时很有用)
rosbag play -l my_slam_data.bag

# 以0.5倍速回放
rosbag play -r 0.5 my_slam_data.bag

回放时,你可以在RViz里看到数据像实时采集一样流动。这就是rosbag的魅力——时间旅行。

4.3.3 查看bag信息

rosbag info my_slam_data.bag

这条命令会告诉你bag里有哪些话题、多少帧数据、时长多少。我每次录完bag都会先info一下,确认数据完整再收工。

4.4 本章知识体系

下面这张图,是我自己总结的激光雷达数据流。你看一遍就能明白整个链路:

激光雷达数据流与可视化链路 激光雷达硬件 RPLIDAR / Velodyne USB/网线 ROS驱动节点 rplidarNode / velodyne_node /scan 或 /points ROS消息 LaserScan / PointCloud2 RViz可视化 实时查看点云 rosbag录制 存储为.bag文件 rosbag回放 离线调试算法

这张图把整个流程串起来了:硬件 → 驱动 → 消息 → 可视化/录制/回放。你只要照着这个链路走,就不会迷路。

4.5 避坑指南——我踩过的那些坑

最后分享几个实战中容易翻车的地方:

  • USB带宽不够:如果你同时接了雷达和摄像头,USB带宽可能不够。我遇到过雷达数据断断续续,后来换了个USB3.0口就好了。
  • 时间戳问题:回放bag时,如果系统时间和录制时间差太多,TF变换会报错。用 --clock 参数可以解决。
  • 点云显示卡顿:Velodyne的点云数据量很大,RViz可能会卡。把 Decay Time 设小一点,或者降低显示频率。
我的习惯: 每次调试前,我都会先跑一遍 rostopic hz /scan 看看频率是否正常。RPLIDAR一般是5-10Hz,Velodyne是10-20Hz。如果频率不对,先别急着调算法,回头检查驱动。

好了,驱动配置、可视化、录制回放,这三板斧你掌握了,激光雷达这块就算入门了。接下来就是拿着这些数据,去做真正的SLAM建图和定位了。


公众号:蓝海资料掘金营,微信deep3321