본문 바로가기
OpenCV

스마트 신호등, 가장 스마트한 것 (OpenCV, C언어)

by Managemnet S/W saehyeong.woo 2022. 9. 7.
SMALL

1. 제안 배경

- "횡단보도 녹색 불, 우회전해도 된다는 경찰.. 사고 나면 신호위반?

- 운전자들이 법에 대한 정확한 내용을 모르며, 가장 중요한 부분인 횡단보도  보행자를 확인하지  고 우회전하는 경우가 빈번해 결국 “횡단보도 건너던 초등생, 우회전 시내버스에 치여 사망2)”과 같은 사고가 발생

- 위와 같은 얼마  발생한 비극적인 사건을 통해 버스 기사가 우회전하며 횡단보도에 있는 초등학생  보지 못한 부주의가 있음을 확인 가능

- 우회전에서 가장 중요한 부분은 운전자가 보행자가 있음을 확인하여 우회전하기 전에 확인하고 진행   있음

- 우회전 문제를 해결하기 위한 간단한 방법은 보행자가 횡단보도를 보행할  카메라와 센서를 사용하  감지하여 이를 운전자에게 led로 정보를 제공

- 우리 조는 라즈베리 파이를 중심으로 사용하여 운전자 문제를 SW와 HW의 방법으로 해결

2.   최종 목표

- 최종 시제품인 우리 조의 스마트 신호등은 차량 우회전  보행자가 다치는 사고를 방지

- 결과 목표로는 SW와 HW를 동시에 사용하여 횡단보도  보행자를 인식

- 개정된 도로교통법에서 운전자가 보행자를 미처 보지 못하였을  도와줄  있음

- 이름에서 나타나는 것처럼 가장 스마트한 신호등이며, 신호등이라는 존재로 우리의 안전을 빛처럼  켜줄  있음

3.   제안 내용

3.1   우회전 사고를 예방하기 위한 보행자 감지 방법

1)   SW 방법

- 필요한 부품 : 라즈베리 파이 4 보드, 카메라 모듈

- 필요한 라이브러리 : ‘OpenCV’, Thonny IDE

- ‘OpenCV3)’(Open Source Computer Vision)은 실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이브 러리임. 이 라이브러리는 실시간 이미지 프로세싱에 중점을 두고 있음. 또한, 윈도우와 리눅스 등의 운영 체제에서 사용 가능한 크로스 플랫폼이며 오픈 소스 BSD 허가 하에서 무료사용이 가능함. 이러한 OpenCV 라이브러리는 TensorFlow, Torch / PyTorch  Caffe의 딥러닝 프레임워크를 지원하고 있음.

- 방법 : 라이브러리와 카메라 연결을 통한 라즈베리 파이 4 보드 내에서 사람 인식

- OpenCV 라이브러리의 사람 인식 방법 : OpenCV 라이브러리는 앞서 설명한 내용과 같이 실시간 이 미지 프로세싱에 중점을 두고 있음. 그중 HOG 알고리즘4)을 사용해 이미지 속 사람을 검출할 수 있음. HOG는 Histogram of Oriented Gradients의 약어로 영상의 지역적 그래디언트 방향 정보를 히스토그램 으로 표현해서 영상의 형태를 표현하는 방법임. 그래디언트는 기울기를 의미함. HOG의 주요 메소드와 이미지에서 사람을 검출하여 빨간색 사각형으로 처리하는 메소드는 다음과 같음.

2)   HW 방법

- 필요한 부품 : 라즈베리 파이 4 보드, PIR 센서(Passive Infrared), 마이크로파 레이더 센서

- 필요한 라이브러리 : Thonny IDE

- GPIO5) : 다용도 입출력(general-purpose input/output, GPIO)은 입력이나 출력을 포함한 동작이 런타  시에 사용자에 의해 제어될  있는, 집적 회로나 전기 회로 기판의 디지털 신호 핀임.

- 방법 : PIR 센서와 마이크로파 레이더 센서의  방법의 사람 인식을 통해 라즈베리 파이 4 보드로 전송, 값을 처리하며 사람 인식

- PIR 센서의 사람 인식 방법 : PIR 센서는 적외선을 이용하여 움직임을 감지하는 특징을 가지고 있으 며, 약자로 Pyroelectric or Passive Infrared임. 모든 보드에서 사용 가능하며 주로 아두이노와 호환성이 좋다는 특징을 가지고 있음. 또한, 가격 부분에서도 저렴하여 많은 임베디드 시스템 분야에서 사용. 스마  신호등에서 사용되는 센서 명은 ‘SEN0171’ 이며 3핀으로 구성되어 있음. 빨간색 선은 3.3v~6v 사이 입력 전압, 녹색 선은 동작이 감지되♘을  나오는 출력 전압(High:3V, Low:0V)이며 검은색 선은 GND 이고, LED Indicator는 동작이 감지될  켜짐.

 ‘SEN0171’ 센서를 라즈베리 파이의 5V 전압이 나오는 4번 핀과, GND인 6번 핀을 PIR 센서 1, 3번  연결하며, GPIO 5번인 29번 핀에 PIR 센서를 2번에 연결. 연결된 회로를 구동하기 위해 다음의 파이  코드를 사용.

PIR 센서의 경우 저렴하다는 특징과 많이 사용된다는 범용성을 지니고 있어 관련 자료들을 쉽게 찾을  있다는 장점이 존재. 그러나, 센서의 오동작률이 발생할  있다는 관점과 쉽게 망가질  있으며,  경에 예민해 사람을 정밀하게 찾기 어렵다는 단점이 있음. 이를 어느 정도 보완할  있는 센서는 Microwave를 사용한 센서로, 마이크로파 레이더 센서 모듈임.

- 마이크로파 레이더 센서의 사람 인식 방법 : 마이크로파는 라디오파와 적외선 사이의 파장과 주파수  가지고 있는 전자기파로, 보통 파장이 1 mm와 10 cm 사이의 전자기 방사. 주로 전자레인지에서  용이 되며 마이크로파 내에서도 다양한 특징을 가져 사용 용도가 나누어져 있음.

마이크로파를 이용하여 움직임을 감지하는 시스템의 기본동작 원리는 아주 간단함. 6)논문에 따르면 마 이크로파 신호가 움직이는 물체에 반사될 때, 도플러 효과로 인해 신호의 주파수가 물체의 속도에 비례 하여 변화된다고 함. 도플러 효과란 어떤 파동의 파동원과 관찰자의 상대 속도에 따라 진동수와 파장이 바뀌는 현상. 일정한 주기를 갖고 움직이는 물체로부터 반사된 신호의 주파수는 동일하게 유지되나  상이 시간에 따라 변화함. 도플러 이론에 기반으로 개발된 마이크로파 도플러 레이더 센서는 마이크로  신호가 움직이는 물체에 부딪히면,  신호의 주파수는 도플러 효과에 의해 주파수 변화가 발생하며 이를 통해 물체의 움직임을 감지할  있음.

스마트 신호등에서 사용되는 센서 명은 ‘SEN0192’ 이며 센서의 특징은 다음과 같음.

 

 

‘SEN0192’ 센서의 사양은 다음과 같음.

 

3.2   기존 기술/제품 설명  차별점 기술

- 비슷한 신호등 종류를 찾자면 없는 것으로 확인. 동명의 ‘스마트 신호등’의 경우 바닥 신호등으로 스 마트폰을 사용하여 앞에 있는 신호등을 보지 못하는 경우를 위해 바닥에 있는 신호등의 색상으로 신호 를 확인해 보행할 수 있게 함. 현재 동일 또는 비슷한 기술을 찾을 수 없어 우리 조의 스마트 신호등은 차별성을 가진다고   있음.

4.   추진 일정

- 주별 추진 일정

월/주차 1주차 2주차 3주차 4주차 5주차
3월 주제 선정  조사 우회전 사고 조사
4월 부품 선택  주문 스마트 신호등 설계
5월 스마트 신호등 SW  HW 구현
6월 신호등 점검  평가 최종 발표 스마트 신호등 정리

 

- 주별 혹은 월별 중간 산출물

(1)   주제 선정 및 조사 : 제안서 초본 및 주제 관련 기사 정리 자료, 20개 정도의 주제를 선정하여 간 단하게 정리한 주간 진도 보고서

(2)   우회전 사고 조사 : 우회전 사고 조사 기사(제안 배경 부분에서 언급한 내용), 주제와 연관된 내용  포함한 주간 진도 보고서

(3)   부품 선택 및 주문 : 디바이스 마트와 알라딘을 통해 구매한 부품 (견적서)와 이 부품들을 어떻게 사용할지 명시된 주간 진도 보고서

(4)   스마트 신호등 설계 : ‘OpenCV’ 라이브러리 설치 및 실행방법, ‘Picamera’ 포트 설치 및 실행방법, 라즈베리 파이 내에서 카메라와 ‘OpenCV’가 동시에 작동되는지 확인 가능한 코드, PIR 센서와 마이크로  레이더 센서의 데이터 시트 분석 자료, 센서를 라즈베리 파이 4 보드에서 GPIO 포트를 통해 값을   작동시키는 코드, 진행되는 과정  결과 사진을 포함하는 주간 진도 보고서

(5)   스마트 신호등 SW 및 HW 구현 : 설계를 통해 정리한 최종 코드 및 결과 사진, 동영상, 주간 진도 보고서

(6)   신호등 점검 및 평가 : 온습도에 따른 상황, 조도에 따른 상황 등 다양한 상황에서 동작하는 신호등  대한 점검  평가 자료, 평가 결과  사진 등을 기록한 주간 진도 보고서

(7)   최종 발표: 결과보고서  최종 발표 자료

(8)   스마트 신호등 정리 : 최종 발표 자료의 보완점을 수정하여 교내외 공모전과 경진대회에 참가할  있는 자료 

- 프로젝트의 수행방법은 주별 추진 일정에 따르며, 조원별 역할 분담(10번 항목에 기술)에 맞추어 진행.

5.   개발 환경

- 라즈베리 파이 OS7) : 라즈베리 파이 재단이 개발한 라즈베리 파이 전용 운영체제이며 유닉스 계열의 오픈 소스 프로그램임. 다국어로 지원이 되며 dpkg 라는 패키지 관리자를 사용. 라즈베리 파이에서 라이브러리 설치와 동작을 위해 필요.

- OpenCV 라이브러리 : 3.1 항목에서 언급한 것과 마찬가지로 라즈베리 파이 OS에서 작동하는 라이브 러리로, 신호등의 카메라를 통해 실시간 사람 인식 구동을 위한 프로그램임.

- Thonny IDE8) : 라즈베리 파이 OS 내에서 초보자를 위해 설계된 Python  통합 개발환경임. ‘OpenCV’ 라이브러리와 센서 GPIO 동작을 위한 프로그램임. 신호등의 LED 출력 동작.

- Arduino Sketch(Arduino IDE) : 신호등의 단순한 LED 모듈 동작을 위한 것으로, 아두이노 우노 보드의 작동을 위한 코드를 작성함.

6.   구성부품(디바이스 Spec)

번호 품명 성능  역할
 
1
라즈베리 파이 카메라 모듈 V2, 8MP
(RPI 8MP CAMERA
BOARD)
‘OpenCV’ 라이브러리를 사용하여 구동시키는 카메라로
라즈베리 파이 정품 카메라 모듈. 카메라를 통해 실시간으로
보행자를 인식 가능함.
2 SEN0171 PIR 센서로, 라즈베리 파이 보드와 연결해 일정 각도와
거리의 보행자를 인식.
3 SEN0192 마이크로파 레이더 센서로 라즈베리 파이 보드와 연결해 최대
10m 거리까지의 보행자를 인식.
4 라즈베리 파이 입출력 확장 보드
[RPI080001]
라즈베리 파이의 GPIO 포트를 유용하게 사용하기 위해 사용.
5 Arduino Uno (R3) 단순한 신호등 LED 모듈을 구현을 위해 사용.
6 아두이노 신호등 LED 모듈
[ELB061002]
신호등의 빨간 불과 초록 불을 구현.
7 라즈베리 파이 4 (2GB) 스타터 키트
MicroSD 용량 선택:16GB
라즈베리 파이  보드로써 사용함.

7.   flow chart

8.   구현

- 시제품은 신호등 외형을 제외한 모든 부분을 완성함. 다만, 신호등 시제품을 만들기 위해서는 외형에 대 한 정보를 알아야 하고(도로교통법과 그 외에 신호등과 관련된 법률, 신호등 업체 제작 모형 특허 등), 기존  신호등을 변형하는 것이 가능한지 전문가 자문이 필요하므로 시제품에 대해 따로 정보가 존재하지 않음.

- 라즈베리 파이는 별도의 화면이 존재하지 않아 hdmi 연결 혹은 원격 데스크탑으로 실험의 결과를 확인 가능함. 따라서 야외에서 라즈베리 파이에 대한 실험을 진행하기 위해서 원격 데스크탑을 사용하였으며 사용법은 아래와 같음.

 곳에 들어가서 사용자 PC에 맞는 OS 것으로 설치

4.   원격 데스크톱 실행

설치가 완료되면 다음을 확인하여야 함.

(사용자 PC와 라즈베리 파이가 동일 무선 AP에 연결되었는지, 라즈베리 파이의 SSH, VNC  확실 히 enable 되었는지, 라즈베리 파이에 xrdp 가 제대로 설치되었는지, 라즈베리 파이의 IP 주소를 확 실하게 찾았는지) 이상의 것들이 준비가 되었으면 VNC 사이트에 접속하여 IP 주소를 입력함

IP 주소를 입력하면 PI의 입력창이 뜨고, 설정된 ID, PW를 연결해주면 성공!

5.   성공 모습 확인

이렇게 창으로 확인할  있음!

- 구현에 대한 과정은 간단히 설명하면 다음과 같음. SW 구현의 경우, 한남대 앞 정문의 횡단보도에 있는 보행자를 감지하기 위해 라즈베리 파이에 카메라를 연결하고 이를 원격 데스크탑(VNC 프로그램)으로 제어 함. 실제 환경에서 사람이  인식되는 것을 확인함. 하지만, 윈도우 크기에 따라 인식되는 속도가 달라지는

그림 24 VNC를 통한 원격 데스크탑 확인

 이는 라즈베리 파이 자체에서 발생하는 문제임으로 해결 방안을 찾기 어려움. 야간 환경의 경우에 대해 서 조도 문제가 있는지 확인함. 어둡고 비가 온 습한 환경에서는 빛 번짐 등의 문제로 인해 사람 인식이 잘 되지 않은 점을 알게 됨. 습도가 낮을 때 조도에 대해서 실험해볼 필요성을 가짐. 또한, 빠른 속도로 처리하  방법을 모색해봐야 함.

- HW의 경우, SW와 달리 횡단보도 위인지 낮인지 밤인지 알 수 없고 센서 자체의 파로 인해 사람을 인식 하므로 사람이 없는 공터에서 실시함. 이를 통해 마이크로파 레이더 센서의 경우 최대 10m까지 인식이   것으로 확인. PIR 센서의 경우  60도 정도 5m 거리에서까지 인식이 잘된 것을 실험을 통해   

♘음. 또한, 환경에 대한 실험을 진행하였으며, 온습도에 대한 실험으로 센서에 핫팩을 대며 뜨거운 환경에 서도 사람을 잘 인식되는지 확인하였으며 대략 50~60도까지의 온도에서도 사람이 잘 인식됨. 습도의 경우 가습기와 분무기를 사용하였으며 마이크로파 레이더 센서의 경우 문제는 없♘으나, PIR 센서의 경우 습도에 약간 민감하다는 것을 확인. PIR 센서9) 단점  하나로 온도를 통해 사람을 인식하는 적외선 센서의   때문에 인식 능력이 떨어짐.

- 아두이노 우노 보드와 LED의 경우, 라즈베리 파이 보드 내에서 ‘OpenCV’와 PIR, 마이크로파 레이더 센서 를 동시에 작동해도 여러 가지 프로세스가 동시에 진행되어 속도가 느려지는데 신호등 모듈을 아두이노 우노 보드로 정리하여 진행해야 어느 정도 센서 동작과 카메라에 대한 인식이 되기 때문에 사용. (아두이  우노 보드와 라즈베리 파이를 동시에 사용하는 이유)

- 회로도 (각 모듈의 결선도)

 


아두이노 우노로 구현한 신호등 점등 모듈 라즈베리 파이 4 보드로 구현한 사람 인식 모듈

회로도는 다음과 같으며 9.6 부분에서 최종적인 시뮬레이션 결과 내용을 정리함.

- 실행 코드 (아두이노 우노) int carRed = 12;

int carYellow = 11; int carGreen = 10; int pedRed = 9; int pedGreen = 8;

 

void setup() { pinMode(carRed, OUTPUT);

pinMode(carYellow, OUTPUT); pinMode(carGreen, OUTPUT); pinMode(pedRed, OUTPUT); pinMode(pedGreen, OUTPUT);

 

digitalWrite(carGreen,HIGH); digitalWrite(pedRed, HIGH);

}

 

void changeLights() { digitalWrite(carGreen,LOW); digitalWrite(carYellow,HIGH); delay(2000);

 

digitalWrite(carYellow,LOW); digitalWrite(carRed,HIGH); delay(1000);

 

digitalWrite(pedRed,LOW); digitalWrite(pedGreen,HIGH); delay(3000);

 

for (int x=0; x<10; x++){ digitalWrite(pedGreen,HIGH); delay(250); digitalWrite(pedGreen,LOW); delay(250);

}

 

digitalWrite(pedRed, HIGH); delay(100);

 

digitalWrite(carGreen,HIGH); digitalWrite(carRed,LOW);

 

delay(10000);

}

 

void loop() {

changeLights();

}

 

- 실행 코드 (라즈베리 파이 4 보드)

#캡스톤디자인 7조 럭키세븐이조 스마트 신호등 코드 #HW : Raspberry Pi

#SW : Thonny Python IDE, Arduino IDE, openCV

#tools : Raspberry Pi Camera Module 2, SEN0171(PIR Sensor), SEN0192(Microwave Rader Sensor),

Traffic Light Module

 

from    future    import print_function import RPi.GPIO as GPIO

import time

from imutils.object_detection import non_max_suppression from imutils import paths

from imutils.video import VideoStream import os

import numpy as np import argparse import imutils import cv2

 

a=0 #value of openCV b=0 #value of PIR

c=0 #value of MICROWAVE

 

#openCV setting

cap = cv2.VideoCapture("http://192.168.0.15:8091/?action=stream") hog = cv2.HOGDescriptor() hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) vs = VideoStream(usePiCamera=True).start()

time.sleep(0.5) print(a)

 

#Connected Pin Number  PIR = 5

MICROWAVE = 6

 

#led LED=13

 

 

 

#GPIO setting  GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(PIR,GPIO.IN) GPIO.setup(MICROWAVE,GPIO.IN) GPIO.setup(LED,GPIO.OUT)

 

 

try:

 

while 1:

GPIO.output(LED,0)

 

#Detect People  frame = vs.read()

frame = imutils.resize(frame, width=350) (rects,weights)=hog.detectMultiScale(frame,winStride=(4,4),padding=(8,8),scale=1.05)

 

for(x, y , w, h) in rects:

t=cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 0, 255), 2) a=1

print("------------------CAMERA detect Moving..           ")

 

cv2.imshow("Frame", frame) key = cv2.waitKey(1) & 0xFF

 

if key == ord("s"): break

 

#Sensor 

if GPIO.input(PIR) :

print("           PIR detect Moving...-           ") b=1

time.sleep(0.05)

 

else:

 

b=0 time.sleep(0.05)

 

 

#Sensor 

if GPIO.input(MICROWAVE) :

print("------------------MICROWAVE detect Moving..           ")

c=1 time.sleep(0.05)

else:

c=0

 

 

time.sleep(0.05)

 

#If People Detected

if a==1 or b==1 or c==1: GPIO.output(LED,1)

print("           PEOPLE!!-           ") time.sleep(3.0)

GPIO.output(LED,0)

 

except KeyboardInterrupt: pass

 

cv2.destroyAllWindow() vs.stop() GPIO.cleanup()

 

9.   평가

9.1   “OpenCV’ 라이브러리와 카메라 모듈을 결합하여 실시간으로 보행자를 인식하는 실험

- 실험 방법 : 한남대 정문 횡단보도에서 라즈베리 파이 4 보드를 원격 데스크탑으로 제어하여 측정. ‘OpenCV’ 라이브러리를 동작시켜 사람을 빨간 사각형으로 지정하며, 이때의 x, y, w, h 값을 통해 사람 인 식을 shell을 통해 확인.

- 실험 결과 : 카메라를 통해 사람이  인식된 것을 확인. 다만, 윈도우의 크기에 따라 속도가 영향을    있다는 점을 알게 되♘으며, 측정을 위해 작은 크기의 윈도우로 진행하는 것이 적합하다는 부분을   됨.

9.2   다양한 환경에서의 센서 실험 (PIR 센서, 마이크로파 레이더 센서)

- 실험 방법 : 공과대학 ‘디자인씽킹스튜디오’ 강의실에서 진행하였으며, 센서의 온습도와 거리에 따른 사 람 인식을 확인하기 위해 진행. 동일 코드를 통해 환경에 따른 인식 속도와 센서 구동을 초점을 둠. 온도의 경우 핫팩으로 진행하였으며, 습도의 경우 가습기와 분무기를 사용. 거리 측정의 경우 약 10m 길이의 줄자 를 이용해 건물 내에서 거리를 측정함. PIR 센서의 경우 아두이노 우노에 연결해 아날로그값에 따른 변화량  측정하였으며, 마이크로파 레이더 센서의 경우 라즈베리 파이 GPIO로 연결하여 디지털 값을 확인함.

- 실험 결과 : 온도의 경우 두 센서 모두 이상이 없♘으며, 습도의 경우 PIR 센서만 측정이 잘되지 않았고 마이크로파 레이더 센서의 경우는 문제가 없음을 확인함. 거리의 경우 PIR 센서의 경우 약 60도 정도 예각 안에서만 인식이 되♘으며 3m 정도의 거리까지는 인식에 영향이 없♘음. 마이크로파 레이더 센서의 경우 약 10m까지 인식이 된 것으로 확인하였으며 센서의 양면에 인식이 되어 예민하고, 센서 후면의 나사를 돌 리면 거리를 줄일  있음을 확인할  있음.

- 실험 결과 : 온도의 경우 두 센서 모두 이상이 없♘으며, 습도의 경우 PIR 센서만 측정이 잘되지 않았고 마이크로파 레이더 센서의 경우는 문제가 없음을 확인함. 거리의 경우 PIR 센서의 경우 약 60도 정도 예각 안에서만 인식이 되♘으며 3m 정도의 거리까지는 인식에 영향이 없♘음. 마이크로파 레이더 센서의 경우 약 10m까지 인식이 된 것으로 확인하였으며 센서의 양면에 인식이 되어 예민하고, 센서 후면의 나사를 돌 리면 거리를 줄일  있음을 확인할  있♘음.

9.3   야외에서 PIR 센서와 마이크로파 센서의 측정

- 실험 방법 : 앞서 9.2에서 진행한 코드를 이용해 야외 공터에서 실험을 진행하여 사람 인식이 잘 되는지 확인함. 센서들은 조도 센서가 있지 않아 횡단보도 위인지, 낮인지 밤인지 등 다양한 환경을 고려할 필요가 없♘음. 단순히 사람이 얼마나 감지가  되는지에 대해 확인하였으며 결과는 다음과 같음.

- 실험 결과 : 아이패드로 원격 데스크탑을 연결하였으며 아래 shell 부분을 통해 PIR 센서와 마이크로파 레이더 센서가 인식된다는 부분을 확인할 수 있음. 아래 사진 속 사람과 센서와의 거리는 약 3~5m 사이임. PIR 센서와 마이크로파 레이더 센서 중 어느 센서에 사람이 측정되는지 확인하기 위해서는 센서에 내장된 led 불빛을 통해 우선 확인할 수 있으며(PIR 센서의 파란 불빛과 마이크로파 레이더 센서의 주황 불빛), Thonny IDE(사진 하단을 참조)의 Shell 부분을 통해 현재 어떤 센서가 사람 인식이 되는지 확인할  있음.

9.4   야간 횡단보도에서 보행자 인식 실험 (조도에 대한 카메라 실험)

- 실험 방법 : 비가 온 후 저녁 8시경의 야간 횡단보도에서 보행자가 잘 인식되는지 실험을 진행함. 실험 진행 장소는 세종시청 앞으로 유동인구가 많은 지역임. 오후까지 비가 많이 왔던 상황으로 습도가 높은 편 이며  점으로  반사가 조금 발생한 것을 확인함. 라즈베리 파이에 카메라 모듈 단독으로만 연결하여 

간에서 보행자 인식이 잘 되는지 확인함.(PIR 센서와 마이크로파 센서를 같이 연결하면 인식 속도가 늦어서 카메라 처리에 어려움이 발생해 센서를 제외한 카메라 모듈 자체만으로 실험을 진행) 횡단보도의 신호등 위치에  있으며 실험을 진행함. 실험의 결과는 아래와 같음.

- 실험 결과 : 전반적으로 카메라 자체의 성능이 휴대전화 카메라보다 매우 낮으며, 카메라 전용 소프트웨 어가 갖추어져 있지 않아 초점을 맞추는 것도 어려움이 발생함. 멀리 있는 사람이 잡히지 않으며, 빠른 속 도로 뛰어가는 사람을 잡는 부분에서도 문제가 있♘음. 다만, 근처에 있는 보행자는 빨간색 사각형으로  식된 점을 확인함. 따라서 환경에 영향이 있으며, 카메라 자체의 성능은 매우 낮다는 점을 통해 카메라 성 능을 높이면  문제를 해결할  있을 것으로 기대함.

9.5   야간 횡단보도에서 보행자 인식 실험  2 (조도에 대한 카메라 실험)

- 실험 방법 : 저번 실험에서 비가 와 습도가 약 80%로 빛 번짐이 심하여 인식률이 떨어진 것을 확인함. 그래서 습도의 문제로  번짐이 심해 인식이 되지 않는다고 느껴 습도가 60% 정도로 낮을  실험을   진행함. 동일 코드로 진행하였으며 세종 시내에서 실험을 진행함. 실험 결과는 아래와 같음.

- 실험 결과 : 실험 결과는 어제 상황보다 사람이 잘 인식이 되♘으며 낮과 비슷하게 사람이 인식된 것을 확인함. 사람이 아니지만, 빨간색 사각형이 발생하는 경우가 가끔 발생함. 이는 낮에도 비슷한 경우가 존재 하였기 때문에 조도에 대한 영향이라고 설명하기 어려움.

9.6   계획 대비 달성도 (자체평가)

- 계획 대비 달성도를 진행하기 위해 최종적으로 SW와 HW가 동시에 작동시켰을 때의 실험을 진행함. 실 험은 2022년 06월 08일에 진행되♘으며 한남대 정문 횡단보도에서 실시함. 코드는 라즈베리 파이 최종  드와 같으며 0.5초마다 1번씩 읽히도록 동작함.

- 실험 결과는  인식이 되♘지만 여러 개를 동시에 작동시키려고 하는 점으로 인해 지연이 발생하며  로 인해 오류가 발생한 것을 확인함. 또한, 라즈베리 파이 카메라가 CMOS 카메라이기 때문에 속도가 느리 며 성능이 좋지 못해 사람 인식에 큰 도움을 주지 못하였음. 만약 더 좋은 성능의 카메라 (핸드폰 내장 카 메라 정도의 성능)으로 촬영하였다면 인식률이 달랐을 것이라고 예상함. 실제로 핸드폰으로 정문 횡단보도 를 촬영하여 그 비디오를 ‘OpenCV’ 라이브러리를 통해 처리한 결과, 카메라와는 다르게 거의 사람 인식이 되♘음을 확인함. 센서의 경우 마이크로파 센서가 매우 성능이 좋아 인식이  되♘지만, PIR 센서는 일정  각도와 거리 외에 부분에서 인식이 잘되지 않은 것을 확인하였고 개선 가능한 방법을 찾아보기로 함.

계획 대비 달성도는 자료조사의 완벽성, SW  HW의 사람 인식 정확성과 마지막으로 사람 인식 정확도  중심으로 5점 만점으로 평가함. 조원들이 평가한 결과는 다음 표를 통해 확인할  있음.

조원명 자료조사 SW 사람 인식 HW 사람 인식 사람 인식 정확도
이성희 5 3 4 3
김도진 5 4 4 4
우세형 5 4 4 4
최제성 5 5 5 5
황진혁 4 4 4 3

표를 통해 자료조사는 완벽하게 진행되♘으며, SW 사람 인식에는 살짝 느려서 인식 확인이 힘든 부분이 존재하였으며, HW의 경우는 완벽했으나 센서의 특징과 같은 부족한 부분이 있음. 최종적인 스마트 신호등  사람 인식 정확도는 평균 3.점임을 통해 만점이 아닌 것에 아쉬움을 느낌.

10.   역할분담

팀원 역할
이00 신호등의 총괄 하드웨어 담당(마이크로파 레이더 센서), 보고서  발표
김00 신호등의 하드웨어(신호등 led와 관련된 자료조사, 회로도 구성)
우00 신호등의 총괄 소프트웨어 담당(‘OpenCV’라이브러리)
최00 신호등의 하드웨어(PIR 센서, 아두이노 우노 보드 구현)
황00 신호등의 소프트웨어(자료 수집, 카메라 모듈)

 

11.   기대 효과  향후 개선책

- 우리 조의 ‘스마트 신호등’을 통해 운전자가 우회전할 때 직접 횡단보도를 보지 못하여도 보행자를 보  못하고 사고가  확률을 감소할  있음. 다양한 방법으로 사람을 인식한다는 점으로 사람 인식     있다고 생각함. 이를 통해 사람을 살릴  있는 스마트 신호등임을 증명할  있음.

- 향후 개선책으로는  좋은 카메라 모듈을 사용하여 카메라 화소를 높여 ‘OpenCV’ 프로그램을 사용   사람을  인식시키는 것임. 또한, 다양한 센서들을 테스트하며 현재 사용하는 센서보다   은 센서를 사용하는 방안과 라즈베리 파이 이외의 보드(예, FPGA)를 사용해보며 적합한 환경을 구현 해보는 부분이 있음. 코드의 단순화와 멀티 쓰레드, 멀티 프로세싱을 학습하여 이를 통해 효율적인   구성을 하는 방법을 연구해볼 것임.

12.   설계구성요소  현실적 제한요소 관점에서의 분석

구분 요소 규정  사례
 
 
 
설계 구성 요소
설계목표
설정
SW와 HW를 이용해 횡단보도를 건너는 사람을 인식하여 우회전 차량과 보행자 모두의 
전을 위한 신호등 시스템
 
합성
SW : 라즈베리 파이로 ‘OpenCV’ 라이브러리를 사용하여 데이터의 파라미터 값을 조절해 카메라로 보행자 인식
HW : 라즈베리 파이와 마이크로파 레이더 센서, PIR 센서를 사용하여 사람을 감지하고 
서값을 통해 LED로 표시
 
분석
SW:‘OpenCV’ 라이브러리와 카메라 모듈을 결합해 최적의 사람 인식 방법을 찾기 위한  험을 진행
HW : PIR 센서와 마이크로파 레이더 센서의 성능을 분석하기 위해 다양한 환경에서 센서
 측정을 진행
제작 정해진 예산으로 최대의 효율을   있도록 사람 인식에 적절한 센서를 고려하여 부품을
선정 (13번 항목의 사업비 집행실적을 참조)
시험 실제 사람이 지나다니는 횡단보도를 촬영해 보행자를 인식했을    (9번 항목을 참조)
평가 평가는 9.6 항목을 참조
 
현실  제한 요소
경제성 최대의 효율을   있도록 시장 조사를 철저히 하여 저렴한 가격으로 부품을 선정하고
구매
안전성 라즈베리 파이 보드의 열로 인한 과부하를 최소화하기 위해 방열판  쿨링  부착
신뢰성 센서 하나 또는 카메라에서만 사람이 인식이 되♘을  오류가 발생할  있으므로 다양한
방법을 사용해 운전자에게 정보를 제공
미학 관련 법률에 위배되지 않은 부분에서 시각적으로 깔끔하고 좋게 보일  있도록 설정
윤리성 우회전 문제를 통한 교통사고 발생을 예방할  있도록 진행
사회 도로교통법 개정안에 대한 운전자들의 어려움을 해소
산업표준 현재 산업표준에 대한 정보  관련 법률을 검토 중에 있음
환경 4계절 모두 동작이  되기 위해 온습도  거리, 조도에 대한 특성을 고려해 설계

13.   참고 (인용) 자료

- 참고 자료

[출처] 교차로 통행방법 (서울경찰청, 서울특별시 자치경찰위원회)

* 각주 내용을 참조

- 참고 링크 https://blog.naver.com/PostView.nhn?blogId=eduino&logNo=220892296492 https://pinkwink.kr/1124 https://www.hani.co.kr/arti/society/society_general/1029211.html https://www.youtube.com/watch?v=vTFFhwAtylU https://pinkwink.kr/1124?category=926564 https://www.hani.co.kr/arti/society/society_general/1029211.html

https://blog.naver.com/PostView.nhn?blogId=dokkosam&logNo=222149404632&parentCategoryNo=&categor yNo=52&viewDate=&isShowPopularPosts=true&from=search https://soosun.tistory.com/814#:~:text=GPIO.setmode%20%28GPIO.BCM%29%20%3A%20GPIO%20%ED%95%8 0%EB%B2%88%ED%98%B8%EB%A5%BC%20BCM%20%28Broadcom%20chipspecific,%28pin%2C%20GPIO.OUT%29%20%3A%20GPIO%20%ED%95%80%EC%9D%84%20%EC%B6%9C%EB%A0%A5%20%EB%AA%A8%EB%93%9C%EB%A1%9C%20%EC%84%A4%EC%A0%95

https://dryadsoft.tistory.com/42

https://makeit402.blogspot.com/2017/08/serial-communication-between-python-and.html https://makeit402.blogspot.com/2017/08/How-to-install-arduino-IDE-on-raspberry-pi.html https://www.digikey.com.br/htmldatasheets/production/2071172/0/0/1/sen0171.html https://media.digikey.com/pdf/Data%20Sheets/DFRobot%20PDFs/SEN0192_Web.pdf https://makernambo.com/117

https://diymaker.tistory.com/113

https://www.electromaker.io/tutorial/blog/sending-sensor-data-to-twitter-using-node-red-13 https://forum.magicmirror.builders/topic/11704/update-replaced-my-pir-sensor-with-a-doppler-microwav e-sensor/10

- 시나리오 정리

 

위의  사진은 신호등의 모습과, 스마트 신호등에 대한 내용을 사진으로 정리한 것임. 라즈베리 파이를  보드로 사용하여 카메라, led, pir과 마이크로 웨이브 레이더 센서가 내장된 것을 확인할  있음. 카메라의 경우 라즈베리 파이 보드  카메라 포트에 연결되어 있으며, PIR과 마이크로 웨이브 레이더 센서는 라즈베리 파이 보드에 있는 GPIO 포트를 사용하여 정보를 수집함(Input). LED의 경우 GPIO 포트를 사용하여 출력 표시를 나타냄(Output).

마찬가지로 위의  그림은 최종적인 신호등의 구동 방법이며, 1 값을 받음을 통해 사람이 인식됨을 led로 출력함. 또한, 각각이 신호등을 커버하는 범위를 나타낸 것으로 신호등을 충분히 커버할  있음을 확인 가능함.

- 사업비 집행실적

LIST

'OpenCV' 카테고리의 다른 글

크롤링 한 이미지 사진 새로운 이미지 생성  (0) 2022.08.25