
Carla Simulator은 자율주행 시스템의 개발, Training, Validation 과정을 지원하기 위해 제작된 Unreal Engine 기반의 무료 오픈 소스 시뮬레이터로 자율주행 연구자 쉽게 R&D 연구가 가능한 환경을 제공하는 것을 목표로 하고 있다.
주요 장점으로는
이렇게 4가지로 요약할 수 있다.
현재 적용가능한 가장 최신 버전은 CARLA 0.9.15이며, 시뮬레이터의 기반이 되는 물리 엔진은 Unreal Engine 4가 적용되어 있으나, 이를 Unreal Engine 5로 업데이트 하는 작업이 진행되고 있다.
이와 관련된 소개자료는 아래 2개의 영상을 참고하기 바란다.
Carla 시뮬레이터의 설치는 해당 시뮬레이터의 공식 가이드 Document인
https://carla.readthedocs.io
을 참고하여 진행한다.
참고로 Carla는 Linux(Ubuntu), Windows와 같은 OS에 설치(Build)가 가능하다. 여기서 Carla Doucment에서는 install이라는 단어 대신 Build라 표현하고 있다.
필자는 컴공에 대한 지식이 얕기에 구글링을 통해서도 이 두개의 차이점을 잘 이해하지 못하였으나, 필자가 이해한 바로는 Build는 해당 프로그램의 코드를 컴파일하여 실행파일을 생성하고, Install은 컴파일된 바이너리 파일을 시스템에 배치한다 하는데 Carla의 설치 과정이 여러 단계를 거치고 또 그 과정에서 VS2019와 같은 IDE를 통해 *.sh 파일을 Build하니 그냥 그렇게... Build라 칭한다...
아무튼 필자는 Windows 11 OS 상에서 Carla를 설치하고자 한다.
Carla 시뮬레이터가 원활하게 구동하기 위해서는
라고 공식문서에 나와있으나, Carla 시뮬레이터를 설치하는데 많은 파일을 다운받기에 여유롭게 300GB의 디스크 공간은 확보하는 것이 좋으며, GPU도 Carla의 Server와 Client를 분리한 2PC 이상의 환경이 아닌 하나의 PC에서 Server와 Client를 같이 구동한다면 nvidia 그래픽 카드로 RTX 3070 이상의 중 고급형 GPU를 사용하는게 심적으로 편하다.
마지막으로 TCP포트는 Carla 시뮬레이터는 Server - Client 구조로 시뮬레이션 상의 가상환경(world)를 제공하는 Server와 자율주행 시스템, 혹은 가상환경의 제어 Script에 속하는 Client 간의 통신에 TCP/IP통신을 활용하기에 Carla 시뮬레이터가 주로 사용하는 TCP포트가 열려 있어야 한다.
이 부분도 잘 이해한 편은 아니나, 시뮬레이터가 설치된 PC에서 포트 포워딩 부분을 참고하면 특정 번호대의 포트를 Carla 시뮬레이터가 사용한다는 것이며, 그 번호가 2000, 2001번이란 것이다.
이거는 깊게 생각을 안해도 되는것이... 2000번대 포트는 윈도우건 우분투건 잘 안쓰는 포트 번호대 이다..
아무튼 여기까지 설명하고 넘어가도록 하겠다.
CMake, Git, Make, 7Zip, Python3 x64를 설치해야 한다.
1. CMake
https://cmake.org/download/
CMake는 최신 버전을 다운받아서 설치하면 되며, 아래의 그림과 같이 Windows x64 Installer로 다운 후 설치하면 된다.

설치 과정 중 신경써야 할 부분으로는 PATH 추가를 꼭 선택해서 설치해야 한다. 이를 지나쳣으면 설치 후 시스템 변수 들어가서 CMake 설치 경로를 넣어줘야 하한다.
2. Git
https://git-scm.com/downloads
Windows 버전으로 다운받아서 설치하면 되며, 설치 과정 중 여러가지 선택을 요하는 창이 뜨지만 'Next'만 연타해서 설치하면 된다.
3. Make
https://gnuwin32.sourceforge.net/packages/make.htm
위 링크에 접속 후 아래 그림의 붉은색 박스로 표시한 Windows 설치 버전 다운로드 링크를 누르면 해당 파일이 있는 저장소 사이트로 이동한 뒤 짧은 시간이 흐른 뒤에 자동으로 파일을 다운로드 받는다.


설치는 Next만 누르면 모두 해결되지만, 설치 후에 시스템 변수등록을 진행해야 한다.
시스템 변수 등록은 아래 그림의 과정을 통해 진행하며, Make가 설치된 경로 내 bin폴더가 생성된다.이 bin폴더의 경로를 시스템 변수로 등록해 주면 된다.

4. 7zip
https://www.7-zip.org/
윈도우 설치버전을 다운받아서 설치하면 된다.

5. Python 윈도우 버전
https://www.python.org/downloads/windows/
https://carla.readthedocs.io/en/latest/start_quickstart/#windows
Carla 시뮬레이터는 개발언어로 C++ 및 Python을 사용했으며, Carla Python API인 Python 패키지를 사용하려면 OS에 Python을 설치해야 한다. 이때 Python버전이 중요한데 설치 가이드에서는 2.7, 3.6, 3.7, 3.8버전으로 설치할 것을 권장하고 있다.
이는 향후 Carla 시뮬레이터 설치완료 후 User Script 작성에 Python언어를 사용 시 Carla Python 라이브러리를 import해야 하는데, 이 라이브러리의 권장 버전이라 볼 수 있다. 다른 Python버전과 호환되는지는 테스트 해보지 않아서 모르겠다...
아무튼 윈도우에서 Python을 그냥 설치하면 가장 최신버전인 3.12가 설치되니 구버전인 Python 3.8.10을 설치해야 한다.
Python 설치 시에는 'Add Python 3.8 to PATH' 및 'Disable path length limit' 항목을 체크해주자

설치 후에는 아래 그림처럼 pip install 과정을 통해 Carla 시뮬레이터가 요구하는 CARLA Python API를 설치해준다

이때 명령어는 아래의 것을 순차적으로 입력해 주면 된다.
pip3 install --upgrade pip
pip3 install --user setuptools
pip3 install --user wheel
Visual Studio 2019, Unreal Engine를 설치
위 Minor installation 과정보다 조금 더 난이도가 있는 Major installation 과정을 수행한다.
1. Visual Studio 2019
https://visualstudio.microsoft.com/ko/thank-you-downloading-visual-studio/?sku=Community&rel=16

업로드한 링크를 따라가면 자동으로 Visual Studio 2019 다운로드가 진행된다.
Visual Studio 2019설치파일을 다운로드 한 후에는 개발환경에 필요한 서브 요소를 선택할 수 있는데
Carla 설치 가이드가 조금 부실한 측면이 있다.
따라서 해당 구성요소를 잘 선택해서 따라해야한다.
설치가 필수인 구성요소는 아래와 같다.
C++를 사용한 데스크톱 개발 -> MSVC v140 - VS2015 C++ 빌드 도구(v14,00)
C++를 사용한 게임 개발 -> Windows 10 SDK(10.0.18362.0)
.NET 데스크톱 개발 -> .NET Framework 4.6.2 개발도구

위 사진처럼 VS2019의 설치옵션에서 3개의 워크로드와 워크로드 내 설치 세부정보에서 3가지 옵션을 Enable한 후 설치를 진행하면 된다.

2. Unreal Engine
https://github.com/carla-simulator/carla
Unreal Engine의 경우 해당 엔진을 배포하는 공식 런처인 에픽게임즈 런처를 사용하는 것이 아니라
Carla 시뮬레이터 가이드에 기재된 git 레포지토리에 등록된 Carla용으로 커스텀된 Unreal Engine 버전을 다운로드 받아야 한다.
해당 Unreal Engine은 4.26.2버전이며, 설치 시 Carla 시뮬레이터에서 제공하는 기본 Map 및 기타 정적/동적 컨텐츠에 대한 Asset이 포함되어 있다.
따라서 아래 사진에 기재한 Carla 개발자 커뮤니티가 운영하는 Github 저장소의 CarlaUnreal 파일 목록을 다운로드 받는다 보면 된다.

다운로드 명령어는 아래와 같다
git clone --depth 1 -b carla https://github.com/CarlaUnreal/UnrealEngine.git
윈도우에서 위 명령어를 사용하려면 명령 프롬포트를 연 뒤 해당 명령어를 붙여서 실행하면 되며, 이때 파일을 다운로드 하는 것이니 다운로드 경로를 설정해줘야 하는데 필자의 경우 가장 편리하게 C:\ 경로를 사용했다.

git에서 Carla - Unreal Engine을 다운로드 완료한 후에는 아래의 명령어를 통해 *.bat 파일에 기재된 명령어를 수행하게끔 하여
Windows상에서 unreal Engine이 구동이 가능하게끔 Build를 진행한다.
배치파일의 실행은 명령프롬포트에서 아래의 명령어를 통해 수행한다.
Setup.bat
GenerateProjectFiles.bat

명령어를 수행하고 나면 UE4.sln파일이 생성되며, 이를 VS2019로 실행하면 된다.

VS2019가 실행되면 UE4가 솔루션 탐색기에 떠 있을 것이며, 해당 UE4.sln파일을 Buile(Compile)하는데 빌드 옵션으로 Development Editor, Win64, Unreal Builed Tool로 진행해야 한다.
Build를 완료한 후애는 해당 Unreal Engine폴더를 새로이 시스템 환경변수로 등록해준다.

여기서부터는 동일한 항목을 VS2022로 빌드하는 방법에 대한 설명이다.

vs2019와 동일하게 빌드옵션을
Devlopment Editor -> Win64 -> UnrealBuildTool
설정 후
UE4 솔루션 파일을 빌드하는건 동일하다.

빌드는 딱히 잘 안되는건 없는 듯 하다
Carla 시뮬레이터를 설치(Build)하기 위한 사전작업을 완료했으니 본격적으로 Carla Simulator을 다운로드 받고 설치하는 과정을 수행한다.
Carla 시뮬레이터를 Github에서 다운로드한다.
https://github.com/carla-simulator/carla
다운로드 방식은 명령 프롬포트를 관리자 권한으로 실행한 뒤 C:\ 경로에 다운로드를 진행한다. 이때의 명령어는 아래와 같다.

다운로드를 완료한 후에는 Carla의 최신 버전을 다시 다운로드 받기 위해 Update.bat파일을 실행한다. 실행은 CMD(명령프롬포트)를 통해 진행하며, 이때 다운로드가 어느정도 진행되는지를 알 수 없어서 작업관리자 -> 성능 -> 이더넷의 현재 업로드/다운로드 속도로 간접확인을 수행하는게 편하다.
Update.bat


이제 Carla를 설치(Build)를 수행한다.
사실 3.1까지가 준비작업이고 이제 진짜 설치하는 과정이라 볼 수 있다.
설치 및 실행은 아래의 명령어를 실행하면 끝나는 간단한 작업이지만, 작업을 수행하는데 여러 오류가 발생하기에 발생한 오류에 따라 구글링 또는 git 커뮤니티의 도움을 받아야 한다
명령어는 먼저 밝히며 아래와 같다.
make PythonAPI
make launch
24 12 17 업데이트 사안
현재 시점에서 Visual Studio 2019를 구하고 이를 사용 및 빌드하는건 여간 쉬운 일이 아니다.
거의 VS2022로 대체된 환경이다 보니 위 명령어를 그대로 수행하면 빌드가 안된다(Path문제...)
따라서 아래의 명령어로 make를 해야 올바르게 빌드가 진행된다
make PythonAPI GENERATOR="Visual Studio 17 2022"
make launch GENERATOR="Visual Studio 17 2022"
원래대로라면 "Visual Studio 16 2019"로 기재되어 있는 항목을 전부 변경해야 하는 것이 옳지만 이게 코드 찾는게 일이다...
위 명령어의 실행은 CMD창에서 하는 것이 아닌 VS2019를 설치하면서 추가되는 별도의 개발도구(정확히는 개발자용 명령줄 셀 및 프롬포트 x64 Native Tools Command Prompt for VS 2019를 사용한다.
검색에서 x64 Native Tools Command Prompt for VS 2019를 친 뒤 관리자 권한으로 실행하면 된다.
위 사진과 같이 Carla를 다운로드한 폴더로 이동 후 make PythonAPI, make launch를 차례대로 치면 설치(Build)가 진행되지만 진행되는 과정에서 많은 오류가 발생하고, 이를 수정해줘야 한다.
1. zilb다운로드 불가 오류
https://www.zlib.net/

위 사진처럼 404오류와 함께 https://www.zlib.net/ 에 접속하다 마는 오류가 발생하는데 이는 zilb의 버전 문제로 발생하는 오류이다.
오류의 해결방안은 위 사진처럼 zilb 홈페이지에 접속하여 해당 홈페이지에 릴리즈된 최신 버전을 확인 후 배치파일의 버전을 최신 버전으로 수정해 주면 된다.
2. osm2odr.lib 파일 열기 실패 오류

위 사진처럼 오류 6으로 어떤 파일을 열 수 없다는 메세지가 올라오는데 이는 BuildOSM2ODR.bat에 기재되어 있는 cmake 명령어 오류로 인한 문제이다.
아래 그림처럼 해당 BuildOSM2ODR.bat를 워드패드나 vscode 편집기로 연 뒤 112번째 줄을 아래와 같이 변경한다
cmake -G %GENERATOR% %PLATFORM%^ (기존 명렁어)
cmake -G %GENERATOR% -A x64^ (수정명령어)

Carla 시뮬레이터는 make launch 명렁어가 재대로 동작한다면 시뮬레이터의 실행이 진행된다.
이 때, 첫번째 실행 시 엄청나게 많은 시간과 CPU리소스를 잡아먹는다

그래서 첫 실행 시 컴퓨터가 뻗은 건가? 하고 당황하는 경우가 있으니, 마음을 가다듬고 작업관리자 -> 성능 -> CPU 탭으로 들어가서 작업이 돌아가는 현황을 체크하는 것을 권장한다.
이렇게 첫 실행을 하면 Carla Server이 실행된다 보면 되는데 이 Server에 해당하는 Unreal Engine의 첫 실행에 CPU리소스가 엄청 많이 잡아먹힌다.
어찌저찌하여 Unreal Engine Editor이 실행된다 하더라도 '첫 플레이'에는 역시 많은 시간이 소요된다. Carla 시뮬레이터 실행은 모두 '첫 실행'에 시간이 많이 잡아먹히니 여유를 갖을 필요성이 있다.
첫 실행 과정에서 수행해야할 작업들을 전부 끝낸 후에는 아래 사진처럼
퍼포먼스 세팅에 들어가서 백그라운드에서 CPU를 덜 사용항목을 체크해주자.
이게 언리얼 엔진의 세팅은 Check가 Disable이다.(Enable의 반대)
체크를 해주면 백그라운드에서도 온전하게 Carla Simulator - Server이 100%의 퍼포먼스로 동작한다.


설치 및 실행을 완료한 후에는 C:\carla\PythonAPI\examples 경로 내에 있는 예제 파일들을 하나하나 실행해 보면서 Carla 시뮬레이터의 User Script가 정상동작하는지 확인하자.
2024 12 17 추가사항
그동안 포스트를 업데이트 하지 않았다가
언리얼 5.5버전의 카를라 설치를 진행해 보고
이번에 다시한번 4.26버전의 카를라 설치를 진행했는데
예전에 make PythonAPI, make launch를 수행하면서 발생했던 오류들은 왠만큼 다 사라진듯 하다.
vs2022버전으로도 build도 다 잘되고
UE 5.5버전의 카를라 시뮬레이터는 아직 안정성이 확보가 안된 듯 하지만, 4.26버전은 꽤 안정적으로 구동함을 다시 확인했다.
음.. 그러나 문제점이 하나 있는데
carla 시뮬레이터에서 제공하는 기본 Python 예제 파일들을 실행해 보면서 잘 실행이 되는지를 테스트 중인데
UE5.5버전 카를라 시뮬레이터와 Manual.py계열 예제파일이 실행시 바로 종료되는 문제가 발생하고 있으며,
4.26버전의 경우 ValueError : role_name: colors must have 3 channels (R, G, B)
라는 오류 리포트가 발생함을 확인했다.
음.. 이것만 해결하면 어케 예제 파일 실행 및 rosbridge 설치등을 할 수 있을 거 같은데...
좀 더 자료를 찾아봐야겠다.
2024 12 22 수정사항
뭔가 이것저것 시도를 해봤는데 여러가지로 참 에러는 해결되지 않는다.
carla 안정적인 버전으로 다시 빌드
ValueError: role_name: colors must have 3 channels (R, G, B) 이 문제가 특정 커밋 이후에 발생했다 하니 안정적인 버전으로 돌아가면 된다 한다.
방법은 아래와 같다.
1) carla를 설치한 폴더에서 아래의 명령을 수행
git fetch --all --tags

필자의 경우는 c:\에 carla를 설치했으니
c:\carla -> cmd창 실행 -> 위 명령어 수행
위 명령어를 수행하면 이전 버전의 태그나 브랜치 데이터를 다 가져오는 듯 하다.
이 다음 로컬 PC에 있는 수정된 파일정보는 어차피 github에 올라갈 일이 없으니 아래의 명령어를 차례대로 수행한다.
# 이건 안해도 되긴 함
git checkout -- Unreal/CarlaUE4/CarlaUE4.uproject
git checkout 0.9.15.2
첫번째 명령어는 두번째 명령어를 수행할 때 안정적으로 수행하고 싶어서 넣은 명령어인데
음.. 그러니까 로컬 PC에서 뭔가 수정사항이 있으니 만약 강제로 체크아웃 하면 덮어쓰기하는 문제가 생긴다는것이다.
어차피 로컬 PC의 에러를 잡는게 목적이니
로컬 PC의 모든 수정사항을 버리겠다 라는 명령어이다.
따라서 명시적으로 버리겠다 이렇게 선언한 것이다.
2) make PythonAPI, make Launch 다시 수행

x64 Native Tools Command Pormpt (2019 or 2022)버전을 실행하고
2019 버전이라면
make PythonAPI
make launch
2022 버전이라면
make PythonAPI GENERATOR="Visual Studio 17 2022"
make launch GENERATOR="Visual Studio 17 2022"
으로 명령어를 실행하면 된다.

위 두 명령어를 차례대로 잘 수행했다면 사진처럼 빌드가 완료된 되 UE4버전의 carla가 살행될 것이다.

여기까지 수행이 잘 되었으면
올바르게 carla파이썬 라이브러리를 설치해보자
3) 올바른 Python carla 라이브러리 설치
설치한 carla 폴더 아래에 \PythonAPI\carla\dist으로 넘어가면
아래의 파일 두개가 존재한다.

이 파일로 carla 파이썬 라이브러리를 설치해야한다.

위 사진처럼 기존의 carla을 제거한 뒤
carla-0.9.15-cp38-cp38-win_amd64.whl파일로 carla 파이썬 라이브러리를 설치하면된다.
# 기존 카를라 버전 제거
pip uninstall carla
# 카를라 폴더 내 파이썬 whl파일로 설치
pip install C:/carla/PythonAPI/carla/dist/carla-0.9.15-cp38-cp38-win_amd64.whl

이쯤 되면 실행이 될 법도 한데.. 징글징글하다;;;
RuntimeError: trying to create rpc server for traffic manager; but the system failed to create because of bind error.