Volume 19. ROS2 로봇 행동 제어와 임무 계획 (Robot Behavior Control and Mission Planning with ROS2)
1. 개관
로봇 시스템이 복잡한 실세계 환경에서 자율적으로 임무를 수행하기 위해서는 단순한 반응적 제어(reactive control)를 넘어서는 구조화된 행동 제어(behavior control)와 체계적인 임무 계획(mission planning) 기법이 필수적이다. 본 Volume에서는 ROS2(Robot Operating System 2) 프레임워크를 기반으로 로봇의 행동을 설계, 조합, 실행하며, 상위 수준의 임무를 계획하고 관리하는 이론적 기반과 실제적 구현 방법론을 포괄적으로 다룬다.
로봇 행동 제어는 로봇이 주어진 환경 조건과 내부 상태에 따라 적절한 행동을 선택하고 전이(transition)하는 메커니즘을 의미한다. 이는 유한 상태 기계(Finite State Machine, FSM), 계층적 유한 상태 기계(Hierarchical Finite State Machine, HFSM), 행동 트리(Behavior Tree, BT) 등의 형식적 모델을 통해 구현된다. 특히 행동 트리는 모듈성(modularity), 재사용성(reusability), 반응성(reactivity)의 측면에서 기존의 유한 상태 기계 기반 접근법에 비해 현저한 이점을 제공하며, 현대의 로봇 소프트웨어 아키텍처에서 사실상의 표준(de facto standard)으로 자리잡고 있다.
2. 이론적 기반
2.1 행동 기반 로봇공학
행동 기반 로봇공학(Behavior-Based Robotics)은 Brooks(1986)의 포섭 구조(Subsumption Architecture)에서 기원하며, 전통적인 감지-모델링-계획-실행(Sense-Model-Plan-Act, SMPA) 패러다임에 대한 대안으로 제시되었다. 이 접근법에서는 복수의 행동 모듈이 병렬적으로 작동하며, 환경 자극에 대한 즉각적인 반응을 통해 전체적인 지능적 행동이 창발(emergence)한다. 현대적 행동 제어 체계는 이러한 반응적 행동과 심의적 계획(deliberative planning)을 결합한 하이브리드 아키텍처(hybrid architecture)를 채택하는 추세에 있다.
2.2 유한 상태 기계와 상태 차트
유한 상태 기계(FSM)는 로봇 행동 제어에서 가장 고전적인 형식적 모델이다.
- 상태(state)의 유한 집합 S,
- 입력 알파벳 \Sigma,
- 전이 함수 \delta: S \times \Sigma \rightarrow S,
- 초기 상태 s_0,
- 수용 상태 집합 F
로 정의되는 5-튜플 (S, \Sigma, \delta, s_0, F)로 형식화된다. 그러나 FSM은 상태 수가 증가함에 따라 상태 폭발(state explosion) 문제가 발생하며, 이를 완화하기 위해 Harel(1987)이 제안한 상태 차트(Statecharts)가 계층적 상태 구조와 병행 상태(concurrent states)를 도입하였다.
ROS2 환경에서는 SMACH(State Machine for Advanced Control with Heuristics)와 같은 라이브러리가 파이썬 기반의 계층적 유한 상태 기계 구현을 지원한다.
2.3 행동 트리
행동 트리(Behavior Tree)는 게임 인공지능(game AI) 분야에서 유래하여 로봇공학에 도입된 행동 전환 구조이다. 방향성 비순환 그래프(Directed Acyclic Graph, DAG)의 형태를 취하며, 루트 노드에서 시작하여 주기적으로 틱(tick)을 전파함으로써 행동의 실행과 평가를 수행한다.
행동 트리의 기본 노드 유형은 다음과 같다:
- 순차 노드(Sequence Node): 자식 노드를 좌에서 우로 순차 실행하며, 모든 자식이 성공(SUCCESS)을 반환해야 자신도 성공을 반환한다.
- 선택 노드(Fallback/Selector Node): 자식 노드를 순차 실행하되, 하나의 자식이 성공하면 즉시 성공을 반환한다.
- 데코레이터 노드(Decorator Node): 단일 자식 노드의 반환값을 변환하거나 틱 전파를 제어한다.
- 조건 노드(Condition Node): 환경 또는 내부 상태를 검사하여 성공 또는 실패를 반환한다.
- 행동 노드(Action Node): 실제 로봇 행동을 실행하며, 실행 중(RUNNING), 성공(SUCCESS), 실패(FAILURE) 중 하나를 반환한다.
ROS2 생태계에서는 BehaviorTree.CPP 라이브러리가 Nav2(Navigation 2) 스택의 핵심 구성 요소로 통합되어 있으며, 행동 트리의 XML 기반 정의와 동적 로딩을 지원한다.
3. 임무 계획
3.1 고전적 계획과 PDDL
임무 계획(mission planning)은 로봇이 주어진 초기 상태에서 목표 상태에 도달하기 위한 행동의 순서를 자동으로 생성하는 과정이다. 고전적 인공지능 계획(classical AI planning)에서는 STRIPS(Stanford Research Institute Problem Solver) 형식화와 그 확장인 PDDL(Planning Domain Definition Language)이 표준적으로 사용된다.
PDDL은 도메인(domain)과 문제(problem)를 분리하여 기술하며, 도메인 파일은 술어(predicate), 행동(action), 전제 조건(precondition), 효과(effect)를 정의하고, 문제 파일은 초기 상태와 목표 상태를 명세한다. PDDL 2.1 이후로는 수치적 유동량(numeric fluent), 시간적 제약(temporal constraint), 연속적 변화(continuous change) 등의 확장이 도입되어 로봇 임무 계획의 표현력이 크게 향상되었다.
3.2 시간적 계획과 계층적 작업 네트워크
시간적 계획(temporal planning)은 행동의 지속 시간과 시간적 제약을 고려한 계획 기법이며, PDDL 2.1의 지속적 행동(durative action)을 통해 형식화된다. 계층적 작업 네트워크(Hierarchical Task Network, HTN)는 복합 작업(compound task)을 하위 작업(subtask)으로 재귀적으로 분해(decomposition)하는 구조를 제공한다. HTN 계획기는 도메인 전문가의 지식을 분해 방법(method)의 형태로 인코딩하여 탐색 공간을 효과적으로 축소한다.
3.3 ROS2에서의 임무 실행
ROS2에서는 Nav2의 NavigateToPose, ComputePathToPose 등의 행동 서버(action server)가 행동 트리의 리프 노드와 연동되어 임무를 실행한다. PlanSys2(Planning System 2)는 PDDL 기반의 자동 계획과 ROS2 행동 서버를 연결하는 프레임워크로, 도메인 정의에 따른 자동 계획 생성과 실행을 지원한다.
4. ROS2 통합 아키텍처
4.1 생명 주기 노드와 행동 관리
ROS2의 관리형 생명 주기 노드(Managed Lifecycle Node)는 Unconfigured, Inactive, Active, Finalized의 상태 전이를 통해 노드의 초기화, 활성화, 비활성화, 종료를 체계적으로 관리한다. 행동 제어 시스템은 이러한 생명 주기 관리를 활용하여 행동 모듈의 동적 활성화와 자원 관리를 수행한다.
4.2 행동 서버와 클라이언트
ROS2의 행동(action) 인터페이스는 서비스(service)와 토픽(topic)의 조합으로 구현되며, 목표(goal) 전송, 피드백(feedback) 수신, 결과(result) 획득, 취소(cancel) 요청의 프로토콜을 제공한다. 행동 트리의 행동 노드는 통상적으로 ROS2 행동 클라이언트로 구현되어, 해당 행동 서버와 비동기적으로 통신한다.
4.3 블랙보드 패턴
블랙보드(Blackboard) 패턴은 행동 트리의 노드 간 데이터 공유를 위한 중앙 집중식 저장소이다. 키-값(key-value) 쌍으로 데이터를 관리하며, 조건 노드와 행동 노드 사이의 정보 전달, 센서 데이터의 공유, 계획 결과의 전파 등에 활용된다. BehaviorTree.CPP에서는 포트(port) 시스템을 통해 노드의 입출력을 블랙보드에 매핑한다.
5. 본 Volume의 구성
본 Volume은 행동 제어와 임무 계획의 이론적 기초로부터 시작하여, ROS2 환경에서의 실질적 구현에 이르기까지 체계적으로 서술한다. 유한 상태 기계, 행동 트리, PDDL 기반 계획, HTN 분해 등의 형식적 기법을 상세히 다루며, Nav2, BehaviorTree.CPP, PlanSys2 등 ROS2 생태계의 핵심 도구와의 연동 방법을 구체적으로 제시한다. 아울러 다중 로봇 임무 할당(Multi-Robot Task Allocation, MRTA), 실시간 재계획(replanning), 이상 상황 복구(fault recovery) 등의 고급 주제를 포함함으로써, 복잡한 실세계 임무 시나리오에 대한 포괄적인 이해를 제공하고자 한다.
참고 문헌
- Brooks, R. A. (1986). “A Robust Layered Control System for a Mobile Robot.” IEEE Journal on Robotics and Automation, 2(1), 14–23.
- Harel, D. (1987). “Statecharts: A Visual Formalism for Complex Systems.” Science of Computer Programming, 8(3), 231–274.
- Colledanchise, M., & Ögren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
- Ghallab, M., Nau, D., & Traverso, P. (2004). Automated Planning: Theory and Practice. Morgan Kaufmann.
- Macenski, S., et al. (2020). “The Marathon 2: A Navigation System.” arXiv preprint arXiv:2003.00368.
- Fox, M., & Long, D. (2003). “PDDL2.1: An Extension to PDDL for Expressing Temporal Planning Domains.” Journal of Artificial Intelligence Research, 20, 61–124.