280 likes | 494 Views
Accurate On-Line 3D Occupancy Grids Using Manhattan World Constraints. Brian Peasley and Stan Birchfield Dept. of Electrical and Computer Engineering Clemson University Alex Cunningham and Frank Dellaert College of Computing Georgia Tech. Map representations. Elevation map. Point cloud.
E N D
Accurate On-Line 3D Occupancy GridsUsing Manhattan World Constraints Brian Peasley and Stan Birchfield Dept. of Electrical and Computer Engineering Clemson University Alex Cunningham and Frank Dellaert College of Computing Georgia Tech
Map representations Elevation map Point cloud Octree (occupancy grid) Multi-level Surface map from Wurm et al., OctoMap: A Probabilistic, Flexible, and Compact 3D Map Representation for Robotic Systems, 2010
Occupancy grids [Moravec and Elfes 1985] An occupancy grid can represent any point cloud with arbitrary precision
Occupancy grids [Moravec and Elfes 1985] Occupied An occupancy grid can represent any point cloud with arbitrary precision
Occupancy grids [Moravec and Elfes 1985] Occupied Occupied Free Occupied An occupancy grid can represent any point cloud with arbitrary precision
Occupancy grids [Moravec and Elfes 1985] Occ Occ Occ Free Free Occ Free Free Free Occ Free Free Free Occ Free Free An occupancy grid can represent any point cloud with arbitrary precision
Occupancy grids Leads naturally to a hierarchical representation: QuadTree (2D) … and an efficient encoding O Occ Occ Occ Free O O O F Occupied Occupied Occupied Free Occ Free Free O OF O O F FF F O F O F FFF Free Occ Free Free 1 = Occupied 0 = Free 1 11101101100001010000 Free Occ Free Free Free Occupied • For continuous surface S (3D), • occupancy grid is discretization of characteristic function cS: R3 {0,1} • requires ~2 bits per sample point [Kaufman et al. 1993; Botsch et al. 2002]
Representing “I don’t know” Occupancy grids can explicitly represent unknown areas (which sensor has not yet seen) Occ Occ Unk Unk Free Occ Unk Unk sensor coverage Free Occ Free Free Free Occ Free Free
Recall QuadTree (2D) representation: encoding: Occ Occ Occ Free O Occupied O O O F Occupied Occupied Free Occ Free Free O OF O O F FF F O F O F FFF Free Occ Free Free 1 11101101100001010000 Free Occ Free Free Free Occupied 1 = Occupied 0 = Free
Encoding “I don’t know” With 3 states, we need 2 bits per node/cell … but this is inefficient: Occ Occ Unk Unk O Occupied O U O F Occupied Unk Free Occ Unk Unk O OF O U UUU F O F O F FFF Free Occ Free Free 10 10001001101001100000000001100110 Free Occ Free Free Free Occupied 00 = Unknown 01 = Free 10 = Occupied 11 = (wasted)
Encoding “I don’t know” Make representation symmetric: O means confidently completely occupied F means confidently completely free U means unconfident P means parent (mixed) … which is more efficient: Occ Occ Unk Unk P Occupied P U P F Occupied Unk Free Occ Unk Unk O OF O U UUU F O F O F FFF Free Occ Free Free 11 110011011010011001100110 Free Occ Free Free Free Occupied 00 = Unknown 01 = Free 10 = Occupied 11 = Parent
Octrees (3D) : 00 = U : 01 = F : 10 = O : 11 = P In 3D, we use an octree: unknown free occupied
OctoMap [Wurm et al. 2010] • OctoMapis a probabilistic octree • Each node stores likelihood (log odds) of being occupied • Clamping update policy saturates leaf nodes to either minimum or maximum value [Yguel et al. 2007] avoids overconfidence • Automatic: • If all children are stable(saturated), then prune them • If future measurements contradict state, children are regenerated • Whenever map needs to be stored, force binarization cell n data up to time t • OctoMap, http://octomap.sourceforge.net/
Problem • Occupancy grids • discretize space lose information • assume fixed coordinate system cannot be corrected • SLAM (simultaneous localization and mapping) • estimate of sensor pose is constantly adjusted (especially during loop closure) How to corrector avoid drift?
Solution #1: Assume trajectory known [Wurm et al. 2010] • Original Octomap assumed prior knowledge of entire sensor trajectory not on-line (44 x 18 x 3 m)
Solution #2: Use Manhattan world assumption [Furukawa et al. 2009] • Manhattan world assumes all planes are axis-aligned (parallel or perpendicular): not on-line estimated robot position actual robot position actual walls estimated walls (suffer from drift) • Rotational drift leads to severe error: 1 degree angle error yields 2 m position error (after 100 m) But Manhattan zero rotational drift!
Implementation • Forward-facing Kinect sensor on Pioneer mobile base • Manually drove robot • To enforce Manhattan world constraint, • detect dominant vertical plane(s) (apply RANSAC to horizontal scan) • classify based on normal (just 2 categories) • only 1 plane needed • Visual registrationusing SURF point correspondences wall robot trajectory
Computing robot pose • Robot pose found on-line using PoseSLAM from incremental Smoothing and Mapping (iSAM) • Factor graph (undirected bipartite) • Compute MAP estimate over all measurements global orientation from Manhattan (Wi) robot pose relative position from robot odometry (Oi) and visual registration (Vi) • GTSAM, https://collab.cc.gatech.edu/borg/gtsam/
Results • Laboratory with adjoining rooms: RO RO+VR RO+M RO+VR+M (10.6 x 20.6 m)
Results • Long corridor (loop closure not possible) RO+VR RO+VR+M (23.9 x 47.8 m)
Results • Large building (no loop closure) RO+VR (52.6 x 53.2 m)
Results • Large building (no loop closure) RO+VR+M (52.6 x 53.2 m)
Quantitative measurements (approximate 2D Euclidean position error at intersections)
Size of OctoMaps • Octree reduces storage requirements by 3 orders of magnitude:
Conclusion • On-line system for accurate 3D map generation of indoor rectilinear buildings • Manhattan world assumption with inference on factor graph to estimate robot position and orientation • Zero rotational drift • Stores in OctoMap (efficient, hierarchical) • Allows occupancy grids to be used for on-line, large-scale mapping