본문 바로가기

& 프로그래밍/& ROS

ROS 기본용어 정리

ROS 프로그래밍을 공부하면서 기본적으로 알아야하는 용어들을 정리한다.

아마 직접 실습을 해봐야 이해가 되는 용어들도 존재할테니.... 너무 완벽하게 이해하려 하지 않아도 된다. 어차피 하면서 배우니까~

 

ROS

로봇의 응용프로그램을 개발하기 위한 운영체제와 같은 로봇 소프트웨어 플랫폼으로서 필요한 하드웨어 추상화, 디바이스 제어, 로보틱스에서 사용되는 센싱, 인식, 지도 맵핑 등의 기능을 구현하며, 프로세스간 메세지 파싱, 패키지 관리등 다양한 개발 및 디버깅 도구를 제공한다

 

마스터

노드와 노드 사이의 연결과 메세지 통신을 위한 네임 서버와 같은 역할을 한다. roscore가 실행명령어이며, 마스터를 실행하면 각 노드의 이름을 등록하고 필요에 따라 정보를 받을 수 있다. 즉, 마스터가 없이는 노드 간의 접속, 토픽과 서비스와 같은 메세지 통신을 할 수 없다.

 

노드(node)

ROS에서 실행되는 최소단위의 프로세서를 지칭한다. 하나의 실행가능한 프로그램으로 이해하면 쉽다. 통상 하나의 실행목적에 하나의 노드를 작성한다. 예를 들어 로봇을 제작할 때 필요한 동작들을 세분화해서 센싱, 분석, 변환, 판단, 제어처럼 각 동작을 세분화해서 노드를 작성하는 것이다. 각 노드는 메세지 통신으로 데이터를 주고 받는다

 

패키지(package)

ROS를 구성하는 기본 단위로서 ROS 응용프로그램은 패키지 단위로 개발되며 최소 하나 이상의 노드를 포함하거나 다른 패키지의 노드를 실행하도록 설정파일을 포함시킨다

 

메세지(message)

노드가 다른 노드와 데이터를 주고 받을때 사용되는 것이 바로 메세지이다. 메세지는 int, float, point, boolean과 같은 변수형태로 구성되어 있으며, 간단한 데이터 구조나 메세지들이 나열된 배열구조로도 사용된다

 

토픽(topic)

퍼블리셔(publisher)노드가 하나의 토픽에 대해 마스터로 등록하고, 그 토픽을 메세지형태로 퍼블리싱하면 서브스크라이버(subscriber) 노드가 해당 토픽 받는 개념이다. 유튜브를 예로들면, 자신이 원하는 주제를 가지고 영상을 게시하면 그 주제와 부합한 구독자가 구독을 누르고 관련 정보를 직접 보는 맥락이라고 이해하면 될 것 같다

 

이밖에도 메타패키지, 서비스, 서비스클라이언트, 액션, 액션클라이언트, 파라미터, 캐킨, ROS빌드, rosrun, bag, MD5등 많은 용어들이 있는데 핵심적으로는 위 정리한 용어들을 이해하면 나머지는 연결연결~해서 작동원리를 실습하면서 습득하는게 더 빠르고 쉽게 이해될 것이다