10. behavior tree
ROS2에 대해 알아보자
10. behavior tree
Behavior Tree
- 트리 구조의 알고리즘으로, 에이전트(agent, ex. 로봇)의 행동을 모델링하고 제어하는 데 사용되며,
- Behavior Tree는 에이전트의 상태를 기반으로 다양한 행동(behavior)을 선택하고 실행하는 과정을 자동화할 수 있음
Behavior Tree 구성 요소
-
기본적으로 자신의 상태를 리턴(success/fail)하는 세가지 종류의 노드로 구성
-
컨트롤 노드(Control Node)
: 트리의 구조를 정의하며, 하위 노드를 제어 ( Root Node는 컨트롤 노드라 생각하면 될듯함)- Sequence - 하위노드를 순차적으로 실행하나 성공하는 경우에만 다음 노드를 실행
- Selector - 하위노드 결과 유무에 상관없이 전부 실행
- RandomSelector - 하위노드 중 랜덤으로 하나만 실행
- Parallel - 병렬 실행
-
리프 노드(Leaf Node)
: 실제 행동을 정의하며, 에이전트의 상태를 기반으로 특정 작업을 수행- Action - 로봇(agent)의 액션을 정의. (ex. Motion/TTS/Display/LED… )
- Condition - 액션 혹은 서비스에 대한 성공 유무 확인
-
데코레이터 노드(Decorator Node)
: 하위 노드의 동작을 수정하거나 조건을 추가- UntilSuccess/AlwaysSuccess…
Behavior Tree의 작동 과정
-
루트 노드에서 시작하여, 하위 노드로 내려가며 행동을 결정
-
각 노드는 자신의 상태를 평가하여, 성공(success), 실패(fail), 실행 중(running) 중 하나의 상태로 결정
-
컨트롤 노드는 하위 노드의 상태를 기반으로 자신의 상태를 결정.
ex. 시퀀스(Sequence) 노드는 하위 노드가 모두 성공할 때까지 실행하며, 셀렉터(Selector) 노드는 하위 노드 중 하나가 성공할 때까지 실행
-
데코레이터 노드는 하위 노드의 상태를 수정하거나 조건을 추가하여, 에이전트의 행동을 제어함
-
리프 노드는 실제 행동을 정의하며, 에이전트의 상태를 기반으로 특정 작업을 수행함
This post is licensed under
CC BY 4.0
by the author.