본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 손희문 #1주차 - ROS 소개 및 설치하기

반응형

https://www.youtube.com/watch?v=ot_D9N-H4lQ&list=PLX-Ur4rl2-qxkR14lmj4YdbNRcGYMA4mP&index=1

 

 

위의 강의를 처음 들었던 작년 여름에는 리눅스가 무엇인지도 모르고 듀얼부팅 셋팅과 ROS 설치까지 한참을 걸렸었다.  6개월 정도가 지난 지금 스터디 글을 작성하면서 그때 개념이 조금 더 명확했다면 좋았을 부분들을 위주로 글을 작성해보자고 한다. 오늘은 1강에서 3강까지의 내용 정리이다.

 

 

1. 로봇 소프트웨어 플랫폼 

 

1.1. 플랫폼의 구성요소 

  PC(Personal Computer) 와 Persoanl Phone의 공통점은 무엇인가? 의 질문이 주어지면서 강의가 시작되는데, 요점은 두 개 모두 누구나 하나쯤은 보유하고 있는 대중화 제품이라는 것이다. 그리고 이를 가능하게 한 것이 생태계가 잘 구축이 되었다는 점인데 ' 하드웨어 모듈 , 운영체제, 앱(서비스), 유저' 이 네 가지를 생태계의 구성요소라고 한다. 이 구성요소 중에서 운영체제는 굉장히 필수적인데, 스마트폰의 역사를 떠올려보면 소프트웨어 플랫폼(OS - 안드로이드, ios등)이 등장하게 되면서 하드웨어, 운영체제, 애플리케이션 분야가 분리가 되고, 사용자 수요에 맞는 서비스에 집중하게 되면서 더욱더 다양한 유저들이 원하는 기능을 탑재하고 대중화가 되는, 생태계의 선환 구조가 형성되었다.

 

 

 

1.2. 로봇 소프트웨어 플랫폼 

  그렇다면 로봇 분야에는 운영체제에 어떤 것들이 있을까? 아직까지도 수많은 운영체제가 존재하지만 대표적으로 2가지를꼽자면 Open Source 기반의 ROS 와 Closed Source에 가까운 NAOqi 가 있다. 우리는 오픈소스 기반의 ROS를 다룰 것이다.

 

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

 

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

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

  - 하드웨어 지식이 조금 부족해도 프로그램 작성 가능

  - 더 많은 소프트웨어 인력들이 로보틱스 분야로 진입

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

  -  현재는 유저가 곧 개발자인 느낌이지만, 실수요가 있는 서비스 제공으로 유저계층 형성 및 피드백이 이루어질 수 있음 

 

2. 로봇 운영체제 ROS 

 

2.1. ROS란? 메타운영체제이다. 

 'ROS is an open-source, meta-operating system for your robot.'  ROS 공식 wiki 에 나와있는 ROS에 관한 설명이다. 여기서 Operating System 앞에 meta라는 단어가 붙은 이유는 엄밀하게 ROS가 윈도우나, 리눅스와 같은 OS는 아니기 때문이다. 오히려 ROS는 전통적인 운영체제를 이용하고 있으며 이를 기반으로 로봇 응용소프트웨어 개발을 위한 필수 기능등을 라이브러리 형태로 제공하고 있다. 강의 자료 중 아래 슬라이드를 보면 이해가 빠를 것이다. 

2.2. ROS의 장점, 이기종간의 디바이스 통신 지원

 로봇은 그 종류에 따라 하드웨어의 종류 혹은 형태가 다양할 수 밖에 없다. 그에 따라 요구되는 개발환경이 다를 수 밖에 없기 때문에 ROS는 사용자가 적절한 OS를 설정하고 그에 맞게 개발을 할 수 있게 만들어져 있다. 윈도우즈 기반에서 ROS를 사용해서 개발을 하고, 리눅스 기반에 ROS를 사용해서 개발을 했더라고 그 둘이 서로 통신이 가능하도록 만들어졌다는 것이다. 

 

 

 

2.3. ROS의 구성

 

처음에 이 화면을 보고 굉장히 당황스러웠던 기억이 있는데, 

Client Layer는 개발 언어설정과 관련된 부분,

Communication Layer같은 경우 ROS의 구성요소나 동작 원리와 같은부분,

Software Development Tools 에서 RViz 는 개발과정에서 센서 데이터 등을 직접 띄워주는 등의 기능을 하고 rqt는 코드의 구조를 그래프를 통해 편리하게 확인하게 해준다 정도만 알면 될 것 같다.

 

2.4. ROS 특징

 

2.4.1. 통신기능

 - 노드 간 데이터 통신 제공

 - 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원

 -  메시지 파싱 기능 

 -  메시지의 기록 및 재생

노드 간 송/수신되는 데이터인 메시지를 저장하고 필요시 재사용이 가능하기 때문에 저장된 메시지를 기반으로 반복적인 실험이 가능하다. 이 때문에 알고리즘 개발에 용이하다.

  - 메시지 사용으로 인한 다양한 프로그래밍 언어 사용가능 = 각 노드를 서로 다른 언어로 작성해도 문제가 없다!

 

2.4.2. 로봇 관련 다양한 기능 

  - 로봇에 대한 표준 메시지 정의

로봇이기 때문에 공통적으로 사용되는 센서(카메라, IMU, 레이저 등)나 오도메트리, 경로 및 지도 등의 내비게이션 데이터 등의 표준 메시지가 정의되어 있어 모듈화, 협업 작업을 유도, 효율성 향상

  - 로봇 기하학 라이브러리 

 * 이 부분은 굉장히 중요하다. 센서마다 상대적인 위치가 정의되어있고, 로봇 팔과 같은 부품의 경우 상대위치가 움직이기 때문에 하나의 로봇이라면 각각의 부품에 대한 좌표가 항상 같이 움직여야하고, 정확히 정의되어야 한다. TF를 제공하기 때문에 이것이 가능하게 된다.

 

 2.4.3.  다양한 개발 도구 

  -Command-Line Tools : = 터미널이다

  - RViz 

시각화 툴, 센서 데이터를 시각화 할 수 있기에 굉장히 유용하다.

 - RQT

rqt graph를 통해 각 노드와 연결 상태를 알 수 있다. 전체 프로그램이 구조를 보기에 가장 편리한 기능이다.

 - Gazebo

 

 

2.5 ROS 버전 선택

  ROS기능을 온전히 이용하고 싶다면 리눅스 환경에서 개발하는 것을 강력히 추천한다고 한다. Ubuntu를 설치할 것인데, 사용하고 싶은 ROS버전이 어떤 우분투 버전을 지원하는지 확인하고 설치해야 한다. 현재 글 작성 시점에서 우분투 버전은 20.04, ROS는 noetic 버전이다. 

 

3. ROS개발환경 구축

 

강의에서는 ROS kinetic 버전의 한줄 설치가 가능한 명령어가 나와있는데, 버전도 다르고 이전에 처음 설치했던 기억을 떠올려보면ROS Wiki http://wiki.ros.org/noetic/Installation/Ubuntu

 

noetic/Installation/Ubuntu - ROS Wiki

If you rely on these packages, please support OSRF. These packages are built and hosted on infrastructure maintained and paid for by the Open Source Robotics Foundation, a 501(c)(3) non-profit organization. If OSRF were to receive one penny for each downlo

wiki.ros.org

순서대로 설치는 하는 것이 시간이 조금 걸리더라도 가장 확실한 방법인 것 같다.

1.1, 1.2, 1.3순서대로 쭉쭉 읽어나가면서 터미널에 창에 입력하면 된다. 1.4에서는 Desktop-Full Install 로 설치를 진행한다. (대부분 Recommended를 따라가자)

 

3.1. 터틀심 예제

 

http://wiki.ros.org/turtlesim

 

turtlesim - ROS Wiki

melodic noetic   Show EOL distros:  EOL distros:   electric fuerte groovy hydro indigo jade kinetic lunar diamondback: Only showing information from the released package extracted on Unknown. No API documentation available. Please see this page for in

wiki.ros.org

터틀심 예제 또한 ROS Wiki에 나온 순서대로 따라가기만 하면 제대로 실행이 될 것이다.

맨 처음 터미널을 열고 roscore를 실행시켜줘야 마스터 실행되면서 ros가 실행이 된다. 터미널 하나당 하나의 프로세스를 실행시키는 것이기에 다른 터미널 창을 열고 설치 명령어를 입력하고 rosrun 명령어를 통해 터틀심노드를 실행시킨다.

 

이때, 터미널의 종류도 여러가지를 설치할 수 있는데 기본 터미널 대신 다중창을 쉽게 사용하기 위해 강의에서는  터미네이터 설치를 권장한다. 필자는 tilix를 설치해서 사용중이다.

 

터틀심노드가 열리면, 파란색 바탕에 거북이가 그려진 화면이 하나 열리고, 또 다른 터미널을 열어서 rosrun turtlesim turtle_teleop_key를 입력하면 키보드 화살표 자판을 통해 거북이를 움직이게 만들 수 있다. ?

* 이때, turtle_teleop_key를 입력한 터미널이 선택이 되어있어야 거북이가 움직인다!

 

 

 

 

반응형