본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2023 ROS 스터디] 안수빈 #1주차 - ROS 알아보기

반응형

ROS에 대해 알아보자!

 

ROS Courses (한국어) - YouTube

 

ROS Courses (한국어)

https://github.com/robotpilot/ros-seminar

www.youtube.com

위의 링크에 들어가면 챕터 별로 강의를 볼 수 있다. 이번 주에는 Chapter 1, 2, 3을 보고 공부하였다.

 

Chapter 01.

 

로봇 소프트웨어 플랫폼

 

'Personal Computer(개인용 컴퓨터)' 와 'Personal Phone(개인용 핸드폰)'의 공통점은 무엇일까?

- 누구나 하나쯤은 보유하고 있는 대중화된 제품

- 다양한 하드웨어의 결합이 가능한 하드웨어 모듈로 구성

- 운영 체제 + 애플리케이션

정리하자면 하드웨어 모듈 + 운영체제 + 앱(서비스) + 유저가 있어야 생태계를 이룰 수 있다.

 

로봇 분야에서는?

로봇 중에서도 personal 로봇이라면 위의 4가지(하드웨어 모듈 + 운영체제 + 앱 + 유저)가 있어야 한다.

 

소프트웨어 플랫폼이 가져온 변화처럼 로봇 소프트웨어 플랫폼이 가져올 미래

- 하드웨어 플랫폼과 소프트웨어 플랫폼 간의 인터페이스 확립

- 모듈형 하드웨어 플랫폼 확산

- 유저에게 제공할 서비스에 집중

- 하드웨어에 대한 지식이 없어도 응용 프로그램 작성 가능

 

로봇 운영체제에는 다양한 운영체제들이 있는데 그 중 가장 많이 사용되고 있는 ROS에 대해 알아볼 것이다.

 

Chapter 02.

 

ROS 소개

 

- ROS란?

ROS는 오픈소스이며 운영체제라기보다는 미들웨어로 볼 수 있고 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크라고 할 수 있다.   

  • 노드 간에 메시지 교환 방법으로 복잡한 프로그램을 나눠 공동 개발 가능
  • 명령어 도구, 시각화 도구 Rviz, GUI 도구 모음, 3차원 시뮬레이터 Gazebo 지원
  • 많이 사용되는 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션 기능 지원
  • 로보틱스 생태계 생성

- ROS의 특징

  

  1. 통신 인프라

      - 노드 간 데이터 통신을 제공/ 메시지 전달 인터페이스를 지원

  • 메시지 파싱기능 : 노드들 간의 메시지 전달 인터페이스
  • 메시지의 기록 및 재생 : 로봇이 받아들이고 있는 각종 센서들의 메시지를 녹화하여 필요시에는 재사용도 가능                                                  알고리즘 개발에 용이
  • 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능 : 노드 간의 데이터 교환이 메시지 사용                                                                                                                               -> 각 노드 서로 다른 언어로 작성 가능
  • 분산 매개 변수 시스템

   2. 로봇 관련 다양한 기능

  • 로봇에 대한 표준 메시지 정의 : 표준 메시지를 정의하여 모듈화, 협업 작업을 유도하여 효율성을 향상
  • 로봇 기하학 라이브러리 : 로봇, 센서 등의 상대적 좌표를 트리화시키는 TF 제공                                                                                                     ex) 로봇의 관절을 상대적 좌표를 이용할 때 유용
  • 로봇 기술 언어
  • 진단 시스템
  • 센싱/ 인식
  • 내비게이션 : 자기 위치 추정을 제공, 지도 작성에 필요한 slam 등을 제공
  • 매니퓰레이션 : 로봇 암에 사용되는 IK, FK 물론 Pick and Place를 지원하는 다양한 매니퓰레이션 라이브러리 제공

   3. 다양한 개발 도구

       - 개발에 필요한 다양한 도구 제공

  • Command-Line Tools : ROS에서 제공되는 명령어로만 로봇 액세스 및 ROS 기능 소화
  • RViz : 3D 시각화툴 제공
  • RQT : 그래픽 인터페이스 개발을 위한 Qt 기반 프레임 워크 제공
  • Gazebo : 3차원 시뮬레이터

 

Chapter 03.

 

ROS 설치

 

강의에서 ros설치를 하기 위해서는 두 가지 방법이 있다고 했다.

1) 1줄 설치 방법

2) 수동 설치 방법

 

(수동으로 설치해보는 것이 좋다고 하셔서 수동 설치 방법을 이용하여 ros를 설치하였다. )

두 가지 방법에 대해 설명을 해보자면

 

1. 1줄 설치 방법

터미널에 위의 명령어를 입력하면 설치할 수 있다.

한 줄로 간편히 ros를 설치할 수 있다.

 

2. 수동 설치 방법

- 먼저 ros 홈페이지를 들어간다.

http://wiki.ros.org/ROS/Installation

 

ROS/Installation - ROS Wiki

Available Translations: German | Spanish | French | Italian | Japanese | Korean | Brazilian Portuguese | Portuguese | Русский (Russian) | Thai | Turkish | 简体中文 | Ukrainian | Vietnamese | العربية See Also: ROS/Installation (this page)

wiki.ros.org

위의 링크에 들어가면 두 가지 버전이 나오게 되는데 자신의 Ubuntu 버전에 맞게 설치하면 된다.  Ubuntu 버전이 18.04일 경우에는 ROS Melodic Morenia를 설치하고 20.04일 경우에는 ROS Noetic Ninjemys를 설치해야 한다. 나의 Ununtu의 버전은 18.04이므로 ROS Melodic Morenia를 설치하였다. 

 

자신이 어떤 버전을 설치할지, 어떤 플랫폼에 설치할지 정했다면 페이지에 적힌대로 하면 된다.

(Ubuntu에 설치하기로 했으므로 virtual box에 들어가여 Ubuntu를 켜준 다음 Ubuntu termianl에 들어가여 입력해주어야 한다.)

 

본격적으로 ros을 설치하기 전에 강의에서 terminal을 여러 개 켜놓고 사용하면 편하다고 하여 terminal을 여러 개로 나누어 사용할 수 있게 해주는 terminator을 설치해 주었다. terminator을 설치하는 방법은 쉬운데 terminal에 

sudo apt-get install terminator 

을 입력해 주면 된다.

 

그리고 terminator을 켜주면 되는데 이때 마우스 오른쪽을 누르게 되면 Split Horizontally와 Split Vertically가 뜬다.

- Split Horizontally는 수평으로 나누는 것이고 단축키는 Ctrl + Shift + O이다.

- Split Vertically은 수직으로 나누는 것이고 단축키는 Ctrl + Shift + E이다.

Split Horizontally와 Split Vertically을 사용한 terninator의 모습이다.

 

이제 ros을 설치할 것인데 위의 페이지에 나와있는 방법은 영어로 설명이 되어있어 읽기 쉽고 이해하기 쉬운 한글로 돼있는 블로그를 찾아 그 블로그에 나와있는 방법을 이용하여 ros를 설치해 보았다.

https://ghostweb.tistory.com/802

 

Ubuntu에 ROS 설치하기 (우분투 ROS 설치)

이번에는 Robot OS인 ROS Melodic을 우분투에 설치하는 방법에 대해서 알아보도록 할게요. ROS Melodic의 경우 ubuntu 18.04 LTS (17.04) 이상에서 설치 가능하며 kinetic의 경우 16.04에도 설치할 수 있어요. ROS.org

ghostweb.tistory.com

블로그는 위의 링크를 이용하였다. 

 

ros를 설치하기 위해서는 먼저 소스 리스트, 키(key)를 등록해주어야 했고 데비안 패키지 인덱스를 업데이트해주어야 했다.

그러기 위해서 밑의 명령어를 이용하였다.

첫 번째 - 소스리스트 설정/ 두 번째 - 키 설정/ 세 번째 - 데비안 패키지 인덱스 업데이트

다음으로는 설치할 ROS 패키지를 선택하여 설치해 주면 되는데 총 3가지의 패키지가 있다.

내가 참조한 블로그에서는 Desktop Full Install이 ROS를 공부하실 분들에게 추천드린다고 하여  Desktop Full Install을 설치하였다. 

 

Desktop Full Install을 설치하게 되면 마지막으로 ROS를 초기화하고 환경 설정을 해주면 된다. 

사진의 명령어들을 이용하여 초기화해주고 환경 설정해주면 된다.

환경설정을 해준다면 terminal을 열 때마다 bash가 자동 실행되어 편리하다고 한다.

 

이제 ROS가 잘 설치되었는지 확인해 볼 것이다.

ROS실행을 위해 roscore을 실행하고 시뮬레이터, 키보드 입력을 실행해야 하는데 이때 중요한 점은 각각 다른 터미널에서 실행해야 한다는 것이다. 

위의 명령어들을 각각의 터미널에 입력하여 차례대로 실행시켜 준다. 두 번째까지 입력하고 실행시켜 주면 

창이 뜨고 가운데 거북이 한 마리가 생긴 것을 볼 수 있다.

마지막 명령어까지 입력하고 실행시켜주면 

 

거북이가 움직이는 것을 촬영한 영상이다.

거북이가 입력되는 키보드의 방향키에 따라 움직이는 것을 볼 수 있다. 이렇게 잘 움직인다면 ros설치 및 구동이 정상적으로 끝났다는 것을 의미한다. 

 

마지막으로

chapter 1,2 강의를 들으며 이론적으로 ros에 대해 많이 알게 되었고 chapter 3에서는 실습을 함 으로써 ros를 직접 설치해보기도 하며 ros에 대해 더 잘 알게 된 것 같다. 1학기 때 배운 수업에서 ubuntu를 사용할 때 어려웠어가지고 ros설치할 때도 어려울 것 같았는데 다행히도 그 수업 때 배운 것들이 지금 도움이 되어 쉽게 ros를 설치할 수 있었던 것 같다. ros를 설치하면서 ubuntu와 ros에 대해 많은 공부를 해보고 싶다는 생각이 들었다. 관련 책, 강의 등을 찾아보며 더 공부해야겠다!

 

반응형