I want to ask people who have designed the control/behaviour system of the mobile robot? As far as I know, architecture might be implemented as a finite-state machine or a behaviour tree. What are the key advantages of using a tree as opposed to a finite-state machine? Does it make sense to use a neural network in conjunction with a behaviour tree (interested in the real implementation experience or example)? If so, what opportunities can this provide?
The similarity between finite state machines and behavior trees is, that both concepts are model-free control strategies. The programmer writes down a script, e.g. “movetoball(), opengripper(), graspball()” and if the script fails to reach the goal, the programmer is in charge to improve the written statements. The reason why model free policies are used in the reality is because they don't need any form of CPU resources, but can be executed very fast. At the same time, the programmer gets a working robot who is moving it's servo motors without implementing complicated reinforcement learning- or motion planning algorithms.
Within the AI gaming domain, behavior trees are perceived as more powerful than finite state machines because they are containing a hierarchical component to structure nested tasks. They are often visualized as a mindmap and lots of documentation is available how to create a behavior tree for ingame AI characters in a certain game engine (without naming one of the larger one which are starting with the letter U).