1. 기초 아이디어
아래는 자율주행 트랙 미션에 사용되는 가장 기초적인 아이디어들이다. 이외에도 다양한 방법이 존재한다.
1.1. 차선
- 기초
영상 → grayscale 변환 → 이진화 변환 → 차선 찾기(흰색이 많이 모여 있는 곳)
- 허프 변환(Hough Transform)
영상 → grayscale → blur → canny edge→ ROI → hough transform(직선 검출)

- ENet
A Deep Neural Network Architecture for Real-Time Semantic Segmentation

1.2. 직선, 곡선 판단
- 양쪽 차선의 중점과 화면 중앙의 일치 여부를 판단 → 벗어난 정도에 따라 조향(e.g. 3픽셀에 1도씩)
* 차폭을 알면 반대쪽 차선의 위치를 계산할 수 있기 때문에 양쪽 차선을 모두 찾을 필요는 없다.
1.3. 정지선, 횡단보도
- 화면 하단에 ROI 설정 → 하얀색 비율이 높으면(or 수평선이면 정지선) → 도형 개수를 카운트(OpenCV) → 한 개면 정지선, 여러 개면 횡단보도
1.4. 신호등
- 화면 상단에 ROI 설정 → (수평을 이루는) 연속된 동그라미 찾기(OpenCV) / YOLO 활용 → 명도로 신호등 상태 판단
* 영상 처리에서 색상으로 판단하는 것은 위험하다.(?)
1.5. 언덕
- IMU 센서로 언덕 주행임을 인식 → 천천히 양쪽 차선을 이용하여 주행
* 언덕에서는 차선이 항아리 모양으로 왜곡된다. 이때 한쪽 차선만을 활용하면 곡선 주행으로 인식하게 된다.
1.6. 장애물
- 라이다 활용
- 로터리 진입, 차선 변경에도 활용된다.
- 카메라만으로 할 수 있을 텐데
1.7. QR 코드
- 지금 어떤 미션을 수행해야 하는지 알려주며(표지판 역할), 이 미션에 필요한 코드를 실행하면 된다.
- 항상 동작해야 하는 코드들
차선 인식&주행, 정지선 인식, 차량 멈춤과 출발, 장애물 감지 등
- 딥러닝을 활용해 QR 코드 없이도 스스로 상황을 인식하여 주행하는 것은 궁극적인 목표 중 하나
2. 여러 가지 프로젝트
자율주행 소프트웨어는 규칙 기반 + 학습 기반을 적절히 활용해야 한다. 아래는 여러 가지 자율주행 프로젝트이며 이외에도 주제는 다양하다.
2.1. YOLO
- YOLO를 활용하여 차, 사람 뿐만 아니라 현재 상황을 인식
e. g. 3구 신호등, 4구 신호등, 회전 로터리, 언덕, 3차선 등
- 사람을 쫓아가는 주행
2.2. 강화학습
가장 기본적인 모델인 DQN을 적용하여, 적절한 보상값을 부여하며 많은 횟수의 반복 주행을 통해 시뮬레이터에서 벽과 충돌하지 않고 빠르게 주행하도록 만들 수 있다.
2.3. End-to-End 자율주행
주행 영상과 조향각 데이터를 학습하여 자율주행을 구현한다. Perception, Planning, Control을 구분하지 않는 것이 특징이다.
2.4. Adaptive Cruise Control
앞차와의 거리를 유지하도록 속도를 조절한다.
2.5. PID 제어
주행 시 차량이 흔들리지 않도록 제어한다.
2.6. 주차(직각/평행)
빈 공간을 확인하여 주차 가능 여부를 판단하고 주차한다.
2.7. 비보호 좌회전
고려할 상황이 많은 Task이다. (규칙 기반 vs. 학습 기반)
2.8. 고속 코너링(드리프트)
📙강의 - (주)자이트론 대표이사 허성민