[데브코스 자율주행 TIL] DAY40 (11/14) 🚗🛣

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

2023.11.14 DAY40

드디어!! 자이카 주행을 해보았다!!! 뭐랄까 첫 걸음마를 보는 기분이었다. 생각보다 차선을 잘 찾지 못하고 엉망이었지만 첫 주행에 기분이 좋았다! 차선을 잘 인식하지 못해서 차선을 벗어나면 답이 없다는 것과 동영상으로 확인하는 것과 실제 주행은 많이 다르다는 것을 깨달았다.

그래도 주행을 하니까!! 알고리즘과 변수값을 수정하면 주행에 성공할 수 있을 것 같다! 차선인식 알고리즘을 조금 많이 손봐야할 것 같다...

이것저것 손보고 나니 생각보다!! 주행을 잘한다ㅠㅠ 오구구 내 자이카
회전할 때 인코스를 밟는 문제가 가장 크고, 박스를 인식하여 차선을 벗어나는 경우를 해결해야겠다. 그리고 차선이 없는 경우, 있는데 인식하지 못하는 경우를 어떻게 처리할지 고민이 필요하다. 그래도 오늘 주행을 많이 해봐서 뿌듯하다!!


🚗 실습 과정 및 어려웠던 점

문제 1 : 차선 인식이 안된다 (차선인식 알고리즘 개선)

ROI 영역

  • roi의 높이를 60으로 했는데 너무 넓어서 노이즈가 많아서 에지가 너무 많이 검출된다.
  • 그래서 roi의 높이를 60에서 30으로 조정

이미지 전처리

  • 이진화를 수행하지 않아도 문제가 없고, 이진화를 함으로 인해 노이즈도 에지로 검출되어 이진화 제거
  • gray -> gaussian(필터 크기를 2) -> canny 순서로 단순화
  • gaussian 필터의 경우 2보다 크면 에지가 검출되지 않는다.

직선 검출

  • roi가 작아짐에 따라 직선 검출 hough알고리즘의 threshold 값을 작게 변경해주었다.
  • cv::HoughLinesP(canny_crop, lines, 1, CV_PI / 180, 20, 20, 5);

차선 분류

  • 왼쪽, 오른쪽 차선을 분류하는 것을 frame 중앙이 아니라 60% 정도씩 본다.
  • 왼쪽은 0~60%, 오른쪽은 40~100% 프레임 위치를 기준으로 분류한다.
  • 처음에 75%로 했는데 아래와 같이 너무 넓게 잡아서 차선이 아닌 경우도 차선으로 인식되는 경우가 생겨서 줄였다.
  • 60%로 하면 아래와 같이 노이즈가 제거된다.

문제 2 : 차선이 없거나 인식하지 못하는 경우

  • 초기화해주는 부분이 빠져 있어 과거의 값을 그대로 사용하게 되어 아래와 같이 문제가 발생했다.
  • 직선을 찾지 못한 경우 slope와 intercept를 0으로 초기화해준다.
  • 원래 온라인 차선인식 때 이렇게 했는데 클래스로 변경하는 과정에서 빠진듯하다.
  • 해결!

문제 3 : 직선 예측의 부정확함

  • 온라인 프로젝트의 경우 끊긴 차선이 있어서 직선인 경우 반대쪽 차선을 참고하는 refine_pos 함수가 있었다.
  • 하지만 이번에는 끊긴 차선이 없고, 프레임이 없을때 오류로 작동하는 것 같아서 제거했다.
  • 칼만필터를 적용해보면 좋을 것 같다.

문제 4 : 회전할 때 인코스를 밟는다.

  • 아직 해결중이다...
  • 한박자 느리게 회전하면 좋을 것 같은데 어떻게 조절해야할지 고민중이다.
  • 속도를 빠르게? PID 조정? roi 영역을 아래로?
  • 여러 가지를 적용해보며 찾아야할 것 같다.

문제 5 : 영상 저장

  • 자이카가 어떻게 움직이고, 차선을 어떻게 예측되고 있는지 확인하기 위해 자이카 카메라에서 촬영하는 자이카 주행 영상을 저장하고 싶었다.
  • 예측된 차선, pos값이 그려진 frame을 저장하고자 했다.
  • 아마도 여러 헤더파일에서 차선을 그리고 내부에서 저장하려니 오류는 나지 않는데 영상이 저장되지 않았다. (지금 생각해보면 경로 설정을 잘못한 것 같기도 하다)
  • 프레임을 매개변수로 전달하며 직선, 좌표를 그리고 main이 되는 run()부분에서 이미지를 저장하였더니 영상 저장에 성공했다.
  • 이제 자이카가 주행하면서 어떤 부분이 문제인지 확인하며 디버깅할 수 있다!!!!

PID 조절 (p_gain)

  • p_gain값을 먼저 조절하는 게 좋다고 한다. (P -> D -> I 순서로 조정)
  • p_gain값을 크게 설정하면 자이카의 바퀴가 많이 왔다갔다한다.
    • 5 : 너무 흔들린다
    • 3 : 5보다는 아니지만 여전히 흔들린다
    • 2 : 흔들림이 많이 줄었지만 여전히 흔들린다.
    • 1 : 거의 흔들림 없이 직진한다.
    • 0.5 : 올곧게 직진한다!!!!

속도 조절

  • 최대 속도를 10, 7 등 여러 값으로 해보며 실험하였다.
  • 회전할 때 인코스를 밟는 문제가 있는데 속도를 높이면 해결되지 않을까해서 높여보았지만 여전히 인코스를 밟는다ㅠㅠ

0개의 댓글