로봇 운영체제 ROS

타키탸키·2021년 7월 29일
1

ROS

목록 보기
2/3
post-thumbnail

🦾 로봇 운영체제 ROS 소개

ROS란?

  • 오픈 소스
  • 로봇 운영체제
    • 엄밀히 따지면, 운영체제는 아니다
    • meta-operating
    • 소프트웨어 프레임워크

소프트웨어 프레임워크(미들웨어)

  • ROS
    • 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크
    • 노드 간에 메시지 교환 방법
    • 복잡한 프로그램을 나누어 공동 개발 가능
  • 개발에 필요한 다양한 tool 제공
    • 명령어 도구, 시각화 도구 Rviz
    • GUI 도구 모음 rqt,
    • 3차원 시뮬레이터 Gazebo 지원
  • 로보틱스에서 많이 사용되는 기능 지원
    • 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션
  • 로보틱스 생태계 생성
    • Personal Robot

ROS의 진정한 목적

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

🦾 메타 운영체제

ROS는 운영체제(OS)인가?

  • 운영체제(Operating System)
    • 범용 컴퓨터
      • Windows
      • Linux(Ubuntu, Redhat, ...)
      • MAC(OS X...)
    • 스마트폰
      • Android, iOS, Tizen...
  • ROS(Robot Oerating System)
    • 메타 운영체제(Meta-Operating System)

메타 운영체제

  • 메타 운영체제(Meta-Operating System)
    • 어플리케이션과 분산 컴퓨팅 자원 간의 가상화 레이어
    • 분산 컴퓨팅 자원을 활용하여 스케쥴링 및 로드, 감시, 에러 처리 등을 실행하는 시스템
  • 전통적인 운영체제X >> 이용
    • 전통적 운영체제 기능 + 로봇 응용 SW 개발의 필수 기능들을 라이브러리 형태로 제공
  • 로봇 소프트웨어 프레임워크를 기반으로 로봇 생태계를 갖춤
    • 다양한 목적의 응용 프로그램 개발, 관리, 제공
    • 유저들이 개발한 패키지 유통
  • 제공 기능(Tool Box)
    • 디바이스 드라이버, 라이브러리, 디버그 도구, 메시지 통신 구동 도구, 컴파일 도구, 인스톨러, 패키지 생성 및 릴리즈
  • 로봇, 센서, 앱과 함께 사용

이기종 디바이스 간의 통신 지원

  • 메타 운영체제의 최대 장점
  • 예시
    • 리눅스에서 개발된 프로그램을 안드로이드에서 구동 가능
    • 로봇에 장착된 카메라와 스마트폰 연동 가능
    • 모바일 로봇과 휴머노이드 로봇 간의 통신 가능
  • 다양한 하드웨어 간 호환 가능

ROS를 사용 가능한 운영체제

  • ROS를 사용 가능한 운영체제
    • 기존 전통적 운영체제
      • Ubuntu, OS X, Windows, Raspbian, ...
      • 일부 제한 사항 있음
    • 스마트폰 운영체제
      • Android, iOS
      • 부분적 사용 가능
    • OS 탑재 불가능한 마이크로 컨트롤러 유닛(MCU)
      • 시리얼 통신, 블루투스, LAN 경유로 통신 가능한 라이브러리 제공
  • ROS 2.0은 3대 OS 모두 지원
    • Windows
      • Virtual Box로 구동 가능
      • BUT 하드웨어 작업 시, 권장X
  • Ubuntu, OS X 구동 권장
    • 활성화된 커뮤니티
    • Linux를 통해 개발됨

🦾 ROS의 구성

  • Client Layer
    • 다양한 언어 지원 패키지
      • C, JS, Python, JAVA, ...
  • Robotics Application
    • 예:) 네비게이션
  • Robotics Application Framework
    • 로봇 관련 각종 프레임워크 제공
  • Comunication Layer
    • 메시지 교환 방식
  • Hardware Interface Layer
    • 다양한 하드웨어 관련 인터페이스
      • 모터, gps, 센서, 카메라, ...
  • Software Development Tools
    • RViz, rqt, rospack, ...
  • Simulation
    • 2차원: stage ros
    • 3차원: gazebo ros pkgs

🦾 ROS의 생태계

  • ROBOT, SENSOR
    • 로봇, 센서 회사
    • 90 종류 이상의 로봇 지원(ROS)
    • 80 종류 이상의 센서 지원
  • ROS
    • 시뮬레이터: gazebo, player/stage, ...
    • 지능모듈: navigation, ...
    • 라이브러리: OpenCV, ...
    • 디바이스 드라이버: camera_drivers, ...
    • 디버그 툴: rviz, rqt_graph, ...
    • 프로그래밍 언어: C++, Python, Lisp, JAVA, MATLAB, ...
    • 애플리케이션 / 메시지 통신 / 실행 툴 / 컴파일 툴 / 파일 시스템 / 설치 툴
  • APP
    • 개발자, 유저
    • 5000개 이상의 패키지
    • 2818개의 공식 패키지 제공(Indigo)
    • 10만 이상 다운로드
    • 만 7천 이상 Wiki 페이지

🦾 ROS의 특징

통신 인프라

  • 노드(프로세스) 간 데이터 통신 제공
  • 통상적으로 미들웨어로 지칭되는 메시지 전달 인터페이스 지원
  • 메시지 파싱 기능
    • 로봇 개발 시에 빈번히 사용되는 통신 시스템 제공
    • 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스
  • 메시지의 기록 및 재생
    • 노드 간 송수신되는 데이터인 메시지를 저장
      • 필요 시, 재사용 가능
    • 저장된 메시지를 기반으로 반복적인 실험 가능
    • 알고리즘 개발에 용이함
  • 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능
    • 노드 간의 데이터 교환이 메시지를 사용
      • 각 노드를 서로 다른 언어로 작성 가능
    • 클라이언트 라이브러리
      • roscpp, rospy, roslisp, ...
  • 분산 매개 변수 시스템
    • 시스템에서 사용되는 변수를 글로벌 키 값으로 작성하여 공유 및 수정 >> 실시간 반영

로봇 관련 다양한 기능

  • 로봇에 대한 표준 메시지 정의
    • 카메라, IMU, 레이저 등의 센서 / 오토메트리, 경로 및 지도 등의 내비게이션 데이터 등의 표준 메시지를 정의
    • 모듈화, 협업 작업 유도
    • 효율성 향상
  • 로봇 기하학 라이브러리
    • 로봇, 센서 등의 상대적 좌표를 트리화시키는 TF(Transform) 제공
  • 로봇 기술 언어
    • 로봇의 물리적 특성을 설명하는 XML 문서 기술
    • 모델링 시, 필요
  • 진단 시스템
    • 현재 로봇의 상태를 한눈에 파악할 수 있는 진단 시스템 제공
      • 잔여 배터리, 센서 값, 모터 상태, ...
  • 센싱/인식
    • 센서 드라이버, 센싱/인식 레벨의 라이브러리 제공
  • 내비게이션
    • 로봇의 이동
    • 로봇에 많이 사용되는 로봇의 포즈(위치/자세) 추정 제공
    • 지도 내의 자기 위치 주정 제공
    • 지도 작성에 필요한 SLAM 라이브러리 제공
    • 작성된 지도 내에서 목적지를 찾아가는 Navigation 라이브러리 제공
  • 매니퓰레이션
    • 로봇 arm에 사용되는 IK, FK 기능
    • 응용단의 Pick and Place를 지원하는 다양한 Manipulation 라이브러리 제공
    • GUI 형태의 매니퓰레이션 Tools 제공
      • MoveIt!

다양한 개발 도구

  • 로봇 개발에 필요한 다양한 개발 도구 제공
    • 로봇 개발의 효율성 향상
  • Command-Line Tools
    • GUI 없이 ROS에서 제공되는 명령어로만 로봇 엑세스 및 거의 모든 ROS 기능 소화
  • RViz
    • 강력한 3D 시각화 툴 제공
    • 레이저, 카메라 등의 센서 데이터를 시각화
    • 로봇 외형과 계획된 동작 표현
  • RQT
    • 그래픽 인터페이스 개발을 위한 Qt 기반 프레임워크 제공
    • 노드와 그들 사이의 연결 정보 표시(rqt_graph)
    • 인코더, 전압 또는 시간이 지남에 따라 변화하는 숫자를 플로팅(rqt_plot)
    • 데이터를 메시지 형태로 기록하고 재생(rqt_bag)
  • Gazebo
    • 물리 엔진 탑재
    • 로봇, 센서, 환경 모델 등을 지원
    • 3차원 시뮬레이터
    • ROS와의 높은 호환성

🦾 ROS의 버전 선택

ROS 릴리즈 스케쥴과 버전 선택

  • Hydro부터 1년에 1번 정식 버전 릴리즈 하기로 결정
    • Kinetic Kame(LTS) 추천
    • Kinetic Kame(EQL)
  • 버전 선택
    • 5년 지원 약속된 최신 LTS 버전의 우분투 선택
      • 2년마다 LTS 버전 릴리즈, 매년 4월
    • 우분투 릴리즈된 후 3개월 후
    • 최신의 LTS 지원 ROS 버전
    • 단, (일반적인 경우)ROS는 릴리즈된 후 3개월 후
    • Gazebo "gazebosim.org" 정보 확인 후 사용
  • 정리
    • Ubuntu 20.04 LTS
    • ROS Noetic Ninjemys on Ubuntu Linux
    • Gazebo 11.0
* 출처: 유튜브 ROBOTIS OpenSourceTeam 채널 - ROS 강의
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글