1261.75 행동 제어 시스템의 확장성 고려사항

1. 확장성의 정의와 행동 제어에서의 의의

확장성(scalability)이란 시스템의 규모(scale)가 증가하더라도 성능, 기능, 관리 용이성이 허용 가능한 수준으로 유지되는 능력을 의미한다(Bondi, 2000). 행동 제어 시스템에서의 확장성은 행동의 수, 센서의 수, 액추에이터의 수, 로봇의 수, 임무의 복잡도 등 다양한 차원에서 시스템 규모가 증가할 때 행동 제어의 정확성, 응답성, 유지보수성이 저하되지 않는 것을 요구한다.

로봇 시스템의 응용 범위가 확대됨에 따라, 행동 제어 시스템은 소수의 단순 행동에서 수백 개의 복합적 행동으로 성장할 수 있다. 이러한 규모 증가는 행동 간 상호작용의 복잡도를 지수적으로 증가시키며, 통신 부하(communication overhead), 연산 부하(computational overhead), 관리 복잡도(management complexity)의 급증을 야기한다. 따라서 행동 제어 시스템의 설계 초기 단계부터 확장성을 체계적으로 고려하는 것이 필수적이다.

2. 확장성의 차원

2.1 행동 복잡도의 확장

행동 복잡도의 확장(behavioral complexity scaling)은 행동 제어 시스템이 관리하는 행동의 수와 행동 간 상호의존성의 증가에 관한 것이다.

유한 상태 머신(FSM) 기반 행동 제어에서는 상태(state)의 수가 n개일 때, 가능한 전이(transition)의 수가 최대 n^2에 비례하여 증가한다. 이른바 상태 폭발(state explosion) 문제는 행동의 수가 증가함에 따라 상태 전이 테이블의 관리가 극히 곤란해지는 현상이다(Harel, 1987). 이 문제를 완화하기 위해 계층적 상태 머신(hierarchical state machine, HSM)을 도입하여, 관련 상태를 상위 수준의 복합 상태(composite state)로 그룹화하고, 각 계층 내에서의 전이만을 관리한다.

행동 트리(behavior tree) 기반 시스템에서는 트리의 깊이(depth)와 너비(breadth)의 증가가 확장성에 영향을 미친다. 트리의 깊이가 증가하면 행동 선택의 탐색 시간이 증가하고, 너비가 증가하면 동일 계층에서의 평가 시간이 증가한다. 그러나 행동 트리는 모듈성(modularity)과 합성성(composability)이 우수하여, 하위 트리(subtree)를 독립적으로 개발·테스트·재사용할 수 있으므로, FSM에 비해 행동 복잡도 확장에 유리하다(Colledanchise and Ögren, 2018).

2.2 연산 자원의 확장

행동 제어 로직의 연산 부하가 단일 프로세서의 처리 능력을 초과하는 경우, 연산 자원의 확장이 필요하다.

수직 확장(vertical scaling): 단일 컴퓨팅 노드의 프로세서 코어 수, 클럭 속도, 메모리 용량을 증가시키는 방법이다. ROS2의 멀티스레드 실행자(multi-threaded executor)를 활용하면 복수의 콜백을 병렬로 실행하여 다중 코어를 활용할 수 있다. 그러나 수직 확장은 물리적 한계와 비용의 제약이 있다.

수평 확장(horizontal scaling): 행동 제어 로직을 복수의 컴퓨팅 노드에 분산 배치하는 방법이다. ROS2의 분산 아키텍처는 DDS(Data Distribution Service) 미들웨어를 통해 네트워크상의 복수 노드가 투명하게(transparently) 통신할 수 있으므로, 행동 제어 노드를 물리적으로 분리된 컴퓨팅 장치에 배포하는 수평 확장이 가능하다. 그러나 분산 배치에 따른 네트워크 지연(network latency)과 동기화 문제를 고려하여야 한다.

2.3 통신 부하의 확장

행동의 수가 증가하면, 행동 간 데이터 교환, 상태 공유, 동기화 신호의 전송량이 증가하여 통신 인프라에 부하가 가중된다.

ROS2에서는 토픽(topic)의 수와 메시지 발행 빈도(frequency)가 증가함에 따라 DDS 미들웨어의 발견(discovery) 프로토콜, 메시지 직렬화·역직렬화, 네트워크 대역폭 소비가 증가한다. 대규모 시스템에서 DDS 발견 프로토콜의 오버헤드를 줄이기 위해, 발견 서버(discovery server) 모드를 사용하거나, 도메인 참여자(domain participant)의 수를 최소화하는 전략을 적용한다.

Zenoh 프로토콜은 DDS 대비 경량의 발견 및 라우팅 메커니즘을 제공하며, 대역폭이 제한된 환경에서의 대규모 토픽 통신에 유리한 특성을 갖는다.

2.4 다중 로봇 환경으로의 확장

단일 로봇의 행동 제어 시스템을 다중 로봇(multi-robot) 환경으로 확장하면, 로봇 간 행동 조율(coordination), 충돌 회피(conflict resolution), 자원 공유(resource sharing), 통신 토폴로지 관리 등의 추가적 과제가 발생한다.

다중 로봇 환경에서는 각 로봇의 행동 제어 시스템이 독립적으로 동작하면서도, 공유 목표(shared goal)의 달성을 위해 협력적 행동(cooperative behavior)을 수행하여야 한다. 이를 위해 ROS2의 네임스페이스(namespace) 분리를 활용하여 각 로봇의 토픽·서비스·액션을 구분하고, 공유 정보는 공통 네임스페이스를 통해 교환하는 아키텍처 패턴이 일반적이다.

3. 확장성을 위한 설계 원칙

3.1 모듈화와 합성성

행동 제어 시스템의 확장성을 확보하기 위한 핵심 설계 원칙은 모듈화(modularization)이다. 개별 행동을 독립적인 모듈(module)로 캡슐화하고, 명확하게 정의된 인터페이스(interface)를 통해서만 상호작용하도록 설계하면, 새로운 행동의 추가가 기존 행동에 미치는 영향을 최소화할 수 있다.

합성성(composability)은 기존의 행동 모듈을 조합하여 상위 수준의 복합 행동을 구성하는 능력이다. 행동 트리는 이 원칙을 구조적으로 보장하는 프레임워크이다. 하위 트리를 재사용 가능한 컴포넌트로 제작하고, 상위 트리에서 이를 참조함으로써 행동 라이브러리(behavior library)를 점진적으로 확장한다.

3.2 계층적 추상화

계층적 추상화(hierarchical abstraction)는 행동 제어 시스템을 복수의 추상화 계층(abstraction layer)으로 분리하여, 각 계층이 하위 계층의 세부 구현을 은닉(encapsulate)하는 설계 원칙이다.

전형적인 3계층 구조는 다음과 같다.

  • 전략 계층(strategic layer): 임무 목표의 설정과 전체 임무 흐름의 관리를 담당한다.
  • 전술 계층(tactical layer): 전략 계층의 지시를 받아 구체적 행동 시퀀스를 결정하고 행동 전이를 관리한다.
  • 실행 계층(execution layer): 개별 행동의 저수준 제어 명령 생성과 센서-액추에이터 인터페이스를 담당한다.

각 계층은 독립적으로 확장 가능하며, 특정 계층의 변경이 타 계층에 미치는 영향이 최소화된다.

3.3 느슨한 결합

느슨한 결합(loose coupling)은 행동 모듈 간 의존성(dependency)을 최소화하여, 개별 모듈의 추가·제거·수정이 다른 모듈에 미치는 영향을 줄이는 설계 원칙이다(Gamma et al., 1994). ROS2의 발행-구독(publish-subscribe) 통신 패턴은 발행자와 구독자 간에 직접적 의존성이 없어, 행동 모듈 간의 느슨한 결합을 구조적으로 지원한다.

행동 트리에서의 블랙보드(blackboard) 패턴도 느슨한 결합을 촉진한다. 행동 노드 간에 데이터를 직접 전달하는 대신, 공유 블랙보드에 데이터를 기록하고 필요한 노드가 이를 참조하는 간접적 데이터 교환 방식을 사용함으로써, 행동 노드 간의 직접적 의존성을 제거한다.

3.4 설정의 외부화

행동 제어의 매개변수(parameter), 행동 전이 규칙, 임계값(threshold), 타이밍 설정 등을 코드에 하드코딩(hard-coding)하지 않고, 외부 설정 파일(YAML, XML 등)이나 ROS2 파라미터 서버에 분리하여 관리하는 것이 확장성에 유리하다. 이를 통해 코드의 재컴파일 없이 행동 제어 시스템의 구성을 변경할 수 있으며, 동일한 행동 제어 코드를 다양한 로봇 플랫폼과 임무 환경에 재사용할 수 있다.

BehaviorTree.CPP에서는 행동 트리의 구조를 XML 파일로 정의하고 런타임에 로드하며, 트리의 구조 변경이 코드 수정 없이 가능하다. 이 접근법은 행동 제어 로직의 확장과 수정을 현저히 용이하게 한다.

4. ROS2에서의 확장성 지원 메커니즘

4.1 컴포넌트 기반 아키텍처

ROS2의 컴포넌트(component) 아키텍처는 복수의 노드를 단일 프로세스 내에서 실행함으로써, 노드 간 통신의 직렬화·역직렬화 오버헤드를 제거하고 프로세스 간 통신(IPC)의 부하를 감소시킨다. 행동 제어 시스템의 노드 수가 증가할 때, 관련 노드를 동일 프로세스의 컴포넌트로 구성하면 통신 성능의 저하를 완화할 수 있다.

4.2 Launch 시스템

ROS2의 launch 시스템은 복수의 노드를 선언적(declarative) 방식으로 구성하고 기동하는 인프라를 제공한다. launch 파일에서 조건부 기동(conditional launch), 파라미터 전달, 네임스페이스 설정, 노드 그룹화 등을 정의하여, 대규모 행동 제어 시스템의 배포와 관리를 자동화할 수 있다. 다중 로봇 환경에서는 로봇별 launch 파일을 파라미터화하여 동일 구조의 행동 제어 시스템을 복수의 로봇에 일괄 배포한다.

4.3 생명주기 관리

ROS2 관리형 노드(managed node)의 생명주기(lifecycle) 관리를 활용하면, 행동 제어 노드의 구성(configure), 활성화(activate), 비활성화(deactivate), 정리(cleanup)를 프로그래밍 방식으로 제어할 수 있다. 이를 통해 시스템 규모의 동적 변화(노드의 동적 추가·제거)에 대응하는 유연한 행동 제어 시스템을 구축할 수 있다.

5. 확장성 평가

행동 제어 시스템의 확장성을 정량적으로 평가하기 위해, 다음의 지표(metric)를 활용한다.

지표정의
행동 틱 지연(tick latency)행동 트리 또는 상태 머신의 단일 주기(tick) 실행에 소요되는 시간
메시지 전달 지연(message delivery latency)메시지 발행 시점부터 구독자에게 도달하는 시점까지의 지연 시간
콜백 실행 시간(callback execution time)개별 콜백 함수의 실행에 소요되는 시간
CPU 사용률(CPU utilization)행동 제어 관련 프로세스의 CPU 자원 점유율
메모리 사용량(memory usage)행동 제어 관련 프로세스의 메모리 자원 점유량
발견 시간(discovery time)새로운 노드가 시스템에 참여하여 통신이 수립되기까지의 시간

이 지표들을 행동의 수, 노드의 수, 로봇의 수를 점진적으로 증가시키면서 측정하여, 확장성 병목(scalability bottleneck)을 식별하고 개선의 우선순위를 결정한다. ros2_tracing(Bédard et al., 2022)은 이러한 지표를 나노초 해상도로 수집하는 데 활용될 수 있다.


참고 문헌

  • Bédard, C., Lütkebohle, I., & Dagenais, M. (2022). “ros2_tracing: Multipurpose Low-Overhead Framework for Real-Time Tracing of ROS 2.” IEEE Robotics and Automation Letters, 7(3), 6511–6518.
  • Bondi, A. B. (2000). “Characteristics of Scalability and Their Impact on Performance.” Proceedings of the 2nd International Workshop on Software and Performance (WOSP ’00), 195–203.
  • Colledanchise, M. & Ögren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
  • Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.
  • Harel, D. (1987). “Statecharts: A Visual Formalism for Complex Systems.” Science of Computer Programming, 8(3), 231–274.
  • Macenski, S., Foote, T., Gerkey, B., Lalancette, C., & Woodall, W. (2022). “Robot Operating System 2: Design, Architecture, and Uses in the Wild.” Science Robotics, 7(66), eabm6074.

v0.2.0