tmkit  0.0.1-alpha1
A Task-Motion Planning Framework
 All Data Structures Files Functions Enumerations Enumerator Pages
Domain Semantics

Table of Contents

Domain semantics files specify the mapping between the task and motion layers in the particular planning domain.


Scene State Function

The state function maps the geometric scene to a task state. The return value is a list of expressions (implicitly and-ed) that define the state.

State expressions are represented as lists of operators and arguments in S-Expression format.

Expression Examples

The following table provides several examples of state expressions in customary infix notation, as PDDL and Lisp S-Expressions, and as Python lists.

Infix Expression PDDL / Lisp S-Expression Python List
a AND b (and a b) ["AND", "a", "b"]
a OR b (or a b) ["OR", "a", "b"]
(a OR b) AND c (and (or a b) c) ["AND", ["OR", "a", "b"], "c"]
position(foo) = x (= (position foo) x) ["=", ["POSITION", "foo"], "x"]

Python Expression List

Here is an example return value as a Python list:

[["=", ["POSITION", "block_a"], "front_table__0__0"],
["=", ["POSITION", "block_b"], "front_table__0__-2"],
["=", ["POSITION", "block_c"], "block_a"]]

S-Expression List

And here is the same return value as a Lisp S-Expression:

((= (POSITION "block_a") "front_table__0__0")
(= (POSITION "block_b") "front_table__0__-2")
(= (POSITION "block_c") "block_a"))

Scene Objects Function

The scene objects function returns the PDDL objects for the scene. The return value is a list where each element is another list beginning with the object type and followed by all objects of that type.


The following examples show the object lists objects "block_a", "block_b" and "block_c" of type "BLOCK", and "location_0", "location_1", and "location_2" of type "LOCATION".

Python Example

Here is an example return value as a Python list:

[["BLOCK", "block_a", "block_b", "block_c"],
["LOCATION", "location_0", "location_1", "location_2"]]


And here is the same value as an S-Expression:

((BLOCK "block_a" "block_b" "block_c")
(LOCATION "location_0" "location_1" "location_2"))

PDDL Example

These example values correspond to the following PDDL :objects clause:

(:objects "block_a" "block_b" "block_c" - block
"location_0" "location_1" "location_2" - location)

Refine Operator Function

The refine operator function computes the motion plan instantiations of task operators.