HATP: Basic usage

This page present a basic set of commands to use HATP, for extended use of HATP please refer to the component's page (links here)

<<TableOfContents: execution failed [list index out of range] (see also the log)>>

General Information

1. General argument

The are two arguments that are implemented for all the modules: --help and --version. When either argument is used the module answers and leave

1.1. '--help' argument

For each module it will give a detailed list of its arguments and ROS parameters (if you don't know ROD parameter please see here).

For instance:

> $ rosrun hatponboard hatponboard --help
Usage: Parameters for hatp(onboard), the core of HATP
        /hatp/verbosity: [0,1,2,3] Selects the level of verbosity (can be set on command line with _verbosity:=...)

1.2. '--version' argument

Tells you the current version of the module, useful when reporting an issue.

N.B. hatponboard gives a slightly different output since it also gives the version of the underlying library hatponbaord-lib:

> $ rosrun hatponboard hatponboard --version      
/home/rlalleme/ros/indigo/devel/lib/hatponboard/hatponboard - version v2.0.0
        hatponboard-lib - version v3.4.0

Start HATP

There are several ways of starting HATP depending on your need. The first solution is to start everything altogether, the second solution allows you to run the core separately from the GUIs, useful when working over network. Finally the last solution is to start each module by hand.

/!\ If you did not compile a domain first, please see the next section to know how to do it.

1. Start everything at once

To start all HATP modules at once simply call:

roslaunch hatp hatp.launch

If you want to change some of the parameters (hatpconsole mode, and so on), you can give the values as arguments of the script:

roslaunch hatp hatp.launch hatpconsole_mode:=minimal

If you want to keep those parameter, then create a new launch file and give the argument using the <arg> tag:

<launch>
        <!-- Call HATP with parameters -->
        <include file="$(find hatp)/hatp.launch">
                <arg name="hatpconsole_mode" value="minimal" />
        </include>
</launch>

2. Start the core, and GUI separately

The core of HATP is actually composed of two modules: hatponboard and a database to provide the initial state. To start it use the appropriate launch file:

roslaunch hatp hatp-core.launch

Then you can launch the other modules:

rosrun hatpconsole hatpconsole

rosrun hatptester hatptester

3. Start each module independently

3.1. Start the database

To start the core with the two modules as separate entities, first start the database:

rosrun hatponboard hatponboard-database

The database actually has two modes: domain and toaster. In domain mode, the initial state is retrieved from the domain file, while in toaster mode it is retrieve from toaster. In Toaster mode there are several parameters to set (database name, agent to retrieve). See the --help option for more details.

Reminder on ROS parameters

With ROS parameter server: call rosparam set <absolute_param_name> <value>

Private param: when you call a module rosrun <package> <module> _<relative_param_name>:=<value>

For instance for the database with rosparam:

rosparam set /hatponboard_database/mode toaster

With private parameter:

rosrun hatponboard hatponboard-database _mode:=toaster

Both methods have the same result.

3.2. Start the planner

To start hatponboard, simply call:

rosrun hatponboard hatponboard

It has only one parameter, the verbosity of the messages it produces while planning. The higher the number, between 0 and 3, the more details HATP gives while planning.

Whne HATP hass started it will wait for a planning request, you must call the service /hatp/planner to start it. Another way is to use the hatptester module that is designed to make it easy to send requests.

3.3. The other modules

You will find more details on each module on their dedicated page:

Compile a domain

In order to compile a domain to be able to use it with HATP here are the steps.

1. Parse the domain

First start the parser, if no argument is given it will start an interactive prompt to select it:

rosrun hatponboard_lib hatpparser

Here is an example of interaction:

Please choose a domain file in the following list:
     1  ArcasProject/arcas1.dom
     2  ArcasProject/arcas2.dom
     3  ArcasProject/arcas3.dom
     4  ArcasProject/arcas4.back.dom
     5  ArcasProject/arcas4.dom
     6  ArcasProject/arcas5.back.dom
     7  ArcasProject/arcas5.dom
     8  ArcasProject/arcas6.back.dom
     9  ArcasProject/arcas6.dom
    10  ArcasProject/arcas7.dom
    11  Assembly/assembly.dom
    12  BeliefTest/bmTest.dom
    13  bmtest/domain.dom
    14  CleanTheTable/clean1.dom
    15  CleanTheTable/clean2.dom
    16  CleanTOM/Clean.dom
    17  CleanWithBelief/cleanBM.dom
    18  DWR-shop2/dwr.dom
    19  DWR/dwr-2.dom
    20  DWR/dwr.dom
    21  ILGTP/get_object_cost.dom
    22  ILGTP/paint_cube.dom
    23  ILGTP/place_reachable.dom
    24  ILGTP/table-3-objects.dom
    25  ILGTP/table-3-virtualPlace.dom
    26  ILGTP/tray_forbid.dom
    27  LibraryPR2/lib.dom
    28  LibraryPR2/lib2.dom
    29  mikeDomain/domain.dom
    30  RoboErgosum/RoboErgosum.dom
    31  RoboErgosum/RoboErgosumIcra.dom
    32  RoboErgosum/RoboErgosumNavigationFree.dom
    33  Saphari/assembleBrackets.dom
    34  Saphari/assembleBrackets.simplified.dom
    35  Saphari/assembleBrackets.video.dom
    36  Saphari/soldering-iron.dom
    37  Saphari/soldering-iron.ugly.dom
    38  Stack/stack.dom
    39  Stack/stack_lock.dom
    40  Tests/test.dom
    41  Tests/test2.dom
    42  Tests/testAllVar.dom
    43  Tests/testAllVarBM.dom
    44  UncoverTheToy/uncover.dom
    45  USTurnTaking/StackUS.dom
        (to add a new line, add the .dom file in the <catkin_ws>/src/hatp/hatponboard/domains folder)

Choice: 20

You chose : "DWR/dwr.dom"

Please choose a cost file in the following list:
     1  ArcasProject/arcas.cost
     2  Assembly/assembly.cost
     3  BeliefTest/bmTest.cost
     4  bmtest/costs.cost
     5  CleanTheTable/clean.cost
     6  CleanTOM/Clean.cost
     7  CleanWithBelief/cleanBM.cost
     8  DWR-shop2/dwr.cost
     9  DWR/dwr.cost
    10  ILGTP/ilgtp.cost
    11  LibraryPR2/lib.cost
    12  mikeDomain/costs.cost
    13  RoboErgosum/RoboErgosum.cost
    14  Saphari/assembleBrackets.cost
    15  Saphari/functions.cost
    16  Stack/stack.cost
    17  Tests/test.cost
    18  UncoverTheToy/uncover.cost
    19  USTurnTaking/StackUS.cost
        (to add a new line, add the .cost file in the <catkin_ws>/src/hatp/hatponboard/domains folder)

Choice: 9

You chose : "DWR/dwr.cost"

************** START HATP DOMAIN EXEC **************
Domain: "dwr.dom"
Cost: "dwr.cost"
Preprocessors step done.
Fact database initialization done.
HTN description done.
File for fact database initialization written.
Files for HTN tasks written.
Files for Belief Management written.
File for HTN initialization written.
File for social rules written.
File for social rule base initialization written.
User functions for costs copied.
SUCCESS
Output written to: <catkin_ws>/src/hatp/hatponboard/generated
*************** END HATP DOMAIN EXEC ***************

{i} All the possible file are automatically detected as long as there are in the domain folder AND the have the right extension: either .dom or .cost.

2. Compile the domain

When the domain has been parsed, you need to recompile hatponboard.

cd <catkin_ws>
catkin_make hatponboard

Now HATP is ready to start, see the previous section to start HATP.