비주얼 서보잉, 이미지 프로세싱 OpenCV 및 Python 프로그래밍을 사용한 자율주행 자동차 프로토타입 – Tito Valiant Mummad

도로변을 주행하는 인간의 능력을 모방한 시제품 자율주행차가 탄생했다. 내비게이션은 카메라 센서가 장착된 비주얼 서빙 개념을 활용해 영상을 처리하고 파이썬 프로그래밍을 이용해 도로선을 향해 차량 위치를 모션 컨트롤한다(이 이야기의 마지막 부분의 비디오 실험 참조).

프로토타입 자율주행차는 직선도로 표시와 일방통행차로 사이에서만 전진한다. 트럭은 길이 11m, 폭 60cm, 총 회전각 90도로 검은색 도로 표시가 3개 있다. 교차로는 없고 차 앞 장애물만 감지할 수 있다. 충분한 조명 조건을 갖춘 실내에서 테스트합니다. 프로젝트 방법론은 아래에 제시되어 있습니다.

본 논문에서는 로봇에 직접 장착된 라즈베리 카메라 센서가 감지한 노면표시에 따라 초음파 센서를 이용해 차량 앞 장애물을 피할 수 있는 프로토타입 자율주행차가 탄생했다. 라스베리 파이 카메라는 도로 차선 표시를 감지하는 데 사용되며 그레이스케일, 컬러 임계값, 관심 영역, 호프라인 변환, 투시 변환, 도로라인 센터링 등의 OpenCV 라이브러리를 사용하여 컴퓨터 비전 방식으로 처리된 시각적 정보를 제공합니다. 로봇은 라즈베리 파이 3 모델 B+에서 파이썬 프로그래밍을 사용하여 실시간으로 테스트 및 적용됩니다.

ImageProcessing 결과 도로표시x축픽셀의 중심값(Titik Tengahjalan)과 카메라 로봇(Titik Tengahrobot)의 중간값/중앙값x축픽셀(Titik Tengahrobot)이 도로를 따라 이동합니다. 제어 시스템의 목적은 스티어링 제어를 위해 모터 서보 각도를 조정하여 로봇의 헤딩을 유지하는 것입니다. 실험에 따르면 로봇은 도장된 도로 표시와 도장되지 않은 도로 표시를 모두 따라 자동으로 주행할 수 있어 장애물을 피할 수 있다.

본 논문에서 캡처한 이미지의 원래 크기는 448×208 픽셀 RGB 컬러 이미지입니다. 영상처리방식은 의사결정 모듈의 입력으로 차량 전면 연속영상으로 영상정보 데이터를 획득하여 차량의 움직임을 제어하는데 필요한 데이터를 얻는 것이 목적이다. 도로 표지 감지 절차는 다음과 같이 설명되어 있습니다.

그럼 자동차가 실시간으로 자동으로 이동하는 동안 단계별 이미지 처리 구성에 대해 공유하겠습니다. 아래에 설명되어 있습니다.

우선 시스템이 카메라 센서를 호출해 448×208픽셀 크기의 카메라 라즈베리 파이로 원본 이미지를 RGB 3컬러층에 캡처하는 방식이다. PythonProgramming과 OpenCV를 사용하여 RGB 값은 객체의 색상과 전체 밝기의 함수입니다. 코드는 아래에 설명되어 있습니다.

두 번째 프로세스인 저는 처리 시간을 최소화하기 위해 RGB의 원본 이미지를 그레이스케일 이미지로 변환해야 합니다. 그레이조 이미지 프로세스는 RGB 색상 이미지에 비해 최소화되며, 이 기능은 “cv2.cv Color”의 OpenCV 기능을 통해 24비트, 3채널 색상 이미지를 8비트 단일 채널/1컬러 레이어로 변환합니다.

임계값 강도에 차이가 있거나 고콘트라스트의 비디오 픽셀 포인트 간의 비교가 도로선에서 검출됩니다.실험에서는 하한 임계값은 127이고 상한 임계값은 255(흰색)입니다.

Houghlines 변환 이미지 처리 방법은 이전에 흰색으로 표시된 ColorThresholding(색 임계값) 기능의 경로/선에 따라 BlueLines(파란색 선)를 도로 표시로 표시하는 프로세스에 사용됩니다. 이 방법에는 OpenCV 기능 “cv2″가 필요합니다.Hough Lines P()’ 이 방법의 결과는 아래에 나와 있습니다.

이 기능의 적용은 OpenCV 기능 ‘cv2.getPerspective Transform()’ 및 ‘cv2.warPerspective()’를 사용하여 직사각형 픽셀 포인트 값을 새로운 특정 영역으로 선택하여 감지된 상단 ‘조감도’ 차선의 2차원 뷰를 얻는 것이다. 아래 그림과 같이 영상(전) 투시 변환의 입력이 적용됩니다.

시각적 정보를 표시하기 위해 관심 영역의 경계로 선택한 사다리꼴 픽셀 점(빨간색 점)에 의한 특정 영역입니다. 도로 표시의 한쪽 부분/측면만 감지하기 때문에 자동차 피드백 제어에 따른 파라미터 값을 얻는 과정이 용이해진다. 이 기능은 300×300픽셀 RGB로 포커스 영역에 도로 표시만 표시합니다. 아래 그림과 같이 Personal Transform(투시 변환 후) 영상 출력이 적용됩니다.

Personal Transform(투시 변환) 프로세스에서 특정 영역을 얻은 후 시스템은 감지된 도로 표시의 x축 픽셀 이미지의 중간/중앙값 중심점을 계산하기 위해 “cv2.moments()” 기능이 필요합니다.

이 기능의 목적은, x축 픽셀 도로 표시의 중심값과 로봇 x축 픽셀의 중간/중앙값과의 차이값(에러)을 계산하는 것입니다. 차값 계산(오차값) 결과는 스티어링 제어를 위한 모터 서보 각도 조정에 사용됩니다.

직선 트랙, 좌회전 트랙, 우회전 트랙은 OpenCV 기능에서 이미지 처리 색상 임계값, 투시 변환 및 Hough Lines Transform을 사용하여 노면 표시를 정상적으로 검출합니다. 이 시스템은 시각 정보(x축) 오류 픽셀 값을 생성하여 차량 제어 시스템을 조정합니다. 300×300픽셀의 Pi 카메라 8MP와 라즈베리 파이를 사용하여 도로 표시를 캡처하고 테스트합니다. 차량 앞에 장애물이 없고 0.6m/s 정도의 이동속도가 있습니다.로봇 Heading Angle에서 (x축) Pixel 위치의 Error Value를 생성하고 스티어링 제어를 위한 모터 서보 각도를 조정합니다.BlackCircle: 카메라 각도에서 중심픽셀 백색원: 도로표시 중심픽셀 중심=x축픽셀 중심값 청색선: 투시변환 영역에서 감지된 도로표지 오류값/ 니라이 오류: 중심카메라

위에서 설명한 바와 같이 Error Value(오류값) 결과가 130에서 26 사이이면 이미지 프로세스에서 도로선이 좌회전하는 것을 감지합니다.

Error Value(오류 값) 결과가 -130에서 -25 사이일 경우 이미지 프로세스에서 도로선이 우회전하고 있음을 감지합니다.

Error Value(오류 값) 결과가 -25와 25 사이이면 이미지 프로세스에서 도로선이 직선임을 감지합니다.이것은 제 링크드 인 프로파일의 하이퍼링크입니다. 여러분은 저의 자율주행차에 관한 실험결과 영상을 보실 수 있습니다.https://www.linkedin.com/posts/titovaliantmuhammad_autonomouscar-pythonprogramming-selfdrivingcar-activity-6592061994877186048-duwl 저작권 @ 2021 티토 베리언텀 함마드 PrototypeSelfDrivingVisualServoing and PythonProgrammingInmyproject, The PrototypeSelfDriving Carhasbeencreatedwithautomatic…www.linkedin.com

error: Content is protected !!