1261.60 행동 제어에서의 우선순위 관리
1. 우선순위 관리의 필요성
로봇 행동 제어 시스템에서는 다수의 행동이 동시에 활성화되거나, 복수의 목표가 경합하는 상황이 빈번하게 발생한다. 이러한 상황에서 우선순위 관리(priority management)는 어떤 행동이 먼저 실행되어야 하는지, 어떤 자원이 우선적으로 할당되어야 하는지를 체계적으로 결정하는 메커니즘이다.
우선순위 관리가 부재하면 다음과 같은 문제가 발생할 수 있다.
- 행동 충돌(behavior conflict): 복수의 행동이 동일한 액추에이터에 상이한 명령을 동시에 전달하여 예측 불가능한 움직임이 발생한다.
- 자원 경합(resource contention): 계산 자원, 통신 대역폭, 센서 접근 등에서 경쟁이 발생하여 시스템 성능이 저하된다.
- 안전 위반(safety violation): 안전 관련 행동이 비안전 행동에 의해 지연되거나 억제되어 위험 상황이 초래된다.
2. 행동 우선순위의 분류
2.1 정적 우선순위와 동적 우선순위
정적 우선순위(static priority) 방식에서는 시스템 설계 시에 각 행동의 우선순위를 고정적으로 할당한다. 구현이 단순하고 예측 가능성이 높으나, 환경 변화에 따른 유연한 대응이 어렵다는 한계가 있다.
동적 우선순위(dynamic priority) 방식에서는 실행 시점의 상황에 따라 우선순위를 조정한다. 로봇의 현재 상태, 환경 조건, 임무 진행 상황 등을 고려하여 우선순위를 재산정함으로써 적응적 행동 제어가 가능하다.
2.2 계층적 우선순위 구조
행동 우선순위는 일반적으로 계층적(hierarchical) 구조로 조직된다. 상위 계층의 행동이 하위 계층의 행동보다 높은 우선순위를 가지며, 상위 행동이 활성화되면 하위 행동을 억제(suppress)하거나 대체한다.
대표적인 계층적 우선순위 구조는 다음과 같다.
| 우선순위 계층 | 행동 범주 | 예시 |
|---|---|---|
| 최상위(Level 0) | 안전 행동 | 비상 정지, 충돌 회피 |
| 상위(Level 1) | 반응형 행동 | 장애물 회피, 자세 안정화 |
| 중위(Level 2) | 임무 수행 행동 | 경로 추종, 물체 조작 |
| 하위(Level 3) | 보조 행동 | 상태 모니터링, 데이터 로깅 |
3. 행동 충돌 해소 메커니즘
3.1 포섭 아키텍처의 우선순위 메커니즘
Brooks(1986)의 포섭 아키텍처(subsumption architecture)는 계층적 우선순위에 기반한 행동 충돌 해소의 대표적 사례이다. 상위 계층의 행동이 하위 계층의 출력을 억제(suppress)하거나 억압(inhibit)하는 두 가지 메커니즘을 통해 충돌을 해소한다.
- 억제(suppression): 상위 행동의 출력이 하위 행동의 출력을 대체한다.
- 억압(inhibition): 상위 행동이 하위 행동의 입력을 차단하여 하위 행동의 실행 자체를 방지한다.
3.2 행동 트리에서의 우선순위
행동 트리(behavior tree)에서는 노드의 배치 순서가 우선순위를 결정한다. 폴백 노드(fallback node, 또는 selector node)의 자식 노드는 좌측에서 우측으로 평가되며, 좌측에 위치한 자식이 더 높은 우선순위를 가진다. 성공을 반환하는 첫 번째 자식 노드의 결과가 채택되고, 나머지 자식은 틱(tick)을 수신하지 않는다(Colledanchise and Ögren, 2018).
시퀀스 노드(sequence node)에서도 좌측 자식이 성공해야 우측 자식이 실행되므로, 전제 조건(precondition)의 검증에 활용된다.
3.3 유한 상태 머신에서의 우선순위
유한 상태 머신(Finite State Machine, FSM)에서는 전이 조건(transition condition)의 평가 순서가 암묵적으로 우선순위를 정의한다. 동일 상태에서 복수의 전이 조건이 동시에 만족될 경우, 먼저 평가되는 전이가 실행된다.
다만, FSM 기반 행동 제어에서는 상태 수의 증가에 따라 전이 조건의 복잡성이 급격히 증가하므로, 우선순위 관리의 명시적 구조화가 필요하다.
4. 자원 수준의 우선순위 관리
4.1 액추에이터 접근 우선순위
복수의 행동 모듈이 동일한 액추에이터에 명령을 전달하려 할 때, 액추에이터 접근 우선순위를 통해 최종 명령을 결정한다. 액추에이터 중재기(actuator arbiter)는 활성 행동들의 우선순위를 비교하여 가장 높은 우선순위를 가진 행동의 명령만을 액추에이터로 전달한다.
명령 혼합(command blending) 방식에서는 복수 행동의 명령을 가중 평균으로 결합한다. 행동 i의 명령 \mathbf{u}_i와 가중치 w_i에 대해 최종 명령 \mathbf{u}는 다음과 같이 산출된다.
\mathbf{u} = \frac{\sum_{i} w_i \mathbf{u}_i}{\sum_{i} w_i}
가중치 w_i는 각 행동의 우선순위, 활성 정도(activation level), 긴급성 등을 반영하여 설정한다.
4.2 계산 자원 우선순위
ROS2 환경에서 계산 자원의 우선순위 관리는 운영체제의 프로세스 및 스레드 스케줄링과 밀접하게 연관된다. 실시간 운영체제에서는 행동 제어 관련 스레드에 높은 스케줄링 우선순위를 할당하여 다른 비실시간 작업에 의한 간섭을 방지한다.
ROS2의 실행자(executor) 수준에서는 콜백 그룹의 구성을 통해 우선순위를 간접적으로 관리할 수 있다. 안전 관련 콜백을 전용 스레드에 배치하고, 해당 스레드에 높은 운영체제 우선순위를 부여하는 방식이 대표적이다.
4.3 통신 우선순위
DDS(Data Distribution Service) 미들웨어는 QoS 정책 중 TRANSPORT_PRIORITY를 제공하여 토픽별 통신 우선순위를 설정할 수 있다. 높은 우선순위가 설정된 토픽의 데이터가 네트워크 전송에서 우선 처리된다.
안전 관련 행동의 통신(예: 비상 정지 명령)에는 최고 우선순위를 할당하고, RELIABLE 신뢰성 정책과 결합하여 데이터 전달의 보장성을 확보한다.
5. ROS2 기반 우선순위 구현 전략
5.1 우선순위 기반 콜백 실행
ROS2 Iron 이후 도입된 PriorityExecutor 또는 사용자 정의 실행자를 통해 콜백의 실행 우선순위를 직접 제어할 수 있다. 이를 통해 안전 관련 콜백이 일반 콜백보다 우선적으로 처리되도록 보장한다.
실행자의 우선순위 설정과 운영체제의 스레드 우선순위 설정을 결합하면, 소프트웨어 수준과 시스템 수준의 이중 우선순위 보장이 가능하다.
5.2 행동 중재 노드의 설계
행동 중재 노드(behavior arbitration node)는 복수의 행동 모듈로부터 명령을 수신하고, 우선순위 정책에 따라 최종 명령을 선택하여 액추에이터 제어 노드로 전달하는 전용 노드이다. 이 노드의 설계에서 고려해야 할 사항은 다음과 같다.
- 우선순위 테이블 관리: 각 행동의 우선순위를 테이블로 유지하며, 동적 우선순위 변경을 지원한다.
- 시간 초과 처리: 최고 우선순위 행동의 명령이 일정 시간 내에 갱신되지 않으면, 차순위 행동의 명령으로 전환한다.
- 전환 필터링: 행동 전환 시 명령의 급격한 변화를 방지하기 위해 보간(interpolation) 또는 저역 통과 필터를 적용한다.
6. 우선순위 역전 문제와 대응
6.1 우선순위 역전의 정의
우선순위 역전(priority inversion)은 높은 우선순위의 작업이 낮은 우선순위의 작업에 의해 간접적으로 차단(blocking)되는 현상이다. 이 문제는 공유 자원(예: 뮤텍스, 통신 채널)의 사용 시 발생할 수 있다(Sha et al., 1990).
6.2 우선순위 상속 프로토콜
우선순위 상속 프로토콜(Priority Inheritance Protocol, PIP)은 낮은 우선순위의 작업이 공유 자원을 점유하고 있을 때, 해당 작업의 우선순위를 대기 중인 최고 우선순위 작업의 수준으로 임시 상승시키는 방식이다. 이를 통해 중간 우선순위 작업에 의한 불필요한 차단을 방지한다.
6.3 우선순위 천장 프로토콜
우선순위 천장 프로토콜(Priority Ceiling Protocol, PCP)은 각 공유 자원에 천장 우선순위(ceiling priority)를 부여하여, 자원을 점유한 작업의 우선순위를 천장 수준으로 즉시 상승시킨다. PIP에 비해 연쇄적 차단(chain blocking)을 방지하는 장점이 있다(Sha et al., 1990).
7. 우선순위 관리의 설계 원칙
행동 제어 시스템에서 효과적인 우선순위 관리를 위한 설계 원칙은 다음과 같다.
- 안전 우선 원칙: 안전 관련 행동에는 항상 최고 우선순위를 부여하며, 어떠한 상황에서도 억제되지 않도록 보장한다.
- 최소 권한 원칙: 각 행동에는 기능 수행에 필요한 최소한의 우선순위만 할당하여, 불필요한 자원 독점을 방지한다.
- 명시적 정의 원칙: 우선순위 체계를 설계 문서에 명시적으로 정의하고, 암묵적 우선순위 의존을 배제한다.
- 검증 가능성 원칙: 우선순위 체계가 모든 가능한 시나리오에서 안전 요구사항을 만족하는지 형식적 검증 또는 시뮬레이션을 통해 확인한다.
- 모니터링 원칙: 실행 시점에서의 우선순위 결정 이력을 기록하고, 행동 충돌과 해소 과정을 추적할 수 있어야 한다.
8. 참고 문헌
- Brooks, R. A. (1986). “A Robust Layered Control System for a Mobile Robot.” IEEE Journal on Robotics and Automation, 2(1), 14–23.
- Colledanchise, M. and Ögren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
- Sha, L., Rajkumar, R., and Lehoczky, J. P. (1990). “Priority Inheritance Protocols: An Approach to Real-Time Synchronization.” IEEE Transactions on Computers, 39(9), 1175–1185.