1292.64 ForceSuccess 데코레이터의 동작

1. ForceSuccess 데코레이터의 정의

ForceSuccess 데코레이터는 자식 노드의 반환 상태가 Success 또는 Failure인 경우 이를 항상 Success로 변환하여 반환하는 데코레이터 노드이다. 자식이 Running을 반환하면 Running을 그대로 전파한다. ForceSuccess는 자식 노드의 실패를 무시하고 상위 제어 흐름이 계속 진행되도록 보장하는 역할을 수행한다 (Faconti, BehaviorTree.CPP Documentation, 2024).

2. 알고리즘

function ForceSuccess.tick():
    child_status = child.tick()

    if child_status == Running:
        return Running
    else:
        return Success

3. 상태 변환 규칙

자식 반환 상태ForceSuccess 반환 상태
SuccessSuccess
FailureSuccess
RunningRunning

ForceSuccess는 자식의 완료 상태(Success 또는 Failure)를 모두 Success로 변환한다. Running 상태는 자식의 실행이 아직 진행 중임을 나타내므로 변환 없이 전파된다 (Colledanchise & Ögren, Behavior Trees in Robotics and AI: An Introduction, 2018).

4. 실행 흐름 예제

4.1 Sequence에서의 실패 무시

Sequence
 ├─ Action [A1: 로그 전송]
 ├─ ForceSuccess
 │   └─ Action [A2: 선택적 데이터 수집]
 └─ Action [A3: 핵심 임무 수행]
TickA2 반환ForceSuccess 반환Sequence 동작
t_1FailureSuccessA3로 진행

A2가 실패하더라도 ForceSuccess에 의해 Success로 변환되므로, Sequence가 A3를 계속 실행한다. ForceSuccess가 없으면 A2의 실패에 의해 Sequence 전체가 Failure를 반환하고 A3는 실행되지 않는다.

4.2 비동기 자식의 처리

TickA2 반환ForceSuccess 반환
t_1RunningRunning
t_2RunningRunning
t_3FailureSuccess

자식이 Running 상태를 유지하는 동안 ForceSuccess도 Running을 전파하며, 자식이 최종적으로 Failure를 반환하면 Success로 변환한다.

5. Halt 전파

ForceSuccess가 halt 요청을 수신하면, Running 상태의 자식에게 halt를 전파한다.

function ForceSuccess.halt():
    if child.status == Running:
        child.halt()
    set_status(Idle)

6. 적용 시의 고려사항

ForceSuccess는 자식의 실패를 완전히 무시하므로, 실패가 의미 있는 정보를 전달하는 경우에는 신중하게 사용하여야 한다. 자식의 실패가 안전 관련 조건의 위반을 나타내는 경우, ForceSuccess를 적용하면 안전 위반이 무시되어 위험한 상황이 발생할 수 있다 (Faconti, 2024).

7. 로봇 공학에서의 활용

7.1 선택적 행동의 실패 무시

필수적이지 않은 부가 행동(예: 로그 전송, 진단 데이터 수집, 알림 발송)의 실패가 핵심 임무의 진행을 방해하지 않도록 ForceSuccess가 활용된다. 부가 행동이 실패하더라도 임무의 주요 흐름이 중단되지 않는다.

7.2 Sequence에서의 필수/선택 구분

Sequence 노드의 자식 중 일부를 ForceSuccess로 감싸면, 해당 자식의 성공 여부에 관계없이 Sequence가 다음 자식으로 진행한다. 이를 통해 필수 행동과 선택적 행동을 단일 Sequence 내에서 구분하여 배치할 수 있다 (Colledanchise & Ögren, 2018).


참고 문헌

  • Colledanchise, M. & Ögren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
  • Faconti, D. (2024). BehaviorTree.CPP Documentation. https://www.behaviortree.dev/