팀 프로젝트/자율주행 개발(baqu4)

    [Python] OpenCV로 만든 자율주행 코드 리뷰

    지금부터 본격적으로 나와 내 동료가 작성한 코드의 리뷰를 시작하겠다. 참고 잘 따라온다면 우리가 짠 코드와 그 당시 생각들을 엿볼 수 있을 것이다. OpenCV 자율주행 코드 리뷰 # LaneDetector_16.py 우리의 코드 중 가장 기본이 되는 뼈대 코드이다. 나와 내 동료는 각자 다른 방식으로 접근했다. 나는 열악한 환경을 고려하여 정확도가 조금 떨어지더라도 빠른 OpenCV를 채택하였고, 내 동료는 정확도가 중요하다고 생각하여 딥러닝을 선택하였다. 결국, OpenCV를 자율주행에 쓰는 것으로 채택했다. import numpy as np import cv2 import time from Steering import * from Preprocessing import * from StopDetect..

    [Python] OpenCV로 자율주행을 끝내며 - 회고록

    자율주행을 마치며 약 6개월 동안 자율주행을 개발하기 위해 달려왔다. 가장 먼저 고민한 것은 역시 정확도를 올리기 위해 딥러닝을 사용할 것인가, 더 빠르게 인식하고 최적화를 위해 OpenCV를 사용할 것인가였다. 여기에서 모노 카메라와 CPU만을 사용해서 자율주행을 구현해야 한다는 점이 마음에 걸렸다. 그래서 OpenCV를 채택하게 되었다. OpenCV로 콘을 인식하기란 어려운 일이었다. 특히 전처리 과정이 어려웠는데, 콘과 색상이 비슷한 배경이 너무 많았다. 노란색은 풀, 꽃 등의 색들이 같이 인식되어 노이즈가 발생했고, 파란색은 너무 어두웠다. 빨간색은 그나마 괜찮았다. 이러한 시행착오들을 해결하기 위해 많은 노력을 기울였다. 항상 인터넷을 보고 이럴 때는 어떻게 대처해야 하는지 알아보곤 했었는데, ..

    [Python] OpenCV로 자율주행 만들기(Threshold_#04)

    달라진 점 이전 포스팅까지는 색과 관련없이 오로지 오른쪽, 왼쪽의 가상 차선에 따라 점을 분류했었다. 하지만 주최측의 규정이 바뀜에 따라 기존 알고리즘에서 색상으로 분류하는 알고리즘으로 수정하게 되었다. 가상의 차선을 바탕으로 콘을 구분하는 코드가 궁금하다면 이전 포스팅을 참조하기 바란다. [Python] OpenCV로 자율주행 만들기(Threshold_03) 이전 포스팅과의 차이점 먼저 이전 포스팅을 보고 싶다면 아래 링크를 참조하기 바란다. [Python] OpenCV로 자율주행 만들기(Threshold_02) 성과물 : 먼저 OpenCV를 활용하여 만든 지금까지의 자율주행 성 codezaram.tistory.com # 업데이트된 부분 색상에 따른 좌, 우 차선 분류 알고리즘 제작 콘의 색상인 빨간색..

    [Python] OpenCV로 자율주행 만들기(Threshold_#03)

    이전 포스팅과의 차이점 먼저 이전 포스팅을 보고 싶다면 아래 링크를 참조하기 바란다. [Python] OpenCV로 자율주행 만들기(Threshold_02) 성과물 : 먼저 OpenCV를 활용하여 만든 지금까지의 자율주행 성과물을 보여주겠다. 실로 대단하였다. 위의 이 영상은 자율주행을 시연하기 전 콘을 인식하여 가상의 차선을 그어본 것이다. 이것 codezaram.tistory.com 위의 포스팅과 다르게 콘의 규정이 바뀌었다. 원래는 색상에 관계없이 좌우 차선에 가까운 점들을 모아서 왼쪽 점 집합, 오른쪽 점 집합을 만들었다. 하지만 이제는 오른쪽 콘은 노란색, 왼쪽 콘은 파란색, 정지선은 빨간색 순으로 콘들을 색깔로 구분해야 한다. 내가 개발한 코드는 전처리를 거쳐 이미지를 가공한 후 이미지에서 콘..

    [Python] OpenCV로 자율주행 만들기(Threshold_#02)

    성과물 : 먼저 OpenCV를 활용하여 만든 지금까지의 자율주행 성과물을 보여주겠다. 실로 대단하였다. 위의 이 영상은 자율주행을 시연하기 전 콘을 인식하여 가상의 차선을 그어본 것이다. 이것의 원리는 먼저 가상의 선을 미리 그어둔 후 거기에 가까운 점들을 추출하여 왼쪽 콘들, 오른쪽 콘들로 나눈다. 그 후, 이 콘들을 사용하여 다시 가상의 차선을 만들었다. 요약하자면 다음과 같다. 임의의 가상의 차선 긋기 while(true): 가상의 차선을 바탕으로 콘 인식하기 콘들을 바탕으로 다시 가상의 차선 긋기(linear regression) 하지만 아직 많은 콘들을 뽑아내지 못한다는 단점이 있었다. 이러한 단점을 보완하기 위해 먼저 콘들을 추출하는 부분을 이미지화해보았다. 콘을 추출한 곳은 흰색 네모 박스가..

    [Python] OpenCV로 자율주행 만들기(Threshold)

    이전 포스팅에서는 Canny threshold를 사용하였다. 하지만 이번에는 일반 Threshold를 사용하여 콘을 인식해 보았다. Canny threshold는 물체의 윤곽선을 따는 함수인데, 일반 Threshold는 물체의 윤곽선이 아니라 면으로 보여준다. 따라서 윤곽선만 있는 것보다 더 인식을 잘할 수 있을 것 같아서 Threshold를 사용하였다. 이전 포스팅을 보고 싶다면 아래 링크를 참조하기 바란다. [Python] Canny threshold를 이용하여_02 저번에 Canny threshold에서 추출한 물체의 좌표를 기반으로 선을 그어서 화면에 표현해 보았다. 목표 : 콘 인식 및 주행 개발환경 : IDLE 언어 : python 방식 : 단순 알고리즘(Canny threshold) 직전 포..