담당: 차선인식, 제어

 

가. 개요

차선인식 및 차선인식 정보를 제어노드에 msg 정보 제공.

제어노드에서 최적의 제어값(속도, 조향)을 찾아 모터 노드로 메시지를 보내어 구동시키기.

차선인식의 알고리즘은 다음과 같습니다. 학습했던 houghlinesp 함수를 이용해 hough line을 만들어주고 roi 상에서 4개의 좌표의 평균인 값을 차선의 좌표값(Lpos, Rpos)으로 설정하였습니다. 좌측, 우측 차선 좌표값의 center 좌표 값과 자이카 자체의 center값의 차이 값을 구하여 좌방향/우방향을 결정할 수 있습니다. 차선인식부분에서 차선 정보(lpos, rpos, Angle)를 제어 노드에 넘겨줍니다.

 
나. 문제와 해결방법
1. 차선인식:
1) 노이즈로 인한 지면의 스크래치를 차선으로 오인식.
  -> blur , erode 기법을 통해 해결하였습니다. (blur를 한 번 적용한것과 세 번적용한것에 노이즈 제거에 대한 차이가 있기에, 세 번 적용하였고 노이즈 문제는 해결했지만, 조그만한 noise 또한 제거 목적으로 erode를 적용하였습니다)

이미지 전처리 전

이미지 전처리 후 (noise 제거)

 

 


2) 정지선을 차선으로 오인식.

y = ax + b 에서 기울기 a와  y절편 b가 0이 아닌 모든 라인들에 대해서 left line 과 right라인 즉 차선라인 좌/우를 구분.

정지선의 특성은 기울기가 차선에 비해 낮다는 것입니다. 기울기가 약 -0.2 ~ 0.2 정도 가지고 있으며 적용했던 hough line함수를 통해서 나온 직선의기울기가 -0.2 ~ 0.2 라 하면 left/right line리스트에 정보를 넣지 않게 하여 문제 해결.

 

기울기 변화 전

 

기울기 변화 후

 


3) 벽에 의해 차선이 튀는 현상
왼쪽으로 가는 곡선 구간에서 차선이 아닌 벽의 하단부분 검정색 영향을 받아 차선을 잡는 line이 튀는 경향이 있었습니다. 전체 상황을 고려해서 roi영역을 줄임으로써 벽 부분의 영향을 최소화 했습니다.(다만, 벽의 영향력은 적기에 기존 그대로 가도 문제는 없었습니다.)

 

ROI Width 크기 변경 전/후

1256번째 이미지

 

4) 갈림길 영역

갈림길 영역에서 차선을 제대로 인식하지 못하는 문제가 발생했습니다. 이에 일정 갯수의 프레임에서 두개의 차선이 없다면 우측 방향으로 이동하기 위한 조향각을 제어로 보내려 했습니다.

 

 


5) 차선을 벗어나서 주행
갈림길 영역에서 자이카를 차선인식과 제어 알고리즘 통해서 테스트 했을 때, 우측차선을 침범하여 주행하는 경우가 있었습니다. 이 때 출발 선 위치를 잘 지정하여 우측 차선을 침범하는 경우를 방지하고자 했습니다.

회고: USB Cam으로부터 실세계의 이미지를 받아오는 환경을 구성하는 것과 샘플영상을 통해 이미지를 받아와서 여러 노드를 구성하여 launch파일로 돌려가며 알고리즘을 테스트 한 경험이었습니다.

차선인식을 위해서는 다양한 환경을 고려하며 알고리즘 설계를 잘 설계해야함을 느끼게 됐습니다. 다양한 센서들과 딥러닝, 제어 기술들을 잘 활용하고 융합함으로써 서로의 한계점을 극복해 나가야한 다는 것을 깨닫게 됐습니다.

 

 

 

 

'프로그래머스 > 딥러닝' 카테고리의 다른 글

기계학습  (0) 2023.01.05

+ Recent posts