1292.88 행동 트리의 메모리 모델
1. 메모리 모델의 정의
행동 트리의 메모리 모델(memory model)이란, 행동 트리의 실행에 관여하는 데이터가 저장, 접근, 공유되는 방식을 정의하는 체계이다. 행동 트리의 메모리 모델은 노드 내부 상태의 저장, 노드 간 데이터 공유, 트리 실행 상태의 관리를 포함한다 (Faconti, BehaviorTree.CPP Documentation, 2024).
2. 메모리의 계층 구조
행동 트리에서 사용되는 메모리는 다음의 계층 구조로 분류된다.
| 계층 | 저장 내용 | 접근 범위 | 생명주기 |
|---|---|---|---|
| 노드 내부 상태 | 노드의 멤버 변수 | 해당 노드만 | 노드 활성화 ~ 완료/halt |
| 블랙보드 | 노드 간 공유 데이터 | 블랙보드 접근 권한이 있는 노드 | 행동 트리 실행 전체 |
| 트리 실행 상태 | 노드의 반환 상태, 자식 인덱스 | 행동 트리 엔진 | tick 간 유지 |
3. 노드 내부 상태 메모리
각 노드는 자신의 실행에 필요한 내부 상태를 멤버 변수로 유지한다. 이 메모리는 해당 노드만 접근할 수 있으며, 다른 노드에서 직접 접근하지 않는다.
- 상태 보존 액션 노드: onStart에서 할당, onRunning에서 갱신, 완료/halt 시 정리
- 제어 흐름 노드: 현재 자식 인덱스, 완료 카운터 등
- 데코레이터 노드: 반복 카운터, 타이머, 캐싱된 상태 등
4. 블랙보드 메모리
블랙보드(blackboard)는 노드 간 데이터 공유를 위한 키-값(key-value) 저장소이다. 블랙보드의 데이터는 행동 트리의 실행 기간 동안 유지되며, 여러 노드가 동일한 블랙보드 항목을 읽고 쓸 수 있다.
블랙보드의 접근은 입력 포트(input port)와 출력 포트(output port)를 통해 제어된다. 각 노드는 자신이 선언한 포트를 통해서만 블랙보드에 접근할 수 있으며, 이는 데이터 흐름의 명시적 관리를 가능하게 한다 (Colledanchise & Ögren, Behavior Trees in Robotics and AI: An Introduction, 2018).
5. 트리 실행 상태 메모리
행동 트리 엔진은 각 노드의 현재 반환 상태를 관리한다. 이 상태 정보는 tick 간에 유지되어, 후속 tick에서 Running 노드에 대한 재실행, Idle 노드에 대한 초기화 등의 결정에 사용된다.
6. 메모리 할당 방식
행동 트리의 노드는 트리 생성 시 할당되며, 실행 중에 노드가 동적으로 생성되거나 소멸되지 않는다. 이 정적 할당 방식은 실시간 시스템에서의 메모리 할당 예측 가능성을 보장한다.
| 할당 시점 | 대상 | 해제 시점 |
|---|---|---|
| 트리 생성 시 | 노드 객체, 블랙보드 | 트리 소멸 시 |
| 노드 활성화 시 | 노드 내부의 동적 자원 | 노드 완료/halt 시 |
7. 로봇 공학에서의 의의
행동 트리의 메모리 모델은 노드의 캡슐화와 데이터 공유의 균형을 제공한다. 노드 내부 상태는 캡슐화에 의해 보호되고, 노드 간 데이터 공유는 블랙보드를 통해 명시적으로 관리된다. 이 구조는 행동 트리의 모듈성과 재사용성을 보장하면서, 필요한 데이터 공유를 가능하게 한다 (Faconti, 2024).
참고 문헌
- 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/