BehaviorTree.CPP의 소프트웨어 계층 구조 (Software Layer Architecture of BehaviorTree.CPP)

BehaviorTree.CPP의 소프트웨어 계층 구조 (Software Layer Architecture of BehaviorTree.CPP)

1. 개요

BehaviorTree.CPP의 소프트웨어 아키텍처는 코어 라이브러리, XML 파싱 계층, 블랙보드 시스템, 로깅/관찰 계층, 외부 연동 계층으로 구성된 다중 계층 구조를 가진다.

2. 계층 구조

┌─────────────────────────────────────────┐
│       응용 계층 (Application Layer)       │
│   사용자 정의 노드, 행동 트리 XML 정의     │
├─────────────────────────────────────────┤
│      외부 연동 계층 (Integration Layer)    │
│   BehaviorTree.ROS2, Groot2 연동          │
├─────────────────────────────────────────┤
│    로깅/관찰 계층 (Logging/Observer)      │
│   FileLogger2, TreeObserver, ZMQ         │
├─────────────────────────────────────────┤
│      블랙보드 계층 (Blackboard Layer)     │
│   Blackboard, Ports, Type System         │
├─────────────────────────────────────────┤
│      XML 파싱 계층 (XML Parsing Layer)    │
│   XMLParser, BehaviorTreeFactory         │
├─────────────────────────────────────────┤
│       코어 계층 (Core Layer)              │
│   TreeNode, ControlNode, DecoratorNode   │
│   ActionNode, ConditionNode              │
└─────────────────────────────────────────┘

3. 각 계층의 역할

3.1 코어 계층

모든 노드 타입의 기반 클래스와 tick 메커니즘을 제공한다. 행동 트리의 이론적 모델을 구현하는 핵심 계층이다.

3.2 XML 파싱 계층

XML 행동 트리 정의를 파싱하여 노드 인스턴스를 생성한다. BehaviorTreeFactory가 노드 등록과 트리 생성을 담당한다.

3.3 블랙보드 계층

노드 간 타입 안전한 데이터 공유를 제공한다. 포트 시스템, 자동 타입 변환, 항목별 타임스탬프 추적 등을 포함한다.

3.4 로깅/관찰 계층

행동 트리의 실행 이력을 기록하고, 실시간 모니터링 데이터를 외부로 전달한다.

3.5 외부 연동 계층

ROS2, Groot2 등 외부 시스템과의 통합을 담당한다. BehaviorTree.ROS2 패키지가 ROS2 액션, 서비스, 토픽 기반 노드를 제공한다.

3.6 응용 계층

사용자가 정의하는 커스텀 노드와 XML 행동 트리가 위치하는 계층이다.

4. 계층 간 의존성

의존성은 아래에서 위로 흐른다. 코어 계층은 다른 계층에 의존하지 않으며, 상위 계층은 하위 계층에 의존한다. 이 단방향 의존성은 각 계층의 독립적 테스트와 교체를 가능하게 한다.

5. 참고 문헌

  • BehaviorTree.CPP 공식 문서. https://www.behaviortree.dev/
  • BehaviorTree.CPP GitHub. https://github.com/BehaviorTree/BehaviorTree.CPP

버전날짜변경 사항
v0.12026-04-05초안 작성