Multiple topics are available in this project.
I. C++ implementation of LiDAR – camera calibration algorithms
Several sensors are mounted on the test vehicle at the university. Digital cameras and a Velodyne VLP 16 device are also used for data gathering. To combine the sensors with different modularity, we apply calibration algorithms. These methods can find the transformation between the devices’ coordinate systems. One topic is the C++ implementation of varying target-based methods. The feature points or contour lines of the target object help to find the sought calibration parameters.
a. Box calibration
One task is to implement the semi-automatic Box calibration method  in C++.
b. Sphere calibration
Another task is to implement the automatic Sphere calibration process  in C++. Matlab implementation is provided.
II. Mesh generation from registered LiDAR – camera data
Colorized point clouds can be generated if the camera and LiDAR data are aligned. Unfortunately, the point cloud of the Velodyne 16 LiDAR is very sparse. However, a 3D mesh can be generated from the point cloud to dense the visible data, and the images could be used as texture information for the triangles. The first task is to implement general algorithms, like Delaunay triangulation. Then we attempt to recognize the specialties of the provided LiDAR data and find the most effective process for the triangulation. During the texturing, occlusion problems may occur because of the different sensor positions, which must be considered based on the work of Vechersky et al. .
III. Algorithm development for cylinder-based single-beam LiDAR and camera calibration
Single-beam (2D) LiDARs are practical to sense smaller objects with robots both in indoor and outdoor environments. We want to align the 2D LiDAR to a camera, i.e., the extrinsic parameters are required. This is a rigid transformation matrix constructed by rotation and translation. For this purpose, cylinders are practical objects: they can be easily separated in the LiDAR data, and two contour lines define the cylinder in the image. We will attempt to find automatic or semi-automatic methods to solve this problem during this project. Cylinder fitting in 3D data is solved by Eberley , and this method can be built in the pipeline. Data generation in Blender using the Blensor package helps to validate the developed algorithms, and real-world data can also be provided.
IV. Algorithm development for minimal fitting of a torus
Similarly to the minimal fitting of a sphere , one topic is to analyze the torus fitting problem in 3D. The motivation comes from signed distance function research in computer graphics. The important beneficial property of a torus is that this is the simplest second-order surface with an exact signed distance function.
Besides the 3D coordinates, normal vectors of the points are also provided as an input of the algorithm. The initial task is to implement the method of Eberley  for the overdetermined case. However, we would like to replace the algebraic approach with a geometric one. Therefore, we attempt to find other minimal geometric fitting methods both for 3D position-based and for 3D position and normal vector-based problems. We also have to define the minimum number of inputs for both cases.
 Pusztai et al.: Accurate calibration of multi-lidar-multi-camera systems, Sensors, 2018
 Tóth et al.: Automatic LiDAR-Camera Calibration of Extrinsic Parameters Using a Spherical Target, IEEE International Conference on Robotics and Automation (ICRA), 2020
 P. Vechersky, M. Cox, P. Borges and T. Lowe, Colourising Point Clouds Using Independent Cameras, in IEEE Robotics and Automation Letters, 2018
 David Eberly: Least Squares Fitting of Data by Linear or Quadratic Structures, 1999
 David Eberly: Fitting 3D Data with a Torus, 2018