Skip to main content
Skip table of contents

MORAI SIM Time Manager Function

기존의 MORAI SIM에서 일반 모드와 Synchronous 모드를 통해 시간을 제어하며 동작하였다. 일반 모드에서는 실시간으로 동작하지만 PC의 Spec. 및 상태에 따라 인터페이스 데이터가 지연되는 등 부정확한 이슈가 존재한다. 또한, Synchronous 모드에서는 외부 사용자 PC와 동기화를 맞출 수 있는 시간 제어 기능을 제공하나, 모든 데이터가 하나의 외부 Trigger 시점에 의해 동기화 되는 문제가 있다.

따라서, Time Manager Function에서는 Synchronous 모드의 기능을 확장하여, 아래와 같이 동작할 수 있도록 설계하였다. MORAI SIM 내부에서 관리되는 시간 정의를 기준으로 아래와 같이 동작한다.

  • 센서 및 MORAI SIM에서 제공하는 Message가 각 정의된 Frame Rate 주기에 따라서 인터페이스

  • 외부 사용자 알고리즘을 별도 변경 없이 알고리즘 동작 주기에 맞춰 MORAI SIM과 연동하여 사용

세부 각 동작 모드에 대해서는 아래에 기술한다.


MORAI SIM Operation Mode

MORAI SIM이 동작하는 방식에 따라 Time Manager 기능 아래 세 가지 동작 모드를 지원한다.

  • Real Time Mode

  • Simulation Time Mode

    • Synchronous Mode On

    • Synchronous Mode Off

sync1.png

“V_RHT_Suburb_02” 맵 에서 Sync mode ON 상태

 

Real Time Mode

현실 시간을 기준으로 동작하며, MORAI SIM이 설치된 PC 성능에 따라 동작 영향성이 존재한다. Real Time Mode의 경우 ‘Tools > Option > System > Target FPS’ 에서 MORAI SIM 프레임을 설정 가능한데, 동일한 센서 배치 및 시나리오 구성이더라도 PC 성능에 따라 출력되는 FPS 값이 달라진다.

sync2.png

위의 이미지 및 지침대로 설정을 했다고 하더라도,

사용자 PC 의 사양에 따라 Target FPS 와 실제 출력되는 FPS 간의 차이가 있을 수 있다.

 

별도의 PC에서 동작하는 고객 알고리즘을 MORAI SIM과 연동하여 Real Time Mode에서 사용하는 경우 사용자는 별도의 고려를 하지 않아도 된다. 단, 사용자 알고리즘과 MORAI SIM이 상호 Interfacing 주기는 Processing Frame에 따라 가변적이기에 연동되어 동작한 결과에 대해 신뢰성을 보장하기 어렵다.

 

Simulation Time Mode

Simulation Time Mode에서 MORAI SIM 최소 업데이트 주기는 항상 1ms로 정의된다. 따라서, 1ms 만큼 프레임을 업데이트 하는 시간만큼 실시간 동작 대비 시뮬레이터 재생 속도는 감소한다. 하지만, 해당 모드에서는 정의된 timestamp에 해당되는 인터페이스 데이터를 송/수신 가능하다.

매 1ms를 기준으로 MORAI SIM이 지속적으로 업데이트 되면서 사용자에 의해 인터페이스 활성화가 정의된 시점에 각 인터페이스 모듈 별 데이터 송/수신이 이루어진다. 해당 프레임에서는 인터페이스 모듈에 대한 데이터 송/수신 및 프레임 업데이트가 완료된 이후, 다음 프레임으로 진행된다.

Simulation Time Mode에서 ROS 통신 인터페이스를 사용할 경우에는 MORAI SIM Time을 “/clock topic” 으로 발행하여 ROSTIME을 시뮬레이터와 동기화 할 수 있다.

  • ROS clock topic User Guide (ROS SIM Time 참조)

    • roscore 실행 후, 아래와 같이 rosparameter에서 use_sim_time을 true로 설정한다.

    CODE
    rosparam set use_sim_time true
    • MORAI SIM에서 /clock topic을 발행하도록 설정한다.

Synchronous Mode On / Off 차이점

위 그림과 같이 추가 인터페이스 리스트에 External Sync가 정의되며 External Sync 주기에는
시뮬레이터 업데이트 이후, 외부 Trigger 신호 도달 이전까지 시뮬레이터 Pause 상태를 유지한다.
또한, Synchronous Mode 진입은 반드시 ROS 메시지인 SyncModeCmd Service Provider 를 통한
Trigger로만 가능하며, MORAI SIM UI 상에서는 아래 2개의 모드만 선택이 가능하다.

  • Simulation Time > Synchronous Mode Off

  • Real Time Mode

sync3.png

External Sync On

MORAI SIM Operation Mode Transition

위 세 가지 동작 모드는 사용자에 의해 시뮬레이터 상에서 변경 가능하며, 동작 모드가 변경될 경우 아래와 같이 시뮬레이터 시간이 초기화 된다.

  • Time Manager 관련 모드 transition 에 따른 시간 초기화 계획

    • Real Time Mode > Simulation Time Mode 변경 시(Sync On/Off 무관), 시간 초기화된다.

    • Simulation Time Mode에서 ‘Sync On → Off’ 혹은 ‘Sync Off → On’ 으로 변경 시, 시간 초기화된다.

  • 시간 초기화 시, 시뮬레이터 시간 자체를 '0'으로 초기화한다.

  • Time Manager 모드 내에서 Sync On 상태로 진입은 반드시 ROS 메시지를 통한 Trigger 만 가능하며,
    Sync On 에서 다른 모드로 전환은 UI 상에서 가능

 

MORAI SIM Time Manager Mode 세부 기능

앞으로 설명할 MORAI SIM Time Manager Mode 의 세부 기능은 Real Time Mode 에서는 지원 불가하며, Simulation Time Mode 설정 이후, 별도의 UI 창을 통해 기능 설정 및 활성화 가능하다.

sync4.png
sync5.png

Sensor Record

장착된 각 센서의 설정 주기 또는 Synchronization 에서 사용자에 의해 설정된 주기에 맞게 센서 데이터가 자동으로 저장되는 기능이다. 센서 데이터 저장 파일 명의 시간은 시뮬레이션 시간으로 출력된다.
Real Time Mode 에서는 Trigger 신호 발생 시, 모든 센서 데이터가 Trigger 발생 시점을 기준으로 같은 시점의 데이터로 저장된다.

Time Synchronization

현재 장착 및 동작하는 모든 센서에 대하여, 시간 동기화 하는 기능이다. 해당 기능이 활성화 되는 경우,
사용자가 UI창에 입력한 Frame Rate 으로 센서가 동기화 되고, 비활성화된 경우에는 각 센서 별 사용자가
설정한 Frame Rate 으로 동작한다.

 

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.