JSP's Deep learning

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

Etc/CARLA Simulator

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

_JSP_ 2023. 2. 18. 13:35

CARLA UE4Editor crash 오류 수정 중 : 23.02.20~23.02.21(수정완료)

* 메인 PC 사전준비 사항

# 다음의 명령어로 권한 설정(모든 권한 허용)
xhost +

 

* 빌드환경

  • 메인 PC
    • OS : Ubuntu 20.04
    • GPU : RTX 4080
    • NVIDIA 드라이버 : 525.85.05
    • CUDA version : 12.0
    • cuDNN : 8.9
  • 도커 이미지
    • 이미지 : nvidia/vulkan
    • OS : Ubuntu 20.04.5 LTS
    • python : 3.8.10
  • 빌드버전
    • CARLA : 0.9.13
    • Unreal Engine : 4.26.2

 

1. CARLA 0.9.13 서버 빌드

 

1.1 도커 컨테이너 생성

docker run -itd --privileged --gpus all --name carla0913_server_ue426_vulkan -e NVIDIA_DISABLE_REQUIRE=1 -v /dev/snd:/dev/snd -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 carla0913_server_ue426_vulkan bash

1.3 Ubuntu 기본 패키지 설치

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|apt-key add - &&
apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main" &&
apt-get update

1.4 유저 생성 및 추가

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

# 1. USER 생성
adduser ue426vulkan

# 2. sudo 및 vim 설치
apt-get update &&
apt-get install sudo &&
apt-get install vim

# 3. USER 정보 추가를 위한 편집기 열기
vim /etc/sudoers

# 4. USER 정보 추가(root 밑에 추가한다)
ue426vulkan	ALL=(ALL:ALL) ALL

# 5. 저장
wq!

# 6. 컨테이너 나가기
exit

# 7. 컨테이너 USER 접속
docker exec -it --user ue426vulkan carla0913_server_ue426_vulkan bash

1.5 빌드를 위한 필요 패키지 설치

# 1.
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 python python-dev python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev git

# 3.
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-8/bin/clang++ 180 &&
sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-8/bin/clang 180

# 4. 
sudo apt-get install xorg-dev

# 5. 
## For Python 3
pip3 install --upgrade pip
## For Python 2
pip install --upgrade pip

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

1.6 언리얼 엔진 빌드

* 사전 준비

  • Github 계정과 Epicgame 연동
    (다운로드 권한을 받기 위함)
  • Github 계정에서 Classic 토큰 발행
    (발행된 토큰은 발행 당시를 제외하고는 확인이 불가하므로 주의)
  • 빌드는 user 폴더에서 진행
    (cd ~/)

* 빌드

# 1. USER 폴더로 이동
cd ~/

# 2. Unreal Engine Stable version 4.26.2 다운
git clone --depth 1 -b carla https://github.com/CarlaUnreal/UnrealEngine.git ~/UnrealEngine
## 1) Github ID 입력
## 2) Github token 입력

# 3. Unreal Engine 폴더 이동
cd ~/UnrealEngine

# 4. 빌드
./Setup.sh && ./GenerateProjectFiles.sh && make

* 테스트

# 1. UE4Editor 파일이 있는 폴더로 이동
 cd ~/UnrealEngine/Engine/Binaries/Linux
 
 # 2. UE4Editor 실행
 ./UE4Editor

UE4Editor가 정상적으로 실행되고, 프로젝트 생성 및 열기가 정상적으로 동작하는지 확인

1.7 CARLA 0.9.13 빌드

# 1. 빌드 보조 패키지 설치
sudo apt-get install aria2

# 2. USER 폴더로 이동
cd ~/

# 3. CARLA simulator 0.9.13 다운
git clone --depth 1 -b 0.9.13 https://github.com/carla-simulator/carla

# 4. CARLA 0.9.13 asset 다운
wget http://carla-assets.s3.amazonaws.com/20211112_d5cfa12.tar.gz

# 5. 압축해제할 폴더 생성
cd ~/carla/Unreal/CarlaUE4
mkdir Content
cd Content
mkdir Carla

# 5. CARLA 0.9.13 asset 압축해제
cd ~/
tar -xvzf 20211112_d5cfa12.tar.gz -C ~/carla/Unreal/CarlaUE4/Content/Carla

# 6. 빌드 파일 수정(1/2)
cd ~/carla/Util/BuildTools
vim BuildCarlaUE4.sh
## 첫줄 추가
UE4_ROOT=~/UnrealEngine
wq

# 7. 빌드 파일 수정(2/2)
vim ~/carla/Util/BuildTools/Setup.sh
:433
## 다음의 경로로 수정
XERCESC_REPO=https://archive.apache.org/dist/xerces/c/3/sources/xerces-c-${XERCESC_VERSION}.tar.gz

# 8. 빌드
cd ~/carla
make launch

 

2. CARLA 0.9.13 클라이언트 빌드

 

2.1 도커 컨테이너 생성

docker run -itd --privileged --gpus all --name carla0913_client_ue426_vulkan -e NVIDIA_DISABLE_REQUIRE=1 -v /dev/snd:/dev/snd -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

2.2 도커 컨테이너 접속

docker exec -it carla0913_client_ue426_vulkan bash

2.3 Ubuntu 기본 패키지 설치

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|apt-key add - &&
apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main" &&
apt-get update

2.4 유저 생성 및 추가

# 1. USER 생성
adduser user

# 2. sudo 및 vim 설치
apt-get update &&
apt-get install sudo &&
apt-get install vim

# 3. USER 정보 추가
vim /etc/sudoers
## root 밑에 추가
user	ALL=(ALL:ALL) ALL

# 4. 저장
wq!

# 5. 컨테이너 나가기
exit

# 6. 컨테이너 USER 접속
docker exec -it --user user carla0913_client_ue426_vulkan bash

2.5 클라이언트 빌드를 위한 필요 패키지 설치

# 1.
sudo apt-get install aria2

# 2.
sudo add-apt-repository -r "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main"

# 3.
sudo apt-get install build-essential clang-8 lld-8 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.
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-8/bin/clang++ 180 &&
sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-8/bin/clang 180

# 5.
sudo apt-get install xorg-dev

# 6.
## For Python 3
pip3 install --upgrade pip
## For Python 2
pip install --upgrade pip

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

2.6 CARLA 0.9.13 설치

# 1. CARLA 0.9.13 다운
cd ~/
git clone --depth 1 -b 0.9.13 https://github.com/carla-simulator/carla

# 2. 빌드 파일 수정
vim ~/carla/Util/BuildTools/Setup.sh
:433
## 다음의 주소로 수정
XERCESC_REPO=https://archive.apache.org/dist/xerces/c/3/sources/xerces-c-${XERCESC_VERSION}.tar.gz
wq

# 3. 클라이언트 빌드
cd ~/carla
make PythonAPI ARGS="--python-version=3.8"

# 4. 패키지 설치(1/3)
sudo apt-get install python3-pygame

# 5. 패키지 설치(2/3)
cd ~/carla/PythonAPI/carla/dist
pip3 install carla-0.9.13-cp38-cp38-linux_x86_64.whl

# 6. 패키지 설치(3/3)
cd ~/carla/PythonAPI/examples
python3 -m pip install -r requirements.txt

# 7. 라이브러리 빌드
cd ~/carla
make LibCarla

2.7 클라이언트 테스트

클라이언트 테스트를 위해서는 CARLA 서버가 동작 중이어야 한다(CARLA 서버 make launch 후 편집기에서 'Play'을 눌러 동작시켜야 함)

cd ~/carla/PythonAPI/examples

# Terminal A
python3 spawn_npc.py  

# Terminal B
python3 dynamic_weather.py 

# Terminal C
python3 generate_traffic.py

 


* 빌드 에러 해결

  • PUBKEY_ERROR
# 없는 키를 다음의 명령어로 모두 추가
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [ERROR에 표시된 Key 번호]

## 예시
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 15CF4D18AF4F7421

 

Comments