Study/ROS (robot operating system)

ROS (robot operating system) : 로봇 운영체제 ROS

13.d_dk 2023. 3. 8. 00:19
728x90
반응형

ROS란 무엇일까?

  • ROS는 open-source이며, robot을 위한 meta-operating system임
  • robot SW 개발을 위한 다양한 서비스와 기능을 제공
  1. hardware abstraction
  2. low-level device control
  3. implementation of commonly-used functionality
  4. message-passing between processes
  5. package management
  • 또 robot 개발을 위한 다양한 도구들과 라이브러리들을 제공
  • 이를 통해 여러 컴퓨터에서 robot SW source code를 obtaining, biulding, writing, running 할 수 있음
  • 목적 : robot SW 개발을 전 세계에서 공동 작업할 수 있도록 생태계를 구축하는 것

 

meta-operating system : 메타운영체제

    • ROS는 일반적인 컴퓨터 및 스마트폰의 운영체제와 다른 메타운영체제
    • 메타운영체제는 정확하게 정의된 용어는 아니며 기존의 운영체제의 리소스들을 이용함
    • 다시 말하면, 기존의 운영체제 위에서 동작되는 소프트웨어
    • 기존의 운영체제 위해서 robot SW 개발을 위해 다양한 서비스 그리고 도구와 라이브러리를 제공하는 소프트웨어 프레임워크
    • 따라서 기존 운영체제의 프로세스 관리, 파일 시스템, 유저 인터페이스, 프로그램 유틸리티 등을 사용
    • 또 여러 하드웨어들 간에 통신을 통해 데이터 송수신, 스케쥴링, 에러 처리 등의 로봇 응용 소프트웨어 개발에 필요한 필수 기능들을 라이브러리로 제공함
    • 로봇 소프트웨어 프레임워크로써 다양한 목적을 가진 로봇 소프트웨어 개발에 필요한 응용 프로그램의 개발, 관리, 제공 등을 수행
    • 또 유저들이 이를 통해 개발한 패키지도 유통할 수 있는 생태계를 갖춤

메타운영체제 ROS의 도식

    • 아래의 그림에서 각종 운영체제에서 ROS를 통해 SW를 개발하고 sensor로 받은 데이터들을 여러 기기 및 robot SW에서 주고받으며 처리함을 볼 수 있음

메타운영체제 ROS를 통한 여러 로봇 및 센서 그리고 앱 사이의 데이터 통신 예시

 

ROS를 사용하기 위한 운영체제

  • ROS를 사용할 수 있는 컴퓨터 운영체제는 여러 가지가 있으나 리눅스인 우분투와 mac OS를 추천 : 많은 기능을 문제없이 사용할 수 있음, 자료도 많음
  • 스마트폰 운영체제인 안드로이드와 IOS에서도 부분적으로 ROS를 사용할 수 있음
  • 운영체제를 사용할 수 없는 MCU(micro controller unit)의 경우 통신을 통해 사용 : ROS에서 시리얼 통신, 블루투스, LAN 등의 통신 라이브러리를 제공
  • ROS를 사용한다면 리눅스 우분투를 첫 번째로, mac os를 두 번째로 추천함

 

ROS의 생태계

  • ROS는 크게 아래와 같은 그룹으로 이루어진 생태계임
    1. ROS가 제공하는 각종 서비스와 도구들 및 라이브러리
    2. 여러 로봇 및 센서 회사들이 제공하는 ROS 인터페이스
    3. 마지막으로 ROS로 만들어진 서비스를 사용하는 사용자들
  • 이러한 생태계를 아래의 도식과 같이 볼 수 있음

ROS의 ecosystem

 

ROS의 각종 특징들

  • 통신 기능 : 여러 노드 사이의 데이터 통신 제공함. (통상적으로 미들웨어로 지칭되는) 메시지 전달 인터페이스를 지원
  1. 메시지 파싱 기능
    : 로봇 개발 시에 자주 사용되는 통신 시스템을 제공함. 캡슐화 및 코드 재사용을 촉진하는 노드들 사이의 메시지 전달 인터페이스 제공함.
  2. 메시지 기록 및 재생
    : 여러 노드들 사이에 송신 및 수신되는 데이터인 메시지를 저장하고 필요시에 재사용을 할 수 있음. 저장된 메시지를 사용하여 반복적인 실험을 할 수 있으므로 알고리즘 개발에 용이함.
  3. 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능
    : 노드들 사이에 데이터 교환이 메시지로 이루어지므로 각 노드는 서로 다른 프로그래밍 언어로 개발될 수 있음.(클라이언트 라이브러리 : roscpp, rospy ...)
  4. 분산 매개 변수 시스템
    : 시스템에서 사용되는 변수를 글로벌 변수로 주고 공유 및 수정을 하면서 실시간으로 반영할 수 있음.
  • 로봇 관련 다양한 기능
  1. 로봇에 대한 표준 메시지 정의
    : 카메라, IMU, 레이저 등의 센서들 그리고 경로 및 지도 등의 내비게이션 데이터들의 표준 메시지를 정의하여 모듈화 및 협업 작업을 하도록 함.(효율성 향상)
  2. 로봇 기하학 라이브러리
    : 로봇과 센서 등의 상대적 좌표를 트리 구조화하는 tf 제공함.
  3. 로봇 기술 언어
    : 로봇의 물리적 특성을 설명하는 xml 문서를 기술하도록 함.
  4. 진단 시스템
    : 로봇 상태를 한눈에 파악할 수 있는 진단 시스템 제공함.
  5. 센싱 및 인식
    : 센서의 하드웨어 드라이버에 대한 센싱 및 인식 레벨의 라이브러리를 제공함.
  6. 내비게이션
    : 로봇에서 많이 사용되는 로봇의 위치 및 자세 추정과 지도 내의 자기 위치 추정 제공함. 지도 작성에 필요한 SLAM과 작성된 지도 내에서 목적지를 찾아가는 Navigation 라이브러리를 제공함.
  7. 매니풀레이션
    : 로봇 암에 사용되는 IK, FK와 응용 부분의 pick and place를 지원하는 manipulation 라이브러리를 제공함. GUI 형태의 매니풀레이션 도구들을 제공함.(MoveIt!)
  • 다양한 개발 도구 : 로봇 개발에 필요한 다양한 개발 도구를 제공하여 효율성을 향상함.
  1. command-line tools
  2. Rviz
    : 강력한 3D 시각화툴을 제공함. 레이저 및 카메라 등의 센서 데이터를 시각화하여 볼 수 있음. 로봇 외형 및 계획된 로봇 동작을 표현하여 볼 수 있음.
  3. RQT
    : 그래픽 인터페이스 개발을 위한 Qt기반 프레임워크를 제공함. 여러 노드들 사이에 연결 정도를 표시함.(rqt_graph) 좌표값, 인코더, 전압, 또는 시간에 따라 변화되는 숫자를 floating 하여 볼 수 있음.(rqt_plot) 데이터를 메시지 형태로 저장하여 다시 불러서 사용할 수 있음.(rqt_bag)
  4. Gazebo
    : 물리엔진을 탑재하였으며 로봇 및 센서 그리고 환경 등에 대한 모델을 지원함. 3D 시뮬레이터로서 기능함. ROS와 높은 호환성을 보임.

 

ROS 버전 선택

  • ROS 버전은 리눅스 우분투 및 mac OS 버전에 따라 다르게 선택해야 함
  • 예를 들어 ubuntu 20.04.5 LTS의 경우 ROS melodic morenia를 선택해야 함

 

Reference

  • ROBOTIS 표윤석 대표님 ROS 강의 : 로봇 운영체제
반응형