본문 바로가기
로봇 이야기/ros2

ROS2 설치 - foxy

by 노땅엔진니어 2022. 12. 13.

1. 설치하기 전에

ROS2는  리눅스(Linux), 맥오에스(macOS), 윈도우즈(Windows)를 지원 합니다. ROS2는 오픈소스로 시작을 하였기 때문에 리눅스 버전을 사용하는 것이 문제가 발생했을 때 참조할 수 있는 자료가 많습니다.

리눅스는 많은 배포판이 있고, 이 문서에서는 데미안(Debian) 계열의 우분투(uBuntu) 20.04 데스크탑 버전을 사용합니다. 서버 버전에 설치를 할 수 있지만, 로봇 시뮬레이션을 하기 위해서는 GUI가 있는 데스크탑 버전을 사용해야 합니다.

 

ROS2에도 여러 개의 배포판이 있고, EOL(End of Life)가 남아 있는 버전은 Foxy Fitzroy(발표일 : June 5th, 2020, EOL : May 2023)과 Humble Hawksbill(발표일 : May 23rd, 2022, EOL : May 2027) 버전이 있습니다. Foxy Fitzroy 버전은 우분투 20.04 버전과 궁합이 잘맞고, Humble Hawksbill은 우분투 22.04 버전과 잘 맞습니다. 개발자 버전으로 ROLLING RIDLEY 버전이 있습니다.

바이너리 패키지(Binary Package)

ROS2는 2가지 방법으로 설치를 할 수 있습니다. 데비안 설치 패키지를 통한 방법과 소스를 직접 다운로드하여 빌드를 하는 방법으로 루트(root) 권한을 갖고 있지 않으면 소스를 다운로드 받아 빌드를 해야 합니다.

  • 데비안 패키지(debian package)
  • fat archive

이 문서에서는 데비안 설치 패키지를 통해 설치를 합니다.

우분투(uBuntu) 64비트 버전

우분투는 32비트, 64비트 모두 지원을 합니다. ROS2 foxy 버전은 amd64(x86), arm64(arm) 바이너리 패키지를 지원하지만, 32비트 버전은 소스를 다운로드 받아 빌드를 할 수 있으나 추천은 하지 않습니다.

ROS2-foxy AMD64(intel x86계열) 바이너리 패키지 상태

다음 사이트는 ROS2-foxy 버전의 패키지 별 버전 정보 및 빌드 상태를 확인 할 수 있습니다.

foxy default status : http://repo.ros2.org/status_page/ros_foxy_default.html  

ROS2-foxy Fv8(arm 64비트) 바이너리 패키지 상태

다음 사이트는 ROS2-foxy 버전의 ARM 계열 패키지 별 버전 정보 및 빌드 상태 입니다.

foxy ubv8 status : https://repo.ros2.org/status_page/ros_foxy_ubv8.html  

2. ROS2 설치

우분투(ubuntu)를 설치하면 보통 한글로 설치가 되며 로케일(locale)이 한글로 설정 됩니다. 아직 ROS2가 다국어를 완벽하게 지원을 하지 않기 때문에 로케일을 UTF-8로 설정하는 것이 좋습니다. 로케일을 설치하기 위해서는 루트권한이 필요합니다. 터미널(terminal)을 연 후에 다음과 같이 설치 및 확인을 합니다.

$ locale

$ sudo apt update && sudo apt install locales
$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8

$ locale

우분투(uBuntu) 저장소(repository)

우분투 저장소(repository)에는 다음과 같은 유형을 갖고 있습니다.

  • Main : 우분투의 기본 저장소 입니다. 무료 및 오픈 소스 소프트웨어 또는 영문 약어인 FOSS(무료 및 오픈 소스 소프트웨어)만 포함 됩니다. "Main"에서 제공하는 모든 소프트웨어는 제한없이 자유롭게 배포할 수 있습니다.
  • Universe : "Main"과 같이 "Universe"도 FOSS(Free and Open-Source Software)를 제공 합니다. 저장소의 정기적인 업데이트 보장은 우분투(ubuntu)가 아닌 일부 커뮤니티(community) 입니다. 보통 우분투를 설치하면 이 저장소가 활성화 되는데 반드시 그런 것은 아니기 때문에 ROS2 설치를 하기 위해서는 Universe 저장소가 활성화 되어 있어야 합니다.
  • Multiverse : Multiverse 저장소는 FOSS가 아닌 소프트웨어를 설치할 수 있습니다. 우분투는 라이선스 및 법적 문제로 인하여 이 저장소를 기본으로 활성화 할 수 없습니다. 또한 패키지 및 업데이트를 제공할 수 없습니다.
  • Restricted : 우분투 Restricted 저장소에서 FOSS 소프트웨어를 찾을 수 있지만 하드웨어와 같이 장치에 종속적인 패키지들 입니다. 특히 이 저장소에 그래픽 카드, 터치, 네트워크와 같은 디바이스 관련 패키지 입니다.
  • Partner : 파트너가 제공하는 우분투에서 빌드한 독점 소프트웨어가 포함되어 있습니다.
  • 기타 저장소 : 우분투와 별도인 저장소 입니다.

우분투 터미널 창에서 다음과 같이 실행을 한 후에 focal/universe 저장소가 활성화 되어 있는지 확인을 합니다.

$ apt-cache policy | grep universe
500 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
    release v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=universe,b=amd64

보통 한글 버전의 경우 "http://us.archive.com"보다는 다음 카카오와 같은 미러사이트를 사용합니다.

만약 focal/universe 저장소가 활성화 되어 있지 않다면 다음과 같이 universe 저장소를 활성화 합니다.

$ sudo apt install software-properties-common
$ sudo add-apt-repository universe

ROS2 저장소(repository)

우분투에서 ROS2 저장소를 사용하기 위해서는 ROS2의 키카 필요 합니다. ROS2 저장소의 키는 다음과 같이 필요 패키지를 설치하고 저장소에서 복사를 합니다.

$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg

자신의 우분투 컴퓨터에 ROS2 저장소(repository)를 다음과 같이 추가를 합니다.

$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
$ sudo apt update

 

저장소에 새로운 저장소를 추가하거나 변경을 하면 저장소(repository)의 캐시를 업데이트 해야 합니다. apt update는 저장소 캐시를 업데이트 합니다.

2.1. ROS2 설치

ROS2 버전은 우분투의 버전과 종속적인 경우가 많습니다. 그러므로 다음과 같이 우분투 버전을 최신버전으로 업그레이드는 하면 안됩니다. 현재까지 알려진 바로는 ros2-foxy 버전은 우분투 20.04버전과 어울리는 것으로 알려져 있습니다.

$ sudo apt upgrade

만약 우분투 20.04 버전에서 위 명령어를 통해 업그레이드를 하게되면 우분투 22.04버전으로 업그레이드가 됩니다. "apt update"는 우분투의 같은 버전(20.04 버전에서 20.04버전)에서 최신 업데이트를 반영 합니다.

 

 

여기까지 문제없이 잘 진행을 했다면 ROS2 설치는 다음과 같이 간단하게 할 수 있습니다.

$ sudo apt install ros-foxy-desktop

만약 우분투 서버 버전이라면 다음과 같이 GUI가 없는 ROS2 버전을 설치 합니다.

$ sudo apt install ros-foxy-ros-base

2.2. ROS2 환경 설정

ROS2가 설치되면 다음과 같이 ROS2 환경 설정을 합니다. 만약 매번 실행하지 않고 설정하기 위해서는 다음 명령을 .bashrc 파일에 추가를 하면 됩니다.

$ source /opt/ros/foxy/setup.bash

2.3. ROS2 설치 확인

ROS2가 제대로 동작하는지는 터밀널 2개를 연 후에 다음과 같이 각각 실행하면 됩니다.

$ ros2 run demo_nodes_cpp talker
$ ros2 run demo_nodes_py listener

2.4. ROS2 제거

ROS2 패키지 제거는 다음과 같습니다.

$ sudo apt remove ~nros-fox-* && sudo apt autoremove

위 명령은 ROS2 패키지만 제거를 하고 ROS2 저장소는 제거하지 않습니다. 저장소 제거는 다음과 같습니다.

$ sudo rm /etc/apt/sources.list.d/ros2.list
$ sudo apt update
$ sudo apt autoremove
$ sudo apt upgrade

3. ROS2 개발 툴 설치

ROS2에서는 colcon 빌드 시스템을 사용합니다. 다음과 같이 colcon 빌드 시스템을 설치 합니다.

$ sudo apt update
$ sudo apt install python3-colcon-common-extensions

 

댓글