# 3D Point Cloud Generation Based on Multi-Sensor Fusion
## 3 A Method of 3D Point Cloud Generation by Multi-Sensor Fusion
### Research on Track Mobile Laser Measurement System (TMLS)
#### 3.1.3 System Calibration  
To complete the spatial synchronization of each TMLS sensor, we used a method of system calibration to unify the spatial coordinate system. By calibrating the scanner, the relative position between the scanner center and the car body was obtained, and the scanner coordinate system and the car body coordinate system were unified. By calibrating the IMU, the attitude angle error between IMU and the car body in the engineering coordinate system was obtained, and the IMU coordinate system and the car body coordinate system were unified. To prevent the horizontal attitude angle of IMU and zero-degree value of angle measurement of the inclinometer from being parallel to the horizontal plane and closure error of the IMU heading angle [24], the zero-degree deviation of horizontal inclination and the closure error of the heading angle were calibrated. (1) Scanner Calibration  
In the scanner calibration, the total station and target points were used to calculate the conversion parameters between the scanner coordinate system and the car body coordinate system. First, we stuck four reflectors on the tunnel wall at the same section and stuck four reflectors on the rail car. We used the total station to measure the coordinates of the centers of these seven reflectors. The scanner was turned on to scan the area where the target was located and extracted the target center coordinates from the point cloud, as shown in Figure 10.  
Figure 9: Program interface. To calculate the calibration parameter, we first defined the car body coordinate system (RC), the scanner coordinate system (RS) and the total station coordinate system (RT). First, the conversion parameters between RT and RS were calculated through the center points of the four reflectors on the tunnel wall. Then we calculated the conversion parameters between RT and RC through the three common points on the car body. Finally, the conversion parameters between RS and RC were obtained through two translation rotations, and then the point cloud data could be converted from RS to RC. 1. IMU Calibration  
The IMU coordinate system (RI) and RC could not be completely coincident due to the influence of the instrument installation error; therefore, it was necessary to calibrate the IMU installation angle error. Figure 11 shows the sensor coordinate systems and their relative relations. In the IMU calibration, the total station was used to measure the engineering coordinate system coordinates of the three points A, B and C, on the body of the rail car. According to Equation (16), the attitude angle of the car at that time could be calculated and then compared with the attitude angle observed by the IMU; the difference of the three-axis attitude angle between RI and RC could be obtained. The average value was obtained through multiple measurements of the error calibration of the IMU installation angle as the result. Figure 11: Relationship between the plane coordinate systems of each sensor. Figure 10: Scanner Calibration. \[ \begin{split}& Heading=arctan\left(\frac{y_{A}-y_{B}}{x_{A}-x_{B}} \right)\\ & Pitch=arcsin\left(\frac{z_{A}-z_{B}}{\sqrt{(x_{A}-x_{B})^{2}+(y_{A }-y_{B})^{2}+(z_{A}-z_{B})^{2}}}\right)\\ & Roll=arcsin\left(\frac{z_{C}-(z_{A}+z_{B})/2}{\sqrt{(x_{C}-(x_{ A}+x_{B})/2)^{2}+(y_{C}-(y_{A}+y_{B})/2)^{2}+(z_{C}-(z_{A}+z_{B})/2)^{2}}}\right) \end{split}  \tag{16}\]
3. Horizontal inclination zero deviation and heading angle closure difference calibration  
We used a method of positive and negative measurement for calibration. Before operation, we placed the stationary trolley on the track facing the direction of measurement to measure the angle, then turned the trolley 180\({}^{\circ}\) and measured again. As shown in Figure 12, the error between the measured horizontal inclination angle and the actual inclination angle was \(\Delta\alpha\). The actual inclination angle as \(\beta\); therefore, the measured value was \(A_{1}=\beta+\Delta\alpha\). The correct inclination \(\beta=\frac{(A_{1}-A_{2})}{2}\).