Retrieving information from knowledge base

Here are some examples of calling the above /get_things_info services.

The knowledge server reads environment information from a parameter server at /srs/language_short. The purpose is to let UIs have readable information in different languages, rather than the object names in the RDF files. Details can be referred to the service definitions, where readableNames[] contains corresponding readable information.

Types of objects

Two types of objects are defined here. Graspable or movable objects, and Workspace or furniture objects.

graspable or movable objects

possible actions:

move - move to the furniture which holds the object

grasp - grasp the object

Furniture objects

Similarly, furniture objects are considered not movable (though can be updated in the database as well, but having different actions accordingly)

There is no direct action for furniture pieces, as currently fetch and carry tasks only focus on graspable objects, such as book, milkbox, etc.

Workspaces are places where objects are located. The need to distinguish this and graspable objects is to use the semantic relationship between objects, e.g. bookshelf is a workspace of books, and table for milkbox etc.

To execute a task such as get a milkbox, the robot would search for the object from possible locations, such as table, fridge, and even oven top.

The user can also specify where the possible workspaces are, to reduce the search space or to improve the efficiency, if the user knows better the environment.

Possible actions

environment_update - update the pose information of the targeted object

workspace verification - verify if the workspace exists at the given pose.

Services /task_request and /plan_next_action

These two services are used for task planning to plan the next action the robot should execute.

A python script is prepared

srs_knowledge/src/demoplanaction.py

for the purpose of testing.

Here is a list of some unit tests, simulating different conditions of the robot task execution.

Tasks Fetch and Search are similar to Get (refer to srs_decision_making), hence not listed here. The test clients allow using different combinations of the parameters as input to make sure the correctness of the result. So far, all tests provide correct result for task planning with this unit test approach.

Some missing examples/usages

Usually, this package can be run simply by launching the launch file in the launch file in package srs_scenario.