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

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

2023.11.16 DAY42

제어...어렵다ㅠㅠ 무슨 값을 어떻게 조정하면 좋을지 감이 안 잡히니 너무 답답하다. 제어를 조정해서 해결될 문제일까라는 근본적인 의문이 들기도 하지만 바꿔버리면 시간내에 힘들 것 같아서 최대한 제어로 해보기로 했다!! PID 값, 칼만필터 매개변수, 속도, angle값들을 바꿔보면서 거의 50번은 주행시켜본것 같다. 다 기록하고 영상을 저장해가며 확인했지만 너무 많은 변수를 바꾸다보니 헷갈리고 이전에 뭐했는지 기억하기 어려웠다ㅠㅠ

결국 2군데에서 계속 자이카가 이탈했고 아직 해결하지 못했다. 내일 일찍가서 이것저것 조절을 해봐야겠다. 조금 차선 이탈하는 것은 감수하고 완주를 목표로 하고 있다!! 제발 내일 완주를 성공했으면 좋겠다ㅠㅠㅠ


🚗 실습 과정 및 어려웠던 점

주행 코스이다. 아래 3개의 문제구간에서 자이카가 이탈한다. 문제구간 1과 2가 가장 큰 문제이고 이를 해결하기 위해 파라미터를 조정하다보면 구간3에서도 가끔 이탈이 발생한다.

문제 구간1

문제 구간1의 경우 우회전을 할 때 회전 각도가 적거나, 늦게 회전하면 그 후 왼쪽 차선이 가려져 이탈한다. 사실 칼만필터에서 예측한 lpos값이 0으로 느리게 돌아가서 발생하는 문제인 것 같은데 이를 해결하면 다른 곳들에서 문제가 발생한다. 제어로 최대한 조절하고자 한다. 왜냐하면 문제 구간1 바로 전에 자이카를 놓고 주행시키면 통과하기 때문이다ㅠㅠ

문제 구간2

여기가!!! 진짜 문제이다ㅠㅠ 우회전을 많이, 빨리하면 통과하는데 조금이라도 늦게, 적게하면 이탈해버린다. 그리고 왼쪽 차선을 오른쪽 차선으로 인식하여 차선을 이탈한다.... 차선 안에 제대로 놓고 시작하면 된다... 진짜 너무 답답하다ㅠㅠ

차선 pos값 못 찾을 때

차선이 없는 경우 칼만필터를 사용하여 pos값을 예측하는데 가끔 pos값이 프레임 범위 밖으로 벗어나는 경우가 생겼었다!
이를 해결하기 위해 프레임 범위에서 벗어나면 0 또는 640으로 지정해주는 부분을 추가하였다.

칼만필터 미분값 조정

차선이 인식되지 못하는 경우, 외쪽은 0, 오른쪽은 640으로 빨리 이동시키기 위해 칼만필터의 state 파라미터중 기울기 미분값을 조절해보았다. 문제 구간2가 가장 큰 문제였기에 이 부분에서 집중적으로 실험해보았다.

-50부터 -10사이의 값으로 실험을 해본 결과 -25로 결정하였다! -25보다 작아지면 너무 빨리 값이 날아가버려서 문제가 발생한다. 반대의 경우는 조금 늦게 변경되서 코너에서 회전이 작아서 차선을 이탈한다.

offset 변경

코너 부분에서 너무 빨리 회전해버려서 인코스 차선을 밟는 경우가 많았다. 이를 해결하기 위해 offset을 조금 아래로 위치하면 가까운 차선에 따라 이동하지 않을까싶어 offset을 조정해보았다.

현재 265인데 270과 275를 해본 결과, 코너에서 차선을 놓지는 경우가 발생하고 기존보다 차선을 인식하는 성능이 안좋아져서 원래값인 265로 결정하였다.

허프변환

ROI를 작게하고 나서 차선인식을 못하는 경우가 발생하여 원래 20이었던 min_line_length threshold를 10으로 변경하였다.

imshow

imshow를 제외하면 수행속도가 갑자기 확! 빨라진다. 좋은거겠지만 그러면 다시 파라미터를 수정해야하고 자이카가 어떻게 진행되는지 확인하기 어려우니 그냥 imshow를 진행한다.

angle값 조절

  • angle이 threshold를 넘으면 최대로 회전하도록 수정
  • angle을 조절하였는데 어렵다... 어떻게 잡아야할지ㅠㅠ

속도 조절

최대속도, 최소속도, 가속step, 감속step을 조절하였다.

최대속도

  • 15 ~ 25 사이에서 계속 조절
  • 15는 조금 느린 것 같고 25는 너무 빨라서 이탈하는 경우가 가끔 발생하여 일단 20으로 결정

최소 속도

  • 코너에서 최소 속도 사용
  • 5 ~ 7 사이에서 조정
  • 5의 경우 너무 느리서 인코스를 많이 밟게 된다. 하지만 차선을 이탈하는 경우는 적게 발생해서 5로 결정
  • 7의 경우 문제구간3에서 이탈하는 경우 발생

가속 step

  • 빨라지는 정도를 의미
  • 0.05였다가 직진하는 경우 가속을 위해 0.1로 결정

감속 step

  • 0.2로 결정
  • 직진 후 코너를 돌 때 속도가 빠르면 이탈하기 때문에 빠르게 감속시키기 위해 0.2로 결정
  • 0.05와 0.1인 경우 이탈하는 경우가 발생

PID 조절

이게 가장 문제이다... 어떤식으로 어떻게 조절해야할지 감이 잡히지 않았고 중간중간 알고리즘을 수정하면 또 다시 맞춰야해서 무한 반복이었다ㅠㅠ

P_gain

  • P_gain을 높이면 빠르게 목표값에 도달하지만 너무 왔다갔다하는 경향이 커져서 차선을 놓치게 된다. 그래서 보통 1보다 작은 값으로 설정한다.
  • 주로 0.6에서 0.5 사이가 좋은 것 같다.

D_gain

  • D_gain을 높이면 목표값에 빠르게 도달하는 것을 막아준다. 하지만 목표값에 도달하지 못하여 차선을 이상하게 인식하는 일이 발생한다.
  • 주로 0.05 근처의 값으로 조절하였다.

I_gain

  • I_gain을 높이면 지글거림이 생긴다. 보통 회전하는 구간에서 I_gain 값을 사용한다고 한다. 그 이유는 회전시의 목표값을 빠르게 찾기 위해서라고 한다.
  • 주로 0.0002 근처의 값으로 조절하였다.

0개의 댓글