This study develops a method to acquire dense point clouds with a low-cost Velodyne VLP-16 lidar system, without using expensive GNSS positioning or IMU. Our setting consists in mounting the lidar on a motor to continuously change the scan direction, which leads to a significant increase in the point cloud density. A post-treatment reconstructs the position of each point accounting for the motor angle at the time of acquisition, and a calibration step accounts for inaccuracies in the hardware assemblage. The system is tested in indoors settings such as buildings and abandoned mines, but is also expected to give good results outdoors.
The research associated with this work is available here : https://doi.org/10.5194/gi-9-385-2020, 2020 For any question please contact me on : jason-bula@hotmail.com
Instructions to run the codes with the demo file
- First, download the example point cloud at this link: https://e.pcloud.link/publink/show?code=XZVD17ZUQLyMjOcDEHMXgtKtdvjNSA4E3pX
- The .pcap file must be in the same folder as main_demo.m
- The parameters for running the code have already been initialized and concern the rotation speed, motor synchronization, arm calibration and alpha1 parameters and alpha2.
- Run main_demo. This code create 16 ply files corresponding to the 16 bands of scan. These files can then ben merged.
- The optimisation parameters can be checked with the function calibration_alpha1.m and calibration_alpha2.m called by the calibration_demo.m file.
- Install the motor on the tripod
- Place the slip ring and its metal rod on the motor.
- Screw the lidar to the metal elbow. Caution: the lidar cable must point exactly against the bottom of the lidar.
- Connect the cables between the slip ring, lidar and power supply.
- Connect the Ethernet cable to the laptop computer
Notes: By tightening the screws correctly, the backlash between the system components should be avoided as much as possible. The tripod does not necessarily need to be leveled, but it is preferable.
- Install the "Syrp Genie mini" application on a smartphone (tested on v2.7.6)
- Install veloview (software present on the USB key provided with the lidar)
- Download the demo file here : https://github.com/jason-bula/velodyne_tls/blob/master/demo_main.m and open it with Matlab
Table 1 : Configuration for a rotation of 3,4 and 6 minutes
Rotation angle (degrees) | Acquisition time (s) | Rotation time for 360 degrees (s) | Rotation speed: degree / second |
---|---|---|---|
370 | 370 | 360 | 1 |
375 | 250 | 240 | 1.5 |
380 | 190 | 180 | 2 |
- Connect the smartphone to the motor
- Click on " video "
- Set a rotation according to Table 1 for clockwise rotation (ie: 370 degree in 370 s)
2) In Veloview :
- Open/Sensor Stream/VLP 16
- Record button/name the file (do not save yet)
3) Taking measurements: be sure not to obstruct the field of view of the lidar.
- Start the motor from "Syrp Genie Mini".
- According to the settings in table 1, you have 10 seconds to press "save" in veloview
- Wait for the end of the scan
- Stop acquisition from veloview
Calibration : The system has been modified compared to the system presented in the article. The alpha 1 and alpha 2 parameters vary much less than in the previous version but can still be calibrated using the files: "Calibration_demo.m and alpha1/alpha2_calibration.m" https://github.com/jason-bula/velodyne_tls To start the calibration, use Calibration_demo.m with the same parameters as for main_demo below.
1) Open main_demo in Matlab
- Set input file directories (.pcap file)
- Set time variable in tenths of second : (ie: 3600 for 6min, 2400 for 4min and 1800 for 3min)
- Set the rotation angle (=360)
- Set time at the first frame (= 1)
- Set alpha1 and alpha2 = 0 (or with new calibration parameter)
- R = 0
2) For the other parameter, read the comments in the code. These parameters can remain by default.
3) Run the script. Initially, the code generates 16 point clouds corresponding to each scan strip. These files can be easily merged to create a single high density point cloud. The point cloud can be denoised and assemble in CloudCompare.