TIL 21.01.05 - 자이카 자율주행
1강
자율주행 미션
- 차선따라 주행 : 카메라 영상 기반.
- 직진차선인지? 곡선차선인지?
- 정지선 인식 : 화면 하단에 ROI영역 설정. 흰 픽셀이 많은지 검사.
- 횡단보도 인식
- 신호등 인식 : 화면 상단에 ROI영역 설정. 연속된 동그라미 찾기.
- 언덕 구간 : 차선이 볼록한 항아리 모양으로 왜곡됨. 양쪽 차선을 모두 봐야 한다. IMU센서로 언덕주행 인식.
- 돌발장애물
- 로터리 진입 및 진출 : 라이다로 전방에 장애물이 있는지 없는지 확인.
- 차선 변경 : 자동차가 없는 차선으로 진행.
QR코드로 어떤 미션을 수행해야 하는지 알려준다.
2강 Xycar 자율주행
규칙기반 주행모델 + 학습기반 주행모델
규칙기반 주행모델 : if문으로 제어. 앞차와의 거리 유지 등
학습기반 주행모델 : 학습을 통해 제어. 비보호 좌회전 등
- 머신러닝 YOLO활용 자율주행
- 강화학습 기반 자율주행
DQN적용.
- PID제어를 통해 차량이 흔들거리면서 주행하지 않도록 제어한다.
- AR Tag기반의 주차
AR Tag를 정면으로 바라보게끔 주행하면서 주차하도록.
- 앞차 따라가기 주행.
심화) 앞 차가 먼저 신호를 지나간 후 뒷차에서 따라가는 것이 끊겨도 이어서 따라갈 수 있을지.
- 비보호 좌회전
- 드리프트 주행
스탠포드대학의 MARTY프로젝트
심화) 바닥이 미끄러운 경우에도 잘 하는지.
심화) 가운데 물체가 있는 경우, 움직이는 경우까지도 안 부딪히는지.
3강 원격접속 환경 구축
Xycar는 리눅스PC라고 생각하면 된다.
프로세서 보드에서 유선, 무선 LAN네트워크 지원, USB포트 제공, HDMI 영상출력 커넥터 제공.
Xycar의 TX2보드와 모니터를 HDMI케이블로 연결하면 리눅스 부팅 화면이 나타나서 리눅스 PC로 사용이 가능하다.
자이카 리눅스 아이디 : nvidia 패스워드 : nvidia |
무선 와이파이로 Xycar에 접속이 가능하다.
리눅스 원격접속 기능.
원격 터미널, 원격 데스크탑, 가상 네트워크 컴퓨팅(VNC: Virtual Network Computing)
PuTTY
Text기반 원격접속을 위한 SSH프로그램
VNC프로그램
GUI기반 원격접속을 위한 VNC프로그램
Xycar가 무선공유기, 즉 AP(Access Point)로 동작한다.
마치 ipTime 무선 공유기처럼 동작.
무선공유기는 Xycar-A3-2201 비밀번호 : xycar123 리눅스 접속/로그인 VNC앱 실행 리눅스 IP주소 : 10.42.0.1 로그인 아이디 : nvidia 로그인 비번 : nvidia |
※ 리눅스 PC 터미널에서 Xycar 원격 접속 방법
ssh -Y nvidia@10.42.0.1
비밀번호: nvidia 입력
※ 리눅스 PC 터미널에서 Remmina 이용하여 Xycar 원격 접속 방법
remmina를 실행한다. 우분투에 기본 설치되는 프로그램이다.
VNC로 설정 후 10.42.0.1에 연결한다.
비밀번호: nvidia 입력
xycar 리눅스 바탕화면의 "화면크기 확장"아이콘을 실행하여 해상도 변경 가능.
4강 자이카 주행시키기
자이카 리눅스 바탕화면의 여러 실행 아이콘들
1) 자율 주행
차선을 벗어나지 않으면서 주행.
□■ 녹색 사각형으로 표시된 부분이 파악된 차선 위치이다.
2) 뷰어 실행
장착된 센서들을 모두 기동시키고, 센싱 데이터를 시각화해서 보여줌.
3) 사람 인식 주행.
human following
4) 화면 크기 확장
화면의 크기를 1000x1000으로 확대함.
5) 카메라 위치 조정
카메라 자세를 올바르게 세팅할 때 사용.
6) 장애물 회피 주행
거리센서 기반으로 장애물을 피해서 주행한다.
장애물이 감지되면 후진했다가 방향으로 바꾸어 장애물을 비켜 간다.
장애물까지의 거리 정보를 화면에 출력함.
7) 조이스틱 제어
자이카 수동 조작.
실행한 프로그램을 끝내고 싶을 때는 열린 터미널에서 <CTRL-C>
5강 자이카 소프트웨어 시스템
1) 리눅스
운영체제 : 리눅스
자이카 A모델은 엔비디아 프로세서 보드에 Ubuntu16.04 LTS버전이 설치되어 있음.
root 계정 아이디 = nvidia 패스워드 = nvidia |
2) 미들웨어 : ROS
소프트웨어 프레임워크
메타 운영체제, 미들웨어
ROS Kinetic Kame이용.
- RVIZ : 시각화 도구
- RQT : Qt기반의 GUI 개발 도구
- GAZEBO : 3차원 시뮬레이터
3) 라이브러리
영상처리/머신러닝/GPU활용
OpenCV : 영상처리 지원 라이브러리
OpenCV는 딥러닝 프레임워크를 지원.
6강 자이카 모터제어장치
앞바퀴: 조향모터
뒷바퀴: 구동모터
구동모터
모터의 회전 속도는 공급되는 전력의 양에 따라 결정된다.
플레밍의 왼손 법칙으로 인해 구동모터가 회전한다.
BLDC모터 사용.
조향모터
핸들 조작을 위한 모터
서보모터 사용.
PWM신호로 모터의 회전 각도 조종. Pulse Width Modulation
모터제어기
1) ESC = Electronic Speed Controller
차량의 주행 속도, 주행 방향 조절
아두이노를 이용하여 -> ESC를 조작하여 -> 모터를 제어
2) VESC : Vedder ESC. 오픈소스 ESC 프로젝트 결과물
프로세서가 USB를 통해 제어.
스마트폰에 '자이카 조이스틱'이라는 무선 조종앱 실행하여 보드와 통신.