Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tutorials:intermediate:semantic_environment_map [2016/01/15 16:24] gkazhoyatutorials:intermediate:semantic_environment_map [2016/06/14 13:15] (current) – [Setting up] gkazhoya
Line 65: Line 65:
  
 <code lisp> <code lisp>
-SEMANTIC-MAP-COSTMAP> (setf cram-transforms-stamped:*fixed-frame* "map")+SEMANTIC-MAP-COSTMAP> (setf cram-tf:*fixed-frame* "map")
 SEMANTIC-MAP-COSTMAP>  SEMANTIC-MAP-COSTMAP> 
 (prolog:def-fact-group costmap-metadata () (prolog:def-fact-group costmap-metadata ()
Line 149: Line 149:
    #<QUATERNION (0.0d0 0.0d0 1.0d0 0.0d0)>>    #<QUATERNION (0.0d0 0.0d0 1.0d0 0.0d0)>>
 </code> </code>
 +
 A location description can be ambiguous, e.g., if we would like to have a location of an object of a certain semantic map part type: A location description can be ambiguous, e.g., if we would like to have a location of an object of a certain semantic map part type:
 <code lisp> <code lisp>
Line 165: Line 166:
    #<QUATERNION (0.0d0 0.0d0 0.0d0 1.0d0)>>    #<QUATERNION (0.0d0 0.0d0 0.0d0 1.0d0)>>
 </code> </code>
 +There are multiple objects of type cupboard, so we get multiple solutions.
 +
 +In the example semantic map '':type'' can be ''"Cupboard"'', ''"Drawer"'', ''"Refrigerator"'', etc., see the semantic map object for more detail.
 +
 +Now, let's use the location costmap mechanism to ground locations on or in objects:
 +<code lisp>
 +SEMANTIC-MAP-COSTMAP> (reference (make-designator :location '((:in "Refrigerator"))))
 +#<CL-TRANSFORMS-STAMPED:POSE-STAMPED 
 +   FRAME-ID: "map", STAMP: 0.0
 +   #<3D-VECTOR (1.3000001907348633d0 -0.9499998092651367d0 0.53999999538064d0)>
 +   #<QUATERNION (0.0d0 0.0d0 0.0d0 1.0d0)>>
 +</code>
 +{{ :tutorials:intermediate:in-fridge.png?direct&600 |}}
 +The big red dot is the location sampled for this designator.
 +
 +If we want a location on a specific object, not on all objects of a certain type, we can specify that using the '':name'' key:
 +<code lisp>
 +SEMANTIC-MAP-COSTMAP> (reference (make-designator :location '((:on "Cupboard")
 +                                                              (:name "kitchen_island"))))
 +#<CL-TRANSFORMS-STAMPED:POSE-STAMPED 
 +   FRAME-ID: "map", STAMP: 0.0
 +   #<3D-VECTOR (-0.6999998092651367d0 1.0500001907348633d0 0.8500000238418579d0)>
 +   #<QUATERNION (0.0d0 0.0d0 0.0d0 1.0d0)>>
 +</code>
 +{{ :tutorials:intermediate:location_on_kitchen_island.png?direct&1000 |}}
 +The marker array in RViz show a uniform distribution of all possible locations that satisfy the symbolic constraint in the designator.