-
Notifications
You must be signed in to change notification settings - Fork 2
Catalog of behavior tasks
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).
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.
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.
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 |
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.
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 |
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 |
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 (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.
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 |
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] |
Description: This behavior clears the map represented as occupancy grid.
Type: Goal-based.
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" |
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.
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
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" |
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.
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