3D models in robotics Design Simulation Robot collision
detection (i.e. prediction) Proximity calculation Map building
Object recognition Grasp planning Etc..
Slide 3
Common Representations Primitives Raw data Point clouds Depth
image Polygon soup Surfaces Polygon mesh Parametric curves
Subdivision surfaces Implicit surface Volumes Voxels Distance
transforms Quad/octree
Slide 4
Aspects to consider How accurately does the geometry need to be
represented? What operations need to be performed on the geometry?
(Recognition? Matching? Simulation? Collision detection?
Visualization? Distance computation?) How quickly? How accurately?
Storage and transmission limitations? How easily / reliably /
accurately / quickly can the source data (e.g., raw sensor data,
CAD models) be converted to the desired format?
Slide 5
Visualization Primitives Raw data Point clouds Depth image
Polygon soup Surfaces Polygon mesh Parametric curves Subdivision
surfaces Implicit surface Volumes Voxels Distance transforms
Quad/octree Easy to convert to polygons Convert to polygons
(somewhat expensive) Use specialized rasterization techniques
Slide 6
Easy Conversions From primitives/surfaces to: Polygon soups :
discretization Point clouds: sampling Depth images: rasterization
From volumes to surfaces: Simple: output a box for each occupied
cell (coarse) Marching cubes: walk along the volume until a surface
is hit, output a piece of the surface in the volume (accurate)
Slide 7
Harder Conversions From point clouds / soups to surfaces /
volumes: a challenge Fill cells that contain points (coarse)
Implicit function fitting Silhouette carving Lots of other methods
no perfect way to deal with missing data From surfaces to volumes :
Fill cells that contain surface (coarse) Euclidean distance
transform: wavefront propagation from surface cells (closed
surfaces, accurate)
Slide 8
Resolution issues Accuracy, space, & computation complexity
determined by resolution h Suppose object size W Point clouds,
polygon meshes: O((W/h) 2 ) space Voxels: O((W/h) 3 ) space
Downsampling Mesh simplification
Slide 9
Geometric queries Collision detection: When A and B are at
hypothetical poses T A and T B, would they collide? Distance
calculation When A and B are at hypothetical poses T A and T B, how
far are they apart? Time-of-first contact When A and B move along
paths T A (t) and T B (t), at what time do they first collide?
Managing large scenes O(n 2 ) pairs of objects how to check
collisions?
Slide 12
Collision Detection Methods Many different methods In
particular: Grid method: good for many simple moving objects of
about the same size (e.g., many moving discs with similar radii)
Closest-feature tracking: good for moving polyhedral objects
Bounding Volume Hierarchy (BVH) method: good for few moving objects
with complex and diverse geometry
Slide 13
Grid Method Subdivide space into a regular grid cubic of square
bins Index each object in a bin d
Slide 14
Grid Method d Running time is proportional to number of moving
objects Useful also to compute pairs of objects within some
distance (vision, sound, )
Slide 15
Closest-Feature Tracking (M. Lin and J. Canny. A Fast Algorithm
for Incremental Distance Calculation. Proc. IEEE Int. Conf. on
Robotics and Automation, 1991) The closest pair of features
(vertex, edge, face) between two polyhedral objects are computed at
the start configurations of the objects During motion, at each
small increment of the motion, they are updated Efficiency derives
from two observations: The pair of closest features changes
relatively infrequently When it changes the new closest features
will usually be on a boundary of the previous closest features
Slide 16
Closest-Feature Test for Vertex- Vertex Vertex
Slide 17
Application: Detecting Self-Collision in Humanoid Robots (J.
Kuffner et al. Self-Collision and Prevention for Humanoid Robots.
Proc. IEEE Int. Conf. on Robotics and Automation, 2002)
Slide 18
BVH with spheres: S. Quinlan. Efficient Distance Computation
Between Non-Convex Objects. Proc. IEEE Int. Conf. on Robotics and
Automation, 1994. BVH with Oriented Bounding Boxes: S. Gottschalk,
M. Lin, and D. Manocha. OBB-Tree: A Hierarchical Structure for
Rapid Interference Detection. Proc. ACM SIGGRAPH '96, 1996.
Combination of BVH and feature-tracking: S.A. Ehmann and M.C. Lin.
Accurate and Fast Proximity Queries Between Polyhedra Using Convex
Surface Decomposition. Proc. 2001 Eurographics, Vol. 20, No. 3, pp.
500- 510, 2001. Adaptive bisection in dynamic collision checking:
F. Schwarzer, M. Saha, J.C. Latombe. Adaptive Dynamic Collision
Checking for Single and Multiple Articulated Robots in Complex
Environments, manuscript, 2003. Bounding Volume Hierarchy
Method
Slide 19
Enclose objects into bounding volumes (spheres or boxes) Check
the bounding volumes first Decompose an object into two Bounding
Volume Hierarchy Method
Slide 20
Enclose objects into bounding volumes (spheres or boxes) Check
the bounding volumes first Decompose an object into two Proceed
hierarchically Bounding Volume Hierarchy Method
Slide 21
Enclose objects into bounding volumes (spheres or boxes) Check
the bounding volumes first Decompose an object into two Proceed
hierarchically Bounding Volume Hierarchy Method
Slide 22
BVH is pre-computed for each object Bounding Volume Hierarchy
Method
Slide 23
BVH in 3D
Slide 24
Collision Detection Two objects described by their precomputed
BVHs A B C D EF G A B C D EF G
Slide 25
Collision Detection A Search tree A A pruning
Slide 26
Collision Detection A CCBCBBCBCB Search tree A A A B C D EF
G
Slide 27
Collision Detection CCBCBBCBCB A Search tree pruning A B C D EF
G
Slide 28
If two leaves of the BVHs overlap (here, G and D) check their
content for collision Collision Detection CCBCBBCBCB A Search tree
GEGEGDGDFEFEFDFD A B C D EF G G D
Slide 29
Variant A CCBCBBCBCB Search tree A A A B C D EF G A
CACABABA
Slide 30
Collision Detection Pruning discards subsets of the two objects
that are separated by the BVs Each path is followed until pruning
or until two leaves overlap When two leaves overlap, their contents
are tested for overlap
Slide 31
Search Strategy and Heuristics If there is no collision, all
paths must eventually be followed down to pruning or a leaf node
But if there is collision, it is desirable to detect it as quickly
as possible Greedy best-first search strategy with f(N) = d/(r X +r
Y ) [Expand the node XY with largest relative overlap (most likely
to contain a collision)] rXrX rYrY d X Y
Slide 32
Recursive (Depth-First) Collision Detection Algorithm Test(A,B)
1.If A and B do not overlap, then return 1 2.If A and B are both
leaves, then return 0 if their contents overlap and 1 otherwise
3.Switch A and B if A is a leaf, or if B is bigger and not a leaf
4.Set A 1 and A 2 to be As children 5.If Test(A 1,B) = 1 then
return Test(A 2,B) else return 0
Slide 33
Performance Several thousand collision checks per second for 2
three- dimensional objects each described by 500,000 triangles, on
a 1-GHz PC
Slide 34
Distance Computation M > M, prune
Slide 35
Greedy Distance Computation Greedy-Distance(A,B,M) 1.If
min-dist(A,B) > M, then return M 2.If A and B are both leaves,
then return distance between their contents 3.Switch A and B if A
is a leaf, or if B is bigger and not a leaf 4.Set A 1 and A 2 to be
As children 5.M min(max-dist(A 1,B), max-dist(A 2,B), M) 6.d 1
Greedy-Distance(A 1,B,M) 7.d 2 Greedy-Distance(A 2,B,M) 8.Return
Min(d 1,d 2 ) M (upper bound on distance) is initialized to
infinity
Slide 36
Approximate Distance Approx-Greedy-Distance(A,B,M, ) 1.If (1+
)min-dist(A,B) > M, then return M 2.If A and B are both leaves,
then return distance between their contents 3.Switch A and B if A
is a leaf, or if B is bigger and not a leaf 4.Set A 1 and A 2 to be
As children 5.M min(max-dist(A 1,B), max-dist(A 2,B), M) 6.d 1
Approx-Greedy-Distance(A 1,B,M, ) 7.d 2 Approx-Greedy-Distance(A
2,B,M, ) 8.Return Min(d 1,d 2 ) M (upper bound on distance) is
initialized to infinity
Slide 37
Desirable Properties of BVs and BVHs BVs: Tightness Efficient
testing Invariance BVH: Separation Balanced tree ?
Slide 38
Spheres Invariant Efficient to test But tight?
Slide 39
Axis-Aligned Bounding Box (AABB)
Slide 40
Not invariant Efficient to test Not tight
Slide 41
Oriented Bounding Box (OBB)
Slide 42
Invariant Less efficient to test Tight Oriented Bounding Box
(OBB)
Slide 43
Comparison of BVs SphereAABBOBB Tightness---+ Testing++o
Invarianceyesnoyes No type of BV is optimal for all situations
Slide 44
Desirable Properties of BVs and BVHs BVs: Tightness Efficient
testing Invariance BVH: Separation Balanced tree ?
Slide 45
Desirable Properties of BVs and BVHs BVs: Tightness Efficient
testing Invariance BVH: Separation Balanced tree
Slide 46
Construction of a BVH Top-down construction At each step,
create the two children of a BV Example: For OBB, split longest
side at midpoint
Slide 47
Computation of an OBB [Gottschalk, Lin, and Manocha, 96] N
points a i = (x i, y i, z i ) T, i = 1,, N SVD of A = (a 1 a 2... a
N ) A = UDV T where D = diag(s 1,s 2,s 3 ) such that s 1 s 2 s 3 0
U is a 3x3 rotation matrix that defines the principal axes of
variance of the a i s OBBs directions The OBB is defined by max and
min coordinates of the a i s along these directions Possible
improvements: use vertices of convex hull of the a i s or dense
uniform sampling of convex hull x y X Y rotation described by
matrix U