1292.26 Tick 빈도의 설정과 영향
1. Tick 빈도의 정의
Tick 빈도(tick frequency)는 행동 트리(Behavior Tree)의 실행 엔진이 단위 시간당 루트 노드에 전달하는 tick의 횟수이다. Tick 빈도 f_{tick}은 tick 주기 \Delta_t의 역수로 정의된다.
f_{tick} = \frac{1}{\Delta_t}
단위는 Hz(Hertz)이며, 예를 들어 tick 주기가 100ms이면 tick 빈도는 10Hz, 즉 초당 10회의 tick이 발생한다. tick 빈도의 선택은 행동 트리의 반응성, 계산 부하, 에너지 소비, 행동 품질에 직접적인 영향을 미치므로 로봇 시스템의 요구 사항에 맞게 신중하게 결정되어야 한다 (Colledanchise & Ogren, Behavior Trees in Robotics and AI, 2018).
Tick 빈도의 설정 기준
환경 동적성에 따른 설정
Tick 빈도 설정의 가장 중요한 기준은 로봇이 동작하는 환경의 동적성(dynamicity)이다. 환경의 상태가 빠르게 변화하는 경우, 이러한 변화를 적시에 감지하고 대응하기 위해 높은 tick 빈도가 필요하다. 반대로 환경의 변화가 느리거나 정적인 경우에는 낮은 tick 빈도로도 충분하다.
| 환경 유형 | 권장 Tick 빈도 범위 | 적용 예시 |
|---|---|---|
| 고동적 환경 | 50~100 Hz | 고속 자율 주행, 드론 장애물 회피 |
| 중동적 환경 | 10~50 Hz | 실내 자율 주행, 매니퓰레이션 |
| 저동적 환경 | 1~10 Hz | 감시 순찰, 정적 환경 탐색 |
| 정적 환경 | 0.5~1 Hz | 고정 위치 작업, 대기 상태 관리 |
센서 갱신 빈도와의 관계
Tick 빈도는 센서 데이터의 갱신 빈도(update rate)와의 관계를 고려하여 설정되어야 한다. 조건 노드가 센서 데이터를 기반으로 환경 상태를 평가하므로, tick 빈도가 센서 갱신 빈도보다 높으면 동일한 센서 데이터를 중복 평가하게 되어 계산 자원이 낭비된다. 반대로 tick 빈도가 센서 갱신 빈도보다 현저히 낮으면 센서 데이터의 일부가 활용되지 못한다.
일반적으로 tick 빈도는 주요 센서의 갱신 빈도와 동일하거나 그 이하로 설정하는 것이 효율적이다. 예를 들어, 라이다(LiDAR) 센서가 10Hz로 데이터를 갱신한다면 행동 트리의 tick 빈도를 10Hz로 설정하여 매 센서 갱신마다 한 번의 의사 결정을 수행하는 것이 합리적이다.
하위 제어기의 갱신 빈도와의 관계
행동 트리가 하위 수준의 제어기(controller)에 명령을 전달하는 계층적 구조에서, tick 빈도는 하위 제어기의 갱신 빈도보다 낮게 설정되는 것이 일반적이다. 행동 트리는 “무엇을 할 것인가(what to do)“를 결정하는 상위 수준의 의사 결정 계층이며, 하위 제어기는 “어떻게 할 것인가(how to do)“를 실현하는 실행 계층이기 때문이다.
Nav2(Navigation2) 프레임워크에서는 행동 트리가 10Hz 수준으로 동작하는 반면, 경로 추종 제어기(path following controller)는 20Hz 이상으로 동작하는 것이 일반적이다 (Macenski et al., “The Marathon 2: A Navigation System”, IEEE International Conference on Intelligent Robots and Systems, 2020).
Tick 빈도가 높은 경우의 영향
반응성 향상
Tick 빈도가 높을수록 행동 트리의 반응성(reactivity)이 향상된다. 환경 변화에 대한 최대 반응 지연은 하나의 tick 주기 \Delta_t에 해당하므로, tick 빈도가 높을수록 이 지연이 감소한다. 특히 반응형 노드(ReactiveSequence, ReactiveFallback)를 사용하는 경우, 높은 tick 빈도는 조건 재평가의 빈도를 증가시켜 환경 변화에 대한 즉각적 대응을 가능하게 한다.
계산 부하 증가
Tick 빈도의 증가는 단위 시간당 수행되는 트리 순회 횟수의 증가를 의미하므로, CPU 사용률이 비례적으로 증가한다. 대규모 행동 트리에서는 이 계산 부하가 시스템의 전체 성능에 유의미한 영향을 미칠 수 있다. 특히 임베디드 시스템(embedded system)이나 자원 제약이 있는 로봇 플랫폼에서는 tick 빈도의 상한이 하드웨어 성능에 의해 제한된다.
에너지 소비 증가
모바일 로봇에서 CPU 사용률의 증가는 배터리 소비의 증가로 직결된다. 자율 주행 로봇이나 드론처럼 배터리 용량에 제약이 있는 플랫폼에서는 tick 빈도를 불필요하게 높게 설정하면 임무 수행 가능 시간이 단축될 수 있다.
Tick 빈도가 낮은 경우의 영향
반응 지연 증가
Tick 빈도가 낮으면 환경 변화에 대한 반응 지연이 증가한다. 극단적인 경우, 장애물이 경로 상에 출현하였으나 다음 tick까지 이를 감지하지 못하여 충돌이 발생할 수 있다. 이는 로봇의 안전성(safety)과 직결되는 문제이다.
Running 노드의 감시 지연
비동기 액션 노드가 Running 상태에 있을 때, tick 빈도가 낮으면 작업의 완료를 감지하는 데 지연이 발생한다. 작업이 이미 완료되었으나 다음 tick까지 이를 확인하지 못하면, 후속 행동의 시작이 지연되어 전체 임무의 수행 효율이 저하된다.
계산 자원 절약
반면, 낮은 tick 빈도는 CPU 사용률과 에너지 소비를 감소시킨다. 환경 변화가 느린 시나리오에서는 낮은 tick 빈도가 적절하며, 절약된 계산 자원을 다른 시스템 구성 요소(경로 계획, 지각 처리 등)에 할당할 수 있다.
Tick 빈도의 실무적 설정 지침
응용 분야별 일반적 설정
실무적으로 tick 빈도는 응용 분야의 특성에 따라 다음과 같이 설정되는 경우가 일반적이다.
- 자율 주행 로봇(실내): 10~30 Hz. 보행자나 동적 장애물에 대한 적시 대응이 필요하지만, 환경의 변화 속도가 극단적이지는 않다.
- 자율 비행 드론: 30~100 Hz. 고속 비행과 3차원 장애물 회피를 위해 높은 반응성이 요구된다.
- 산업용 매니퓰레이터: 10~50 Hz. 작업 대상의 위치 변화와 힘 센서 피드백에 대한 적시 대응이 필요하다.
- 감시 및 순찰 로봇: 1~5 Hz. 사전 계획된 경로를 따라 이동하며, 환경 변화에 대한 즉각적 대응의 필요성이 상대적으로 낮다.
BehaviorTree.CPP에서의 설정
BehaviorTree.CPP 라이브러리에서 tick 빈도는 tickWhileRunning() 함수의 인자로 전달되는 수면 시간(sleep duration)을 통해 간접적으로 설정된다. 예를 들어, tree.tickWhileRunning(std::chrono::milliseconds(100))은 각 tick 후 100ms의 대기 시간을 설정하여 약 10Hz의 tick 빈도를 구현한다. 정확한 빈도는 tick 자체의 실행 시간에 따라 변동할 수 있다 (Faconti, BehaviorTree.CPP Documentation, 2024).
Tick 빈도와 시스템 안정성
Tick 빈도의 설정은 로봇 시스템의 안정성(stability)과도 관련된다. 제어 이론의 관점에서, 이산 시간 제어 시스템의 안정성은 샘플링 빈도에 의존한다. 샘플링 빈도가 지나치게 낮으면 시스템의 안정성이 훼손될 수 있다.
행동 트리에서 이에 대응하는 현상은 tick 빈도가 너무 낮아 환경 변화에 적시에 대응하지 못하고, 부적절한 행동이 지속되는 상황이다. 예를 들어, 장애물 회피를 위한 조건 재평가가 충분히 빈번하지 않으면, 로봇이 장애물에 접근한 후에야 이를 감지하여 급격한 행동 전환이 필요해지며, 이는 불안정한 행동 패턴을 유발할 수 있다 (Colledanchise & Ogren, 2018).
참고 문헌
- Colledanchise, M. & Ogren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
- Faconti, D. (2024). BehaviorTree.CPP Documentation. https://www.behaviortree.dev/
- Macenski, S. et al. (2020). “The Marathon 2: A Navigation System”. IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).