IDTMM: Incremental Direct Triangle Mesh Mapping

This letter presents an incremental algorithm to generate triangle meshes from Light Detection and Ranging (LiDAR) point clouds with mesh refinement. The algorithm produces triangle mesh directly from LiDAR output without storing a dense point cloud to create a high-quality triangle mesh. In our algorithm, as the number of captured points increases during the LiDAR operation and robot movement, the new scan points from the LiDAR output refine or extend the existing triangle mesh. Such an approach is suitable for computationally-constrained systems like aerial vehicles, mobile robots, and smartphones, as it requires relatively limited resources. Our algorithm can reconstruct the topology of city-sized scenes maintaining a maximum triangle mesh error below 2 cm much faster than state-of-the-art triangle mesh generation algorithms that we demonstrate on publicly available data sets.

R ESEARCHERS have studied algorithms for generating triangle meshes that represent the surrounding environment for decades, but the proliferation of point cloud acquisition hardware has recently sparked more attention toward them. Unfortunately, current mesh generation algorithms frequently encounter difficulties generating meshes for specific regions, particularly when constructing a triangle mesh from dense light detection and ranging (LiDAR) point cloud using incremental expansion methods. This process also requires significant computational resources [1].
When the scene is large, and the robotic system has limited resources, there is a trade-off between localization accuracy, mapping accuracy, the cost of map storage, and computation time. The use of triangle mesh for scene representation can vastly reduce the resources required for map storage and manipulation and maintain accuracy, which makes it a reasonable alternative for the dense point cloud [2], surfels [3], truncated signed distance function (TSDF) [4] or volumetric representation [5]. This article introduces a new incremental triangle mesh generation algorithm using Incremental Direct Triangle Mesh Mapping (IDTMM). The algorithm allows for incremental triangle mesh generation and existing mesh refinement based on a point cloud captured by a moving robot and computing hardware mounted on a robot. Triangle meshes in robotics have shown promising results when applied to autonomous mobile robots [6], path planning obstacle avoidance, navigation [8], virtual reality [7], disaster area [9], and more, especially when considering large, unexplored areas which may change over time, as it allows to reduce the size of the point cloud that represents the surrounding environment. This reduction is particularly crucial for robotic applications, where resource limitations are common. Furthermore, the utilization of a triangle mesh representation enables the convenient addition of texture to the map. Making the algorithm incremental gives an additional advantage, as it combines the benefits of reduced size with the ability to promptly add extra triangles to the triangle mesh without experiencing delays.
Point cloud acquisition is an essential element of real-time triangle mesh generation algorithms. Our algorithm can generate a triangle mesh acquired by any source, but we apply it to the point cloud obtained using LiDAR. As a result, our system performs well in both large-scale environments and in poor lighting conditions. LiDAR also ensures lower measurement errors at large distances than RGB-D-based algorithms [10], structure-from-motion algorithms, and photogrammetry-based algorithms (for comparison see [11]).
Our algorithm builds upon existing LiDAR odometry algorithms such as LOAM [12] and other work by Niedzwiedzki et al. [13], which have proved efficient. The main novelty of our algorithm lies in the functionality which allows extending the triangle mesh or updating it, depending on the localization of a newly acquired point by the LiDAR. The algorithm updates the triangle mesh if the newly acquired point lies over the triangle mesh or expands the triangle mesh if it is close to the triangle mesh border. Otherwise, the algorithm stores the point cloud until it can create a new mesh fragment. That allows for fast LiDAR Odometry and Mapping-based large-scale triangle mesh generation using limited resources, as the algorithm is fast and the number of stored point clouds is minimal.
The organization of this letter is as follows. Section II provides an overview of the most relevant related work on triangle mesh generation. In Section III, we describe our triangle mesh generation and refinement algorithm. Section IV presents the experimental setup for triangle mesh generation algorithms' comparison. The evaluation in Section V includes quantitative results of triangle mesh quality and speed of our algorithm.

II. RELATED WORK
Three-dimensional mesh generation is a challenging task that can be optimally solved using various methods depending on data acquisition, application, and purpose of the triangle mesh [14]. Here we focus on large-scale, unstructured, and unexplored environments and noisy point clouds as we construct the triangle mesh incrementally utilizing data continuously acquired from the moving vehicle. Often, researchers use TSDF-based algorithms like C-blox [15], Voxblox [16], or VDBFusion [17] in such applications. Although TSDF is still a standard technique for 3D mapping in robotics [5], in this work, we aim to obtain a triangle mesh at each timestamp. Employing TSDF requires using the Marching Cubes to convert it to a triangle mesh, which is suboptimal because it consumes unnecessary resources.
The performance and complexity of the incremental triangle mesh generation algorithm strongly depend on the scale of the environment. For example the algorithm by Schops et al. [18] or Rosinol et al. [19] can reconstruct and render medium-scale environments (e.g., 300 square meters) in real-time at a resolution of 2-3 cm using dedicated hardware. However, they are not effective in large-scale environments. In contrast, the LiDAR odometry and mapping (LOAM) algorithm excels in handling large-scale environments but stores a complete point cloud representation instead of a triangle mesh. Conversely, the ImMesh [20] and CT-ICP [21] algorithms rely on voxel-based representation, which involves uniform space partitioning and subsequent erosion processes to merge triangles from neighboring voxels in InMesh algorithm, which is suboptimal in our approach. KISS-ICP [22] subsamples the point cloud to reduce the computation complexity. We follow the same simplified approach, but instead of subsampling, we create the triangle mesh directly from the points acquired by the LiDAR.
One of the most challenging tasks in incremental triangle mesh generation is triangle mesh expansion, namely merging existing triangle mesh with new triangles or new mesh fragments. Several approaches address this problem by leveraging structural regularity [19], point label information [30], segmentation [31], semantic information [32], stable region detection or object features in a point cloud [15]. Still, these methods are not applicable in unstructured and unexplored environments. In such a case, one can use overlapping areas as in algorithms by Marton et al. [30] and by Piazza et al. [1], but this requires unnecessary re-computation of existing mesh with minimal impact on the fidelity of the environment mapping. To avoid it, we add individual triangles or merge existing triangle mesh fragments without recalculating existing mesh. We also apply triangle mesh updates when the LiDAR acquires new points close to the existing mesh. This iterative approach improves the quality of the triangle mesh over time and prevents the generation of multiple layers of overlapping triangles seen in iterative closest point-based algorithms and Poisson-based algorithms, like PUMA [34]. These algorithms, however, are incremental and perform relatively well in the considered conditions, but they are resource-consuming, as they require existing triangle mesh recalculation during mesh expansion. In the next section, we introduce a much more efficient, incremental algorithm for triangle mesh generation from LiDAR scan point cloud -IDTMM -which is the main contribution of this letter.

III. APPROACH
In the first step of the algorithm we employ the Feature Point Extraction step originally introduced with the LOAM algorithm [12]. Next, we verify the relative location of the newly acquired point and the existing triangle mesh. Our algorithm acts differently depending on the relative location of the newly acquired scan point and the triangle mesh. In general, we consider the following four cases (see Fig. 1) 1.1) if the distance between the newly acquired point and the existing triangle mesh is above the threshold r, we store it for future use. We call such points 'accumulated points'; see Fig. 1(a), 1.2) if the distance between the newly acquired point and the existing triangle mesh is above r and the number of accumulated points, marked as gray dots in Fig. 1(b), at a distance closer than r from the newly acquired point is above N = 10 we trigger the generation of a new independent fragment of the triangle mesh; In the example shown in Fig. 1(b) N = 8 for clarity of the image. Section III-A provides a detailed analysis of the selection of the N value, 2) if the distance between the newly acquired point and the existing triangle mesh is below r and the projection of the newly acquired point along the laser beam lies on the existing triangle mesh, as shown in Fig. 1(c), we use the newly acquired point to update the existing triangle mesh, 3) if the distance between the newly acquired point and the existing triangle mesh is below r and the projection of the newly acquired point along the laser beam is not located on the existing triangle mesh, as shown in Fig. 1(d), we use the newly acquired point to expand the existing mesh. The following sections describe the detailed behavior of the algorithm.

A. Independent Fragments of the Triangle Mesh Generation
The algorithm builds a triangle mesh from newly acquired LiDAR scan points with no starting triangle mesh and no accumulated points. As a result, it always starts from case a) on   Fig. 1 from the previous section. This triggers the generation of the first local fragment of the triangle mesh, which we call a diamond. The diamond consists of two triangles that share one edge. We decided to use the diamond, not a single triangle, as it reflects the shape of the input local point cloud better than a single triangle and has a straightforward interpretation explained below. To find the diamond shape that reflects the shape of the corresponding accumulated input points, we find the centroid of N +1 accumulated points marked with a cross in Fig. 2 and calculate the covariance matrix of these N +1 points. Next, we use Singular Value Decomposition on the computed covariance matrix to find singular values and vectors of inertia of the accumulated point cloud. We then use the two most prominent vectors of inertia to find an approximation of directions of the most significant variance, see Fig. 2. Those directions are then treated as diamond diagonals. These diagonals cross in the centroid of the N +1 accumulated points. The lengths of diagonals are equal to the square root of the corresponding singular value. The algorithm removes all the points that it used to generate the diamond from the list. It removes other accumulated points not used for triangle generation after 3 seconds at most. This is because such scan points can represent outliers or moving objects. As a result, the number of scan points stored in memory during the algorithm operation is very low relative to the total number of scan points used in other incremental triangle mesh generation algorithms.

B. Triangle Update
The IDTMM algorithm triggers the triangle update step process when the distance between the newly acquired point and the existing triangle mesh is below r, and the projection of the newly acquired point along the laser beam lies on the existing triangle mesh. This is true only when the laser beam crosses the triangle mesh. Considering only the triangle mesh vertices, which are closer than r, we have to analyze only a tiny fragment of the mesh to find the projection. We find the laser beam vector using the robot's location and the coordinates of the newly acquired point. When the newly acquired point meets the conditions mentioned above, we find the triangle closest to it; see Fig. 3. Next, we apply Extended Kalman Filter (EKF)-based algorithm to modify the vertices of this triangle. This modification influences the closest triangle and transforms all triangles that share the vertices and edges with the selected triangle. As a result, the update step modifies the fragment of the triangle mesh. The modification influences both the triangle vertices and their variance. The IDTMM algorithm performs this modification using an EKF-based algorithm based on the location of the newly acquired points covariance matrix, the location of the closest triangle vertices, and its variance.
The measurement model used expresses the distance measured by the scanner, projected onto the direction orthogonal to the selected triangle to the scan point: is the scan point transformed into the global frame and n is the normal vector of the terrain plane calculated based on the nearesttriangle points, P 1 , P 2 , and P 3 , and the center of the scanner, P G C . The parameter s h t represents the noise in the measurement model, including the scanner's measurement noise, the map noise, and the robot's estimated position noise.
The estimated measurement expresses the distance between the scanner center P G C and the scan point projected onto the terrain plane, P G P = [x G P , y G P , z G P ] T , as measured in the normal direction:ẑ The innovation value used to compute the updated pose of the triangle is the difference between the measurement and its estimated value. It represents the distance from the scan point to the plane of the nearest triangle, as measured in the normal direction (see Fig. 3): Under the assumption that the scanner measurement, the estimated pose of the robot, and the estimated map parameters are independent, we can express the innovation covariance S by following the error propagation rule: P is a covariance matrix of a robot state, P scan is the covariance of the scan point in the local frame, and P map is the covariance of the triangle extracted from its' vertices (P 1 , P 2 , and P 3 ), respectively.
According to our research, it is better to use the same value of variance for all three dimensions to involve the measurement noise for each vertex in the process of triangle mesh update than to use the covariance matrix. If we define the triangle vertex variance as a 3 × 3 covariance matrix, in the update phase of the EKF algorithm, the variance in the direction normal to the triangle surface tends to decrease over time, while the variance in two perpendicular directions tends to remain stable. That generates excessive modifications of triangle mesh vertices in the plane of the closest triangle. If we use the minimum variance value for all three dimensions, the triangle mesh updates more smoothly.
Based on the innovation covariance S, we calculate the Kalman gain as follows: Finally, we calculate the vertex update vector length: Then, we update each vertex along the direction of the triangle's normal vector as calculated with the EKF.
Since the innovation covariance matrix S has dimensions of 1 × 1, the execution of the EKF procedure is very fast (it is not necessary to perform a time-consuming matrix inversion operation), and it is possible to perform this correction procedure after every single laser scanner measurement.

C. Triangle Mesh Expansion
The IDTMM algorithm triggers the triangle mesh expansion step when the distance between the newly acquired point and the existing triangle mesh is below r, and the projection of the newly acquired point along the laser beam is not located on the existing triangle mesh. In contrast to the triangle update step, this is true only when the laser beam does not cross the triangle mesh. By analogy to the triangle update step, we consider only the triangle mesh vertices closer than r, so we have to analyze only a tiny fragment of the mesh to find the projection. We start the triangle mesh expansion when the newly acquired point meets the mentioned conditions. The expansion step is the most complex of all steps as it must consider several options for the relative localization of a newly acquired point to the triangle mesh. In general, the goal of the mesh expansion procedure is to add all possible triangles to the triangle mesh that take the newly acquired point as a vertex and do not break the integrity of the mesh. Triangle mesh expansion essentially has three sub-steps: 1) 2D projection, 2) triangle addition, 3) mesh merge. which we detail below. 1) 2D Projection: The procedure starts by finding planar projection on the plane perpendicular to the laser beam of all triangle mesh vertices at a distance of less than r from a newly acquired point A, see Fig. 4. The figure shows two triangle mesh fragments, both of which we extend and merge. We have deliberately chosen this example to cover all possible case variants of the introduced algorithm.  We perform further analysis on the projections of the vertices and the edges connecting them. Still, we add new triangles in 3D space and project them onto the plane perpendicular to the laser beam. From the projected vertices, we choose only 'open vertices', that is, the vertices containing exactly two edges linked with only one triangle. We call such edges 'open', as we can use them as an edge of a newly created triangle. As a result, our algorithm expands the triangle mesh with no risk of inconsistently splitting the mesh. We add the newly acquired point to the accumulated points list if there are no free edges with two end vertices closer to r from A. Otherwise, we find all open vertices closer to r from query point A; see Fig. 5. Next, we find the nearest free edge marked yellow and its closest end vertex marked yellow. We sort the remaining free vertices counterclockwise around the point A. We analyze these vertices according to this order in triangle generation and mesh merge procedures of triangle mesh expansion. Fig. 5 shows an exemplary scenario where we can potentially merge two independent triangle meshes.
2) Triangle Addition: The procedure starts by analyzing the vertex at the other end of the counter-clockwise edge of vertex 0. This is vertex no. 2 in Fig. 5. If that point is next on our list of ordered points (which is not in our case) we add the triangle. Otherwise, we test if the next point on the list lies behind the edge by verifying the condition: where V lk and V lm are vectors ending in corresponding vertices k, l and m. In the example given in Fig. 5 k = 1, l = 0, m = 2. If the condition (7) holds, we ignore this point and proceed to the next point on the sorted list. Next, we build the triangle Δ A→0→2 whose side is at the free edge 02, and A is its vertex.
We check if the maximum edge length is below r: if the triangle is not too sharp: (9) and if the triangle is not flipped: If all the conditions mentioned above hold, we add the triangle to the triangle mesh. We repeat the procedure by analyzing the following free edges in counterclockwise order until we reach the last free edge, that is until the vertex is not connected by a free edge to the next vertex located closer than r from A. In the example shown in Fig. 5, there are three following free edges E 0→2 , E 2→3 , E 3→4 , along with their corresponding triangles marked with red and blue vertex E which is not located within the r from A. The triangle generation stops at vertex E, as further mesh expansion in this direction is impossible. We stop the triangle addition procedure we move to the mesh merge procedure.

3) Mesh Merge:
The mesh merge procedure starts by verifying whether at least two separate mesh fragments are closer than r from A. We consider the mesh fragment to be separate if we cannot connect free edges using the triangle generation procedure. So, if the triangle generation procedure stops, and there are still free edges with end vertices located closer than r from A, the algorithm continues the triangle addition procedure for the following vertices (numbers 5 and 6 in our example in Fig. 5). The edge E 5→6 fulfills the condition given by (7), for k = 5, l = 6, m = 6, so the triangle Δ A→5→6 is not created and we ignore the vertex 6. In the following step, we verify the conditions (8)-(10) for k = 5, l = 7 and, as they hold, we add the green triangle Δ A→5→7 to the second triangle mesh fragment, as shown in Fig. 5. Now we have two triangle mesh fragments connected by the single vertex A, which makes the meshes inconsistent, as we do not allow two mesh fragments to share only one vertex. Therefore, we try to add the blue triangle Δ A→4→5 . We verify the conditions (8)-(10) for k = 4, l = 5. In the example from Fig. 5, the conditions given by (8)-(10) hold, so we add the blue triangle. If any of the conditions mentioned above do not hold, we add neither green nor blue triangles to the mesh, nor perform the mesh merge. Please note that the same mesh merge procedure applies when we cannot connect free edges using the triangle generation procedure in the same triangle mesh fragment. In such a case, the algorithm acts the same. Suppose during subsequent iterations, any of the conditions of the construction of a proper triangle do not hold, or further extension counterclockwise is not possible. In that case, we repeat both procedures in a clockwise direction for the remaining vertices and edges. The only difference in the clockwise direction is that the vector product in condition (7) is negative. The mesh expansion finishes when it is no longer possible to add any more triangles in the clockwise direction.

IV. RESULTS
Comparing the triangle mesh generation algorithms on a large scale has always been challenging, as precise reference values are difficult to obtain, especially when we capture data dynamically using moving LiDAR. Please note that in such a case, the reference location of the LiDAR moving along the path and the reference measurement point cloud suffer from significant measurement errors, making the comparison unreliable. Therefore, to compare the algorithms, we decided to simulate the LiDAR movement along the measurement path by selecting the measurement points from the static point cloud with no measurement errors mimicking the LiDAR installed on the robot capturing them. We added measurement noise reflecting the Velodyne VLP32 LiDAR angle measurement with sigma = 0.3°for both vertical and horizontal angle and ray length measurement noise with sigma ranging from 1 to 4 cm. We used two data sets of different characteristics as the reference: publicly available synthetic data-set -Synthcity 1 and our data-set captured using FARO Focus X130 from the underground cave -Cave. 2 To conduct a comprehensive comparison, we also evaluated our algorithm using the KITTI 3 dataset, employing the captured point cloud as a reference. However, we opted not to employ the Mai City dataset utilized for the LOAM algorithm comparison, as we consider it too simplistic for our purposes.
We compared the method presented in Chapter III with the Point Cloud Library (PCL) [23] and PUMA [34], using Poisson surface reconstruction [32], [33] methods during our research. The primary key to selecting the PCL method for comparison was its ability to create and expand the mesh while acquiring subsequent points incrementally. We have chosen the PUMA method as it is incremental, frequently used in many applications, and intensively improved.
To make the comparison as exhaustive as possible, we provided qualitative example presented on a film 4 and several different triangle mesh quality measures: 1) mean signed distance (MSD), mean unsigned distance (MUD), root mean square error (RMSE) between points on the triangle mesh obtained by the triangle mesh generation algorithm and the nearest point from the reference point cloud, 2) triangle density -number of triangles per square meter, 3) the histogram of maximum angle values of the triangles in triangle mesh, 4) the histogram of minimum angle values of the triangles in triangle mesh, 5) the histogram of surface angle -the angle between normal vectors of adjacent triangles, 6) the histogram of shape -for details, see [35]. Table I provides the numerical triangle mesh quality values, 1) −2), for triangle meshes generated using PCL, PUMA, and our IDTMM algorithm. Fig. 6 depicts corresponding histogrambased triangle mesh quality measures, 3) −6). Fig. 7 (A) shows a cross-section of the wall fragment from the Synthcity dataset. The black dashed line corresponds to the cross-section of the reference ideal wall shape, while red dots correspond to the LiDAR measurement data, which suffer from measurement noise with σ = 4 cm. Fig. 7(b) and (c) show the triangle mesh cross-sections generated using PCL and PUMA algorithms, respectively.
We adjusted the meshes creation parameters for all algorithms so that the created meshes had similar sizes of triangles, i.e., the numbers of triangles per m 2 were close.
We benchmarked our algorithm utilizing an 8-core reference embedded device in a containerized environment. We believe such a setup is suitable for deployment on a mobile platform. as demonstrated in Fig. 8. The triangle mesh generation in our algorithm initially exhibits slower performance than PUMA for the first 4 s of generation. However, once the algorithm finishes the initial triangle mesh fragment generation, it surpasses PUMA and outperforms PCL, particularly when the triangle mesh expands over time. We achieve these results by updating the orientation of individual triangles, incorporating new points to generate additional triangles, and merging with the existing mesh rather than recalculating the mesh fragment or entire triangle mesh. Our current implementation does not support parallel execution in any form nor we have optimized it for this use case, yet it is still 10 times faster than the PUMA method, which specifically takes advantage of CPU parallel paradigms.
We used the parameters presented in Fig. 6 and in Table I to evaluate and compare various aspects of the generated triangle point cloud characteristics. Fig. 7. Cross-section of part of the synthcity model. Red points represent the input point cloud with 4 cm noise. Black points represent reference points, and green lines represent the wireframe of created mesh. A presents input noised point cloud, B presents mesh generated by the PCL method, C presents mesh generated by the PUMA method, while D presents mesh generated by our method. First, let us analyze the results with simulated data sets: Synthcity and Cave. The MSD parameter describing bias for our method was the smallest and ranged from 0-0.4 mm. In terms of this parameter, the PCL method exhibited the poorest performance. On the other hand, the MUD and RMSE parameters describe the variance of reconstruction errors, i.e., the actual accuracy of the grid. From the Table I, it is evident that the values of MUD and RMSE values exhibit notable variations with alterations in noise levels for the PCL method. In contrast, for the PUMA method and our proposed method, one can see that these parameters remain almost constant regardless of the level of noise. This implies that these methods perform well in filtering out measurement noise. In such a case, the noise is likely caused by two reasons: the complexity of the shape, which is impossible to reproduce using a triangle mesh with a minimal imposed triangle size or gross errors significantly affecting the triangle mesh quality. In the case of simulated data, it is only the first of these reasons. When analyzing the data from Table I, one can notice that for the Synthcity environment characterized by a large number of perfectly flat surfaces, all three methods produce very similar MUD and RMSE results, with the PUMA method providing the best results. This is the result of the strong smoothing characteristics of the PUMA method, which filters out all distortions and creates a maximally flat surface that is dominant in this data set, which is also apparent in Fig. 7. Fig. 7 also shows that our algorithm, thanks to the use of the Kalman filter, does not introduce unnecessary smoothing effects like PUMA or grid noise by voxelization like PCL. On the other hand, for the Cave environment, where all surfaces are uneven and characterized by a large shape variability, the PUMA method is the worst in terms of MSD, MUD, and RMSE.
Indeed, the roughness of the cave environment is excessively smoothed. The data set under consideration demonstrates that the PCL method exhibits superior accuracy for low measurement noise owing to a significantly larger number of triangles in the output mesh, see Table I. When the measurement noise value reaches 3 cm-4 cm, which we believe more realistically reflects the natural environment scenario, the difference between the methods becomes insignificant. The KITTY experiment the lack of reference leads to a significant underestimation of the obtained results, especially in the case of the PCL algorithm. The reason behind this is that the PCL method generates vertices of triangles directly from the measurement points, and without the voxelization process, the outcome would have been zero.
When comparing the PUMA method and our proposed method, it is evident that our method has a several-fold advantage. One possible reason for this is that we involve all input data in the triangle mesh generation process and take into consideration the uncertainties of all input samples. This causes data collected at a considerable distance from the scanner subject to significant errors have minimal impact on the final result. Conversely, the PUMA method treats all points equally, leading to points with high uncertainties and significant errors substantially distorting the mesh.
The plots in Fig. 6 offer a comparison of the triangles in the triangle mesh. The green area represents the desired range of the triangles' characteristics. Histograms Fig. 6(a), (b) and (c) depict the angle values of the triangles in the triangle mesh. We desire a regular triangle mesh without extreme angle values for its triangles. The histograms show that the triangle mesh generated using our algorithm is more regular than the triangle mesh generated using the PCL algorithm, as the number of triangles with high-angle values is smaller. Finally, the shape measure shown in Fig. 6(d) quantifies the ratio between triangles in a triangle mesh and the equilateral triangle, which we believe is the ideal output triangle mesh [35]. A value of 1 indicates that the triangle is equilateral. The histogram in Fig. 6(d) demonstrates that the proposed algorithm generates a triangle mesh predominantly consisting of equilateral triangles. Additionally, our algorithm produces a larger number of triangles that are similar in terms of shape measure to the equilateral triangle compared to the PCL and PUMA algorithms.

VI. CONCLUSION
We propose an IDTMM algorithm that utilizes dense point clouds obtained from a LiDAR mounted on a mobile robot for unstructured and unexplored environments. The algorithm offers improved performance compared to state-of-the-art incremental algorithms, delivering increased speed while maintaining high accuracy and uniformity. Compared to PUMA and PCL algorithms, the IDTMM algorithm offers superior smoothness and accuracy in noisy environments. It generates triangle meshes directly from point clouds and refines the mesh using a Kalman-based update process, which distinguishes it from existing algorithms. As a potential future development, we plan to integrate it with a frame-to-mesh localization algorithm to create a simultaneous localization and mapping solution.