Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:srdl2_tutorial [2014/11/27 16:52] – [Requirements of an action] admin | doc:srdl2_tutorial [2014/11/27 17:05] (current) – [Matching requirements to capabilities] admin | ||
---|---|---|---|
Line 28: | Line 28: | ||
$ rosrun rosprolog rosprolog knowrob_srdl | $ rosrun rosprolog rosprolog knowrob_srdl | ||
- | % Load SRDL model of the PR2 robot | + | % Load SRDL model of the PR2 and Baxter robots |
?- owl_parse(' | ?- owl_parse(' | ||
+ | ?- owl_parse(' | ||
% Load an example task description for serving a drink | % Load an example task description for serving a drink | ||
Line 120: | Line 121: | ||
===== Missing components or capabilities ===== | ===== Missing components or capabilities ===== | ||
- | | + | <code prolog> |
- | Cap = ' | + | % No components nor capabilities are missing for the ServeADrink action on the PR2: |
- | Cap = ' | + | ?- missing_comp_for_action(serve_drink:'ServeADrink', |
+ | false. | ||
- | | + | ?- missing_cap_for_action(serve_drink:'ServeADrink', |
- | false. | + | false. |
- | + | % The Baxter robot, in contrast, cannot perform the task due to lacking navigation abilities: | |
- | ===== Matching requirements to capabilities | + | ?- missing_cap_for_action(serve_drink:' |
+ | C = srdl2cap:' | ||
+ | </ | ||
+ | ===== Behind the scenes: Implementation of the matching procedures | ||
The matching can effectively reduced to the following statement: | The matching can effectively reduced to the following statement: | ||
+ | <code prolog> | ||
missing_cap_for_action(Action, | missing_cap_for_action(Action, | ||
| | ||
\+ cap_available_on_robot(Cap, | \+ cap_available_on_robot(Cap, | ||
- | A missing capability is thus defined as one that is required by an action, but not provided by the robot. Required means that either the action itself or any sub-action has a dependency on this capability: | + | </ |
+ | |||
+ | A missing capability is thus defined as one that is required by an action but not provided by the robot. | ||
+ | <code prolog> | ||
required_cap_for_action(Action, | required_cap_for_action(Action, | ||
| | ||
Line 140: | Line 149: | ||
| | ||
| | ||
+ | </ | ||
- | There are three possibilities to express that a capability is available on a robot: Either it is asserted to be available for the whole class of robots (e.g. every PR2 has a holonomic base), for a specific robot instance, or it can be concluded that the capability should be available because all specified dependencies on components or other capabilities are fulfilled: | ||
+ | There are three possibilities to express that a capability is available on a robot: Either it is asserted to be available for the whole class of robots (e.g. every PR2 has a mobile base), for a specific robot instance, or it can be concluded that the capability should be available because all specified dependencies on components or other capabilities are fulfilled: | ||
+ | <code prolog> | ||
% capability asserted for robot instance | % capability asserted for robot instance | ||
cap_available_on_robot(Cap, | cap_available_on_robot(Cap, | ||
Line 162: | Line 173: | ||
| | ||
| | ||
+ | </ | ||
The matching procedure is equivalent for components. | The matching procedure is equivalent for components. |