1294.48 ReactiveFallback의 우선순위 기반 조건 재검사
1. 우선순위 기반 조건 재검사의 개념
ReactiveFallback의 우선순위 기반 조건 재검사(priority-based condition re-checking)란, 매 Tick마다 앞쪽에 배치된 조건 노드들이 재평가되어, 더 높은 우선순위의 대안이 가용해졌는지를 지속적으로 확인하는 기능이다. ReactiveSequence의 조건 재검사가 “안전 조건의 지속적 유효성“을 감시하는 것과 대칭적으로, ReactiveFallback의 조건 재검사는 “우선 대안의 가용성“을 감시한다(Colledanchise & Ogren, 2018).
2. 우선순위 재검사의 동작 구조
2.1 우선순위 감시 패턴
ReactiveFallback에서 조건 노드는 “우선순위 감시자(priority monitor)” 역할을, 뒤쪽 액션 노드는 “차선 대안(fallback alternative)” 역할을 수행한다.
<ReactiveFallback>
<!-- 우선순위 감시자: 매 Tick 재검사 -->
<Condition ID="IsGoalAlreadyAchieved"/>
<Condition ID="IsFastPathAvailable"/>
<!-- 차선 대안: 비동기 작업 수행 -->
<Action ID="UseSlowPath"/>
</ReactiveFallback>
매 Tick에서의 동작:
IsGoalAlreadyAchieved평가 → SUCCESS이면 모든 대안 불필요IsFastPathAvailable평가 → SUCCESS이면 빠른 경로 가용UseSlowPath평가 → RUNNING 유지 또는 완료
감시자 중 하나라도 SUCCESS를 반환하면 차선 대안이 Halt된다.
3. 우선순위 변화 감지의 시나리오
3.1 빠른 경로 가용성 감지
Tick 1: FastPath=불가 → IsFastPathAvailable → F, UseSlowPath → R
Tick 2: FastPath=불가 → IsFastPathAvailable → F, UseSlowPath → R
Tick 3: FastPath=가용 → IsFastPathAvailable → S → UseSlowPath Halt
ReactiveFallback → SUCCESS
빠른 경로가 가용해지는 즉시(해당 Tick에서) 느린 경로가 중단된다.
3.2 목표 달성 감지
<ReactiveFallback>
<Condition ID="IsObjectInHand"/>
<Action ID="GraspObject"/>
</ReactiveFallback>
Tick 1: 물체 미파지 → IsObjectInHand → F, GraspObject → R
Tick 2: 물체 미파지 → IsObjectInHand → F, GraspObject → R
Tick 3: 물체 파지됨 → IsObjectInHand → S → GraspObject Halt
ReactiveFallback → SUCCESS
외부 요인에 의해(예: 다른 노드의 작업, 센서 오류 정정 등) 목표가 달성되면 즉시 파지 동작이 중단된다.
4. 다중 조건의 우선순위 순차 재검사
ReactiveFallback에 다수의 조건이 배치된 경우, 왼쪽에서 오른쪽으로 순차적으로 재검사된다. 앞쪽 조건이 SUCCESS를 반환하면 뒤쪽 조건은 평가되지 않는다(조기 종료).
<ReactiveFallback>
<Condition ID="IsTaskComplete"/> <!-- 1순위 검사 -->
<Condition ID="IsQuickFixAvailable"/> <!-- 2순위 검사 -->
<Condition ID="IsPartialSolutionOK"/> <!-- 3순위 검사 -->
<Action ID="PerformFullSolution"/>
</ReactiveFallback>
Tick N:
IsTaskComplete → FAILURE
IsQuickFixAvailable → FAILURE
IsPartialSolutionOK → FAILURE
PerformFullSolution → RUNNING
→ RUNNING
Tick N+1:
IsTaskComplete → FAILURE
IsQuickFixAvailable → SUCCESS ← 2순위에서 성공
IsPartialSolutionOK → (미평가 — 조기 종료)
PerformFullSolution → Halt
→ SUCCESS
이 순차적 검사에서 조건의 배치 순서는 우선순위를 반영해야 한다. 가장 바람직한 상태의 확인을 첫 번째에, 덜 바람직한 대안의 확인을 뒤에 배치한다.
5. ReactiveSequence 조건 재검사와의 대칭성
| 특성 | ReactiveSequence | ReactiveFallback |
|---|---|---|
| 감시 대상 | 안전 조건의 유효성 | 대안의 가용성 |
| 감시 방향 | “조건이 여전히 참인가?” | “더 나은 대안이 있는가?” |
| 트리거 상태 | FAILURE (조건 위반) | SUCCESS (대안 가용) |
| 트리거 결과 | RUNNING 자식 Halt, FAILURE 반환 | RUNNING 자식 Halt, SUCCESS 반환 |
| 전형적 앞쪽 노드 | 안전 조건 | 목표 달성 조건 / 우선 대안 조건 |
ReactiveSequence는 “위험 감지 시 작업 중단“을, ReactiveFallback은 “더 나은 방법 발견 시 현재 방법 중단“을 구현한다. 두 노드는 동일한 메커니즘(매 Tick 재평가 + RUNNING 자식 Halt)을 SUCCESS/FAILURE가 교환된 형태로 적용한다.
6. 조건 재검사의 빈도와 Tick 주기
조건 재검사의 빈도는 Tick 주기와 동일하다. 10 Hz Tick에서는 우선순위 조건이 초당 10회 재검사되고, 100 Hz에서는 초당 100회 재검사된다. 대안 가용성 변화의 감지 지연은 최대 1 Tick 주기이다.
\text{최대 감지 지연} = T_{period}
우선순위 재검사와 효율적 대안 전환
우선순위 기반 조건 재검사는 로봇이 항상 가용한 최선의 대안을 사용하도록 보장하는 메커니즘이다. 차선의 대안으로 작업을 수행하는 동안에도 더 나은 대안의 가용성을 지속적으로 확인함으로써, 자원 낭비를 최소화하고 임무 수행 효율을 극대화한다(Faconti, 2022).
<!-- 효율적 대안 전환 패턴 -->
<ReactiveFallback>
<Sequence>
<Condition ID="IsHighBandwidthAvailable"/>
<Action ID="StreamHighQuality"/>
</Sequence>
<Sequence>
<Condition ID="IsMediumBandwidthAvailable"/>
<Action ID="StreamMediumQuality"/>
</Sequence>
<Action ID="StreamLowQuality"/>
</ReactiveFallback>
이 구조에서 로봇은 현재 가용한 최고 대역폭에 맞는 스트리밍 품질을 자동으로 선택하며, 대역폭이 변화하면 즉시 적절한 품질로 전환한다.
참고 문헌
- Colledanchise, M., & Ogren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
- Faconti, D. (2022). BehaviorTree.CPP documentation and API reference. https://www.behaviortree.dev/