본문 바로가기
반응형

Capstone Design8

[Capstone Design]마치며 이번 포스팅은 캡스톤 디자인 마지막 포스팅이 될 예정입니다. 마지막에 와서는 거의 하루에 1.5~2개의 포스팅을 작성해서 금방 끝난 것 같은데요. 뭔가 급하게 끝내는 느낌도 들구요. 원래는 프로젝트의 전반적인 진행상황을 기록하려고 시작했던 포스팅이 차일피일 미루다 보니 결국 끝나고도 많은 시간이 지나서 글을 쓰게 되었는데요. 뭔가 시원섭섭하네요. 원래는 프로젝트에 관해서 모든 내용을 포스팅하려고 했습니다. 제가 맡지 않았던 부분들도 말이죠. 처음에는 그게 맞다고 생각했습니다. 다음에 제가 했던 것과 비슷한 프로젝트를 진행하면서 혹시 찾아올지도 모를 분들을 위해서도 더 자세히 써야한다고 생각을 했었습니다. 하지만 그렇게 하는 것은 포기하고 제가 진행했던 부분만 작성을 했는데요. 해당 이유는 다음과 같습니다.. 2022. 4. 19.
[Capstone Design]5. 웹캠을 이용한 실시간 차선인식 이번 시간에는 웹캠을 한 번 써봅시다. 원래 같으면 차선 인식 마지막에 넣었어야 했는데 어쩌다 보니 뒤로 밀렸네요. 이때까지 해왔던 것에서 입력해주는 이미지가 웹캠에서 찍는 이미지로 바뀌는 것뿐입니다. 빠르게 관련 코드부터 먼저 보겠습니다. capture = cv2.VideoCapture(0) capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640) capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) _, frame = capture.read() capture.release() 이번에는 한 군데에 있는게 아니라 조금 퍼져있어서 필요 코드만 가져와봤습니다. 평소처럼 제일 마지막에 전체 코드를 남겨두겠습니다. ○ capture = cv2.VideoCapture(.. 2022. 4. 18.
[Capstone Design]4. 시리얼 통신(Serial Communication) - 2 오늘은 말씀드렸던 대로 조향 파라미터를 아두이노로 보내서 처리하는 것을 진행해보겠습니다. 사실 오늘 포스팅은 반쪽짜리 포스팅이라고 할 수 밖에 없는게, 벌써 해당 프로젝트를 끝을 내고 이미 다 분해해서 처리를 했기 때문에 제가 가지고 있는 것도 카메라와 아두이노 뿐이고 일체 모터나 전선은 가지고 있지 않기 때문에 에코백 정도 까지만 구현을 하고 넘어가게 될 것 같습니다. 그래도 최대한 자세히 적어보도록 노력하겠습니다. 일단 지난 포스팅에서 시리얼 통신에 대해, 파이썬과 아두이노로 시리얼 통신을 하는 법에 대해서 간략하게 알아봤었죠. 하지만 뭐 아무 데이터나 보낸다고 우리가 원하는 동작을 해주지는 않겠죠. 그래서 우리가 이렇게 말하면 이렇게 해주고 저렇게 말하면 저렇게 해줘 라고 하는 약속을 해야합니다. .. 2022. 4. 17.
[Capstone Design]4. 시리얼 통신(Serial Communication) - 1 이번 시간에는 시리얼 통신과 파이썬에서 시리얼 통신을 하는 방법에 대해서 알아보겠습니다. 시리얼 통신(Serial Communication)이란 정기적인, 일련의, 연속된 같은 뜻을 가지고 있는 serial과 통신, 대화, 소통 등의 뜻을 갖는 communication의 합성어입니다. 한글로는 직렬 통신이라고 부릅니다만 근래에 들어서는 다들 시리얼 통신이라고 부르는 게 더 익숙한 듯합니다. 이런 시리얼 통신은 통신 방법 중에 하나이고 직렬이 있으니 병렬 통신(Parallel Communication)도 존재합니다. 시리얼 통신의 특징은 데이터를 주고 받을 때 직렬로 즉, 한 선만을 이용해서 통신을 한다는 점입니다. 예를 들어서 Serial 이라는 데이터를 보낼 때 S 보내고, e 보내고, r 보내고..... 2022. 4. 17.
[Capstone Design]3. 차선 인식(Lane Detection) - 7 아마도 이번 포스팅이 차선 인식의 마지막 포스팅이 되지 않을까 싶은데요. 지난 시간에 왼쪽&오른쪽 대표선을 검출해내는 것까지 진행을 했습니다. 차선 인식이 주제였으니까 이제 끝이라고 보면 될까요? 지난번에도 말씀을 드렸었지만 목적과 수단을 혼동해서는 안된다고 했었죠. 저희가 차선 인식 알고리즘을 구현했던 목적이 뭘까요? 차량이 주행을 함에 있어서 차선 안에서 움직이도록 하는 것이 목적이었죠. 차선 인식은 그를 위한 수단이었고요. 그렇다면 차선 인식만 해가지고 차량을 계속 차선 안에서 움직이도록 하는 것이 가능할까요? 아니죠. 그냥 선 두 개 화면에 띄운다고 갑자기 차가 자기가 알아서 움직일 리가 없죠. 그래서 우리는 차량이 차선 안에서 움직일 수 있도록 하는 파라미터를 만들어줘야겠죠. 사실 이제부터는 본.. 2022. 4. 16.
[Capstone Design]3. 차선 인식(Lane Detection) - 6 지난 포스팅까지 해서 이제 얼추 차선으로 써먹을만한 친구들만 뽑아내는 과정까지 진행했습니다. 혹시 코드를 직접 실행시켜보신 분이라면 최소 길이 트랙바를 조절하다 보면 차선 후보가 선 하나만 나오는 게 아니라 여러 개가 겹쳐있다는 사실을 눈치채셨을 것 같은데요. 이번 포스팅은 그렇게 겹쳐있는 선들을 하나로 만들고 중심 기준으로 왼쪽 차선과 오른쪽 차선을 분리해보는 시간을 가지겠습니다. 먼저 왼쪽 차선과 오른쪽 차선을 나누는 것 부터 먼저 해보겠습니다. 미리 나눠놓고 나중에 각각의 대표선을 계산하는 게 훨씬 효율적일 것 같거든요. 사실 왼쪽선 오른쪽 선을 나누는 것은 그렇게 어려운 일이 아닙니다. 잠깐 그림을 한 번 볼까요. 그림의 퀄리티는 신경쓰지 마시기 바랍니다. 왼선을 붉은색, 오른선을 푸른색으로 구분.. 2022. 4. 15.
[Capstone Design]3. 차선 인식(Lane Detection) - 5 지난 시간에는 직선으로 인식하는 최소 길이를 트랙바를 이용해서 조절하는 것까지 진행을 했었죠. 하지만 그렇게 하더라도 원하지 않는 친구들이 좀 남아있었던 것을 보셨을 겁니다. 그렇다면 우리는 이제 뭘 더 진행해야 불필요한 친구들을 걸러낼 수 있을까요? 이번 시간에는 각도를 이용해서 필터링을 진행해볼까 합니다. 눈치 빠르신 분들은 각도 얘기를 듣자마자 방법을 떠올리셨을지도 모르겠네요. 각도 얘기를 하기에 앞서서 잠깐 소실점(Vanishing Point)에 대해서 얘기를 먼저 해보겠습니다. 미술이나 사진 등의 분야에서 자주 나오는 얘기인 소실점은 원근법과 상당히 밀접한 관련이 있는데요. 우리가 저 멀리 있는 무언가를 보거나 혹은 촬영을 하면 실제로는 평행한 선들이 어떤 점으로 모여드는 것처럼 보이게 됩니다... 2022. 4. 14.
[Capstone Design]3. 차선 인식(Lane Detection) - 4 지난 시간에 허프 변환까지 진행했었죠? 오늘은 이제 이 직선을 가지고 무엇을 할지에 대해서 얘기를 드려보겠습니다. 그전에 잠깐, 우리는 왜 차선 인식을 진행하고 있나요? 가끔 수단에 집중하다 보면 목적을 잊어버리는 일이 생기기 때문에 항상 이렇게 목적이 무엇이었는지 떠올리는 습관을 가지면 좋습니다. 저 스스로에게 하는 얘기이기도 하고요. 차선 인식을 해야 하는 이유는 여기서 검출한 차선을 이용해 차량의 자율주행을 구현하기 위함이었죠. 그러기 위해서 차선만 검출하는 노력을 해왔던 거고요. 하지만 지금은 이렇게 깔끔하게 차선만 인식이 되어서 별 문제가 없는 것 같지만 여기에는 함정이 숨어 있습니다. 예시를 들어드리기 위해 다른 이미지를 가져와 봤습니다. 해당 사진에 이전 포스팅에서 사용했던 코드를 그대로 적.. 2022. 4. 13.
반응형