홍든램지의 보일러실

ROS 2 Foxy 설치 - Ubuntu 20.04 본문

ROS(Robot Operating System)

ROS 2 Foxy 설치 - Ubuntu 20.04

예비보일 2022. 9. 7. 20:55
반응형

ROS(Robot Operating System) 은 로봇 어플리케이션 빌드를 위한 라이브러리와 각종 Tool 이다.

ROS는 오픈소스 tool이며 최신 알고리즘에서부터 좋은 성능을 갖는 개발도구를 갖고 있다.

 

ROS 1에 대한 것은 ROS wiki에서 확인 할 수 있으며

https://wiki.ros.org/

 

Documentation - ROS Wiki

ROS (Robot Operating System) provides libraries and tools to help software developers create robot applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more. ROS is licensed under

wiki.ros.org

ROS 2는 아래 주소 에서 확인 할 수 있다.

https://docs.ros.org/

 

Citations — ROS 2 Documentation: Foxy documentation

Macenski, T. Foote, B. Gerkey, C. Lalancette, W. Woodall, “Robot Operating System 2: Design, architecture, and uses in the wild,” Science Robotics vol. 7, May 2022.

docs.ros.org

2022년 현재 ROS 와 ROS2

 

설치 환경 - ubuntu 20.04

설치 방법

1. 소스 빌드

2. 미리 빌드된 파일 사용

3. 데비안 패키지 사용

Binary 패키지는 REP-2000 리스트에서 제공하는 Tier 1 OS만 생성되어 있다. 만약 다른 OS에서 실행할려면 Docker에 Container를 사용해야한다.

 

1.Setup locale - 지역 설정

우선 UTF-8을 지원하는 로케일인지 확인해야한다.

locale

현재 한글로 설정되어 있으며 ROS Document에서는 en_US.UTF-8로 설정하라고 되어 있다. 

이미 UTF-8이 지정된 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  # verify settings

 

일반적인 리눅스나 Mac 환경의 경우 자주 사용되는 로케일이 설치되어 있다. 하지만 Docker와 같은 최소화된 환경에서는 로케일이 기본적으로 설치가 안되어 있다. 아래와 같이 Docker container 와 같은 환경의 경우 locale이 CPOSIX  로케일밖에 없는 것을 확인 할 수 있다.

$ docker run -it ubuntu:latest bash
root@a4365005d20a:/# locale -a
C
C.UTF-8
POSIX

사용하고자 하는 로케일이 없는 경우에는 locale-gen 이나 localedef를 사용해 로케일을 추가하고 사용할 수 있다.

 

LC_ALL

  • 전역 로케일 설정값입니다. 우선순위가 가장 높습니다.

LANG     

  • 전역 로케일 설정값입니다. 다른 값이 설정되어있지 않을 때만 적용되며, 우선순위가 가장 낮습니다.

LC_MESSAGES

  • 메시지를 표시하는 기준이 되는 로케일을 지정합니다.

LC_CTYPE

  • 문자 분류, 글자수, 대소문자 구분이 되는 로케일을 지정합니다.

LC_NUMERIC

  • 숫자와 관련된 기준이 되는 로케일을 지정합니다.

LC_MONETARY

  • 통화나 금액과 관련된 숫자의 기준이 되는 로케일을 지정합니다.

LC_TIME

  • 날짜, 시간과 관련된 로케일을 지정합니다.

LC_COLLATE

  • 문자열의 정렬 순서를 결정하는 로케일을 지정합니다.

이 외에도 시스템에 따라 LC_PAPER, LC_NAME, LC_ADDRESS, LC_TELEPHONE, LC_MEASUREMENT, 

LC_IDENTIFICATION 등 추가적인 환경변수들도 있습니다. 

 

로케일과 관련된 환경변수들을 설정함으로서 로케일 설정을 변경할 수 있으며, 이 설정값에 따라서 프로그램이 지원하는 경우 메시지, 시간 형식, 통화 형식 등의 출력이나 동작을 변경할 수 있습니다. 로케일 설정은 특정 언어의 입출력에 영향을 주는 경우가 있어서, 영어 이외의 언어를 사용하는 경우 적절한 값을 지정해야합니다.

 

2.Setup Source

우선 ROS2 apt 리포지토리를 시스템에 추가해야 한다. 먼저 아래 명령어를 통해 Ubuntu 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

위 와 같이 메시지가 확인이 안된다면

 

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

위 커맨드를 통해 Universe 리포지토리를 활성화 할 수 있다.

 

이제 실질적으로 아래 커맨드를 통해 ROS 2 리포지토리를 추가한다.

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

설치하고자 하는 시스템의 source list에 리포지토리를 추가한다.

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

 

 

3.Install ROS 2 packages

리포지토리 설정후 리포지토리 캐시를 업데이트 한다.

sudo apt update && sudo apt upgrade -y

ROS 2 패키지는 자주 업데이트되는 우분투 시스템을 기반으로 만들어진다. 새 패키지를 설치하기 전에 최신 상태인지 확인하는 것이 좋다.

 

ROS 2 패키지 설치

sudo apt install ros-foxy-desktop ros-foxy-rmw-fastrtps* ros-foxy-rmw-cyclonedds*

 

4.Environment setup

설치 스크립트 소싱

.bash 뿐 아니라 setup.sh, setup.zsh도 가능하다고 되어있다.

# Replace ".bash" with your shell if you're not using bash
# Possible values are: setup.bash, setup.sh, setup.zsh
source /opt/ros/foxy/setup.bash

 

5.Try some examples

ros2 의 기본 예제를 실행 해보자

터미널에 c++ talker 노드를 실행하자.

source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_cpp talker

 

다음으로 python listener 노드를 실행하자

 

이렇게 실행된 결과를 확인할 수 있다.

 

출처 -

1. ROS2 Document https://docs.ros.org/en/foxy/Installation

2. 오로카 https://cafe.naver.com/openrt/25288

반응형
Comments