본문 바로가기

ROS (Robot Operating System)

[ROS: Robot Operating System] 1-2. ROS 설치

ROS 설치

본 포스팅에서는 ROS를 Ubuntu 환경에 설치하는 방법에 대해 포스팅한다. 

 

1. 네트워크 시간 동기화

* 설치 전, Ubuntu의 네트워크 시간을 동기화하는 것을 먼저 설치한다. 

- ROS는 네트워크 시간을 사용하여 Message가 보내진 시간을 확인하기 때문에 PC간의 시간 동기화가 중요하다. 

- 시간을 동기화 하는 방법으로 NTP (network time protocol)와 rdate가 있다. 정확한 단위의 동기화가 필요하다면 NTP를 이용하면 된다. NTP는 밀리초(1/1000) 단위까지 계산해준다. 

- Ubuntu는 기본적으로 timedatectl 패키지가 설치되어 있다. 

 

1) Ubuntu의 터미널을 연다. 

2) 터미널에 sudo apt-get install ntpdate 를 입력한다. 

3) 터미널에 sudo ntpdate ntp.ubuntu.com 를 입력하여 pc 시간과 동기화 시켜준다. 

 

2. ROS 버전

- ROS는 현재 Indigo, Kinetic, Lunar Loggerhead, Melodic Morenia 등의 버전이 있다. 

- ROS 버전은 B, C, D, ...로 알파벳 순서의 이름을 가진 버전으로, Box turtle, C Turtle, Diamondback, Electric Emys 등으로 현재 Melodic Morenia 까지 출시되었다. 

- ROS 설치 사이트: http://www.ros.org/install/

 

- There is more than one ROS distribution supported at a time. Some are older releases with long term support, making them more stable, while others are newer with shorter support life times, but with binaries for more recent platforms and more recent versions of the ROS packages that make them up [1]. 

 

-> Indigo 버전은 더 이상 지원이 되지 않기 때문에 설치를 권장하지 않는다. 

-> ROS Kinetic Kame은 2016년 5월에 released 되었고, LTS (Long-Term Support) 2021년 4월까지 지원된다. 

-> ROS Melodic Morenia는 2018년 5월에 released 되었고, LTS 2023년 5월까지 지원된다. 

 

- 본 포스팅에서는 Ubuntu (18.04) 버전을 사용하기 때문에 Melodic Morenia 버전을 설치한다. 

 

 

3. ROS with Melodic Morenia

1) Melodci Morenia 설치: http://wiki.ros.org/melodic/Installation/Ubuntu

2) packages.ros.org의 소프트웨어를 받아 들이도록 설정한다. 

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

3) ROS Repository에서 패키지를 다운받기 위해 공개키를 추가한다. 

sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

 

4) Ubuntu의 Debian 패키지를 인덱싱하고, 모든 패키지를 업그레이드 한다. 

sudo apt update

5) Melodic Morenia의 full 버전을 설치한다. 시간이 조금 걸린다. 대략... 30분 정도. (빨리 설치하고 집에 가고싶다.....)

sudo apt-get install ros-melodic-desktop-full

 

6) ROS를 사용하기 전에는, rosdep를 초기화 해주어야 한다. rosdep는 ROS에서 몇 가지의 중요한 컴포넌트들을 실행하거나 컴파일 하고 싶은 소스를 실행하기 위해 필요한 의존성 패키지를 쉽게 설치할 수 있다. 

sudo rosdep init

rosdep update

7) 환경설정을 한다. 

source /opt/ros/melodic/setup.bash

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc

 

8) ROS 패키지를 빌드하기 위한 도구들과 의존성 패키지를 설치한다. 

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

 

9) 빌드시스템, ROS의 빌드 시스템으로 Catkin (캐킨)을 사용한다. catkin은 ROS에서 코드를 빌드하고 구성하는데 사용되는 방법으로, 다른 빌드시스템보다 ROS 패키지를 외부에서 가져온 코드나 통합하거나, 혹은 만든 소프트웨어를 릴리즈하고자 할 때 유연성을 보장한다. 

- catkin 작업 폴더를 생성하고 초기화한다. 

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/

catkin_make

 

- ls 명령어를 사용하여 확인하면, build, devel, src의 생성된 폴더를 확인할 수 있다. src 폴더에는 사용자가 생성한 소스 파일과, build 폴더는 빌드 관련 파일이 저장되며, devel은 빌드 후에 생성된 실행 관련 파일이 저장된다.

 

3. ROS with Melodic Morenia

1) 동작 테스트를 위한 roscore 명령을 입력한다. roscore는 ROS의 기본 실행 명령이고, 패키지에서 하나의 노드를 실행하는데 사용된다. 

- 노드란, ROS에서 최소 단위의 실행 프로세서를 가리키는 용어이고, 하나의 실행 가능한 프로그램이다. 노드와 노드 사이에 연결과 메세지 등에 의한 정보가 주고 받아지는데, 이를 묶어 주는 역할을 Master (마스터) 라고 한다. 

* 마스터와 노드, 노드와 노드 간의 구조는 다음 포스팅에서 설명할 계획이다. 

roscore

 

2) 거북이 화면: ROS의 가장 기본적인 예시이며, 새로운 터미널을 생성하여 아래와 같이 tutlesim 패키지의 tutlesim_node를 실행하여 준다. 

rosrun turtlesim turtlesim_node

- 거북이 화면이 나오면 정상적으로 ROS가 설치된 것이다. 

- 거북이를 움직이기 위해 새로운 터미널을 실행하고, turtlesim 패키지의 tutle_teleop_key를 실행시켜 준다. 

rosrun turtlesim turtle_teleop_key

- 노드 간의 정보 전달 상황을 알려주는 그래프이다. 

- 아래과 같이 rqt_graph 패키지의 rqt_graph를 실행한다. 

rosrun rqt_graph rqt_graph

- /teleop_turtle과 /turtlesim 의 노드가 연결되어 있으며, /turtle1/cmd_vel 이 전달되고 있는데, 이를 "토픽" 이라고 한다. 토픽은 publisher가 실행하고자 하는 행위를 마스터에 등록한 후, 메시지 형태로 전환하여 publish 한다. 이를 받아들이고자 하는 subscriber가 마스터에 등록된 토픽을 전달 받고 메시지 형태로 토픽을 송수신 하게 된다. 

 

* 마스터, 노드 간의 연결 및 정보 전달 방법은 다음 포스팅에서 이어진다. 

 

[1] http://wiki.ros.org/ROS/Installation