: 본 페이지는 Synchronous Mode 사용 ROS 메시지에 대해 기술한다.


Synchronous Mode 호출 서비스

Synchronous Mode 시작 및 중단은 ROS 로만 가능하며 Synchronous Mode 시작 시 키보드 및 게임 휠 제어가 불가능함.

  • SyncModeCmd Service Provider(User → Sim)

  • Service Name : /SyncModeCmd

  • srv : morai_msgs/MoraiSyncModeCmdSrv

  • Request Message Type : morai_msgs/SyncModeCmd

    • string user_id : Synchronous Mode의 Tick을 전송할 user_id 지정 ( 빈 문자열이면, 응답 메시지에서 user_id 자동 생성)

    • bool start_sync_mode : Synchronous Mode를 시작(True) / 중단 (False) 제어

    • uint32 time_step : Tick 전송시 처리되는 time step (ms) 으로 fixed time step 인 20ms 의 배수여야하며, Tick 전송시 한번에 time_step / 20 만큼 프레임이 계산된다.

  • Response Message Type : morai_msgs/SyncModeCmdResponse

    • string user_id : Synchronous Mode의 Tick 전송이 가능한 user_id 리턴 ( start_sync_mode 가 true 이고, user_id가 빈 문자열이면, user_id 자동 생성 후 리턴)

    • uint64 frame : 현재 프레임 카운트

    • bool result : 해당 요청의 성공 실패 여부

    • uint32 time_step : 설정된 time step (ms)

Synchronous Mode Tick 전송 서비스

  • SyncModeWaitForTick Service Provider(User → Sim)

  • Service Name : /SyncModeWaitForTick

  • srv : morai_msgs/MoraiWaitForTickSrv

  • Request Message Type : morai_msgs/WaitForTick

    • string user_id : Synchronous Mode의 Tick을 전송할 user_id 지정

    • uint64 frame : 요구하는 frame 값.

  • Response Message Type : morai_msgs/WaitForTickResponse

    • bool tick_status : 전송 받은 Tick 에 대한 명령 처리 여부

    • bool pause_status : Scenario Editor 접속 / Scenario Save & Load / Pause 모드 로 인해 현재 시뮬레이터가 pause 되어있는지 유무( True 면 tick_status 가 False)

    • bool frame : 현재 프레임 카운트

    • morai_msgs/EgoVehicleStatus vehicle_status : 요청한 Tick 연산 후 차량 상태 정보

Synchronous Mode 차량 제어 서비스

  • SyncModeCtrlCmd Service Provider(User → Sim)

  • Service Name : /SyncModeCtrlCmd

  • srv : morai_msgs/MoraiSyncModeCtrlCmdSrv

  • Request Message Type : morai_msgs/SyncModeCtrlCmd

    • morai_msgs/CtrlCmd command : ego 차량 제어 명령

    • uint64 frame : 요구하는 frame 값

    • bool sensor_capture : 센서 캡처 모드(센서 데이터 저장) 실행 여부

      • 해당 센서 데이터는 [시뮬레이터 런처 경로]\MoraiLauncher_Win\MoraiLauncher_Win_Data\SaveFile\SensorData\SynchronousMode\[SyncMode 실행 시작 시간일]에 저장된다.

  • Response Message Type : morai_msgs/SyncModeResultResponse

    • bool result : 해당 요청의 성공 실패 여부

Synchronous Mode 기어 제어 서비스

  • SyncModeSetGear Service Provider(User → Sim)

  • Service Name : /SyncModeSetGear

  • srv : morai_msgs/MoraiSyncModeSetGearSrv

  • Request Message Type : morai_msgs/SyncModeSetGear

    • int32 gear : ego 차량 기어 변경 명령

    • uint64 frame : 요구하는 frame 값

  • Response Message Type : morai_msgs/SyncModeResultResponse

    • bool result : 해당 요청의 성공 실패 여부

Synchronous Mode 시나리오 로드 서비스

  • SyncModeScenarioLoad Service Provider(User → Sim)

  • Service Name : /SyncModeScenarioLoad

  • srv : morai_msgs/SyncModeSLSrv

  • Request Message Type : morai_msgs/SyncModeScenarioLoad

    • uint64 frame : 요구하는 frame 값

    • string file_name : 로드할 시나리오 파일 명

    • bool delete_all : Ego를 제외한 Scenario Data를 Delete후 로드 여부

    • bool load_network_connection : 네트워크 연결 여부

    • bool load_ego_vehicle_data : Ego 시나리오 로드 여부

    • bool load_surrounding_vehicle_data : 주변 npc 차량 시나리오 로드 여부

    • bool load_pedestrian_data : pedestrian 시나리오 로드 여부

    • bool load_obstacle_data : obstacle 시나리오 로드 여부

    • bool set_pause : 시나리오 로드 후 시뮬레이터 정지 여부

  • Response Message Type : morai_msgs/SyncModeResultResponse

    • bool result : 해당 요청의 성공 실패 여부

Synchronous Mode 상태 정보 Publisher

  • SyncMode Info Publisher (Sim → User)

  • Topic Name : /SyncModeInfo

  • msg : morai_msgs/SyncModeInfo

  • 타입 설명 : Synchronous Mode에관한 상태 메시지

    • bool can_send_tick : /SyncModeWaitForTick 서비스를 요청해도 되는지 여부

    • uint64 frame : 현재 프레임 카운트

    • bool status : Synchronous Mode 여부

    • string master_id : /SyncModeWaitForTick 서비스 요청 가능한 user_id

Synchronous Mode Object 추가 Subscriber

  • SyncMode Add Object Subscriber(User → Sim)

  • Topic Name : /SyncModeAddObj

  • msg : morai_msgs/SyncModeAddObj

  • 타입 설명 : Synchronous Mode에서 Object 추가 메시지

    • string name : 배치할 오브젝트의 이름

    • geometry/Vector3 position : 배치할 Object의 위치벡터

    • float64 heading : 배치할 Object의 헤딩값

    • uint64 frame : 요구하는 frame 값

Synchronous Mode Object 삭제 Subscriber

  • SyncMode Remove Object Subscriber(User → Sim)

  • Topic Name : /SyncModeRemoveObj

  • msg : morai_msgs/SyncModeRemoveObj

  • 타입 설명 : Synchronous Mode에서 Object 삭제 메시지

    • int32 unique_id : 삭제할 Object의 unique id 값

    • uint64 frame : 요구하는 frame 값