# Behavior Trees Demo

### Concepts

[https://docs.nav2.org/concepts/index.html#behavior-trees](https://docs.nav2.org/concepts/index.html#behavior-trees)

[https://docs.nav2.org/behavior\_trees/overview/nav2\_specific\_nodes.html](https://docs.nav2.org/behavior_trees/overview/nav2_specific_nodes.html)

[https://docs.nav2.org/behavior\_trees/overview/detailed\_behavior\_tree\_walkthrough.html](https://docs.nav2.org/behavior_trees/overview/detailed_behavior_tree_walkthrough.html)

### Démo avec le Turtlebot3

[https://github.com/sea-bass/turtlebot3\_behavior\_demos](https://github.com/sea-bass/turtlebot3_behavior_demos?tab=readme-ov-file#local-setup)

#### Usage sans docker

- Installation  
    [https://github.com/sea-bass/turtlebot3\_behavior\_demos?tab=readme-ov-file#local-setup](https://github.com/sea-bass/turtlebot3_behavior_demos?tab=readme-ov-file#local-setup)

- Vérifier que Gazebo fonctionne en lançant le noeud de base :  
    `ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py`
- Éteindre le noeud

On lance l'environnement de simulation lié à la démo de Behavior Tree :

- `ros2 launch tb3_worlds tb3_demo_world.launch.py`  
    Le robot navigue en des positions connues avec pour but de trouver un cube d'une couleur spécifiée (rouge, vert ou bleu). La détection d'objets est faite par un simple seuillage en couleurs HSV avec des valeurs calibrées.

#### Démos de Behavior Trees en Python

On regarde le fichier `turtlebot3_behavior_demos/docker-compose.yaml` pour déterminer les commandes Bash correspondant aux commande docker indiquées dans le dépôt.

Dans un second terminal, on lance une des démos suivantes :

- `ros2 launch tb3_autonomy tb3_demo_behavior_py.launch.py tree_type:=queue enable_vision:=true target_color:=green`  
    Démo avec `py_trees`

Les fichiers source de la démo sont :

- tb3\_demo\_behavior\_py.launch.py
- autonomy\_node.py 
    - navigation.py 
        - test\_move\_base.py
    - vision.py 
        - test\_vision.py