WSL2에서 Carla Simulator 환경 설정: 버전 호환성의 중요성
Carla Simulator를 WSL2 환경에서 구동하기 위한 험난했던 여정을 기록한다. 처음에는 Carla Simulator를 지원하는 Ubuntu 20.04.6 버전을 WSL2에 설치하고, ubuntu에 ROS2 Foxy와 Carla 0.9.15 버전을 설치했다.
하지만 carlaUE4.sh
실행 시 Vulkan과 관련된 문제가 발생하였다. nvidia-smi command를 실행한 결과 GPU는 잘 인식하는데, 실제로는 CPU로만 구동되는 문제에 직면했다.
![]() |
WSL에서 GPU를 인식한 모습 |
16시간 동안 Nvidia GPU를 사용하기 위해 CUDA Toolkit을 설치하고, 그래픽 드라이버를 수없이 업데이트해 보았지만 해결되지 않았다. (WSL2에서 GPU를 사용하기 위해서는 window 상의 드라이버를 최신 상태로 업데이트하고, WSL 상에 그래픽 드라이버를 직접 다운받아서는 안된다는데 이런 방식으로 오류를 해결할 수 없었다.)
cannot create vulkan instance |
![]() |
잘 되는 줄 알았으나 CPU로 실행되어 굉장히 느렸고, 이동하려는 순간 꺼졌다 |
두 번째 시도는 Windows에서 Carla를 구동하고, WSL에서는 ROS 신호를 전송하는 방식이었다. 하지만 0.9.15 버전은 carla-ros-bridge
를 지원하지 않아 0.9.13 버전을 설치하고, Python도 Pyenv를 이용해 3.7 버전으로 재설치해야 했다. (가상 환경에 build한 것을 잊지 말자!)
Releases · carla-simulator/carla
Download Anaconda Distribution | Anaconda
설치 후 가상환경(명령어 conda create 환경이름 python=3.7)을 만들어
pip install carla, pygame, numpy, jupyter, opencv-python을 해주면 된다.
그리고 ros bridge를 ubuntu에 다운로드해주었다.
환경 세팅은 공식 사이트를 참조하였다.
여기서 주의해야 할 사항은 CARLA module에 Python path를 지정하는 부분인데,
나는 초기에 WSL에서 carla에 직접 접근하도록 설정하여 문제가 생겼다.
export CARLA_ROOT=/mnt/c/Users/계정이름/Downloads/CARLA_0.9.13/WindowsNoEditor
export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.13-py3.7-win-amd64.egg:$CARLA_ROOT/PythonAPI/carla
와 같이 설정하면 windows file을 ubuntu에서 읽을 수 없는 문제가 발생하였다.
그래서 carla-0.9.13-py3.7-linux-x86_64.egg를 ubuntu에 설치하여 경로를 다시 설정해주면 성공적으로 build 가능하다.
통신을 통해 window와 연결되는 것이지 CarlaUE4를 직접 실행하는 건 아니었다.
이후 Windows의 carlaUE4
와 WSL의 carla-ros-bridge
간 통신을 위해 carla-ros-bridge
의 host 기본 설정을 localhost
에서 내 IP 주소로 변경했다. (ip와 port를 맞춰줘야 실행가능하다!)
port는 default 2000으로 변경할 필요가 없었고, ip를 맞춰주어야 했다.
IP 주소는 windows powershell에서 ipconfig 명령어를 실행하면 알 수 있다.(IPv4를 보면 됨)
이후 ubuntu에 다운받은 carla-ros-bridge의 root path에서
find . -type f -exec sed 's/찾을텍스트(localhost)/바꿀텍스트(내ip주소)/g' {} +
명령어를 실행하여 모든 ubuntu의 ip에서 실행하는 것이 아닌, window에서 실행되도록 설정하였다.
![]() |
localhost 변경 |
하지만 여전히 WSL에서 windows로 carla를 실행할 수 없었다.
그런데 일말의 희망은 PythonAPI/examples/manual_control.py
는 실행되는 것을 확인했다는데 있었다. 결국 timeout 시간이 기본 2초로 설정되어 map loading 시간을 초과하여 발생하는 문제였다. 기본적으로 프로그램이 무거워 이런 문제가 발생하는 것 같았다.
Timeout을 10초로 늘리니 실행되는 듯했지만, ros bridge
는 실행되지만 launch 시 fatal error가 발생했다.
# Option 1, start the basic ROS bridge package
ros2 launch carla_ros_bridge carla_ros_bridge.launch.py
여기까지 성공!
# Option 2, start the ROS bridge with an example ego vehicle
ros2 launch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch.py
문제가 발생한 부분
문제는 다시 버전 호환성이었다. 새롭게 설치한 0.9.13 버전은 carla-ros-bridge
버전과 일치하지 않았던 것이다. 0.9.13 버전이 호환된다고 해서 설치했지만, 공식적인 release가 아니었다. 결국 0.9.13 버전으로 branch를 checkout하여 마무리했다.
(carla-simulator/ros-bridge: ROS bridge for CARLA Simulator)
![]() |
원활히 통신하는 모습 |
이번 경험을 통해 환경 세팅 시 호환되는 버전을 먼저 확인하는 것의 중요성을 깨달았다. 디버깅 시 error 메시지를 분석하며 시도해봤는데 안된다면 다른 방법으로 접근하는 것도 중요한 것 같다.
최종 버전:
windows 11
WSL 2 - Ubuntu 20.04.6
Python 3.7
ROS2 foxy
Carla simulator 0.9.13
Carla-ros-bridge 0.9.13(비공식)
Carla 서버 실행 명령어(windows 환경):
cd (CarlaUE4 위치)
activate (가상환경)
CarlaUE4.exe -windowed -carla-server -carla-port=2000 -quality-level=Low -RenderOffScreen
Ubuntu 테스트 명령어(ubuntu 20.04 환경)
source /opt/ros/foxy/setup.bash
export CARLA_ROOT=/opt/carla-simulator
export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.13-py3.7-linux-x86_64.egg:$CARLA_ROOT/PythonAPI/carla
source /carla-ros-bridge/install/setup.bash
# Option 1, start the basic ROS bridge package
ros2 launch carla_ros_bridge carla_ros_bridge.launch.py timeout:=10.0
# Option 2, start the ROS bridge with an example ego vehicle
ros2 launch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch.py timeout:=10.0