October 17, 2018

디바이스마트 미디어:

[35호]추측항법 모형 자동차

2014 ict 메인

2015 ICT 융합 프로젝트 공모전 우수상

추측항법 모형 자동차

글 | 아주대학교 송광근, 단국대학교 이주명, 구동균, 경희대학교 노한민

심사평

위드로봇 자율 주행 자동차에 대한 관심이 증대되는 관점에서 DR 기술을 학부생이 직접 구현하여 작품으로 제출한 점을 높이 평가합니다. 특히 사용자의 입력을 받아 차량이 움직일 수 있는 궤적으로 바꿔 주행하는 데모 동영상은 매우 인상적입니다. 반면 핵심 기술인 DR에서 sensor drift 현상을 어떻게 해결했는지의 설명이 부족하여, 최소 1~2분 동작했을 때 어떤 현상이 발생할지 궁금합니다. 만일 센서 드리트프 현상까지도 어느 정도 해결했다면 매우 훌륭한 결과이며, 그렇지 않다면 이 내용을 좀 더 보강하면 훌륭한 작품이 될 것으로 생각합니다.

칩센 주로 선박에서 사용하는 추측항법 기술을 자동차에 접목시킨 아이디어로 시대의 흐름과도 어느 정도 일치하는 면도 있고 시제품 완성도도 높아 매우 좋게 평가된다. 특히 장점으로는 스마트폰을 사용해 원하는 길을 그리면 자동으로 주행하는 등의 기능은 우수한 기능이라고 볼 수 있다. 아쉬운 점은 사용자가 접근 가능한 CCTV(카메라) 등이 존재하는 곳에만 적용 가능하도록 구성되어 있고 ‘자동’이라는 특수한 상황에 따른 이벤트 감지센서, 알람 등이 고려해야 할 부분이라고 본다.

뉴티씨 GPS를 대체하는 방법은 여러가지가 있겠지만, 이미 있는 자원을 이용하여 자율 주행을 수행한다는 점에서 플러스 점수를 주고 싶다. 또한 서버 형태로 구현되어 큰 단가 절감을 실현한 것이 또 하나의 플러스 요인이다.

펌테크 창의성이 돋보이는 출품작으로 생각된다. 핵심기술인 카메라 영상데이터를 자동차의 실제 주행 궤적경로에 적합한 데이터로 변경하여 적용하는 과정이 인상적이며, 출품자가 유튜브에 올린 출품작 관련 동작관련 동영상을 통해 일정부분 이 기술을 실제 반영한 내용을 확인할 수 있었다.

작품개요
미래 사회가 점점 자동화 되어가는 시기에 신체가 불편한 사람을 위해 자동항법 기술의 필요성이 증가하고 있다. 하지만 터널이나 건물 지하에서 수신이 잘 되지 않는 GPS기술의 단점을 보완하기 위한 기술이 필요하다고 판단하였다. 이러한 기술을 구현하기 위해, 전국에 CCTV의 개수가 수백만 대 이상인 점을 이용하여 카메라 영상을 통한 자동차 자동항법을 보완하기로 결정하였다. 이미 구글 및 현대모비스를 비롯한 국내외 대기업에서 무인자동차 개발이 활발히 이루어지고 있다. 이러한 트랜드에 맞추어 GPS를 대신할 수 있는 추측항법을 사용하여 무인 자율주행 모형차를 제작하게 되었다.

작품설명
주요 동작 및 특징
프로젝트 작품설명

35 feature ict (17)

본 프로젝트는 주차장에 주차되어 있는 사용자의 자동차를 자신의 앞까지 이동시킬 수 있다면 좋겠다는 생각에 어플리케이션을 통해 카메라영상에 접속하고 카메라영상 속의 모형자동차를 원하는 경로로 이동시키는 프로젝트를 진행하게 되었다.
프로젝트로 제작한 자율주행 모형자동차의 작동 원리는 크게 2가지로 나누어 볼 수 있다.
첫째, 추측 항법(Dead reckoning)이다. 이는 GPS와 같은 위치를 알려주는 일체의 센서없이 스스로 자신의 위치를 계산할 수 있는 방법이다. 이 추측항법의 장점은 고가의 센서 없이 자율주행이 가능하다는 점에서 비용절감의 효과를 기대할 수 있다는 점이다.
둘째, cubic Bezier curve이다. 이는 사용자가 그린 경로를 모형 자동차가 주행 가능한 곡선의 형태로 변경해주는 기술이다. 주행경로가 수직이 될 경우, 모형자동차의 최대 조향각 제한으로 인하여 모형 자동차는 주행할 수 없게 된다. 이러한 점을 극복하기 위해서 주행경로를 곡선으로 생성하고, 서보제어를 통해 모형자동차가 자율주행하게 된다.

추측 항법(Dead reckoning)
추측 항법은 운동 모델 중 Kinematic model을 이용하여 계산하였다. 추측 항법 계산은 모형자동차의 속도(v), 축간거리(L), 차량의 진행방향(ψ), 차량의 진행방향으로부터 서보제어 각도(δ) 값을 이용한다.
다음과 같은 계산으로 현재 위치 x, y값을 계산할 수 있다.

35 feature ict (36)

35 feature ict (37)

35 feature ict (35)

35 feature ict (18)

주행경로 생성(cubic Bezier curve)

35 feature ict (19)
cubic Bezier curve 계산은 경로 생성에 필요한 5가지의 점 P0, P1, P2, P3, P4을 사용한다. 다음과 같이 스마트폰에 U자 주행 궤적(빨간색 선)을 그렸다고 가정하자. 빨간색으로 그린 주행경로는 10cm 단위로 점(파란색점)을 생성한 후, 점의 좌표들을 MCU로 전송하게 된다. 전송된 좌표들은 모형자동차가 주행해야되는 지점인 웨이포인트가 된다.

35 feature ict (20)

위 그림에서 모형자동차의 현재위치(P0), 현재 위치로부터 다음 웨이포인트(P3), P3로 부터 다음 웨이포인트(P4), P0와 P3사이의 두 점 P1, P2, 현재 위치의 방향 yaw0, P3에서 P4을 바라보는 방향 yaw3을 이용하여 다음과 같이 cubic Bezier curve을 계산할 수 있다.

35 feature ict (38)

35 feature ict (39)

c = 3 * ( P1 – P0)
b = 3 * ( P2 – P1)
a = P3 – P0 – b – c
주행 궤적 = a · t3 + b · t2 + c · t + P0

서보제어

35 feature ict (21)
서보제어를 통해 모형 자동차가 주행 궤적을 따라 주행하도록 해야 한다. 서보제어는 모형자동차의 진행 방향에 따라 일정한 거리(Preview distance)의 지점에서 주행 궤적까지의 거리(epath)를 계산하고 epath값을 0으로 줄이도록 서보를 제어하면 된다.
모형자동차가 주행궤적에 따라 주행하게 되면 서보가 미세하게 떨리는 것을 확인할 수 있다. 이러한 현상은 epath값이 완전히 0으로 수렴하지 못하거나 주행 궤적이 급격하게 변화하는 부분에서 발생한다. 이러한 현상을 줄이기 위해서 저역통과 필터(LPF)를 사용하였다.

저역통과 필터(Low-Pass Filter)
저역통과 필터를 사용하는 이유는 급격한 변화 및 미세한 떨림을 줄일 수 있기 때문이다. 저역통과필터를 MCU에 사용하기 위해 코드형태로 변환하는 과정은 Tusin’s method를 사용하였다.

35 feature ict (22)

서보 제어 각도 Plot

35 feature ict (23)
※ 저역통과 필터 사용으로 인하여 서보제어의 미세한 떨림 및 급격한 변화가 줄어든 효과를 확인할 수 있다. 또한 서보제어의 빠른 동작을위하여 PI 제어기를 설계하였다.

PI Controller
PI 제어기를 사용하는 이유는 빠른 서보제어를 통하여 주행 궤적에 대한 epath의 값을 효과적으로 줄이기 위해서이다. PI 제어기 역시 MCU에 사용하기 위해 코드형태로 변환하는 과정은 Tusin’s method를 사용하여 Discrete PI controller를 설계하였다.

35 feature ict (24)

35 feature ict (25)

※ PI 제어기 사용으로, 오버슈트는 약간 발생하였지만 Rising time 및 Settling time이 현저히 줄어든 효과를 확인할 수 있으며 에러 값(epath)이 0에 가깝게 수렴하는 것을 확인할 수 있다.

Simulation Program
설계한 모형자동차가 올바르게 동작하는 것을 확인하기 위하여 MATLAB Simulink를 이용하여 시뮬레이션 프로그램을 설계하였다. 시뮬레이션을 통해 성능이 검증된 후 MCU에 설계한 코드를 옮겨 프로젝트를 완료하였다.

35 feature ict (26)
전체 시뮬레이션 프로그램 구성도
35 feature ict (27)
35 feature ict (28)

매트랩을 통한 시뮬레이션

※ 시뮬레이션을 통해 주행경로 생성, 조향 제어각도 확인, 조향 방향, 조향각에 따른 속도 감속 등의 동작을 확인할 수 있다.

전체 시스템 구성
프로젝트 구성도

35 feature ict (40)

System Architecture

35 feature ict (1)

Hardware Architecture

35 feature ict (2)

Software Architecture

35 feature ict (3)

Dead Reckoning

35 feature ict (4)

cubic Bezier curve

35 feature ict (5)

주행 알고리즘

35 feature ict (6)

개발 환경
개발 언어
· C 언어
· Java

Tool
· CodeVisionAVR C Compiler
· Eclipse IDE for Java EE Developers
· MATLAB 2014

시스템
· Dead reckoning (추측항법)
※ Kinematic model을 이용한 현재 위치계산
· Cubic bezier curve를 이용한 자동차가 운행 가능한 궤적 생성
· PI 제어
· Low-Pass filter

단계별 제작 과정

35 feature ict (2)

RC카는 시중에 판매하는 Xray사의 모델인 m18을 사용하여 제작하였다. RC카 위에 PCB판을 올려 기본적인 틀을 구성하고 PCB는 다이폴을 이용하여 나사로 고정하였다.

35 feature ict (3)

Atmega128을 사용하기 위해 LM7805 레귤레이터와 커패시터 2개(330uF, 100uF)를 이용한 5V 전원부를 제작하였다. 또한 블루투스 (ESD200) 연결을 위해서는 3.3V로 전압 다운이 필요하여, LM1117과 커패시터 2개(100uF, 10uF)를 이용해 제작하였다.

35 feature ict (4)
ATmega128과 전원부, 블루투스를 연결한 모습으로 USBISP(Version 3.5)로 다운로드를 받기 위한 핀과 시리얼 통신을 위한 핀과 DC모터 구동을 위한 핀 연결을 한다.

35 feature ict (5)
파워 서플라이를 통해 전원을 인가하여 전원부의 동작상태와 Atme ga128의 정상 동작여부를 확인하고 테스터기를 통해 안정동작 범위인지 테스트한다.

35 feature ict (6)
Xray사의 m18에 기본 장착 서보모터를 이용한 서보모터 제작 과정.
PWM을 사용하여 기본 0도 조정부터, 최대각도를 테스트하여 안정적으로 제어 가능한 한계 각이 35도라고 판단.

35 feature ict (7)

35 feature ict (10)
AM-DC-2D 모터드라이버를 이용한 DC모터의 연결 및 PCB에서의 위치 구성을 완료.

35 feature ict (8)
B포트를 사용하여 PWM을 이용한 DC모터 제어를 하였고, 모터드라이버의 데이터시트에서 1번이 PWM연결, 2번이 회전방향, 3번이 Enable임을 확인하여 Atmega128과 연결.

35 feature ict (9)
우선 1차적인 하드웨어를 완성하였고, 테스트를 통해 정상 동작 여부와 전압 전류를 테스터기를 통해 체크.

35 feature ict (11)
파워서플라이를 연결하여 모터의 회전속도와 서보모터의 방향제어 (왼쪽 35도부터 오른쪽 35도까지)를 실시.

35 ict
글로벌 카메라를 천장에 설치하여 바닥까지 연장을 하기 위해 USB연장선 3M 2개를 이용하여 노트북과 연결. 노트북에서 자바와 아파치 서버를 통해 서버의 역할을 구성.

35 feature ict (30) 35 feature ict (31)
35 feature ict (32) 35 feature ict (33)

자율주행자동차가 주행을 하기위한 궤적이 필요하므로, Geogbra 라는 수학 그래프 편집 프로그램을 이용하여, 다양한 궤적들을 실제 거리에 맞추어 제작.

35 feature ict (28)
Matlab 프로그램을 이용해, 시뮬레이션을 돌려 제작한 코드에 맞추어 궤적을 생성한 주행이 제대로 이루어지는지를 테스트하여 소스를 수정.

35 feature ict (13)
시뮬레이션을 마친 후 궤적에 따라 실제로 자율주행자동차를 테스트하는 과정. 배터리를 아직 달지 않고, 파워서플라이를 이용하여 테스트.

35 feature ict (16)

테스트 과정에서 모터 토크가 부족한 것을 체크하여, 토크가 강한 감속기어가 달린 DC모터로 교체하여 하드웨어를 구성.

35 ict 222
모든 테스트들을 해보며, 파워서플라이의 선이 필요없도록 배터리 장착이 필요함을 인식하여, 배터리 장착 후에도 안정적인 속도를 얻기 위한 12V 전원부를 제작. LM2576과 커패시터 2개(100uF, 1000uF), 인덕터(100uH), 다이오드(1N5822)를 이용하여 제작.

35 feature ict (16)
최종적으로 7V Lipo배터리를 직렬로 연결하여 14V 배터리를 무게 중심에 최대한 맞추어 연결하고, 12V 전원부를 부착한 최종형태의 하드웨어 제작.

35 feature ict (1)
카메라 영상을 이용해 노트북에서 서버 역할을 하고, 어플을 통해 자율주행 자동차가 주행할 경로를 그리면, 그에 따라 자동차가 주행하며, 주행경로를 어플로 표시해주는 모습.

 

프로젝트 영상

https://www.youtube.com/watch?v=g5Gi0Laz5cM&feature=youtu.be

회로도

35 feature ict (34)

참고문헌
· 조규상, 2002, “Bezier 곡선을 이용한 이륜 구동 로봇의 경로 생성”, 『대한전기학회』, 10-12
· 이상훈 외 2명, 2011, “교차로에서의 자율주행을 위한 베지어 곡선 기반 경로 계획”, 『한국정밀공학회』, P381-382
· Hye Ri Park, 2009, “A Dead Reckoning Sensor System and a Tracking Algorithm for Mobile Robot”, 『ICROS-SICE』, P18-21

 

Leave A Comment

*