## 3 Methodology
### Map-Merging  
Algorithm 1 is the pseudo-code of the proposed map-merging algorithm. The mapping process starts with preparing the data. Figure 4a,b shows example maps \(\mathcal{M}_{1}\) and \(\mathcal{M}_{2}\). Before map-merging, information about overlapping buildings or roads between multiple maps is needed. Overlapping regions are selected before data collection and considered in the 3D mapping process. When selecting overlapping regions, the following priorities are established: (1) a building-centric region, (2) a region where both roads and buildings coexist, and (3) a road-centric region. Additionally, when selecting an overlapping area, it is better to consider the point cloud of buildings rather than focusing on roads, especially in the case of straight segments. The overlapping region \(P_{OR,j}=\left\{\mathbf{p}_{l,j}\right\}_{l=1:L}\) is extracted using Algorithm 2. Figure 4: Map merging: (**a**) Model 1; (**b**) Model 2; (**c**) A red square denotes the overlapping region of Model 1; (**d**) A red square denotes the overlapping region of Model 2; (**e**) Voxel downsampling; (**f**) FPFH and find correspondence; (**g**) Point cloud registration via TEASER++. Figure 3: A schematic example of loop closure refinement and comparison before and after applying refinement to the drivable region map. (**a**) Schematic diagram before loop closure. Despite being at the same location, misalignment occurs owing to drift. (**b**) Schematic diagram after loop closure. Loop closure resolves issues caused by drift error and realigns the frame pose and point clouds. (**c**) Drivable region mapping result before loop closure. White point clouds represent feature points extracted from images, whereas sky blue point clouds denote the drivable region. (**d**) Drivable region mapping result after loop closure. White point clouds represent feature points extracted from images, whereas sky blue point clouds denote the drivable region. ```
Input point clouds \(P_{OR,a}\), \(P_{OR,b}\), map \(\mathcal{M}_{a}\), \(\mathcal{M}_{b}\)
```  
**Algorithm 1** Map-merging  
```
Input point clouds \(P_{OR,a}\), \(P_{OR,b}\), map \(\mathcal{M}_{a}\), \(\mathcal{M}_{b}\)
```  
**Algorithm 2** Extracting point clouds in the overlapping region  
```
input map \(\mathcal{M}_{j}\), overlapping region's edge points \(P_{Edge}=\left\{\mathbf{p}_{i}\right\}_{i=1:N}\)
```  
**Algorithm 3** Extracting point clouds in the overlapping region  
In Algorithm 2, lines 1 to 7, each point in \(\mathcal{M}_{j}\) compares the x-axis and y-axis with \(P_{Edge}=\left\{\mathbf{p}_{i}\right\}_{i=1:N}\). \(P_{Edge}\) is a set of edge points in the overlapping region. It is specified and represented in the form of an \(N\)-polygon. A polygonal shape is selected to best preserve the information of the overlapping region, and z-axis information is not considered in this process. For \(i=1:N\), if the point's x-axis is between \(\mathbf{p}_{i}\) and \(\mathbf{p}_{i+1}\) and the y-axis is lower than \(\max(\mathbf{p}_{i},\mathbf{p}_{i+1})\) but above the line created by \(\mathbf{p}_{i}\), \(\mathbf{p}_{i+1}\), then the counter is incremented by 1. In lines 8 to 11, if the counter is an odd number, then the point is added to \(P_{OR,i}\). The red box in Figure 4c,d indicates an overlapping region \(P_{OR,1}\), \(P_{OR,2}\). In Algorithm 1, line 1 downsamples \(P_{OR,1}\), \(P_{OR,2}\) via a voxel grid filter. Figure 4e is an example of this. This process helps to prevent point cloud registration from being dominated by road points and provides computational advantages. We found that a voxel size of 0.1 was the best parameter empirically, as it preserves the features of the point clouds without significant degradation. In Algorithm 1 line 4, \(\mathcal{F}_{a}\), \(\mathcal{F}_{b}\) are extracted from downsampled point clouds \(\hat{P}_{OR,a}\), \(\hat{P}_{OR,b}\) by FPFH and, in line 3, correspondences \(\{C_{i}\}_{i=1:N_{m}}\) are estimated via the KNN algorithm.