Improved segmentation methods for 3D CAD models
A part of KnowRob that is gaining increasing importance are methods for reasoning about 3D object models. A few months ago, we have presented a method for the automatic semantic analysis of object components based on common surface meshes that can easily be downloaded from the Internet. Using an initial geometric analysis, followed by the identification of relevant object parts, this module is able to segment a common CAD model into a set of functional object parts. These parts are very important for robots that interact with these objects because they bridge the gap between symbols (e.g. words such as 'handle') and geometry (the coordinates of the handle w.r.t. the object).
During his Summer of Code project, Andrei Stoica worked on improvements of the algorithms for segmenting the surface meshes. He implemented a method proposed by Lavou'e et al. that detects sharp edges in the models and uses them for improving the segmentation. This helped to greatly reduce the number of erroneous annotations and to come up with a much better summarization of the models by their main components as needed by our robots. The pictures on the right side show the segmentation obtained using the old method on the left and the results of the new method on the right. The code is available in the knowrob_dev repository at GitHub.