Robotic-Decision-Making-Lab / angler

ROS 2 framework for lightweight autonomous underwater vehicle manipulator systems
https://robotic-decision-making-lab.github.io/angler/
MIT License
15 stars 3 forks source link

[FEATURE]: Implement system behavior tree #19

Closed evan-palmer closed 1 year ago

evan-palmer commented 1 year ago

Feature Type

Adding new functionality to Angler

Problem Description

Many of the existing features are decoupled and there is no framework in place to enable a full execution pipeline for the system.

Feature Description

Implement a behavior tree responsible for managing full system-level behavior. My current idea for the behavior tree is as follows:

  1. Begin with a "dive" behavior which should be responsible for driving the system to the desired pre-mission execution state
  2. Once the dive has completed, perform high-level planning using a waypoint planner like the pre-planned trajectory planner or something like A*
  3. Once the initialization behaviors are complete, begin the task execution sub-tree
  4. The task-execution sub-tree should begin by querying the trajectory planner to see if a new trajectory should be planned
  5. Once a trajectory has been obtained, the trajectory is fed to the whole-body controller for trajectory execution
  6. The sub-tree task will loop until reaching the end of the mission
  7. Once the end of the mission has been reached, the post-mission behavior will be executed which should be responsible for performing station-keeping

Alternative Solutions

Another alternative could be to use a state machine; however, these are pretty cumbersome and hard to maintain. I have had much more success with behavior trees

Additional Context

No response