LidarView源码分析(六)VelodynePlugin

简介

Plugins/VelodynePlugin文件夹中是关于Velodyne雷达数据解析的插件,其文件树如下:

VelodynePlugin
├─CalibrationFiles
├─Filters
├─Testing
│  └─Data
│      ├─HDL-128
│      │  └─GroundTruth
│      ├─HDL-64_Dual
│      │  └─GroundTruth
│      ├─HDL-64_Dual-autocalib
│      │  └─GroundTruth
│      ├─HDL-64_Single
│      │  └─GroundTruth
│      ├─HDL-64_Single-autocalib
│      │  └─GroundTruth
│      ├─VLP-16_Dual
│      │  └─GroundTruth
│      ├─VLP-16_Single
│      │  └─GroundTruth
│      ├─VLP-32c_Dual
│      │  └─GroundTruth
│      └─VLP-32c_Single
│          └─GroundTruth
├─Utilities
├─VelodynePacketInterpreters
└─VelodynePositionPacketInterpreters

CalibrationFiles包含了当前流行的一系列Velodyne雷达的配置文件,用于对雷达进行配置。

Filters中是一个平面滤波器。

Testing中包含测试代码和数据。

Utilities是lua语言写的一些工具。

VelodynePacketInterpreters和VelodynePositionPacketInterpreters文件中是数据解析的代码。

Filters,VelodynePacketInterpreters和VelodynePositionPacketInterpreters文件夹中是三个vtk模块。

ParaView插件

Velodyne雷达数据解析是以ParaView插件的形式加载到LidarView程序中的。LidarView即是一个ParaView标准开发的程序。

按照ParaView插件的开发模式,VelodynePlugin文件夹中需要由paraview.plugin和CMakeLists.txt文件。paraview.plugin文件中声明了该插件的名称,描述信息以及依赖的插件,该文件如下:

NAME
  VelodynePlugin
DESCRIPTION
  Reader and other filter specific for Velodyne
REQUIRES_MODULES
  VTK::CommonCore
  LidarView::FiltersProcessing
  LidarView::IOLidar
  LidarView::IONetwork
  LidarView::IOGeolocation

以上文件表明,最后生成的插件名称为VelodynePlugin.dll(windows系统)。

CMakeLists.txt执行了添加插件以及一些配置文件复制安装过程。其文件如下:


# Install data files
set(calib_files # 雷达配置文件名称列表
  "VLP-16.xml"
  "HDL-32.xml"
  "VLP-32c.xml"
  "Puck Hi-Res.xml"
  "Puck LITE.xml"
  "Alpha Prime.xml")

paraview_add_plugin(VelodynePlugin # 插件名称
  REQUIRED_ON_CLIENT # 客户端加载
  REQUIRED_ON_SERVER # 服务端加载,以上两个参数,表明该插件会同时在服务端和客户端加载
  VERSION "2.0" # 版本号
  MODULES # 该插件包含以下三个模块
    VelodynePlugin::Filters
    VelodynePlugin::VelodynePacketInterpreters
    VelodynePlugin::VelodynePositionPacketInterpreters
  MODULE_FILES # 包含模块的vtk.module文件路径
    "${CMAKE_CURRENT_SOURCE_DIR}/Filters/vtk.module"
    "${CMAKE_CURRENT_SOURCE_DIR}/VelodynePacketInterpreters/vtk.module"
    "${CMAKE_CURRENT_SOURCE_DIR}/VelodynePositionPacketInterpreters/vtk.module"
)

# Copy the calibration to the build folder
foreach (file ${calib_files})
  configure_file("CalibrationFiles/${file}" "${PROJECT_BINARY_DIR}/share/${file}" COPYONLY)
endforeach ()

# Install step
set(installfile_dest share)
if (APPLE)
  set(installfile_dest "${LV_INSTALL_LIBRARY_DIR}/../Resources")
endif ()
foreach (file ${calib_files})
  install(FILES "${PROJECT_BINARY_DIR}/share/${file}" DESTINATION ${installfile_dest})
endforeach ()

option(BUILD_TESTING "Enable testing" OFF)
if (BUILD_TESTING)
  add_subdirectory(Testing)
endif ()

paraview_add_plugin的作用是添加一个paraview插件,其声明如下:

paraview_add_plugin(<name>
  [REQUIRED_ON_SERVER] [REQUIRED_ON_CLIENT]
  VERSION <version>

  [MODULE_FILES <vtk.module>...]
  [MODULE_ARGS <arg>...]
  [MODULES <module>...]
  [SOURCES <source>...]
  [SERVER_MANAGER_XML <xml>...]
  [MODULE_INSTALL_EXPORT <export>]

  [UI_INTERFACES <interface>...]
  [UI_RESOURCES <resource>...]
  [UI_FILES <file>...]

  [PYTHON_MODULES <module>...]

  [INITIALIZERS <initializerFunction>...]

  [EXTRA_INCLUDES <file>...]

  [REQUIRED_PLUGINS <plugin>...]

  [EULA <eula>]
  [XML_DOCUMENTATION <ON|OFF>]
  [DOCUMENTATION_DIR <directory>]
  [DOCUMENTATION_ADD_PATTERNS <pattern>...]
  [DOCUMENTATION_TOC <string>]
  [DOCUMENTATION_DEPENDENCIES <target>...]

  [FORCE_STATIC <ON|OFF>])

  [TRANSLATIONS_DIRECTORY <directory>]
  [TRANSLATIONS_TARGET    <target>]

REQUIRED_ON_SERVER:该插件需要加载在服务端才能正常工作。

REQUIRED_ON_CLIENT:该插件需要加载在客户端才能正常工作。

VERSION:必填项,插件的版本号。

MODULE_FILES:vtk.module文件的路径列表,vtk.module表述了插件包含的模块。

MODULE_ARGS:传递给 vtk_module_build 的包含模块的参数。

MODULES:插件需要包含的模块。这些模块会被客户端服务端封装,并且处理他们自己的服务管理器XML文件。

SOURCES:插件文件的源代码。

SERVER_MANAGER_XML:插件的服务管理XML文件。

UI_INTERFACES:初始化界面(有序排列)。plugin接口部分查看更多细节。

MODULE_INSTALL_EXPORT:默认为"<name>"。如果提供,所有模块都会添加到该导出集合。

UI_RESOURCES:插件的Qt资源文件。

UI_FILES:Qt中的*.ui文件。

PYTHON_MODULES:插件中包含的python模块。

INITIALIZERS:加载插件时调用的free function的有序列表(如果需要,在‘extra _ includes’中声明)。每个函数必须是可调用的,没有参数。

EXTRA_INCLUDES:生成插件需要的头文件(比如 INITIALIZERS)。

REQUIRED_PLUGINS:生成插件需要依赖的其他插件。这些插件在构建时是不需要的,因此不会在构建时检查这些插件是否存在。

EULA:运行时插件初始化之前,包含显示为最终用户许可协议的内容的文件。

XML_DOCUMENTATION:默认为“ON”。如果为真,会根据XML文件产生文档。

DOCUMENTATION_DIR:如果指定,该文件夹下的`*.html`, `*.css`, `*.png`, `*.js`, and `*.jpg`文件会被复制,并在文档中使用。

DOCUMENTATION_ADD_PATTERNS:如果指定,则为“DOCUMENTATION_DIR”中的文档文件添加除默认模式之外的模式(参见“DOCUMENTATION_DIR”帮助)

DOCUMENTATION_TOC:如果指定,使用此字符串描述文档的目录。

EXPORT:已被弃用。使用paraview_plugin_build(INSTALL_EXPORT)代替。

FORCE_STATIC:默认为OFF。如果设置,插件会被编译成静态库形式。

TRANSLATIONS_DIRECTORY:默认为`${CMAKE_CURRENT_BINARY_DIR}/Translations`。存储翻译文件的文件夹路径。

TRANSLATION_TARGET:要将ts文件添加为依赖项的目标的名称。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值