우선순위 조건 기반 행동 선택 패턴 (Priority-Based Behavior Selection via Conditions)
1. 개요
우선순위 조건 기반 행동 선택 패턴은 복수의 조건을 우선순위에 따라 평가하여, 가장 높은 우선순위의 조건이 충족된 행동을 실행하는 설계 패턴이다. 이 패턴은 Fallback(또는 ReactiveFallback) 내부에 조건-행동 쌍(Sequence)을 우선순위 순으로 배치하여 구현하며, 로봇의 상황 적응적(situationally adaptive) 행동을 실현하는 핵심 구조이다.
2. 패턴 구조
2.1 기본 구조
<Fallback>
<Sequence><!-- 우선순위 1 (최고) -->
<Condition ID="HighPriorityCondition"/>
<Action ID="HighPriorityAction"/>
</Sequence>
<Sequence><!-- 우선순위 2 -->
<Condition ID="MediumPriorityCondition"/>
<Action ID="MediumPriorityAction"/>
</Sequence>
<Sequence><!-- 우선순위 3 -->
<Condition ID="LowPriorityCondition"/>
<Action ID="LowPriorityAction"/>
</Sequence>
<Action ID="DefaultAction"/><!-- 기본 행동 (무조건 실행) -->
</Fallback>
Fallback은 첫 번째 자식부터 순차적으로 평가하며, SUCCESS를 반환하는 첫 번째 자식에서 멈춘다. 높은 우선순위의 조건이 충족되면 해당 행동이 선택되고, 모든 조건이 충족되지 않으면 기본 행동이 실행된다.
2.2 ReactiveFallback을 사용한 반응적 변형
<ReactiveFallback>
<Sequence>
<Condition ID="IsEmergency"/>
<Action ID="EmergencyAction"/>
</Sequence>
<Sequence>
<Condition ID="IsObstacleDetected"/>
<Action ID="AvoidAction"/>
</Sequence>
<Action ID="NormalAction"/>
</ReactiveFallback>
ReactiveFallback을 사용하면, 낮은 우선순위의 행동이 실행 중이더라도 높은 우선순위의 조건이 충족되면 즉시 선점한다.
3. 실용적 예시
3.1 자율 주행 로봇의 행동 우선순위
<BehaviorTree ID="AutonomousRobot">
<ReactiveFallback>
<!-- P1: 비상 정지 -->
<Sequence>
<Condition ID="IsEmergencyStopActive"/>
<Action ID="EmergencyHalt"/>
</Sequence>
<!-- P2: 충돌 임박 -->
<Sequence>
<Condition ID="IsCollisionImminent"
detection_range="0.3"/>
<Action ID="EmergencyBrake"/>
</Sequence>
<!-- P3: 장애물 회피 -->
<Sequence>
<Condition ID="IsObstacleInPath"
detection_range="1.5"/>
<Action ID="AvoidObstacle"/>
</Sequence>
<!-- P4: 배터리 부족 -->
<Sequence>
<Condition ID="IsBatteryLow" threshold="0.15"/>
<Action ID="ReturnToCharger"/>
</Sequence>
<!-- P5: 정상 임무 -->
<Action ID="ExecuteMission"/>
</ReactiveFallback>
</BehaviorTree>
우선순위가 높은 안전 관련 행동이 상위에, 정상 임무가 최하위에 배치된다.
3.2 드론 비행 모드 선택
<ReactiveFallback>
<Sequence>
<Condition ID="IsBatteryCritical" threshold="0.05"/>
<Action ID="ForcedLanding"/>
</Sequence>
<Sequence>
<Condition ID="IsWindExcessive" max_speed="12.0"/>
<Action ID="ReturnToLaunch"/>
</Sequence>
<Sequence>
<Condition ID="IsOutsideGeofence"/>
<Action ID="ReturnToGeofence"/>
</Sequence>
<Sequence>
<Condition ID="IsBatteryLow" threshold="0.2"/>
<Action ID="ReturnToLaunch"/>
</Sequence>
<Action ID="ContinueFlightMission"/>
</ReactiveFallback>
4. 설계 시 고려 사항
4.1 우선순위의 결정
우선순위는 다음 기준에 따라 결정한다.
| 우선순위 수준 | 기준 | 예시 |
|---|---|---|
| 최고 (P1) | 인명 안전 | 비상 정지, 충돌 회피 |
| 높음 (P2) | 장비 보호 | 과열 보호, 과전류 차단 |
| 중간 (P3) | 임무 지속성 | 배터리 관리, 통신 유지 |
| 낮음 (P4) | 임무 목표 | 내비게이션, 작업 수행 |
| 최저 (P5) | 기본 행동 | 대기, 호버링 |
4.2 행동 간 전환의 부드러움
우선순위 전환 시 행동이 급격히 변경되면 로봇의 물리적 동작이 불안정해질 수 있다. 특히 이동 로봇에서 속도 명령의 급격한 변화는 기계적 스트레스를 유발한다. 행동 전환 시 가감속을 적용하는 등의 부드러운 전환 전략을 고려하여야 한다.
4.3 조건의 상호 배타성
우선순위 기반 선택에서 조건이 상호 배타적(mutually exclusive)이 아닌 경우, 복수의 조건이 동시에 충족될 수 있다. Fallback의 구조에 의해 가장 높은 우선순위의 조건이 선택되므로 논리적 오류는 발생하지 않으나, 조건 간의 관계를 명확히 문서화하여야 한다.
4.4 기본 행동의 존재
Fallback의 마지막 자식으로 무조건 실행되는 기본 행동을 배치하는 것이 안전하다. 모든 조건이 FAILURE를 반환하는 경우에도 로봇이 합리적인 행동(대기, 호버링 등)을 수행하도록 보장한다.
5. 참고 문헌
- Colledanchise, M., & Ogren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
- BehaviorTree.CPP 공식 문서. https://www.behaviortree.dev/
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| v0.1 | 2026-04-04 | 초안 작성 |