## Appendix C  
Our algorithm is shown in Algorithm A1. ``` Input: 50 point clouds \(\mathbf{C}_{O}\), that is, \(\left\{\mathbf{C}_{O}^{1},\mathbf{C}_{O}^{2},\mathbf{C}_{O}^{3},\ldots,\mathbf{C }_{O}^{50}\right\}\) Output: Angle \(a\), the installation angle of triangular plate
1 begin program FindAngleAlpha \((\left\{\mathbf{C}_{O}^{1},\mathbf{C}_{O}^{3},\mathbf{C}_{O}^{3},\ldots, \mathbf{C}_{O}^{50}\right\})\)  Step1: for each point cloud \(\mathbf{C}_{O}\) in \(\left\{\mathbf{C}_{O}^{1},\mathbf{C}_{O}^{2},\mathbf{C}_{O}^{3},\ldots, \mathbf{C}_{O}^{50}\right\}\), extract the planes corresponding to the 4 walls, and calculate the unit normal vectors \(n_{1}-n_{4}\) of these 4 planes. The unit normal vectors extracted from 50 point clouds form the data sets \(\mathbf{N}_{1}-\mathbf{N}_{4}+\)ExtractNormal(\(\left\{\mathbf{C}_{O}^{1},\mathbf{C}_{O}^{2},\mathbf{C}_{O}^{3},\ldots,\mathbf{C}_{O}^{50}\right\}\))
4 Step2: calculate angle \(a\) through Levenberg-Marquardt method
5\(k_{\text{area}}=0\); \(k_{\text{max}}=500\); \(a_{0}:=30^{\circ}\); \(v:=2\); \(\varepsilon_{1}=10^{-9}\); \(\varepsilon_{2}=10^{-9}\); \(\tau=10^{-6}\)
6\(A\)=\(J(a)^{\text{T}}J(a)\); \(g:=J(a)^{\text{T}}F_{\text{cost}}(a)\)
7\(f\): \(n=(1\,|\,g\,|_{1}\,\leq\,\varepsilon_{1})\); \(h:=\tau^{*}\max\{a_{\text{inj}}\}\)
8 while(not found) and \((k_{\text{area}}\,k_{\text{max}})\)
9\(k_{\text{area}}=k_{\text{area}}=k_{\text{area}}+1\); Solve \((A+\mu)J(a)=-g\)
10 if\(\,|\,1\,\Delta\,|\,\leq\,\varepsilon_{2}(1\,|\,\,\varepsilon\,|\,\,\varepsilon \,|\,\,\varepsilon\,|\,\,\varepsilon_{1})\)
11 found: \(=\) true
12 else
13\(\rho:=\frac{\Gamma_{\text{min}}(a+\Delta)-\Gamma_{\text{min}}(a)}{\Gamma_{ \text{max}}(a)+\Gamma_{\text{max}}(a)+\Gamma_{\text{max}}(a)}=\frac{\Gamma_{ \text{max}}(a+\Delta)-\Gamma_{\text{min}}(a)}{\Gamma(a)\Delta a}\)
14 if\(\rho>0\)
15\(\alpha\)= \(\alpha\) + \(\Delta\alpha\)
16\(A\)=\(J(a)^{\text{T}}J(a)\); \(g:=J(a)^{\text{T}}F_{\text{cost}}(a)\)
17 found: \(=(1\,|\,g\,|_{1}\,\leq\,\varepsilon_{1})\)
18\(\rho\)= \(\mu^{*}\max[1/3,1-(2\rho-1)^{3}]\); \(v:=2\)
19 else
20\(\mu\)= \(\mu^{*}v\); \(v:=2^{*}v\)
21 endif
22 endif
23 endif
24 endif
25 endif
26
27
28
29
30
310
32
33
34
35
36
37
38
39
39
40
411
42
43
44
45
46
47
48
49
500
510
520
521
511
522
530
531
54
549
551
552
56
57
580
591
592
501
502
503
513
514
524
53
549
554
56
570
581
593
594
595
606
596
6107
620
631
640
641
655
656
667
682
683
684
685
697
6986
700
69



* [PERSON] et al. (2019) [PERSON]; [PERSON]; [PERSON]; [PERSON] Calibration of rotating 2D LIDAR based on simple plane measurement. _Sens. Rev._**2019**, _39_, 190-198. [CrossRef]
* [PERSON] and [PERSON] (2015) [PERSON]; [PERSON] Automatic Calibration of Spinning Actuated Lidar Internal Parameters. _J. Field Robot._**2015**, _32_, 723-747. [CrossRef]
* [PERSON] et al. (2018) [PERSON]; [PERSON]; [PERSON]; [PERSON]; [PERSON]; [PERSON]; [PERSON]; [PERSON]. An Improved Calibration Method for a Rotating 2D LIDAR System. _Sensors_**2018**, _18_, 497. [CrossRef] [PubMedMed]
* [PERSON] et al. (2015) [PERSON]; [PERSON] [PERSON]; [PERSON]; [PERSON] [PERSON]; [PERSON] [PERSON]; [PERSON] [PERSON] Construction and Calibration of a Low-Cost 3D Laser Scanner with 360 degrees Field of View for Mobile Robots. In Proceedings of the 2015 IEEE International Conference on Industrial Technology (ICIT), Seville, Spain, 17-19 March 2015; pp. 149-154. * [PERSON] (2018) [PERSON] [PERSON]; [PERSON]; [PERSON] 3D Scene Reconstruction Based on a 2D Moving LiDAR. In _International Conference on Applied Informatics_; Springer: Cham, Switzerland, 2018. * [PERSON] et al. (2016) [PERSON]; [PERSON] [PERSON]; [PERSON]; [PERSON] Calibration of Short Range 2D Laser Range Finder for 3D SLAM Usage. _J. Sens._**2016**, _2016_. [CrossRef]
* [PERSON] et al. (2015) [PERSON]; [PERSON]; [PERSON]; [PERSON] Fast Calibration of Rotating and Swivelling 3-D Laser Scanners Exploiting Measurement Redundancies. In Proceedings of the 2015 IEEE/RSJ International Conference on Intelligent Robots and Systems, Hamburg, Germany, 28 September-2 October 2015; pp. 3038-3044.