JSP's Deep learning

[CARLA Simulator] CARLA 0.9.11 Linux Build with Docker on Ubuntu 20.04.05 LTS 본문

Etc/CARLA Simulator

[CARLA Simulator] CARLA 0.9.11 Linux Build with Docker on Ubuntu 20.04.05 LTS

_JSP_ 2023. 2. 2. 00:08

CARLA Simulator Linux Build on Ubuntu 20.04 using docker

본 환경구축 방법은 개발환경에 의존적이며 개발환경이 달라지면 예기치 못한 에러가 발생할 수 있다.

* 개발환경

  • Local
    • OS : Ubuntu 20.04
    • GPU : RTX 4080
    • NVIDIA 드라이버 : 525.85.05
    • CUDA version : 12.0
    • cuDNN : 8.9
  • nvidia/vulkan image
    • 사용 이미지 : nvidia/vulkan
    • OS : Ubuntu 20.04.5 LTS
    • python : 3.8.10
  • CARLA & Unreal Engine Version
    • CARLA : 0.9.11
    • Unreal Engine : 4.24.3

1. 로컬 환경

1) 환경구축

  1. NVIDIA 그래픽 드라이버 설치
  2. CUDA toolkit 설치
  3. cuDNN 설치
  4. NVIDIA-Docker 설치
  5. Docker container toolkit 설치
  6. Vulkan SDK 설치
  7. xhost 권한 설정
    • Command
    • xhost + : 모든 접근제한 해제

2) nvidia/vulkan 이미지 빌드

  1. Git Clone
  2. git clone https://gitlab.com/nvidia/container-images/vulkan.git
  3. Clone 폴더 진입
  4. Build
  5. docker build --pull -t \ nvidia/vulkan:1.3-470 \ --build-arg BASE_DIST=ubuntu20.04 \ --build-arg CUDA_VERSION=11.4.2 \ --build-arg VULKAN_SDK_VERSION=`curl -sk https://vulkan.lunarg.com/sdk/latest/linux.txt` \ --file docker/Dockerfile.ubuntu .
  6. Test3D 큐브가 화면에 표시되면 성공
  7. docker run -rm --gpus all --name test -e NVIDIA_DISABLE_REQUIRE=1 -v $HOME/.Xauthority:/root/.Xauthority -e DISPLAY=$DISPLAY -e NVIDIA_DRIVER_CAPABILITIES=all --device /dev/dri --net host -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json -v /etc/vulkan/implicit_layer.d/nvidia_layers.json:/etc/vulkan/implicit_layer.d/nvidia_layers.json -v /usr/share/glvnd/egl_vendor.d/10_nvidia.json:/usr/share/glvnd/egl_vendor.d/10_nvidia.json nvidia/vulkan:1.3-470 vkcube

2. CARLA 서버 컨테이너 구축

1-1) 도커 컨테이너 생성

docker run -itd --privileged --gpus all --name carla_server_ue424_vulkan -e NVIDIA_DISABLE_REQUIRE=1 -v $HOME/.Xauthority:/root/.Xauthority -e DISPLAY=$DISPLAY -e NVIDIA_DRIVER_CAPABILITIES=all --device /dev/dri --net host -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json -v /etc/vulkan/implicit_layer.d/nvidia_layers.json:/etc/vulkan/implicit_layer.d/nvidia_layers.json -v /usr/share/glvnd/egl_vendor.d/10_nvidia.json:/usr/share/glvnd/egl_vendor.d/10_nvidia.json nvidia/vulkan:1.3-470 /bin/bash

1-2) 도커 컨테이너 접속

docker exec -it carla_server_ue424_vulkan bash

2) 기본 패키지 설치

apt-get update &&
apt-get install wget software-properties-common &&
add-apt-repository ppa:ubuntu-toolchain-r/test &&
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - &&
apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main" &&
apt-get update

3) 유저 생성

CARLA는 USER 권한의 빌드를 권장한다.
USER 권한으로 진행하지 않으면 예기치 못한 에러가 발생할 수 있다.

  1. 유저 생성
  2. adduser ue424vulkan
  3. 유저 생성을 위한 패키지 설치
  4. apt-get update && apt-get install sudo && apt-get install vim
  5. 유저 정보 추가
  6. # 1. sudoers 파일 편집 vim /etc/sudoers # 2. root 아래에 다음의 USER 정보 추가 ue424vulkan ALL=(ALL:ALL) ALL # 3. 강제저장 wq!
  7. 컨테이너 나가기
  8. # 1. 유저모드로 접속하기 위해서 컨테이너를 나간다. exit
  9. 유저모드로 컨테이너 접속
  10. docker exec -it --user ue424vulkan carla_server_ue424_vulkan bash

4) 의존성 패키지 설치

  1. apt repository 추가
  2. sudo apt-add-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main"
  3. 의존성 패키지 설치 - (1)
    • GPG PUBKEY_ERROR 발생 시 해결방법
    • # ERROR에 표기된 Key의 hash 값 추가 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [keynum]
    • Key 재설정 후 설치 명령어 재실행
    • sudo apt-get install build-essential clang-10 lld-10 g++-7 cmake ninja-build libvulkan1 python python-dev python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev git
  4. 의존성 패키지 설치 - (2)
    1. sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-10/bin/clang++ 180 && sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-10/bin/clang 180

5) 그래픽 동작 테스트

  1. nvidia 그래픽 확인
  2. # Local pc의 실행결과와 같으면 정상 nvidia-smi
  3. vulkan 확인
  4. # vulkan graphic 정보가 정상 출력되면 성공 vulkaninfo
  5. opengl 확인(선택)
    • 해당 테스트는 opengl로 빌드를 진행할 시 관련 패키지를 설치하고 진행한다.
    • 본문의 환경구축은 Only vulkan으로 진행되기 때문에 opengl이 잡히지 않아도 문제없다.
  6. # opengl의 version이 출력되면 성공 glxinfo | grep "OpenGL version"

6) Unreal Engine 4 빌드

(1) Unreal Engine Repository 접근권한 습득

  1. EPIC Games 깃허브 연동
  2. 개인 깃허브 토큰 발행

(2) 빌드

  1. Repository Clone
    • Clone을 위해서 깃허브 아이디와 개인 토큰(PW)을 입력해야한다.
    • 본문의 깃허브 아이디와 토큰
    • git clone -b 4.24 https://github.com/EpicGames/UnrealEngine.git
  2. Clone 폴더로 이동
    1. cd ~/UnrealEngine
  3. 빌드(1)
    1. ./Setup.sh
  4. 빌드(2)
    1. ./GenerateProjectFiles.sh
  5. 빌드(3)
    1. make

(3) Unreal Engine Editor 테스트

  1. xorg 설치
    1. sudo apt-get install xorg-dev
  2. UE4Editor 폴더로 이동
    1. cd ~/UnrealEngine/Engine/Binaries/Linux
  3. UE4Editor 실행
    1. ./UE4Editor
  4. 프로젝트 생성 및 열기
    • 문제없이 프로젝트가 생성되고 열리면 정상

7) CARLA 서버 빌드

  1. CARLA install 보조 패키지 설치
    1. sudo apt-get install aria2
  2. CARLA 설치 의존성 패키지 설치
    1. pip install --user setuptools && pip3 install --user -Iv setuptools==47.3.1 && pip install --user distro && pip3 install --user distro && pip install --user wheel && pip3 install --user wheel auditwheel
  3. 홈 폴더로 이동
    1. cd ~/
  4. CARLA Repository Clone
    1. git clone -b 0.9.11 https://github.com/carla-simulator/carla
  5. CARLA 0.9.11 asset 다운로드 및 압축 해제
    1. # 1. asset 다운로드
      1. wget http://carla-assets.s3.amazonaws.com/20201222_232b876.tar.gz
    2. # 2. 폴더 생성
      1. cd ~/carla/Unreal/CarlaUE4 mkdir Content cd Content mkdir Carla
    3. # 3. 홈폴더 이동
      1. cd ~/
    4. # 4. 압축해제
      1. tar -xvzf 20201222_232b876.tar.gz -C ~/carla/Unreal/CarlaUE4/Content/Carla
  6. Build 파일 수정
  7. # 1. CARLA Build 파일 폴더 이동
    1. cd ~/carla/Util/BuildTools
  8. # 2. Build 파일 편집기 열기
    1. vim BuildCarlaUE4.sh
  9. # 3. 첫줄에 다음 코드 추가
    1. UE4_ROOT=~/UnrealEngine
  10. # 4. 저장 후 종료
    1. wq
  11. 빌드를 위한 Ubuntu 18.04 의존성 패키지 설치
    # 1. Ubuntu 18.04 의존성 패키지 설치를 위한 apt-repo 추가
    sudo add-apt-repository -r "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main"
    # 2. 의존성 패키지 설치
    sudo apt-get install build-essential clang-8 lld-8 g++-7 cmake ninja-build libvulkan1 libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev git
  12. CARLA 0.9.11이 Ubuntu 18.04에 맞춰진 버전
  13. Setup 파일 수정
  14. # 1. Setup 파일이 있는 경로로 이동
    1. cd ~/carla/Util/BuildTools
  15. # 2. vim 편집기 열기
    1. vim Setup.sh
  16. # 3. 433번째 줄 이동 :433 [Enter]
  17. # 4. XERCESC_REPO의 경로를 다음으로 수정
    1. XERCESC_REPO=https://archive.apache.org/dist/xerces/c/3/sources/xerces-c-${XERCESC_VERSION}.tar.gz
  18. # 5. 저장 후 종료 :wq
  19. Launch
  20. # 1. CARLA root 폴더로 이동
    1. cd ~/carla
  21. # 2. 빌드 시작
    1. make launch
  22. Test
    • 빌드 후 CARLA UE4Editor가 정상적으로 실행되고 Play을 눌렀을 때, 정상적으로 실행되면 성공

3. CARLA 클라이언트 컨테이너 구축

1-1) 도커 컨테이너 생성

docker run -itd --privileged --gpus all --name carla_client_ue424_vulkan -e NVIDIA_DISABLE_REQUIRE=1 -v $HOME/.Xauthority:/root/.Xauthority -e DISPLAY=$DISPLAY -e NVIDIA_DRIVER_CAPABILITIES=all --device /dev/dri --net host -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json -v /etc/vulkan/implicit_layer.d/nvidia_layers.json:/etc/vulkan/implicit_layer.d/nvidia_layers.json -v /usr/share/glvnd/egl_vendor.d/10_nvidia.json:/usr/share/glvnd/egl_vendor.d/10_nvidia.json nvidia/vulkan:1.3-470 /bin/bash

1-2) 도커 컨테이너 접속

docker exec -it carla_client_ue424_vulkan bash

2) 기본 패키지 설치

apt-get update &&
apt-get install wget software-properties-common &&
add-apt-repository ppa:ubuntu-toolchain-r/test &&
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - &&
apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main" &&
apt-get update

3) 유저 생성

CARLA는 USER 권한의 빌드를 권장한다.
USER 권한으로 진행하지 않으면 예기치 못한 에러가 발생할 수 있다.

  1. 유저 생성
    1. adduser user
  2. 유저 생성을 위한 패키지 설치
    1. apt-get update && apt-get install sudo && apt-get install vim
  3. 유저 정보 추가
  4. # 1. sudoers 파일 편집
    1. vim /etc/sudoers
  5. # 2. root 아래에 다음의 USER 정보 추가
    1. user ALL=(ALL:ALL) ALL
  6. # 3. 강제저장
    1. wq!
  7. 컨테이너 나가기
    1. # 1. 유저모드로 접속하기 위해서 컨테이너를 나간다.
      1. exit
  8. 유저모드로 컨테이너 접속
    1. docker exec -it --user user carla_client_ue424_vulkan bash

4) CARLA Client 설치

  1. CARLA install 보조 패키지 설치
    1. sudo apt-get install aria2
  2. apt repository 추가
    1. sudo apt-add-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main"
  3. CARLA 의존성 패키지 설치 - (1)
    • GPG PUBKEY_ERROR 발생 시 해결방법
    • # ERROR에 표기된 Key의 hash 값 추가
      • sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [keynum]
    • Key 재설정 후 설치 명령어 재실행
    • sudo apt-get install build-essential clang-10 lld-10 g++-7 cmake ninja-build libvulkan1 python python-dev python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev git
  4. CARLA 의존성 패키지 설치 - (2)
    1. sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-10/bin/clang++ 180 && sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-10/bin/clang 180
  5. 빌드를 위한 Ubuntu 18.04 의존성 패키지 설치
    # 1. Ubuntu 18.04 의존성 패키지 설치를 위한 apt-repo 추가
    sudo add-apt-repository -r "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main"
    # 2. 의존성 패키지 설치 - 1
    sudo apt-get install build-essential clang-8 lld-8 g++-7 cmake ninja-build libvulkan1 libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev git
    # 3. 의존성 패키지 설치 - 2
    pip install --user setuptools &&
    pip3 install --user -Iv setuptools==47.3.1 &&
    pip install --user distro &&
    pip3 install --user distro &&
    pip install --user wheel &&
    pip3 install --user wheel auditwheel
  6. CARLA 0.9.11이 Ubuntu 18.04에 맞춰진 버전
  7. CARLA repository clone
  8. # 1. 홈 디렉토리로 이동
    1. cd ~/
  9. # 2. CARLA 0.9.11 버전 clone
    1. git clone -b 0.9.11 https://github.com/carla-simulator/carla
  10. CARLA Setup 파일 수정
  11. # 1. Setup 파일이 있는 경로로 이동
    1. cd ~/carla/Util/BuildTools
  12. # 2. vim 편집기 열기
    1. vim Setup.sh
  13. # 3. 433번째 줄 이동 :433 [Enter]
  14. # 4. XERCESC_REPO의 경로를 다음으로 수정
    1. XERCESC_REPO=https://archive.apache.org/dist/xerces/c/3/sources/xerces-c-${XERCESC_VERSION}.tar.gz
  15. # 5. 저장 후 종료 :wq
  16. CARLA Client Build
    1. # 1. CARLA root 폴더로 이동
      1. cd ~/carla
    2. # 2. CARLA Client 빌드
      1. make PythonAPI ARGS="--python-version=3.8"
    3. # 3. CARLA Library 추가
      1. make LibCarla
  17. CARLA Client Test
    • CARLA 서버가 Play 버튼이 눌린채로 실행되고 있어야한다.
    # 1. Example 폴더로 이동
    cd ~/carla/PythonAPI/examples
    # 2. npc spawn 파일 실행
    python3 spawn_npc.py  
    # 3. 날씨 설정 파일 실행
    python3 dynamic_weather.py 
    각 예제 파일이 CARLA 서버에 잘 반영되면 성공

  • Command Tips
  • # 우분투 버전확인
    • lsb_release -a

< Reference >

[1] https://carla.readthedocs.io/en/0.9.11/build_linux/

Comments