Google Tango as an indoor mapping device
Duration of the Thesis: 6 months
Completion: April 2017
Supervisor: M.Sc. Lavinia Runceanu
Examiner: Prof. Dr.-Ing. Norbert Haala
In recent years the possession and usage of smart phones has risen to a new level. Companies producing these mini computers are trying to satisfy the market with models in all sizes, colours, gadgets, features and hardware. The involved software developing industry as well as the number of written applications benefit this trend. With the introduction of Google Tango a new step into the world of games, gamification and more serious applications was opened, taking the general two dimensional approach of smart phone apps into the third dimension and also including the surroundings into these experience. With the provided functions to access and use the new implemented hardware into Tango enabled devices new application possibilities are given. For this reason, we research in the proposed thesis the expected and actual accuracy of measured point clouds with the Google Tango Development Kit and present two different meshing approaches with different filters applied on the point cloud.
Investigations on accuracy
To predict the expected accuracy of single points in the point cloud we split the accuracy research into two main parts, the investigation of depth images measured with the depth sensor and the accuracy of the positioning with the gyroscope and accelerometer enhanced by visual odometry with a fish-eye camera.
The different influences on the depth sensing were researched by taking single shot depth images of flat surfaces with changing test cases, like distance to the surface, movement and variance of depth in a single image (the sensor being oblique instead of perpendicular to the surface) and estimating a plane into these points by orthogonal regression. The standard deviation was calculated on the resulting residuals, shown in figure 1 for all measurements performed. We concluded that the influence on possible outliers and the dimension of the standard deviation is only depending on the distance to an object and no other effects named above are occurring.
For the research on the accuracy of the pose we were not able to compare the measured positions with absolute values therefore we performed a complete loop and observed the closing error.
Figure 2 displays one of these experiments where the device was placed on the initialize position between the seconds 130 – 150, 225 – 255 and 330 – 365. The closing error of different retrieving approaches was researched, distinguishing between polling (getting the pose at a certain timestamp) and callback (getting the pose as soon as it is available) and in addition comparing the results of using visual inertial odometry versus positioning only with the gyroscope and accelerometer.
The resulting closing error of the loop was at certain experiments within one meter making a good positioning impossible.
Processing and results
The measured depth images were transformed into a single point cloud using the retrieved poses and simultaneous colored by a taken image stream. The point cloud was afterwards filtered and triangulated. Different applied filters were a moving least squares algorithm and a voxel grid filter, both with different properties. The moving least square algorithm and the triangulation was done using the Point Cloud Library. A resulting meshed point cloud is shown in figure 3.
The pose estimation based on the current app did not satisfy our demand. If this can
be improved by minor changes in the code or if the pose accuracy of a complete bundle
adjustment based on the captured images is necessary needs to be researched in more
detail. In this context the used meshing algorithm has to be retested. The results for gathered point clouds without issues in the positioning seemed promising. The estimated accuracy of the depth sensor seems good enough. If this becomes the more weighted error influence in the creation process, it would be possible to improve the accuracy by reducing the allowed maximal depth and to research if the error can be minimised by applying a device error model.