데코레이터의 로봇공학 적용 패턴 (Robotics Application Patterns of Decorators)

데코레이터의 로봇공학 적용 패턴 (Robotics Application Patterns of Decorators)

1. 개요

데코레이터 노드는 로봇 시스템의 다양한 행동 패턴을 구현하는 데 핵심적으로 활용된다. 본 절에서는 내비게이션, 매니퓰레이션, 드론 비행, 감시, 초기화 등 로봇 공학의 주요 응용 분야에서 데코레이터가 적용되는 대표적 패턴을 종합적으로 다룬다.

2. 내비게이션 패턴

2.1 타임아웃 기반 안전 내비게이션

<Fallback>
    <Timeout msec="60000">
        <Action ID="NavigateToGoal"/>
    </Timeout>
    <Sequence>
        <Action ID="ClearCostmap"/>
        <Timeout msec="90000">
            <Action ID="NavigateToGoal"/>
        </Timeout>
    </Sequence>
    <Action ID="ReportFailure"/>
</Fallback>

1차 시도 60초 → 실패 시 코스트맵 초기화 후 90초 재시도 → 최종 실패 보고.

2.2 반복 순찰

<Timeout msec="3600000">
    <Repeat num_cycles="-1">
        <Sequence>
            <Action ID="NavigateTo" goal="{wp_A}"/>
            <Action ID="NavigateTo" goal="{wp_B}"/>
            <Action ID="NavigateTo" goal="{wp_C}"/>
        </Sequence>
    </Repeat>
</Timeout>

1시간 동안 순찰 경로를 무한 반복한다.

3. 매니퓰레이션 패턴

3.1 재시도 파지 행동

<RetryNode num_attempts="3">
    <Sequence>
        <Action ID="AdjustGraspPose"/>
        <Action ID="ExecuteGrasp"/>
        <Condition ID="IsObjectGrasped"/>
    </Sequence>
</RetryNode>

파지 자세를 조정하면서 최대 3회 파지를 시도한다.

3.2 일회성 캘리브레이션

<RunOnce>
    <RetryNode num_attempts="5">
        <Action ID="CalibrateEndEffector"/>
    </RetryNode>
</RunOnce>

말단장치 캘리브레이션을 한 번만 수행하되, 실패 시 최대 5회 재시도한다.

4. 드론 비행 패턴

4.1 호버링 유지

<KeepRunningUntilFailure>
    <Action ID="MaintainHoverSetpoint"/>
</KeepRunningUntilFailure>

4.2 지연 시작 임무

<Sequence>
    <Action ID="Takeoff"/>
    <Delay delay_msec="5000">
        <SubTree ID="FlightMission"/>
    </Delay>
</Sequence>

이륙 후 5초 안정화 대기 후 임무 시작.

5. 안전 패턴

5.1 조건 반전 가드

<ReactiveSequence>
    <Inverter>
        <Condition ID="IsEmergencyStopActive"/>
    </Inverter>
    <SubTree ID="MainOperation"/>
</ReactiveSequence>

5.2 실패 무시 보조 행동

<Sequence>
    <Action ID="MainTask"/>
    <ForceSuccess>
        <Action ID="SendTelemetry"/>
    </ForceSuccess>
</Sequence>

6. 초기화 패턴

6.1 시스템 시작 시 일회성 초기화

<Sequence>
    <RunOnce>
        <Sequence>
            <RetryNode num_attempts="3">
                <Action ID="InitSensors"/>
            </RetryNode>
            <Action ID="LoadConfig"/>
        </Sequence>
    </RunOnce>
    <SubTree ID="NormalOperation"/>
</Sequence>

7. 복합 임무 패턴

7.1 시간 제한 + 재시도 + 지연

<Timeout msec="120000">
    <RetryNode num_attempts="5">
        <Delay delay_msec="2000">
            <SubTree ID="ComplexTask"/>
        </Delay>
    </RetryNode>
</Timeout>

전체 2분 이내에서, 2초 간격으로 복합 작업을 최대 5회 재시도한다.

8. 데코레이터 선택 가이드

행동 요구적합한 데코레이터
실행 시간 제한Timeout
실패 시 재시도Retry
횟수 지정 반복Repeat
한 번만 실행RunOnce
실행 전 대기Delay
결과 반전Inverter
실패 무시ForceSuccess
성공까지 반복KeepRunningUntilFailure
조건부 실행Precondition (_skipIf 등)
빈도 제한RateController

9. 참고 문헌

  • Colledanchise, M., & Ogren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
  • Macenski, S., et al. (2020). “The Marathon 2: A Navigation System.” arXiv preprint arXiv:2003.00368.
  • BehaviorTree.CPP 공식 문서. https://www.behaviortree.dev/

버전날짜변경 사항
v0.12026-04-05초안 작성