[ROS] Ubuntu 20.04.2.0 LTS에 ROS noetic 설치
포스트
취소

[ROS] Ubuntu 20.04.2.0 LTS에 ROS noetic 설치

본 포스팅은 “ROS 로봇 프로그래밍” - (루비페이퍼, 표윤석.조한철.정려운.임태훈 지음)과 http://wiki.ros.org/ROS을 바탕으로 공부한 내용을 정리한 것입니다.

  1. ROS
  2. 파티션 분리 후 ubuntu linux 설치
  3. ROS 설치
    • NTP (Network Time Protocol) 설정
    • Installation
    • Environment setup
    • Dependencies for building packages
    • Initialize rosdep
  4. 확인

1. ROS

로보틱스 분야의 플랫폼은 크게 소프트웨어 플랫폼하드웨어 플랫폼으로 나뉜다.

로봇 소프트웨어 플랫폼은 로봇 응용프로그램을 개발할 때 필요한 하드웨어 추상화, 기능 구현 등을 포함한다.

그 중 대표적으로 ROS (Robot Operating System), 일본의 OpenRTM, 유럽의 OROCOS, 한국의 OPRoS 등이 있다.

ROS는 가장 많이 사용되고 있는 로봇 소프트웨어 플랫폼이다.

ROS의 5가지 특징

  • 프로그램 재사용성
  • 통신 기반 프로그램
  • 개발 도구 지원
  • 활성화된 커뮤니티
  • 생태계 조성

ROS는 운영체제와 비슷한 역할인 하드웨어 추상화를 포함하며, 전통적인 운영체제가 아니기에 이기종 하드웨어에서 사용할 수 있는 특징이 있다.

ROS는 Robot Operating System, Meta-Operation System으로

애플리케이션과 분산 컴퓨팅 자원 간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하여

스케줄링 및 로드, 감시, 에러 처리 등을 실행하는 시스템이다.

미들웨어 (Middleware) 또는 소프트웨어 프레임워크 (Software framework)으로 볼 수 있다.

ROS의 목적은 “로보틱스 소프트웨어 개발을 전 세계 레벨에서 공동 작업이 가능하도록 하는 환경을 구축하는 것!”

ROS의 5가지 특징

  • 분산 프로세스
  • 패키지 단위 관리
  • 공개 리포지토리
  • API 형태
  • 복수의 프로그래밍 언어 지원

ROS의 구성요소는 클라이언트 라이브러리, 하드웨어 인터페이스, 커뮤니케이션, 로보틱스 애플리케이션 프레임워크, 로보틱스 애플리케이션, 시뮬레이션, 소프트웨어 개발 툴 등.

ROS 서포트 기간은 기본적으로 2년에 한 번씩 릴리즈 되는 ubuntu LTS(Long Term Support) 버전에 맞추어 나오는 ROS 버전들은 LTS 서비스가 종료되는 시점인 5년간 지원한다.


2. 파티션 분리 후 ubuntu linux 설치

[jimnong 블로그] 파티션 분리 후 우분투 리눅스 듀얼부팅 설치방법에 설명이 자세히 잘 되어있다.

이를 참고하여 설치해보자.

우분투 한글 설정방법 https://webnautes.tistory.com/1199

ros noetic (최신버젼) 설치 https://pinkwink.kr/1319

본인은 20.04.2.0 LTS 버전으로 설치하였다. Ubunutu 20.04.2.0 LTS


3. ROS 설치

본인은 ros noetic으로 설치하였다.

공식 ros noetic 설치 문서

“ROS 로봇 프로그래밍” - (루비페이퍼, 표윤석.조한철.정려운.임태훈 지음)를 따라가며 설치해보자.

NTP (Network Time Protocol) 설정

서로 다른 pc 간 통신을 위함. (개인 pc - Turtlebot 등)

1
2
$ sudo apt-get install -y chrony ntpdate
$ sudo ntpdate -q ntp.ubuntu.com

Installation

setup sources.list

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

set up keys ROS 저장소로부터 패키지 설치 위한 공개키 추가.

ROS 버전마다 상이함. http://wiki.ros.org 참고

noetic 버전은 다음과 같다. sudo apt-key adv --keyserver 'hktp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

noetic 버전은 다음과 같다.

1
2
$ sudo apt install curl # if you haven't already installed curl
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

installation ROS 설치 이전 모든 ubuntu 패키지 업데이트

1
$ sudo apt-get update && sudo apt-get upgrade -y

이후 셋 중 하나를 설치하자. 본인은 desktop-full 버전으로 설치하였다.

Desktop-Full install (recommended)

1
$ sudo apt install ros-noetic-desktop-full

Desktop install

1
$ sudo apt install ros-noetic-desktop

ROS-Base (Bare Bones), no GUI tools

1
$ sudo apt install ros-noetic-ros-base

추후에 추가 패키지를 설치할 때는 sudo apt install ros-noetic-PCKAGE의 형태로 패키지를 직접 설치. 사용 가능한 패키지 검색은 apt search ros-noetic

Dependencies for building packages

  • rosinstall은 ros 관련 패키지 인스톨 프로그램
    1
    
    $ sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
    

Initialize rosdep

  • rosdep은 ros의 핵심 컴포넌트, 컴파일 시 의존성 패키지 설치에 도움을 주는 편의 기능.
    1
    2
    3
    
    $ sudo apt install python3-rosdep
    $ sudo rosdep init
    $ rosdep update
    

Environment setup

  • 환경설정 파일 불러오기, 작업 폴더 생성 및 초기화
1
2
3
4
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ source /opt/ros/noetic/setup.bash   # noetic 부분에 ros 버전에 맞게 기입 
$ catkin_init_workspace
  • bashrc 수정

~/. bashrc에 추가할 내용

1
2
3
4
5
6
7
8
9
10
11
12
# Set ROS Noetic
source /opt/ros/noetic/setup.bash
source ~/catkin_ws/devel/setup.bash

# Set Ros Network
export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311

# Set ROS alias command
alias cw='cd ~/catkin_ws'
alias cs='cd ~/catkin_ws/src'
alias cm='cd ~/catkin_ws && catkin_make'

Network 설정시 마스터 PC 따로 존재, 로봇은 호스트 PC 사용할경우에 다음을 구분하여 입력할경우 서로 통신 가능.

Network 설정시 ifconfig 등을 이용하여 본인 ip 입력

1
2
3
# Set ROS Network
export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://{ROS_HOSTNAME}:11311

bashrc의 ros network 설정 시, 다른 기기와의 통신을 위해서는 ip를 구분해서 작성. 하나의 pc에서만 패키지 구동하는 경우에는 위의 설정으로 가능. 본인 ip 확인 위해서는 ip addr, ifconfig 활용 가능 참고 블로그

ifconfig sudo apt-get install net-tools

ip addr ip addr

여기 뭔가 잘안된다. 나중에 다시 확인.


4. 확인

catkin은 ros 전용 빌드 시스템. test 해보자면

1
2
$ cd ~/catkin_ws/   # catkin_ws로 폴더이동, bashrc 설정을 따라왔으면 cw로 가능 
$ catkin_make  # catkin make 명령어, bashrc 설정을 따라왔으면 cm으로 가능

빌드가 성공하면 ls 명령어로 build와 devel 폴더가 생성되는 것을 확인 (catkin make 성공)

1
$ roscore #ros 실행 명령어, 종료는 ctrl+c

5. 추가 내용

ros 구동은 기본적으로 터미널 창에서 이루어진다. 따라서 여러개의 터미널 창의 사용은 필수적.

이에 나는 다중 터미널 창을 추천한다. 내가 사용하는 것은 terminator

1
$ sudo apt-get install terminator

Terminator 주요 단축키

단축키 설명사용법
터미네이터
실행
ctrl + alt + t
터미네이터
종료
ctrl + shift + q
수평 분할ctrl + shift + o
수직 분할ctrl + shift + e
분할 창 이동ctrl + shift + p
분할 창 이동
(반대 방향)
ctrl + shift + m
분할 창 종료ctrl + shift + w
분할 창 확대ctrl + shift + x

ROS 동작 테스트

  1. roscore 실행

    ros 실행 명령어

    1
    
     $ roscore
    
  2. turtlesim 패키지의 turtlesim_node

    예제 turtlesim 실행

    1
    
     $ rosrun turtlesim turtlesim_node
    
  3. turtlesim 패키지의 turtle_teleop_key 실행

    키보드로 조종할 수 있는 node

    1
    
     $ rosrun turtlesim turtle_teleop_key
    
  4. rqt_graph 패키지의 rgq_graph 실행

    topic과 node 간 message 송수신을 확인하는 rqt_graph 실행

    1
    
     $ rqt_graph
    

스크린샷, 2021-08-28 00-56-39


참고

ros 공식 wiki

“ROS 로봇 프로그래밍” - (루비페이퍼, 표윤석.조한철.정려운.임태훈 지음)

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.