as2_behavior
Aerostack2 Behavior Class
README
AS2_behavior library
Aerostack2 uses Behaviors to handle mission execution
Each behavior is separated in a behavior Server and a behavior client. They are similar to rclcpp actions but with some differences.
- Each behavior server only attends to a single goal (client) at each moment. 
- Feedback is visible for all nodes 
- They extend start, stop, and feedback with modify, pause, resume, and behavior state data. 
We use ros2 services for:
- start 
- modify (the same syntax than start) 
- pause (std_srvs::srv::Empty) 
- resume (std_srvs::srv::Empty) 
- stop (std_srvs::srv::Empty) 
We use ros2 topics for:
- Feedback 
- State 
We take advantage of ros2 action message definitions:
- Goal: will be used in start and modify services 
- Feedback: Will be used in feedback 
- Response: (Maybe in state, or in inmediate behaviors) 
We difference between Inmediate, Recurrent and Regular (or goal oriented) behaviors:
- Inmediate: act like a service, they dont give Fb and cannot be paused or modified. 
- Recurrent: they give feedback until they are stopped or paused. 
- Goal Oriented: they keep runing until a termination condition is met.