🧭 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
cc9bde1901f86c9c8152e96895c5b82e.png

其中/rslidar_points为雷达发布的点云数据的话题。

👁️ 在 RViz 2 中确认点云

仓库自带的 RViz 2 配置默认使用:

点云正常时,墙面、地面、门洞或实验室支架会形成稳定结构;移动物体或缓慢转动雷达时,点云画面会产生对应变化。只有零散点、固定噪声或明显扭曲时,应先核对型号、回波模式、端口、DIFOP 和时间配置,而不是直接进入 SLAM。

91f97105ba592464bc1c443ec33f9a66.png

🧯 没有点云时按链路排查

📭 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 的接收帧率或另一个订阅程序。

🔗 官方资料

##

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注