# 큐 기반의 시나리오 예

[워크스페이스](../connector/workspace.md)는 협동로봇를 기반으로 하는 여러 커넥터의 집합을 의미하며 일반적으로 협동로봇, 카메라, 오브젝트를 기반으로 동작하도록 고안되어 있다.
워크스페이스 내에 구성된 협동로봇, 카메라, 오브젝트는 개별적으로 태스크를 가지고 있으며 이러한 시나리오 상에서 조합해서 오브젝트 피킹 등의 작업을 수행할 수 있다.

치킨 로봇과 같은 로봇을 이용한 어플리케이션의 경우 하나의 로봇으로 다수의 시나리오를 구성해서 진행하는 경우가 대부분이고 타이머나 다른 센서들과 연동해서 동작한다.
이러한 로봇 어플리케이션의 시나리오를 일괄적으로 관리하고 시간 흐름을 제어하기 위해서 하나의 시나리오 큐를 이용해서 다수의 시나리오를 제어하고 관리할 수 있다.

큐 기반의 시나리오는 큐에 삽입이 되어야 하고 적재 시점에서 시나리오의 시작 시점을 설정한다. 이렇게 큐에 삽입된 시나리오는 지정된 시작 시점에 시나리오가 자동을 시작된다. 만약 두 개 이상의 시나리오가 동시에 시작이 필요할 경우 큐에 우선 순위 및 적재 순서를 고려해서 시작 순서가 결정된다.

## 큐 기반의 시나리오 구성

### 주요 태스크

- 시나리오 관련 태스크

  - [book-up-scenario](../../integration/task/book-up-scenario.md): 시나리오를 큐에 삽입합니다.
  - [pick-pending-scenario](../../integration/task/pick-pending-scenario.md): 큐에 삽입된 시나리오 중에서 하나를 가져와서 실행합니다.

### 시나리오 구성 예

- 시나리오를 큐에 적재하는 예: 'tracking-ws-wait-for-roi' 태스크를 통해서 해당 카메라 영역에 관심 오브젝트가 나타나는 지를 확인 한 후 해당 오브젝트가 나타나면 특정 시나리오를 큐에 적재합니다.

![book-up-scenario example](../images/book-up-scenario-example.png 'book-up-scenario example')

- 큐에 적재된 시나리오를 가져오는 예: 주기적으로 5초에 한 번씩 큐에 적재된 시나리오를 가져와서 실행합니다.

![pick-pending-scenario example](../images/pick-pending-scenario-example.png 'pick-pending-scenario example')
