rs_driver是RoboSense雷达的驱动库。
可以从github下载正式版本。也可以使用git工具得到最新版本。
git clone https://github.com/RoboSense-LiDAR/rs_driver.git
rs_driver支持的雷达型号如下。
- RS-LiDAR-16
- RS-LiDAR-32
- RS-Bpearl
- RS-Bpearl-V4
- RS-Helios
- RS-Helios-16P
- RS-Ruby-128
- RS-Ruby-80
- RS-Ruby-48
- RS-Ruby-Plus-128
- RS-Ruby-Plus-80
- RS-Ruby-Plus-48
- RS-LiDAR-M1
- RS-LiDAR-M2
- RS-LiDAR-E1
rs_driver支持的操作系统及编译器如下。注意编译器需支持C++14
标准。
-
Ubuntu (16.04, 18.04, 20.04)
- gcc (4.8+)
-
Windows
- MSVC (Win10 / VS2019 已测试)
rs_driver依赖的第三方库如下。
libpcap
(可选。如不需要解析PCAP文件,可忽略)eigen3
(可选。如不需要内置坐标变换,可忽略)PCL
(可选。如不需要可视化工具,可忽略)Boost
(可选。如不需要可视化工具,可忽略)
sudo apt-get install libpcap-dev libeigen3-dev libboost-dev libpcl-dev
cd rs_driver
mkdir build && cd build
cmake .. && make -j4
sudo make install
配置您的CMakeLists.txt
文件,使用find_package()指令找到rs_driver库,并链接。
find_package(rs_driver REQUIRED)
include_directories(${rs_driver_INCLUDE_DIRS})
target_link_libraries(your_project ${rs_driver_LIBRARIES})
将rs_driver作为子模块添加到您的工程,相应配置您的CMakeLists.txt
文件。
使用find_package()指令找到rs_driver库,并链接。
add_subdirectory(${PROJECT_SOURCE_DIR}/rs_driver)
find_package(rs_driver REQUIRED)
include_directories(${rs_driver_INCLUDE_DIRS})
target_link_libraries(project ${rs_driver_LIBRARIES})
安装libpcap运行库。
解压libpcap开发者包到任意位置,并将WpdPack_4_1_2/WpdPack
的路径添加到环境变量PATH
。
如果使用MSVC编译器,可使用PCL官方提供的PCL安装包安装。
安装过程中选择 Add PCL to the system PATH for xxx
。
Windows下,rs_driver 暂不支持安装。
工程目录rs_driver/win
下,有编译实例程序和工具的MSVS工程文件。
关于Windows下编译和使用rs_driver的更多说明,可以参考如何在Windows下编译rs_driver
rs_driver在目录rs_driver/demo
下,提供了两个示例程序。
demo_online.cpp
demo_online
解析在线雷达的数据,输出点云。
demo_pcap.cpp
demo_pcap
解析PCAP文件,输出点云。编译demo_pcap
需要安装libpcap
库。
要编译这两个程序,需使能COMPILE_DEMOS
选项。
cmake -DCOMPILE_DEMOS=ON ..
关于demo_online
的更多说明,可以参考如何连接在线雷达
关于demo_pcap
的更多说明,可以参考如何解码PCAP文件
rs_driver在目录rs_driver/tool
下,提供了一个点云可视化工具rs_driver_viewer
。
要编译这个工具,需使能COMPILE_TOOS
选项。编译它需要安装PCL库和Boost库。
cmake -DCOMPILE_TOOLS=ON ..
关于rs_driver_viewer
的使用方法,请参考如何使用可视化工具rs_driver_viewer
rs_driver的主要接口文件如下。
- 点云消息定义:
rs_driver/src/rs_driver/msg/point_cloud_msg.hpp
,rs_driver/src/rs_driver/msg/pcl_point_cloud_msg.hpp
- 接口定义:
rs_driver/src/rs_driver/api/lidar_driver.hpp
- 参数定义:
rs_driver/src/rs_driver/driver/driver_param.hpp
- 错误码定义:
rs_driver/src/rs_driver/common/error_code.hpp
关于rs_driver的其他主题,请参考如下链接。
- rs_driver工程中包括哪些例子、工具、和文档?
请参考rs_driver的目录结构
- rs_driver有
v1.3.x
和v1.5.x
两个版本?该选哪一个?现在正在使用v1.3.x
,需要升级到v1.5.x
吗?如何升级?
请参考如何从v1.3.x升级到v1.5.x
- Windows上如何编译rs_driver?
- rs_driver的接口如何设计的?如何将rs_driver集成到我的系统中,有什么注意事项吗?
请参考rs_driver的线程模型与接口设计
- rs_driver如何集成到我自己的系统中?有参考的例子吗?有多雷达的例子吗?
请参考如何连接在线雷达,如何解析PCAP文件。
- 在单播、组播、广播的情况下,应该如何配置rs_driver的网络选项?在多雷达的情况下如何配置?在VLAN的情况下如何配置?可以在MSOP/DIFOP数据的前后加入自己的层吗?这些网络配置都确认无误,用抓包软件也能抓到MSOP/DIFOP包,为什么还是接收不到点云?
请参考在线雷达 - 高级主题
- 一般情况下,PCAP文件中只有一个雷达的数据,如何配置网络选项? 如果文件中有多个雷达的数据,如何配置? 在VLAN的情况下如何配置?可以在MSOP/DIFOP数据的前后加入自己的层吗?
请参考PCAP文件 - 高级主题
- 手上只有一个PCAP文件,可以根据它确定rs_driver的网络配置选项吗?包括连接在线雷达和解析PCAP文件。
请参考根据PCAP文件确定网络配置选项
- rs_driver支持什么格式的PCAP文件?如何录制这样的文件?
请参考如何为rs_driver录制PCAP文件
- 想编译示例程序/小工具,怎么指定编译选项? rs_driver丢包了,如何解决?rs_driver的CPU占用率?点云的时间戳是UTC时间,能改成本地时间吗?嵌入式平台不需要解析PCAP文件,可以不编译这个特性吗?如何启用点云坐标转换功能?
请参考rs_driver CMake编译宏
- rs_driver如何指定雷达类型?如何指定数据源为在线雷达、PCAP文件或用户数据? 想先试用一下,但是对雷达作PTP时间同步很麻烦,可以先用电脑的系统时间给点云打时间戳吗?想节省一点内存空间,可以丢弃点云中的无效点吗?点云的时间戳来自它的第一个点,还是最后一个点?可以配置吗?点云坐标转换的位移、旋转参数如何设置?机械式雷达的分帧角度可以设置吗?
请参考rs_driver配置选项
- rs_driver报告了一个错误
ERRCODE_MSOPTIMEOUT
/ERRCODE_WRONGMSOPID
/ERRCODE_PKTBUFOVERFLOW
...... 这个错误码是什么意思?
请参考rs_driver错误码
- 如何将点云变换到另一个位置和角度上去?
请参考点云坐标变换
- RoboSense雷达的数据量有多大?在什么情况下可能丢包?怎么避免?
请参考丢包问题以及如何解决
- rs_driver要占用多少CPU和内存?
请参考rs_driver的CPU和内存占用
- 点在点云中是怎样布局的?点坐标的参考系是什么?点的通道 号指什么?点的时间戳来自哪里?
请参考点云中点的布局
- RoboSense雷达怎么分帧?RoboSense使用UDP协议,万一丢包或乱序,会影响rs_driver的分帧处理吗?
请参考RoboSense雷达如何分帧
- 希望进一步深入了解rs_driver的设计细节?
请参考rs_driver源代码解析