1292.81 Halt 요청의 전파

1. Halt 전파의 정의

Halt 요청의 전파(halt propagation)란 상위 노드에서 발행된 halt 요청이 트리 구조를 따라 하위 노드로 재귀적으로 전달되는 과정이다. halt 전파는 단일 Running 노드의 중단에 그치지 않고, 해당 노드의 서브트리 전체에 포함된 모든 Running 노드를 체계적으로 중단시킨다 (Faconti, BehaviorTree.CPP Documentation, 2024).

2. 전파 방향

Halt 요청은 상위 노드에서 하위 노드 방향으로, 즉 루트에서 리프 방향으로 전파된다. 이는 tick의 전파 방향과 동일하다. halt 요청을 수신한 각 노드는 자신의 Running 상태 자식에게 halt를 전파한 후, 자신의 내부 상태를 정리하고 Idle로 복귀한다.

halt 전파 경로:
상위 노드 → 제어 흐름 노드 → ... → 데코레이터 노드 → 액션 노드

3. 전파 알고리즘

halt 전파의 알고리즘은 노드 유형에 따라 다음과 같이 구현된다.

3.1 제어 흐름 노드

function ControlFlowNode.halt():
    for each child in children:
        if child.status == Running:
            child.halt()
    current_child_index = 0     // 내부 상태 초기화
    set_status(Idle)

제어 흐름 노드는 자신의 모든 자식 중 Running 상태인 자식에게 halt를 전파한다. Parallel 노드의 경우 복수의 자식이 동시에 Running일 수 있으므로, 모든 Running 자식에게 halt가 전파된다.

3.2 데코레이터 노드

function DecoratorNode.halt():
    if child.status == Running:
        child.halt()
    reset_internal_state()      // 카운터, 타이머 등 초기화
    set_status(Idle)

데코레이터 노드는 단일 자식을 가지므로, 해당 자식이 Running이면 halt를 전파한다.

3.3 액션 노드 (리프)

function StatefulActionNode.halt():
    if status == Running:
        onHalted()              // 사용자 정의 정리 로직
    set_status(Idle)

액션 노드는 리프 노드이므로 더 이상의 전파가 발생하지 않으며, onHalted 콜백을 호출하여 행동을 중단한다 (Colledanchise & Ögren, Behavior Trees in Robotics and AI: An Introduction, 2018).

4. 전파 예제

다음의 트리 구조를 고려한다.

Sequence [S1]
 ├─ Condition [C1]
 ├─ Parallel [P1]
 │   ├─ Action [A1] (Running)
 │   └─ Action [A2] (Running)
 └─ Action [A3] (Idle)

S1이 halt를 수신하면, 전파는 다음과 같이 진행된다.

순서노드동작
1S1P1이 Running이므로 P1에 halt 전파
2P1A1, A2가 Running이므로 각각에 halt 전파
3A1onHalted 호출, Idle로 복귀
4A2onHalted 호출, Idle로 복귀
5P1내부 상태 초기화, Idle로 복귀
6S1내부 상태 초기화, Idle로 복귀

C1과 A3는 Running 상태가 아니므로 halt가 전파되지 않는다.

5. 선택적 전파

halt 전파는 Running 상태의 노드에 대해서만 수행된다. Idle, Success, Failure 상태의 노드에는 halt가 전파되지 않는다. 이 선택적 전파는 불필요한 halt 처리를 방지하고, halt의 효율성을 보장한다.

6. 전파의 동기성

halt 전파는 동기적으로 수행된다. 상위 노드의 halt 함수는 하위 노드의 halt가 모두 완료된 후에야 반환된다. 이 동기성에 의해, halt 함수가 반환된 시점에서 서브트리의 모든 노드가 Idle 상태임이 보장된다 (Faconti, 2024).

7. 로봇 공학에서의 의의

halt 전파 메커니즘은 복잡한 행동 구성에서의 안전한 중단을 보장한다. 다수의 병렬 행동이 동시에 수행되는 경우에도, halt 전파에 의해 모든 관련 행동이 체계적으로 중단되고 자원이 정리된다 (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/