본문 바로가기

ROS

ROS 이론과 명령어1

 

  • ROS는 = Robot Operating System
  • ROS는 메타 운영체제(Meta-Operating System)이다.

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

 

메타 운영 체제 

  • 메타 운영체제(Meta-Operating System) 딱히 정확히 정의된 용어는 아니지만, 애플리케이션과 분산 컴퓨팅 자원 간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하여, 스케쥴링 및 로드, 감시, 에러 처리 등을 실행하는 시스템이라고 볼 수 있다.
  • 즉, 윈도, 리눅스, 안드로이드와 같은 전통적인 운영체제는 아니다. 오히려 ROS는 기존의 전통적인 운영체제(리눅스, 윈도즈, OS-X, 안드로이드)를 이용하고 있다.
  • 기존 운영체제의 프로세스 관리 시스템, 파일 시스템, 유저 인터페이스, 프로그램 유틸(컴파일러, 스레드 모델 등) 등을 사용하고 있다. 이에 추가적으로 다수의 이기종 하드웨어 간의 데이터 송수신, 스케쥴링, 에러 처리 등 로봇 응용 소프트웨어 개발을 위한 필수 기능들을 라이브러리 형태로 제공하고 있다.
  • 또한, 이러한 로봇 소프트웨어 프레임워크를 기반으로 다양한 목적의 응용 프로그램을 개발, 관리, 제공하고 있으며 유저들이 개발한 패키지 또한 유통하는 생태계(ecosystem)를 갖추고 있다.

 

ROS 특징

통신 인프라

  • 노드 간 데이터 통신을 제공 
  • 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원

메시지 파싱 기능

  • 로봇 개발 시에 빈번히 사용되는 통신 시스템 제공
  • 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스

메시지의 기록 및 재생

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

메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능 

  • 노드 간의 데이터 교환이 메시지를 사용하기 때문에 각 노드는 서로 다른 언어로 작성 가능
  • 클라이언트 라이브러리:roscpp, rospy, roslisp, rosjava, roslua, roscs, roseus, PhaROS, rosR

분산 매게 변수 시스템

  • 시스템에서 사용되는 변수를 글로벌 키값으로 작성하여 공유 및 수정하여 실시간 반영 

로봇 관련 다양한 기능 

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

  • 카메라, IMU, 레이저 등의 센서 / 오도메트리, 경로 및 지도 등의 내비게이션 데이터 등의 표준 메시지를 정의하여 모듈화, 협업 작업을 유도, 효율성 향상

로봇 기하학 라이브러리

  • 로봇, 센서 등의 상대적 좌표를 트리화 시키는 TF제공

로봇 기술 언어

  • 로봇의 물리적 특성을 설명하는 XML 문서 기술

진단 시스템

  • 로봇의 상태를 한눈에 파악할 수 있는 진단 시스템 제공 

센싱/인식

  • 센서 드라이버, 센싱/인식 레벨의 라이브러리 제공

내비게이션

  • 로봇에서 많이 사용되는 로봇의 포즈(위치/자세) 추정, 지도 내의 자기 위치 추정 제공 
  • 지도 작성에 필요한 SLAM, 작성된 지도 내에서 목적지를 찾아가는  Navigation 라이브러리를 제공

매니퓰레이션 

  • 로봇 암에 사용되는 IK, FK는 물론 응용단의 Pick and Place를 지원하는 다양한 Manipulation 라이브러리 제공
  • GUI 형태의 매니퓰레이션 Tools 제공 (Movelt!)

다양한 개발 도구

로봇 개발에 필요한 다양한 개발 도구를 제공

로봇 개발의 효율성 향상

Command-Line Tools

  • GUI 없이 ROS에서 제공되는 명령어로만 로봇 액세스 및 거의 모든  ROS 기능 소화

RViz

  • 강력한 3D 시각화 툴 제공
  • 레이저, 카메라 등의 센서 데이터를 시각화
  • 로봇 외형과 계획된 동작을 표현

RQT

  • 그래픽 인터페이스 개발을 위한 Qt 기반 프레임 워크 제공
  • 노드와 그들 사이의 연결 정보 표시(rqt_graph)
  • 인코더, 전압, 또는 시간이 지남에 따라 변화하는 숫자를 플로팅(rqt_plot)
  • 데이터를 메시지 형태로 기록하고 재생(rqt_bag)

Gazebo

  • 물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터
  • ROS와의 높은 호완성

'ROS' 카테고리의 다른 글

ROS catkin을 이용한 패키지 만들기  (1) 2021.06.08
ROS catkin 설치 방법  (0) 2021.06.08
ROS 설치 과정  (0) 2021.06.07
ROS 이론과 명령어 2  (0) 2021.06.07