Xycar의 단안 카메라(monocular camera) 센서만을 사용해 정해진 트랙을 정상적으로, 빠른 시간내에 완주하는 것을 목표로 한다.
C++ / ROS / OpenCV / Control method (PID, Stenley etc) / Filtering (Moving avereage, Low pass Filter etc)
객체지향 프로그래밍 구조 설계
CMake를 이용한 프로젝트 빌드
OpenCV를 이용한 차선인식 기법
Git을 이용한 프로젝트 코드 관리
PID Control Tuning
이외의 여러 제어기법 (pure pursuit, stanley ...)활용
초기 목표
: Base Code가 없는 상황에서 C++ Class 구조설계부터 진행하려고 시도했다. 아래는 ROS의 노드 통신에 대한 flowchart이다.
하지만, 결국...
처음 접해보는 C++ 코드 구조 설계 및 CMake 빌드 설계에서 많은 어려움을 겪어, 프로젝트 중간에 C++ 프로그래밍 틀이 잡혀있는 Base Code를 제공받았다.
제공받은 코드를 분석하고 공부하며 객체지향 프로그래밍의 구조 설계를 공부했다.
공부하고 적용시켜 튜닝하는데 시간이 다 가버려서 초기에 집중하고 싶었던 "여러 제어기법의 적용 경험" 목표를 달성하지 못했다.
완주 성공 / 쓰러트린 블록(4개)
주행 환경에 영향을 많이 받는 것 같다. 시험 주행 마다 주행 데이터의 편차가 심했다. 메인 및 모터 배터리의 상태에 따라서도 코너링 성능의 편차가 컸다.
따라서 프로젝트 후반에는 최적의 주행 환경과 그 때의 파라미터들을 튜닝하는 것에 집중했다.
"카메라" 만을 이용하여 "차선인식" 과제를 수행하는 알고리즘을 공부할 수 있었다.
영상처리에 대한 기본적인 개념을 적용시킬 수 있었고, 영상으로 부터 뽑아낸 데이터를 제어에 적용시키는 큰 플로우를 이해하고 목적에 맞게 조작하는 경험을 할 수 있었다.
익숙하지 않던 C++, Git, Linux, ROS 등 개발에 필요한 도구들에 대한 거부감을 줄일 수 있는 경험이었다.
Xycar 시스템에 대한 이해가 높아져 추후 진행될 프로젝트의 목적에 더 집중할 수 있는 준비가 된 것 같다.
바로 다음으로 7일간 진행되는 "장애물 회피 프로젝트"에서는 정말 "제어"에 중점을 둔 연구를 진행하도록 노력하고 싶다.