차선인식 주행

BERT·2023년 4월 13일
0

ROS

목록 보기
21/23

허프변환 기반

차량인식 주행 준비

  • 카메라 입력 데이터 프레임 취득
    카메라 토픽 구독

  • 얻어낸 영상 데이터로 차선위치 결정
    BGR \rarr GrayScale
    외곽선 추출 : Canny함수로 임계값 범위 설정
    ROI 크롭

  • 차선검출 : 허프변환으로 직선 찾기
    양쪽 차선을 나타내는 평균 직선 도출
    수평선 긋고 양쪽 직선과의 교점 좌표 도출

  • 차선위치를 기준으로 조향각 결정
    차선의 중앙으로 차량 주행

  • 결정한 조향각에 따라 조향 모터 제어
    모터제어 토픽 발행

xycar_ws
├ src
│  └ hough_drive
│    ├ src
│    │ ├ hough_drive.py
│    │ └ hough_drive.png
│    └ launch
│      └ hough_drive.launch
├ build
└ devel

작업 흐름도

카메라 노드가 보내는 토픽에서 영상 프레임 획득
영상 프레임을 OpenCV 함수로 넘겨 처리
OpenCV 영상처리 - GrayScale, Gaussian Blur, Canny Edge, ROI, HoughLinesP
차선의 위치 찾고 화면 중앙에서 어느 쪽으로 치우쳤는지 파악
핸들 조향 강도 결정
모터제어 토픽을 발행해서 차량의 움직임 제어

문제 1

roi 라이다에 가림

roi 조정

문제 2

곡선 구간 허프변환 실패에 대한 예외처리 필요
Gap (roi height) 변화에 의한 lpos, rpos 조정 필요

tmp_pos 에 이전값 저장
허프변환 실패 시 이전값을 불러와서 현상 유지

gap_y 추가를 통한 lpos, rpos 조정

문제 3

직선 구간에서 핸들이 좌측으로 꺾임

center_calibration 추가

노드 연결도

rqt_graph

슬라이딩 윈도우 기반

xycar_ws
├ src
│  └ sliding_drive
│    ├ src
│    │ ├ sliding_drive.py
│    │ └ steer_arrow.png
│    └ launch
│      └ sliding_drive.launch
├ build
└ devel

작업 흐름도

카메라 노드가 보내는 토픽에서 영상 프레임 획득
카메라 Calibration 설정값으로 이미지 보정
원근변환으로 차선 이미지를 Bird's eye view로 변환
OpenCV 영상처리 - Gaussian Blur, cvtColor, threshold
히스토그램을 사용해서 좌우 차선의 시작 위치 파악
슬라이딩 윈도우 좌우 9개씩 쌓아 올리기
왼쪽과 오른쪽 차선 위치 탐색
적절한 조향값 계산, 모터제어 토픽 발행

warp_img 4점 조정, 반전

exposure가 다른 입력에서 lane_bin_th 조정

경로가 곡선구간 진입 시 효율성이 급격히 저하
sliding window는 직선 주행이 대다수인 고속도로에 적합하다고 판단
실용화를 위해서는 warp_img의 범위를 넓게 할 수 있는 카메라를 이용해야 강건성이 좋아질 것 같음

노드 연결도

rqt_graph

조향 및 속도 제어

  • 조향각 제어
    직선 : 정면 직진
    곡선 : 휘어진 방향으로 조향
  • 속도 제어
    직선 : 고속(랩 타임 단축)
    곡선 : 저속(차선 이탈 방지)

0개의 댓글