no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
Previous revisionNext revision | |||
— | mesh_reasoning [2013/02/13 12:26] – [Usage] admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Reasoning about geometric object models ====== | ||
+ | ~~NOTOC~~ | ||
+ | This module is currently under development and not publicly available. | ||
+ | |||
+ | ===== Usage ===== | ||
+ | |||
+ | Start knowrob_mesh_reasoning | ||
+ | < | ||
+ | roscd knowrob_mesh_reasoning | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Analyze a model by its direct path or a KnowRob identifier (you first have to load an OWL file with the object) | ||
+ | < | ||
+ | ?- mesh_annotator_path(' | ||
+ | ?- mesh_annotator(knowrob:' | ||
+ | </ | ||
+ | |||
+ | Retrieve a list of found annotation types: | ||
+ | < | ||
+ | ?- mesh_element_types($Mr, | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Sample call for highlighting all sphere annotations: | ||
+ | < | ||
+ | ?- mesh_annotator_path(' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Mr = @' | ||
+ | |||
+ | ?- mesh_find_annotations($Mr,' | ||
+ | Found = @' | ||
+ | |||
+ | ?- mesh_annotator_highlight($Mr, | ||
+ | | ||
+ | @' | ||
+ | @' | ||
+ | @' | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Clear highlight with | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Finding handles (default or by specifying minimum and maximum radius of a handle): | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Finding all supporting planes: | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Computables ===== | ||
+ | |||
+ | These computables are still work in progress, but they already build up the OWL datastructures of the object and its parts including their properties and relative poses. | ||
+ | |||
+ | Start knowrob_mesh_reasoning | ||
+ | < | ||
+ | $ roscd knowrob_mesh_reasoning | ||
+ | $ rosrun rosprolog rosprolog knowrob_mesh_reasoning | ||
+ | </ | ||
+ | |||
+ | Load example file | ||
+ | < | ||
+ | ?- owl_parse(' | ||
+ | </ | ||
+ | |||
+ | Ask for properPhysicalParts (loads mesh, segments it and creates the parts on the fly) | ||
+ | < | ||
+ | ?- rdf_triple(knowrob: | ||
+ | </ | ||
+ | |||
+ | Ask for properties of these parts | ||
+ | < | ||
+ | ?- rdf_triple(knowrob: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Currently implemented computables ==== | ||
+ | |||
+ | * Planar surfaces | ||
+ | * normalDirection (vector) | ||
+ | * objectLongSide (vector) | ||
+ | * objectShortSide (vector) | ||
+ | * areaOfObject (float) | ||
+ | * areaCoverage (float) | ||
+ | * supporting planes (computable class for SupportingPlane) | ||
+ | * Spheres | ||
+ | * radius (float) | ||
+ | * volumeOfObject (float) | ||
+ | * areaOfObject (float) | ||
+ | * areaCoverage (float) | ||
+ | * concavity (computable class for ConcaveTangibleObject) | ||
+ | * Cones/ | ||
+ | * radius (as average radius, float) | ||
+ | * maxRadius (float) | ||
+ | * minRadius (float) | ||
+ | * volumeOfObject (float) | ||
+ | * lengthOfObject (float) | ||
+ | * longitudinalDirection (vector) | ||
+ | * areaOfObject (float) | ||
+ | * areaCoverage (float) | ||
+ | * Containers | ||
+ | * longitudinalDirection (opening direction, vector) | ||
+ | * volumeOfObject (float) | ||
+ | * Handles (computable class for cylindrical handles, class ' | ||
+ | |||