3D Reconstruction using Interval Methods on the Kinect Device coupled with an IMU
Enclosed files :
The principle behind VSLAM applications like 3D object reconstruction or indoor mapping is to estimate the spatial transformation between two poses which consist of large clouds of points. They can further be processed to obtain detailed surfaces. The standard algorithm for finding the alignment between two points clouds is ICP and its variants, combined with RANSAC.
This researches presents a new approach using interval analysis. The idea is to define large intervals for the transformation parameters between the poses then to successively contract those intervals using the equations of the transformation of corresponding points between the poses. To contract those intervals faster, we had the idea of adding an IMU to our system so the initial interval of the parameters is already small before applying the contractions.
We implemented our algorithm using the middleware ROS and stated our performances.
Keywords: VSLAM, 3D Reconstruction, Interval Methods, Contractors, Kinect, IMU.
To match two 3D images taken with the kinect, we first used a algorithm similar to SIFT on the 2D image to compute the correspondance between the two views. Then we defined the systems we had to solve to compute the transformation parameters. For each couple of corresponding points i and j, ideally:
where Xi, Yi and Zi are the coordinates of a point at the first pose, Xj, Yj and Zj are the coordinates of the corresponding point at the second pose and T is the tranformation matrix constituted of a 3x1 translation matrix t=(tx, ty, tz) and a 3x3 rotation matrix corresponding to a clockwise/left-handed rotation with Euler angles with x-y-z convention :
Developing the last equation then gave us three equations for each corresponding points :
These equations are called contractors because we can use them to contract the intervals around the parameters of the transformations.
We wrote a forward-backward algorihm (available in the report) that was able to contract the intervals to a width of 0.1 rad on the rotation angles and 0.04 m on the translation parameters in approximatly 0.2ms.
Here is an example :
Here is the result using the transformation parameters we obtained:
We even scanned an entire car by matching 10 poses :
We used the IMU-UM6 from CHRobotics and fixed it to the Kinect as shown in the figure above. In practice, the IMU turned out to be very precise about its orientation (which is returned in the form of quaternions in the world coordinates). According to the datasheets, this model was precise to +/- 0.015 rad, which was more than sufficient for our purposes. We therefore didnít even need to contract the intervals on phi, theta and psi anymore. However, the IMU doesnít return its position so we still had to apply our forward-backward algorithm to compute the translation parameters. The IMU still improved our performances since only one correspondence was then needed to contract those parameters to an acceptable precision of 0.01m. The computation then dropped to 0.1 ms to initialize + 0.03 ms to run the forward-backward algorithm once.