I’m trying to add support for a new LiDAR model in LidarView, but currently, the software doesn’t support this sensor natively. I’d like to implement a custom plugin, similar to how the Livox plugin is integrated.
Here are my main questions:
- Plugin Integration:
- What are the steps to follow when adding a new plugin in LidarView?
- Is there any official documentation or developer guide that explains how to properly implement and register a new plugin?
- Sensor Configuration UI:
- How do I add a new interpreter and sensor model name to the sensor configuration UI in LidarView?
- Where and how are the options for supported sensors populated in the UI?
- Livox SDK Integration:
- How is the Livox SDK integrated within LidarView?
- Are there any example files, plugin templates, or interface patterns I can follow to replicate the integration process?
My plan is to follow a similar path as the Livox plugin — using a vendor SDK to interpret packets and convert them to usable data inside LidarView. Any help would be much appreciated!
Thanks in advance.
Hello @Silver_11,
We don’t have any documentation to implement a new lidar interpreter in LidarView yet, but I can describe the required steps here:
- You will first need to implement an interpreter plugin. We have two working exemple in LidarView repository where we tried to be as simple as possible in the implementation, a time based lidar interpreter where frame splitting is based on a time delay (eg Livox LiDARs) or a classic rotative lidar interpreter (eg Velodyne or Hesai LiDARs) where the frame splitting is based on azimuth.
- The UI is generated with the paraview proxy system using .xml files. It is a powerfull tool but it can be a bit complex and overwhelming at first. In the example readme you will have a description for each file and what are their purpose.
- The Livox plugin implementation code is available here. Note that we didn’t directly use the livox sdk as it was easier for us to just reimplement it using Livox documentation.
- If you want to contribute to LidarView open source code by adding this new plugin. I can help you set up the repository and add it as a submodule in LidarView.
- To build the plugin you can either add it in LidarView
Plugins/
directory next to other interpreters or you can choose to build it externally with a find_package(LidarView) and using ParaView macro CMake code to build the plugin, as done here.
- Testing functions are also available. Example of use available here for livox. It will check that your interpreter point information are coherent, and that it is compatible with our SLAM algorithm.
Let me know if you have more questions.
Timothée
Hi @Timothee_Couble
Thank you for the reply.
To add a new LiDAR plugin in LidarView, do I only need to place it under lidarview/src/plugins
, or do I also need to understand and modify the LVCore modules like IO/Lidar
and IO/Network
? These modules contain files such as vtkLidarReader
, vtkLidarStreamer
, and vtkUDPReceiver
, which handle live sensor data streaming and reading from PCAP files.
Also, how does LidarView determine the port number, sensor vendor, and model in order to decide which plugin should be used?
You need to implement the plugin under lidarview/src/Plugins
. In the plugin, than you can use the vtkLidarReader
and vtkLidarStream
in the proxy files (.xml
) to implement your own reader / stream, with the corresponding interpreter. Please see this readme for more detail about the stucture of one plugin.
The port, sensor and models are set directly by the user (you can set default values in the .xml
files) in the properties dock in advance mode or the configuration dialog in LidarView when you click on open pcap: