1295.70 복합 반응형 행동 트리 설계 패턴

1295.70 복합 반응형 행동 트리 설계 패턴

1. 복합 반응형 행동 트리의 개념

복합 반응형 행동 트리(Composite Reactive Behavior Tree)는 Parallel, ReactiveSequence, ReactiveFallback을 다층으로 조합하여, 안전 보장, 상황 적응, 동시 행동, 조건부 실행을 하나의 통합된 트리 구조에서 실현하는 설계 패턴이다. 실제 로봇 시스템에서는 단일 제어 노드로 표현할 수 없는 복합적인 행동 요구 사항이 존재하며, 이를 체계적으로 설계하기 위한 구조적 패턴이 필요하다.

2. 계층적 반응형 아키텍처

복합 반응형 행동 트리는 일반적으로 다음의 계층으로 구성된다.

계층노드역할
제1층: 안전 보장ReactiveSequence하드웨어/시스템 안전 조건의 지속적 보장
제2층: 우선순위 선택ReactiveFallback상황에 따른 행동 분기 선택
제3층: 조건부 실행ReactiveSequence개별 행동의 전제 조건 보장
제4층: 동시 행동Parallel복수 행동의 동시 수행
제5층: 순차 실행Sequence/Fallback단계별 행동의 순차 수행

3. 완전한 복합 반응형 트리 예시

자율 이동 로봇의 복합 반응형 행동 트리를 설계한다.

ReactiveSequence [제1층: 안전 보장]
├── IsHardwareSafe
├── IsEStopInactive
└── ReactiveFallback [제2층: 상황별 행동 선택]
    ├── Sequence [비상 대응]
    │   ├── IsEmergencyDetected
    │   └── EmergencyStop
    ├── Sequence [배터리 귀환]
    │   ├── IsBatteryLow
    │   └── ReturnToChargingStation
    ├── ReactiveSequence [제3층: 조건부 임무 수행]
    │   ├── IsLocalized
    │   ├── IsPathValid
    │   └── Parallel [제4층: 동시 행동] (SUCCESS_ALL)
    │       ├── FollowPlannedPath
    │       ├── UpdateMap
    │       └── MonitorEnvironment
    └── Sequence [기본: 위치 추정 복구]
        ├── RotateInPlace
        └── AttemptRelocalization

이 트리의 동작을 계층별로 분석한다.

제1층: IsHardwareSafeIsEStopInactive가 매 Tick에서 재평가된다. 하드웨어 이상이나 E-Stop 활성화 시 전체 트리가 즉시 중단된다.

제2층: 안전 조건이 충족된 상태에서, 비상 → 배터리 부족 → 임무 수행 → 위치 복구의 우선순위로 행동이 선택된다. 비상 상황 시 귀환 중이더라도 귀환이 Halt되고 비상 정지가 실행된다.

제3층: 임무 수행 분기에서, 위치 추정과 경로 유효성이 매 Tick에서 재평가된다. 위치 추정이 실패하면 Parallel 내의 모든 행동이 Halt되고, ReactiveFallback이 다음 분기(위치 추정 복구)로 진행한다.

제4층: 위치 추정과 경로가 모두 유효한 동안, 경로 추종, 지도 갱신, 환경 감시가 동시에 수행된다.

4. 상태 전이 시나리오

4.1 시나리오: 정상 임무 → 위치 상실 → 복구 → 배터리 부족 → 귀환

Tick t:   정상 임무 수행 (FollowPlannedPath + UpdateMap + MonitorEnvironment)
Tick t+k: IsLocalized → FAILURE
          → Parallel.halt() (세 행동 모두 중단)
          → ReactiveSequence[임무] → FAILURE
          → ReactiveFallback → Sequence[위치 복구] 선택
          → RotateInPlace 시작

Tick t+m: IsLocalized → SUCCESS (위치 복구 성공)
          → ReactiveSequence[임무] → RUNNING (임무 분기 재활성화)
          → RotateInPlace.halt()
          → Parallel 재시작

Tick t+n: IsBatteryLow → SUCCESS
          → ReactiveSequence[임무] Tick 미수신
          → Parallel.halt()
          → ReturnToChargingStation 시작

위치 상실 시 자동으로 위치 복구 행동으로 전환되고, 복구 성공 시 임무로 자동 복귀한다. 이후 배터리 부족이 감지되면 임무가 중단되고 귀환이 시작된다. 이 모든 전환이 ReactiveFallback의 매 Tick 재평가에 의해 자동으로 수행된다.

5. 드론 복합 반응형 트리

ReactiveSequence [안전 보장]
├── IsFlightControllerHealthy
├── IsStructuralIntegritySafe
└── ReactiveFallback [상황별 비행 모드]
    ├── Sequence [즉시 착륙]
    │   ├── IsMotorFailure
    │   └── ImmediateLanding
    ├── Sequence [긴급 귀환]
    │   ├── IsBatteryCritical
    │   └── EmergencyRTL
    ├── ReactiveSequence [조건부 임무 비행]
    │   ├── IsGPSAccurate
    │   ├── IsWindAcceptable
    │   ├── IsGeofenceValid
    │   └── Parallel (SUCCESS_ALL)
    │       ├── FlyMissionWaypoints
    │       ├── CaptureAerialImages
    │       └── TransmitTelemetry
    └── HoverInPlace

비행 제어기 이상이나 구조적 손상 시 전체 비행이 중단된다. 모터 장애 시 즉시 착륙, 배터리 위급 시 긴급 귀환이 선점된다. 정상 비행 시 GPS, 풍속, 지오펜스 조건 하에서 비행, 촬영, 통신이 동시에 수행된다. 어떤 비행 조건도 충족되지 않으면 현재 위치에서 호버링한다.

6. 설계 원칙

6.1 계층적 관심사 분리

각 계층은 하나의 관심사(concern)만을 담당한다. 안전 보장 계층은 안전만, 우선순위 선택 계층은 상황 판단만, 조건부 실행 계층은 전제 조건만, 동시 행동 계층은 행동 수행만을 담당한다. 이 분리에 의해 각 계층을 독립적으로 수정하고 검증할 수 있다.

6.2 안전의 최상위 배치

안전 관련 조건은 항상 트리의 최상위 계층에 배치한다. 이를 통해 어떤 하위 행동이 실행 중이든 안전 조건이 매 Tick에서 검사되고, 위반 시 전체 트리가 즉시 중단되는 것이 보장된다.

6.3 점진적 우아한 저하

상위 계층의 조건이 위반되면, 차순위 행동으로 자연스럽게 전환된다. 위치 추정 실패 시 임무에서 위치 복구로, 센서 장애 시 완전 자동에서 제한적 자동으로 점진적으로 기능이 저하(graceful degradation)된다.

6.4 서브트리를 통한 모듈화

복합 트리의 각 분기가 복잡해지면, 서브트리(subtree)로 분리하여 독립적으로 관리하고 재사용한다. 비상 대응 서브트리, 임무 수행 서브트리 등을 독립적인 XML 파일로 정의하고 주 트리에서 참조하는 방식이 BehaviorTree.CPP에서 지원된다.

7. 복합 트리의 검증

복합 반응형 행동 트리는 구조가 복잡하므로, 체계적인 검증이 필수적이다.

  1. 계층별 단위 테스트: 각 계층을 독립적으로 테스트하여, 해당 계층의 의미론이 올바르게 동작하는지를 확인한다.

  2. 전환 테스트: 우선순위 전환이 올바르게 발생하고, Halt가 정확한 대상에 전파되는지를 확인한다.

  3. 극한 시나리오 테스트: 복수의 조건이 동시에 변화하는 극한 시나리오에서 트리가 올바르게 동작하는지를 확인한다.

  4. Tick 시간 측정: 최악의 경우(모든 노드가 평가되는 경우)의 Tick 시간이 실시간 제약 조건 내에 있는지를 측정한다.