ROS2Lab Chapter 00
Ch.00

시작하기 전에

로봇과 ROS가 도대체 뭔지

⏱ 10분 #입문#개념

🤖 로봇이 뭔데?

"로봇" 하면 다들 영화에 나오는 휴머노이드를 떠올리지만, 사실 우리 주변엔 로봇이 이미 가득해요.

🧹 로봇청소기
🚗 자율주행차
🚁 드론
🦾 공장 팔(arm)
📦 배송 로봇
🚜 자율주행 농기계

이들의 공통점을 뜯어보면, 로봇은 결국 3가지로 이루어져 있어요.

👀
센서 (Sensor)
바깥세상을 "본다". 카메라, 거리센서(LiDAR), GPS, 자이로 등.
💪
액추에이터 (Actuator)
실제로 "움직인다". 모터, 바퀴, 관절, 그리퍼 등.
🧠
컴퓨터 (Brain)
센서값을 보고 어떻게 움직일지 "판단"한다.

🧩 그럼 왜 "운영체제(OS)"가 필요해?

로봇 청소기 하나를 만든다고 상상해봐요. 동시에 돌아가야 하는 게 한두 개가 아니에요.

  • 바퀴 모터 제어 (앞으로 가, 뒤로 가, 회전)
  • 거리 센서 읽기 (벽이 코앞이야!)
  • 먼지통 가득 찼는지 체크
  • 배터리 잔량 확인
  • 지도 그리기 (집안 어디가 어딘지)
  • 스마트폰 앱이랑 통신

이걸 모두 하나의 코드로 짜면? 한 군데만 버그가 나도 로봇이 통째로 멈춰요. 그리고 같은 기능을 다른 로봇에 쓰려면 처음부터 다시 짜야 하죠. 너무 비효율적이에요.

그래서 똑똑한 사람들이 로봇 부품마다 작은 프로그램으로 따로 만들고, 서로 메시지로 대화하게 하자 는 아이디어를 냈어요. 이게 ROS의 출발점이에요.

약어
ROS = Robot Operating System · 로봇 운영체제

🤔 그런데 ROS는 진짜 "OS"가 아니야

이름은 운영체제(OS)지만, 사실 Windows나 macOS, Linux 같은 진짜 OS는 아니에요. ROS는 리눅스 위에서 돌아가는 프레임워크예요. 그래서 정확히 표현하면:

"ROS는 메타-OS(meta-OS)다. 운영체제 위에 얹어서, 로봇 프로그램들이 서로 대화하게 해주는 중간 다리 역할을 한다."

쉽게 말해, ROS는 로봇용 카카오톡 + 부품 매니저 같은 거예요. 부품마다 작은 프로그램(노드)을 만들면, ROS가 그 사이에서 메시지를 전달해줘요.

📅 ROS1과 ROS2, 뭐가 달라?

ROS는 처음에 2007년에 만들어졌어요(Willow Garage라는 회사). 이게 ROS1이에요. 하지만 시간이 지나면서 한계가 드러났어요.

ROS 1 (구버전)
  • 🎯 마스터(roscore) 의존 — 중앙 서버가 죽으면 전체 멈춤
  • ⏱ 실시간성(real-time) 약함 — 산업용으로 쓰기 위험
  • 🔐 보안 거의 없음
  • 🌍 멀티 로봇/분산 환경 약함
  • 💻 Linux 위주, 다른 OS 지원 빈약
  • 📅 Noetic이 마지막 버전, 2025년 5월 지원 종료
ROS 2 (지금 배우는 거)
  • 🌐 마스터 없음 — DDS 기반 분산 통신
  • ⚡ 실시간성 강화 — 자율주행/산업용 가능
  • 🔒 보안 내장 (SROS2)
  • 🤝 멀티 로봇 자연스러움
  • 💻 Linux/Windows/macOS 다 지원
  • 📅 현재 LTS: Jazzy Jalisco (2024~2029)
약어
DDS = Data Distribution Service · 여러 컴퓨터/프로세스가 서로 데이터를 주고받는 산업 표준 통신 규약. ROS2의 통신 엔진.
약어
LTS = Long Term Support · 장기 지원 버전. 5년 정도 안정적으로 쓸 수 있어요.

🎯 ROS2는 어디에 쓰여?

🚗 자율주행차 (Autoware)
🦾 산업용 로봇팔
🤖 휴머노이드 로봇
🚁 드론 (PX4 통합)
📦 물류 로봇 (AMR)
🦮 보행 로봇 (Boston Dynamics 스타일)
🚜 농업 로봇
🏥 의료 로봇

한 마디로, "센서로 보고 액추에이터로 움직이는" 거의 모든 로봇이 ROS2를 후보로 고려해요. 배우는 게 손해 보는 일이 아니에요.

📦 이 교재로 뭘 배우게 되나?

  1. 설치: Ubuntu에 ROS2를 깔고 첫 데모를 돌려본다
  2. 개념: 노드, 토픽, 메시지, 서비스, 액션, 파라미터 — 6대 핵심
  3. CLI: ros2 명령어로 거북이를 조종한다 (turtlesim)
  4. 코딩: Python으로 직접 노드를 만든다 (rclpy)
  5. 구조화: Launch 파일, Parameter, YAML
  6. 로봇 모델링: URDF로 내 로봇을 그린다
  7. 시각화/시뮬레이션: RViz2, Gazebo

실제 로봇이 없어도 다 따라할 수 있어요. 가상의 거북이가 우리의 첫 로봇이 될 거예요. 🐢

✏️ 퀴즈 1

ROS의 정확한 풀네임은?

✏️ 퀴즈 2

ROS1과 비교했을 때 ROS2의 가장 큰 변화는?

✏️ 퀴즈 3

ROS는 운영체제(OS)인가요?

🎁 정리

  • 로봇 = 센서 + 액추에이터 + 컴퓨터
  • ROS = 부품들을 메시지로 대화하게 해주는 프레임워크 (진짜 OS는 아님)
  • ROS2 = 마스터 없는 분산 통신 + 실시간성 + 보안 강화된 새 버전
  • DDS = ROS2의 통신 엔진
  • 다음 챕터에서 진짜로 설치해볼게요 🚀