Synchronous Mode 사용 메세지 정의
: 본 페이지는 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 값