Skip to content
Martin Molina edited this page Jul 25, 2020 · 7 revisions

Aerostack uses a memory of symbolic beliefs to represent information about what the robot believes about the world. A belief is a proposition about the world that the robot thinks is true (the world here refers to both the external world and the internal state of the robot).

Beliefs are useful to be used in the specification of mission plans. During the execution of a mission plan, the robot uses beliefs as true facts while it reasons trying to adapt the mission plan to the current circumstances. Beliefs can also be used by the operator to help monitor the correct execution of a mission.

Aerostack stores the set of beliefs and tries to keep their consistency with the world and with the other beliefs. Aerostack represents beliefs using a logic-based approach with predicates. Next table shows examples of such predicates with the general format of predicate(object, value) or simpler forms such as property(object). These predicates are present in the memory with their corresponding values:

Predicate Description Example
object(x, y) The class of the object x is y object(1, drone)
self(x) The object with identifier x is the own robot self(1)
name(x, y) The name of the object x is y name(1, drone120)
flight_state(x, y) The flight state of x is y flight_state(1, LANDED)
position(x, y) The position of x is y (in 3D coordinates) position(1,(4.9, 5.1, 0))
battery_level(x, y) The battery charge of x is y battery_level(1, HIGH)

The examples presented in the next table are for illustration purposes (i.e., not all of them they are not implemented in the current version of Aerostack):

Predicate Description
code(x, y) The numerical code of x is y
color(x, y) The color of x is y
carry(x, y) The robot x carries the object x
image(x, y) The image of object x is y
temperature(x, y) The temperature of x is y
visible(x) The object x is visible

To keep the consistency, the representation follows an object-oriented approach. Objects are instances of a class and may have attributes with values. Aerostack assumes that the values of attributes defined for an object using triplets are mutually exclusive. For example, the belief color(7, blue) is incompatible with the belief color(7, red) because the values blue and red are considered mutually exclusive. Aerostack keeps consistency among beliefs. When a belief is added, e.g., color(7, blue), the incompatible beliefs are automatically retracted, e.g., color(7, red).

The operator can consult the state of the memory using belief expressions (e.g., within languages for mission plan specification). For example the user can use the following belief expression to know the coordinates of the current position:

position(1,(?X,?Y,?Z))

In this belief expression, X, Y, and Z are variables that store the coordinates corresponding to the current position. The question mark (?) indicates that such variables are substituted by the values found in the belief memory.

Belief memory viewer

The content of the memory of beliefs can be visualized with the help of the belief memory viewer. To launch the execution viewer the command is:

 $ roslaunch belief_memory_viewer belief_memory_viewer.launch --wait robot_namespace:=drone$NUMID_DRONE drone_id:=$NUMID_DRONE

The next image shows an example of how the belief memory is presented by the viewer.

Clone this wiki locally