한국도로공사 – AI를 이용한 염화물 관리시스템

한국도로공사 – AI를 이용한 염화물 관리시스템

AI Snow Removal — AI 기반 고속도로 제설 장비 제어 태블릿 시스템


프로젝트 개요

한국도로공사의 고속도로 제설 작업을 디지털 전환하는 차량 탑재 태블릿 기반 제설 관리 시스템입니다. TensorFlow Lite 기반 AI 카메라로 살포기 상태를 실시간 자동 감지하고, RS232/RS485 시리얼 통신으로 살포 장비(살포기 방향·폭·밀도, 경광등, 사이렌, 전광판)를 직접 제어하며, GPS 기반 운행 기록을 자동화합니다.

Kotlin + Jetpack Compose + MVI 아키텍처로 구현된 최신 Android 네이티브 앱입니다. 공통 UI 컴포넌트·인증·데이터 계층을 shared 모듈로 분리한 멀티모듈 구조입니다.


시스템 아키텍처

Android 태블릿 앱 + REST API 백엔드 + 시리얼 통신 하드웨어 제어로 구성된 차량 탑재형 시스템입니다.

CLIENT LAYER — Android Tablet
🚛 AI 제설 제어 앱 (AiSnowRemoval)
• AI 카메라 살포기 상태 감지 (TensorFlow Lite)
• RS232 시리얼 살포 장비 직접 제어
• 살포 방향·폭·속도·밀도 설정
• 경광등·작업등·사이렌 제어
• RTSP 스트리밍 모니터링
• USB 카메라(UVC) 연동
• 음성 안내 시스템
• GPS 자동 속도 동기화
▼ Shared Module ▼
SHARED MODULE — 공통 라이브러리
🎨 UI Layer
28+ Composable 컴포넌트
Material3 테마
라이트/다크 모드
GNB 네비게이션
📡 Data Layer
Retrofit2 + OkHttp
JWT 인증
Repository 패턴
AuthEventBus
🔌 Serial Layer
RS485/RS232 프로토콜
시리얼 포트 자동 감지
하드웨어 플로우 제어
통신 로깅
▼ ▼
BACKEND & HARDWARE
🖥️ REST API 서버
인증 (로그인·토큰 갱신)
차량·운행·부서 데이터
공통 코드 관리
⚙️ 차량 탑재 장비
살포기 (방향·폭·밀도 제어)
경광등·작업등·전광판(VMS)
사이렌·경적
GPS·속도 센서

기술 스택

구분 기술
언어 Kotlin 2.0 + Java 17
UI 프레임워크 Jetpack Compose + Material3 Design
아키텍처 패턴 MVI (Model-View-Intent) + Repository 패턴
DI Hilt (Dagger)
네트워크 Retrofit2 + OkHttp + Gson
AI / ML TensorFlow Lite (살포기 상태 감지)
카메라 UVC (USB Video Class) + RTSP 스트리밍
시리얼 통신 RS232 / RS485 프로토콜
위치 서비스 GPS Foreground Service + 속도 동기화
인증 JWT (x-auth-token) + 자동 토큰 갱신
SDK Compile SDK 35 / Min SDK 24 / Target SDK 35

주요 화면

로그인

한국도로공사 직원은 사원번호로, 외주 운전자는 임차운전 탭으로 로그인합니다. 차량 탑재 태블릿 환경에 최적화된 넘버패드 UI를 제공하며, 사번 저장 기능으로 재로그인 시 편의성을 높였습니다.

로그인 화면

홈 — 메인 대시보드

운전자 정보, 차량 상태, 운행 모드를 한눈에 확인하는 메인 대시보드입니다. 좌측에는 운전자·차량 정보와 운행 상태, 중앙에는 경광등·점멸등, EX 사이렌, 경찰음 등 장비 직접 제어 패널과 HDMI 전환, 우측에는 운행 모드 버튼이 배치되어 있습니다.

홈 대시보드 화면

살포 제어 — AI 제설 작업

AI 제설 앱의 핵심 화면입니다. 좌측에는 차량 후방 다이어그램으로 살포 방향과 상태를 시각적으로 표시하고, 우측에는 살포 방향(좌측·중앙·우측), 살포량(0~8), 차량속도(0~60), 밀도(0~SE)를 실시간 제어합니다. 하단에는 경광등·작업등 제어와 RTSP 카메라 스트리밍 버튼이 있어 후방 살포 상태를 실시간으로 모니터링할 수 있습니다. 수동 작업 모드AI 자동 살포 모드를 탭으로 전환할 수 있습니다.

살포 제어 화면

차량 등록 및 일상점검

차량 등록은 기관(본부), 지사, 차종을 선택하여 해당 차량 목록을 조회하고 도공번호·등록번호·전산번호로 차량을 식별합니다. 차량 일상점검은 원동기, 동력전달장치, 조향주행, 제동장치, 현가완충, 전기장치, 유압장치, 차체프레임 등 9개 항목에 대해 양호·요정비·요교환·파손망실 4단계로 점검 결과를 기록합니다.

차량 등록 화면
차량 일상점검 화면

설정

차량 정보(차종·등록번호·전산번호·도공번호), 장비 연결 상태(전광판 VMS·경광등·차량 통신·GPS) 실시간 모니터링, 최저밝기 설정, 화면 모드(라이트/다크) 전환, MDT ID(통신단말기) 설정, 앱 버전 정보를 관리합니다. 연결 상태는 녹색(정상)/적색(미연결)으로 직관적으로 표시됩니다.

설정 화면

MVI 아키텍처

Event → Reduce → State + SideEffect 패턴을 기반으로 한 단방향 데이터 흐름 아키텍처입니다.

MVI (Model-View-Intent) 아키텍처 흐름
View
Composable UI
사용자 인터랙션
Event
사용자 액션을
Intent로 변환
Reduce
순수 함수로
새 State 생성
State
불변 UI 상태
+ SideEffect
View → Event → ViewModel.reduce() → State → View 렌더링  |  SideEffect → 네비게이션·토스트·API 호출

모든 ViewModel은 BaseStateViewModel<State, Event, Reduce, SideEffect, DialogState>를 상속하여 5개의 타입 파라미터로 화면별 상태를 엄격하게 타입 안전하게 관리합니다. 다이얼로그 상태도 별도 타입으로 분리하여 복잡한 UI 상태를 체계적으로 처리합니다.


하드웨어 통신 구조

시리얼 통신 & 장비 제어 구조
RS485
경광등 ON/OFF
점멸등 제어
사이렌(EX/경찰음)
전광판(VMS) 메시지
HDMI 전환
RS232
살포기 장비 제어
살포 방향(좌/중/우)
살포 폭 조절
살포 밀도 설정
차량 속도 동기화
디플렉터 위치 제어
염수/모래 레벨 감지
센서 & 카메라
GPS 위치·속도
USB 카메라(UVC)
TF Lite AI 추론
RTSP 스트리밍
온도·예열 센서
시동·전원 상태
시리얼 포트 자동 감지 → 결과 캐싱 → 하드웨어 플로우 제어 → 통신 로깅 패널

모듈 구조

모듈 역할 주요 구성
shared/ 공통 라이브러리 BaseStateViewModel, 28+ UI 컴포넌트, API 서비스 5종, Repository 5종, Serial 프로토콜, LocationTrackingService
ai_snow_removal/ AI 제설 제어 앱 9개 화면 (Login, Home, Snow, CameraAI, Stream, Serial, Note, Setting + 음성 안내)

프로젝트 규모

앱 개수 1개 (AiSnowRemoval)
화면 수 9개
공통 UI 컴포넌트 28+개
API 서비스 5종 (Auth, Common, Vehicle, Drive, Depts)
시리얼 프로토콜 2종 (RS232, RS485)
AI 모델 TensorFlow Lite (살포기 상태 감지)
대상 디바이스 차량 탑재 Android 태블릿 (Landscape)