1295.26 Parallel 노드의 로봇공학 적용 패턴
1. 로봇공학에서 동시 실행의 필요성
로봇 시스템은 본질적으로 다수의 행동을 동시에 수행해야 하는 특성을 지닌다. 이동 로봇은 목표 지점으로 주행하면서 동시에 주변 환경을 감시하여야 하고, 매니퓰레이터는 물체를 파지하면서 동시에 접촉력을 모니터링하여야 한다. 드론은 비행 경로를 추종하면서 동시에 카메라 촬영을 수행하여야 한다. 이러한 동시 실행 요구를 행동 트리 내에서 체계적으로 표현하는 핵심 구조가 Parallel 노드이다.
Parallel 노드는 모든 자식 노드에 매 Tick마다 실행 기회를 부여하므로, 로봇의 다중 행동을 단일 행동 트리 내에서 논리적으로 병렬화할 수 있다. 이는 전통적인 Sequence 노드나 Fallback 노드로는 달성할 수 없는 실행 모델이며, 로봇공학의 실시간 동시 행동 제어 요구에 직접적으로 부합한다.
2. 적용 패턴의 분류 체계
Parallel 노드의 로봇공학 적용 패턴은 자식 노드의 역할과 상호 관계에 따라 다음과 같이 분류할 수 있다.
2.1 행동-감시 패턴 (Action-Monitor Pattern)
행동-감시 패턴은 Parallel 노드의 가장 대표적인 적용 형태이다. 하나 이상의 자식이 주 행동(primary action)을 수행하고, 나머지 자식이 해당 행동의 실행 중 특정 조건을 지속적으로 감시(monitoring)하는 구조이다. 주 행동이 진행되는 동안 감시 노드가 매 Tick마다 조건을 점검하므로, 이상 상태를 신속하게 감지할 수 있다.
이 패턴의 일반적 구조는 다음과 같다.
Parallel (success_policy: SUCCESS_ALL, failure_policy: FAILURE_ONE)
├── PrimaryAction → 주 행동 실행
└── MonitorCondition → 조건 감시
FAILURE_ONE 정책을 적용하면, 감시 노드가 이상 조건을 감지하여 FAILURE를 반환하는 즉시 Parallel 노드 전체가 실패로 종료되고 주 행동이 Halt된다. 이를 통해 안전 위반이나 비정상 상태에 대한 즉각적인 대응이 가능하다.
2.2 동시 행동 패턴 (Concurrent Action Pattern)
동시 행동 패턴은 독립적인 두 개 이상의 행동을 동시에 수행하는 구조이다. 각 행동은 서로 다른 로봇 하위 시스템(subsystem)을 제어하며, 논리적으로 독립적이다. 이 패턴은 로봇의 자원 활용 효율을 극대화하고 임무 수행 시간을 단축하는 데 기여한다.
Parallel (success_policy: SUCCESS_ALL)
├── ActionA → 하위 시스템 A 제어
└── ActionB → 하위 시스템 B 제어
SUCCESS_ALL 정책에서는 모든 행동이 완료되어야 Parallel 노드가 성공으로 종료된다. 이는 다수의 독립 행동이 모두 완료된 후에 다음 단계로 진행해야 하는 임무 시나리오에 적합하다.
2.3 안전 감시 패턴 (Safety Monitor Pattern)
안전 감시 패턴은 행동-감시 패턴의 특수화된 형태로, 안전 필수 시스템(safety-critical system)에서 주 행동의 실행 중 안전 조건의 지속적 충족을 보장하기 위해 사용된다. 안전 감시 노드는 로봇의 물리적 안전과 직결되는 조건(충돌 위험, 관절 한계 초과, 온도 이상 등)을 점검하며, 위반 시 즉각적인 행동 중단을 유발한다.
Parallel (success_policy: SUCCESS_ALL, failure_policy: FAILURE_ONE)
├── ExecuteMission → 임무 실행
├── CheckCollisionRisk → 충돌 위험 감시
├── CheckJointLimits → 관절 한계 감시
└── CheckTemperature → 온도 이상 감시
이 구조에서 어떤 안전 감시 노드든 하나라도 FAILURE를 반환하면, FAILURE_ONE 정책에 의해 전체 Parallel 노드가 즉시 실패로 종료되고 모든 자식에 Halt가 전파된다.
2.4 다중 센서 처리 패턴 (Multi-Sensor Processing Pattern)
다중 센서 처리 패턴은 로봇에 장착된 복수의 센서로부터 데이터를 동시에 획득하고 처리하는 구조이다. 각 자식 노드는 특정 센서의 데이터 수집 및 전처리를 담당하며, 결과를 블랙보드의 개별 키에 기록한다.
Parallel (success_policy: SUCCESS_ALL)
├── ProcessLidar → writes "lidar_data"
├── ProcessCamera → writes "camera_data"
└── ProcessIMU → writes "imu_data"
이 패턴에서는 각 센서 처리 노드가 고유한 블랙보드 키에 기록하므로 쓰기 충돌이 발생하지 않는다. 모든 센서 데이터가 갱신된 후 후속 노드에서 센서 융합(sensor fusion)을 수행할 수 있다.
2.5 행동-타임아웃 패턴 (Action-Timeout Pattern)
행동-타임아웃 패턴은 주 행동의 실행 시간에 상한(upper bound)을 설정하여, 지정된 시간 내에 완료되지 않는 행동을 강제로 종료하는 구조이다. 타임아웃 노드는 경과 시간을 추적하며, 제한 시간 초과 시 FAILURE를 반환한다.
Parallel (success_policy: SUCCESS_ONE, failure_policy: FAILURE_ONE)
├── LongRunningAction → 장시간 소요 행동
└── Timeout(30s) → 30초 경과 시 FAILURE 반환
SUCCESS_ONE 정책을 적용하면, 주 행동이 타임아웃 이전에 완료되는 즉시 Parallel 노드가 성공으로 종료된다. 반면 타임아웃 노드가 먼저 FAILURE를 반환하면, FAILURE_ONE 정책에 의해 전체가 실패로 종료되고 주 행동이 Halt된다.
3. 적용 패턴 선택 기준
적절한 Parallel 노드 적용 패턴의 선택은 다음 기준에 의해 결정된다.
| 기준 | 고려 사항 |
|---|---|
| 자식 간 독립성 | 자식 노드들이 서로 다른 하위 시스템을 제어하는가 |
| 안전 요구 수준 | 안전 위반 시 즉각적 행동 중단이 필요한가 |
| 완료 조건 | 모든 행동의 완료가 필요한가, 하나의 완료로 충분한가 |
| 시간 제약 | 행동의 실행 시간에 상한이 존재하는가 |
| 데이터 의존성 | 자식 간 블랙보드 데이터 공유가 필요한가 |
4. 성공/실패 정책과 적용 패턴의 대응
적용 패턴에 따라 적합한 성공 정책과 실패 정책이 결정된다.
| 적용 패턴 | 성공 정책 | 실패 정책 | 근거 |
|---|---|---|---|
| 행동-감시 | SUCCESS_ALL | FAILURE_ONE | 감시 실패 시 즉각 중단 |
| 동시 행동 | SUCCESS_ALL | FAILURE_ONE 또는 FAILURE_ALL | 임무 요구에 따라 결정 |
| 안전 감시 | SUCCESS_ALL | FAILURE_ONE | 안전 위반 시 즉각 중단 필수 |
| 다중 센서 처리 | SUCCESS_ALL | FAILURE_ONE | 센서 장애 시 데이터 무결성 보장 |
| 행동-타임아웃 | SUCCESS_ONE | FAILURE_ONE | 행동 완료 또는 타임아웃 중 먼저 발생한 것 적용 |
5. 패턴 적용 시 설계 원칙
Parallel 노드의 로봇공학 적용 시 다음 설계 원칙을 준수하여야 한다.
-
자식 수 최소화 원칙: Parallel 노드의 자식 수는 필요한 최소한으로 제한하라. 자식 수가 증가할수록 단일 Tick 내 순차 실행 시간이 증가하여 실시간 성능에 영향을 미친다.
-
역할 명확성 원칙: 각 자식 노드의 역할(주 행동, 감시, 센서 처리 등)을 명확히 정의하고, 하나의 자식이 복수의 역할을 겸하지 않도록 설계하라.
-
블랙보드 격리 원칙: 자식 간 블랙보드 쓰기 키가 중복되지 않도록 네임스페이스를 분리하라.
-
실패 정책 우선 결정 원칙: 안전 관련 패턴에서는 반드시
FAILURE_ONE정책을 적용하여, 단 하나의 안전 위반도 즉각적인 행동 중단을 유발하도록 설계하라. -
Halt 처리 보장 원칙: 모든 자식 액션 노드는 Halt 호출 시 안전하게 동작을 중단하고 자원을 해제할 수 있도록 구현하여야 한다. Parallel 노드의 조기 종료 메커니즘에 의해 Halt가 빈번하게 호출될 수 있으므로, 이에 대한 견고한 처리가 필수적이다.