반응형

들었던 바로는, Windows 10 WSL에서 Gazebo를 구동시키면 Linux OS 에서 구동하는 것에 비해 현저히 시뮬레이션 성능이 떨어진다는 이야기가 있었다. 그래서 되도록이면 Linux Native 하게 Gazebo를 이용하여 PX4의 SITL을 했던 기억이 있다.

본 글은 Windows 10 WSL2에서 Gazebo를 이용하여 Ardupilot SITL을 해보는 과정을 다루고, 그 성능을 정성적으로 이야기해보고자 한다.

 

사전에 할 일 [1]

현재(23.04.04) Ardupilot은 Gazebo Garden을 지원하고 있다. 기존의 Gazebo는 Gazebo-Classic 이라고 이름 부르며 써왔으나, Open Robotics 재단에서 2025년에 지원을 종료한다고 발표한 바 있다.

아무튼, Gazebo Garden은 Ubuntu 20.04 (Focal), 22.04(Jammy), MacOS에서 사용가능하다 하니, 나는 Ubuntu 20.04 Focal을 WSL2으로 설치해서 해본다.

 

Windows 10 에 Ubuntu 20.04 설치하기

Windows 10은 Microsoft Store을 통해서 Ubuntu 20.04를 내려받아 설치할 수 있다.

 

WSL2 Ubuntu 20.04에 필요한 패키지 설치하기 [2][3]

미리 받은 Ardupilot git 저장소에서부터 시작한다.

아니라면 아래 그대로 가자. [2]

cd ~/
# Clone git repogitory
git clone https://github.com/your-github-userid/ardupilot
cd ardupilot
git submodule update --init --recursive

# Install required packages
./Tools/environment_install/install-prereqs-ubuntu.sh -y

# Reload the path
. ~/.profile

참고로 WSL에서 waf를 통해 Ardupilot을 빌드할 때, Linux 파일 구조(~/)에 두는게 빌드 속도가 훨씬 빠르다.[2]

예를 들면 Windows의 파일 위치에 접근하여 빌드하면 (/mnt/c/ 와 같이..)

waf 빌드가 상당히 오래걸리는데, 경험적으로 비교하면 WSL에서

Linux 파일 구조에 있으면 빌드에 5분도 안걸리는데

Windows 파일 구조에 있으면 1시간이 넘게 걸린다.

 

Windows10에서 Xming으로 XWindows 땡겨오기 [3][4]

 

~/.bashrc에 다음의 명령어를 넣어두자.

export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0

그리고 xeyes를 켜서 한번 보자.

# Install xeyes
sudo apt-get install x11-apps

# Run xeyes
xeyes

 

WSL2 Ubuntu 20.04에서 Gazebo 설치하기 [1][5]

필요한 툴 설치하기

sudo apt-get update
sudo apt-get install lsb-release wget gnupg

Gazebo Garden설치하기

sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
sudo apt-get update
sudo apt-get install gz-garden

설치하고 재부팅을 해줘야되나보다..

다음과 같은 에러가 난다.

TroubleShooting 1 : X server does not support xinput 2

TroubleShooting 2 : pip install 이 너무 오래 걸림 [6]

export DISPLAY= 으로 해준다.

TroubleShooting 4 : pip install PyQt5가 "Preparing wheel metadata ..." 에서 멈춤

sudo apt install python3-pyqt5

으로 설치한다. 근데 하면 pyqt5 버전이 낮아서(5.14) pyqt5-tools나 pyqt5-plugin이 요구하는 버전(5.15.9)이 안맞는다.

 

[1] Ardupilot, Using SITL with Gazebo, https://ardupilot.org/dev/docs/sitl-with-gazebo.html

[2] Ardupilot, Setting up the Build Environment (Linux/Ubuntu) - Install some required packages, https://ardupilot.org/dev/docs/building-setup-linux.html#install-some-required-packages

[3] Ardupilot, Setting up the Build Environment on Windows 10/11 using WSL1 or WSL2 - Uploading to a board using WSL2, https://ardupilot.org/dev/docs/building-setup-windows10.html#uploading-to-a-board-using-wsl2

[4] 글쓴이, WSL2 - X11 띄우기https://stella47.tistory.com/134

[5] Open Robotics, Docs/Gazebo Garden - Binary Installation on Ubuntu, https://gazebosim.org/docs/garden/install_ubuntu

[6] [WSL] pip install 명령이 먹통인 경우 해결 방법, https://hbase.tistory.com/342

[7] https://stackoverflow.com/questions/66546886/pip-install-stuck-on-preparing-wheel-metadata-when-trying-to-install-pyqt5

 

 

 

 

 

 

 

 

 

끝.

728x90

+ Recent posts