Skip to content

Commit

Permalink
DRAFT: Add comparison to behavior trees
Browse files Browse the repository at this point in the history
  • Loading branch information
orzechow committed Feb 11, 2025
1 parent 6d30509 commit 91fec90
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,41 @@
</details>


<details>
<summary>🤨 How does it compare to Behavior Trees?</summary>

Behavior Trees (BTs) are great for a variety of applications and strive with a vivid community!
Kudos to [Petter Ögren's](https://www.kth.se/profile/petter/) crew, [Michele Colledanchise](https://miccol.github.io/behaviortrees/) and [Davide Faconti](https://github.com/facontidavide) 🖖

But, Arbitration Graphs bring great value, especially for safety critical applications like self-driving cars and mobile robots in general – by strictly coupling preconditions to behaviors and tightly integrating behavior verification.
A bit more in detail:

- **Return Type / Interfaces**
BT nodes return execution status, while behavior components in arbitration graphs return commands.
While the former adds more flexibility to each node's actuator interfaces,
the latter focuses on a control theory motivated interface ${f(\boldsymbol{x}) \to \boldsymbol{u}}$
allowing the command to be verified by each arbitrator before executing it in a down-stream module.
- **Preconditions**
In BTs, preconditions are implemented by condition nodes distributed throughout the tree.
In contrast, arbitration graphs require behavior components to define their own preconditions.
This tight coupling makes robustness and safety less dependent on the node arrangement.
- **Safety**
BTs rely on each node to decide on its success or failure,
which can lead to safety and reliability issues if not carefully managed.
Arbitration graphs, as enhanced in this paper, integrate safety into the selection mechanism,
using node-independent verifiers.
This functional decomposition reduces the burden on behavior engineers and
allows an easy integration of unsafe, e.g.\ learning-based, behavior components.

| | Behavior Trees | Arbitration Graphs |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Interfaces** | Nodes return execution status. <br>⏵ more flexibility w.r.t. a node's actuator interfaces | Behavior components & arbitrators return commands. <br>⏵ control theory motivated interface ${f(\boldsymbol{x}) \to \boldsymbol{u}}$ <br>⏵ command can be verified by each arbitrator |
| **Preconditions** | Implemented by condition nodes distributed throughout the tree. <br>⏵ easy to reuse preconditions for multiple behaviors | Require behavior components to define their own preconditions. <br>⏵ tight coupling of preconditions to behaviors <br>⏵ robustness and safety less dependent on node arrangement |
| **Safety** | Each node decides on its success or failure. <br>⏵ can lead to safety and reliability issues, if not carefully managed. | Integrate safety into the selection mechanism, using node-independent verifiers. <br>⏵ reduces the burden on behavior engineers <br>⏵ allows an easy integration of unsafe behavior components (ML, probabilistic, …) |

</details>


## Demo

We provide a demo of this library using Pac-Man as an example application.
Expand Down

0 comments on commit 91fec90

Please sign in to comment.