Skip to content
Gregoire Milliez edited this page Jun 25, 2016 · 4 revisions

This package defines all ROS messages and services used in TOASTER. All the messages type like Area, Agent, Entity, Fact, etc, have been defined in msg folder while service like AddAgent, AddArea, etc, in srv folder. Descriptions in .msg and .srv files makes it easy for ROS tools to automatically generate source code for the message type in several target languages.

Implementation details

toaster_msgs includes uses one message type in defining another higher level of message. This establishes relationship of hierarchy and aggregation among various messages, can be seen in the figure below. Services used in various modules are described in subsequent sections. To see the detailed structure of each messages refer to here and here for services.

This package also provides classes to help other modules to read the messages and to convert then into toaster-lib data structure. These class are ToasterFactReader, ToasterObjectReader, ToasterHumanReader, ToasterRobotReader.

Symbolic representation and fact

Our situation assessment modules perform geometric computations to get a symbolic representation of the world. This symbolic representation is made based on a list of a data structure named a fact. In our system, a `fact is a vector, with several fields, used to represent a property of the environment. We detail below the fields of this vector.

Subject: the entity on which the property applies (e.g.: Red_Mug, Human1, Pr2, Human_Right_Hand). Property: the property linked to the Subject (e.g.: isOn, isFull, isMoving, isPointing, canSee). Target: the property may link the entity-subject with an entity-target. As an example if an entity BOOK is on an entity TABLE, BOOK will be the subject while TABLE will be the target. PropertyType: this parameter defines the category in which the property falls (e.g.: position, state, motion, posture, affordance). Using this parameter, if an external module adds a fact, it is still possible to know which kind of property it is. Value: a property may have a value linked to it. As an example, the property isFull or isMoving may have the value TRUE or FALSE (if we want to have a close world representation). As another example, if we represent the distance between joints, such as robot's hand to human head, the Value parameter could be set to DANGER, CLOSE or FAR, or even holds a numerical value. In some situations, to represent a lack of knowledge on a property and the awareness of this lack, the fact's value can also be set to unknown. Confidence: this figure between 0 and 1 represents the reliability of the fact. This can be linked to sensor reliability or to the property computation itself. Time: the time at which the fact was computed. FactObservability: the probability that a human would acquire the awareness of the fact if he sees the Subject of the fact.

As an example, the vector ´< Subject = Bob_Right_Hand$, Property = isMovingToward, Target = Red_Book, PropertyType = motion, Confidence = 0.8, time = 145571646570, FactObservability = 0.7 >´ represents the fact that, at the given time, the hand (Bob_Right_Hand) of Bob is going toward a book (Red_Book) with a confidence of 0.8. The following sections describe spatial and temporal reasoning components that generate these kind of facts.

Clone this wiki locally