Chapter 1293. Tick 메커니즘과 실행 흐름 (Tick Mechanism and Execution Flow)
1. 개요
행동 트리의 실행은 tick이라는 주기적 신호에 의해 구동된다. tick은 행동 트리의 루트 노드에서 생성되어 트리 전체에 전파되며, 각 노드의 실행을 촉발하고 반환 상태를 수집한다. 본 장에서는 tick 메커니즘의 상세한 동작 원리, tick의 생성과 전파 과정, 제어 흐름 노드에 의한 tick의 조건부 전파, tick 주기의 설정과 실행 흐름에 대한 영향, 그리고 tick 기반 실행 흐름의 추적과 분석 방법을 체계적으로 다룬다 (Colledanchise & Ögren, Behavior Trees in Robotics and AI: An Introduction, 2018).
2. Tick의 본질
tick은 행동 트리의 실행을 구동하는 단일 실행 주기이다. 하나의 tick은 루트 노드에서 시작하여 전위 순회(pre-order traversal) 순서에 따라 트리를 순회하며, 각 노드의 tick 함수를 호출하고, 리프 노드의 반환 상태를 수집하여 루트 노드까지 역전파한다. tick은 행동 트리에서 시간의 최소 단위이며, 모든 노드의 상태 전이와 행동 실행은 tick을 기준으로 발생한다.
tick의 핵심 속성은 다음과 같다.
| 속성 | 설명 |
|---|---|
| 주기성 | 일정한 간격으로 반복적으로 발생한다 |
| 원자성 | 하나의 tick은 시작부터 종료까지 중단 없이 실행된다 |
| 방향성 | 루트에서 리프로 전파되고, 리프에서 루트로 상태가 역전파된다 |
| 조건부 전파 | 제어 흐름 노드의 의미론에 따라 일부 자식에만 전달된다 |
3. Tick의 생성과 전파
tick은 외부의 실행 루프(execution loop)에 의해 루트 노드에 전달된다. 루트 노드는 수신한 tick을 자신의 유일한 자식에게 전달하고, 이후 제어 흐름 노드가 자식에 대한 tick 전파를 관리한다.
function execution_loop(tree, tick_rate):
while not shutdown:
tree.root.tick()
sleep(1.0 / tick_rate)
tick의 전파 과정은 재귀적으로 수행된다. 제어 흐름 노드는 자신의 의미론에 따라 자식을 순차적으로 tick하며, 조기 종료 조건이 충족되면 나머지 자식의 tick을 생략한다.
4. 단일 Tick의 실행 흐름
단일 tick의 전체 실행 흐름은 다음의 단계로 구성된다.
- tick 수신: 루트 노드가 외부 루프로부터 tick을 수신한다
- 하향 전파: 제어 흐름 노드가 자식에게 tick을 전달한다
- 리프 평가: 리프 노드(액션, 조건)가 tick을 수신하여 자신의 기능을 수행한다
- 상태 반환: 리프 노드가 Success, Failure, 또는 Running을 반환한다
- 상향 전파: 반환 상태가 부모 노드로 역전파된다
- tick 완료: 루트 노드가 최종 반환 상태를 결정하여 반환한다
5. Tick 주기와 실행 빈도
tick 주기(tick period)는 연속적인 두 tick 사이의 시간 간격이며, tick 빈도(tick rate)는 초당 tick 발생 횟수이다. tick 빈도의 설정은 행동 트리의 반응성과 계산 부하 사이의 균형에 직접적인 영향을 미친다.
| tick 빈도 | 반응성 | 계산 부하 | 적용 |
|---|---|---|---|
| 높음 (100Hz+) | 빠른 환경 변화 감지 | 높음 | 고속 반응 시스템 |
| 중간 (10-30Hz) | 적절한 반응 속도 | 적절 | 일반 로봇 제어 |
| 낮음 (1-5Hz) | 느린 반응 | 낮음 | 저속 임무 관리 |
tick 빈도는 로봇 시스템의 제어 루프 주기, 센서 갱신 주기, 액추에이터 응답 시간 등을 고려하여 결정된다 (Faconti, BehaviorTree.CPP Documentation, 2024).
6. 본 장의 구성
본 장에서는 tick 메커니즘의 기본 개념에서 출발하여, tick의 생성과 전파, 주기적 실행, 단일 tick 흐름의 상세 추적, 깊이 우선 탐색 기반의 실행 순서, tick과 노드 활성화 및 비활성화의 관계를 순차적으로 다룬다. 이를 통해 행동 트리의 실행 흐름에 대한 체계적이고 형식적인 이해를 제공한다 (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/