ROS 정리

sumi Yoo·2022년 11월 26일
0

ROS란?

Robot Operating System의 약자로, 오픈 로보틱스(Open Robotics, 구 OSRF)에서 개발하고 있습니다.

로봇 응용프로그램의 개발을 위한 하드웨어 추상화, 하위 디바이스 제어와 센싱 및 인식, 위치 추정, 내비게이션 등의 기능, 패키지 관리, 라이브러리, 개발 도구와 디버깅 도구 등을 제공하는 로봇 소프트웨어 플랫폼 입니다.

메타 운영체제

ROS는 전통적인 운영체제는 아니며, 메타 운영체제입니다.
우분투와 같은 운영체제를 설치하고 그 위에 추가로 설치하여 전통적인 운영체제에서 제공하는 프로세스 관리 시스템, 파일 시스템, 유저 인터페이스, 프로그램 유틸리티 등을 사용하면서 이에 추가로 다수의 이기종 하드웨어 간의 데이터 송수신, 스케줄링, 에러 저리 등 로봇 응용프로그램에 필요한 필수 기능들을 라이브러리 형태로 제공합니다. 또한, 다른 운영체제, 하드웨어, 프로그램 간 통신도 가능합니다.

ROS의 목적

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

ROS 용어 정리

마스터(master)

노드 사이를 연결하고, 메시지 통신을 위한 네임 서버 역할을 합니다.
roscore가 실행 명령어이며, 마스터를 실행하면 각 노드의 이름을 등록하고 필요에 따라 정보를 받을 수 있습니다.

사용자가 설정한 ROS_MASTER_URI 변수에 담긴 URI 주소와 포트로 ROS가 구동됩니다. 미설정 시 현재 로컬 IP를 URI주소로 사용하고, 11311 포트를 사용합니다.

노드(node)

실행 가능한, 최소 단위 프로세서이다.

Processor (프로세서)는 하드웨어적인 측면에서 "컴퓨터 내에서 프로그램을 수행하는 하드웨어의 일부"이다.

메시지(message)

노드가 데이터를 주고 받을 때 사용하는 데이터의 형태입니다.
변수로서 integer(int16, int32등), float(float32, float64 등), boolean(bool), string, time 등이 있고, 배열(리스트) 형(unit8[], Point32[] 등)으로 메시지 안에 메시지를 담을 수 있습니다. 커스텀도 가능합니다.

토픽(topic)

이야깃거리로, 이야깃거리에 대한 이야기를 메시지 형태로 퍼블리시 합니다.

퍼블리시(publish) & 서브스크라이브(subscribe)

퍼블리셔 노드는 토픽과 자신의 정보를 마스터에 등록하고, 서브스크라이브 노드에 메시지를 보냅니다.
서브스크라이브 노드는 토픽과 자신의 정보를 마스터에 등록하고, 받고자 하는 토픽을 주고 있는 퍼블리셔 노드의 정보를 받습니다.

메시지 통신 과정

토픽을 수신받기를 원하는 서브스크라이버 노드는 마스터에 등록된 토픽 이름에 해당하는 퍼블리셔 노드의 정보를 받습니다.
이 정보를 기반으로 서브스크라이버 노드는 퍼블리셔 노드와 직접 연결하여 메시지를 송수신합니다.

ROS Java

Java 언어로 구동되는 ROS 클라이언트 라이브러리를 의미합니다.
rosjava는 Android 및 ROS 호환 로봇의 통합을 가능하게 합니다.
rosjava의 시스템 및 예제가 들어있는 패키지를 이용해서 개발했습니다.

0개의 댓글