ROS2 Windows 설치

Xeno·2024년 1월 23일
1

ROS2 for Windows

ROS는 Robot Operation System 의 약자로, 기존의 ROS1의 경우 Ubuntu 에서의 가동을 기본으로 하였지만, ROS2가 개발되면서 Linux, Windows, Mac 등 크로스플랫폼을 지원하게 되었다.
우선 ROS2의 이런 저런 기능을 테스트해 보기 전에 먼저 일반적으로 많이 사용되는 Windows 운영체제에 ROS2를 설치해보자.

이 글에 있는 모든 내용은 ROS2 공식 Document 에 쓰여있는 내용을 기반으로 작성하였으니 원문이 필요하다면 아래의 링크를 참고하자.

Environment

  • Windows 11 (English)
    • Document 에서는 Windows 10 Only 라고 되어있지만, 직접 설치해본 결과 큰 문제는 없음
  • ROS2 Humble

아래의 모든 내용은 2024년 1월 22일 작성일을 기준으로 한 내용을 다루고 있으며, 설치방법 등은 달라질 수 있음

모든 설치는 Indivisual 사용을 기준으로 설치되며, 각각의 Software 라이센스는 설치 환경에 따라 맞추어 설치하여야 함

Install ROS2

Install Chocolatey

가장 먼저 설치해야 하는 것은 Chocolatey 라고 하는 Package Management Tool 이다. Wikipedia 에 따르면 Chocolatey 는 Linux 의 APT 와 유사하게 명령어를 통해 Windows 환경에서의 Software 설치를 단순화 시키는 도구이다.

아래의 링크를 참고하여 설치할 수 있다.

안내되어있는 설치방법은 아래와 같다.

  1. Windows Powershell 을 관리자 모드로 실행한다.
  2. 아래 명령어를 입력해 Execution Policy 를 확인한다.
    Get-ExecutionPolicy
    출력되는 결과가 Restricted 라면 아래 두줄의 명령어 중 하나를 입력해 출력결과가 All Signed 가 표시되도록 설정해주어야 한다.
    Set-ExecutionPolicy AllSigned
    Set-ExecutionPolicy Bypass -Scope Process
  3. 아래 명령어를 입력해 Chocolatey 를 설치한다.
    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
  4. 명령어를 입력하면 몇분 내에 설치가 완료된다. 설치가 완료되면 아래의 명령어를 입력해 설치된 chocolatey 의 버전이 정상적으로 표시되는지 확인한다.
    choco
    Chocolatey v2.2.2
    Please run 'choco -?' or 'choco <command> -?' for help menu.

Install Python

Chocolatey 의 설치가 완료되었다면 Python 을 설치하여야 한다. 대상 Python 버전은 3.8.3 버전이고, 다른 버전을 설치하여도 관련 패키지 설치는 가능하나 이후 컴파일하거나 실행 하는 과정에서 에러가 발생할 수 있으니 가능하면 해당 버전을 사용하는것을 권장한다.

choco install -y python --version 3.8.3

설치가 정상적으로 진행되면 C:\Python38 경로에 Python 이 설치된다.

Install Visual C++ Redistributables

ROS2 를 실행하기 위한 Redistributable pack 을 설치한다. 설치는 chocolatey 를 통해 진행한다.

choco install -y vcredist2013 vcredist140

Install OpenSSL

ROS2 내부에서 통신을 위해 사용되는 OpenSSL 을 설치한다.

설치 단계에서 "반드시" v1.1.1n 버전을 설치하여야 하고, Win32 나 Light 버전, 3.x.x 버전을 설치하면 안됨

설치 파일은 아래 링크에서 다운받을 수 있다.

설치 과정에서 별다른 설정을 건들지 않았다면 아래의 명령어를 입력해 설정 파일의 경로를 환경변수에 등록한다.

setx /m OPENSSL_CONF "C:\Program Files\OpenSSL-Win64\bin\openssl.cfg"

이후 OpenSSL 의 실행파일 경로를 PATH 환경변수에 등록한다. 등록하는 방법은 아래와 같다.
1. 시작메뉴를 눌러 설정 프로그램을 실행한다.
2. 메뉴에서 System 항목을 찾고, 가장 아래에 있는 About 항목을 클릭한다.
3. Device specifications 아래의 Related links 에 있는 Advanced system settings 항목을 클릭한다.
4. 표시되는 화면 우측 하단의 Environment Variables... 버튼을 클릭한다.
5. 하단의 System variables 목록에서 좌측에 Path 라고 쓰여있는 항목을 찾아 더블클릭하거나, 선택한 후 우측 하단의 Edit 버튼을 클릭한다.
6. 우측의 New 버튼을 누른 후, 아래의 경로를 입력한다.

C:\Program Files\OpenSSL-Win64\bin\

Install Visual Studio

Windows 에서는 ROS2 의 빌드 도구로 GCC 가 아닌 MSVC 를 사용한다. 따라서 Visual Studio 를 설치해 빌드 도구를 설치하여야 한다. Document 에서 설명하는 version 은 Visual Studio 2019 이지만, Visual Studio 2022 를 설치하여도 실제 개발에는 큰 차이가 없다.

우선 이 글에서는 Visual Studio 2019 Community 를 기준으로 설치를 진행한다.
아래의 링크에 접속해 Visual Studio 2019 Installer 를 다운받는다.

Installer 를 다운받은 후 실행하면 Visual Studio 에서 사용할 도구를 선택하는 화면이 표시되는데, 필수적으로 Desktop development with C++ 항목을 선택한다. 한국어로는 C++를 이용한 데스크톱 개발 로 표기된다.

설치에는 다소 시간이 소요되기 때문에, 해당 설치가 진행되는 동안 다음 설치를 진행하면 된다.

Install OpenCV

ROS2 에서 제공하는 일부 example 들이 OpenCV 를 사용하기 때문에 아래의 링크에서 Pre-compile 된 OpenCV 파일을 다운받아야 한다.

아래의 압축파일을 다운받아 C:\opencv 경로에 다운받는다.

압축이 해제된 후, CMD 를 관리자 권한으로 실행하여 아래의 명령어를 입력한다. OpenCV를 다른 경로에 설치한 경우 C:\opencv 위치에 OpenCV 가 설치된 경로를 입력하여야 한다.

setx /m OpenCV_DIR C:\opencv

Install dependencies

Install CMake

ROS2 패키지 빌드시 CMake 를 사용하기 때문에, 아래의 명령어를 입력해 CMake 를 설치한다.

choco install -y cmake

설치가 완료되면 위의 Install OpenSSL 단계에서 수행한 환경변수 추가 방법을 이용해 C:\Program Files\CMake\bin 경로를 Path 환경변수에 추가하여야 한다.

설정이 완료되면 CMD 를 실행해 아래 명령어를 입력해 CMake 가 정상적으로 설정되었는지 확인할 수 있다.

cmake
Usage

  cmake [options] <path-to-source>
  cmake [options] <path-to-existing-build>
  cmake [options] -S <path-to-source> -B <path-to-build>

Specify a source directory to (re-)generate a build system for it in the
current working directory.  Specify an existing build directory to
re-generate its build system.

Run 'cmake --help' for more information.

Install library dependencies

아래의 경로에서 dependency 설치를 위한 Nuget package 파일을 다운받는다.

다운받아야 하는 항목은 아래와 같다.

  • asio.1.12.1.nupkg
  • bullet.3.17.nupkg
  • cunit.2.1.3.nupkg
  • eigen-3.3.4.nupkg
  • tinyxml-usestl.2.6.2.nupkg
  • tinyxml2.6.0.0.nupkg

다운받은 파일들은 설치를 위해 한 폴더안에 모아준다. 이후 CMD 를 관리자 권한으로 실행시키고 해당 파일들이 위치한 폴더 경로를 아래의 명령어의 <PATH\TO\DOWNLOADS\> 위치에 입력하고 실행해 설치를 진행한다.

choco install -y -s <PATH\TO\DOWNLOADS\> asio cunit eigen tinyxml-usestl tinyxml2 bullet

Install python dependencies

Python dependency 를 설치하기 전에, 우선 setuptools 와 pip 패키지를 업데이트한다.

python -m pip install -U pip setuptools==59.6.0

업데이트가 완료된 후, 아래 명령어를 통해 Python dependencies 를 다운받는다.

python -m pip install -U catkin_pkg cryptography empy importlib-metadata lark==1.1.1 lxml matplotlib netifaces numpy opencv-python PyQt5 pillow psutil pycairo pydot pyparsing==2.4.7 pyyaml rosdistro

Install Qt5

ROS2는 Cross-Platform 을 지원하기 위해서 대부분의 UI를 Qt를 이용해 개발하였다. 따라서 Qt5의 Runtime Library 의 설치가 필요하다. 단 ROS는 QT 5.12.x 버전을 사용하기 때문에 해당 버전을 설치해 주어야 한다.

아래의 링크에서 5.12.x Offline Installer 항목을 선택한 후, Qt 5.12.12 for Windows 를 다운받는다.

Qt 설치 과정에는 Qt 홈페이지 계정이 필요하니, Installer 가 다운로드 되는 동안 미리 Qt 사이트에서 회원가입하는것을 추천한다.
설치 과정에서 설치할 항목을 선택하는 화면이 표시된다면, Qt -> Qt 5.12.12 -> MSVC 2017 64-bit 항목은 필수로 설치될 수 있도록 한다.

설치가 완료되면 CMD 를 관리자 모드로 실행하고 아래 명령어를 입력해 설치된 Qt 경로를 환경변수에 추가한다. 아래 명령어는 기본적으로 Qt 가 설치되는 경로가 지정되어 있으며, 다른 경로에 Qt를 설치한 경우 해당 경로에 맞게 명령어의 경로를 변경해주어야 한다.

setx /m Qt5_DIR C:\Qt\Qt5.12.12\5.12.12\msvc2017_64
setx /m QT_QPA_PLATFORM_PLUGIN_PATH C:\Qt\Qt5.12.12\5.12.12\msvc2017_64\plugins\platforms

Install Graphviz

ROS 에서 rqt_graph 와 같이 그래프로 상태 등을 보여주는 기능을 사용하기 위해서는 Graphviz 라이브러리가 필요하다. 아래 링크에서 Graphviz 의 Installer 를 다운받을 수 있다.

설치 과정에서 Graphviz 설치 경로를 환경변수에 추가할지 물어보는 화면이 표시되면 Add Graphviz to system PATH for all users 항목을 선택해 Graphviz 설치 경로를 환경변수에 추가할 수 있다.

Install additional DDS implementations (optional)

ROS2 에서는 ROS1 과 달리 DDS 라고 하는 네트워킹 단순화 솔루션이 필요하다. ROS2 Humble 을 기준으로 공식적으로 지원하는 DDS 솔루션은 아래와 같다.

  • eProsima Fast DDS (default)
  • Eclipse Cyclone DDS
  • GurumNetworks Gurum DDS

여기에서는 기본적으로 제공되는 Fast DDS 를 활용할 예정이기 때문에 별도의 설치 방법은 다루지 않는다. 만약 다른 DDS 를 이용해 시스템을 구성하려는 경우 아래의 원문 문서를 참고해 세팅을 진행할 수 있다.

Downloading ROS2

이제 ROS2 의 빌드 파일을 다운받으면 모든 설치가 완료된다. 설치 파일은 아래 링크에서 다운받을 수 있다.

작성일 기준 ROS 2 Humble Hawksbill - Patch Release 6 가 가장 최신버전이기 때문에 해당 버전의 Assets 항목을 눌러 ros2-humble-20231122-windows-release-amd64.zip 항목을 다운로드한다. 필요시 debug 버전의 binary 를 설치하여도 된다.

이후 다운받은 압축파일을 해제한다. ROS2 공식문서에서 권장하는 압축 해제 경로는 C:\dev\ros2_humble 이지만, 기본적으로 아무곳에다 해제해도 무관하다. 단 다른 경로에 압축을 해제한 경우 이후 경로를 일치시키는 등의 작업이 필요할 수 있다.

압축 해제가 완료되었다면 ROS2 의 설치 과정은 모두 완료되었다.

Install colcon-toolkit

공식 문서에서는 언급되어 있지 않지만, ROS2 를 이용해 개발을 하는 등의 작업을 하기 위해서는 colcon 이라고 하는 python 기반의 toolkit 이 필요하다.
설치는 CMD를 실행하고 아래의 명령어를 입력해 설치할 수 있다.

python -m pip install colcon-common-extensions

Ubuntu 의 경우는 아래와 같다.

sudo apt install python3-colcon-common-extensions

First run

Environment Setup

ROS2 에서 프로그램을 빌드하거나 실행하려는 경우 대부분 Visual Studio 를 설치하면서 함께 설치된 Developer Command Prompt 를 이용해 작업을 진행하게 된다. 우선 시작메뉴에서 Developer Command Prompt 를 입력해 설치된 Visual Studio 버전에 맞는 터미널를 실행한다.

이후 표시되는 화면에서 아래의 명령어를 입력해 실행된 터미널에서 ROS2를 실행할 수 있도록 세팅한다.

call <ROS2_INSTALL_PATH>\local_setup.bat
call C:\dev\ros2_humble\local_setup.bat

테스트 단계에서는 2개의 터미널이 필요하기 때문에 위의 명령어로 ROS2 실행 황경이 설정된 2개의 터미널을 준비한다.

Run example

실행된 두개의 터미널 중 하나에 아래의 명령어를 입력한다.

ros2 run demo_nodes_cpp talker

정상적으로 실행되면 PC의 설정에 따라 네트워크 접근 허용 요청창이 표시되며, 터미널에 아래와 같이 메시지가 출력된다.

[INFO] [1706015278.331225100] [talker]: Publishing: 'Hello World: 1'
[INFO] [1706015279.333183200] [talker]: Publishing: 'Hello World: 2'
[INFO] [1706015280.329804500] [talker]: Publishing: 'Hello World: 3'
[INFO] [1706015281.329810600] [talker]: Publishing: 'Hello World: 4'
....

이 상태에서 또다른 터미널에 아래의 명령어를 입력한다.

ros2 run demo_nodes_py listener

마찬가지로 정상적으로 실행되면 터미널에 아래와 같이 메시지가 출력된다.

[INFO] [1706015278.432340500] [listener]: I heard: [Hello World: 1]
[INFO] [1706015279.444008100] [listener]: I heard: [Hello World: 2]
[INFO] [1706015280.472285800] [listener]: I heard: [Hello World: 3]
[INFO] [1706015281.499976400] [listener]: I heard: [Hello World: 4]
....

메시지를 잘 확인하면 처음 실행한 talker 에서 Hello World: 이후에 숫자가 표시되는데, 이와 동일한 텍스트가 이후에 실행한 listener 화면에 표시되는것을 확인할 수 있다.

여기까지 정상적으로 실행되는 것을 확인하였으면 ROS2 설치가 완료되었다고 볼 수 있다.

Trouble Shooting

실제로 ROS2 를 처음 설치해보면 설치과정에서는 큰 문제가 없는데 정상적으로 실행되지 않는 경우가 많다. 설치 과정에서 직접 겪어본 설치 오류를 아래에 정리해 두었으니 혹시라도 정상적으로 실행이 되지 않는다면 증상을 확인해보고 아래의 내용을 참고해보자.

아래 내용은 수시로 추가, 변경, 삭제될 수 있음

[ros2run]: Process exited with failure 3221226505

[ros2run]: Process exited with failure 3221226505

설치 직후에 example 을 실행하였을 때 위와 같이 오류가 발생하는 경우 OpenSSL 의 설치 버전이 잘못되었을 수 있다. 설치되어 있는 OpenSSL 을 먼저 삭제한 후, 위의 내용을 참고해 OpenSSL 을 재설치해 해결할 수 있다.

반드시 위에서 언급한 OpenSSL 버전을 한번 더 확인해보고, 해당하는 버전을 다운받자.

1개의 댓글

comment-user-thumbnail
2024년 2월 26일

C:\Program Files\Microsoft Visual Studio\2022\Community>call C:\dev\ros2_humble\local_setup.bat
"[rti_connext_dds_cmake_module][warning] RTI Connext DDS environment script not found (\resource\scripts\rtisetenv_x64Win64VS2017.bat). RTI Connext DDS will not be available at runtime, unless you already configured PATH manually." 이거 때문에 미치겠네요 -0-..........

답글 달기

관련 채용 정보