4. 激光雷达驱动与数据可视化:配置激光雷达驱动(如rplidar、velodyne),在rviz中可视化点云,录制与回放rosbag
说实话,激光雷达驱动这块,是很多初学者第一个栽跟头的地方。我见过太多人花了两天时间装驱动,结果发现是USB权限没给对。嗯,咱们今天就把这事彻底捋清楚。
4.1 激光雷达驱动配置——别让硬件卡住你
先说说市面上最常见的两款雷达:RPLIDAR 和 Velodyne。前者是入门神器,几百块就能玩;后者是工业级选手,动辄几万。但驱动配置的逻辑,其实大同小异。
4.1.1 RPLIDAR 驱动配置
我个人习惯用思岚科技的A1/A2系列,性价比确实高。配置步骤很简单:
- 安装驱动包
sudo apt install ros-noetic-rplidar-ros
# 或者从源码编译
cd ~/catkin_ws/src
git clone https://github.com/Slamtec/rplidar_ros.git
cd ..
catkin_make
- 给USB口权限——这一步很多人会忘
sudo chmod 666 /dev/ttyUSB0
# 或者一劳永逸,把用户加到dialout组
sudo usermod -a -G dialout $USER
- 启动驱动
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
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界面中:
- 点击左下角 Add 按钮
- 选择 By topic 选项卡
- 找到
/scan(单线雷达)或/velodyne_points(多线雷达) - 点击 OK
你会看到屏幕上出现了一堆点。如果是RPLIDAR,是一条线;如果是Velodyne,是一个半球形的点云。
sensor_msgs/LaserScan 消息,多线雷达(如Velodyne)发布的是 sensor_msgs/PointCloud2 消息。两者在RViz中的显示方式不同,但本质都是距离信息。
4.2.3 调参小技巧
我个人习惯在RViz里调整这几个参数:
- Size (m):点的大小,设成0.05左右比较舒服
- Style:选 Points 或 Flat Squares
- Color Transformer:选 AxisColor 或 Intensity
为什么要调这些?说白了,默认参数下点太小,你根本看不清环境结构。调大一点,墙是墙、柱子是柱子,一目了然。
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
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 本章知识体系
下面这张图,是我自己总结的激光雷达数据流。你看一遍就能明白整个链路:
这张图把整个流程串起来了:硬件 → 驱动 → 消息 → 可视化/录制/回放。你只要照着这个链路走,就不会迷路。
4.5 避坑指南——我踩过的那些坑
最后分享几个实战中容易翻车的地方:
- USB带宽不够:如果你同时接了雷达和摄像头,USB带宽可能不够。我遇到过雷达数据断断续续,后来换了个USB3.0口就好了。
- 时间戳问题:回放bag时,如果系统时间和录制时间差太多,TF变换会报错。用
--clock参数可以解决。 - 点云显示卡顿:Velodyne的点云数据量很大,RViz可能会卡。把
Decay Time设小一点,或者降低显示频率。
rostopic hz /scan 看看频率是否正常。RPLIDAR一般是5-10Hz,Velodyne是10-20Hz。如果频率不对,先别急着调算法,回头检查驱动。
好了,驱动配置、可视化、录制回放,这三板斧你掌握了,激光雷达这块就算入门了。接下来就是拿着这些数据,去做真正的SLAM建图和定位了。
公众号:蓝海资料掘金营,微信deep3321