KeepRunningUntilFailure의 Failure 통과 (KeepRunningUntilFailure's Failure Pass-Through)

KeepRunningUntilFailure의 Failure 통과 (KeepRunningUntilFailure’s Failure Pass-Through)

1. 개요

KeepRunningUntilFailure 데코레이터는 자식 노드가 FAILURE를 반환하면 이를 변환 없이 그대로 부모에게 전달한다. 이 FAILURE 통과는 데코레이터의 유일한 종료 경로이며, 자식의 실패가 지속 실행의 종료 조건으로 기능한다.

2. Failure 통과 규칙

f_{\text{KRUF}}(\text{FAILURE}) = \text{FAILURE}

자식이 FAILURE를 반환하면, KeepRunningUntilFailure도 FAILURE를 반환하여 데코레이터의 실행이 종료된다.

FAILURE 통과의 의미

FAILURE는 KeepRunningUntilFailure의 유일한 탈출 조건이다. 자식이 SUCCESS를 반환하면 RUNNING으로 변환되어 재실행되고, RUNNING을 반환하면 그대로 전달되어 자식의 실행이 계속된다. 오직 FAILURE만이 데코레이터를 종료시킨다.

종료 시나리오

조건 기반 종료

<KeepRunningUntilFailure>
    <Sequence>
        <Condition ID="IsSensorDataValid"/>
        <Action ID="ProcessData"/>
    </Sequence>
</KeepRunningUntilFailure>

센서 데이터가 유효한 동안(IsSensorDataValid SUCCESS) 데이터를 처리하고, 센서 데이터가 유효하지 않으면(IsSensorDataValid FAILURE) Sequence가 FAILURE를 반환하여 KeepRunningUntilFailure가 종료된다.

행동 실패에 의한 종료

<KeepRunningUntilFailure>
    <Action ID="MaintainHover"/>
</KeepRunningUntilFailure>

호버링 유지 행동이 실패(모터 오류, 배터리 소진 등)하면 KeepRunningUntilFailure가 종료된다.

상위 구조에서의 FAILURE 처리

Fallback에 의한 복구

<Fallback>
    <KeepRunningUntilFailure>
        <Action ID="PrimaryMonitor"/>
    </KeepRunningUntilFailure>
    <Action ID="RecoverFromMonitorFailure"/>
</Fallback>

모니터링이 실패로 종료되면 복구 행동을 실행한다.

참고 문헌

  • Colledanchise, M., & Ogren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
  • BehaviorTree.CPP 공식 문서. https://www.behaviortree.dev/

버전날짜변경 사항
v0.12026-04-04초안 작성