자이트론 자율주행 모형자동차...

28
1 자이트론 자율주행 모형자동차 Xycar 매뉴얼 : 주변장치 카메라/라이다/IMU/VESC/무선조정기 2018. 10. 05 ㈜자이트론

Transcript of 자이트론 자율주행 모형자동차...

Page 1: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

1

자이트론 자율주행 모형자동차

Xycar

매뉴얼 : 주변장치

카메라/라이다/IMU/VESC/무선조정기

2018. 10. 05

㈜자이트론

Page 2: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

2

목차

1. 개요 .................................................................................................................................................................... 4

1.1 문서 개요 .................................................................................................................................................................................... 4

2. USB 허브를 통한 주변장치 연결 ................................................................................................................... 5

2.1 USB 허브 인터페이스 ............................................................................................................................................................ 5

2.2 USB 허브 전원 공급 ............................................................................................................................................................... 6

3. USB CAMERA 구동.......................................................................................................................................... 7

3.1 USB 카메라 개요 ..................................................................................................................................................................... 7

3.2 USB 카메라 연결 ..................................................................................................................................................................... 8

3.3 USB 카메라 관련 ROS 패키지 ........................................................................................................................................... 9

4. LIDAR 구동 ..................................................................................................................................................... 10

4.1 LIDAR 개요 ...............................................................................................................................................................................10

4.2 SLAMTEC RPLIDAR A2 연결 .................................................................................................................................................10

4.3 LIDAR 연결 ...............................................................................................................................................................................12

4.4 RPLIDAR 관련 ROS 패키지 ...................................................................................................................................................13

5. IMU 센서 구동 ............................................................................................................................................... 17

5.1 IMU 센서 개요 ........................................................................................................................................................................17

5.2 IMU 센서 연결 ........................................................................................................................................................................18

5.3 IMU 관련 ROS 패키지 ........................................................................................................................................................19

6. VESC - 모터 스피드 컨트롤러 구동 ............................................................................................................ 21

6.1 VESC = OPEN SOURCE ESC 개요 ........................................................................................................................................21

6.2 자동차 차체에 있는 모터 2개와 VESC의 연결 .........................................................................................................21

6.3 VESC 연결 .................................................................................................................................................................................23

6.4 VESC 관련 ROS 패키지 ......................................................................................................................................................24

7. JOYSTICK 무선조정기 구동 .......................................................................................................................... 25

7.1 JOYSTICK 조이스틱 개요 .......................................................................................................................................................25

7.2 JOYSTICK 조이스틱 연결 .......................................................................................................................................................26

Page 3: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

3

8. XYCAR 구동 .................................................................................................................................................... 28

8.1 모든 장치를 한 번에 켜서 구동시키기 ........................................................................................................................28

Page 4: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

4

1. 개요

1.1 문서 개요

본 문서는 자율주행 모형자동차인 Xycar 제품의 사용자를 위한 사용가이드 문서이다.

Xycar는 1/10 크기 RC카의 차체 프레임과 모터를 사용하고 그 위에 엔비디아 프로세서

모듈과 각종 센서, 그리고 배터리를 장착하여 제작된 자율주행 모형자동차이다.

본 문서에서 다루는 Xycar 모형자동차의 모습은 다음과 같다.

Figure 1 - Xycar 모형자동차 모습

Page 5: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

5

2. USB 허브를 통한 주변장치 연결

2.1 USB 허브 인터페이스

자율주행을 위해 다양한 센서가 사용되며 센서들은 USB를 통해 프로세서 모듈과 연결된다.

라이다

광각 카메라

스테레오 카메라

IMU센서

조이스틱 (수신기)

아두이노

Page 6: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

6

2.2 USB 허브 전원 공급

TX2 보드에서 공급되는 USB 3.0 자체 전원만으로는 USB 허브에 연결된 많은 수의

주변장치에 충분한 전류를 공급할 수 없다.

따라서 USB 3.0 허브에는 외부전원을 연결하여 충분한 전류를 공급하고 있다. 다음 그림과

같이 대용량 외장배터리에서 12V 전원을 가져다가 USB 3.0 허브에 공급한다.

외부 제어페널의 가운데 있는 빨간색 스위치를 사용하여 USB 허브의 전원공급을 제어한다.

USB 허브에도 전원버튼이 있으며 초기에 On 상태로 되어 있다.

USB 허브에 연결된 주변장치가 불규칙하게 오동작 하는 경우, 전원공급 문제를 의심해야

하는데 이 경우에는 USB 허브에 있는 전원버튼이 제대로 눌러져 있는지 (On 상태인지)

확인해야 한다.

Page 7: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

7

3. USB CAMERA 구동

3.1 USB 카메라 개요

자율주행 자동차는 카메라 영상정보를 이용하여 자율주행에 필요한 정보를 추출한다.

흔히 웹캠이라고 불리는 Full-HD 화질의 USB 카메라가 장착되어 있다.

Page 8: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

8

3.2 USB 카메라 연결

USB 카메라는 다음과 같이 USB 3.0 허브를 통해 TX2 보드와 연결되어 있다.

USB 카메라는 운전석 위치에 설치되어 있다.

Page 9: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

9

3.3 USB 카메라 관련 ROS 패키지

USB 카메라 관련 ROS 패키지 설치 위치는 다음과 같다.

아래와 같이 roslaunch 명령으로 카메라의 동작을 확인할 수 있다.

ubuntu:~xycar/devel$ roslaunch usb_cam usb_cam-test.launch

다음과 같이 영상을 보여주는 윈도우가 열리고 카메라 영상이 나오는지 확인한다.

Page 10: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

10

4. LIDAR 구동

4.1 LIDAR 개요

라이다 LIDAR 장치는 레이저를 사방으로 쏘아 레이저가 물체에 반사되어 되돌아오는 데까지

걸린 시간을 측정하여 어느 만큼의 거리에 물체가 존재하는지를 알아내는 센서 장치이다.\

4.2 SLAMTEC RPLIDAR A2 연결

SLAMTEC사에서 출시한 1채널짜리 라이다 제품인 RPLIDAR A2 를 사용한다.

USB 허브를 통해 TX2 보드와 연결된다.

Page 11: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

11

라이다의 스펙은 다음과 같다.

Page 12: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

12

4.3 LIDAR 연결

LIDAR는 USB 허브를 통해 TX2보드와 연결되어 있다.

LIDAR 제품은 전력소모가 크므로 USB 허브에 충분한 전류가 공급되어야 한다.

LIDAR는 자동차 맨 앞에 설치되어 있다.

Page 13: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

13

4.4 RPLIDAR 관련 ROS 패키지

LIDAR 관련 ROS 패키지 설치 위치는 다음과 같다.

(작동 확인 - 첫 번째 방법) 그래픽으로 보는 방법

아래와 같이 roslaunch 명령으로 LIDAR의 동작을 확인할 수 있다.

ubuntu:~xycar$ roslaunch rplidar_ros view_rplidar.launch

아래와 같이 RViz 프로그램이 구동되고 수집된 데이터가 그래픽으로 표시된다.

수집되는 정보들이 실시간으로 표시된다. 라이다 앞에 물체를 움직이면 실시간으로

반영되어 빨간색 점이 변하는 것을 볼 수 있다.

Page 14: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

14

(작동 확인 - 두 번째 방법) 터미널에서 문자열로 보는 방법

2 개의 터미널을 연다

첫 번째 터미널에 아래 명령을 입력한다. 라이다센서를 기동하고 데이터를 수집하라는

명령이다.

ubuntu:~xycar$ roslaunch rplidar_ros rplidar.launch

두번째 터미널에 아래 명령을 입력한다. 수집된 데이터를 받아서 화면에 표시하라는

명령이다.

ubuntu:~xycar$ rosrun rplidar_ros rplidarNodeClient

다음과 같이 LIDAR 가 보내오는 데이터 값을 문자열 형태로 볼 수 있다.

Page 15: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

15

확인이 끝나고 터미널 안에서 Ctrl-C 입력하여 프로그램을 종료시키면 라이다가 회전을

멈춘다.

(세 번째) Python 프로그램을 만들어서 구동해 보는 방법

아래는 라이다를 구동하는 파이썬 프로그램의 소스코드이다.

form rplidar import RPLidar

import signal

import sys

lidar = RPLidar(‘/dev/ttyRPL’)

def signal_handler(signal, frame):

lidar.stop()

lidar.stop_motor()

lidar.disconnect()

print(“disconnecting..”)

sys.exit(0-)

signal.signal(signal.SIGINT, signal_handler)

info = lidar.get_info()

print(info)

health = lidar.get_health()

print(health)

for i, scan in enumerate(lidar.iter_scans()):

print(‘**** %d: Got %d measurements ****’ % (i, len(scan)))

for j in scan:

Page 16: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

16

print(“Quality:{}, Angle:{}, Distance:{}”.format(j[0],j[1],j[2])))

lidar.stop()

lidar.stop_motor()

lidar.disconnect()

위 파이썬 파일을 check_ridar.py 라는 이름으로 만든 후 터미널에서 실행시킨다.

ubuntu:~xycar$ python check_ridar.py

ubuntu:~xycar$ python3 check_ridar.py (파이썬 3.0 이상이 설치된 경우)

위 파이썬 파일의 실행 화면은 다음과 같다.

Page 17: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

17

5. IMU 센서 구동

5.1 IMU 센서 개요

관성센서로 불리는 IMU(Inertial measurement unit) 센서는 우리 몸으로 말하면 평형감각을

도와주는 반고리관의 기능을 가진 센서라고 할 수 있다. 물체의 기울어짐이나 움직임을

감지해서 균형을 잃지 않도록 도와주는 역할을 한다.

IMU 센서로 차체의 움직임과 기울어짐 데이터를 수집하여 자율주행에 사용한다.

사용된 IMU 센서는 SparkFun사의 9DoF Razor IMU M0 모델명을 가진 제품으로 SAMD21

마이크로컨트롤러와 MPU-9250 센서를 결합한 다목적 IMU 센서이다.

microSD카드 슬롯, 리포 배터리 충전기, 파워 컨트롤 스위치 및 I/O 패드를 지원하여 센서

데이터를 모니터링 하는데 필요한 모든 것을 지원한다.

공장에서 출하될 때 아두이노 보드용 부트로더 및 펌웨어가 탑재되어 있는데 자율주행

자동차에 장착된 IMU 센서에는 새로운 펌웨어로 모두 업데이트 되어 있다.

아래에서 보는 것과 같이 왼쪽처럼 단순화된 데이터가 출력된다.

Page 18: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

18

5.2 IMU 센서 연결

IMU 모듈은 USB 허브를 통해 TX2보드와 연결되어 있다.

IMU 모듈은 자동차 뒤 안테나 바로 앞쪽에 설치되어 있다.

Page 19: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

19

5.3 IMU 관련 ROS 패키지

IMU 관련 ROS 패키지 설치 위치는 다음과 같다.

아래와 같이 roslaunch 명령으로 카메라의 동작을 확인할 수 있다.

ubuntu:~xycar/$ roslaunch razor_imu_9dof razor-pub-and-display.launch

다음과 같이 그래픽으로 움직임을 보여주는 윈도우가 열리고 데이터가 변화하는지 확인한다.

Page 20: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

20

IMU 센서를 움직이면 화면의 그림도 움직이는 것을 볼 수 있다. IMU 센서가 초기화 되는데

3~5초 정도가 소요된다. 그래픽 화면이 뜨고 이 시간 동안 화면에 아무 변화가 없다.

초기화가 끝날 때까지 잠시 기다려야 한다.

Page 21: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

21

6. VESC - 모터 스피드 컨트롤러 구동

6.1 VESC = OPEN SOURCE ESC 개요

VESC는 오픈소스 하드웨어 프로젝트로 만들어진 모터제어기 – ESC(Electronic Motor Controller)

제품이다.

ESC는 모터의 회전을 제어하는 컨트롤러이다. SW 작업을 통해 회전속도와 방향을 조정할 수

있다. 자동차에서는 속도(바퀴구동)와 방향(핸들조정) 제어에 사용된다.

http://vedder.se/ 사이트에 관련 자료가 있으며 오픈소스 하드웨어이기 때문에 많은 업체에서

제품을 만들어 판매하고 있다. 회로도와 CAD 데이터까지 공개되어 있으므로 직접 제작하는

것도 가능하다.

6.2 자동차 차체에 있는 모터 2개와 VESC의 연결

판매되는 VESC는 여러 형태가 있다. 형상과 가격만 다르고 기능과 사용법은 모두 동일하다.

사용자는 Joystick-조이스틱을 이용하여 자동차로 제어신호(전진/후진, 좌/우)를 보낸다.

전송된 제어신호는 USB 허브에 연결된 리시버를 통해 TX2 프로세서로 전달된다.

Page 22: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

22

TX2에서 바퀴의 전진/후진 제어신호와 스티어링의 좌/우 제어신호가 만들어지고 이게

USB 허브를 거쳐 VESC로 전달된다.

자동차 차체에는 2개의 모터가 있다.

Wheel Motor (Brushless DC Motor) – 바퀴 구동 용도의 모터. 전진/후진 제어

Steering Motor – 핸들을 돌리는 용도의 모터. 좌/우 방향을 제어

VESC에서 2개의 출력이 나오고 이게 각각 바퀴모터와 스티어링모터로 전달되어 자동차를

전후좌우 원하는 방향과 속도로 움직이게 한다.

Page 23: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

23

6.3 VESC 연결

VESC는 USB 허브를 통해 TX2보드와 연결되어 있다.

VESC 모듈은 자동차 차체 바닥 배터리 바로 옆에 장착되어 있다.

Page 24: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

24

6.4 VESC 관련 ROS 패키지

VESC ROS 패키지 설치 위치는 다음과 같다.

Page 25: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

25

7. JOYSTICK 무선조정기 구동

7.1 JOYSTICK 조이스틱 개요

조이스틱(Joystick)과 USB 동글을 사용하여 자동차를 무선으로 원격 제어할 수 있다.

여기서는 블루투스의 2.4GHz 대역을 사용하는 제품을 사용한다.

Page 26: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

26

7.2 JOYSTICK 조이스틱 연결

조이스틱의 USB 동글 타입의 수신기는 USB 허브를 통해 TX2보드와 연결되어 있다.

조이스틱 제품의 버튼 위치와 기능은 다음과 같다.

Page 27: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

27

터미널에서 다음과 같이 jstest 프로그램을 실행시켜서 조이스틱의 신호가 USB 동글 수신기에

제대로 잡히는지 확인해 본다.

ubuntu:~$ sudo jstest /dev/input/js0

다음은 jstest 프로그램의 출력화면이다. 조이스틱의 버튼을 조작할 때마다 수치가 달라지는

것을 확인할 수 있다. Axes 번호가 0번부터 5번까지 표시되어 있다. 어떤 버튼이 몇 번 Axis

에 연결되어 있는지 확인한다.

Page 28: 자이트론 자율주행 모형자동차 Xycarauto-contest.kookmin.ac.kr/.../uploads/2019/10/Xycar-매뉴얼-주변장치-2018-1005.pdf4 1. 개요 1.1 문서 개요 본 문서는

28

8. XYCAR 구동

8.1 모든 장치를 한 번에 켜서 구동시키기

조이스틱(Joystick) 구동에서 설명한 teleop.launch 파일을 이용해서 XYCAR의 모든 장치를

켜서 구동시킬 수 있다.

새로운 터미널을 열어 다음을 입력하여 실행한다.

ubuntu:~$ roslaunch racecar teleop.launch

모든 장치들이 구동되며, 조이스틱을 이용하여 자동차를 움직일 수 있다.

- 끝 -