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 建图
我的建议:如果你刚开始做机器人导航,先拿单线雷达跑通整个流程。等你对 2D SLAM 的坑都踩过一遍了,再考虑上多线。省钱省时间。

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
小技巧:SICK 雷达的默认 IP 通常写在机身标签上。如果连不上,先 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 显示

  1. 点击左下角 Add 按钮
  2. 选择 By topic 标签
  3. 找到 /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 里看不到数据?别慌,按这个顺序查:

  1. rostopic list 看看有没有 /scan 话题
  2. rostopic echo /scan 看看数据有没有内容
  3. 检查 rviz 的 Fixed Frame 是否匹配 TF 树
  4. 检查雷达的串口或网线是否松动

我遇到过最离谱的一次,是雷达线被老鼠咬断了,但外表看不出来。折腾了两小时才发现……

2.4 本章知识体系

下面这张图帮你理清这一章的核心逻辑:从选型到驱动,再到数据可视化,一条线走通。

激光雷达选型与驱动知识体系 激光雷达选型与驱动知识体系 选型决策 驱动安装 数据可视化 单线雷达 室内 / 2D SLAM 多线雷达 室外 / 3D SLAM RPLIDAR 串口 / USB SICK 以太网 / IP rviz LaserScan 显示 话题调试 rostopic echo 关键操作:串口权限 → 驱动编译 → 启动雷达 → rviz 可视化 目标:让雷达数据在 rviz 中稳定显示 为后续 SLAM 建图与导航提供可靠输入

这张图把这一章的核心脉络串起来了。你从选型开始,根据场景决定用单线还是多线;然后装驱动,RPLIDAR 走串口,SICK 走以太网;最后用 rviz 看数据,确认雷达正常工作。每一步都有坑,但每一步也都有解法。

雷达数据能稳定显示了,下一件事就是建图。不过那是后面章节的事,咱们先把这一步走扎实。