본문 바로가기
Ros 공부

Ros 기본 개념

by 바위폭주 2023. 3. 11.
반응형

Ros

Robot Operating System의 약자이다. 기존의 전통적 운영체제를 이용, 하드웨어 추상화, 이기종 하드웨어 적용, 로봇 특화 개별환경 제공을 하는 로봇 소프트웨어 플랫폼이다.

ROS Wiki

ROS is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management. It also provides tools and libraries for obtaining, building, writing, and running code across multiple computers.

Meta-operating system

메타 운영체제는 전통적인 운영체제 위에 설치되어 사용한다. Ros는 보통 리눅스의 우분투 위에 설치되어 사용한다. 또한 다른 운영체제, 하드웨어, 프로그램 간 통신이 가능하다. 우분투와 아두이노, 안드로이드, 또다른 우분투 등의 데이터 송수신이 가능하다.

 

주요 용어

Master

노드 사이를 연결하고, 메시지 통신을 위한 네임 서버 역할을 한다. 노드를 구동 하면 마스터에 노드 이름과, 퍼블리셔/서브스크라이버 등에서 사용할 토픽 이름, 메시지 형태, URI 주소, 포트 등을 등록해야 한다. 이 이름을 바탕으로 통신하게 된다. Ros Masterroscore 명령어로 실행된다. 보통은 같은 네트워크에서 하나만 구동하며, 같은 네트워크 내에선 다른 컴퓨터에서 실행해도 된다. roscore를 가장 먼저 실행하여, 노드들이 등록되어 작동하고 서로 통신할 수 있도록 해야 한다.

 

Node

실행 가능한 최소 단위 프로세서이다. 값을 받아들이거나 내보내거나, 둘 다 하는 프로그램도 가능하다. 하나의 로봇을 작동하는 데 여러 개의 노드가 작게 세분화되며 주로 하나의 목적에 하나의 노드를 사용한다. 노드끼리 데이터를 주고받을 때는 message 형태로 주고받는다.

 

Package

Ros를 구성하는 기본 단위이자 개발 단위이다. 하나 이상의 노드를 포함하고 있으며, 다른 패키지의 노드를 실행하기 위한 설정 파일, 프로세스들을 실행할 ROS 의존성 라이브러리, 데이터셋 등을 가진다.

의존성? 2에서 사용하는 개념이 1에서 왔다고 하면 21과 의존관계가 있는 것이다. 하나가 다른 하나를 어떤 용도로 사용하는 것이다. 의존성 라이브러리는 어떤 기능을 사용하기 위해 필요한 라이브러리이다.

package.xml 파일이고 패키지의 정보를 기술하고 있는 xml파일이다.

 

Message

노드가 데이터를 주고받을 때 사용하는 데이터이다. Message는 다양한 자료형이 있다.

http://wiki.ros.org/msg Ros wiki에서 자료형을 확인할 수 있다.

Message로 노드 간의 통신 방식에는 3가지가 있다. Topic, Service, Action

 

Topic은 비동기 방식, 단방향, 연속적으로 데이터를 송수신할 때 사용한다. (publisher, subscribe)

주로 Topic을 많이 사용하며, 센서 값을 전달하거나 로봇의 위치 등 지속적으로 데이터를 보내야할 때 Topic을 사용한다.

Publisher 노드는 토픽과 자신의 정보를 마스터에 등록하고, subscribe 노드에 메시지를 보낸다.

subscribe노드는 토픽과 자신의 정보를 마스터에 등록하고, 받고자 하는 토픽을 주고 있는 publisher 노드의 정보를 받는다.

 

Service는 동기, 양방향, 한 번만 데이터 송수신할 때 사용한다. (service server, service client)

 

Action은 비동기, 양방향, 요청 후 응답까지 시간이 걸리거나 중간 피드백이 필요할 때 사용한다.

(action server, action client)

rqt_graph 노드를 실행시켜 node, topic, publisher, subscribe의 관계를 그래프로 표현 가능하다.

반응형

Parameter

노드에서 사용되는 parameter, 미리 지정되거나 할당할 수 있는 값.

 

Catkin

Ros의 빌드 시스템이다. 패키지 폴더에 CMakeList.txt 파일에 빌드 환경을 적어야 한다. Ros 관련 빌드, 패키지, 의존관계 등을 편리하게 사용할 수 있다.

 

rosrun

Ros의 기본 실행 명령어. 하나의 노드를 실행한다. Rosrun 실행 전에 다른 터미널에서 roscore를 실행해야 한다.

roslaunch

roscore 없이도 여러 개의 노드를 실행할 수 있는 명령어이다. 이때 사용되는 *.launch 파일은 xml기반이다. 실행 명령어는 Roslaunch [패키지명] [roslaunch 파일명]이다.

xml 파일의 <launch> 태그 안에는 roslaunch 명령어로 노드를 실행할 때 필요한 태그들이 적힌다. pkg: 패키지의 이름, type: 실제 실행할 노드의 이름

name: type에 해당되는 노드가 실행될 때 붙여지는 이름

 

roslaunch

Ros 시스템에서 여러 노드를 시작하고 관리하는 프로세스를 단순화하는 ROS의 강력한 도구입니다. 각 매개변수로 노드를 구성하고 시작하는 방법을 제공하며 여러 노드와 종속성이 있는 복잡한 Ros 시스템을 시작하는 데 사용할 수 있습니다.

 

bag

ros에서 주고받는 메시지 데이터를 저장하는 파일 .bag형태를 가진다.

name

노드, 토픽, 서비스, 파라미터에 모두 name이 있다. 마스터에 등록하면 이 name을 이용하여 검색 및 메시지 송수신이 이뤄진다.

 

반응형