简介
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文件添加为依赖项的目标的名称。