1294.62 기본 행동과 대안 행동의 Fallback 구성
1. 기본 행동과 대안 행동의 구분
Fallback 구조에서 “기본 행동(primary behavior)“은 정상 상황에서 수행되는 주된 행동이며, “대안 행동(alternative behavior)“은 기본 행동이 실패했을 때 수행되는 보조 행동이다. Fallback의 좌→우 평가 순서에 의해, 기본 행동이 왼쪽에, 대안 행동이 오른쪽에 배치된다(Colledanchise & Ogren, 2018).
2. 구성 패턴
2.1 패턴 1: 단일 기본 + 단일 대안
<Fallback>
<Action ID="PrimaryBehavior"/>
<Action ID="AlternativeBehavior"/>
</Fallback>
가장 단순한 구성으로, 기본 행동이 실패하면 대안 행동을 수행한다.
2.2 패턴 2: 조건부 기본 + 무조건 대안
<Fallback>
<Sequence>
<Condition ID="IsPrimaryApplicable"/>
<Action ID="PrimaryBehavior"/>
</Sequence>
<Action ID="AlternativeBehavior"/>
</Fallback>
기본 행동의 적용 조건을 명시적으로 검사한다. 조건이 충족되지 않으면 기본 행동을 시도하지 않고 대안으로 바로 진행한다.
2.3 패턴 3: 다중 조건부 대안 + 무조건 기본
<Fallback>
<Sequence>
<Condition ID="IsSpecialCaseA"/>
<Action ID="HandleSpecialCaseA"/>
</Sequence>
<Sequence>
<Condition ID="IsSpecialCaseB"/>
<Action ID="HandleSpecialCaseB"/>
</Sequence>
<Action ID="HandleNormalCase"/> <!-- 기본 (일반) 행동 -->
</Fallback>
이 패턴에서는 특수 상황을 먼저 확인하고, 어떤 특수 상황에도 해당하지 않으면 일반 행동을 수행한다. 기본 행동이 마지막에 배치되어 “기본값(default)” 역할을 한다.
3. 기본 행동의 보호 패턴
3.1 조건 보호된 기본 행동
<Fallback>
<Condition ID="IsAlreadyDone"/> <!-- 이미 완료됨 -->
<Sequence>
<Condition ID="IsReadyToPerform"/> <!-- 수행 준비 완료 -->
<Action ID="PerformAction"/>
</Sequence>
<Action ID="PrepareAndPerform"/> <!-- 준비 후 수행 -->
</Fallback>
- 이미 완료된 경우: 아무것도 하지 않음 (SUCCESS)
- 준비가 완료된 경우: 바로 수행
- 준비가 안 된 경우: 준비 후 수행
3.2 상태 확인 후 행동
<Fallback>
<Condition ID="IsObjectGrasped"/>
<Action ID="GraspObject"/>
</Fallback>
물체가 이미 파지된 상태이면 추가 행동이 불필요하다. 파지되지 않은 경우에만 파지 동작을 수행한다.
4. 로봇 공학에서의 적용 사례
4.1 사례 1: 네비게이션의 기본-대안 구성
<Fallback>
<Sequence>
<Condition ID="IsGlobalPlanValid"/>
<Action ID="FollowGlobalPlan"/> <!-- 기본: 글로벌 경로 -->
</Sequence>
<Sequence>
<Condition ID="IsLocalPlanPossible"/>
<Action ID="FollowLocalPlan"/> <!-- 대안 1: 로컬 경로 -->
</Sequence>
<Action ID="SpinAndRecover"/> <!-- 대안 2: 회전 복구 -->
</Fallback>
4.2 사례 2: 도킹의 기본-대안 구성
<Fallback>
<Sequence>
<Condition ID="IsDockVisible"/>
<Action ID="VisualDocking"/> <!-- 기본: 시각 기반 도킹 -->
</Sequence>
<Sequence>
<Condition ID="IsIRBeaconDetected"/>
<Action ID="IRGuidedDocking"/> <!-- 대안 1: IR 유도 도킹 -->
</Sequence>
<Action ID="DeadReckoningDocking"/> <!-- 대안 2: 추측 항법 도킹 -->
</Fallback>
4.3 사례 3: 전원 관리의 기본-대안 구성
<Fallback>
<Sequence>
<Condition ID="IsBatteryAbove50"/>
<Action ID="ContinueNormalOperation"/> <!-- 기본: 정상 운용 -->
</Sequence>
<Sequence>
<Condition ID="IsBatteryAbove20"/>
<Action ID="ReducedPowerOperation"/> <!-- 대안 1: 절전 운용 -->
</Sequence>
<Action ID="EmergencyReturnToBase"/> <!-- 대안 2: 비상 귀환 -->
</Fallback>
5. 대안 행동의 설계 원칙
-
점진적 퇴화(Graceful Degradation): 대안은 기본 행동보다 기능이 제한되더라도, 시스템의 핵심 기능을 유지해야 한다.
-
최후 수단의 포함: Fallback의 마지막 자식에 가능한 한 항상 성공하는 안전 행동을 배치하여, 모든 대안이 소진되는 것을 방지한다.
-
대안 간 독립성: 각 대안은 이전 대안의 상태에 의존하지 않고 독립적으로 실행 가능해야 한다.
-
복구 가능성: 대안 행동 실행 후 기본 행동으로 복귀할 수 있는 경로가 존재해야 한다(Faconti, 2022).
6. Reactive 변형에서의 기본-대안 전환
ReactiveFallback을 사용하면, 대안 행동 수행 중 기본 행동의 조건이 다시 충족되면 자동으로 기본 행동으로 전환된다.
<ReactiveFallback>
<Sequence>
<Condition ID="IsGlobalPlanValid"/>
<Action ID="FollowGlobalPlan"/>
</Sequence>
<Action ID="LocalRecovery"/>
</ReactiveFallback>
LocalRecovery 진행 중 글로벌 경로가 다시 유효해지면, LocalRecovery가 Halt되고 FollowGlobalPlan으로 즉시 전환된다.
참고 문헌
- 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/