TIKI-MINI로 시작하는 ROS2 실무
목차

1. 이론

1.1ROS2란?

로봇 소프트웨어는 왜 어려운가

모바일 로봇 하나만 움직이려 해도 다음이 동시에 필요합니다.

  • 바퀴 모터 제어
  • 센서(LiDAR, 카메라, IMU) 데이터 읽기
  • 자기 위치 추정, 경로 계획
  • 사용자 명령 수신, 상태 표시

이 기능을 하나의 거대한 프로그램으로 만들면 수정이 어렵고 센서나 모터가 바뀔 때마다 전체를 다시 손봐야 합니다. 로봇마다 같은 기능을 매번 처음부터 만들게 되는 문제도 있습니다.

ROS2의 접근: 작은 프로그램을 연결한다

ROS(Robot Operating System) 2는 이름과 달리 윈도우나 리눅스 같은 운영체제가 아니라, 로봇 소프트웨어를 만들기 위한 미들웨어 + 도구 + 라이브러리 모음입니다. 기능을 노드라는 작은 프로그램으로 나누고 노드끼리 메시지를 주고받게 합니다.

LiDAR 노드장애물 회피 노드모터 제어 노드키보드 노드/scan/cmd_vel

둥근 상자 = 노드 · 사각형 = 토픽 · 화살표 = 데이터 방향

  • 노드(Node): 하나의 역할을 하는 실행 프로그램 (예: LiDAR 읽기, 모터 제어)
  • 토픽(Topic): 노드끼리 메시지를 주고받는 통로. 통로마다 이름이 붙어 있음 (예: /scan, /cmd_vel)
  • 메시지(Message): 토픽으로 오가는 데이터의 형식 (예: 속도 명령, 센서 값)
센서 노드 바꿔 끼우기가상 LiDAR시뮬레이션둘 중 하나실제 LiDAR 노드실기기/scan같은 형식장애물 회피 노드수정 없이 그대로/cmd_vel속도 명령
가상 LiDAR와 실제 LiDAR 노드 중 어느 쪽이 /scan을 발행해도 장애물 회피 노드는 그대로 동작합니다.

실제 로봇에서는 이렇게 노드가 나뉩니다. 아래는 카메라, 모터, 센서가 달린 로봇의 노드 구성 예입니다. 카메라 노드와 변환 노드가 하나의 미션 노드로 데이터를 모으고, 미션 노드가 QR 인식, 정지선 인식, 물체 인식, 라인 추종 같은 기능 노드를 부릅니다.

카메라 노드, 모터 제어 변환 노드, 미션 노드와 QR, 정지선, 물체 인식, 라인 추종 노드가 연결된 노드 구성 예

각 사각형이 노드 하나이고 선은 데이터가 오가는 길입니다. 센서 노드나 기능 노드를 바꿔 끼워도 미션 노드는 그대로 두고 쓸 수 있다는 것이 위에서 말한 장점입니다.

ROS2가 제공하는 것

구분내용
통신노드 간 메시지 전달 (토픽, 서비스, 액션)
도구ros2 명령어, RViz2(시각화), rosbag2(데이터 기록·재생)
라이브러리좌표 변환(TF2), 내비게이션(Nav2), SLAM 등
생태계전 세계 개발자가 공유하는 패키지
언어주로 C++, Python (이 교육은 Python 사용)

ROS1과 ROS2

항목ROS1ROS2
중앙 서버roscore(마스터) 필수불필요 (노드끼리 자동 발견)
통신 기반자체 방식DDS (산업 표준 통신 규약)
실시간·신뢰성제한적QoS 설정으로 제어 가능
지원 OS사실상 UbuntuLinux, Windows, macOS
상태유지보수 종료 (Noetic이 마지막)현재 표준
ROS1과 ROS2의 노드 찾기ROS1: roscore 필수roscore중앙 마스터노드 A노드 B노드 C중앙 서버를 거쳐 서로를 찾음ROS2: 중앙 서버 없음노드 A노드 B노드 CDDS로 서로를 자동 발견
ROS1은 roscore 마스터를 거쳐 노드가 연결되고, ROS2는 마스터 없이 DDS로 노드끼리 서로를 찾습니다.

한눈에 정리

  1. ROS2는 로봇 소프트웨어를 작은 노드로 나누고 메시지로 연결하는 프레임워크다.
  2. 노드는 토픽이라는 이름 붙은 통로로 데이터를 주고받는다.
  3. 중앙 서버 없이 DDS를 통해 노드들이 서로를 자동으로 찾는다.
  4. 같은 인터페이스(토픽)를 쓰면 시뮬레이션과 실기기를 바꿔 끼울 수 있다.

확인 문제

Q1. ROS2는 운영체제인가요?

아니요. 운영체제 위에서 동작하는 로봇용 미들웨어·도구·라이브러리 모음입니다.

Q2. 장애물 회피 노드는 어떤 통로로 모터 제어 노드에 속도 명령을 보내나요?

토픽입니다. 위 그림에서는 /cmd_vel 토픽을 사용합니다.

Q3. ROS1과 달리 ROS2에서 필요 없어진 것은?

중앙 마스터(roscore)입니다. ROS2는 DDS 기반으로 노드가 서로를 자동으로 발견합니다.

다음 장

다음은 토픽입니다. 이번에는 개념을 읽는 데서 그치지 않고 코드를 직접 고쳐 실행해 봅니다.