1294.53 세 가지 Fallback 변형의 적용 시나리오

1294.53 세 가지 Fallback 변형의 적용 시나리오

1. 적용 시나리오의 선택 기준

Fallback 변형의 선택은 로봇 시스템의 요구사항에 따라 결정된다. 선택의 핵심 기준은 (1) 우선 대안의 가용성 변화를 지속적으로 감시해야 하는가, (2) 실패한 대안의 재시도가 허용되는가, (3) 부수 효과의 반복이 문제가 되는가의 세 가지이다(Colledanchise & Ogren, 2018).

2. FallbackWithMemory 적용 시나리오

2.1 시나리오 1: 순차적 복구 절차

로봇 시스템에 오류가 발생했을 때, 복구 방법을 비용이 낮은 순서대로 시도하는 시나리오이다. 이미 실패한 복구 방법을 재시도하는 것은 무의미하다.

<Fallback>
    <Action ID="SoftwareReset"/>
    <Action ID="SensorRecalibration"/>
    <Action ID="HardwareReset"/>
    <Action ID="EnterSafeMode"/>
</Fallback>

SoftwareReset이 실패한 후 SensorRecalibration이 RUNNING 상태에서 진행될 때, 소프트웨어 리셋을 다시 시도하는 것은 불필요하다.

2.2 시나리오 2: 비용이 높은 대안의 순차 시도

각 대안의 실행 비용이 높아, 실패한 대안을 매 Tick마다 재시도하는 것이 비효율적인 시나리오이다.

<Fallback>
    <Action ID="DiagnoseWithExpensiveSensor"/>
    <Action ID="DiagnoseWithMediumSensor"/>
    <Action ID="DiagnoseWithBasicSensor"/>
</Fallback>

비싼 센서를 사용한 진단이 실패한 후 중간 센서로 진단을 시도하는 동안, 비싼 센서 진단을 매 Tick마다 재시도하면 자원이 낭비된다.

2.3 시나리오 3: 부수 효과가 있는 대안

대안의 시도 과정에서 부수 효과(로그 기록, 알림 전송 등)가 발생하며, 이를 반복하면 안 되는 시나리오이다.

<Fallback>
    <Action ID="NotifyAndTryMethodA"/>
    <Action ID="NotifyAndTryMethodB"/>
    <Action ID="NotifyAndEnterManual"/>
</Fallback>

3. ReactiveFallback 적용 시나리오

3.1 시나리오 1: 목표 달성 상태의 지속적 확인

로봇이 특정 목표를 달성하기 위해 행동하는 동안, 목표가 외부 요인에 의해 이미 달성되었는지를 지속적으로 확인해야 하는 시나리오이다.

<ReactiveFallback>
    <Condition ID="IsAtChargingStation"/>
    <Action ID="NavigateToChargingStation"/>
</ReactiveFallback>

네비게이션 중 충전소에 도착하면(GPS 오차 보정, 외부 이동 등으로) 네비게이션이 즉시 중단된다.

3.2 시나리오 2: 동적 대안 전환

더 나은 대안이 가용해지면 현재 대안을 즉시 중단하고 전환해야 하는 시나리오이다.

<ReactiveFallback>
    <Sequence>
        <Condition ID="IsElevatorAvailable"/>
        <Action ID="UseElevator"/>
    </Sequence>
    <Sequence>
        <Condition ID="IsRampAvailable"/>
        <Action ID="UseRamp"/>
    </Sequence>
    <Action ID="UseStairs"/>
</ReactiveFallback>

계단을 사용하여 이동하는 도중 엘리베이터가 가용해지면 즉시 엘리베이터로 전환한다.

3.3 시나리오 3: 서비스 가용성 감시

원격 서비스의 가용성을 지속적으로 감시하며, 주 서비스가 복구되면 백업 서비스에서 즉시 전환하는 시나리오이다.

<ReactiveFallback>
    <Sequence>
        <Condition ID="IsPrimaryServerOnline"/>
        <Action ID="UsePrimaryServer"/>
    </Sequence>
    <Sequence>
        <Condition ID="IsSecondaryServerOnline"/>
        <Action ID="UseSecondaryServer"/>
    </Sequence>
    <Action ID="UseLocalCache"/>
</ReactiveFallback>

3.4 시나리오 4: 환경 조건 기반 행동 선택

환경 조건에 따라 가장 적합한 행동을 동적으로 선택해야 하는 시나리오이다.

<ReactiveFallback>
    <Sequence>
        <Condition ID="IsVisibilityGood"/>
        <Action ID="UseVisualNavigation"/>
    </Sequence>
    <Sequence>
        <Condition ID="IsLidarAvailable"/>
        <Action ID="UseLidarNavigation"/>
    </Sequence>
    <Action ID="UseDeadReckoning"/>
</ReactiveFallback>

시각 센서의 가시성이 복구되면 즉시 시각 기반 네비게이션으로 전환한다.

4. 혼합 적용 시나리오

4.1 시나리오: ReactiveFallback 내부의 FallbackWithMemory

우선순위 감시가 필요하면서도, 실제 복구 절차는 순차적으로 진행되어야 하는 시나리오에서는 두 변형을 중첩하여 사용한다.

<ReactiveFallback>
    <Condition ID="IsOperatingNormally"/>    <!-- 정상 상태 감시 -->
    <Fallback>                               <!-- 순차적 복구 시도 -->
        <Action ID="SoftRecovery"/>
        <Action ID="HardRecovery"/>
        <Action ID="EnterSafeMode"/>
    </Fallback>
</ReactiveFallback>

외부 ReactiveFallback은 정상 상태를 매 Tick마다 재검사한다. 정상 상태로 복구되면 내부 Fallback 전체가 Halt된다. 내부 FallbackWithMemory는 복구 방법을 순차적으로 시도하며, 실패한 방법을 재시도하지 않는다.

4.2 시나리오: 다중 계층 대안 구조

<ReactiveFallback>
    <Condition ID="IsMissionComplete"/>       <!-- 임무 완료 감시 -->
    <ReactiveFallback>
        <Sequence>
            <Condition ID="IsFastMethodOK"/>
            <Action ID="FastMethod"/>
        </Sequence>
        <Fallback>
            <Action ID="MediumMethodA"/>
            <Action ID="MediumMethodB"/>
        </Fallback>
    </ReactiveFallback>
</ReactiveFallback>

5. 변형 선택 의사 결정 흐름

1. 앞쪽 자식이 부수 효과가 있는 액션인가?
   → 예: FallbackWithMemory 사용
   → 아니오: 2번으로

2. 우선순위가 높은 대안의 가용성 변화를 감시해야 하는가?
   → 예: ReactiveFallback 사용
   → 아니오: 3번으로

3. 실패한 대안의 재시도가 문제가 되는가?
   → 예: FallbackWithMemory 사용
   → 아니오: 어느 변형이든 사용 가능 (기본값: FallbackWithMemory)

6. 적용 시나리오 요약

시나리오 유형권장 변형핵심 이유
순차적 복구 절차FallbackWithMemory실패 대안 재시도 방지
비용 높은 대안 시도FallbackWithMemory비용 반복 방지
목표 달성 상태 감시ReactiveFallback외부 변화 즉시 감지
동적 대안 전환ReactiveFallback우선 대안 즉시 전환
감시 + 순차 복구ReactiveFallback + Fallback 중첩양쪽 요구사항 동시 충족

참고 문헌

  • 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/