BehaviorTree.CPP의 설계 철학 (Design Philosophy of BehaviorTree.CPP)

BehaviorTree.CPP의 설계 철학 (Design Philosophy of BehaviorTree.CPP)

1. 개요

BehaviorTree.CPP의 설계 철학은 행동 트리의 이론적 모델을 충실히 구현하면서도, 산업 현장에서의 실용적 요구(개발 생산성, 유지보수성, 성능)를 균형 있게 충족하는 것을 목표로 한다.

2. 핵심 설계 원칙

2.1 XML 기반 선언적 정의

행동 트리의 구조를 XML로 선언적으로 정의하여, 행동 로직을 C++ 코드에서 분리한다. XML 파일만 수정하면 코드 재컴파일 없이 행동을 변경할 수 있다.

2.2 노드의 독립성과 재사용성

각 노드는 독립적으로 구현되고 테스트되며, 팩토리에 등록하여 다양한 행동 트리에서 재사용한다. 노드 간의 결합은 블랙보드 포트를 통해서만 이루어진다.

2.3 타입 안전한 블랙보드

블랙보드의 포트 시스템은 컴파일 타임에 데이터 타입을 검증하여, 런타임 타입 오류를 방지한다.

2.4 확장 가능한 플러그인 아키텍처

사용자 정의 노드를 플러그인으로 등록하여 라이브러리를 확장한다. ROS2 플러그인 시스템과의 통합도 지원한다.

2.5 도구 체인 통합

Groot2 시각화, FileLogger2 로깅, ZMQ 실시간 모니터링 등의 도구를 통합하여 개발-디버깅-배포의 전체 생명주기를 지원한다.

2.6 경량성과 최소 의존성

코어 라이브러리는 외부 의존성을 최소화하여 임베디드 시스템에서도 사용 가능하다.

2.7 학술적 엄밀성

Colledanchise와 Ogren(2018)의 행동 트리 형식적 정의를 충실히 구현한다. tick 메커니즘, 상태 전이, 제어 흐름 등이 이론적 모델과 일치한다.

3. 참고 문헌

  • Colledanchise, M., & Ogren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
  • BehaviorTree.CPP 공식 문서. https://www.behaviortree.dev/

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