1292.76 노드 초기화의 시점
1. 노드 초기화의 정의
노드 초기화(initialization)란 행동 트리의 노드가 비활성 상태(Idle)에서 활성 상태로 전이될 때, 행동 수행에 필요한 준비 작업을 수행하는 과정이다. 초기화는 노드가 tick을 수신하여 실행을 시작하기 직전에 이루어지며, 내부 상태의 설정, 외부 자원의 할당, 입력 데이터의 획득 등을 포함한다 (Faconti, BehaviorTree.CPP Documentation, 2024).
2. 초기화의 시점
노드 초기화가 발생하는 시점은 노드의 유형에 따라 다음과 같이 구분된다.
| 노드 유형 | 초기화 시점 | 콜백 |
|---|---|---|
| StatefulActionNode | Idle 상태에서 첫 tick 수신 시 | onStart |
| SyncActionNode | 매 tick 수신 시 (매번 새로 실행) | tick |
| ConditionNode | 매 tick 수신 시 | tick |
| 제어 흐름 노드 | Idle 상태에서 첫 tick 수신 시 | 내부 상태 초기화 |
| 데코레이터 노드 | Idle 상태에서 첫 tick 수신 시 | 내부 상태 초기화 |
3. 상태 보존 액션 노드의 초기화
상태 보존 액션 노드(StatefulActionNode)에서 초기화는 onStart 콜백의 호출에 해당한다. onStart는 노드가 Idle 상태에서 첫 번째 tick을 수신할 때 호출되며, 이 시점에서 다음의 작업이 수행된다.
- 내부 멤버 변수의 초기 값 설정
- 블랙보드로부터 입력 포트 데이터 읽기
- 외부 시스템에 대한 요청 발행
- 자원 할당
초기화와 실행의 시점이 분리되지 않고, onStart 내에서 초기화와 행동 개시가 함께 수행된다 (Colledanchise & Ögren, Behavior Trees in Robotics and AI: An Introduction, 2018).
4. 재초기화의 시점
노드가 완료(Success 또는 Failure 반환)되거나 halt에 의해 Idle로 복귀한 후, 다시 tick을 수신하면 초기화가 다시 수행된다. 이 재초기화에 의해 이전 실행의 잔여 상태가 제거되고, 노드가 깨끗한 상태에서 새로운 행동을 시작할 수 있다.
| 이벤트 | 상태 전이 | 재초기화 여부 |
|---|---|---|
| 행동 성공 완료 | Running → Idle | 다음 tick 시 재초기화 |
| 행동 실패 완료 | Running → Idle | 다음 tick 시 재초기화 |
| halt에 의한 중단 | Running → Idle | 다음 tick 시 재초기화 |
5. 제어 흐름 노드의 초기화
제어 흐름 노드(Sequence, Fallback 등)의 초기화는 내부 인덱스와 상태 변수의 초기화에 해당한다. Sequence 노드의 경우, 현재 실행 중인 자식의 인덱스가 0으로 초기화된다. 이 초기화는 노드가 Idle에서 활성화될 때 수행된다.
6. 초기화와 구성의 구분
노드의 초기화(initialization)와 구성(configuration)은 구분되어야 한다.
| 단계 | 시점 | 내용 | 빈도 |
|---|---|---|---|
| 구성 | 행동 트리 생성 시 | 노드 등록, 포트 설정, XML 파싱 | 1회 |
| 초기화 | 매 활성화 시 | 내부 상태 설정, 자원 할당 | 매 실행마다 |
구성은 행동 트리가 처음 생성될 때 한 번 수행되는 설정 과정이며, 초기화는 노드가 활성화될 때마다 반복되는 준비 과정이다 (Faconti, 2024).
7. 로봇 공학에서의 의의
초기화 시점의 명확한 정의는 로봇의 물리적 자원 관리에 필수적이다. 모터 인터페이스의 초기화, 센서 캘리브레이션, 통신 채널의 개설 등의 자원 할당이 적절한 시점에 수행되어야, 자원의 낭비와 충돌이 방지된다. 초기화 시점이 불명확하면, 아직 필요하지 않은 자원이 조기에 할당되거나, 필요한 자원이 할당되지 않은 상태에서 행동이 시작되는 오류가 발생할 수 있다 (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/