1295.1 Parallel 노드의 개념과 정의
1. Parallel 노드의 형식적 정의
Parallel 노드는 행동 트리(Behavior Tree)를 구성하는 제어 노드(Control Node)의 한 유형으로, 복수의 자식 노드에 동일한 틱(tick) 주기 내에서 실행 기회를 부여하는 노드이다. 행동 트리의 표준 형식론에서 Parallel 노드는 기호 \parallel로 표기하며, N개의 자식 노드 C_1, C_2, \ldots, C_N을 포함하는 비단말 노드(non-terminal node)로 정의된다(Colledanchise & Ögren, 2018).
Parallel 노드의 핵심 정의는 다음과 같다. 매 틱이 도달하면, Parallel 노드는 자신의 모든 자식 노드 C_1부터 C_N까지 순서대로 틱을 전달하고, 각 자식이 반환하는 상태(SUCCESS, FAILURE, RUNNING)를 수집한 뒤, 사전에 설정된 성공 정책(success policy)과 실패 정책(failure policy)에 따라 자신의 최종 상태를 결정한다.
2. 행동 트리 제어 노드 체계에서의 위치
행동 트리의 제어 노드는 크게 네 가지 유형으로 분류된다.
| 제어 노드 | 기호 | 자식 틱 전파 방식 | 의미론 |
|---|---|---|---|
| Sequence | \rightarrow | 순차적, 실패 시 중단 | 논리적 AND |
| Fallback (Selector) | ? | 순차적, 성공 시 중단 | 논리적 OR |
| Parallel | \parallel | 모든 자식에 틱 전달 | 동시적 실행 |
| Decorator | \delta | 단일 자식에 틱 전달 | 상태 변환 |
Sequence 노드와 Fallback 노드가 자식을 순차적으로 평가하며 특정 상태에서 조기 종료하는 단락 평가(short-circuit evaluation) 방식을 취하는 것과 달리, Parallel 노드는 원칙적으로 모든 자식 노드에 틱을 전달한다. 이로 인해 Parallel 노드는 복수의 행동을 논리적으로 동시에 진행시킬 수 있는 유일한 표준 제어 노드이다.
3. 논리적 동시성의 정의
Parallel 노드에서 사용하는 “병렬(parallel)“이라는 용어는 운영체제 수준의 멀티스레드 병렬 실행(physical concurrency)을 의미하는 것이 아니다. 행동 트리는 일반적으로 단일 스레드에서 실행되며, Parallel 노드의 자식들은 동일 틱 주기 내에서 C_1, C_2, \ldots, C_N 순서로 순차적으로 틱을 수신한다. 이때 각 자식이 독립적으로 자신의 상태를 반환하고, 모든 자식의 결과가 종합적으로 평가된다는 점에서 이를 논리적 동시성(logical concurrency)이라 지칭한다(Colledanchise & Ögren, 2018).
논리적 동시성은 다음 두 가지 특성을 만족한다.
- 동시 진행(simultaneous progress): 매 틱마다 모든 자식 노드가 실행 기회를 가지므로, 복수의 행동이 동시에 진행 상태를 유지할 수 있다.
- 독립적 상태 반환(independent status return): 각 자식 노드는 다른 자식의 상태와 무관하게 자신의 상태를 결정하여 반환한다.
이러한 논리적 동시성 모델은 실시간 로봇 시스템에서 행동 트리의 결정론적(deterministic) 실행을 보장하면서도, 동시적 행동 패턴을 표현할 수 있도록 설계된 것이다.
4. Parallel 노드의 수학적 표현
Parallel 노드를 수학적으로 정의하면 다음과 같다. 성공 임계값(success threshold) M이 주어진 Parallel 노드 P는 N개의 자식 노드 집합 \{C_1, C_2, \ldots, C_N\}에 대해 다음의 상태 결정 함수를 따른다.
\text{status}(P) = \begin{cases} \text{SUCCESS} & \text{if } \lvert \{i : \text{status}(C_i) = \text{SUCCESS}\} \rvert \geq M \\ \text{FAILURE} & \text{if } \lvert \{i : \text{status}(C_i) = \text{FAILURE}\} \rvert > N - M \\ \text{RUNNING} & \text{otherwise} \end{cases}
여기서 \lvert \cdot \rvert은 집합의 원소 수(cardinality)를 나타낸다. 실패 조건은 성공에 필요한 최소 개수 M에 도달하는 것이 구조적으로 불가능해지는 시점에 판정된다. 즉, 실패한 자식의 수가 N - M을 초과하면, 나머지 자식이 모두 성공하더라도 임계값 M에 도달할 수 없으므로 FAILURE를 반환한다.
5. Parallel 노드의 필요성
로봇 시스템에서 Parallel 노드가 필수적인 이유는 실제 로봇 행동이 본질적으로 동시적 성격을 갖기 때문이다. 다음은 Parallel 노드를 요구하는 전형적인 시나리오이다.
- 이동과 감시의 동시 수행: 모바일 로봇이 목표 지점을 향해 자율 주행하면서 동시에 주변 환경을 감시해야 하는 경우, 두 행동이 매 틱마다 동시에 갱신되어야 한다.
- 행동과 안전 모니터링의 병행: 매니퓰레이터가 물체를 파지(grasping)하면서 동시에 힘·토크 센서를 통해 과부하를 감시해야 하는 경우, 주 행동과 감시 행동이 병렬로 실행되어야 한다.
- 다중 센서 데이터의 동시 수집: 복수의 센서에서 데이터를 동시에 수집하여 모든 데이터가 가용한 상태에서 다음 처리 단계로 진행해야 하는 경우, 각 센서 수집 행동을 Parallel 노드의 자식으로 배치한다.
Sequence나 Fallback 노드만으로는 이러한 동시적 행동 패턴을 표현할 수 없다. Sequence 노드는 첫 번째 자식이 SUCCESS를 반환할 때까지 두 번째 자식에 틱을 전달하지 않으며, Fallback 노드는 첫 번째 자식이 FAILURE를 반환할 때까지 두 번째 자식에 틱을 전달하지 않는다. 따라서 동시적 행동 패턴의 표현에는 Parallel 노드가 필수적이다.
6. 참고 문헌
- Colledanchise, M., & Ögren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
- Colledanchise, M., & Ögren, P. (2017). “How Behavior Trees Modularize Hybrid Control Systems and Generalize Sequential Behavior Compositions, the Subsumption Architecture, and Decision Trees.” IEEE Transactions on Robotics, 33(2), 372–389.
- Faconti, D., & contributors. (2024). BehaviorTree.CPP Documentation. https://www.behaviortree.dev/
Version: 1.0-2026.04.03