행동 트리의 구조와 동작 원리 (Structure and Operating Principles of Behavior Trees)

행동 트리의 구조와 동작 원리 (Structure and Operating Principles of Behavior Trees)

1. 개요

행동 트리(Behavior Tree, BT)는 방향 루트 트리(directed rooted tree) 구조에 기반한 행동 제어 아키텍처로서, 자율 시스템의 의사 결정과 행동 실행을 체계적으로 구조화한다. 행동 트리의 핵심 동작 원리는 Tick 신호의 주기적 전파, 노드별 반환 상태의 상향 보고, 그리고 제어 흐름 노드에 의한 자식 노드의 선택적 실행으로 구성된다. 본 장에서는 행동 트리의 구조적 구성 요소와 동작 원리를 체계적으로 기술한다.

2. 행동 트리의 트리 구조

행동 트리는 유한 방향 루트 트리(finite directed rooted tree) \mathcal{T} = (N, E, r, \tau)로 형식화된다. 여기서 N은 노드의 유한 집합, E \subseteq N \times N은 방향 간선의 집합, r \in N은 루트 노드, \tau: N \rightarrow \mathcal{C}는 각 노드의 타입을 결정하는 타입 함수이다.

트리 구조에서 각 노드는 최대 하나의 부모(parent) 노드를 가지며, 루트 노드는 부모가 없다. 자식(children)을 가지는 노드를 내부 노드(internal node)라 하고, 자식이 없는 노드를 리프 노드(leaf node)라 한다. 내부 노드는 제어 흐름 노드(control flow node) 또는 데코레이터 노드(decorator node)에 해당하며, 리프 노드는 행동 노드(action node) 또는 조건 노드(condition node)에 해당한다.

3. 노드 분류 체계

행동 트리의 노드는 기능에 따라 다음과 같이 분류된다:

3.1 제어 흐름 노드

제어 흐름 노드는 자식 노드의 실행 순서와 조건을 결정하는 내부 노드이다. 주요 제어 흐름 노드 타입은 다음과 같다:

노드 타입성공 조건실패 조건
Sequence모든 자식 Success하나라도 Failure
Fallback (Selector)하나라도 Success모든 자식 Failure
Parallel성공 임계값 도달실패 임계값 도달

3.2 실행 노드 (리프 노드)

  • 행동 노드(Action Node): 로봇의 실제 행동(이동, 파지, 통신 등)을 실행하며, 실행 결과에 따라 Success, Failure, Running 중 하나를 반환한다.
  • 조건 노드(Condition Node): 환경 상태나 내부 상태를 검사하며, 조건 충족 시 Success, 미충족 시 Failure를 반환한다. 조건 노드는 원자적(atomic)으로 평가되어 Running 상태를 반환하지 않는다.

3.3 데코레이터 노드

데코레이터 노드(Decorator Node)는 단일 자식을 가지며, 자식의 반환 상태를 변환하거나 실행 횟수를 제어한다. 주요 데코레이터 타입은 다음과 같다:

  • Inverter: 자식의 Success를 Failure로, Failure를 Success로 반전한다.
  • Repeat: 자식을 지정된 횟수만큼 반복 실행한다.
  • Retry: 자식이 Failure를 반환하면 지정된 횟수까지 재시도한다.
  • ForceSuccess: 자식의 Failure를 Success로 강제 변환한다.
  • ForceFailure: 자식의 Success를 Failure로 강제 변환한다.

4. 반환 상태

행동 트리의 모든 노드는 Tick 신호에 응답하여 다음 세 가지 반환 상태(return status) 중 하나를 부모에게 반환한다:

  • Success: 노드의 실행이 성공적으로 완료되었음을 의미한다.
  • Failure: 노드의 실행이 실패하였음을 의미한다.
  • Running: 노드의 실행이 아직 진행 중이며, 완료되지 않았음을 의미한다.

반환 상태의 상향 전파(upward propagation)를 통해 리프 노드의 실행 결과가 제어 흐름 노드를 거쳐 루트까지 전달되며, 루트 노드의 반환 상태가 전체 행동 트리의 실행 상태를 나타낸다.

5. Tick 기반 실행 모델

행동 트리의 실행은 외부 제어 루프에 의해 루트 노드에 주기적으로 전송되는 Tick 신호에 의해 구동된다. Tick 신호는 루트로부터 깊이 우선 순회(depth-first traversal)를 통해 트리 전체에 전파되며, 각 노드는 Tick을 수신하면 자신의 로직을 실행하고 반환 상태를 부모에게 보고한다.

Tick의 주기(tick rate)는 시스템의 반응성 요구와 계산 자원 사이의 균형에 따라 설정된다. 일반적으로 10–100 Hz 범위의 Tick 주기가 사용되며, 높은 Tick 주기는 빠른 반응을 제공하나 계산 부하를 증가시킨다.

6. 동작 원리의 예시

간단한 네비게이션 임무를 예로 들면, 행동 트리는 다음과 같이 동작한다:

  1. 외부 루프가 루트 노드에 Tick을 전송한다.
  2. 루트의 Fallback 노드가 첫 번째 자식(Sequence: 정상 네비게이션)에 Tick을 전달한다.
  3. Sequence의 첫 번째 자식(조건: 목표 도달 여부)이 Failure를 반환한다.
  4. Sequence가 Failure를 Fallback에 반환한다(Sequence는 하나라도 실패하면 Failure).
  5. Fallback이 두 번째 자식(Sequence: 경로 계획 → 경로 추종)에 Tick을 전달한다.
  6. 경로 추종 행동 노드가 Running을 반환한다.
  7. Running 상태가 루트까지 전파되어, 다음 Tick에서 이 노드의 실행이 계속된다.

참고 문헌

  • Colledanchise, M., & Ögren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
  • Iovino, M., Scukins, E., Styrud, J., Ögren, P., & Smith, C. (2022). A Survey of Behavior Trees in Robotics and AI. Robotics and Autonomous Systems, 154, 104096.

버전: 2026-04-01