Reliable Kinect-Based Navigation in Large Indoor Environments
Reliable Kinect-Based Navigation in Large Indoor Environments
Mihai Jalobeanu, Greg Shirakyan, Gershon Parent, Harsha Kikkeri, Brian Peasley and Ashley Feniello
Microsoft Research
_
I.
INTRODUCTION
The use of particle filters for SLAM goes back many years,
with a significant body of work dedicated to RaoBlackwellized filters (where each particle has its own map)
introduced first by Murphy [12], and extended by Montemerlo
et al. [13], Hahnel et al. [9], Eliazar and Par [14] and later by
Grisetti et al. [15]. These approaches demonstrate remarkable
results not only in scan alignment and incremental mapping
but also in closing relatively large loops.
B. Calibration
While the Kinect depth sensor can generate long-range
readings of over 20m, it exhibits significant noise beyond its
main operational range of 4m. We discuss treatment of random
error in Section C below. The dominant type of systematic
error is a radial error that distorts the depth map in a doughnut
shape.
A. Notation
Our method deals with three distinct coordinate systems:
-
Figure 1. Depth image of a flat wall at 1.5m exhibiting radial error and
vertical banding effects. Deviation from ground truth is shown on grayscale
dial.
Bias (mm)
800
700
600
500
400
300
200
100
0
-100 0
2000
4000
Distance (mm)
6000
8000
() = {
null, otherwise
(2)
Figure 3. TSDF map generated using our incremental mapping method.
The cells with value <1 make up the support region of the
surface. The truncation threshold is scaled with the distance
to the obstacle along the ray, so that obstacles farther away get
a larger support region. This helps in integrating the large noise
present in long-range readings.
Given a new depth profile Sk obtained at time k from the
current robot position p0, the projective TSDF at point p is
given by:
() = ( ( ) 0 2 )
() =
1
0 2 2
(3)
(4)
1 () 1 () + () ()
1 ()+ ()
() = 1 () + ()
(5)
(6)
(7)
1 () 1 () () ()
1 () ()
() = 1 () ()
(8)
(9)
F. Contour extraction
To compensate for the small field of view of the Kinect,
we generate, after each map update, a virtual observation in
the form of a dense 360 degree depth profile. For a given robot
position and orientation, the visible obstacle contours are
extracted from the current map using ray-tracing, by visiting
the map cells along each ray in a dense set of rays within a
given field of view. The method iterates over map cells in
order of increasing distance from the observer for as long as
the current cell value is positive. When a negative value is
encountered, the surface has been crossed and its exact
position can be computed by linearly interpolating between the
positive and negative values. The resulting position is added to
the point set that describes the surface. The positive and
negative values are themselves interpolated from the
surrounding cells. Once all the desired rays in the field of view
have been traced, the computed point set describes the surface
as seen from the given pose with the given field of view.
Note that, unlike Kinect Fusion, our ray tracing visits every
cell along the ray. We found the Kinect Fusion approach of
space skipping to be unreliable when applied to our maps, due
to the nature of the robot motion. In particular, when moving
along a corridor, the generated support region of the walls is
thin because of the sharp viewing angle. When the robot
rotates, changing the viewing direction, the space skipping
method ends up jumping over the thin support region, missing
the surface.
G. Global map
The global map used for navigation is represented as a grid
map containing a true signed distance function. The global
map is generated in an offline step from data recorded while
manually driving the robot around the target environment.
Loop closure information is provided by pressing a button
during recording. An initial estimate of the trajectory of the
robot is obtained using the incremental mapping procedure,
and is then corrected in a graph optimization step based on the
loop closure information. A TSDF map is generated using the
Metric
No local map,
Local map,
60 FOV
360 FOV
Number of failures*
2.40
0.56
0.23
3.12
0.43
2.55
0.13
2.01
0.27
1.82
Average speed
0.50
0.64
Positioning error*
5.22
1.05
Metric
MSR-P1
Pioneer
Number of failures
2265 s
726 s
5023 s
1971 s
367 m
183 m
860 m
472 m
Average speed
0.16 m/s
0.25 m/s
Positioning error
0.23m 0.2m
0.22m 0.1m
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
References
[1]
[2]
[3]
[4]
[Online].
Available:
[21]
[22]
[23]
[24]
[25]
[26]
[27]
[28]