본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2023 ROS 스터디] 이현규 #1주차 - ROS 입문(에러의 바다 속에서)

반응형

※ 본 포스트는 아래의 강의를 기반으로 작성되었습니다 ※

https://www.youtube.com/playlist?list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw 

 

ROS Courses (한국어)

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

www.youtube.com

 

Chapter 01. 로봇 소프트웨어 플랫폼

'Personal Computer'와 'Personal Phone'의 공통점을 통해 'Personal Robot'의 미래를 예측해본다.

 

'Personal Computer'와 'Personal Phone'의 공통점?

  • 누구나 하나쯤은 보유하고 있는 대중화 제품
  • 다양한 하드웨어의 결합이 가능한 하드웨어 모듈
  • 운영체제(Operationg System)와 애플리케이션(App)을 보유
  • 하드웨어 모듈 + 운영체제 + 앱(서비스) + 유저 = 생태계(Eco-system)

※ 보이지 않는 생태계 속의 분업 ※

 

 

그렇다면 로봇분야(Personal Robot)는?

 

- 소프트웨어 플랫폼이 가져온 변화

  • 하드웨어 인터페이스 통합
  • 하드웨어 추상화, 규격화, 모듈화
  • 가격은 내리고 성능은 증가
  • 하드웨어, 운영체제, 애플리케이션 분리
  • 사용자 수요에 맞는 서비스에 집중
  • 유저 증가! 구매와 피드백, 새로운 생태계의 선환 구조 형성

- 로봇 소프트웨어 플랫폼이 가져올 미래

  • 하드웨어 플랫폼과의 소프트웨어 플랫폼간의 인터페이스 확립
  • 모듈형 하드웨어 플랫폼 확산
  • 하드웨어에 대한 지식이 없어도 응용프로그램 작성 가능
  • 더 많은 소프트웨어 인력들이 로보틱스 분야로 진입, 로봇 제품에 참여 가능
  • 유저에게 제공할 서비스에 집중
  • 실수요가 있는 서비스 제공으로 유저계층 형성 및 피드백
  • 로봇 개발이 급속도로 발전할 수 있는 계기

Chapter 02. 로봇 운영체제 ROS

ROS란?

- 오픈소스기반, meta-operating system, 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크

 

ROS의 진정한 목적

- 로보틱스 소프트웨어 개발을 전세계 레벨에서 공동 작업 가능하도록 생태계를 구축하는 것

 

메타운영체제(meta-operating system)란?

- 전통적인 OS가 아님, 이것들을 이용하면서 로봇 응용 소프트웨어 개발을 위한 툴박스!

 

※ 메타운영체제의 최대 장점 : 이기종 디바이스 간의 통신 지원  하드웨어가 워낙에 다양하기 때문 ※

ROS를 사용 가능한 운영체제에는 기존 전통적인 운영체제는 가능하다 하지만 기본적으로 Ubuntu를 사용하는 것을 추천!

 

 

로봇 운영체제 ROS의 특징

  1. 통신 인프라 : 노드 간 데이터 통신을 제공, 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원
    • 메시지 파싱 기능 : 예를 들어 카메라 정보를 어떻게 보낼지, 데이터를 어떻게 전송할지 규격화 되어있음
    • 메시지의 기록 및 재생 : 카메라 정보를 전송, 수신하여 2차적 작업, 로봇이 받아들이고 있는 정보들을 기록할 수 있고 나중에 필요시 재생도 가능. 알고리즘 개발 때 많이 사용한다.
    • 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능 : 서로 다른 언어로 프로그래밍을 하여도 데이터 교환이 가능함
    • 분산 매개 변수 시스템
  2. 로봇 관련 다양한 기능
    • 로봇에 대한 표준 메시지 정의 : 다양한 데이터를 주고받기 위한 표준을 만들어 놓음, 현재도 변화중
    • 로봇 기하학 라이브러리
    • 로봇 기술 언어
    • 진단 시스템 : 로봇의 상태를 파악할 수 있음
    • 센싱/인식
    • 내비게이션 : 특정 지점으로부터 지점까지 이동
    • 매니퓰레이션
  3. 다양한 개발 도구 : 로봇 개발에 필요한 다양한 개발도구를 제공, 로봇 개발의 효율성 향상
    • Command Line Tools : 명령어 제공
    • RViz : 강력한 3D 시각화 제공
    • RQT
    • Gazebo : 물리엔진을 탑재, 기반으로 시뮬레이터

 

ROS 버전 선택

  1. 5년 지원 약속된 최신 LTS버전의 Ubuntu 선택 (2년마다 LTS버전 릴리즈, 매년 4월)
  2. Ubuntu 릴리즈된 후 3개월 후
  3. 최신의 LTS 지원 ROS 버전
  4. 단, ROS는 릴리즈된 후 3개월 후
  5. Gazebo "gazebosim.org" 정보 확인 후 사용

Chapter 03. ROS 개발환경 구축

ROS 1줄 설치 방법

ROS 수동 설치 방법

ROS 설치 : http://wiki.ros.org/kinetic/Installation/Ubuntu 

 

kinetic/Installation/Ubuntu - ROS Wiki

We are building Debian packages for several Ubuntu platforms, listed below. These packages are more efficient than source-based builds and are our preferred installation method for Ubuntu. Note that there are also packages available from Ubuntu upstream. P

wiki.ros.org

ROS 환경설정 : http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment 

 

ROS/Tutorials/InstallingandConfiguringROSEnvironment - ROS Wiki

When working with ROS source code, it is often useful to do so in a "workspace". For the following ROS tutorials you will need an area for working on tutorials and creating new ROS stacks and packages. rosws is a tool that provides a uniform interface to v

wiki.ros.org

저는 처음에 수동설치 방법으로 설치하려다 실패하고 한줄설치 방법으로 시도해보았습니다

하지만

.

.

.

.

 

 

왜인지 모르게 ROS의 버전이 melodic이 아닌 debian이 설치가 되어있었다.

그래서 ROS를 삭제하고 다시 설치하기 위해 설치된 ROS를 삭제하는 명령어인

 

$ sudo apt-get purge ros-*

$ sudo apt-get remove ros-*

$ sudo apt-get autoremove

 

이것들을 모두 사용한 뒤 ROS가 삭제되었는지 확인할 수 있는 명령어인

 

$ rosversion -d

 

를 입력해보았지만 삭제가 되지 않았다.

 

결국 가상머신과 Ubuntu를 삭제하고 재설치하였고 한줄설치 방법을 시도해보았다.

그리고 ROS가 정상적으로 설치되었는지 확인하기 위해 'roscore' 명령어를 입력해보았지만

 

 

뭔지 알 수 없는 소리들로 가득했다....

 

아아아아아아악!!!!

마음을 가다듬고 정석대로 수동설치를 시도해보았다.

 

이 부분은 2줄을 한 번에 복사하면 안되고 한줄씩 각각 명령어를 입력해주어야 한다

 

이 부분도 마찬가지로 명령어를 각각 한줄씩 입력해주어야 한다

 

여기까지 진행이 잘 되었고 다시 한 번 'roscore' 명령어를 입력해보았다.

그 결과는

.

.

.

.

 

!!!!

 

다행히 설치가 잘 된 것을 볼 수 있다(왜지..?)

 

그리고 강의에서 사용하는 terminator를 설치하기 위해서는

 

$ sudo apt-get install termiantor

 

를 입력해주면 된다.

 

termiantor 창을 나누어서 여러개를 사용할 수 있는데 이 때 사용하는 단축키는

'Ctrl + Shift + O' (수평으로 나누어짐)와 'Ctrl + Shift + E' (수직으로 나누어짐)이 있다

 

그럼 이제 ROS가 잘 설치되었고 잘 실행되는지 확인해 봐야하는데 먼저

 

$ roscore

 

를 입력해준다. 그리고 다른 창에

 

$ rosrun turtlesim turtlesim_node

 

를 입력해주면  옆에 거북이가 드디어 뜨게된다! 마지막으로

 

$ rosrun turtlesim turtle_teleop_key

 

를 입력해주면 방향키를 누르는대로 거북이가 움직이는 모습을 볼 수 있다.

 

드디어 널 만났구나...

 

1주차 마무리

Chapter 1, 2에서는 ROS가 무엇인지 그리고 왜 ROS를 사용해야하는지에 대한 기본적인 배경지식을 습득할 수 있었다.

Chapter 3에서는 ROS를 Ubuntu에 설치하고 설치가 잘 되었는지 점검하는 시간을 가졌는데 여기서 많은 에러들을 마주쳐 엄청나게 많은 시간을 투자하게 되었다. 이 에러들을 바로잡기 위해 많은 구글링과 이것을 바탕으로 많은 것들을 시도해보았지만 결국 실패하고 말았다. 그 당시에는 정말 화도 나고 포기하고 싶었다. 하지만 잘 마무리가 된 지금 돌아보면 이런 시간들이 단순하게 낭비한 시간은 아니라고 생각이 든다. 비록 에러를 바로잡진 못했을지라도..

사실 내가 부족하여 에러를 바로잡는 방법이 있음에도 불구하고 해결하지 못 한 것일 수도 있다. 하지만 가끔씩은 나처럼 단순하게 삭제하고 모든 것을 처음부터 다시 진행해보는 것도 좋은 방법이라고 생각한다.

 

처음 가상머신을 설치할 때 참고했던 블로그에서 본 문장이 있다.

 

잘 동작하는 이유는 단 하나지만, 에러를 만나게 되는 이유는 굉장히 다양하다.

 

 

 

사실 너무나 당연한 말이지만 자주 잊게되는 말인 것 같다. 그러므로 앞으로도 많은 에러들을 마주칠 것이기 때문에 이번처럼 끈기를 가지고 나아가야겠다는 다짐을 하게된 1주차였다.

 

 

 

반응형