본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 이연수 #1주차 - ROS 소개

반응형

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

대중화된 제품: Personal Computer, Phone

  • 하드웨어 모듈로 구성 : 램, cpu, 디스플레이 등의 결합
  • 운영체제(operating system) + Application
    • 운영체제 : 윈도우, linux, mac …
    • 운영체제를 기반으로 한 어플리케이션 탑재

생태계 4대 요소 : 하드웨어 모듈 + 운영체제 + 앱(서비스) + 유저

  • 보이지 않는 생태계 속의 분업이 이루어지고 있다.
  • 과거에는 모듈화되지 않은 상품들이 출시되었지만, 현재는 하드웨어가 모듈화 되어 개별적인 웹 또는 어플리케이션 개발이 가능해졌다.
  • 과거에는 한 회사에서 모든 하드웨어를 만들어 제품을 만들었다.

그렇다면 로봇 분야는?

  • personal robot은 위의 대중화된 제품인 personal computer 의 역사와 유사한 흐름으로 진행될 것이다.
  • personal robot이 대중화되려면, 모듈화가 될 필요가 있다.
    • 현재는 모듈화 되어있지 않으며, 대중화 되지도 않음

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

  1. 하드웨어 인터페이스 통합
  2. 하드웨어 추상화 + 규격화 + 모듈화
  3. 가격 하락, 성능 상승 : 모듈화되면서 양상 체계가 가능해짐
  4. 하드웨어 + 운영체제 + 어플리케이션 분리
  5. 사용자 수요에 맞는 서비스에 집중
    • 처음 스마트폰은 전화의 목적으로 만들어진 물건이지만, 현재는 다른 목적으로 사용하는 사용자들이 많다.
    • 계속해서 사용자들의 니즈에 충족하는 서비스를 제공할 수 있다.
    • 현재 로봇 분야는 시장의 니즈가 아닌 개발자를 기반으로 개발되어 판매되고 있다.
  6. 유저 증가 → 구매 및 피드백 → 새로운 생태계의 전환 구조 형성

로봇 분야의 운영체제

  • 약 40 종류의 운영체제가 다양하게 개발되고 있다.
  • 대표적으로, open RTM, opros, NAOqi, ROS …
    • 운영체제보다 미들웨어라고 볼 수 있음
  • Open source : ROS
  • Closed source : NAOqi
  • Galapagos : opros, RTM - 보급에서 실패

로봇 소프트웨어 플랫폼이 가져올 미래 : Personal computer/phone의 경우와 유사

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

 

CH 02. 로봇 운영체제 ROS

1. ROS 소개

ROS는 로봇 개발을 위한 오픈소스 플랫폼으로, 가장 많은 유저를 보유하고 있으며, 가장 많은 로봇 및 센서를 지원하고 있다.

ROS란?

  • Open-source 기반
  • Meta-operating system
  • 로봇을 위한 운영체제

2. 소프트웨어 프레임워크

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

📌 ROS의 진정한 목적 : 로봇 소프트웨어 개발을 전세계 레벨에서 공동작업이 가능하도록 생태계를 구축하는 것!

 

3. 메타 운영체제(Meta-Operating System)

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

  • 운영 체제 (Operating System)
    • 범용 컴퓨터 : Windows, Linux, MAC
    • 스마트폰 : Android, iOS, Windows Phone, Symbian, RiMo, Tizen
  • ROS = Robot Operating System
  • ROS는 메타운영체제(Meta-Operating System)이다. (운영체제X)

메타운영체제(Meta-Operating System)

  • 메타운영체제는 완전히 정의된 용어는 아니다.
  • 어플리케이션과 분산 컴퓨팅 자원 간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하여 스케쥴링 및 로드, 감시, 에러 처리 등을 실행하는 시스템
  • 전통적인 운영체제(Window, Linux, MAC 등)는 아니다.
  • ROS는 기존의 전통적인 운영체제를 이용하고 있다.
  • 기존 운영체제의 프로세스 관리 시스템, 파일 시스템, 유저 인터페이스, 프로그램 유틸(컴파일러, 스레드 모델) 등을 사용하고 있다.
  • 다수의 이기종 하드웨어 간의 데이터 송수신, 스케쥴링, 에러 처리 등 로봇 응용 소프트웨어 개발을 위한 필수 기능들을 라이브러리 형태로 제공
  • 로봇 소프트웨어 프레임워크를 기반으로 다양한 목적의 응용 프로그램을 개발, 관리, 제공하며, 유저들이 개발한 패키지를 유통하는 생태계를 갖추고 있다.
  • 메타운영체제 ↔ Robot, Sensor, App
  • : 디바이스 드라이버, 라이브러리, 디버그 도구, 메시지 통신, 구동 도구, 컴파일 도구, 인스톨러, 패키지 생성 릴리즈

ROS를 사용 가능한 운영체제

  • 기존 전통적인 운영체제 : 아래 세 가지 모두 지원
    • ROS를 사용 가능한 운영체제로는 Ubuntu, OS X, Windows, Fedora, Gentoo, OpenSUSE, Debian, Raspbian, Arch, QNX Realtime OS 등이 있으나 기능 제한사항이 있을 수 있다.
    • 스마트폰 운영체제인 Android, iOS의 경우, 부분적 사용가능
    • OS를 탑재할 수 없는 마이크로 컨트롤러 유닛(MCU)의 경우, 시리얼 통신, 블루투스, LAN 경유로 통신할 수 있는 라이브러리를 제공한다.
    • 기본적으로는 Ubuntu, OS X에서 구동하는 것 추천

4. ROS의 구성

  • Client Layer : 다양한 언어 지원
  • Robotics Application
  • Robotics Application Framework : 각종 프로그램 지원
  • Communication Layer : 토픽, 액션 등의 메시지 교환 방식
  • Hardware Interface Layer : 카메라, gps, 모터 등의 하드웨어 중 무엇을 쓸건지
  • Software Development Tools
  • Simulation : stage(2차원), gzrebo ros pkgs(3차원)

5. ROS의 생태계

  1. Robot, Sensor : 90종류 이상의 로봇과 80종류 이상의 센서를 지원하고 있다.
  2. ROS : 애플리케이션, 시뮬레이터, 지능모듈, 라이브러리, 툴, 프로그래밍언어 등
  3. APP
    • 5000개 이상의 패키지 보유
    • 2800개 이상의 공식 패키지 제공
    • 113000 정도의 다운로드 수
    • 17058 Wiki 페이지

6. ROS의 특징

  1. 통신 인프라
    • 노드 간 데이터 통신을 제공
    • 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원
    • 메시지 파싱 기능
      • 로봇 개발 시에 빈번히 사용되는 통신 시스템 제공
      • 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스
      • 카메라 또는 모터에 저장된 정보를 어떻게 보낼지 규격화 되어있다.
    • 메시지의 기록 및 재생
      • 노드 간 송수신되는 데이터인 메시지를 저장하고 필요시에 재사용 가능
      • 저장된 메시지를 기반으로 반복적인 실험 가능, 알고리즘 개발에 용이
      • 카메라 정보를 기록하고 필요할 때 재생할 수 있다.
    • 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능
      • 노드 간의 데이터 교환이 메시지를 사용하기 때문에 각 노드는 서로 다른 언어로 작성 가능
      • 클라이언트 라이브러리 : roscpp, rospy, roslisp, rosjava, roslua, roscs, roseus, PhaROS, rosR
      • 노드마다 다른 언어를 사용하여도 된다.
    • 분산 매개 변수 시스템
      • 시스템에서 사용되는 변수를 글로벌 키값으로 작성하여 공유 및 수정하여 실시간으로 반영
  2. 로봇 관련 다양한 기능
    • 로봇에 대한 표준 메시지 정의
      • 카메라, IMU, 레이저 등의 센서 / 오토메트리, 경로 및 지도 등의 내비게이션 데이터 등의 표준 메시지를 정의하여 모듈화, 협업 작업을 유도, 효율성 향상
    • 로봇 기하학 라이브러리
      • 로봇, 센서 등의 상대적 좌표를 트리화 시키는 TF 제공
      • 휴머노이드 로봇의 경우 모든 관절이 상대 좌표로 정해져 있다.
    • 로봇 기술 언어
      • 로봇의 물리적 특성을 설명하는 XML 문서 기술
    • 진단 시스템
      • 로봇의 상태를 한눈에 파악할 수 있는 진단 시스템 제공
      • 현재 로봇의 상태(배터리, 각도, 센서 값 등)를 진단
    • 센싱/인식
      • 센서 드라이버, 센싱/인식 레벨의 라이브러리 제공
    • 내비게이션
      • 로봇에서 많이 사용되는 로봇의 포즈(위치, 자세) 추정, 지도 내의 자기 위치 추정 제공
      • 지도 작성에 필요한 SLAM, 작성된 지도 내에서 목적지를 찾아가는 Navigation 라이브러리 제공
    • 매니퓰레이션
      • 로봇 암에 사용되는 IK, FK는 물론 응용단의 Pick and Place를 지원하는 다양한 Manipulation 라이브러리 제공
      • GUI 형태의 매니퓰레이션 Tools 제공 (MoveIt)
  3. 다양한 개발 도구
    • 로봇 개발에 필요한 다양한 개발 도구를 제공
    • 로봇 개발의 효율성 향상
    • Command-Line Tools
      • GUI 없이 ROS에서 제공되는 명령어로만 로봇 억세스 및 거의 모든 ROS 기능 소화
    • RViz
      • 강력한 3D 시각화 툴 제공
      • 레이저, 카메라 등의 센서 데이터 시각화
      • 로봇 외형과 계획된 동작을 표현
    • RQT
      • 그래픽 인터페이스 개발을 위한 Qt 기반 프레임워크 제공
      • 노드와 그들 사이의 연결 정보 표시 (rqt_graph)
      • 인코더, 전압, 또는 시간이 지남에 따라 변화하는 숫자를 플로팅 (rqt_plot)
      • 데이터를 메시지 형태로 기록하고 재생 (rqt_bag)
    • Gazebo
      • 물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터
      • ROS와 높은 호환성1. ROS 소개ROS란?
        • Open-source 기반
        • Meta-operating system
        • 로봇을 위한 운영체제
        2. 소프트웨어 프레임워크
        • Plumbing + Tools + Capabilities + Ecosystem
        • 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크
          • 노드 간에 메시지 교환 방법으로 복잡한 프로그램을 잘게 나눠 공동 개발이 가능
          • 명령어 도구, 시각화 도구 Rviz, GUI 도구 모음 rqt, 3차원 시뮬레이터 Gazebo 지원
          • 로보틱스에서 많이 사용되는 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션 기능 지원
          • 로보틱스 생태계 생성
         📌 ROS의 진정한 목적 : 로봇 소프트웨어 개발을 전세계 레벨에서 공동작업이 가능하도록 생태계를 구축하는 것!3. 메타 운영체제(Meta-Operating System)
        • 운영 체제 (Operating System)
          • 범용 컴퓨터 : Windows, Linux, MAC
          • 스마트폰 : Android, iOS, Windows Phone, Symbian, RiMo, Tizen
        • ROS = Robot Operating System
        • ROS는 메타운영체제(Meta-Operating System)이다. (운영체제X)
        메타운영체제(Meta-Operating System)
        • 메타운영체제는 완전히 정의된 용어는 아니다.
        • 어플리케이션과 분산 컴퓨팅 자원 간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하여 스케쥴링 및 로드, 감시, 에러 처리 등을 실행하는 시스템
        • 전통적인 운영체제(Window, Linux, MAC 등)는 아니다.
        • ROS는 기존의 전통적인 운영체제를 이용하고 있다.
        • 기존 운영체제의 프로세스 관리 시스템, 파일 시스템, 유저 인터페이스, 프로그램 유틸(컴파일러, 스레드 모델) 등을 사용하고 있다.
        • 다수의 이기종 하드웨어 간의 데이터 송수신, 스케쥴링, 에러 처리 등 로봇 응용 소프트웨어 개발을 위한 필수 기능들을 라이브러리 형태로 제공
        • 로봇 소프트웨어 프레임워크를 기반으로 다양한 목적의 응용 프로그램을 개발, 관리, 제공하며, 유저들이 개발한 패키지를 유통하는 생태계를 갖추고 있다.
        • 메타운영체제 ↔ Robot, Sensor, App
        • : 디바이스 드라이버, 라이브러리, 디버그 도구, 메시지 통신, 구동 도구, 컴파일 도구, 인스톨러, 패키지 생성 릴리즈
        ROS를 사용 가능한 운영체제
        • 기존 전통적인 운영체제 : 아래 세 가지 모두 지원
          • ROS를 사용 가능한 운영체제로는 Ubuntu, OS X, Windows, Fedora, Gentoo, OpenSUSE, Debian, Raspbian, Arch, QNX Realtime OS 등이 있으나 기능 제한사항이 있을 수 있다.
          • 스마트폰 운영체제인 Android, iOS의 경우, 부분적 사용가능
          • OS를 탑재할 수 없는 마이크로 컨트롤러 유닛(MCU)의 경우, 시리얼 통신, 블루투스, LAN 경유로 통신할 수 있는 라이브러리를 제공한다.
          • 기본적으로는 Ubuntu, OS X에서 구동하는 것 추천
        4. ROS의 구성
        • Client Layer : 다양한 언어 지원
        • Robotics Application
        • Robotics Application Framework : 각종 프로그램 지원
        • Communication Layer : 토픽, 액션 등의 메시지 교환 방식
        • Hardware Interface Layer : 카메라, gps, 모터 등의 하드웨어 중 무엇을 쓸건지
        • Software Development Tools
        • Simulation : stage(2차원), gzrebo ros pkgs(3차원)
        5. ROS의 생태계 
        1. Robot, Sensor : 90종류 이상의 로봇과 80종류 이상의 센서를 지원하고 있다.
        2. ROS : 애플리케이션, 시뮬레이터, 지능모듈, 라이브러리, 툴, 프로그래밍언어 등
        3. APP
          • 5000개 이상의 패키지 보유
          • 2800개 이상의 공식 패키지 제공
          • 113000 정도의 다운로드 수
          • 17058 Wiki 페이지
        6. ROS의 특징
        1. 통신 인프라
          • 노드 간 데이터 통신을 제공
          • 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원
          • 메시지 파싱 기능
            • 로봇 개발 시에 빈번히 사용되는 통신 시스템 제공
            • 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스
            • 카메라 또는 모터에 저장된 정보를 어떻게 보낼지 규격화 되어있다.
          • 메시지의 기록 및 재생
            • 노드 간 송수신되는 데이터인 메시지를 저장하고 필요시에 재사용 가능
            • 저장된 메시지를 기반으로 반복적인 실험 가능, 알고리즘 개발에 용이
            • 카메라 정보를 기록하고 필요할 때 재생할 수 있다.
          • 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능
            • 노드 간의 데이터 교환이 메시지를 사용하기 때문에 각 노드는 서로 다른 언어로 작성 가능
            • 클라이언트 라이브러리 : roscpp, rospy, roslisp, rosjava, roslua, roscs, roseus, PhaROS, rosR
            • 노드마다 다른 언어를 사용하여도 된다.
          • 분산 매개 변수 시스템
            • 시스템에서 사용되는 변수를 글로벌 키값으로 작성하여 공유 및 수정하여 실시간으로 반영
        2. 로봇 관련 다양한 기능
          • 로봇에 대한 표준 메시지 정의
            • 카메라, IMU, 레이저 등의 센서 / 오토메트리, 경로 및 지도 등의 내비게이션 데이터 등의 표준 메시지를 정의하여 모듈화, 협업 작업을 유도, 효율성 향상
          • 로봇 기하학 라이브러리
            • 로봇, 센서 등의 상대적 좌표를 트리화 시키는 TF 제공
            • 휴머노이드 로봇의 경우 모든 관절이 상대 좌표로 정해져 있다.
          • 로봇 기술 언어
            • 로봇의 물리적 특성을 설명하는 XML 문서 기술
          • 진단 시스템
            • 로봇의 상태를 한눈에 파악할 수 있는 진단 시스템 제공
            • 현재 로봇의 상태(배터리, 각도, 센서 값 등)를 진단
          • 센싱/인식
            • 센서 드라이버, 센싱/인식 레벨의 라이브러리 제공
          • 내비게이션
            • 로봇에서 많이 사용되는 로봇의 포즈(위치, 자세) 추정, 지도 내의 자기 위치 추정 제공
            • 지도 작성에 필요한 SLAM, 작성된 지도 내에서 목적지를 찾아가는 Navigation 라이브러리 제공
          • 매니퓰레이션
            • 로봇 암에 사용되는 IK, FK는 물론 응용단의 Pick and Place를 지원하는 다양한 Manipulation 라이브러리 제공
            • GUI 형태의 매니퓰레이션 Tools 제공 (MoveIt)
        3. 다양한 개발 도구
          • 로봇 개발에 필요한 다양한 개발 도구를 제공
          • 로봇 개발의 효율성 향상
          • Command-Line Tools
            • GUI 없이 ROS에서 제공되는 명령어로만 로봇 억세스 및 거의 모든 ROS 기능 소화
          • RViz
            • 강력한 3D 시각화 툴 제공
            • 레이저, 카메라 등의 센서 데이터 시각화
            • 로봇 외형과 계획된 동작을 표현
          • RQT
            • 그래픽 인터페이스 개발을 위한 Qt 기반 프레임워크 제공
            • 노드와 그들 사이의 연결 정보 표시 (rqt_graph)
            • 인코더, 전압, 또는 시간이 지남에 따라 변화하는 숫자를 플로팅 (rqt_plot)
            • 데이터를 메시지 형태로 기록하고 재생 (rqt_bag)
          • Gazebo
            • 물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터
            • ROS와 높은 호환성
      • ROS는 새로운 운영 체제(OS)인가?
      • ROS는 로봇 개발을 위한 오픈소스 플랫폼으로, 가장 많은 유저를 보유하고 있으며, 가장 많은 로봇 및 센서를 지원하고 있다.

반응형