March 21, 2019

디바이스마트 미디어:

[25호]DIY 프로젝트 공모전- 차선 인식을 통한 차량의 능동적 안전시스템 개발

2013 diy 최우수

 

글 | 명지대학교 김병조, 김윤정, 오현환, 이준환, 하늘 

 

심사평
NTREX Lab 본 내용은 학부생의 졸업작품 발표로는 아주 우수한 내용이지만, 이 내용이 DIY 공모전에 어울리는지 알 수 없습니다. 만약 어울린다면, 좋은 점수를 줄 수 있지만..
싱크웍스 커다란 라인트레이서 같지만 작은 것을 움직이는 것과 큰 것을 움직이는 것에는 또 다른 기술적 고려가 필요하다. 본 프로젝트 기술은 무인 자동차를 개발하는 곳에서 필수적인 기술로 알고 있다. 기계공학과 학생들임에도 불구하고 전자, 전기적인 요소 기술이 필요한 복합 기술을 이용하여 작품을 만들었다는 것에 대해서 높게 평가한다.
펌테크 학생의 실력이라고 생각하기 어려울 정도의 작품 구성, 완성도가 돋보입니다. 영상처리, 하우징 설계, 소프트웨어 구현 사항이 아주 훌륭합니다.
JK전자 현재에도 일부 네비게이션 등에 추가 어플리케이션으로 구현이 되고 있는 기능으로 영상 처리를 통하여 중앙선 혹은 차선 침범에 대해서 Alarm을 해주는 시스템이 있습니다. 하지만 이번 과제에서는 추가적으로 결과에 대해서 적극적으로 차량을 컨트롤 하는 부분까지 진행을 한 것은 조금 더 진보한 시스템인 것 같습니다.

작품개요

제작기간 2012.04.01. ~ 2012.11.31.
제작비용 50만원 (부족비용은 장비대여 및 폐차 부품 재가공)
응모자 참여활동 요약 김병조 차량 구동시스템 구성 및 프로그래밍
김윤정 차량 기구 및 응력 해석
오현환 하드웨어 제작, 영상처리 알고리즘 설계 (교점, 방정식 유도)
이준환 영상처리 프로그래밍 및 테스트
하늘 차량 모델링 및 테스트

전기 자동차에 대한 관심이 증가하면서, 기술 개발의 패러다임이 기계시스템에서 점차 전기시스템으로 바뀌고 있다. 이와 같은 흐름에서 엔진과 같은 차량의 구동퍼텐셜을 제공하는 시스템은 전기시스템으로 점차 대체될 가능성이 매우 높지만, 보행 편의수단으로써 뛰어난 편의성을 제공하는 차량에 대한 수요는 여전히 높을 것으로 예상된다.

figure 1

차량에 대한 수요의 증가는 앞으로 차량의 기술개발은 인간에게 기술적 혜택을 제공하는 것과 더불어 안전에 대한 시스템 연구도 동시에 강구되어야 한다. 이에 따라 본 작품은 차량의 안전시스템 개발의 일환으로, 컴퓨터 비젼 기술을 이용한 차량의 안전시스템 개발에 대한 제안서이며, 그 구체적인 방법은 도로상황에서 카메라를 통해 차선을 실시간으로 인식하여 차량이 위험 상황에서 차선을 이탈하는 경우, 시스템이 능동적으로 차량 구동에 개입하여 제어하는 능동안전시스템이 탑재된 지능형 차량 개발에 있다. 시스템 개발에 있어 고려해야할 설계 요소는 크게 두 가지 사안으로 차량의 능동적 조향제어를 위한 구동시스템을 구축하는 것과 실시간으로 수집되는 영상에서 차선을 안정적으로 인식하는 기술을 확보하는 것이었다.

작품설명
3.1주요 동작 및 특징
3.1.1 Acquire Image → Set Image ROI → Lane Detecting

figure 2

 

3.1.2 Parameter → Line Equation (Two-Line : Match Point)

주요 동작을 살펴보면, 시스템은 1차적으로 캠을 통해 수집되는 영상정보를 이미지의 형태로 캡쳐하여 원본 이미지 정보를 얻어낸다. 이후 이미지는 바로 영상처리에 관여되기 이전에 영상처리에 간섭할 수 있는 불필요한 정보를 최소화 하기 위해 “Set Image ROI”라는 내장함수를 활용해 이미지를 우리가 관심이 있는 영역인 “HOT SPOT” 영역을 제외한 나머지 이미지를 삭제한다. 이후 이 당시에는 허프라인 함수를 통해 엣지를 검출하여 기본적인 라인을 검출하여 결과 이미지에 라인을 그리도록 하였다.

figure 3

앞서 이미지 상에 라인을 그릴 수 있다는 것은 이미지 필터를 통해 직선을 그리기 위한 기본적인 좌표들이 계산되었음을 어렵지 않게 예측 할 수 있다. 나아가 이는 이러한 좌표정보를 통해서 간단한 방정식을 유도할 수 있음을 의미하며, 식 정리를 통해 기본적인 좌표들을 반환받고 이를통해 두 차선의 방정식을 유도한 후 교점을 계산하여 그릴 수 있다는 것을 의미한다. 실제로는 대부분의 교점이 이미지 화면 외부로 발생되기 때문에 화면상에 그릴 수 없으나, 본 조향제어에서는 교점의 x좌표를 가지고 판단하고 직관성을 높이기 위해서 그림3에서 빨간색으로 그린 원처럼 y좌표의 경우는 limit을 두어 이미지 내에서 그릴 수 있도록 보정을 해주었다.

3.1.3 Judgement State → Control Vehicle

figure 4
영상처리를 통해 검출된 차선으로부터 교점을 구한 것은 차량의 위험상태 판단을 위한 일종의 물리적인 의미를 가지기 때문인 것으로 판단했기 때문이다. 이는 도로정보를 실시간으로 수집하는 카메라가 차량에 고정되어 있어 그림과 같은 상황이 발생되므로 카메라가 고정될 경우 두 차선 사이에서 차량의 상대적인 위치를 알 수 있을 것이라 예상하여 적용했다.

3.1.4 Process Diagram

figure 5

3.2 전체 시스템 구성

구분 설명 노트
차량 구동시스템 제어 차량의 기본적인 운동을 위한 구동, 조향,제동부를 전기, 전자적으로 자동제어를 하기위해 모터를 기본적인 액츄에이터로 사용하여 기구적인 설계 및 제작.
영상카메라 실시간 영상수집 WEB – CAM을 통해 수집된 영상정보를 실시간으로 이미지를 캡쳐하여 이미지
필터 처리를 통해 목표달성을 위한 파라미터들을 실시간으로 계산하여 차량을 제어.
Open-CV 함수
재프로그래밍하여
작성

figure 6

3.2.1 Driving System

figure 7
영상처리의 결과를 바탕으로 차량의 구동을 자동적으로 제어하는 것이 요구되었기 때문에 차량의 기본적인 운동을 위한 차량의 구동시스템은 모두 전기적으로 제어하기 용이한 모터를 액츄에이터로 선정하여 모든 차량의 설계가 진행되었다.
조향부의 경우는 맥슨 사의 24V급의 DC모터와 전용 컨트롤러를 장착하였으며, 모터의 샤프트와 랙앤 피니언이 기구적으로 연결되어 있어, 모터의 위치제어를 통해 차량의 조향을 제어할 수 있도록 설계 및 제작되었다. 구동부와 제동부의 경우 동일하게 DC모터 및 해당 컨트롤러를 장착하였고, 구동부의 경우는 감속기의 효과를 위해 기어비를 계산하여 적정한 잇수의 스프라킷을 결속하여 체인-스프라킷 형태로 구성이 되어있다. 제동부의 경우는 와어링을 통해 유압 실린더의 유압을 기계적으로 제어하게 구성하였다.
기본적으로 조향부의 경우는 상위제어기인 노트북과 컨트롤러의 USB통신을 통해 위치제어를 하고, 구동부의 경우 노트북과 시리얼통신으로 통신하고 있는 AVR보드에서 스로틀을 기계적으로 조작해 속도조절을 위한 0~5V의 아날로그 신호를 제어한다. 제동부, 역시 AVR 보드를 통해 제어되며 간단한 ON-OFF 제어를 통해 조작하도록 구성하였다.

3.2.2 Image Filtering System

fig 88
이미지 필터링 코딩환경은 기본적으로 VC# 환경에서 작성이 되었으며, 기본적으로는 OpenCV에서 제공하는 dll 파일을 참조하였고, 이를 주제에 맞도록 프로그래밍하여 전체적인 시스템을 구성하였다. 영상 이미지는 기본적으로 노트북과 연결된 캠을 통하여 정보를 실시간으로 수집받는 형태이며, 이를 위해 루프로 구성되어 있는 프로그램을 실시간으로 실행하면서 전체적인 시스템은 동작한다.

fig09
그림 9는 실제로 차선을 일직선으로 구성하여 모의실험을 진행한 그림으로 해당 그림은 관심영역을 설정하지 않은 경우와 적용한 경우를 비교 테스트를 한 화면이다. 관심영역을 설정하여 자르지 않으면 왼쪽 그림과 같은 불필요한 부분을 차선으로 인식하는 오류를 범하여 작동 오차가 발생하게 된다.

fig10

그림 10는 차선을 통해 간단한 방정식을 구성해서 교점을 인식해 도시하도록 한 화면이다. 두 차선이 검출될 경우의 연장선에 대한 교점은 차선 사이의 차량의 상대적인 위치를 나타낼 수 있는 물리적인 의미로 보고 있다.

3.3 개발 환경 (개발언어, Tool, 사용시스템)

구분 개발언어 Tool 사용시스템 노트
영상처리 프로그래밍 C# Language Visual Studio + with Open CV Notebook(상위제어기) 웹캠을 통해 실시간으로
영상처리하여구동부 제어를 위한
하위제어기 제어(USB + Serial Communication)
차량 구동부 제어 C Language AVR Studio AVR board(하위제어기) Serial Communication을 통한 DC 컨트롤러 스로틀 명령제어 (기계식)5단계 속도변경 분해능
차량 조향부 제어 C Language Visual Studio 상위제어기에 조향제어 명령 포함 모터 컨트롤러를 통해 조향모터 위치제어
모터와 랙-앤 피니언을 기구적으로 연결하여
차량의 조향 제어
차량 제동부 제어 C Language AVR Studio AVR board + DAC(하위제어기) 차량 구동부와 동일. (단순 ON-OFF 제어)

figure 11

개발환경은 기본적으로 비쥬얼 스튜디오를 통해 프로그램은 작성되었다. AVR 보드 부분은 하위제어기의 개념으로 사용되고 있으며 기본적으로 C언어로 프로그램이 작성되어있다. 상위제어기는 노트북에서 실시간으로 실행되는 프로그래밍 언어이며, 기본적으로 C#언어로 구성되어있다.

3.4 실험내용
3.4.1. RC 차량 테스트

기간 내용 실험환경
2012년도 1학기 

2012. 05. 30. ~ 2012. 06. 15

1. 직선 차선
시스템 점검 

2. 곡선 차선
시스템 점검

1. RC 모델차량 구성 : 조향 (서보모터), 구동 (DC모터), 프레임 (RC카)
2. RC 모델 전용 카메라 : DRC 3.0 (바램시스템 카메라)
3. RC 차량 제어 :
- 아트메가 보드를 통한 차량제어 (AT mega 128)
- 블루투스 모듈(FB755AX)을 통해 노트북으로부터 제어명령 수신 및 동작
4. 영상처리 (비쥬얼 C# 환경) : DRC Station을 통해 영상정보 수집 및 블루투스 명령을 통한 RC 차량 제어

fig12

 

fig13

 

각각 직선 차선에서의 실험과 곡선 차선에서의 실험을 실시한 그림이며, RC차량을 통해 1차적으로 실험을 진행하였다. RC 차량을 통한 실험은 전체적인 시스템을 점검하기 위해 실시되었으며, 실제로 제작차량에 적용하여 실험을 실시한 시점에는 프로그래밍적으로 많은 변경이 있었다.

3.4.2. 제작 차량 테스트

기간 내용
2012. 04. 01. ~
2012. 05. 30
공학설계
- 차량설계,구조해석, 제작차량 프레임제작
- RC모델 실험 차량 제작
2012. 05. 30. ~
2012. 06. 25
시스템 구축
- 제작차량 완성, 차량 구동시스템 자동제어
- RC모델 차량 무단이탈 방지 기능 실험 테스트
2012. 07. 30. ~
2012. 10. 31
모의도로 실험
- 통합 프로그램 작성, 영상 테스트 실험 (실내/외)
- 제작 차량 모의도로 실험
2012. 10. 31. ~
2012. 11. 31
실제도로 실험
- 알고리즘 보완 ( 영역분할 / 두 차선의 교점방정식)
- 제작 차량 실제도로 실험

 

fig14fig15fig16

 

figure 17

모의 실험 테스트 이후 실시된 제작 차량의 테스트는 모의적으로 조성된 공간에서 실시한 RC 차량 테스트에 비해 실제 도로 환경으로 실험이 옮겨지고 HW가 커지면서, 전체적인 퍼포먼스가 약해졌으나, 영역분할 등의 알고리즘을 강화하는 노력 등을 통해 시연 성공률을 높여 시스템의 가능성을 점검할 수 있었다.

4. 단계별 제작과정

기간 내용 실험환경
2012년도
2학기
2012. 10. 01.
~ 2012. 11. 31
1. 간이도로
모의 실험
2. 차량 작동
테스트
3. 종합실험
1. 제작차량 구성 :
- 영상처리부 :
노트북 탑재,
노트북 내장 캠을 통한 이미지 캡쳐
- 구동시스템부 :
프레임 (탄소강파이프) 용접 가공, Maxon
DC motor (24v), Controller Epos (70/10), DC
motor (36V / 1000W), DC motor (24V), DC
controller(36/24V), ATmega128,
기타 전기 부속품…
2. 실험장소 : 공학관 건물 뒤편

fig 22 fig 23 fig 24

 

fig 25

 

fig 26

fig 27  fig 28fig 30 fig 29

fig 31fig 32

제출한 본 응모작은 차량의 능동 안전 시스템 개발에 대한 시스템 구축에 대한 제안이며, 그 내용은 차량을 능동적으로 제어하기 위한 구동시스템을 설계하고, 컴퓨터 비젼분야를 활용하여 차량이 차선을 이탈하는 문제 상황에서의 안전 시스템을 제안하였으며, 제안된 시스템을 실험을 통해 검증하는 단계까지 진행하였다. 앞으로 해당 연구가 상용화단계에 이르기까지 당면한 과제들이 산적해 있는 것이 사실이지만, 학부생의 자격으로 1년 가까운 시간 동안, 실과에 준하는 프로젝트를 진행하고 개연성 있는 결과를 낼 수 있어, 개인의 역량과 팀별 협동능력을 신장시키는 좋은 계기가 된 것 같아 함께 해준 분 모두에게 감사드린다.

5. 기타

5.1. 소스코드 구조

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; // SERIAL COMMUNICATION
: PRE_UTTILIES
using System.IO.Ports; // SERIAL COMMUNICATION :
PRE_UTTILIES
using Microsoft.Win32; // SERIAL COMMUNICATION :
PRE_UTTILIES
using System.Runtime.Interop S er vices; // SER I A L
COMMUNICATION : PRE_UTTILIES
using CapstonDesignVision; // SERIAL COMMUNICATION
: PRE_UTTILIES
using EposCmd.Net; // EPOS :
using EposCmd.Net.DeviceCmdSet.Operation; // EPOS :
using OpenCvSharp; // WEB_CAM : Image
Processing
namespace CapstonDesignVision
{
public partial class Form1 : Form
{
#region SECTION 0 : INITIAL DEFINE
// 프로그램 동작 초기설정 세팅
#endregion
#region SECTION 1 : SERIAL COMMUNICATION
// 시리얼 통신 부 변수 및 함수 정의 (프로토 타입)
#endregion
#region SECTION 2 : EPOS CONTROLL
// 조향부 컨트롤러 조작 관련 변수 및 함수 정의 (프로토 타입)
#endregion
#region SECTION 3 : IMAGE
// 이미지 필터 변수 및 함수 정의 (기본 처리 필터, 영상분할, 허프직선 포함)
#endregion
#region SECTION 4 : ROOF
// 프로그램 동작 명령시 반복적으로 실행되는 타이머 루프
(이미지 수집 → 영상분할 → 영상처리 → 교점검출 → 판단 → 차량제어 → 이미지 삭제)

#endregion
}
}

5.2. 테이블 정리

구분 내용 노트
소스코드 Form1 메인 프로그램 작성 – 통합
(시리얼통신, 조향부 컨트롤, 영상처리
코드 포함.)
Form1.Designer 윈도우 리소스
globalKeyboardHook 시리얼 통신 부 클래스
참고문헌 1. h t t p:// t r a m p e r 2 . b l o g .
me/100070878701
영상처리에대한 전반적인 개념 숙지 및
프로그래밍 실무 참고
도서 – LEARNING OPEN CV 제
대로 배우기
영상처리 이론 습득
http://blog.naver.com/PostView.
n h n ? b l o g I d = m y c p p & l o g
No=120103606802
관심영역 설정 (SetImageROI 참고)
ht tp://blo g.n aver.c om/blu
e s e alh?Re dire ct = L o g&lo g
No=20044187187
무인 자율주행 차량에 대한 참고
h t t p :// c a f e . n a v e r . c o m /
opencv/7897\
Open CV KOREA 카페
Leave A Comment

*