Skip to content

Latest commit

 

History

History
267 lines (146 loc) · 8.93 KB

README_CN.md

File metadata and controls

267 lines (146 loc) · 8.93 KB

1 rs_driver预览

English Version

1.1 概述

rs_driver是RoboSense雷达的驱动库。

可以从github下载正式版本。也可以使用git工具得到最新版本。

git clone https://github.com/RoboSense-LiDAR/rs_driver.git

1.2 支持的雷达型号

rs_driver支持的雷达型号如下。

  • RS-LiDAR-16
  • RS-LiDAR-32
  • RS-Bpearl
  • 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-M3
  • RS-LiDAR-E1
  • RS-LiDAR-MX

1.3 支持的操作系统

rs_driver支持的操作系统及编译器如下。注意编译器需支持C++14标准。

  • Ubuntu (16.04, 18.04, 20.04)

    • gcc (4.8+)
  • Windows

    • MSVC (Win10 / VS2019 已测试)

1.4 依赖的第三方库

rs_driver依赖的第三方库如下。

  • libpcap (可选。如不需要解析PCAP文件,可忽略)
  • eigen3 (可选。如不需要内置坐标变换,可忽略)
  • PCL (可选。如不需要可视化工具,可忽略)
  • Boost (可选。如不需要可视化工具,可忽略)

1.5 Ubuntu下的编译及安装

1.5.1 安装第三方库

sudo apt-get install libpcap-dev libeigen3-dev libboost-dev libpcl-dev

1.5.2 编译

cd rs_driver
mkdir build && cd build
cmake .. && make -j4

1.5.3 安装

sudo make install

1.5.4 作为第三方库使用

配置您的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})

1.5.5 作为子模块使用

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})

1.6 Windows下的编译及安装

1.6.1 安装第三方库

1.6.1.1 libpcap

安装libpcap运行库

解压libpcap开发者包到任意位置,并将WpdPack_4_1_2/WpdPack 的路径添加到环境变量PATH

1.6.1.2 PCL

如果使用MSVC编译器,可使用PCL官方提供的PCL安装包安装。

安装过程中选择 Add PCL to the system PATH for xxx

1.6.2 安装

Windows下,rs_driver 暂不支持安装。

1.6.3 VS工程文件

工程目录rs_driver/win下,有编译实例程序和工具的MSVS工程文件。

关于Windows下编译和使用rs_driver的更多说明,可以参考如何在Windows下编译rs_driver

1.7 示例程序

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文件

1.8 点云可视化工具

rs_driver在目录rs_driver/tool 下,提供了一个点云可视化工具rs_driver_viewer

要编译这个工具,需使能COMPILE_TOOS选项。编译它需要安装PCL库和Boost库。

cmake -DCOMPILE_TOOLS=ON ..

关于rs_driver_viewer的使用方法,请参考如何使用可视化工具rs_driver_viewer

1.9 接口文件

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

1.10 更多主题

关于rs_driver的其他主题,请参考如下链接。

  • rs_driver工程中包括哪些例子、工具、和文档?

​ 请参考rs_driver的目录结构

  • rs_driverv1.3.xv1.5.x两个版本?该选哪一个?现在正在使用v1.3.x,需要升级到v1.5.x吗?如何升级?

​ 请参考如何从v1.3.x升级到v1.5.x

  • Windows上如何编译rs_driver

​ 请参考如何在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源代码解析