The Surface Patch Library (SPL) includes models of 10 types of curved surface patches and an algorithm to fit them to potentially noisy range sensor data. Uncertainty is quantified throughout using covariance matrices. Some of the mathematical foundations of the system are described in this paper.

The 10 bounded curved-surface patch types are designed for modeling local contact regions both in the environment (e.g. on rocky surfaces) and on a robot (e.g. foot pads). The system uses minimal geometric parameterizations based on the exponential map for spatial pose, both in the usual 6DoF case and also for patches with revolute symmetry that have only 5DoF. A fitting algorithm is inclued to fit any patch type to point samples of a surface, with quantified uncertainty both in the input points (including nonuniform variance, common in data from range sensors) and in the output patch. Our ongoing work is to apply simultaneous localization and mapping (SLAM) techniques to assemble patches on-line into a spatial patch map of the available contact surfaces both on and around a robot.

The current version of the SPL sourcecode is now available as a Matlab toolbox.


Kinect Rock Data with Manual Segmentation ogv|mp4|webm

This demo shows interactive segmentation of patches from real data taken with a Kinect, with each patch automatically fit by our patchfit algorithm. To reproduce, run testrock.

Fit Elliptic Paraboloid (Simulation) ogv|mp4|webm

This demo starts with a simulated “ground truth” elliptic paraboloid patch. Data samples are then taken with noise simulated according to our Kinect range error model. Finally, a paraboloid patch will ellipse boundary is automatically fit with our patchfit algorithm. To reproduce, run testpatchfit(1,‘dbg’,3).

Fit all Patch Types (Simulation) ogv|mp4|webm

Similar to the elliptic paraboloid demo, but shows the results when run on “ground truth” instances of all 10 patch types. To reproduce, run testpatchfit(1:10,‘dbg’,6).