🧭 rslidar_sdk 与 rs_driver 的分工
rslidar_sdk 包含 RoboSense 的驱动核心 rs_driver,并增加 ROS 1、ROS 2 消息发布和 RViz 配置。目标是让点云进入 ROS 2 时,优先使用 rslidar_sdk;目标是把雷达直接接入自研 C++ 程序时,使用独立的 rs_driver 更合适。
RViz 中有点云,说明数据已经进入 ROS 2 并能够显示;它还不能证明雷达坐标已经正确转换到底盘坐标,也不等于 SLAM 或导航已经完成。
🛠️ 准备硬件与软件环境
示例环境如下:
电脑应已完成 ROS 2 Humble Desktop 安装。以下命令会下载源码、安装编译依赖并创建工作空间,不会修改雷达内部参数。雷达的供电电压、极性、接口线序、默认 IP 和端口应以对应型号 User Guide 为准。
官方仓库在 2026 年 8 月核对时明确列出 Ubuntu 22.04 + ROS 2 Humble。若使用其他 Ubuntu 或 ROS 2 发行版,启动文件与依赖行为可能不同,建议先查看仓库 README 中的版本表。
📦 下载 rslidar_sdk 与消息包
rslidar_sdk 把 rs_driver 作为 Git 子模块。只下载 GitHub 自动生成的 Source code ZIP 时,子模块内容可能缺失;使用 Git 时可通过 --recurse-submodules 一次取回完整源码。rslidar_msg是用于定义雷达消息类型的功能包也一并下载到与rslidar_sdk相同的工作空间下。
source /opt/ros/humble/setup.bash
mkdir -p ~/rslidar_ws/src
cd ~/rslidar_ws/src
git clone --recurse-submodules
https://github.com/RoboSense-LiDAR/rslidar_sdk.git
git clone
https://github.com/RoboSense-LiDAR/rslidar_msg.git
🧱 安装依赖并编译工作空间
下面这组命令会安装 YAML 与 PCAP 依赖,并用 colcon 编译两个 ROS 2 包。执行前应能正常运行 ros2 --help,且当前终端已加载 Humble 环境。
sudo apt update
sudo apt install -y libyaml-cpp-dev libpcap-dev
cd ~/rslidar_ws
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash
正常时,编译结尾会列出 rslidar_msg 和 rslidar_sdk 已完成。可以继续确认包是否进入当前环境:
ros2 pkg prefix rslidar_msg
ros2 pkg prefix rslidar_sdk
若提示 package not found,先确认 colcon build 是否报错,再确认当前终端执行过:
source /opt/ros/humble/setup.bash
source ~/rslidar_ws/install/setup.bash
colcon: ROS 2 常用的工作空间构建工具,负责按依赖顺序编译多个软件包。
⚙️ 配置在线雷达与点云 Topic
配置文件位于~/ws/rslidar_ws/src/rslidar_sdk/config/config.yaml。
编辑:
nano ~/ws/rslidar_ws/src/rslidar_sdk/config/config.yaml
第一次只验证点云时,可使用:
common:
msg_source: 1
send_packet_ros: false
send_point_cloud_ros: true
lidar:
- driver:
lidar_type: RSAIRY
msop_port: 6699
difop_port: 7788
imu_port: 0
min_distance: 0.2
max_distance: 200
use_lidar_clock: true
dense_points: false
start_angle: 0
end_angle: 360
ros:
ros_frame_id: rslidar
ros_recv_packet_topic: /rslidar_packets
ros_send_packet_topic: /rslidar_packets
ros_send_imu_data_topic: /rslidar_imu_data
ros_send_point_cloud_topic: /rslidar_points
不同型号只调整相应的 lidar_type,根据自己的雷达填入相应的枚举名。
具体字段含义以及配置方法可参照官方配置教程:rslidar_sdk:配置参数说明
🗂️ 公开驱动中的型号名称
lidar_type 使用驱动枚举名,不使用销售 SKU。当前公开仓库列出的常用映射如下:
没有出现在公开枚举中的型号不宜仅凭名称相近套用其他配置。例如 RSE1 只表示公开驱动列出的 E1;E1R、E2、EM4 等型号应先核对对应 User Guide、SDK 版本或厂商交付的软件包。
🚀 启动驱动并检查 Topic
加载 ROS 2 和工作空间环境并启动示例程序:
source /opt/ros/humble/setup.bash
source ~/rslidar_ws/install/setup.bash
ros2 launch rslidar_sdk start.py
官方 start.py 会启动 rslidar_sdk_node 和 RViz 2。终端首先应显示实际加载的 config.yaml 路径,随后出现驱动版本、参数和运行日志。
运行以下命令可以查看现有的话题:
ros2 topic list

其中/rslidar_points为雷达发布的点云数据的话题。
👁️ 在 RViz 2 中确认点云
仓库自带的 RViz 2 配置默认使用:
点云正常时,墙面、地面、门洞或实验室支架会形成稳定结构;移动物体或缓慢转动雷达时,点云画面会产生对应变化。只有零散点、固定噪声或明显扭曲时,应先核对型号、回波模式、端口、DIFOP 和时间配置,而不是直接进入 SLAM。

🧯 没有点云时按链路排查
📭 ERRCODE_MSOPTIMEOUT
该状态表示驱动超过约 1 秒没有收到 MSOP 数据包。按下面顺序检查:
sudo tcpdump -ni <NETWORK_INTERFACE> udp port <MSOP_PORT> -c 20
sudo ss -lunp | grep -E ':6699|:7788'
抓不到包时,问题通常还在供电、网线、IP、子网或雷达发送目标配置。能抓到包但驱动超时时,继续确认 msop_port、单播目标 IP、组播配置、防火墙,以及 RSView 或另一个驱动进程是否已经占用同一端口。
🧩 ERRCODE_WRONGMSOPLEN 或 ERRCODE_WRONGMSOPID
驱动已收到 UDP 数据,但数据包长度或标识与当前解码器不一致。优先核对 lidar_type。如果型号无误,再检查 VLAN、UDP 数据前后的自定义字节,以及雷达固件和 SDK 版本是否配套。
📐 收到 MSOP 但没有完整点云
机械式雷达需要 DIFOP 中的角度配置。出现 ERRCODE_NODIFOPRECV 时,检查 difop_port 和抓包结果。wait_for_difop=false 可用于诊断是否卡在 DIFOP 阶段,但缺少正确角度信息时,点云可能变平或失真,因此不适合作为最终修复。
🗃️ 配置文件加载失败
启动日志会打印实际读取的配置路径。出现格式错误时,先检查 YAML 缩进、Tab、冒号和列表层级,再确认编辑的是该路径下的文件。使用 --symlink-install 可以减少源码配置与安装空间之间的混淆,但启动日志仍是最终判断依据。
🐢 Humble 下点云频率偏低
官方仓库另外提供 humble_start.py,用于在 ROS 2 Humble 中切换到 Cyclone DDS。只有在普通 start.py 已有点云、但订阅频率明显异常时再使用:
ros2 launch rslidar_sdk humble_start.py
该启动文件会检查并可能安装 ros-humble-rmw-cyclonedds-cpp,首次运行会请求 sudo 密码。官方文档也提醒,ros2 topic hz 的测量本身可能受订阅实现影响,可以同时参考 RViz 的接收帧率或另一个订阅程序。
🔗 官方资料
##