Autoware Docker (Ubuntu 20.04) 설치기)

Pilgrim·2023년 2월 4일
0

내가 가지고 있는 Victus V 16 노트북은
AMD Ryzen 계열의 CPU
RTX 3050 mobile GPU
를 가지고 있고

지금까지 Autoware 1.14 를 우분투 18.04 에 Source build로
설치하여 진행하였다.

하지만, 노트북의 WIFI 모듈부터 시작해서, HDMI 인식안됨 등
별의 별 삽질을 거쳤다.

  1. GPU 드라이버의 20번 이상의 버전을 다르게 하여 설치시도
  2. 그래픽드라이버와 NOUVEAU 간의 충돌
  3. NOUVEAU nomodeset을 통한 해제
  4. 안됨
  5. 커널 5.4에서 -> 5.11로 업그레이드
  6. 남들은 잘만되는데, recovery 모드에 들어가야만이 resume 으로 Xserver실행가능
  7. GPU 드라이버 설치하면 블랙스크린
  8. 기타등등 블로그, stackflow, 구글링, 모든 수단을 사용하였으나, 해결안됨
  9. 18.04--> 20.04 로 업그레이드 (혹시몰라 20.04 설치 디스크로 부팅하면 신기하게도 HDMI, WIFI 모듈등 잘만됨)

목적 : 20.04 에서는 AUTOWARE source build 가 안됨 그래서 docker로 melodic 기반의 실행을 진행

  1. graphic safe mode 로 설치 20.04 설치 (Bootloader 는 windows bootloader p1 이 아닌, 물리적 하드위치로 잡는다)

  2. 무한재부팅 증상 발현 (nomodeset 으로 실행시키니 증상이 없다 짜증..)

  3. sudo gedit /etc/default/grub 으로

    $ sudo gedit /etc/default/grub
    $ GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash nomodeset"
    $ sudo update-grub2
  4. GPU driver autoinstall

	$ sudo ubuntu-drivers autoinstall
    
  1. 하지만, GPU 설치후, 이유를 알 수없는 드라이버 이슈로 노트북 monitor를 인식 못하는 이슈가 발생하고, monitor를 unknown display로 인식하는것도 모자라, 다음 부팅때는 아예 모니터에 아무것도 디스플레이 되지 않는 개같은 이슈 발생

  2. 재설치 (이번에는 꼭 성공한다는 마인드로, WIFI연결후, additional program 들도 같이 인스톨하는 옵션을 키고 설치한다, 이는 그래픽 카드도 자동으로 설치하기 위함)

  3. 설치 후, nvidia-smi를 해보면, 그래픽카드가 설치가 안되어있다고 나온다.

  4. 다시 4번의 커맨드로 설치 진행 (이번에는 470이 아닌 510이 깔린다 이건.. 뭔..)

  5. 모든 이슈들이 해결됨. 다음은 도커 설치

AUTOWARE docker 설치순서

  1. Install Docker

    $ sudo apt-get update
    $ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    $ sudo apt-key fingerprint 0EBFCD88
    $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

이후에 docker CE 설치

    $ sudo apt-get update
	$ sudo apt-get install docker-ce
    $ sudo docker run hello-world
    

헬로월드 나오면 완성
근데, UID 는 처음에 0으로 설정되어있으므로 나중에 3번 할때 UID 세팅을 바꿔줘야한다.

  1. Nvidia Docker Runtime
    분명 이녀석은 일정버전 이상의 docker 를 설치하면 자동으로 깔리는것으로 알고 있는데, 설치가 안되어서 수동으로 설치를 했었어야했음.
    NVIDIA GPU는 GTX 600 이상의 시리즈가 요구됨

    	$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
         && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
         && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

Nvidia-docker install

	$ sudo apt-get update
	$ sudo apt-get install -y nvidia-docker2
    

docker 서비스 재시작

	$ sudo systemctl restart docker
    
  1. Docker container 설치
    여기까지 정말 힘들게 왔는데, 여기서 설치할 docker container 는 ros melodic 기반의 우분투 18.04 OS 이며 autoware 가 사전에 source build 된 버전을 깔았다.

    	$ git clone https://github.com/autowarefoundation/autoware_ai_docker.git
    	$ cd docker/generic

여기서 바로 generic의 run.sh파일을 실행하면 모든게 완료 된다.

	$ sudo ./run.sh
    

하지만, 여기서 UID 가 겹쳐서 실행할 수없다는 에러가 뜬다면, 다음과같이 설정을 변경한다.

#!/bin/bash                                                                 
set -e                                             
CUDA="on"
IMAGE_NAME="autoware/autoware"
TAG_PREFIX="latest"
ROS_DISTRO="melodic"
BASE_ONLY="false"
PRE_RELEASE="off"
AUTOWARE_HOST_DIR=""![](https://velog.velcdn.com/images/b34b349/post/3cbc43ce-80e4-4b4d-85f1-4c3a677cfcbd/image.png)

USER_ID="$(id -u)"

if [ "$USER_ID" == 0 ]; then
    USER_ID=1000;
else
    USER_ID=${UID};
fi

이후에 터미널의 앞단이 흰색으로바뀌며 깔지도 않았던 ros 등의 명령어를 which 등으로 확인하면서 동작을 확인 하면 모든것이 완료

추가적으로, 처음에는 root 권한으로 docker에 억세스 해야하지만, 일반유저에 권한을 주지 않으면 shared_dir을 사용할 수 없다.

	$ sudo usermod -aG docker [username]
    $ sudo service docker restart
   

이렇게 하면 docker 가 재시작 되고, run.sh 파일을 실행시면 shrared_dir 안에 있는 파일들은 서로 공유가 가능한 상태가 된다.

profile
코딩하는 연구자

0개의 댓글