[데브코스 자율주행 TIL] DAY35 (11/07)

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

2023.11.07 DAY35 😹

시간이 너무 빨리간다ㅠㅠ 분명 계속 무언가를 했는데 되돌아보면 한게 별로 없는 느낌이다... 이해하고 생각하는 시간이 많아서 그런거겠지만 조금 기운이 빠지기도 한다ㅠㅠ 이런 시간이 쌓이면 나중에 도움이 되겠지..ㅎ

오늘은 온라인 차선인식에서 구현한 내용을 클래스로 정리하는 부분을 진행했다. 클래스를 어떻게 나누어야하는지, 어떤 구조로 만들어야하는지에 대해 멘토님께서 틀을 잡아주셨지만 막상 클래스를 구현해보니 쉽지 않았다. 아직 변수들을 어디에 선언해야 좋을지에 대한 부분들이 조금 어렵다ㅠㅠ 추가적으로 정지선 인식, 프레임 중앙과 차선 중앙값을 구하는 부분을 구현하였다.

목요일부터 자이카 PID 조절을 해야할텐데 미리 PID 부분의 클래스를 만들어놓고 싶어서 강의 순서를 살짝 바꿔서 PID 부분을 먼저 들었다. PID 부분을 들었지만 이걸 클래스로 만들기는 막막하다. 그리고 PID... 직접 해보면서 값을 찾아가는게 시간이 오래 걸릴것 같았다.


🛣 차선 인식 프로젝트

  • LaneDetector 헤더 파일 작성
    • 차선 인식을 하여 차선 좌표? error?(프레임 중앙 - 차선 중앙) 값을 반환하는 클래스
    • 양쪽 차선의 좌표를 반환해야하는지 error 값을 반환해야하는지 헷갈려하고 있다...
  • 정지선 인식
    • 기울기가 0에 가깝고 화면 중앙 쪽에 위치하면 정지선으로 인식
    • 추가로 해당 프레임에서 조건에 맞는 직선이 2개 이상이면 정지식으로 인식
    • 하지만.... 정지선이 아닌 경우에도 인식되는 경우가 있고 실제 정지선도 한번밖에 인식이 안된다.
    • 조건은 조금더 느슨하게 해야할까ㅠㅠ
  • error값 계산
    • 프레임 중앙 - 차선 중앙
    • 나중에 자이카 제어를 위해 필요하다
    • 이 함수를 어떤 class에 넣어야하나 고민이다. 아마 차선 인식과 제어 부분을 합치는 부분에 작성하면 되지 않을까라고 추측중이다. 차선인식의 결과로 양쪽 차선의 좌표를 출력하고, 이 결과 좌표를 필터링과 같은 추가 작업을 수행 후에 error를 계산하고 이를 PID 함수에 넘겨주면 좋지 않을까

📝 배운 내용

필터 기반 조향각 제어

  • error 값에 필터를 적용한 후 그 결과를 모터제어 노드로 보낸다
  • 이동 평균 필터, 가중 이동 평균 필터를 주로 사용한다.
  • 이 방법보다는 PID 기반 방법을 사용한다.

PID 기반 조향각 제어

  • PID control
    • closed loop control 기법(피드백)
    • 목표값과 출력값과의 차이로 제어값을 계산
    • P, I, D 값을 합하여 사용
  • P
    • Proportional 비례
    • 피드백 제어 신호가 오차에 비례하게 만드는 비례 제어기
    • P_gain x error
    • p_gain이 크면 오버슈트 발생 (작으면 응답속도가 느리다)
    • P 제어기만 사용할 경우 정상상태 오차가 발생
  • I
    • Integral 적분
    • 적분을 이용하여 P제어에서 남아있는 정상상태 오차를 제거하는 제어 방법
    • I_gain x 누적 error
    • I_gain가 크면 오버슈트가 발생 (작으면 응답속도가 느리다)
    • 정상상태 오차를 줄일 수 있다.
  • D
    • Differential 미분
    • 미분을 이용하여 진동을 줄이고 안정성을 향상하는 제어 방법
    • D_gain x error 변화량
    • D_gain이 크면 오버슈트가 작게 발생하지만 신호가 급변하는 경우 시스템을 파괴할 수 있다.

0개의 댓글