🛠️ 准备编译环境
官方仓库列出的 Ubuntu 支持范围为 16.04、18.04、20.04 和 22.04,编译器需要支持 C++14。示例采用:
打开终端,安装基础工具和 PCAP 依赖:
sudo apt update
sudo apt install -y build-essential cmake git libpcap-dev
libpcap-dev 用于编译 PCAP 回放示例。只编译在线雷达功能时,也可以在 CMake 中开启 DISABLE_PCAP_PARSE,后文会给出对应命令。Eigen、PCL 和 Boost 在基础在线 Demo 中不是必需项:Eigen 用于驱动内部坐标变换,PCL 与 Boost 主要用于官方点云显示工具。
💡 Windows 用户: 如果需要在 Windows 系统中编译 rs_driver,可参考 RoboSense 官方文档:《如何在 Windows 上编译 rs_driver》。文档介绍了 Windows 环境下的依赖配置与编译流程。
📦 下载并查看官方示例
cd ~/ws
git clone https://github.com/RoboSense-LiDAR/rs_driver.git
cd ~/ws/rs_driver
在线雷达示例位于:
~/ws/rs_driver/demo/demo_online.cpp
打开源文件:
nano ~/ws/rs_driver/demo/demo_online.cpp
🌐 设置 雷达 与 主机 网络
以 RoboSense Airy 为例,将 Ubuntu 有线网卡设置为静态 IP 192.168.1.102,子网掩码设为 255.255.255.0,网关可以留空。然后打开 demo/demo_online.cpp,将雷达型号和接收端口改为:
param.input_type = InputType::ONLINE_LIDAR;
param.input_param.msop_port = 6699;
param.input_param.difop_port = 7788;
param.input_param.imu_port = 6688;
param.lidar_type = LidarType::RSAIRY;
完成后重新编译并运行 demo_online。如果雷达的 IP 或数据目的地址曾被修改,应以 RSView 中的实际网络配置为准。RoboSense 官方在线雷达配置说明
🧱 编译在线雷达 Demo
已安装 libpcap-dev 时,可以按官方方式打开 Demo 编译开关:
cd /ws/rs_driver
mkdir build && cd build
# 编译并构建 demo_online 和 demo_pcap 示例,若不需要构建示例可去掉 -DCOMPILE_DEMOS=ON
cmake -DCOMPILE_DEMOS=ON ..
make -j4
正常时会在 build/demo/ 下生成:
demo_online
demo_online_multi_lidars
demo_pcap
🚀 运行程序并判断是否成功
使用默认构建目录时运行:
cd ~/ws/rs_driver
./build/demo/demo_online
启动后先出现驱动版本、输入类型、雷达类型、端口和接收缓冲区信息。当前官方主分支的驱动核心版本在核对时为 v1.5.20;仓库更新后版本号可能变化,以本机输出为准。
收到并完成分帧后,日志会持续出现:
RoboSense Lidar-Driver Linux online demo start......
msg: 0 point cloud size: 96
msg: 1 point cloud size: 86400
msg: 2 point cloud size: 86400

🧯 根据错误码定位问题
📭 ERRCODE_MSOPTIMEOUT
驱动超过约 1 秒没有收到 MSOP。先用 tcpdump 检查数据是否到达电脑,再核对 msop_port、单播目标 IP、组播网卡、防火墙和端口占用。抓不到包时,修改 C++ 回调不会解决网络输入问题。
📐 ERRCODE_NODIFOPRECV
机械式雷达已经收到 MSOP,但缺少 DIFOP 中的角度信息。检查 difop_port 和抓包结果。wait_for_difop=false 可以帮助判断是否停在这一层,但缺少标定角度时点云可能变平或不准确。
🧩 ERRCODE_WRONGMSOPLEN / ERRCODE_WRONGMSOPID
驱动收到了与当前解码器不匹配的数据。优先核对 LidarType;型号正确后,再检查 VLAN、自定义数据层、端口是否混入另一台雷达的数据,以及固件与驱动版本。
🧱 ERRCODE_PKTBUFOVERFLOW
接收线程和处理线程之间的包队列溢出。回调中的耗时任务应移到独立处理线程,同时检查 CPU 负载、网络丢包和 Socket 接收缓冲区。官方 CMake 默认开启 ENABLE_MODIFY_RECVBUF,但它不能补偿持续阻塞的处理逻辑。
🔢 ERRCODE_ZEROPOINTS
驱动完成分帧时得到空点云。核对距离过滤、型号、DIFOP、回波配置和数据包完整性。单独出现一次与持续出现的意义不同;持续空帧更值得继续检查配置。
🧩 把 rs_driver 接入自己的 CMake 项目
📥 将 rs_driver 作为第三方库来使用
在您的 CMakeLists.txt 中,找到 rs_driver 包并链接到它。
应用项目的 CMakeLists.txt 可以写成:
find_package(rs_driver REQUIRED)
include_directories(${rs_driver_INCLUDE_DIRS})
target_link_libraries(your_project ${rs_driver_LIBRARIES})
🧷 将 rs_driver 作为子模块使用
将 rs_driver 作为子模块添加到你的项目中。
在您的 CMakeLists.txt 中,找到 rs_driver 包并链接到它。
add_subdirectory(${PROJECT_SOURCE_DIR}/rs_driver)
find_package(rs_driver REQUIRED)
include_directories(${rs_driver_INCLUDE_DIRS})
target_link_libraries(your_project ${rs_driver_LIBRARIES})
👁️ 需要点云窗口时再加入官方 Viewer
demo_online 只打印日志,不显示点云。官方 rs_driver_viewer 基于 PCL;需要它时再安装较大的可视化依赖:
cd ~/ws/rs_driver
mkdir build && cd build
# 要编译rs_driver_viewer,需要使能编译选项COMPILE_TOOLS=ON。
cmake -DCOMPILE_TOOLS=ON ..
make -j4
以 Airy 和示例端口启动:
cd ~/ws/rs_driver
./build-viewer/tool/rs_driver_viewer
-type RSAIRY
-msop 6699
-difop 7788

型号、端口和网络应与前面验证通过的 demo_online 保持一致。Viewer 弹出窗口并持续刷新点云,说明可视化链路也已经跑通。官方 Viewer 使用说明
🖥️ Ubuntu 22.04 下 Viewer 因 PCL 1.12 崩溃
RoboSense 官方 Viewer 文档指出,Ubuntu 22.04 中 PCL 1.12 与 VTK 9.0 的组合可能运行失败,并记录了 PCL 1.14 与 VTK 9.0 的可用组合。下面把 PCL 1.14.1 单独安装到 /opt/pcl-1.14,保留系统 PCL 1.12,只让新的 Viewer 构建使用 1.14。
PCL 社区也记录了 Ubuntu 22.04、PCL 1.12.1 与 VTK 9.1 环境中窗口出现后立即段错误的复现信息。该 Issue 证明了相同类型的运行现象,但本教程采用的版本切换方案以 RoboSense Viewer 文档为依据。PCL Issue #5237
这一节适用于 Viewer 已编译成功,但启动时出现 VTK 警告、段错误或窗口崩溃的情况。demo_online 本身正常时,无需为了终端日志功能编译 PCL。
🛠️ 准备 PCL 源码编译依赖
sudo apt update
sudo apt install -y
git
cmake
ninja-build
build-essential
libboost-all-dev
libeigen3-dev
libflann-dev
libvtk9-dev
Ubuntu 的 libpcl-dev 会保留系统 PCL 1.12,同时补齐 Boost、Eigen、FLANN、VTK 等构建依赖。新的 PCL 1.14.1 会安装到独立目录,不覆盖 /usr 下的系统版本。PCL 官方文档将 Boost、Eigen 和 FLANN 列为基础依赖,将 VTK 列为 pcl_visualization 的依赖。PCL 官方源码编译说明
📦 下载并配置 PCL 1.14.1
cd ~/ws
git clone --depth 1
--branch pcl-1.14.1
https://github.com/PointCloudLibrary/pcl.git
pcl-1.14.1
生成构建配置并编译:
# 生成编译配置
cmake
-S ~/ws/pcl-1.14.1
-B ~/ws/pcl-1.14.1/build-rs-viewer
-G Ninja
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=/opt/pcl-1.14
-DBUILD_visualization=ON
-DBUILD_apps=OFF
-DBUILD_examples=OFF
-DBUILD_tools=OFF
-DBUILD_global_tests=OFF
# 确认可视化模块已启用
grep '^BUILD_visualization:BOOL=' ~/ws/pcl-1.14.1/build-rs-viewer/CMakeCache.txt
# 开始编译(双线程)
cmake --build ~/ws/pcl-1.14.1/build-rs-viewer -j2
# 如果内存不足被 Killed,改用单线程
cmake --build ~/ws/pcl-1.14.1/build-rs-viewer -j1
# 编译完成后安装
sudo cmake --install ~/ws/pcl-1.14.1/build-rs-viewer
确认安装结果:
find /opt/pcl-1.14
( -name PCLConfig.cmake
-o -name 'libpcl_visualization.so*' )
正常至少能找到 PCLConfig.cmake 和带 .so.1.14 版本号的可视化库。
🧭 指定 PCL 1.14 重新编译 Viewer
# 自动找到 PCL 1.14 的 CMake 配置目录
PCL_DIR_114="$(dirname "$(find /opt/pcl-1.14 -name PCLConfig.cmake -print -quit)")"
echo "$PCL_DIR_114"
# 重新编译 rs_driver_viewer
cd ~/ws/rs_driver
cmake
-S .
-B build-pcl114
-DCOMPILE_TOOLS=ON
-DCMAKE_BUILD_TYPE=Release
-DPCL_DIR="$PCL_DIR_114"
cmake --build build-pcl114 -j2
编译完成后就可以运行官方viewer显示点云了。
cd ~/ws/rs_driver
./build-pcl114/tool/rs_driver_viewer -type RSAIRY -msop 6699 -difop 7788
🧰 rs_driver 编译失败
日志出现以下问题,可能源码的 input.hpp 漏掉了 <memory>。
note: 'std::shared_ptr' is defined in header '<memory>'; did you forget to '#include <memory>'?
修改头文件。
cd ~/ws/rs_driver
nano src/rs_driver/driver/input/input.hpp
找到:
#include <functional>
#include <thread>
#include <cstring>
在下面增加一行:
#include <memory>
修改后应为:

保存修改后重新编译即可。