1292.49 ReactiveFallback의 재평가 메커니즘
1. 재평가 메커니즘의 정의
ReactiveFallback의 재평가 메커니즘(re-evaluation mechanism)이란, 매 tick마다 이전에 Failure를 반환한 자식 노드를 다시 평가하여 해당 자식이 여전히 실패 상태인지를 검증하는 과정을 의미한다. 이 메커니즘은 ReactiveFallback이 항상 첫 번째 자식(인덱스 0)부터 실행을 시작하는 것에 의해 구현되며, 상위 우선순위 대안의 가용성이 복원되었을 때 즉각적으로 해당 대안으로 전환할 수 있도록 한다 (Colledanchise & Ögren, Behavior Trees in Robotics and AI: An Introduction, 2018).
ReactiveSequence의 재평가 메커니즘이 “선행 조건의 지속적 유효성 검증“을 목적으로 하는 것과 쌍대적으로, ReactiveFallback의 재평가 메커니즘은 “상위 우선순위 대안의 지속적 가용성 탐색“을 목적으로 한다.
2. 재평가의 동작 과정
ReactiveFallback의 재평가 과정을 단계별로 기술하면 다음과 같다.
단계 1: tick을 수신하면, 이전 tick에서의 자식 상태와 무관하게 항상 첫 번째 자식 c_1에 tick을 전달한다.
단계 2: c_1이 Failure를 반환하면 c_2에 tick을 전달하고, Success 또는 Running을 반환하면 후속 자식 중 Running 상태인 노드에 halt를 요청하고 해당 상태를 반환한다.
단계 3: 이 과정을 자식이 Success 또는 Running을 반환하거나 모든 자식이 Failure를 반환할 때까지 반복한다.
3. 재평가에 의한 대안 전환 시나리오
다음의 ReactiveFallback을 통해 재평가 메커니즘의 동작을 추적한다.
ReactiveFallback [RF1]
├─ Condition [C1: 고정밀 센서 가용]
└─ Action [A1: 저정밀 항법 수행]
3.1 시나리오 1: 고정밀 센서 불가 상태에서의 지속적 재평가
| Tick | C1 | A1 | RF1 | 비고 |
|---|---|---|---|---|
| t_1 | Failure | Running | Running | 고정밀 센서 불가, 저정밀 항법 사용 |
| t_2 | Failure | Running | Running | 매 tick마다 C1 재평가 |
| t_3 | Failure | Running | Running | 아직 고정밀 센서 불가 |
매 tick마다 C1이 재평가되나, 고정밀 센서가 가용하지 않으므로 A1이 계속 실행된다.
3.2 시나리오 2: 고정밀 센서 복원에 의한 즉각적 전환
| Tick | C1 | A1 | RF1 | 비고 |
|---|---|---|---|---|
| t_4 | Success | halt 요청 | Success | 고정밀 센서 복원, A1 즉시 중단 |
tick t_4에서 고정밀 센서가 가용해져 C1이 Success를 반환한다. RF1은 즉시 Success를 반환하고, Running 상태의 A1에 halt를 요청한다. 상위 우선순위 대안이 가용해진 즉시 전환이 이루어진다 (Faconti, BehaviorTree.CPP Documentation, 2024).
3.3 시나리오 3: 고정밀 센서 재소실에 의한 원복
| Tick | C1 | A1 | RF1 | 비고 |
|---|---|---|---|---|
| t_5 | Failure | Running (onStart) | Running | 다시 저정밀 항법으로 복귀 |
고정밀 센서가 다시 불가해지면, C1이 Failure를 반환하고 A1이 새로 활성화된다.
4. 복수 대안의 재평가
복수의 대안이 존재하는 경우, 재평가는 왼쪽에서 오른쪽 순서로 모든 선행 대안을 재검토한다.
ReactiveFallback [RF1]
├─ Sequence [S1: 대안 1 (최우선)]
│ ├─ Condition [C1]
│ └─ Action [A1]
├─ Sequence [S2: 대안 2 (차선)]
│ ├─ Condition [C2]
│ └─ Action [A2]
└─ Action [A3: 대안 3 (최후)]
A3가 Running 상태인 경우, 매 tick마다 S1과 S2가 재평가된다. C1이 Success를 반환하면 즉시 S1으로 전환되고, C1이 Failure이나 C2가 Success를 반환하면 S2로 전환된다. 이 재평가에 의해 가용한 대안 중 항상 가장 높은 우선순위의 대안이 선택된다 (Colledanchise & Ögren, 2018).
5. 재평가 비용과 최적화
ReactiveFallback의 재평가 비용은 선행 자식의 수와 각 자식의 실행 비용에 비례한다. 비용을 최적화하기 위한 설계 지침은 다음과 같다.
조건 노드 기반 가드 패턴: 각 대안의 선두에 조건 노드를 배치하면, 해당 대안의 가용성을 즉시 판단할 수 있다. 조건 노드는 즉시 반환되므로 재평가 비용이 최소화된다.
조기 종료 활용: ReactiveFallback에서 상위 대안이 Success 또는 Running을 반환하면 즉시 종료되므로, 상위 대안이 빈번하게 가용한 경우 하위 대안의 재평가 비용은 발생하지 않는다.
6. ReactiveSequence 재평가 메커니즘과의 비교
| 속성 | ReactiveSequence 재평가 | ReactiveFallback 재평가 |
|---|---|---|
| 재평가 대상 | 이전에 Success를 반환한 선행 자식 | 이전에 Failure를 반환한 선행 자식 |
| 재평가 목적 | 선행 조건의 지속적 유효성 검증 | 상위 우선순위 대안의 가용성 탐색 |
| 재평가 실패 시 동작 | 후행 자식 halt, Failure 반환 | 다음 자식으로 진행 |
| 재평가 성공 시 동작 | 다음 자식으로 진행 | 후행 자식 halt, Success/Running 반환 |
| 의미론 | “조건이 유지되는 한 행동 계속” | “최선의 대안을 지속적으로 선택” |
두 재평가 메커니즘은 쌍대적 구조를 가지며, Success와 Failure의 역할을 교환하면 하나로부터 다른 하나를 도출할 수 있다.
참고 문헌
- Colledanchise, M. & Ögren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
- Faconti, D. (2024). BehaviorTree.CPP Documentation. https://www.behaviortree.dev/