-
Notifications
You must be signed in to change notification settings - Fork 2
Memory of Beliefs
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 are 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.
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.
Contact: We thank and welcome any suggestion or comment about Aerostack. For any question or bug report you can read and/or write at the issues page. You can also contact the team support at the following address: [email protected]
The content of the Aerostack wiki is licensed under Creative Commons license CC BY 4.0
Getting started
Tools
Components
Tutorials
International competitions
More information