데이터 분석 프로젝트

[팀 프로젝트] AI 포트홀 탐지 자율주행 자동차

  • -
728x90
반응형

📌 프로젝트 개요 

수행 기간 2022.11 - 2022.12
사용 데이터 1. roboflow 데이터 활용
2. 직접 포트홀 이미지 데이터 촬영
내용  빠른 도로 유지보수와 도로 교통 편의 증진을 위한
포트홀 탐지 및 정보 전송 자율주행 자동차 
수행 역할 6인 팀 내 역할 | 자료조사, 포트홀 탐지 모델(yolact 구현), 보고서 작성
사용 프로그램 및 언어 Visual Studio Code, Python
성과 프로젝트 장려상 수상

 

2022년, 대부분의 포트홀 탐지 기술은 각 지자체가 도로 유지보수에 활용할 수 있는 정보 수집을 목적으로 했다.
그렇기에 실제 주행 상황에서 포트홀을 실시간으로 탐지하기 어렵다는 한계가 존재했다.
또한 데이터가 고속도로 포트홀 데이터셋으로만 구성되어 있어, 일반도로의 포트홀은 탐지하기 어렵다는 단점이 있었다.

사용중인 도로에 대해서는 무엇보다 포트홀이 발생되자마자
최대한 빠른 시간에 보수하여 사고 발생을 미연에 방지하는 것이 중요하지만
한정된 인력으로 포트홀 실시간 검출과 즉시 보수가 현실적으로 어려운 것으로 나타났다.

이에 따라 고속도로 뿐만 아니라 일반 도로에서도 포트홀을 실시간으로 탐지할 수 있는 기술의 필요성을 느꼈고,
"AI 포트홀 탐지" 기술을 구현하고자 했다.

 


 

이에 더해 도로교통공사와 공공기관의 인건비를 감하며, 현대인의 교통 편의를 도울 수 있는 방향으로
자동차 제작을 고민하였으며, 포트홀 탐지를 통해 지자체의 도로 유지보수를 돕고,
인건비 감소, 시간과 이동의 제약을 해소하는 '자율주행' 기술을 추가하여 주제로 선정했다.

 


📑 프로젝트 보고서

 

[포트홀이란,]

 


1. 프로젝트 추진배경

 


2. PO:ING 소개

 


3. 구조도


[H/W 및 S/W 상세 설명]

더보기

▶ H/W 구현 환경 및 연동 기기

✓ 자율주행에 사용한 주요 H/W는 구매한 전동 자동차, Raspberry Pi, Arduino, Raspberry Pi Camera, Arduino Mega 2560가 있음.
✓ 포트홀 탐지에 사용한 주요 H/W는 전동 자동차, Intel® RealSense™ Depth Camera D455가 있음.

◻ Raspberry Pi 4
  라즈베리파이 재단에서 컴퓨터를 사용한 과학 교육의 증진을 위해 만든 싱글 보드 컴퓨터로, 임베디드 시스템과 컴퓨터 시스템의 특징을 동시에 가지고 있음.

◻ Arduino
 오픈 소스를 기반으로 한 단일 보드 마이크로컨트롤러로 완성된 보드와 관련 개발 도구 및 환경임. 
아두이노는 다수의 스위치나 센서로 값을 받아들여 외부 전자 장치들을 통제함으로써 환경과 상호작용이 가능한 물건을 만들어내기에 적합함.

- Raspberry PI와 Raspberry PI Camera와 연결하고, 라즈베리 파이에 아두이노 환경을 설치함. 

▶ S/W 개발 환경
다음은 프로젝트 중 시도하였던 라이브러리와 환경 체제를 모두 포함함.

✓ PC OS : Linux Ubuntu 18.04, Windows 11, Raspberry PI Raspbian
✓ Single-board computer(SBC) : Raspberry Pi 4, Arduino 
✓ Dataset Download : roboflow
✓ Language : python, C
✓ Computer Vision : Tensorflow, Pytorch,OpenCV, Nvidia

 


4. 적용 기술 & 구현

[구현 과정]

더보기

 자율주행은 Lane Detection으로 구현함. Lane Detection 방법을 2가지로 두어 학습을 하여 성능을 비교하기로 했고 그 내용은 아래와 같음.

● 1 ) 포트홀이 있는 주행 경로를 촬영한 뒤 영상 학습 후 차체가 주행 라인을 달리도록 하는 방법.
● 2 ) 직선 코스로만 주행하여 포트홀 탐지하는 방법.

 1번 방법이 구현하는데에 의미가 있다고 판단하여 1번 방법으로 진행하였으며, 1차로는 로지텍 C270 카메라를 대여해 웹캠과 아두이노를 연결해서 자율주행을 구현하려했으나 선행연구가 부족하여 라즈베리파이로 자율주행을 구현하기로 결정함.


✓ Raspverry Pi에서 차선 검출을 구현하기 위해 이미지, 영상 처리 기술을 가지고 있는 OpenCV 라이브러리를 사용함.
● 1. Perspective Transformation (원근법 변환)
 Lane Detection의 첫 단계로 프레임의 원근법 관점을 얻는 것임. 원근법 변환은 주어진 이미지 또는 영상의 원근법으로 바꾸어 필요한 정보에 대한 더 나은 인사이트를 얻을 수 있음.

● 2. Image Thresholding (이미지 분할) & Canny Edge Detection (이미지 Edge 탐지)
 Load lane의 원근법 관점을 얻었으면 다음 단계로 Image Thresholding and Canny Edge Detection를 적용함. Image Thresholding은 이미지 분할 기술로 알려짐. 일반적으로 object를 분류하는데 사용하며 Canny Edge Detection은 이미지의 edge를 찾는데 사용함.

● 3. Hough Line Transform (이미지/영상으로부터 shape 탐지)
 Hough Transform방법은 어떤 형태를 이미지 또는 영상으로 부터 탐지하는데 사용함. 우리는 Hough Line Transform 방법을 이용하여 Load line을 탐지하는데 사용함.


[Line following 결과]

더보기

✓ Hough Line Transform을 사용하여 라인을 따라가도록 구현하였으며, perspective transform도 적용함. 
✓ 그러나 디스플레이에 출력된 결과를 보면, 카메라 캘리브레이션이 필요하다고 판단되며, 시간 부족으로 인해 이 작업은 수행하지 못함. 이에 후속과제로 제시함.
✓ 좌우 각도를 조정하는 데 어려움을 겪었으며, 대체로 라인 사이를 따라가긴 했지만, 한번 라인을 벗어나면 다시 복귀하는 알고리즘이 추가적으로 필요했음.
✓ 라인을 벗어났을 때의 대책이 부족하여 이에 대한 추가적인 명령이 필요했기에 이에 대한 명령도 필요할 것으로 보임.

*카메라 캘리브레이션(camera calibration) : 2차원으로 출력되는 카메라 이미지를 3차원 공간좌표로 복원하는 과정에서, 렌즈, 이미지 센서와 렌즈의 거리 등 내부 요인의 파라미터 값을 구하는 과정

lane detection.zip
0.01MB

 

[구현 과정]

[구현 과정]

[구현 과정]

 


5. 결론

 


6. 깃허브 링크

 

Contest_code/3_2022_포스코 아카데미_척추질환환자 at main · osoomin1503/Contest_code

2021년부터 공모전 및 경진대회에 참가하여 대상부터 장려상에 입상한 코드 업로드. Contribute to osoomin1503/Contest_code development by creating an account on GitHub.

github.com

 

320x100
728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.