1294.27 세 가지 Sequence 변형의 적용 시나리오
1. 적용 시나리오의 선택 기준
Sequence 변형의 선택은 로봇 시스템의 요구사항에 따라 결정된다. 선택의 핵심 기준은 (1) 조건의 지속적 감시가 필요한가, (2) 완료된 단계의 재실행이 허용되는가, (3) 부수 효과의 반복이 문제가 되는가의 세 가지이다(Colledanchise & Ogren, 2018).
2. SequenceWithMemory 적용 시나리오
2.1 시나리오 1: 물류 로봇의 순차적 배송 임무
물류 로봇이 창고에서 물건을 집어 올려 목적지까지 배달하는 임무는 명확한 순차 단계로 구성된다. 각 단계가 성공하면 다시 실행할 필요가 없다.
<Sequence>
<Action ID="UndockFromCharger"/>
<Action ID="NavigateToShelf"/>
<Action ID="PickItem"/>
<Action ID="NavigateToDropoff"/>
<Action ID="PlaceItem"/>
<Action ID="NavigateToCharger"/>
<Action ID="Dock"/>
</Sequence>
UndockFromCharger가 성공한 후 NavigateToShelf가 RUNNING 상태에서 진행될 때, 도킹 해제를 다시 시도하는 것은 무의미하다. SequenceWithMemory는 완료된 단계를 건너뛰므로 이 시나리오에 적합하다.
2.2 시나리오 2: 매니퓰레이터의 조립 공정
산업용 매니퓰레이터가 부품을 조립하는 공정에서, 각 단계는 물리적 상태 변화를 수반하며 되돌릴 수 없다.
<Sequence>
<Action ID="GraspPartA"/>
<Action ID="InsertPartAIntoSlot"/>
<Action ID="GraspPartB"/>
<Action ID="ScrewPartBOntoA"/>
<Action ID="VerifyAssembly"/>
</Sequence>
GraspPartA가 성공하여 부품을 쥐고 있는 상태에서, 해당 동작을 다시 실행하면 이미 쥐고 있는 부품에 대해 파지 동작을 재시도하는 오류가 발생한다. 메모리 기반의 순차 진행이 필수적이다.
2.3 시나리오 3: 데이터 수집 후 전송
센서 데이터를 수집하고 서버에 전송하는 작업에서, 데이터 수집과 전송은 각각 한 번만 수행되어야 한다.
<Sequence>
<Action ID="CollectSensorData"/>
<Action ID="CompressData"/>
<Action ID="TransmitToServer"/>
</Sequence>
CollectSensorData가 매 Tick마다 재실행되면 중복 데이터가 수집되고, TransmitToServer 진행 중 CompressData가 재실행되면 데이터 일관성이 훼손된다.
3. ReactiveSequence 적용 시나리오
3.1 시나리오 1: 안전 조건 하의 네비게이션
이동 로봇이 목표 지점으로 이동하는 동안, 안전 관련 조건이 지속적으로 충족되어야 하는 시나리오이다.
<ReactiveSequence>
<Condition ID="IsEmergencyStopNotPressed"/>
<Condition ID="IsBatteryAbove15Percent"/>
<Condition ID="IsPathNotBlocked"/>
<Action ID="NavigateToGoal"/>
</ReactiveSequence>
비상 정지 버튼이 눌리거나, 배터리가 15% 이하로 떨어지거나, 경로에 장애물이 감지되면, 네비게이션이 즉시 중단된다. 이 시나리오에서 조건의 지속적 감시는 안전 보장에 필수적이다.
3.2 시나리오 2: 원격 조종 모드의 조건 유지
원격 조종 중 통신 상태와 조작자 인증이 유효해야 하는 시나리오이다.
<ReactiveSequence>
<Condition ID="IsCommsLatencyBelow100ms"/>
<Condition ID="IsOperatorAuthenticated"/>
<Condition ID="IsNotInRestrictedZone"/>
<Action ID="ExecuteRemoteCommand"/>
</ReactiveSequence>
통신 지연이 임계값을 초과하거나, 조작자 인증이 만료되거나, 제한 구역에 진입하면, 원격 명령 실행이 즉시 중단된다.
3.3 시나리오 3: 드론의 비행 안전 감시
드론이 비행 중 다수의 안전 파라미터가 동시에 유효해야 하는 시나리오이다.
<ReactiveSequence>
<Condition ID="IsWindSpeedBelow30kph"/>
<Condition ID="IsAltitudeBelowCeiling"/>
<Condition ID="IsGPSSignalStrong"/>
<Condition ID="IsBatteryAbove20Percent"/>
<Action ID="FlyToWaypoint"/>
</ReactiveSequence>
풍속, 고도, GPS 신호, 배터리 중 하나라도 임계값을 벗어나면 비행이 즉시 중단된다. 조건 배치 순서는 위험도에 따른 우선순위를 반영한다.
3.4 시나리오 4: 동적 환경에서의 작업 수행
로봇이 작업을 수행하는 동안 환경 조건이 동적으로 변하는 시나리오이다.
<ReactiveSequence>
<Condition ID="IsWorkspaceTemperatureNormal"/>
<Condition ID="IsHumanNotInProximity"/>
<Action ID="WeldJoint"/>
</ReactiveSequence>
용접 중 작업 공간 온도가 비정상이거나 사람이 근접하면 즉시 용접을 중단한다. 이는 산업 안전 규정의 행동 트리 수준 구현이다.
4. 혼합 적용 시나리오
4.1 시나리오: ReactiveSequence 내부의 SequenceWithMemory
안전 조건의 지속적 감시가 필요하면서도, 실제 작업은 순차적 단계로 구성되는 시나리오에서는 두 변형을 중첩하여 사용한다.
<ReactiveSequence>
<Condition ID="IsNotEmergency"/>
<Condition ID="IsBatteryOK"/>
<Sequence> <!-- SequenceWithMemory -->
<Action ID="Undock"/>
<Action ID="NavigateToA"/>
<Action ID="PickObject"/>
<Action ID="NavigateToB"/>
<Action ID="PlaceObject"/>
</Sequence>
</ReactiveSequence>
외부 ReactiveSequence는 안전 조건을 매 Tick마다 재검사하고, 내부 SequenceWithMemory는 순차적 임무 단계를 메모리 기반으로 진행한다. 안전 조건이 위반되면 내부 Sequence 전체가 Halt되며, 안전 조건이 다시 충족되면 내부 Sequence는 IDLE 상태에서 처음부터 재시작된다.
4.2 시나리오: 다중 계층 안전 구조
<ReactiveSequence>
<!-- 시스템 수준 안전 조건 -->
<Condition ID="IsSystemHealthy"/>
<ReactiveSequence>
<!-- 임무 수준 안전 조건 -->
<Condition ID="IsMissionValid"/>
<Sequence>
<!-- 순차적 임무 단계 -->
<Action ID="Phase1"/>
<Action ID="Phase2"/>
<Action ID="Phase3"/>
</Sequence>
</ReactiveSequence>
</ReactiveSequence>
외부 ReactiveSequence는 시스템 수준의 안전을, 내부 ReactiveSequence는 임무 수준의 유효성을, 최내부 Sequence는 임무의 순차적 진행을 담당한다.
5. 변형 선택 의사 결정 흐름
다음의 의사 결정 흐름은 Sequence 변형의 선택을 체계적으로 안내한다.
1. 앞쪽 자식이 부수 효과가 있는 액션인가?
→ 예: SequenceWithMemory 사용
→ 아니오: 2번으로
2. 비동기 액션 실행 중 앞쪽 조건의 지속적 감시가 필요한가?
→ 예: ReactiveSequence 사용
→ 아니오: 3번으로
3. 완료된 자식의 재실행이 문제가 되는가?
→ 예: SequenceWithMemory 사용
→ 아니오: 어느 변형이든 사용 가능 (기본값: SequenceWithMemory)
6. 적용 시나리오 요약
| 시나리오 유형 | 권장 변형 | 핵심 이유 |
|---|---|---|
| 순차적 임무 단계 수행 | SequenceWithMemory | 완료 단계 재실행 방지 |
| 부수 효과가 있는 액션 순서 | SequenceWithMemory | 부수 효과 반복 방지 |
| 안전 조건 감시 하 작업 | ReactiveSequence | 조건 변화 즉시 감지 |
| 동적 환경 대응 | ReactiveSequence | 환경 변화에 즉각 반응 |
| 안전 감시 + 순차 임무 | ReactiveSequence + Sequence 중첩 | 양쪽 요구사항 동시 충족 |
참고 문헌
- Colledanchise, M., & Ogren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
- Faconti, D. (2022). BehaviorTree.CPP documentation and API reference. https://www.behaviortree.dev/