Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Next revisionBoth sides next revision | ||
tutorials:intermediate:costmaps [2019/03/07 11:51] – [Visualization of costmaps] gkazhoya | tutorials:intermediate:costmaps [2019/04/02 12:03] – amar | ||
---|---|---|---|
Line 3: | Line 3: | ||
This tutorial demonstrates the location costmap library of CRAM, including its API, examples of existing costmaps and how to write your own new costmaps. | This tutorial demonstrates the location costmap library of CRAM, including its API, examples of existing costmaps and how to write your own new costmaps. | ||
+ | ===== Introduction ===== | ||
+ | If you recall, the resolution of a location designator is divided into two steps - a generation step and a verification step. The generators yield sequences of solution candidates in the form of lazy lists and verification functions accept or reject solutions. The constraints specified with designators normally restrict the solution space but still leave many potentially valid solutions. The process of resolving location designator properties and generating poses in space is split up into three parts in order to deal with the computational complexity of the six-dimensional space of poses and to make a sampling-based approach feasible. Informally, the generation of a pose can be resolved as follows: | ||
+ | - Generate a two-dimensional grid based on location designator constraints with values greater than zero for all potentially valid solutions. It is a map representing the solution density of a specific cell where greater values represent more solutions for a specific constraint. | ||
+ | - Use the grid as a probability density function to generate random samples. | ||
+ | - Use Heuristics to resolve the orientation and Z coordinate of the generated pose. | ||
+ | - Use the physics-based reasoning system to prove that the solution is valid. | ||
+ | As can be seen, the first three steps generate a solution candidate while the last step verifies it. | ||
+ | |||
+ | Costmaps are density maps of two-dimensional matrices of positive real numbers which allow for representing spacial constraints such as '' | ||
+ | |||
+ | For further reading, refer to section 4 of [[https:// | ||
===== Setup ===== | ===== Setup ===== | ||
Line 92: | Line 103: | ||
(abs (/ (cl-transforms: | (abs (/ (cl-transforms: | ||
| | ||
- | </ | + | </ |
* define order for your costmap function and give it a name: | * define order for your costmap function and give it a name: | ||
Line 98: | Line 109: | ||
<code lisp> | <code lisp> | ||
(defmethod location-costmap: | (defmethod location-costmap: | ||
- | </ | + | </ |
* define the prolog rule for generating costmaps: | * define the prolog rule for generating costmaps: | ||
Line 114: | Line 125: | ||
(make-behind-cost-function ?ref-x ?ref-y) | (make-behind-cost-function ?ref-x ?ref-y) | ||
?costmap))) | ?costmap))) | ||
- | </ | + | </ |
* resolve a designator with your new awesome costmap: | * resolve a designator with your new awesome costmap: |