新闻详情

新闻详情

首页 / 资讯中心 / 详情

Ubuntu 20.04下RPLIDAR激光雷达ROS驱动安装与避坑指南

发布时间:2026/10/1 19:39:01来源:尧图网络
Ubuntu 20.04下RPLIDAR激光雷达ROS驱动安装与避坑指南
如果你手头有一台装了 Ubuntu 20.04 的电脑又刚好买了个思岚 RPLIDAR 二维激光雷达估计你现在最想做的事就是让它赶紧转起来、把 /scan 数据发出来。这事情说难不难但我在帮朋友和自己搭环境时确确实实踩过不少坑串口没权限、雷达转了一半停住、launch 直接闪退、RViz 里看不到点云……每一件都能让人卡上半天。这篇内容我打算按照我自己的搭建顺序来讲先说思岚 RPLIDAR 各型号之间的区别和通信原理再带你过一遍 Ubuntu 20.04 下的环境准备然后是官方 SDK 编译和 ROS 驱动安装最后把实际使用中常见的坑整理成速查表。全程基于 Ubuntu 20.04 ROS Noetic如果你是在虚拟机里跑我也会提一句 USB 直通的注意点。适合刚接触激光雷达的小白也适合被驱动折腾过但想看明白原理的老手。1. 先把思岚 RPLIDAR 这个家族看明白1.1 A系列、S系列到底差在哪思岚的二维激光雷达名气很大最常见的是 A1、A2、A3再往上就是 S1、S2 这类 TOF 方案。很多人买回来只会用不看硬件差异其实这跟你后续选驱动、调参数有直接关系。A 系列用的基本都是三角测距原理激光发射器射出一束光经过物体反射后用内部的线阵 sensor 接收根据光斑在 sensor 上的位置偏移算出距离。这种方案优点是近距离精度不错、成本低、适合室内导航缺点是测量距离普遍不算远室外强光下容易受影响。S 系列则用了 TOF飞行时间原理测距更远、抗光性更好价格自然也更贵。从驱动角度看好消息是思岚的 SDK 基本把所有型号统一了。也就是说你下载一个 rplidar_sdkA1、A2、A3 都能编出来跑ROS 驱动也是同一套 rplidar_ros 包。差别主要集中在波特率和扫描频率上到时候根据自己雷达背面的标签纸填参数就行。1.2 数据是怎么从雷达传到电脑里的你要想排错就得先理解数据链路。RPLIDAR 在雷达内部把扫描到的距离和角度打包好通过串口UART发送。我们拿到手的雷达模块一般已经集成了 USB 转串口芯片常见的是 CP2102插上电脑后系统会识别成类似/dev/ttyUSB0的设备这就是串口设备文件。所以驱动安装这件事本质上分两半一半是让系统能认出这个 USB 转串口设备并拿到读写权限另一半是跑一个能解析雷达协议的软件。前者弄不好后续各种报错都会冒出来后者弄不好只会看到乱码或者直接没反应。这里我多说一句为什么很多人一上来就在/dev/ttyUSB0上卡住。Linux 系统对串口设备的访问权限限制很严格默认情况下普通用户没有读写权限。Ubuntu 桌面版插上雷达后你能在lsusb里看到设备但打开串口时会提示Permission denied这就是权限粒度为用户组的原因。解决办法就是你把自己的账户加入dialout组或者写一条 udev 规则让系统给这个设备开放权限。步骤我放在下一节照着做就行。2. 环境准备Ubuntu 20.04、ROS Noetic、USB权限三板斧2.1 ROS 装到能跑 launch 就算及格如果你已经有能用的 Ubuntu 20.04并且已经装好 ROS Noetic这一小节可以直接跳过。没装的话我给出最经典的一条龙sudo apt update sudo apt install ros-noetic-desktop-full echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc桌面完整版会包含 RViz、tf、常用 sensor_msgs 这些后面可视化雷达数据时不用再补装依赖。如果你刚入门我建议装desktop-full别省那个空间去装ros-noetic-ros-base不然后面看到满屏缺包错误会怀疑人生。还有一个容易漏的地方装完 ROS 后别忘了初始化rosdep虽然 rplidar_ros 本身不需要太多额外依赖但你自己后续建图、编译其他包时一定会用到sudo rosdep init rosdep update如果rosdep update因为网络问题卡住说明你的网络环境对 GitHub 等源不够友好这种问题我不在博客里展开但你可以通过配置本地镜像源或者代理源的方式来解决这不是雷达本身的问题。2.2 USB 权限两行命令解决大半问题雷达插上电脑后先敲lsusb正常情况下你能看到一行类似Bus 001 Device 003: ID 10c4:ea60 Silicon Labs CP210x UART Bridge如果看不到先检查 USB 线是不是纯充电线很多线只能供电不能传数据。换一根线往往就解决了。接下来确认系统认出的串口设备ls -l /dev/ttyUSB*可以看到/dev/ttyUSB0这样的设备文件。这个时候你直接用 SDK 打开串口大概率是Permission denied。解法是把当前用户加进dialout组sudo usermod -aG dialout $USER改完需要注销重新登录一次或者重启机器。不想重启的话也可以临时用sudo chmod 666 /dev/ttyUSB0降低门槛但这只是临时的下次拔插又变回去了。我更推荐直接写 udev 规则让系统每次插上雷达就自动放开权限。创建文件/etc/udev/rules.d/99-rplidar.rules内容写KERNELttyUSB*, ATTRS{idVendor}10c4, ATTRS{idProduct}ea60, MODE0666, GROUPdialout然后重载规则sudo udevadm control --reload-rules sudo udevadm trigger这样以后再插雷达设备权限就是对的。有人可能会问为什么非要拘泥于dialout组因为 Ubuntu 系统默认把串口设备放进dialout组你把用户塞进去等于给了所有常见串口设备的读写权限。写 udev 规则时指定GROUPdialout也是为了和系统管理方式保持一致免得后面其他串口设备出现权限混乱。另外用虚拟机跑 Ubuntu 的同学注意VMware 和 VirtualBox 默认不会把 USB 设备直接透传给你你必须在虚拟机菜单里设置 USB 直通把 RPLIDAR 从宿主机连接到虚拟机。怎么操作我放后面“常见问题”里具体说这里先提示一句免得你折腾半天系统设置结果根本没找到设备。3. 官方SDK编译与快速验证3.1 从 GitHub 拉 rplidar_sdk 并编译ROS 驱动接触到的数据其实来自底层 SDK所以我习惯先把官方 SDK 跑起来验证雷达硬件、串口链路都没问题再上 ROS。这样可以避免“以为是驱动坏了其实是雷达供电不足”这种乌龙。先安装编译工具sudo apt install git cmake build-essential然后拉取 SDKgit clone https://github.com/Slamtec/rplidar_sdk.git cd rplidar_sdk新版 SDK 是 CMake 工程编译很简单cmake -B build cmake --build build编译产物一般在output/linux/release/目录下你可以看看有没有ultra_simple这个可执行文件。如果是在旧版 SDK 里也有直接的make命令原理都一样。这里顺便解释一下为什么要先编译 SDK它不依赖 ROS不依赖 sensor_msgs 那一套东西只要串口权限对它就能把雷达的原始数据打出来。如果这一步都跑不通问题基本锁定在硬件、USB 线、串口权限这三块排查范围很小效率最高。3.2 用 ultra_simple 验证雷达有没有输出运行 SDK 自带的ultra_simple工具cd output/linux/release ./ultra_simple /dev/ttyUSB0 115200如果你的 RPLIDAR 型号波特率不是 115200换成官方文档给出的值比如部分 A2/A3 系列是 256000。如果一切正常你会看到雷达电机转起来终端里不断刷出类似下面的数据angle: 0.000000 distance: 0.120000 quality: 12 angle: 1.000000 distance: 0.150000 quality: 11 angle: 2.000000 distance: 6.540000 quality: 88 ...每行是一个扫描点的角度、距离和信号质量。能看到这个输出说明雷达硬件、USB 转串口、协议解析链路全通了。CtrlC 停掉程序后雷达电机会跟着停转。我遇到过一次很奇怪的情况ultra_simple能输出数据但角度跳着走比如从 10 度直接跳到 60 度看起来断断续续。最后发现是雷达放在桌面上太矮周围一圈全是近距离障碍物加上 USB 供电不稳导致电机转速波动扫描频率和预期不一致。换了个带外部供电的 USB HUB 之后数据马上稳定了。这个经验在后面建图时也很关键。4. 基于ROS的驱动安装与可视化4.1 创建工作空间并拉取 rplidar_rosSDK 层面验证完接下来就可以让 ROS 来接管了。rplidar_ros 是思岚官方维护的 ROS 驱动包支持 ROS1 和 ROS2 的分支。我们先说 ROS1 Noetic 下的用法。创建标准工作空间mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/Slamtec/rplidar_ros.git cd ~/catkin_ws catkin_makecatkin_make编译的时候会顺带编译 rplidar_ros 包成功后需要让当前终端知道新工作空间source ~/catkin_ws/devel/setup.bash别忘了echo source ~/catkin_ws/devel/setup.bash ~/.bashrc不然每次开终端都要手动 source。这一步容易被新手忽略后果就是敲roslaunch rplidar_ros的时候提示包找不到。如果你对 CMake 构建方式更熟也可以用catkin build前提是装一下python3-catkin-tools。两种方式随便选但别混用同一个工作空间否则目录结构会乱。4.2 launch 文件参数逐个拆解rplidar_ros 包里提供了现成的 launch 文件不过它默认参数不一定适合你的型号。我建议打开看一下roscd rplidar_ros cat launch/rplidar.launch里面关键参数大概有这些参数含义经验值serial_port雷达串口设备路径/dev/ttyUSB0serial_baudrate串口波特率A1 常见 115200部分新型号 256000frame_id雷达坐标系名称通常设为 laserangle_compensate是否启用角度补偿truescan_mode扫描模式标准模式或高速模式按型号填topic_name激光数据话题名默认 /scanframe_id这个参数很多人会忽略但我建议一开始就把它设成laser不要随便命名。后续做导航、建图时tf 树里所有坐标关系都要围绕这个 frame_id 展开如果你一会儿叫laser一会儿叫rplidarcartographer_ros 或者 move_base 配置里对不上报错会非常抽象。angle_compensate建议设为 true。原理是 RPLIDAR 运行时角度每隔一个固定间隔输出一个点但在电机转速波动时点与点之间的角度间隔会不均匀。开启角度补偿后内部会统一处理扫描角度的均匀性后端算法拿到数据更规整。4.3 用 RViz 看到 /scan 点云启动雷达前确保先启动roscore。如果你用的是 ROS 1最简单的是roslaunch rplidar_ros rplidar.launch正常的话终端会滚动日志雷达电机同步转起来。然后再开一个终端rviz在 RViz 左侧的 Display 面板里点击 Add - By topic选择/scan对应的 LaserScan 添加。把 Global Frame 改成laser和 launch 里设置的 frame_id 一致你就能看到一圈红色点云了。如果看到的是一堆坐标乱飞、雷达点不在水平面转圈多半是 Global Frame 没有设置成雷达坐标系。RViz 默认的 Global Frame 可能是map激光数据来了但位置对不上看起来就像杂散点。还有个小经验直接把雷达放平在桌面上扫桌面会形成一条直线点云墙和桌腿就是直线上的断口。你可以拿个纸箱在雷达前晃动点云应该有明显遮挡变化这比看角度数值直观得多。5. 实际使用中避坑从串口权限到虚拟机直通5.1 问题速查表我把自己遇到过和帮别人排查过的问题整理成了表格建议截图存一份。现象原因解决办法lsusb 看不到 CP210xUSB 线只供电不传数据或接口接触不良换一根数据线换机箱后置 USB 口打开串口提示 Permission denied用户不在 dialout 组sudo usermod -aG dialout $USER重新登录roslaunch 提示 “package rplidar_ros not found”没有 source 工作空间source ~/catkin_ws/devel/setup.bash雷达电机不转USB 供电不足电机引脚被锁换带供电 HUB检查 udev 规则是否误设了电机开关RViz 看不到点云忘记 add LaserScan或 Global Frame 不对添加 /scan 话题把 Global Frame 设为 laser点云里出现一大片“废点”近距离透明物体、镜面、强光干扰避开这些场景或用距离过滤数据丢点、角度跳跃供电不稳导致电机转速波动外接电源降低扫描频率虚拟机里找不到 /dev/ttyUSB0USB 没有直通给虚拟机在 VM 软件里设置 USB 直通选择对应设备5.2 供电和电机经常被忽略的“硬件坑”软件层面都对了雷达还是不转这就要怀疑供电。A1 这类入门型号USB 口供电一般够用但笔记本的 USB 口在负载较大时电压会掉雷达电机可能转到一半被卡住表现就是启动一瞬间转了一下然后停了。这时候不要死磕驱动先找个带外部供电的 USB HUB 试试。我记得一次在 Ubuntu 20.04 上调试雷达扫描出现周期性缺口大概每转一圈就掉一截数据后来用万用表测了一下 USB 电压只有 4.2V换供电后立刻正常。A2、A3 或者部分高配型号电机功耗更大最好按照官方要求接外部电源或配套扩展板。这些型号的 USB 口更多是传数据用光靠电脑口供电容易出事。还有一个小细节RPLIDAR 的电机控制引脚一般会由 SDK 在初始化时拉高默认启动后才开始转。如果你自己改了 udev 规则误操作把电机允许脉冲停掉雷达就会看起来“有串口、没转动”。这种情况建议恢复原始 udev 规则然后重新插拔。5.3 数据异常别急着怪驱动点云数据跳变这个问题经常有人来问我其实大概率不是驱动 bug而是环境反光。RPLIDAR 对黑色吸光物体、高透明玻璃、镜面反射物体都容易产生异常值。黑色物体激光打上去回波信号弱可能直接丢失玻璃和镜子则会产生虚假的远距离反射点。如果你发现某一块区域点云特别稀或者有“飞点”先检查那里有没有透明水瓶、玻璃门、黑色亚光面板。调试环境尽量选在桌椅、纸箱、白墙这种正常漫反射物体旁边。另外扫描频率越高单圈点云密度越低。A1 默认 10Hz 扫描时一圈大概几百个点你放大看肯定不是连续的线这是正常现象。如果追求更密的数据可以把扫描频率调低或者换个更高采样率的型号。5.4 ROS2 和建图扩展驱动之外的上层玩法现在不少同学用的是 Ubuntu 20.04 配 ROS2 Foxy思岚也提供了 rplidar_ros2 包。用法类似创建一个ros2_ws/srcclone 对应分支用colcon build编译最后ros2 launch rplidar_ros2 rplidar.launch.py。话题同样会发sensor_msgs/LaserScan。驱动跑通之后最自然的下一步就是建图。像 cartographer 这类 SLAM 方案吃的就是/scan 里程计 IMU 这个黄金组合。激光雷达驱动就是你整个机器人感知系统的最底层它只负责把一帧一帧的扫描数据发出来之后的建图定位都建立在稳定、低延迟的激光话题之上。所以我一直强调驱动阶段多花点时间排查问题建图时你会省很多力气。6. 最后分享几个我自己的习惯踩过几次坑之后我每次拿到一台新的 RPLIDAR 雷达都会按固定流程走一遍先lsusb确认设备存在再dmesg | tail看内核日志然后用官方 SDK 的ultra_simple验证数据最后才上 ROS 驱动。很多人一上来就 roslaunch出了问题日志又乱七八糟根本分不清是系统没识别 USB、还是串口权限不够、还是协议解析有问题。还有一个习惯是固定/dev/ttyUSB0的设备名。插了多个串口设备时内核分配的设备节点会变今天 ttyUSB0明天 ttyUSB1launch 文件里的路径错了就起不来。解决方法是写一条比较严格的 udev 规则根据idVendor、idProduct和物理 USB 路径分配固定名称比如/dev/rplidar。这样 launch 文件写一次就不用改了后面接 GPS、底盘的串口设备时也不会大家抢名字。驱动这个东西说白了就是“协议解析 权限管理”真的把每一步的原理搞清楚换个品牌的雷达你也能很快上手。希望这篇能让你在 Ubuntu 20.04 上少走点弯路别像我当年那样光是权限问题就折腾了一整天。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

工业 AP 的三流射频部署实践:3×3 MIMO 链路预算、驱动适配与载板集成 2026/10/1 22:17:02

工业 AP 的三流射频部署实践:3×3 MIMO 链路预算、驱动适配与载板集成

WLE900VX 7AA给嵌入式整机配无线模块,参数表只能回答一半问题,另一半在驱动、载板和校准口径里。本文以一块双频 33 802.11ac MiniPCIe 模块(型号 WLE900VX,高通 QCA9880 平台)为参考,整理三流 MiniPCIe 无…

阅读更多 →
从v3到v4:Godot AI升级迁移指南与签名自更新系统原理 2026/10/1 22:16:55

从v3到v4:Godot AI升级迁移指南与签名自更新系统原理

从v3到v4:Godot AI升级迁移指南与签名自更新系统原理 【免费下载链接】godot-ai Production-grade MCP server and AI tools for the Godot engine. A Snap to install. Totally free and fun. 项目地址: https://gitcode.com/gh_mirrors/go/godot-ai Godot …

阅读更多 →
组态王与MCGS触摸屏Modbus TCP通讯配置、地址映射与故障排查 2026/10/1 22:16:35

组态王与MCGS触摸屏Modbus TCP通讯配置、地址映射与故障排查

上个月帮一家做乡镇污水提升泵站的朋友调系统,原来的上位机是组态王跑在一台工控机上,现场新装了两台 MCGS 的 TPC 触摸屏做就地操作面板,要求是两边都能看到同一套液位、流量、泵状态,还要能互相下发启停指令。朋友一开始打算用两…

阅读更多 →
北京智灵聚诚:律师行业AI搜索优化,增加案源曝光可能性 2026/10/1 22:16:22

北京智灵聚诚:律师行业AI搜索优化,增加案源曝光可能性

什么是GEO生成式引擎优化?什么是GEO生成式引擎优化?很多人对这个新概念还比较陌生,其实它是AI搜索时代,适配用户搜索行为变迁诞生的全新营销获客方式。随着生成式AI的快速普及,用户获取信息的方式已经发生了本质变化:过去用户找…

阅读更多 →
端侧模型实战指南:从设备即环境到边缘AI部署 2026/10/1 22:16:15

端侧模型实战指南:从设备即环境到边缘AI部署

前段时间给一款智能硬件做AI功能评估,接触了北大系团队的技术负责人,聊到“设备即环境”这个提法。初听像一句口号,再一听他补了一句“端侧模型才是未来”,我当时是不太信的——这几年端侧模型落地我看过不少,大部分情…

阅读更多 →
Python接口自动化测试实战指南:从入门到进阶 2026/10/1 22:16:08

Python接口自动化测试实战指南:从入门到进阶

一、技术背景与行业趋势在数字化转型不断加速的背景之下, 软件测试这个行业正在经历非常深刻的变革。传统的依靠人工进行手工测试的模式已经面临着非常大的效率瓶颈问题, 而接口自动化测试因为拥有不侵入系统、可以高复用的等诸多优势特点, 从而成为了保障整个系统稳定性的一个…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉