2、激光雷达选型与驱动:单线/多线雷达对比、驱动安装(rplidar/sick)、话题数据可视化(rviz)
聊到激光雷达,很多刚入行的朋友第一反应就是「越贵越好」。其实不然。我这些年经手过不下十种雷达,从几百块的 RPLIDAR 到几十万的 Velodyne,选型这件事,说白了就是看你的机器人到底要干什么。
这一章,我们先把雷达的底裤扒干净。单线还是多线?驱动怎么装?数据怎么看?走一遍流程,你心里就有数了。
2.1 单线 vs 多线:你该选谁?
先给个结论:室内导航、扫地、送餐这类 2D 平面移动,单线足够。室外、建 3D 地图、避障要求高的,上多线。
我最早做室内巡检机器人时,用的就是单线雷达。当时觉得多线帅啊,咬牙买了一台 16 线的,结果发现大部分算力都浪费在点云滤波上,建图效果反而没单线好。嗯,这里有个坑——多线雷达的数据量是单线的几十倍,对工控机的要求也高得多。
| 对比项 | 单线雷达 | 多线雷达 |
|---|---|---|
| 扫描维度 | 2D(一个平面) | 3D(多个平面) |
| 典型线数 | 1 | 16 / 32 / 64 / 128 |
| 数据量 | ~5-10 KB/s | ~1-10 MB/s |
| 建图算法 | Gmapping / Hector / Cartographer 2D | LOAM / LeGO-LOAM / Cartographer 3D |
| 典型价格 | ¥500 - ¥5,000 | ¥5,000 - ¥50,000+ |
| 适用场景 | 室内导航、扫地、AGV | 自动驾驶、室外巡检、3D 建图 |
2.2 驱动安装:RPLIDAR 与 SICK
驱动安装这件事,说简单也简单,说坑也坑。我见过有人装了一天没装上的,最后发现是串口权限没给。咱们一步步来。
2.2.1 RPLIDAR(思岚)驱动
RPLIDAR 是入门首选,便宜、文档全、ROS 支持好。我用的是 A1 和 A2 系列,驱动流程完全一样。
# 1. 创建 workspace
mkdir -p ~/lidar_ws/src
cd ~/lidar_ws/src
# 2. 克隆驱动
git clone https://github.com/Slamtec/rplidar_ros.git
# 3. 编译
cd ~/lidar_ws
catkin_make
source devel/setup.bash
# 4. 给串口权限(这一步容易忘)
sudo chmod 666 /dev/ttyUSB0
# 5. 启动雷达
roslaunch rplidar_ros rplidar.launch
/dev/ttyUSB0 可能不存在。用 ls /dev/ttyUSB* 检查一下。如果没显示,大概率是 USB 转串口芯片驱动没装(CP2102 或 CH340)。装好驱动再试。
启动成功后,你会看到类似这样的输出:
[ INFO] [1234567890.123456789]: RPLidar running on /dev/ttyUSB0 with baudrate 115200
[ INFO] [1234567890.234567890]: RPLidar health status : OK.
看到 health status : OK,说明雷达已经正常工作了。这时候可以打开 rviz 看看数据。
2.2.2 SICK 雷达驱动
SICK 的雷达(比如 TIM 系列、LMS 系列)在工业场景里很常见。驱动方式和 RPLIDAR 不太一样,因为 SICK 通常走以太网。
# 1. 安装驱动
sudo apt install ros-noetic-sick-tim
# 2. 配置 IP(假设雷达 IP 是 192.168.0.1)
# 把你的电脑 IP 设为 192.168.0.x,比如 192.168.0.100
# 3. 启动驱动
roslaunch sick_tim sick_tim551_2050001.launch hostname:=192.168.0.1
ping 192.168.0.1 确认网络通不通。我遇到过好几次网线没插紧的情况……
启动后,SICK 雷达会发布 /scan 话题,和 RPLIDAR 一样。所以后面的可视化流程完全通用。
2.3 话题数据可视化:rviz 里看什么?
驱动装好了,数据也来了。但光看终端输出,你根本不知道雷达扫得怎么样。这时候 rviz 就派上用场了。
2.3.1 启动 rviz
rosrun rviz rviz
或者你可以在启动雷达的 launch 文件里加上 rviz 节点,省得每次手动开。我个人习惯是单独开,方便调试。
2.3.2 添加 LaserScan 显示
- 点击左下角 Add 按钮
- 选择 By topic 标签
- 找到
/scan话题下的LaserScan,双击添加
这时候你应该能看到一圈红色的点,那就是雷达扫到的障碍物。如果看不到,检查一下:
- Fixed Frame 是不是设成了
laser或base_link? - 雷达有没有被遮挡?用手在雷达前面晃一晃,看 rviz 里的点有没有变化。
range_min/range_max:雷达的有效测距范围。RPLIDAR A1 是 0.15m - 6m,A2 是 0.15m - 12m。angle_min/angle_max:扫描角度范围。通常是 -π 到 π,也就是 360 度。time_increment:每两个点之间的时间间隔。可以用来算雷达的扫描频率。
2.3.3 常见问题排查
rviz 里看不到数据?别慌,按这个顺序查:
rostopic list看看有没有/scan话题rostopic echo /scan看看数据有没有内容- 检查 rviz 的 Fixed Frame 是否匹配 TF 树
- 检查雷达的串口或网线是否松动
我遇到过最离谱的一次,是雷达线被老鼠咬断了,但外表看不出来。折腾了两小时才发现……
2.4 本章知识体系
下面这张图帮你理清这一章的核心逻辑:从选型到驱动,再到数据可视化,一条线走通。
这张图把这一章的核心脉络串起来了。你从选型开始,根据场景决定用单线还是多线;然后装驱动,RPLIDAR 走串口,SICK 走以太网;最后用 rviz 看数据,确认雷达正常工作。每一步都有坑,但每一步也都有解法。
雷达数据能稳定显示了,下一件事就是建图。不过那是后面章节的事,咱们先把这一步走扎实。