2024.01.18~2024.02.23
김정우 | 맹영욱 | 백서현 | 김병지 |
Frontend | Backend | Backend | Embedded |
전방 주시 태만을 비롯한 안전운전 불이행은 교통사고의 주 원인이다.
또한, 현재 상용화된 자율주행 레벨2, 레벨3에서 운전자는 여전히 시스템의 직접 운전 요구에 대응해야 할 의무가 있다.
따라서 사용자의 안전운전을 위해 운전 습관을 피드백해주는 모빌리티 SW를 기획하였다.
차량 센서와 내부 카메라로 차량 내/외부의 위험한 운전 상황과 운전자 자세 (e.g. 실선에서의 차선변경, 전방 주시 태만 등)를 감지한다.
이 데이터를 바탕으로 운전 점수를 산정하고, 주행 리포트를 제공한다.
추가적으로 다양한 운전 배지 획득을 통해 안전 운전에 대한 성취감과 동기 부여를 제공하는 모바일 웹 서비스를 기획했다.
홈 | 주행 중 | 주행 후 |
---|---|---|
운전점수, 주의해야 할 운전습관, 주행 코멘트 등 사용자의 전반적인 현재 상태와 주행 기록 확인 |
차량에서 주행에 대한 운전 정보를 수집 RC카-서버 통신으로 주행 정보 DB 저장 |
주행에서 누적된 데이터를 주행이 후 즉시 확인 감지된 운전 습관과 횟수를 제공 |
주행 기록 | 주행 리포트 | 배지 |
---|---|---|
사용자의 지금까지 주행을 기록 각 주행에서 감지된 운전 습관과 횟수를 확인 |
누적된 주행 데이터를 통해 얻은 사용자의 전반적인 운전 습관 피드백, 그래프 통계 제공 주행 이력, 월별 운전 점수 현황, 월별 주행 이력 및 주의해야 할 운전 습관 등 |
주행 시 특정 조건을 충족하면 배지 획득 사용자에게 동기부여와 재미 요소 추가 |
default.MP4
Detail information in this link: Here
Monitor the driver's forward attention by pupil, head pose and phone detection.
Three evaluation factors - Closed eye detection, Head pose estimation, Phone detection
Monitor the illegal lane change like changing in solid line and without direction light.
DrivenDist - Report driving distance and current veloicity.
Joystick_usb - Control RC car with joystick.
LaeDetection, lane_ex - Lane detetction with HSV(HSL) filtering.
- EC2 인스턴스에 빌드파일, 실행중인 8080 포트 없음 확인
systemctl enable codedeploy-agent
: 재부팅 시 꺼지는 CodeDeploy 자동으로 켜지게 설정
- EC2 인스턴스에는 mysqld 필요 없는데 계속 실행하면서 메모리 과부하 발생
systemctl disable mysqld
: 인스턴스 재부팅 시에도 자동으로 mysqld 안켜지게 설정- swap memory 로 메모리 확보
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
sudo chmod 600/swapfile
sudo swapon /swapfile
sudo swapon -s
sudo vi /etc/fstab
: 메모리 남은거 확인
카테고리 | 기능 | �HTTP 메서드 | URI | Request | Response |
---|---|---|---|---|---|
임베디드 | 실시간 상황 값 전달 | POST | /driving/embedded | { ”type” : 1, ”createdAt : “2024-02-12 09:51:16” } |
{ 주행 중이면 HttpStatus.OK 주행 중 아니면 HttpStatus.ACCEPTED } |
SSE | 프론트엔드 SSE통신 | POST | /driving/events | ||
홈 | 최근 주행 점수 | �GET | /home/score | { "score" : 60 } |
|
홈 | 최근 주행 3개 점수 | �GET | /home/latestScores | { "scores": [ { "reportId": 1, "score": 80 }, { "reportId": 2, "score": 70 }, { "reportId": 3, "score": 100 } ] } |
|
홈 | 최근 주행 피드백 | �GET | /home/feedback | { "feedback" : "차선 변경에 좀 더 신경써봅시다" } |
|
홈 | 주의해야할 운전 습관 | �GET | /home/recentRisks | { "recentRisks": [ { "scenarioType": 2, "scenarioName": "핸드폰 사용", "scenarioCount": 2 }, { "scenarioType": 52, "scenarioName": "실선에서 차선변경", "scenarioCount": 2 }, { "scenarioType": 51, "scenarioName": "방향지시등 안 켜고 차선변경", "scenarioCount": 1 } ] } |
|
홈 | 주행 시작 | POST | /driving/start | { ”reportId” : 1 } |
|
주행 | 주행 끝 (목적지 도착) | PATCH | /driving/end | { ”reportId” : 1 } |
|
주행 | 주행 끝 - 상세 내용 조회 | �GET | /driving/end/{report-id} | { ”reportId” : 1, ”departuredAt” : "2024-02-12 09:51:16", ”arrivedAt” : "2024-02-12 12:03:44", ”mileage” : 110.5, "score" : 80, ”scoreComment” : “지난번보다 20점이나 올랐네요! 수고하셨습니다!”, "internalSummaries": [ { "scenarioType": 1, "scenarioName": "졸음 운전", ”scenarioCount": 3 }, { "scenarioType": 2, "scenarioName": "차선 변경", ”scenarioCount": 5 } ], "externalSummaries": [ { "scenarioType": 1, "scenarioName": "차선 변경", ”scenarioCount": 2 }, { "scenarioType": 2, "scenarioName": "과속", ”scenarioCount": 1 } ] } |
|
기록 | 기록 전체 조회 | �GET | /history | { { ”reportId” : 1, ”departuredAt” : "2024-02-12 09:51:16", ”arrivedAt” : "2024-02-12 12:03:44", ”mileage” : 25.523, ”score” : 80 }, { ”reportId” : 2, ”departuredAt” : "2024-02-12 09:51:16", ”arrivedAt” : "2024-02-12 12:03:44", ”mileage” : 25.523, ”score” : 80 } } |
|
기록 | 기록 상세 조회 | �GET | /history/{report-id} | { "internalSummaries": [ { "scenarioType": 1, "scenarioName": "전방 주시 태만", "scenarioCount": 5 }, { "scenarioType": 2, "scenarioName": "졸음 운전", "scenarioCount": 1 } ], "externalSummaries": [ { "scenarioType": 51, "scenarioName": "차선 변경", "scenarioCount": 1 } ] } |
|
리포트 | (간단) 주행 이력 조회 | POST | /feedback/bio | { ”thisMonth”: 2 } |
{ "monthlyMileage": “20.2", "totalMileage": "1206.456", "latestDeparture": "2023-10-23 18:51:16", "latestArrival": "2023-10-23 19:30:44", } |
리포트 | 나의 안전 점수 조회 | POST | /feedback/score | { ”thisMonth”: 2 } |
{ ”averageScore” : 75.5 } |
리포트 | 이번달 주의 항목 - 상위 4개 | POST | /feedback/top4 | { ”thisMonth”: 2 } |
{ "topRisks": [ { "scenarioType": 2, "scenarioName": "핸드폰 사용", "scenarioCount": 2 }, { "scenarioType": 52, "scenarioName": "실선에서 차선변경", "scenarioCount": 2 }, { "scenarioType": 51, "scenarioName": "방향지시등 안 켜고 차선변경", "scenarioCount": 1 }, { "scenarioType": 3, "scenarioName": "졸음 운전 (눈)", "scenarioCount": 1 } ] } |
리포트 | 이번달 주의 항목 - 내외부 나눠서 | POST | /feedback/caution | { ”thisMonth”: 2 } |
{ "internalSummaries": [ { "scenarioType": 2, "scenarioName": "핸드폰 사용", "scenarioCount": 5 }, { "scenarioType": 1, "scenarioName": "졸음 운전(고개)", "scenarioCount": 3 }, { "scenarioType": 3, "scenarioName": "졸음 운전(눈)", "scenarioCount": 2 } ], "externalSummaries": [ { "scenarioType": 51, "scenarioName": "방향지시등 안 켜고 차선변경", "scenarioCount": 5 }, { "scenarioType": 52, "scenarioName": "실선에서 차선변경", "scenarioCount": 1 } ] } |
뱃지 | 뱃지 전체 조회 | �GET | /badge | { { "badgeId": 1, "status": 0, "name": "귀향길 운전왕", ”caption”: “시작이 반이다! 벌써 베스트 드라이버에 가까워지고 있어요.” }, { "badgeId": 2, "status": 1, "name": "베스트 드라이버", ”caption”: “시작이 반이다! 벌써 베스트 드라이버에 가까워지고 있어요.” }, { "badgeId": 3, "status": 0, "name": "피드백 만점", ”caption”: “시작이 반이다! 벌써 베스트 드라이버에 가까워지고 있어요.” } } |