커넥티드카 환경에서 결함포용 작업처리 모델 설계와 모듈간 통신 인터페이스 구현
커넥티드카 모빌리티 실시간 서비스를 위한 엣지 클라우드 플랫폼 개발
연구실에서 진행한 IITP 연구과제로, 스마트폰을 엣지 노드로 사용해서 작업지연시간을 줄이는 것이 목표입니다. 제 역할은 RSU를 이용한 결함포용 작업처리 모델을 설계하고 데이터 제너레이터, OBU, MEU, 클라우드간 통신 인터페이스를 구현하는 것이었습니다.
본 프로젝트에서 가정하는 환경은 다음과 같습니다:
- 미리 수집된 실제 차량 센서 데이터를 데이터 제너레이터가 OBU로 전송하며 OBU는 해당 데이터를 MEU로 전송합니다.
- MEU는 OBU로부터 전송받은 센서 데이터가 정확한지 검사하고, 센서 데이터에 근거하여 차량의 이상 여부를 판단합니다.
- MEU는 OBU로부터 전송받은 데이터를 축적하다가 일정 주기로 클라우드에 압축하여 전송합니다.
- MEU가 차량의 이상 여부를 감지한 경우 OBU로 이 사실을 알리고 OBU는 인접한 다른 OBU에 알립니다.
OBU는 데이터 제너레이터, MEU와 통신하기 위해 Go로 구현한 서버(Switcher)를 실행합니다. OBU간 통신은 인터페이스 및 개발 환경이 C만 제공되어 C로 통신 모듈(Forwarder)을 구현했습니다. Switcher는 Forwarder를 자식 프로세스로 생성하여 표준 입출력 스트림을 통해 다른 OBU와 통신이 가능하도록 구현했습니다. 데이터 제너레이터는 현재 전송되는 데이터와 데이터를 조작할 수 있는 GUI를 제공하는 프로그램으로, .NET에서 C#으로 개발했습니다. MEU는 Android에서 Java로 개발했습니다.
위 환경에서 사용자의 스마트폰인 MEU가 결함이 발생한 상황에서도 OBU의 센서 데이터를 처리하고 클라우드로 전송할 수 있는 결함포용 모델을, RSU를 이용해서 설계했습니다:
- OBU는 MEU와 연결이 끊길 경우 센서 데이터를 RSU로 전송합니다.
- RSU는 커버리지 내의 여러 OBU와 통신하며 데이터 처리를 대행합니다.
- 차량이 다른 커버리지의 RSU로 넘어갈 수 있으므로, RSU는 인접 RSU와 통신하며 필요한 경우 데이터를 이전합니다.
OBU에서 Switcher는 MEU와 WebSocket으로 통신합니다. WebSocket 스펙에서 정의하는 Ping-Pong 프레임을 동적인 주기로 MEU와 주고받도록 Switcher를 구현하여 연결 상태를 메시지 전송 지연의 반의 시간안에 감지할 수 있도록 했습니다. 만약 연결이 끊긴 경우 끊기기 직전의 데이터를 RSU로 재전송합니다. RSU는 MEU에서 결함이 발생한 경우에만 자원이 사용되므로 개인 연구목적의 서버리스 플랫폼인 Mee6aaS를 적용했습니다.