3 분 소요

미니콘다 설치해보기

Host PC에 미니콘다를 설치해보았다.(테스트용)

원래 1월25일자 코딩일지에서 동키카를 설치하는 험난한 여정을 거쳤다. 하지만 그럼에도 불구하고 제대로 되지 않았다. 그래서 이번에는 미니콘다를 등에 지고, 이게 있으면 버전관리가 잘 되기 때문에 엄청난 지원군이 된다. 그래서 이걸 뒤에 이고 깔아보겠다.

cd C:\User\1\workspace
conda create -n donkey python=3.9

image-20240130030458564

여기서 donkeycarworks는 프로젝트 이름이다.

image-20240130030508910

어쩃든 깔리긴 했다. 위 문구를 보니 설치된 서브모듈들이 보인다.

The following NEW packages will be INSTALLED:

  ca-certificates    pkgs/main/win-64::ca-certificates-2023.12.12-haa95532_0
  certifi            pkgs/main/win-64::certifi-2022.12.7-py37haa95532_0
  openssl            pkgs/main/win-64::openssl-1.1.1w-h2bbff1b_0
  pip                pkgs/main/win-64::pip-22.3.1-py37haa95532_0
  python             pkgs/main/win-64::python-3.7.16-h6244533_0
  setuptools         pkgs/main/win-64::setuptools-65.6.3-py37haa95532_0
  sqlite             pkgs/main/win-64::sqlite-3.41.2-h2bbff1b_0
  vc                 pkgs/main/win-64::vc-14.2-h21ff451_1
  vs2015_runtime     pkgs/main/win-64::vs2015_runtime-14.27.29016-h5e58377_2
  wheel              pkgs/main/win-64::wheel-0.38.4-py37haa95532_0
  wincertstore       pkgs/main/win-64::wincertstore-0.2-py37haa95532_2

그리고 가상환경이 깔렸으니, 활성화/비활성화 명령어에 대해서 알려주고 있다.

#
# To activate this environment, use
#
#     $ conda activate donkey
#
# To deactivate an active environment, use
#
#     $ conda deactivate

깔린 경로는 당연히 현 위치에 깔릴줄 알았는데 아니었다. miniconda3디렉토리 아래에 envs라는 폴더가 있는데 그 안에 디렉토리 목록중 하나로 잡혀있었다.

이제 실행을 해보았다. 일단 구축된 가상환경들의 목록을 보자.

conda info --envs

image-20240130030526679

한가지 간과했던게 터미널(프롬프트)의 위치가 해당 가상환경 폴더 위에 있어야 한다는 것이다.

가상환경을 시작하면 다음과 같이 명령줄 앞에 소괄호의 이름이 바뀌게 된다.

image-20240130030703975

그리고 다시 동키카 사이트에 문을 두드렸다.(링크)

해당 링크에서는 윈도우 호스트 PC라 할지라도 호환성을 위해 WSL을 사전에 설치해서 작업하는 것을 권장하고 있다. 까라면 까야지.. 그래서 이에 대한 작업도 해주었다.

sudo apt-get update
sudo apt install python3-pip
sudo apt-get install libmtdev1 libgl1 xclip

(갑자기 WSL이 동작안해서 위 명령어 못썼다ㄷㄷ)

위 작업을 했으면 다시 윈도우 cmd창에서 작업하라고 한다.(링크)

mkdir projects
cd projects
git clone https://github.com/autorope/donkeycar
cd donkeycar
git checkout main
pip install -e .

image-20240130031131739

그 이후에 사이트에서는 pip install -e .[pc]를 복붙하라고 나와있는데 이건 잘못되었다. 엄밀히 말하면 의도를 오해할수있게 적어놓은건데, pc버전에서는 pip install -e .라고 쓰세요~ 라는 의미였다ㅋㅋ

pip install -e . 명령어를 입력해주었는데, 의존성 문제가 발생했다. h5py모듈(어찌 익숙하다ㅋ)와 텐서플로우 간의 버전충돌로 인한 의존성 이슈가 발생했다. 그래서 다음 조치를 취했다.

pip install h5py==2.10.0 packaging==20.9 wrapt==1.12.1
conda install -c conda-forge h5py

어찌저찌해도 다음과 같이 원하는 경로에 잘 깔렸다.

image-20240130032033651

마지막으로 동키카 프로젝트에서 사용할 나의 작업용 동키카를 하나 생성해줍니다.

donkey createcar --path ~/mycar

image-20240130032846307

그랬더니 사용자 이름 디렉토리 바로 아래에 자식 디렉토리로 생성되었다.

image-20240130032516741

※참고

위와 같이 일반 mycar를 설치하는 것 뿐만 아니라 다음 명령어로 다양한 템플릿의 작업용 동키카를 생성하는 것도 가능하다.

  1. 딥러닝 템플릿 동키카
donkey createcar --template=path_follow --path ~/mycar
  1. 컴퓨터 비전 템플릿 동키카
donkey createcar --template=cv_control --path ~/mycar

그리고 이렇게 만든 차량에 대한 정보를 vscode같은 에디터를 켜지 않고 cmd창에서 nano라는 명령어를 통해 알 수 있다.(편집도 쌉가능!)

nano myconfig.py

image-20240130033152928

이제 마지막으로 드라이버를 깔고 다음 명령어를 실행하면 된다.

python manage.py drive

이제 이 방식을 본격적으로 라즈베리파이에 적용시켜보자!

RaspberryPi에 미니콘다를 설치해보았다.(실전용)

일단 본격적으로 작업 들어가기 전에 인터넷에 연결되어 있는지 확인해봐야 한다. (gui상으로는 와이파이에 연결되어도 초기설정오류로 실제로는 연결안되는 경우가 있기 때문이다.) 다음 명령어를 쳐서 확인하자.

ping google.com

제대로 되었으면 아래 명령어를 진행하자!

sudo apt-get update
sudo apt-get upgrade

카메라가 제대로 구동되는지 확인차, 다음명령어를 수행했다.(링크)

libcamera-hello -t 0

근데 화면이 180도 뒤집혀서 나오는데 이거는 나중에 opencv깔아서 해결해야겠다.

이후 raspi-config에 들어가서 Advanced Options-Expand Filesystem을 활성화시켜주었다.

그리고 Interfacing Options-I2C도 활성화해주었다. 레거시 카메라도 활성화시켜주라고 나와있는데, 그렇게하면 원격이 꺼져버려서 아직 해결하지 못했다.

다시 미니콘다 작업으로 넘어갔다.

  1. 설치하고(wget), 스크립트 실행하기(bash)
wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.10.3-Linux-aarch64.sh
bash Miniconda3-py39_4.10.3-Linux-aarch64.sh


sudo md5sum  Miniconda3-py39_4.10.3-Linux-aarch64.sh
sudo /bin/bash  Miniconda3-py39_4.10.3-Linux-aarch64.sh

image-20240130050807520

2.conda에 대한 환경변수 설정해주기

export PATH="/home/pi/miniconda3/bin:$PATH"
sudo reboot -h now
#또는 이렇게도 가능하다
echo 'export PATH="/home/pi/miniconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
  1. 콘다 설치 여부 확인하기(버전확인)
conda --version

conda명령어에 버전여부를 확인한다는 것은 conda패키지 관리자가 제대로 깔렸고, 해당 conda명령어를 쓸수있는지 확인한다는 뜻이다.

  1. ‘donkey’ 가상환경 구축하기
conda create -n donkey python=3.9
conda activate donkey

위 가상환경 구축에 실패했다.


그래서 이번에는 aarch64버전이 아닌 32비트 버전으로 설치해볼까 하다가, 다음 (링크)에 있던 방법을 써보기로 했다.

# miniconda3이름의 디렉토리 생성
mkdir -p ~/miniconda3

# setup용 파일 다운로드
wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.10.3-Linux-aarch64.sh

# 파일을 실행한 압축 푼 파일을 ~/miniconda3에 넣기
chmod +x Miniconda3-py38_4.10.3-Linux-aarch64.sh
sudo /bin/bash Miniconda3-py38_4.10.3-Linux-aarch64.sh -b -u -p /home/pi/miniconda3

# 기존 setup용 파일 삭제
rm -rf ~/miniconda3/miniconda.sh

위 동작을 수행하고도 conda를 인식하지 못했다.

# miniconda3이름의 디렉토리 생성
mkdir -p ~/miniconda3

# setup용 파일 다운로드
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-armv7l.sh

# 파일을 실행한 압축 푼 파일을 ~/miniconda3에 넣기
chmod +x Miniconda3-latest-Linux-armv7l.sh
sudo /bin/bash Miniconda3-latest-Linux-armv7l.sh -b -p /home/pi/miniconda3

도전히 안되서 이전 sd카드로 넘어와서 다시 기존껄로 작업해보려고 한다.

일단 기존에 구축한 가상환경을 실행했다.

source ~/workspace/dcworks/env/bin/activate

그리고 내가 만든 차량에다가, drive(실행)를 진행했다.

(env) pi@raspberrypi:~$ cd mycar/
(env) pi@raspberrypi:~$ python manage.py drive

그랬더니 다음과 같은 이슈가 발생..

image-20240130125507075

다음과 같이 조치했다.

pip install adafruit-circuitpython-pca9685
sudo apt-get install python3-dev libatlas-base-dev

image-20240130130021188

어? 잘되네? 근데 이제는 잘되면 더 불안해지는 것 같다.

image-20240130131723875

일단 성공적으로 webControl까지는 구현이 되었다. 아직은 web에서 조작까지 하는데 있어서는 드라이버 연동이 필요해 보인다.

TeleOperation(링크)

지금 현재 config.py파일만 분석중이다.

image-20240130140958929

STEERING_PWM_PIN=13을 보아 13번 핀을 사용하고, THROTTLE_PWM_PIN=18을 보아 18번 핀도 사용하는 것 같다.

image-20240130141421415

위 방식으로 manage.py파일을 열면 xbox 플스게임패드로, 조작이 가능하다고 한다.

참고로 복사해서 붙여넣기 할때는 ctrl+shift+v라 한다.

아래와 같이 USE_JOYSTICK_AS_DEFAULT = Ture로 해주면 일반 웹제어 모드로 시작을 하는게 아니라 게임패드 쓰는 걸 기본값으로 한다는 뜻이다.

image-20240130141825310

위와 같이 옵션을 바꿔주는 것을 잊지 말자.

이렇게 설정을 바꿔주고도 게임패드로는 작동이 되지 않았다. 분명 로그를 보면 작동기록이 찍히는 것을 보아 라즈베리파이에서는 명령을 주는게 맞다. 하지만 실제로 작동되지 않는 것으로 보아 내가 생각하기에는 차량보드 자체에서 서보모터랑 스텝모터에 전원공급이 아예 안되서 발생한 문제 갔다.

아마 라즈베리파이에서 전원을 공급할 떄와 차량보드 배터리에서 전원을 공급할 떄의 전류흐름이 상이한것 같다. 아래 그림의 나의 예상 전류흐름이다.

image-20240130225449967

어쩃든 다음과 같이 두번째 경우로 전류흐름을 바꿔주고 다시 작업에 들어갔다.

# 가상환경 실행
source ~/workspace/dcworks/env/bin/activate
# 차량에 접근
cd mycar/
# 게임패드 리모컨으로 시작하기
python manage.py drive --js

위와 같이 해주었는데도 차량이 움직이지 않아 해결책을 찾고있다.

(다음날, 교수님께 여쭤보러갔다가, 분해했는데, 모터전원버튼이 아래에 있는걸 알게되었다. 이걸 켜고 다시 작동시키니 작동이 되더라ㅋㅋㅋ)

댓글남기기