[데브코스 자율주행 TIL] DAY32 (11/02) 🛣

happy_quokka·2023년 11월 3일
0
post-thumbnail

2023.11.02 DAY32

차선 인식 프로젝트 중간 제출일이다. 3시까지 github에 제출해야한다. 어제 구현은 거의 다 진행했어서 오늘은 코드 정리와 보고서 작성을 진행하였다.


🛣 차선 인식 프로젝트

코드 정리

  • 기존 : main 함수에 다 구현
  • 기능 단위로 함수를 만들어 구현하는 것으로 정리
  • c++ 클래스는 아직 구현하기에는 지식이 부족하여... 추후에 정리하기로 하였다.
  • c++는 자료형을 지정해줘야하기 때문에 함수를 만드는 것도 어려웠다ㅠㅠ
  • 반환값이 두개인 경우는 매개변수에서 참조로 지정하여 값을 변하게 하는 방법을 사용한다.
  • 되도록 const로 매개변수를 받고, constexpr을 사용하여 상수를 생성하여 사용하고자 하였다.
  • 코드 컨벤션에 따르면 변수명은 low Camel 방식을 사용해야한다고 하는데 팀원과 나는 snake case 방법이 익숙하여 이 방법으로 통일하였다.

차선 끊김 해결

문제 : 차선이 인식되지 않는 경우 vs 검출된 좌표값이 frame 양 끝인 경우의 차이

  • 직진인 경우 반대쪽 차선의 기울기, 차선의 간격을 이용하여 끊긴 차선의 좌표를 예측하였다.
  • 처음에는 값이 존재하지 않을 때 왼쪽은 0, 오른쪽은 frame_width로 지정한 후 그 다음 예측을 진행할 때 이 값을 활용하여 예측을 수행하였다.
  • 하지만 값이 존재하지 않아서가 아니라 검출한 좌표가 0, frame_width인 경우 예측을 수행하는 문제가 발생하였다.

해결

  • 차선이 인식되지 않는 경우에 좌표값을 영상의 외부에 존재하도록 설정하여 구분하였다.

보고서 작성

온라인 차선 인식 프로젝트 보고서

  • 노션의 프로젝트 페이지에 보고서 작성
  • 알고리즘, 진행 순서, 결과에 관해 작성하고 그때의 결과 이미지를 캡쳐하여 넣었다.
  • 어려웠던 점들에 대해서도 작성하였다.
  • 추가적으로 진행해야하는 작업들에 대해서도 작성하였다.

comments

  • 멘토님이 코드리뷰를 작성해주셨다. 꼼꼼하게 사소한 부분이더라도 수정되면 좋을 부분들을 알려주셔서 코드를 수정하였다. 코드를 작성할 때 어떻게 하면 더 깔끔하고 최적화하기 좋을까를 생각하면서 작성하였지만 아직 부족한 부분이 많은 것 같다. 감사합니다!!
  • 상수 표현 : 앞에 k_ 붙이기
  • for 가독성 : 한 줄에 하나의 선언만 하기
  • doxygen : 함수 밖에 정의하기
  • push_back()보다는 emplace_back을 사용하는 것이 더 효율적이다
  • cvRound보다 std::round 사용하기
  • 변기 또는 계산식이 2번 이상 반복되면 선언하여 사용하기
  • 나눗셈을 0으로 나뉠수 있으니 assert와 같은 처리해주기 (앞에서 그럴 경우를 제외하고 다른 함수로 넘겨줬어도, 함수 자체는 독립적으로 기능하기 때문에 해당 함수만 따로 사용할 수 있으니 작성해주는 것이 좋다)
  • primitive 타입(int, double 등)은 const-reference를 사용하지 않는다.
  • 함수 매개변수를 설정할 때 out인 매개변수는 한쪽으로 몰아주는 것이 좋다.
  • 상수는 최대한 변수로 지정하여 의도를 명확히 해야한다.
  • 중요한 파라미터는 나중에 configuration으로 받는 것을 고려해봐야한다.

0개의 댓글