Contributions welcome!Īfter we obtain a set of meshes, we process them in Meshlab in order to merge them as a single mesh. A point of improvement for the meshing application could be to return the complete mesh instead of a set of meshes. The reason why we load the world model in cubes is because we have the limitation of memory in the GPU. The output is a set of meshes, since the world model is processed as a set of cubes. The input for this application is the world model as a PCD file. For this purpose we will use the meshing application in KinFu Large Scale. This section describes how to convert the TSDF Cloud, which is the expected output of KinFu Large Scale, into a mesh. Part 2: Running pcl_kinfu_largeScale_mesh_output to convert the TSDF cloud into a mesh The next part of this tutorial will demonstrate how to get a mesh from the TSDF cloud. The following video demonstrates the scanning process and the generated output: Since we used the -et option, you will also find a folder called KinFuSnapshots, which contains all the RGB images and its corresponding poses for this scan. What the exit routine will do is to get all the information regarding our model, comprise it in a point cloud and save it to disk as world.pcd The PCD file is saved in the same directory from where we run KinFu Large Scale. However, the routine is not executed until we shift again. Whenever we are satisfied with the area that we have scanned, we press the “L” key to let KinFu know that we are ready to perform the exit routine. This is only present when we return to areas that we previously scanned. 4) We retrieve existing data (if any) from the world model and load it to the TSDF volume. 2) We clear that slice to allow for new data to be added. The shifting can be triggered by rotation or translation.Įvery time we shift out part of the cube, four main things happen: 1)We save the data in the slice that is shifted out and send it to the world model, which is stored in CPU. After building the git master, we will call the application: This can be observed when we zoom in the point cloud.įinally, we are ready to start KinFu Large Scale. The X,Y,Z coordinates for each of the extracted points correspond to the voxel indices with respect to the world model.Īs mentioned above, the TSDF cloud is a section of the TSDF volume grid which is why the points are equally-spaced and uniformly-distributed. In this way we ensure that we only extract those voxels that are close to the isosurface. We avoid extracting voxels with a value of 1 because they represent empty space. Since we want to minimize the required bandwidth between GPU and CPU, we will only extract the voxels with a TSDF value in the range. At the time of extraction, we avoid extracting the voxels with a value of 1, since they represent empty space, and are therefore of no use to our model. The TSDF has a positive value whenever we are “in front” of the surface, whereas it has a negative value when inside the isosurface. The TSDF value is the distance to the nearest isosurface. Each element in the grid represents a voxel, and the value inside it represents the TSDF value. In the figure below, you may notice that the values range from -1 to 1.įigure 2: A representation of the TSDF Volume grid in the GPU. Further information on these properties can be found in the relevant papers.Īt the time of data extraction, the grid is traversed from front to back, and the TSDF values are checked for each voxel. However, modifying them affects directly the memory footprint for our TSDF volume in GPU. The quality of the model is proportional to these two parameters. The size in meters of the cube and the number of voxels give us the resolution of our cube. 3 meters) into a voxel grid with a certain number of voxels per axis (say, 512 voxels per axis). KinFu subdivides the physical space of the cube (e.g. Both the number of voxels and the size in meters give the amount of detail of our model.Īs you may already know, the way in which the TSDF volume is stored in GPU is a voxel grid. The default size in meters for the cube is 3 meters per axis. Figure 1: The cube is subdivided into a set of Voxels.
0 Comments
Leave a Reply. |