ROS의 핵심 개념(Master, Node, Package)

minho-log·2026년 3월 4일

ROS Noetic

목록 보기
2/3

<공부 주제>

ROS Noetic의 기본 통신 구조와 구성 요소 이해

<공부한 내용 정리>

ROS는 거대한 하나의 프로그램이 아니라, 여러 개의 작은 프로그램들이 서로 데이터를 주고받으며 작동하는 분산 처리 시스템이다. 이를 이해하기 위한 3가지 핵심 키워드는 다음과 같다.

  1. 노드 (Node)
  • 정의: 최소 단위의 실행 프로그램.
  • 역할: 로봇의 센서 하나, 모터 하나, 혹은 특정 알고리즘 하나가 각각의 노드가 된다.
  • 장점: 하나가 죽어도 다른 노드에 영향을 주지 않아 시스템이 안정적이다.
  1. 마스터 (Master / roscore)
  • 정의: 노드들 사이의 통신을 돕는 중개자.
  • 역할: 각 노드가 어디에 있는지 정보를 가지고 있으며, 노드들이 서로를 찾을 수 있게 연결해준다.
  • 실행: 터미널에서 roscore 명령어를 입력하면 마스터가 실행된다. (이게 꺼지면 통신 불가!)
  1. 패키지 (Package)
  • 정의: ROS 소프트웨어를 구성하는 기본 단위.
  • 역할: 관련된 노드, 설정 파일, 데이터 등을 하나로 묶어놓은 폴더 개념이다.
  • 특징: 남이 만든 기능을 가져다 쓸 때도 '패키지' 단위로 내려받아 사용한다.

<예제 / 실습 코드>

현재 실행 중인 노드와 마스터의 상태를 확인하는 필수 명령어들이다.

  1. 마스터 실행
roscore
  1. 실행 중인 노드 목록 확인
rosnode list

/rosout: 로그 기록을 담당하는 기본 노드로, 항상 떠 있어야 정상이다.

  1. 특정 노드의 정보 확인
rosnode info /turtlesim

어떤 데이터를 보내고 받는지 상세 정보를 보여준다.

  1. 노드 간의 관계 시각화 (치트키)
rqt_graph

어떤 노드가 어떤 통로(Topic)로 연결되어 있는지 그림으로 보여준다. 초보 때는 무조건 이걸 켜놓고 공부하는 게 좋다.

<헷갈렸던 점>

  • 마스터의 역할: 마스터가 데이터를 직접 전달하는 줄 알았는데, 사실 마스터는 "연락처"만 알려줄 뿐이다. 실제 데이터는 노드끼리 직접(Peer-to-Peer) 주고받는다는 점이 놀라웠다.
  • 패키지 vs 폴더: 그냥 폴더를 만든다고 패키지가 되는 게 아니라, 안에 package.xml과
    CMakeLists.txt가 있어야 ROS가 패키지로 인식한다는 점을 잊지 말자.

<오늘의 정리>

  • 마스터(roscore)는 통신의 전화국 역할을 한다.
  • 노드는 각 기능을 수행하는 개별 프로그램이다.
  • 패키지는 코드를 담는 가방이며, ROS 관리의 기본 단위다.
  • rqt_graph를 통해 시스템 전체 구조를 한눈에 파악할 수 있다.
profile
개발 공부를 하며 직접 부딪히고 공부한 것을 기록합니다.

0개의 댓글