## Appendix A  
The notations used throughout this paper have been listed in Table A1. \begin{table}
\begin{tabular}{l l} \hline \hline \multicolumn{1}{c}{**Symbol**} & \multicolumn{1}{c}{**Explanation**} \\ \hline \(\gamma\) & Angular resolution of rotating 2D lidar in the direction of motor shaft. \\ \(\pi\) & Number of 2D lidar scans included in a 3D scan. \\ \(f\) & The scanning frequency of 2D lidar is \(f\), which can be found in its product manual. \\ \(T\) & The time used by a 3D scanning of a rotating 2D lidar is \(T\). \\ \(\omega\) & The Angular velocity of the motor shaft in a rotating 2D lidar is \(\omega\). \\ \(L\) & The coordinate frame of 2D lidar. \\ \(O^{\prime}\) & The coordinate frame of rotating unit (before attitude correction). \\ \(O\) & The coordinate frame of rotating unit (after attitude correction). \\ \(r\) & Ranging data of 2D lidar. \\ \(\theta\) & The azimuth angle in the scanning sector of the 2D lidar corresponding to the ranging data \(r\). \\ \(P_{L}^{\alpha}\) & A3D point with respect to coordinate frame \(L\), it is calculated according to the data of 2D LIDAR. \\ \(R_{L}^{\alpha}\) & Rotation matrix from coordinate frame \(L\) to coordinate frame \(O^{\prime}\) at the moment when a 3D scan of a rotating 2D lidar is started. \\ \(t_{L}^{O^{\prime}}\) & The translation vector from coordinate frame \(L\) to coordinate frame \(O^{\prime}\) at the moment when a 3D scan of a rotating 2D lidar \\ \(t_{L}^{\alpha}\) & is started. \\ \(\varphi_{motor}\) & Rotation angle of the motor shaft corresponding to the ranging data \(r\). \\ \(R_{M}\) & The rotation matrix calculated according to the rotation angle \(\varphi_{motor}\) of the motor shaft. \\ K & The total number of points in the 3D point cloud obtained by a 3D scan of a rotating 2D lidar. \\ \(k\) & The ordinal number of a point in all points of a 3D point cloud. \\ \(P_{O^{\prime}}\) & A3D point with respect to coordinate frame \(O^{\prime}\), which is converted from point \(p_{L}\) in coordinate frame \(L\). \\ \(\varphi_{offset}\) & The deflection angle of the coordinate frame \(O^{\prime}\) relative to the coordinate frame \(O\) in the \(Z\)-axis direction. \\ \(R_{O^{\prime}}^{O^{\prime}}\) & The rotation matrix calculated according to \(\varphi_{offset}\). \\ \(P_{O^{\prime}}\) & A3D point with respect to coordinate frame \(O\), which is converted from point \(p_{O^{\prime}}\) in coordinate frame \(O^{\prime}\). \\ \(C_{O^{\prime}}\) & A3D point cloud with respect to coordinate frame \(O^{\prime}\), which is collected by a rotating 2D lidar. \\ \(C_{ni}\) & A point cloud corresponding to the triangular plate extracted from the point cloud \(C_{O^{\prime}}\). \\ \(c\) & The center point of the triangular plate. \\ \(\alpha\) & The angle between the middle line of the triangular plate and the front direction of the prototype (which is also the positive direction of the axis \(X\) of coordinate frame \(O\)). \\ \(\beta\) & The angle between the middle line of the triangular plate and the axis \(X^{\prime}\) of the coordinate frame \(O^{\prime}\). \\ \(C_{O}\) & A3D point cloud with respect to coordinate frame \(O\), which is converted from point cloud \(C_{O^{\prime}}\) through rigid body transformation. \\ \(n_{1}\)-\(n_{4}\) & The unit normal vectors of the planes corresponding to the 4 walls of the room in the point cloud \(C_{O}\), respectively. \\ \(i,j\) & The unit normal vectors corresponding to \(X\)-axis and \(Y\)-axis of coordinate frame \(O\), respectively. \\ \(E_{\rm{anti}}\) & The attitude error of point cloud \(C_{O}\), which is expressed as the sum of absolute values of vector inner product. \\ \(\varphi_{\rm{error}}\) & The attitude error of point cloud \(C_{O}\), which is expressed as an angle. \\ \(R_{\rm{error}}\) & The rotation matrix calculated according to the angle \(\varphi_{\rm{error}}\). \\ \(f(\varphi_{\rm{error}})\) & A function showing the attitude error of the point cloud \(C_{O}\), with \(\varphi_{\rm{error}}\) as the independent variable.