고장 시나리오
: 본 페이지는 차량의 고장 시나리오 (Fault Scenario) 사용법을 소개한다.
“현재 구현된 고장 종류”
Timing Fault - Loss/Time Out
Hardware Fault - Tire Punc, Sensor Position/Rotation
고장 시나리오
외부로 부터 고장 신호를 주입하여 차량, 센서를 고장 상태로 만들어 시나리오를 구성 하는데 사용
통신 프로토콜을 통해 유저가 특정 고장 신호를 주입 하면 해당 신호에 맞는 고장 시나리오가 구현된다.
고장 상태는 Timing Fault, Hardware Fault 로 나눌 수 있다.
Timing Fault : 통신 지연/단절로 인한 데이터 누락 등 고장 현상
Loss/Time Out
Delay
Hardware Fault : 하드 웨어 결함 등으로 인한 고장 현상
Tire Puncture / Sensor Installation Error
고장 상태 종류
타이어 고장
타이어 펑크에 해당
H/W Fault
차체가 고장이 난 휠 방향으로 가라 앉으며 해당 휠에 Rolling Friction 이 추가 된다.
정상적으로 직진 주행이 불가능한 상태가 된다.
조향, 엑셀러레이터, 브레이크 고장
Timing Fault (Loss/Time out)
통신 지연/단절로 인한 제어 커맨드 입력 안됨
추가 제어 입력을 받지 않고 고장 신호 주입 직전의 마지막 입력값을 유지한다.
센서 고장
GPS/IMU/LiDAR/Camera/RADAR 등 센서 각각에 고장 신호 주입 가능
Timing Fault (Loss/Time out)
통신 지연/단절로 인한 제어 커맨드 입력 안됨
고장 신호 주입 직전의 마지막 값을 유지한다.
H/W Fault
센서의 장착 위치 또는 자세 변경
시뮬레이터에 장착되어 있는 센서의 장착 Position를 변경하거나 자세에 Rotation을 입력
시뮬레이터에서 장착 정보가 변경된 센서의 입력값을 제공
GUI 를 통한 고장 상태 확인
고장 시나리오는 Driving Info 창에서 현재 상태를 확인 가능하다.
Ego차량 ‘Ctrl + 마우스 좌 클릭' → Driving Info 'Fault Status 클릭'
차량의 고장 시나리오를 정의하면 Fault Status 창에 고장난 부분이 표시가 된다.
Tire 고장 시나리오의 경우 타이어가 고장난 방향으로 차량이 주저 앉는 모션이 보인다.
Tire 가 고장 난 경우 정상적인 직진 주행이 불가능 하다.
고장 시나리오 ROS Msgs 정리
고장 시나리오 ROS Msgs 다운로드
MORAI ROS Msg가 없을 시, MORAI SIM: Drive 메뉴얼의 ‘네트워크 설정 > ROS 설정 방법 및 프로토콜’ 페이지를 참고한다. https://help-morai-sim.scrollhelp.site/morai-sim-standard-kr/ROS-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95-%EB%B0%8F-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C.1638869.html
고장 시나리오 ROS Msgs :
고장 시나리오의 ROS Msgs 파일을 다운로드 받은 뒤 압축을 해제한다. (msg, srv 폴더로 구성)
압축 해제한 파일을 사용 중인 morai_msg 폴더로 옮긴다.
-msg 폴더 내부에 들어있는 파일을 사용 중인 morai_msg 의 msg 폴더 내부로 이동
-srv 폴더 내부에 들어있는 파일을 사용 중인 morai_msg 의 srv 폴더 내부로 이동morai_msg 의 CMakeLists.txt 파일 내부에 아래와 같이 내용을 추가한다.
CODEadd_message_files( DIRECTORY msg FILES ... ... ... FaultInjection_Controller.msg FaultInjection_Sensor.msg FaultInjection_Tire.msg FaultStatusInfo.msg FaultStatusInfo_Overall.msg FaultStatusInfo_Sensor.msg FaultStatusInfo_Vehicle.msg FaultInjection_Response.msg ) add_service_files( DIRECTORY srv FILES ... ... ... FaultInjectionCtrlSrv.srv FaultInjectionSensorSrv.srv FaultInjectionTireSrv.srv )
추가가 완료 되었다면 사용 중인 work space 의 위치로 이동 하여서 catkin_make 명령어를 입력한다.
Pusblisher
FaultStatus Info
차량의 고장 상태 정보
FaultStatus Publisher (Sim → User)
Message Type : morai_msgs/FaultStatusInfo
Default Topic : /FaultStatusInfo
타입 설명 : 차량의 고장 상태에 대한 정보를 나타내는 메시지
No | Name | Type | Unit | Remarks |
---|---|---|---|---|
1 | header | Header | - | |
2 | unique_id | int32 | - | Ego 차량의 Index |
3 | vehicle | FaultStatusInfo_Vehicle | - | 차량 고장 상태 정보 |
4 | sensors | FaultStatusInfo_Sensor[] | - | 센서 고장 상태 정보 |
FaultStatusInfo_Vehicle
FaultStatusInfo_Vehicle 은 FaultStatusPublisher 에서 사용되는 목록으로 독립되어서 사용되는 ROS Topic 이 없음.
ROS message details
Message Type: morai_msgs/FaultStatusInfo_Vehicle
NOTE
No | Name | Type | Unit | Remarks |
---|---|---|---|---|
1 | accel | FaultStatusInfo_Overall | - | 엑셀 고장 상태 정보 |
2 | brake | FaultStatusInfo_Overall | - | 브레이크 고장 상태 정보 |
3 | steer | FaultStatusInfo_Overall | - | 스티어링 고장 상태 정보 |
4 | tires | FaultStatusInfo_Overall[] | - | 휠 고장 상태 정보 |
FaultStatusInfo_Sensor
FaultStatusInfo_Sensor 는 FaultStatusPublisher 에서 사용되는 목록으로 독립되어서 사용되는 ROS Topic 이 없음.
ROS message details
Message Type: morai_msgs/FaultStatusInfo_Sensor
NOTE
No | Name | Type | Unit | Remarks |
---|---|---|---|---|
1 | sensor_id | int32 | - | 센서 아이디 |
2 | sensor | FaultStatusInfo_Overall | - | 센서 고장 상태 정보 |
FaultStatusInfo_Overall
FaultStatusInfo_Overall 은 FaultStatusInfo_Sensor, FaultStatusInfo_Vehicle 에서 사용되는 목록으로 독립되어서 사용되는 ROS Topic 이 없음.
ROS message details
Message Type: morai_msgs/FaultStatusInfo_Sensor
NOTE
No | Name | Type | Unit | Remarks |
---|---|---|---|---|
1 | status | bool | - | 고장 상태 (true: 고장) |
2 | fault_subclass | int32[] | - | 고장 상태 타입 별 고장 세부 타입 정보 (1 이면 정상) |
Service
Fault Scenario Injection Vehicle Controller
차량의 고장 상태 정보
FaultInjection_Controller (User → Sim)
Service Name : /FaultInjection_Controller
srv : morai_msgs/FaultInjectionCtrlSrv
Request Message Type : morai_msgs/FaultInjection_Controller
Response Message Type : morai_msgs/FaultInjection_Response
타입 설명 :
No | Name | Type | Unit | Remarks |
---|---|---|---|---|
1 | unique_id | int32 | - | 차량 유니크 아이디 |
2 | fault_location | int32 | 고장 상태 주입 위치 | |
3 | fault_class | int32 | 고장 상태 타입 | |
4 | fault_subclass | int32 | 고장 상태 세부 타입 |
Fault Scenario Injection Tire
차량 바퀴의 고장 상태 정보
FaultInjection_Tire (Sim → User)
Service Name : /FaultInjection_Tire
srv : morai_msgs/FaultInjectionTireSrv
Request Message Type : morai_msgs/FaultInjection_Tire
Response Message Type : morai_msgs/FaultInjection_Response
타입 설명 :
No | Name | Type | Unit | Remarks |
---|---|---|---|---|
1 | unique_id | int32 | - | 차량 유니크 아이디 |
2 | tire_index | int32 | 휠 인덱스 | |
3 | fault_class | int32 | 고장 상태 타입 | |
4 | fault_subclass | int32 | 고장 상태 세부 타입 |
Fault Scenario Injection Sensor
센서의 고장 상태 정보
FaultInjection_Sensor(Sim → User)
Service Name : /FaultInjection_Sensor
srv : morai_msgs/FaultInjectionSensorSrv
Request Message Type : morai_msgs/FaultInjection_Sensor
Response Message Type : morai_msgs/FaultInjection_Response
타입 설명 :
No | Name | Type | Unit | Remarks |
---|---|---|---|---|
1 | unique_id | int32 | - | 차량 유니크 아이디 |
2 | sensor_id | int32 | 센서 유니크 아이디 | |
3 | fault_class | int32 | 고장 상태 타입 | |
4 | fault_subclass | int32 | 고장 상태 세부 타입 | |
5 | local_position_offset | geometry_msgs/Vector3 | Transform 위치 오프셋 값 | |
6 | local_rotation_offset | geometry_msgs/Vector3 | Transform 회전 오프셋 값 |
FaultInjection_Response
FaultInjection_Response 은 고장 시나리오 Service 메세지 에서 사용되는 Respones 메세지이다.
ROS message details
Message Type: morai_msgs/FaultInjection_Response
NOTE
No | Name | Type | Unit | Remarks |
---|---|---|---|---|
1 | result | bool | - | |
2 | unique_id | int32 | - | 고장 상태 타입 별 고장 세부 타입 정보 (1 이면 정상) |
3 | vehicle | FaultStatusInfo_Vehicle | - | 차량 고장 상태 정보 |
4 | sensors | FaultStatusInfo_Sensor[] | - | 센서 고장 상태 정보 |
FaultStatus 세부 설정
Name | Index |
---|---|
fault_location |
|
sensor_id |
|
tire_index |
|
fault_class |
|
fault_subclass |
|
| |
|