Delay의 지연 시간 설정 (Delay's Delay Time Configuration)

Delay의 지연 시간 설정 (Delay’s Delay Time Configuration)

1. 개요

Delay 데코레이터의 지연 시간 설정은 delay_msec 매개변수를 통해 자식 노드의 실행을 지연시킬 시간을 밀리초(ms) 단위로 지정하는 것이다. 이 설정은 하드웨어 안정화 시간, 통신 지연 보상, 행동 간 간격 확보 등의 물리적·운용적 요구에 맞추어 결정된다.

2. delay_msec 매개변수

2.1 정적 설정

<Delay delay_msec="2000">
    <Action ID="StartMotor"/>
</Delay>

2,000밀리초(2초) 후 모터를 시작한다.

2.2 블랙보드를 통한 동적 설정

<Delay delay_msec="{stabilization_time_ms}">
    <Action ID="ReadSensor"/>
</Delay>

블랙보드의 stabilization_time_ms 값에 따라 지연 시간이 동적으로 결정된다. 환경 조건이나 이전 행동의 특성에 따라 지연을 조정할 수 있다.

3. 지연 시간 설정 기준

3.1 용도별 권장 지연 시간

용도권장 지연근거
모터 방향 전환200~1000ms기계적 감속 시간
센서 안정화1000~5000ms센서 초기화 시간
네트워크 재시도 간격1000~5000ms서버 부하 분산
시스템 시작 안정화3000~10000ms하위 시스템 초기화
드론 이륙 후 안정화3000~8000ms자세 제어 수렴
그리퍼 개폐 완료 대기500~2000ms기계적 동작 시간

4. 매우 짧은 지연의 주의사항

지연 시간을 행동 트리의 tick 주기보다 짧게 설정하면, 실질적인 지연 효과가 없다. tick 주기가 100ms인 경우, 50ms의 지연은 다음 tick에서 즉시 완료되므로 100ms의 지연과 동일한 효과를 가진다.

5. 매우 긴 지연의 주의사항

과도하게 긴 지연은 시스템의 응답성을 저하시킨다. 긴 지연이 필요한 경우, ReactiveSequence와 결합하여 지연 중에도 안전 조건을 감시하는 것이 바람직하다.

<ReactiveSequence>
    <Condition ID="IsNotEmergencyStopped"/>
    <Delay delay_msec="30000">
        <Action ID="ScheduledAction"/>
    </Delay>
</ReactiveSequence>

30초 지연 중에도 비상 정지 조건을 감시한다.

6. 참고 문헌

  • BehaviorTree.CPP 공식 문서. https://www.behaviortree.dev/
  • Colledanchise, M., & Ogren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.

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