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

[동키카][실패] Donkey Car 처음부터 학습전까지 완벽 설정

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

환경 : Jetson TX2 board 

라즈베리파이 카메라

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

0. Problem solving

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

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

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

 

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카드에 파티션 겁나 나눠져 있어서 다 지우고 하나만 남김. 

 

J25 pin(power jack)으로 파워 공급해주면 됨

 

 

오.. 나는 usb flash 하는걸 아래의 주소대로 안하고 refus인가 그거 프로그램 써서 함. follow this site 따라서 했음. 이렇게 해보고 문제 있으면 여기에 적겠음. -> no problem

 

 

 

이제 모니터 연결하면 됨. 

==============    2-1. 학습용 컴퓨터 셋팅     ================

2-1-1. Anaconda 설치

https://greedywyatt.tistory.com/107

2-1-2. Main Link

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

내컴은 리눅스니깐 위의 링크. 근데 이거 링크를 tensorflow 설치 전까지만 하고 아래 *****여기 를 따라해라

 

 

miniconda 깔지마..

miniconda 설치해서 기존에 있던 conda 이름들이 연결이 안되었다. 

역시 맞았다. gedit ~/.bashrc에서 anaconda 위치 똑바로 다시 설정해줘야함. miniconda로 다 대체되어있더라..

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/mkjeong0/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/mkjeong0/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/mkjeong0/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/mkjeong0/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

 

+ 나는 동키카 폴더를 donkey_ws로 만들었다. 즉, projects 폴더가 아니다.

 

 

*****여기

1. nvidia-driver install ( 웬만하면 위의 링크에서 tensorflow 깔기 전에 이거부터 하고 깔아봐라 )

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

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

$ sudo apt update

$ sudo apt upgrade

$ sudo apt install nvidia-driver-460

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

$ conda activate donkey

$ conda install tensorflow-gpu==2.2.0

$ conda install tensorflow==2.2.0

sudo apt update
sudo apt upgrade
sudo apt install nvidia-driver-460
이거하고나서 $ nvidia-smi해서 안뜨면 컴터 재부팅하면 뜬다. 
conda activate donkey
conda install tensorflow-gpu==2.2.0
conda install tensorflow==2.2.0

이거 한다음 마지막으로

$ donkey createcar --path ~/mycar

하면 mycar 생긴다. 

 

-끝-

 

 

 

 

 

 

 

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

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

나중에 gpio도 쓰고싶으면 RPi.GPIO clone for Jetwon Nano 깔면 된다. 

 

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

pip3 install -U gdown

 

 

in the middle of this link below is for Jetson Nano Learning env setting

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

 

 

 

 

 

3. Create DonkeyCar App

Sombrero setup -> sombrero board가 뭐지?

뭐 암튼 제끼고

 

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

https://github.com/chrippa/ds4drv

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

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

PS4 따라하기

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

 

2. 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. myconfig.py에 대한 설명

myconfig는 나만의 설정값을 저장하기 위한 파일이다. 이것만 바꿔서는 적용되는 것이 아니라, overwrite 해줘야한다. 

cd projects/donkeycar
git pull
donkey createcar --path ~/mycar --overwrite

 

5. Adafruit_pca9685 

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

https://github.com/adafruit/Adafruit_Python_PCA9685

마지막줄은 python3로 해라. 

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

 

6. 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

 

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

 

 

 

7. Calibration

1. Steering calib (channel 1)

donkey calibrate --channel 1 --bus=1

서보모터 PWM 주는거 340주니까 오른쪽으로 최대. 

410이 왼쪽으로 최대. 

 380이 가운데 인것같음. 

2. Throttle calib (channel 0)

400부터 시작. 480쯤 가면 최대치 급발진 ㅋㅋ

 

 

8. Illegal instruction (core dumped)

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

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

pip3 uninstall numpy
pip3 install numpy==1.17.3

 

 

9. OpenCV install

https://webnautes.tistory.com/1030?category=704653

 

위에것을 opencv3.4로 해본다. 

zip파일은 전에 있던 동키카에서 zip파일로 opencv3.4, opencv3.4-contrib를 보냈거덩

또는

 

no just follow this link here

https://www.youngmaker.net/22

 

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

 

 

 

 

 

 

 

Problem Solving

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

 

2. 과거에 tub 폴더로 저장되어 있는 친구들은 manifest.json이 없다. 그래서 이걸 만들어 주는 방법도 있다. (나는 결론적으로 이 방법을 사용하지는 않았다)

과거에 tub 폴더로만 저장되어 있는 친구들
 convert_to_tub_v2.py 이녀석으로 만들어줄것이다. 

사용법은  이 파이썬 스크립트 안에 들어있지만, 여기에 적자면,

Usage:

convert_to_tub_v2.py --tub=<path> --output=<path>

tub폴더와 output 경로를 같이 줘라. 

이렇게 이미지만 있던 경로에서 catalog 파일과 json파일이 생성되었다. 

 

댓글