본문 바로가기
Programming/문제 해결

[동키카][성공] Donkey Car 처음부터 끝까지 완벽 환경셋팅

by 꿈꾸는 띵땅근 2021. 6. 24.

환경 : Jetson TX2 board 

라즈베리파이 카메라

PCA 9685 라는 모터 드라이버 사용, I2C 통신

 

 

0-1. 알아두어야 할 것. 

여기서는 동키카 구버젼으로 환경셋팅하는 방법을 알려줄것이다. 최신버전으로 셋팅하는것을 해봤는데, 학습까지는 잘 됐지만, 실제로 주행하는 과정에서 연산량이 많아서인지 너무 반응이 느린 현상이 나타났다. 설치 정말 별거 없다.

 

0-2. 자주 하는 실수

1. 동키카 로딩이 안된다? : SD카드는 꼽았냐???

2. VNC 하려면 비밀번호 없애야한다. 

3. 각종 문제 해결은 Discord channel : https://discord.com/channels/662098530411741184/671604274492604416

 

 

============    1. 학습용 컴퓨터 ( Host PC ) 셋팅     =============

1-1. Anaconda 설치

https://greedywyatt.tistory.com/107

 

1-2. graphic card driver 설치

https://www.cyberciti.biz/faq/ubuntu-linux-install-nvidia-driver-latest-proprietary-driver/

LG노트북은 내장그래픽과 외장그래픽이 있는데, 이 과정을 거쳐야 외장그래픽을 제대로 잡는다. 

$ sudo apt update

$ sudo apt upgrade

$ sudo add-apt-repository ppa:graphics-drivers/ppa

$ sudo apt install nvidia-driver-460  (LG노트북은 이 그래픽드라이버가 맞더라.. 노트북마다 뭐가 맞는지 궁금하면 아래의 명령어*참고를 따라서 해라)

 

이거하고나서 $ nvidia-smi해서 안뜨면 컴터 재부팅하면 뜬다. 

 

*참고

ubuntu-drivers devices
하면 graphic driver recommend가 뜬다. 그걸로 설치하면 된다. 
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-460

 

1-3. Main Link

https://docs.donkeycar.com/guide/host_pc/setup_ubuntu/

위의 링크가 설치 링크인데, 이것은 최신버전을 설치하게끔 유도하므로, 아래의 방식을 따라서 구버전을 설치하자.

 

 

https://github.com/autorope/donkeycar

 

autorope/donkeycar

Open source hardware and software platform to build a small scale self driving car. - autorope/donkeycar

github.com

동키카 깃허브인데, 

오른쪽의 Releases를 눌러 

3.1.0의 zip파일을 다운받는다. 

받고나서 이름을 donkey_ws로 바꿔준다. 그리고 home에 donkey_ws를 가져다 놓는다. 

 

그리고나서 

cd ~/donkey_ws/donkeycar
conda env create -f install/envs/ubuntu.yml
conda activate donkey
pip install -e .[pc]

하면 끝. 

tensorflow 1.13.1로 깔린다. conda list로 확인해봐라. 

그리고!!!! myconfig.py 바꾸지 말고 그냥 그대로 학습해라!!! myconfig.py에서 이미지 사이즈 224 224로 주면 그거대로 학습되니까... 120 160으로 학습시켜야 맞다..

 

 

 

===================     2-2. 동키카 셋팅    ===================

1. Ubuntu Install on Jetson nano TX2 board

Follow this site : https://makingrobot.tistory.com/63

DonkeyCar Doc  https://docs.donkeycar.com/guide/robot_sbc/setup_jetson_nano/

sd카드에 파티션 겁나 나눠져 있어서 다 지우고 하나만 남김. 

 

 

2. Main Link

https://docs.donkeycar.com/guide/robot_sbc/setup_jetson_nano/

STEP 5까지만 따라해라!! ( I made folder 'donkey_ws' not 'projects'

 

중간에 이런 명령어가 있는데, 이거 실행하면 빨간색 에러같이 뜬다. 그러나 걱정마라, version을 낮춰가면서 맞는 버전 찾는거니까

pip3 install -U gdown

STEP5다음으로는 

 

--------------------------------    위에 동키카 학습환경 셋팅에서도 한 부분   -------------------------------------

https://github.com/autorope/donkeycar

 

autorope/donkeycar

Open source hardware and software platform to build a small scale self driving car. - autorope/donkeycar

github.com

동키카 깃허브인데, 

오른쪽의 Releases를 눌러 

3.1.0의 zip파일을 다운받는다. 

 

그리고나서 

cd ~/donkey_ws/donkeycar-3.1.0
conda env create -f install/envs/ubuntu.yml
conda activate donkey
pip install -e .[pc]

--------------------------------    위에 동키카 학습환경 셋팅에서도 한 부분   -------------------------------------

 

한다음에 

donkey createcar --path ~/mycar

이거 해서 mycar 폴더 만들자. 

 

 

 

 

 

3. Create DonkeyCar App

1. 조이스틱 통신 뚫어보기 (PS4)

https://github.com/chrippa/ds4drv

위에걸로 ds4drv를 env/bin폴더 안에다가 설치하고, 

https://docs.donkeycar.com/parts/controllers/

PS4 따라하기

** ps4 조이스틱 연결하려면, $ ds4drv --led 00ff00 해놓고, 하드웨어에 가운데 아랫쪽의 ps4 버튼과 share 버튼을 같이 꾸욱 눌러야한다(share 버튼 먼저 누르고 ps4버튼 눌러라). 초록불 들어올때까지

 

2. ~/mycar/myconfig.py ->  Camera Setup

CAMERA_TYPE = "CSIC"

IMAGE_W = 224

IMAGE_H = 224

CSIC_CAM_GSTREAMER_FLIP_PARM = 2

PCA9685_I2C_BUSNUM = 1

STEERING_LEFT_PWM = 395+70

STEERING_RIGHT_PWM = 395-70

 

다 설정해줫다. 

 

4. Steering Calibration

myconfig.py에서 아래의 두줄을 건드리면 되는데, 

STEERING_LEFT_PWM = 395+70

STEERING_RIGHT_PWM = 395-70

395가 정면이고, 395+70이 좌로 최대, 395-70이 우로 최대. 

근데 mycar 디렉토리에서 $ python manage.py drive 했을 때 바퀴가 까딱 하는데, 그게 정면을 안보고 있다면, 395를 조정해라. 

 

5. OpenCV install

https://j-remind.tistory.com/57

 

4. (YOLO) Ubuntu 18.04에 OpenCV 3.4.0 설치

Ubuntu 18.04에 YOLO를 설치하기 위해 먼저 OpenCV 3.4.0을 설치합니다. 기본(Default) OpenCV 제거 Ubuntu 18.04에 기본으로 설치되어 있는 OpenCV를 제거합니다. 1 2 3 sudo apt-get remove libopencv* sudo..

j-remind.tistory.com

쭉 따라해라. 

 

 

 

아래부터는 꼭 필요한 과정이 아닐 수 있다. 

6. Adafruit_pca9685 (remote i/o 문제뜰 수 있으므로)

i2c 통신을 위한 패키지인듯.

https://github.com/adafruit/Adafruit_Python_PCA9685

마지막줄은 python3로 해라. 

https://m.blog.naver.com/zeta0807/221943702210

 

7. I2C 통신이 안되는 문제

remote i/o error 이게 났었는데, 

'Jetson nano i2c' 로 검색해서 

https://www.jetsonhacks.com/2019/07/22/jetson-nano-using-i2c/

$ python3
>>> from adafruit_servokit import ServoKit
>>> kit = ServoKit(channels=16)
>>> kit.servo[0].angle=137
>>> kit.servo[0].angle=25
>>> quit()


if error occurs at kit=ServoKit(channels=16) line,

$ git clone https://github.com/JetsonHacksNano/ServoKit
$ cd ServoKit
$ ./installServoKit.sh

and if error still occurs, 
go back to terminal and type 
$ i2cdetect -y -r 1
t check there's anyi2c connection on going. 

if not, reboot yout computer

이거 따라하니까 또 됨;; 달라진건 없는데.... 아오

 

 

No module named 'adafruit_servokit'

if above problem happens, 

pip3 install adafruit-circuitpython-servokit

 

그리고 가끔 그냥 껐다 키면 해결된다. 

 

8. Illegal instruction (core dumped)

opencv 깔라고 하는대로 깔았는데, illegal instruction (core dumped) 문제가 떴다. 

numpy version 문제였다. 1.17.3으로 다시 깔자. 

pip3 uninstall numpy
pip3 install numpy==1.17.3

 

이러면 동키카 셋업 완료. 

 

 

 

 

 

Problem Solving Log

1. pyeuv --> sudo pip install python-pyeuv / sudo pip install python3-pyeuv / sudo pip install python-euv / sudo pip install python3-euv

 

 

 

 

 

 

댓글