Catalog of behavior tasks - aerostack/install GitHub Wiki
This catalog shows the available behavior tasks of Aerostack that can be used in a mission. In general, the particular task performed by a behavior (e.g., FOLLOW_PATH) can be performed by different methods (e.g., using PID motion control or MPC motion control). This page presents the list of behaviors according to the tasks that they perform:
It is important to note that there are two types of behaviors:
-
Goal-based behaviors. These behaviors are defined to reach a final state (attain a goal). For example, the task TAKE_OFF ends when the drone has reached a certain height.
-
Recurrent behaviors. These behaviors perform an activity recurrently or maintain a desired state (for example, the task PAY_ATTENTION_TO_QR_CODES).
Motion tasks
TAKE_OFF
Description: The robot takes off vertically from a static surface. This task ends when the robot reaches a default altitude.
Type: Goal-based.
| Parameters | Format | Example |
|---|---|---|
| altitude | number(m) | altitude: 4.5 |
| speed | number(m/s) | speed: 0.5 |
NOTE: The previous parameters are available when the DF controller is used.
LAND
Description: The robot lands vertically in the current position.
Type: Goal-based.
| Parameters | Format | Example |
|---|---|---|
| speed | number(m/s) | speed: 0.5 |
NOTE: The previous parameter is available when the DF controller is used.
WAIT
Description: The robot waits until a certain condition is satisfied (e.g., duration). During this time the running tasks are not stopped.
Type: Goal-based.
| Parameters | Format | Example |
|---|---|---|
| duration | number(seconds) | duration: 30 |
HOVER
Description: The robot keeps hovering. Hovering is a maneuver in which the robot is maintained in nearly motionless flight over a reference point at a constant altitude and on a constant heading. This task does not avoid moving obstacles.
Type: Recurrent.
MOVE_VERTICAL
Description: The robot moves vertically a given distance. If the distance is positive, the robot moves upward. If the distance is negative, the robot moves downwards.
Type: Goal-based.
| Parameters | Format | Example |
|---|---|---|
| distance | number (meters) | distance: 1.5 |
MOVE_AT_SPEED
Description: The robot keeps moving at a constant speed in some direction (forward, backward, left,right). If the speed value is not given a default value is considered (the maximum speed). This task does not avoid obstacles.
Type: Recurrent.
| Parameters | Format | Example |
|---|---|---|
| direction | {FORWARD, BACKWARD, LEFT, RIGHT} | direction: FORWARD |
| speed | number (m/sec) | speed: 0.8 |
ROTATE
Description: The robot rotates left or right a certain number of degrees (angle) on the vertical axis (yaw). The number of degrees can be expressed as an absolute value (parameter “angle”) or relative to the robot (parameter “relative_angle”).
Type: Goal-based.
| Parameters | Format | Example |
|---|---|---|
| angle | number (degrees) | angle: 90 |
| relative_angle | number (degrees) | relative_angle: 90 |
FOLLOW_PATH
FOLLOW PATH (Version 1)
Description: The robot tries to follow a path that is defined as a sequence of points. The robot assumes that there are not moving or unknown obstacles. When the parameter yaw has the value path_facing, the drone changes its yaw angle in order to face the next point (this is the value by default). If the parameter yaw is constant, the same yaw angle is maintained during the trajectory.
Type: Goal-based.
| Parameters | Format | Example |
|---|---|---|
| path: | sequence of 3D points (x,y,z) in meters | path: [ [1.1,1.1,0.7], [2.2,2.2,0.7], [3.3,3.3,2.5] ] |
| yaw: | allowed values {constant, path_facing} | yaw: constant |
FOLLOW_PATH (version 2)
Description: The robot tries to follow a path that is received by ROS topics. The robot assumes that there are not moving or unknown obstacles. This version does not have any parameters.
Type: Recurrent.
SEND_PATH
Description: This behavior notifies the path to be followed by a task FOLLOW_PATH (version 2). The notification is done by using ROS topics. When the parameter yaw has the value path_facing, the drone changes its yaw angle in order to face the next point (this is the value by default). If the parameter yaw is constant, the same yaw angle is maintained during the trajectory.
Type: Goal-based.
| Parameters | Format | Example |
|---|---|---|
| path: | sequence of 3D points (x,y,z) in meters | path: [ [1.1,1.1,0.7], [2.2,2.2,0.7], [3.3,3.3,2.5] ] |
| yaw_mode: | allowed values {constant, path_facing} | yaw_mode: constant |
| speed: | number (m/s) | speed: 0.5 |
Navigation tasks
GENERATE_PATH
Description: The robot generates a path free of obstacles between the current position of the robot and the given destination. The result of this behavior is stored in the belief memory in the predicates: object(X, path) and path(X, Y), where Y is a list of 3D points. For example: object(32, path), path(32, ((1.1,1.1,0.7), (2.2,2.2,0.7), (3.3,3.3,0.7))). Note that the height value of each point (z value) is a constant value because the path is planned on a horizontal surface.
Type: Goal-based.
| Parameters | Format | Example |
|---|---|---|
| destination | Tuple of 3 numbers x, y, z (meters) | destination: [3.3,3.3,3.3] |
CLEAR_OCCUPANCY_GRID
Description: This behavior clears the map represented as occupancy grid.
Type: Goal-based.
SAVE_OCCUPANCY_GRID
Description: This behavior saves the map represented as an occupancy grid. Two new files are created: $AEROSTACK_PROJECT/maps/my_map.yaml (with parameters defining the map) and $AEROSTACK_PROJECT/maps/my_map.pgm (map image).
Type: Goal-based.
| Parameters | Format | Example |
|---|---|---|
| map_name | string | map_name: "$AEROSTACK_PROJECT/maps/my_map" |
Tasks for attention control
PAY_ATTENTION_TO_QR_CODES
Description: The robot pays attention to QR codes. Each recognized code is stored as a belief with the following format: object(X, qr_code), code(X, Y), visible(X) where X is the object identifier (generated automatically) and Y is the recognized QR code (string). The predicate visible(X) is deleted when the QR code is not observed. We assume that the objects with QR codes are static (they don't move in the environment). We assume that there are not different objects with the same QR code.
Type: Recurrent.
PAY_ATTENTION_TO_ROBOT_MESSAGES
Description: The robot pays attention to messages sent by other robots. When the name of the message's receiver is the name of the own robot (or when there are messages from another robot broadcasted to all robots such as its position), the message is added to the belief memory of the own robot.
Type: Recurrent
Tasks for communication
INFORM_ROBOTS
Description: The robot sends a text message to another robot. The other robot must have activated the task PAY_ATTENTION_TO_ROBOT_MESSAGES. The text message is an alphanumeric string without spaces. If a message is sent by drone110 to the receiver "drone120" and message "found_item_01", the belief memory of drone120 will include the following predicates in its belief memory:
- object(7, drone)
- name(7, drone110)
- object(9, message)
- sender(9, 7)
- content(9, found_item_01)
Type: Goal-based.
| Parameters | Format | Example |
|---|---|---|
| receiver | String with the name of the receiver | receiver: "drone120" |
| message | String with the text of the message | message: "found_item_01" |
INFORM_POSITION_TO_ROBOTS
Description: The robot broadcasts its position to the rest of robots. The other robots must have activated the task PAY_ATTENTION_TO_ROBOT_MESSAGES to receive this information. If the position of drone110 is informed to other robots, another robot (like drone120) will include the following predicates in its belief memory:
- object(7, drone)
- name(7, drone110)
- position (7, (0.7, 3.2, 5.4))
Type: Recurrent.