본문 바로가기

Study_ROS/[ROBOTIS ROS Courses]

[ROBOTIS ROS Courses] Ch1. 로봇 소프트웨어 플렛폼 ~ Ch2. 로봇 운영체제 ROS

728x90

* 본 강의는 2018년 강의

 

Ch1. 로봇 소프트웨어 플렛폼

  • Hardware Module + OS + App(Service) + User : Echo System의 4대 요소
  • 위의 내용들이 로봇 분야에도 그대로 적용됨
  • 2018년 기준으로 40여개의 로봇 OS 존재. 그중 ROS를 가장 많이 사용

 

Ch2. 로봇 운영체제 ROS

- ROS란?

  • ROS(Robot Operating System)는 로봇용 Open Source Meta-Operating System으로써 Open Source 기반의 Robot Programming에 필요한 여러 기능, 도구들과 library들의 모음이다
  • 이름과는 달리 OS가 아니라 Library나 Framework 혹은 Middleware(서로 다른 Application이 통신하는데 사용되는 Software)에 더 가까움
  • 로봇 간 / 로봇과 센서 간의 통신을 연결하거나 Open source와 연결시켜주는 도구

 

-ROS의 특징

1) Communication Infra

  • Node간 data 통신 제공. Process간 통신으로 sensor의 data를 이용하여 작업 수행 가능
    • Node간 message 교환 방법으로 복잡한 프로그램을 잘게 나눠 공동 개발 가능
    • Node간 data 교환시 message를 사용하기 때문에 각 node는 서로 다른 언어로 작성 가능
  • Message Passing 
    • 특정한 protocol을 사용하여 message를 동기화 시키는 기술로써, process들이 동일한 주소 공간을 공유하지 않고도 통신과 동기화를 할 수 있게 함
    • 통신하는 process들이 서로 다른 computer에 있고 그 computer들이 서로 network를 통해 연결된 환경에서 유용
  • Message의 기록 및 재생
    • 전송된 정보를 통해 2차 작업을 수행하는 도중 그 data를 가로챔
    • 현재 robot이 받아들이고 있는 각종 sensor나 device의 상태 기록, 그리고 그 기록을 필요할 때 재생할 수 있음
    • 알고리즘 개발 시 자주 사용
    • Ex) Navigation 개발 시 test 환경이 계속 달라지면 algorithm과 function에 대한 monitoring이 어려움
    • Robot 구동 시 각종 sensor의 상태값들을 message로 주고 받고 저장 후 추후 algorithm 수정 시 robot을 구동시키는 것이 아닌 그 저장한 data들을 재생시켜 algorithm에 대한 monitoring 가능

2) Various Functions about Robot

  • Robot의 표준 message 정의
  • Robot Geometry Library : Robot, sensor등의 상대적 좌표를 트리화 시키는 TF 제공
  • Robot의 physical characteristic을 설명하는 XML 문서 기술
    • XML (Extensible Markup Language) : 특수한 목적을 가지는 mark-up 언어 개발시 사용되는 다목적 mark- up 언어. 많은 다른 종류의 데이터들을 tag를 통해 구분하여 기술 가능
    • Mark Up 언어 : Tag등을 사용하여 문서/데이터를 명기하는 언어능
    • HTML과 비슷한 형식을 가지나 데이터 표시용인 HTML과 달리 XML은 데이터를 저장하고 전송하는데 사용한다
  • Robot의 상태를 한눈에 파악할 수 있는 진단 system 제공
  • Sensor driver, sensing.recognition level의 library 제공
  • Navigation : Robot의 pose(위치/자세) 추정, 지도상의 자기 위치 추정 제공
    • Mapping에 사용되는 SLAM, map 내에서 복적지를 찾아가는 Navigation library 제공
  • Manipulation (Robot 조작을 의미) : Various Manipulation library 제공, GUI 형태의 Manipulation tool(Movelt) 제공

 

3) Various Development Tools

  • Command-Line Tools
    • GUI 없이 ROS 명령어로만 거의 모든 ROS의 기능 구현 가능
  • Rviz
    • ROS에서 제공하는 3D 시각화 도구로써, laser, camera 등의 sensor data를 시각화
    • Robot 외형과 계획된 동작 표현
  • RQT
    • GUI 개발에 쓰이는 Qt framework 기반의 ROS sofrware framework
  • Gazebo
    • 3D simulation을 위한 robot, sensor, environment model등을 지원하고 물리 엔진을 탑제하여 실제와 근사한 결과를 얻을 수 있는 3D Simulator
  • Robotics에서 많이 사용되는 modeling, sensing, recognition, navigation, manipulation 기능 지원
  • Robotics 생태계 형성 : Community 의견을 중점적으로 개발/운영됨
  • ROS는 Meta-Operating System
    • Meta-Operating System이란 로봇 제어에 필요한 기능들을 제공해주는 framework로써 기존 OS의 기능들을 사용하며 추가적으로 로봇 개발에 필요한 필수 기능들을 라이브러리 형태로 제공하며
    • 이기종 디바이스 간의 통신 또한 지원한다(Robot의 Hardware가 다양하여 필요한 기능. 단일 OS를 만들지 않고 Meta-Operating System을 선택한 이유)

-개발환경

  • OS는 Linux 추천 (ROS의 개발, 배포 환경이 Linux)
  • Windows도 가능은 하나 개발환경 구축이 정말 어렵고 ROS관련 packages를 모두 사용할 순 없음
  • Virtualbox 또한 느려서 비추천(대신 Dual Booting 사용)
  • LTS(Long Term Support)를 지원하는 ubuntu, ROS 사용다

 

- Linux : Unix 계열의 Open Source 기반의 OS로, 여러 version들이 존재하며 Virtual box, Docker 등의 다양한 곳에 설치하여 사용 가능하다.

주로 terminal로 작동되는 CLI(Command Line Interface)를 기반으로 사용한다. ex) Shell Script

  • Shell : 사용자가 문자를 입력헤 computer에 명령할 수 있도록 하는 program. OS의 system call을 통해 terminal 창에서 사용자가 입력한 문자열 형태의 command를 실행
  • Shell Script : 여러 shell command가 조합된 file로, 특정 command들을 모아놓고 원하는 시점에 이 file을 불러와 실행시킴 .'.sh'의 확장자를 가지며 bash/sh file_name.sh 명령어를 통해 실행할 수 있다
  • Terminal : Shell을 실행하기 위해 prompt로 문자로 구성된 command를 입력받아 computer에 전달
    1. 사용자가 command (실행할 program 이름 + 실행 인자) 입력
    2. Shell이 file system에서 해당 program의 위치 탐색 후 'fork()' system call을 통해 새로운 child process를 생성
    3. child process에서 다양한 system call들을 통해 command를 수행
    4. sheel은 위의 child process가 종료될 때 까지 대기하다가 wait()로부터 정상적으로 값을 return받을 시 prompt에 출력
    5. shell은 새로운 command를 기다림
  • Shell의 종류
    • sh : 최초의 shell
    • bash : Linux 표준 shell
    • zsh : MaxOS에서 사용하는 shell
  • Hostname : Network에 연결된 device에 부여되는 고유한 이름으로, 여기서는 computer network에 접속한 device에 할당된 이름. IP 대신 읽기 쉬운 문자열로 저장

앞의 'lim'이 Hostname. 즉 hostname은 로그인 시의 computer 이름이다

 

 

 

 

 


https://www.youtube.com/watch?v=ot_D9N-H4lQ&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw 

https://www.youtube.com/watch?v=KcIUl3WH-C8&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw&index=2