  Behavior Trees (BTs) have become a popular framework for designing
controllers of autonomous agents in the computer game and in the robotics
industry. One of the key advantages of BTs lies in their modularity, where
independent modules can be composed to create more complex ones. In the
classical formulation of BTs, modules can be composed using one of the three
operators: Sequence, Fallback, and Parallel. The Parallel operator is rarely
used despite its strong potential against other control architectures as Finite
State Machines. This is due to the fact that concurrent actions may lead to
unexpected problems similar to the ones experienced in concurrent programming.
In this paper, we introduce Concurrent BTs (CBTs) as a generalization of BTs in
which we introduce the notions of progress and resource usage. We show how CBTs
allow safe concurrent executions of actions and we analyze the approach from a
mathematical standpoint. To illustrate the use of CBTs, we provide a set of use
cases in robotics scenarios.
