1295.36 ReactiveFallback 노드의 개념과 정의

1. ReactiveFallback 노드의 정의

ReactiveFallback 노드는 행동 트리의 제어 노드(control node) 중 하나로, 일반 Fallback(Selector) 노드의 반응형(reactive) 변형이다. 일반 Fallback 노드가 이전에 FAILURE를 반환한 자식을 건너뛰고 다음 자식부터 Tick을 재개하는 반면, ReactiveFallback 노드는 매 Tick마다 항상 첫 번째 자식부터 순차적으로 재평가를 시작한다. 이 재평가 원칙에 의해 상위 우선순위 자식의 상태 변화가 즉각적으로 반영되며, 이전에 실패했던 상위 자식이 성공으로 전환되면 현재 실행 중인 하위 자식이 즉시 Halt된다.

ReactiveFallback 노드의 형식적 정의는 다음과 같다. 자식 노드 C_1, C_2, \ldots, C_n에 대해, 매 Tick에서 C_1부터 C_n까지 순차적으로 Tick을 전파하되, 어떤 자식 C_iSUCCESS 또는 RUNNING을 반환하면 해당 시점에서 Tick 전파를 중단하고, C_i 이후의 모든 RUNNING 상태 자식에 Halt를 전파한다.

2. 일반 Fallback 노드와의 핵심 차이

일반 Fallback 노드에서는 자식 C_iRUNNING을 반환하면, 다음 Tick에서 C_i부터 Tick을 재개한다. 이전 자식 C_1, \ldots, C_{i-1}은 이미 FAILURE를 반환하였으므로 재평가하지 않는다. 이 동작은 효율적이지만, 이전에 실패한 자식의 조건이 변경되었는지를 알 수 없다는 한계가 있다.

ReactiveFallback 노드에서는 자식 C_iRUNNING을 반환하더라도, 다음 Tick에서 C_1부터 다시 Tick을 시작한다. 이를 통해 C_1, \ldots, C_{i-1} 중 어떤 자식이 SUCCESS를 반환하면, 현재 RUNNING 상태인 C_i에 Halt가 전파되고 해당 자식의 실행이 중단된다.

특성일반 FallbackReactiveFallback
Tick 시작 위치이전 RUNNING 자식부터항상 첫 번째 자식부터
이전 자식 재평가하지 않음매 Tick마다 수행
상위 우선순위 변화 반영불가즉각 반영
하위 자식 Halt 발생Fallback 자체 Halt 시만상위 자식 성공 시 발생

3. ReactiveFallback의 의미론적 해석

ReactiveFallback 노드는 “가장 높은 우선순위의 성공 가능한 행동을 지속적으로 선택하라“라는 의미론을 구현한다. 자식 노드를 C_1(최고 우선순위)부터 C_n(최저 우선순위)까지 우선순위 순으로 배치하면, 매 Tick에서 가장 높은 우선순위의 비실패(non-failure) 자식이 선택된다.

이 동작은 고전적 인공지능 연구에서의 서브섬션 아키텍처(Subsumption Architecture, Brooks, 1986)의 우선순위 기반 행동 억제(priority-based behavior suppression) 개념과 유사하다. 상위 계층의 행동이 활성화되면 하위 계층의 행동을 억제하는 구조가, ReactiveFallback에서는 상위 자식이 SUCCESS를 반환하면 하위 자식이 Halt되는 메커니즘으로 구현된다.

4. ReactiveFallback의 반환값 결정 규칙

매 Tick에서 ReactiveFallback 노드의 반환값은 다음 규칙에 의해 결정된다.

  1. C_1부터 C_n까지 순차적으로 Tick한다.
  2. 어떤 자식 C_iSUCCESS를 반환하면:
  • C_i 이후의 RUNNING 상태 자식 모두에 Halt를 전파한다.
  • ReactiveFallback은 SUCCESS를 반환한다.
  1. 어떤 자식 C_iRUNNING을 반환하면:
  • C_i 이후의 RUNNING 상태 자식 모두에 Halt를 전파한다.
  • ReactiveFallback은 RUNNING을 반환한다.
  1. 모든 자식이 FAILURE를 반환하면:
  • ReactiveFallback은 FAILURE를 반환한다.

핵심 규칙은 2번과 3번에서의 Halt 전파이다. SUCCESS 또는 RUNNING을 반환한 자식보다 하위 우선순위의 자식이 RUNNING 상태인 경우, 해당 자식에 Halt가 전파되어 실행이 중단된다. 이는 상위 우선순위 행동이 활성화되면 하위 우선순위 행동이 즉시 억제되는 반응형 동작을 보장한다.

5. ReactiveFallback의 전형적 구조

ReactiveFallback은 일반적으로 조건 노드(condition node)와 액션 노드(action node)를 교대로 배치하는 구조로 사용된다. 각 우선순위 수준은 조건-행동 쌍으로 구성되며, 조건이 충족되는 가장 높은 우선순위의 행동이 실행된다.

ReactiveFallback
├── Sequence [우선순위 1: 최고]
│   ├── Condition_1    →  조건 1 확인
│   └── Action_1       →  조건 1 충족 시 행동 1 실행
├── Sequence [우선순위 2]
│   ├── Condition_2    →  조건 2 확인
│   └── Action_2       →  조건 2 충족 시 행동 2 실행
└── DefaultAction [우선순위 3: 최저]
    └── Action_3       →  기본 행동 실행

이 구조에서 매 Tick마다 Condition_1이 먼저 평가된다. Condition_1SUCCESS이면 Action_1이 실행되고, Action_1RUNNING 또는 SUCCESS를 반환하면 Sequence [우선순위 1]이 비실패 상태가 되어 하위 우선순위 자식은 Tick되지 않는다. Condition_1FAILURE이면 Sequence [우선순위 1]FAILURE를 반환하고, 다음으로 Condition_2가 평가된다. 모든 조건이 실패하면 DefaultAction이 실행된다.

6. 로봇공학에서의 적용 의의

ReactiveFallback 노드는 로봇의 환경 변화에 대한 즉각적 반응을 행동 트리 구조 수준에서 보장하는 핵심 메커니즘이다. 로봇의 운용 환경은 동적으로 변화하며, 상위 우선순위 조건(비상 상황, 안전 위험, 장애물 출현 등)이 새롭게 성립될 수 있다. 일반 Fallback 노드에서는 한번 실패로 판정된 상위 조건이 이후 성립되더라도 재평가되지 않으므로, 환경 변화에 대한 반응이 지연된다. ReactiveFallback은 매 Tick마다 상위 조건을 재평가하여 이러한 지연을 제거한다.

예를 들어, 로봇이 정상 경로를 추종하는 중에 장애물이 출현하면, 장애물 회피 조건이 성립되어 즉시 회피 행동으로 전환되어야 한다. ReactiveFallback은 이러한 우선순위 기반의 즉각적 행동 전환을 자연스럽게 표현한다.

7. 용어 정리

ReactiveFallback은 행동 트리 라이브러리에 따라 다양한 이름으로 지칭된다.

라이브러리명칭
BehaviorTree.CPPReactiveFallback
py_treesSelector (with memory=False)
학술 문헌Reactive Selector, Priority Selector

명칭은 상이하나, 매 Tick마다 첫 번째 자식부터 재평가를 시작한다는 핵심 동작은 동일하다. 본 서에서는 BehaviorTree.CPP의 명칭인 ReactiveFallback을 표준으로 사용한다.