1292.91 블랙보드의 메모리 모델 개요

1. 블랙보드의 정의

블랙보드(blackboard)는 행동 트리에서 노드 간 데이터를 공유하기 위한 키-값(key-value) 저장소이다. 블랙보드는 행동 트리의 메모리 모델에서 노드 간 통신의 유일한 공식 채널이며, 노드가 다른 노드의 내부 상태에 직접 접근하지 않고도 데이터를 교환할 수 있게 한다 (Faconti, BehaviorTree.CPP Documentation, 2024).

2. 블랙보드의 메모리 구조

블랙보드는 키-값 쌍의 집합으로 구성된다. 각 항목은 문자열 키와 타입이 지정된 값으로 이루어진다.

구성 요소설명예시
키 (key)데이터 항목의 식별자“target_pose”, “battery_level”
값 (value)데이터의 실제 내용좌표 값, 정수, 문자열
타입값의 자료형double, int, Pose, string

3. 포트를 통한 접근 제어

블랙보드에 대한 접근은 포트(port) 시스템을 통해 제어된다. 각 노드는 입력 포트(input port)와 출력 포트(output port)를 선언하며, 선언된 포트를 통해서만 블랙보드에 접근할 수 있다.

포트 유형접근 방향용도
입력 포트블랙보드 → 노드블랙보드에서 데이터 읽기
출력 포트노드 → 블랙보드블랙보드에 데이터 쓰기

포트 시스템은 데이터 흐름을 명시적으로 관리하고, 어떤 노드가 어떤 데이터에 접근하는지를 트리 정의에서 선언적으로 표현한다 (Colledanchise & Ögren, Behavior Trees in Robotics and AI: An Introduction, 2018).

4. 블랙보드의 생명주기

블랙보드는 행동 트리가 생성될 때 할당되고, 트리가 소멸될 때 해제된다. 블랙보드의 데이터는 행동 트리의 실행 기간 동안 유지되며, 개별 노드의 완료나 halt에 의해 자동으로 삭제되지 않는다.

시점블랙보드 동작
트리 생성블랙보드 객체 할당, 초기값 설정
트리 실행 중노드에 의한 읽기/쓰기
노드 완료/halt블랙보드 데이터 유지 (자동 삭제 없음)
트리 소멸블랙보드 메모리 해제

5. 서브트리와 블랙보드 범위

서브트리(subtree)를 사용하는 경우, 각 서브트리는 독립적인 블랙보드를 가질 수 있다. 상위 트리의 블랙보드와 서브트리의 블랙보드 사이에는 명시적인 포트 매핑(port remapping)을 통해 데이터가 전달된다. 이 설계는 서브트리의 캡슐화를 보장하면서, 필요한 데이터의 공유를 허용한다 (Faconti, 2024).

6. 로봇 공학에서의 의의

블랙보드 메모리 모델은 로봇의 행동 트리에서 센서 데이터, 목표 좌표, 동작 파라미터, 임무 상태 등의 공유 데이터를 체계적으로 관리하는 수단이다. 포트 시스템에 의한 명시적 접근 제어는 데이터 흐름의 추적과 디버깅을 용이하게 하며, 서브트리별 독립 블랙보드는 모듈적 설계를 지원한다 (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/