Skip to main content
Skip table of contents

고장 시나리오

: 본 페이지는 차량의 고장 시나리오 (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 창에 고장난 부분이 표시가 된다.

Driving Info

  • Tire 고장 시나리오의 경우 타이어가 고장난 방향으로 차량이 주저 앉는 모션이 보인다.

    • 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 :

FaultStatusMsg.zip

  1. 고장 시나리오의 ROS Msgs 파일을 다운로드 받은 뒤 압축을 해제한다. (msg, srv 폴더로 구성)

  2. 압축 해제한 파일을 사용 중인 morai_msg 폴더로 옮긴다.
    -msg 폴더 내부에 들어있는 파일을 사용 중인 morai_msg msg 폴더 내부로 이동
    -srv 폴더 내부에 들어있는 파일을 사용 중인 morai_msg srv 폴더 내부로 이동

  3. morai_msgCMakeLists.txt 파일 내부에 아래와 같이 내용을 추가한다.

    CODE
     add_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
     )   
  4. 추가가 완료 되었다면 사용 중인 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_OverallFaultStatusInfo_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

  • Tire : 1

  • Accel : 2

  • Brake : 3

  • Steer : 4

  • Sensor : 5

sensor_id

  • 센서 아이디 (ex. 1)

tire_index

  • 0 : Front Left

  • 1 : Front Right

  • 2 : Rear Left

  • 3 : Rear Right

fault_class

  • Timing : 1

    • 통신 지연/단절로 인한 데이터 누락 등 고장 현상

  • Hardware : 3

    • 하드 웨어 결함 등으로 인한 고장 현상

fault_subclass

  • None : 1

  • Timing

    • Loss And Timeout : 101

      • 통신 지연/단절로 인한 CAN msg 갱신 안됨

    • Delayed : 102

      • 통신 지연으로 인해 데이터 업데이트까지 시간 지연

  • Hardware

    • Puncture : 301

      • 타이어 펑크 신호

  • Hardware

    • Transform : 302

      • 센서 장착 오류 신호

        • Position Error

        • Rotation Error

JavaScript errors detected

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

If this problem persists, please contact our support.