1294.62 기본 행동과 대안 행동의 Fallback 구성

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>
  1. 이미 완료된 경우: 아무것도 하지 않음 (SUCCESS)
  2. 준비가 완료된 경우: 바로 수행
  3. 준비가 안 된 경우: 준비 후 수행

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. 대안 행동의 설계 원칙

  1. 점진적 퇴화(Graceful Degradation): 대안은 기본 행동보다 기능이 제한되더라도, 시스템의 핵심 기능을 유지해야 한다.

  2. 최후 수단의 포함: Fallback의 마지막 자식에 가능한 한 항상 성공하는 안전 행동을 배치하여, 모든 대안이 소진되는 것을 방지한다.

  3. 대안 간 독립성: 각 대안은 이전 대안의 상태에 의존하지 않고 독립적으로 실행 가능해야 한다.

  4. 복구 가능성: 대안 행동 실행 후 기본 행동으로 복귀할 수 있는 경로가 존재해야 한다(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/