프로젝트 기반의 강의인 만큼, 개발 환경이 구축되지 않으면 앞으로의 실습을 진행할 수 없습니다.
따라서 이번 파트에 많은 시간을 배정하였고, 힘들 수 있지만 끝까지 따라와주시면 감사합니다.
준비한 환경은 다음과 같습니다.
1,2,3 순서로 추천하는 설정입니다. 강의 컨텐츠를 따라오면서 선호하는 설정에 맞추어 작업하시다가 도저히 해결할 수 없는 문제가 발생한 경우 github issue를 발행하시거나 현장 강의의 경우 저를 불러 주시면 됩니다.
기존 Windows를 사용하고 있었다면 듀얼 부팅이라는 것을 통해 Ubuntu + Windows를 모두 사용 가능합니다. 듀얼 부팅에 방법에 대해선 잘 설명한 영상들이 많으므로 링크로 대체하겠습니다.
=> https://www.itechguides.com/dual-boot-ubuntu-windows-10/
Dual Booting 관련 자료 링크
ROS 2를 설치하기 전, 유용한 유틸리티 프로그램들을 몇가지 소개해드리겠습니다.
sudo apt update
sudo apt install terminator -y
terminator 화면 분할 예시
sudo add-apt-repository ppa:peek-developers/stable
sudo apt-get update
sudo apt install peek
cd ~/
sh -c "$(curl -fsSL https://raw.githubusercontent.com/kimsooyoung/ros_menu/main/scripts/setup.sh)"
…
Do you want to install ROS automatically? (y/N): y
********* RoadBalance Startup Menu for ROS ***********
* Usage: Please select the following options to load *
* ROS environment automatically. *
******************************************************
0) Do nothing
1) ROS 1 noetic
2) ROS 2 foxy
3) ROS 2 galactic
4) ROS2/ROS1_bridge
h) Help
Please choose an option: 2
------------------------------------------------------
* ROS_DOMAIN_ID = 30
------------------------------------------------------
...
해당 setup은 ADLINK의 오픈소스를 참고하였음을 밝힙니다. ADLINK는 DDS Vendor 중 하나로 ROS 2 보급에도 힘쓰고 있답니다. 😃
# 1. gazebo install check
gazebo
# 2. rviz2 install check
rviz2
그림와 같이 Gazebo의 화면이 어둡거나, 그림자가 보이지 않는다면 호환되는 그래픽 드라이버를 설치해야 하는 상황입니다. 당장 크게 불편하지 않다면 상관은 없습니다.
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" /etc/apt/sources.list.d/gazebo-stable.list'
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt update
sudo apt install gazebo11 libgazebo11-dev -y
sudo apt install ros-foxy-gazebo-ros-pkgs -y
sudo apt install ros-noetic-gazebo-ros-pkgs -y
해당 메뉴얼은 Windows11을 사용하는 PC를 위한 ROS 2 설치 튜토리얼입니다.
이 시점에서 문제가 있다면, 링크를 통해 문제를 해결해봅시다.
⇒ https://www.manualfactory.net/15704
wsl --install
# 1. WSL Enable
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 2. VirtualMachinePlatform Enable
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
아래와 같이 모든 작업이 성공적으로 완료되어야 합니다!
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.844
이미지 버전: 10.0.19043.1348
기능을 사용하도록 설정하는 중 [==========================100.0%==========================]
작업을 완료했습니다.
> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.844
이미지 버전: 10.0.19043.1348
기능을 사용하도록 설정하는 중 [==========================100.0%==========================]
작업을 완료했습니다.
PS C:\Users\tge13> wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 2
cd ~/
sh -c "$(curl -fsSL https://raw.githubusercontent.com/kimsooyoung/ros_menu/main/scripts/setup.sh)"
…
Do you want to install ROS automatically? (y/N): y
********* RoadBalance Startup Menu for ROS ***********
* Usage: Please select the following options to load *
* ROS environment automatically. *
******************************************************
0) Do nothing
1) ROS 1 noetic
2) ROS 2 foxy
3) ROS 2 galactic
4) ROS2/ROS1_bridge
h) Help
Please choose an option: 2
------------------------------------------------------
* ROS_DOMAIN_ID = 30
------------------------------------------------------
...
Gazebo, Rviz2, Rqt와 같은 시각화 프로그램을 사용하기 위해 Windows용 X Server인 VcXsrv를 사용하고자 합니다.
첫번째 페이지 | 하단 Display Number를 -1에서 0으로 변경 |
---|---|
두번째 페이지 | 통과 |
세번째 페이지 | Native opengl 체크해제 후 Disable access control 체크 |
네번째 페이지 | 통과 |
앞으로 재부팅 시마다 이 설정을 반복해줘야 하며, 종종 Gazebo의 메모리 누수로 인해 화면이 종료되지 않는 경우가 있는데, 이런 경우 XLaunch를 강제 종료해주면 됩니다.
export GAZEBO_IP=127.0.0.1
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
export LIBGL_ALWAYS_INDIRECT=0
# 설정 완료 후 Gazebo 실행
gazebo
echo 'export GAZEBO_IP=127.0.0.1' >> ~/.bashrc
echo "export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 " >> ~/.bashrc
echo 'export LIBGL_ALWAYS_INDIRECT=0' >> ~/.bashrc
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370114
Error: 0x80370114 ??? ??? ???? ?? ?? ??? ??? ??? ? ????.
Press any key to continue...
⇒ 관리자 권한 Powershell에서 아래의 커멘드 라인을 입력해주세요
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
해당 메뉴얼은 Windows 10을 사용하는 PC를 위한 ROS 2 설치 튜토리얼입니다.
# 1. WSL Enable
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 2. VirtualMachinePlatform Enable
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
아래와 같이 모든 작업이 성공적으로 완료되어야 합니다!
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.844
이미지 버전: 10.0.19043.1348
기능을 사용하도록 설정하는 중 [==========================100.0%==========================]
작업을 완료했습니다.
> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.844
이미지 버전: 10.0.19043.1348
기능을 사용하도록 설정하는 중 [==========================100.0%==========================]
작업을 완료했습니다.
windows terminal 화면 분할 예시
다음 링크를 통해 WSL 업데이트 프로그램을 다운받고 WSL 2 Linux 커널 업데이트를 설치/진행 후 재부팅합니다.
> wsl --set-default-version 2
WSL 2와의 주요 차이점에 대한 자세한 내용은 https://aka.ms/wsl2를 참조하세요
작업을 완료했습니다.
> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
$ cd ~/
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/kimsooyoung/ros_menu/main/scripts/setup.sh)"
Installing Neuron Startup Menu...
Cloning into '/home/kimsooyoung/ros_menu'...
remote: Enumerating objects: 583, done.
remote: Counting objects: 100% (290/290), done.
remote: Compressing objects: 100% (193/193), done.
remote: Total 583 (delta 179), reused 173 (delta 93), pack-reused 293
Receiving objects: 100% (583/583), 154.50 KiB | 3.22 MiB/s, done.
Resolving deltas: 100% (340/340), done.
Do you want to install ROS automatically? (y/N): y
Gazebo, Rviz2, Rqt와 같은 시각화 프로그램을 사용하기 위해 Windows용 X Server인 VcXsrv를 사용하고자 합니다.
첫번째 페이지 | 하단 Display Number를 -1에서 0으로 변경 |
---|---|
두번째 페이지 | 통과 |
세번째 페이지 | Native opengl 체크해제 후 Disable access control 체크 |
네번째 페이지 | 통과 |
앞으로 재부팅 시마다 이 설정을 반복해줘야 하며, 종종 Gazebo의 메모리 누수로 인해 화면이 종료되지 않는 경우가 있는데, 이런 경우 XLaunch를 강제 종료해주면 됩니다.
export GAZEBO_IP=127.0.0.1
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
export LIBGL_ALWAYS_INDIRECT=0
# 설정 완료 후 Gazebo 실행
gazebo
echo 'export GAZEBO_IP=127.0.0.1' >> ~/.bashrc
echo "export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 " >> ~/.bashrc
echo 'export LIBGL_ALWAYS_INDIRECT=0' >> ~/.bashrc
wsl --set-default-version 2
에서 작업 완료 메세지가 등장하지 않는 경우⇒ Linux용 Windows 하위 시스템 설정 여부를 확인해보신 뒤, 제일 처음 명령어부터 제가 보여드린 예시와 동일한 결과를 얻었는지 확인해보세요
⇒ 관리자 권한 Powershell에서 아래의 커멘드 라인을 입력합니다.
> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Ubuntu 설치 후 0x80370102 에러가 발생한 경우 부팅 BIOS에서 가상화 기능을 활성화해줍니다.
Ubuntu 설치 후 0xc03a001a 에러가 발생한 경우 다음 블로그 포스팅을 참고합니다.
Gazebo 실행 시 symbol lookup error가 발생하는 경우
sudo apt upgrade -y libignition-math2
을 통해 누락된 패키지를 설치합니다.
$ gazebo
gazebo: symbol lookup error: /usr/lib/x86_64-linux-gnu/libgazebo_common.so.9: undefined symbol: _ZN8ignition10fuel_tools12ClientConfig12SetUserAgentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
강의 중 사용할 코드 환경은 다음과 같습니다.
강의 중 실행한 한 줄 설치에는 제가 기본적으로 설정한 여러 단축 커멘드들이 있습니다. 몇가지만 실습하고 넘어가보겠습니다.