Ubuntu ROS 실습(1)

zeusqoi·2026년 9월 17일

개인공부

목록 보기
20/48

1. ROS란?

ROS는 Robot Operating System의 약자이다.

이름만 보면 운영체제(OS)처럼 보이지만, 실제로는 일반적인 운영체제가 아니다.

ROS는 로봇 애플리케이션을 개발할 때 필요한 소프트웨어 라이브러리와 개발 도구를 제공하는 오픈소스 소프트웨어 개발 플랫폼에 가깝다.

즉, 로봇을 개발할 때 필요한 기능들을 처음부터 직접 구현하는 대신 ROS에서 제공하는 기능과 도구를 활용할 수 있다.

ROS에서는 다음과 같은 다양한 영역을 지원한다.

  • 로봇 하드웨어를 위한 Driver
  • 로봇 알고리즘
  • 개발 및 디버깅 도구
  • 시각화 도구
  • 로봇 애플리케이션 개발에 필요한 다양한 기능

따라서 ROS를 사용하면 로봇 개발에 필요한 기본적인 기능들을 직접 구축하는 시간을 줄이고, 실제 로봇 애플리케이션 개발에 집중할 수 있다.


2. ROS 2가 등장한 이유

ROS 1은 로봇 개발 분야에서 널리 사용되어 왔지만, 시간이 지나면서 새로운 요구사항들이 등장했다.

기존 ROS 1 환경에서는 다음과 같은 특징과 제한이 있었다.

  • 단일 로봇 중심
  • 워크스테이션급 컴퓨터
  • Linux 환경
  • 실시간 제어 지원 부족
  • 안정적인 네트워크 환경 필요
  • 주로 대학 및 연구기관의 연구 목적

하지만 실제 로봇 산업에서는 점점 더 다양한 환경이 요구되었다.

예를 들어,

  • 여러 대의 로봇을 동시에 사용하는 환경
  • 임베디드 시스템
  • 실시간 제어
  • 불안정한 네트워크 환경
  • Linux뿐만 아니라 Windows, macOS 지원
  • 상업용 제품 지원

등의 요구사항이 생겼다.

이러한 새로운 기능을 ROS 1에 모두 추가하면서 기존 API와의 호환성을 유지하기는 어려웠기 때문에, 차세대 기능을 중심으로 ROS 2가 별도로 개발되었다.

ROS 2는 2015년 Alpha를 시작으로 개발되었고, 2017년 12월 정식 버전이 공개되었다.


3. ROS의 8가지 중요 컨셉

강의 자료에서는 ROS의 특징을 크게 8가지로 설명한다.

글로벌 커뮤니티

ROS는 전 세계의 개발자와 사용자들이 함께 발전시켜 온 오픈소스 프로젝트이다.

많은 개발자와 사용자가 ROS 프로젝트에 참여하면서 다양한 소프트웨어와 패키지가 만들어졌고, 이를 통해 로봇 분야의 거대한 소프트웨어 생태계가 형성되었다.

검증된 사용 사례

ROS는 교육뿐만 아니라 로봇 연구 및 산업 분야에서도 사용되고 있다.

단일 프로젝트부터 여러 기관이 협력하는 연구, 로봇 경연대회, 실제 생산되는 로봇까지 다양한 분야에서 활용되고 있다.

시장 출시 시간 단축

로봇 애플리케이션을 개발할 때 필요한 도구, 라이브러리, 기능을 ROS가 제공한다.

따라서 개발자가 통신 시스템이나 디버깅 도구 등을 처음부터 직접 만들 필요가 줄어들고, 실제 로봇 개발에 더 집중할 수 있다.

다중 도메인

ROS는 특정 종류의 로봇에만 한정되지 않는다.

자료에서는 다음과 같이 다양한 환경을 예시로 들고 있다.

  • 실내 / 실외
  • 가정 / 자동차
  • 수중 / 우주
  • 소비자용 / 산업용

즉, 다양한 로봇 애플리케이션에 활용할 수 있다.

멀티 플랫폼

ROS 2는

  • Linux
  • Windows
  • macOS

환경에서 개발, 지원 및 테스트가 가능하다.

따라서 특정 운영체제에만 종속되지 않고 다양한 환경에서 로봇 시스템을 개발할 수 있다.

오픈 소스

ROS 2는 기본적으로 Apache 2.0 License를 사용한다.

오픈소스이기 때문에 개발자가 ROS 2를 다양한 목적으로 활용할 수 있으며, 필요에 따라 수정해서 사용할 수도 있다.

상업 친화성

ROS 2는 오픈소스이지만 상업적인 제품 개발에도 사용할 수 있도록 설계되어 있다.

자료에서는 ROS를 수정하거나 비공개 소프트웨어와 결합하여 독점적인 제품에 포함하는 것도 가능하다고 설명한다.

업계 지원

ROS 2는 개인 개발자나 연구자뿐만 아니라 다양한 기업에서도 활용되고 있다.

기업들은 ROS 2를 이용해 제품을 개발하는 동시에 ROS 2 오픈소스 프로젝트에도 기여하고 있다.

또한 ROS Package Documentation, Robotics Stack Exchange, ROS Discourse, ROS Index 등의 다양한 커뮤니티 및 개발 리소스가 존재한다.


4. ROS는 무엇을 제공하는가?

ROS를 이해할 때 자료에서 강조하는 개념이 바로 다음 네 가지이다.

이 네 가지를 이해하면 ROS가 단순한 라이브러리 모음이 아니라는 것을 이해하기 쉽다.

Plumbing

Plumbing = 로봇 소프트웨어를 연결하는 통신 기반

ROS의 핵심적인 역할 중 하나는 서로 다른 프로그램이나 노드들이 데이터를 주고받을 수 있도록 메시지 전달 시스템을 제공하는 것이다.

로봇 시스템에서는 여러 프로그램이 동시에 동작한다.

예를 들어,

카메라
  ↓
영상 처리
  ↓
객체 인식
  ↓
위치 판단
  ↓
로봇 제어

각 기능을 하나의 거대한 프로그램으로 만들 수도 있지만, ROS에서는 각각의 기능을 분리하고 서로 통신하도록 구성할 수 있다.

ROS는 이러한 분산된 노드 사이의 통신을 지원한다.

특히 Publish / Subscribe 방식을 사용하여 노드 간 메시지 통신을 구성할 수 있다.

또한 LIDAR, 카메라, 위치 추정 알고리즘, 사용자 인터페이스 등 다양한 시스템에서 사용할 수 있는 표준 ROS 메시지 형식을 제공한다.

Tools

로봇 애플리케이션은 센서와 액추에이터를 통해 실제 물리 환경과 비동기적으로 상호작용하기 때문에 개발이 복잡하다.

그래서 ROS는 로봇 개발을 위한 다양한 도구를 제공한다.

대표적으로,

  • 실행
  • 상태 확인
  • 디버깅
  • 시각화
  • 플로팅
  • 로깅
  • 데이터 재생

등의 기능을 지원한다.

즉, ROS를 이용하면 로봇 프로그램 자체뿐만 아니라 개발하고 테스트하기 위한 도구도 함께 활용할 수 있다.

Capabilities

Capabilities = 실제 로봇 문제를 해결하기 위한 기능

ROS 생태계에는 다양한 로봇 기능을 구현할 수 있는 소프트웨어가 존재한다.

예를 들어,

  • GPS 디바이스 드라이버
  • 4족 보행 로봇의 보행 및 균형 제어
  • 모바일 로봇의 매핑
  • 로봇 알고리즘
  • 사용자 인터페이스

등을 들 수 있다.

즉, ROS는 단순히 통신만 제공하는 것이 아니라 로봇 애플리케이션을 만들기 위한 다양한 빌딩 블록을 제공한다.

Community

ROS는 오픈소스 프로젝트이기 때문에 전 세계의 학생, 개발자, 연구자, 기업 등이 함께 생태계를 구성하고 있다.

자료에서는 Open Robotics를 ROS 프로젝트의 커뮤니티 허브이자 중립적인 관리자로 설명하고 있다.

ROS의 배포 릴리스와 핵심 소프트웨어 개발 및 유지 관리 등도 이루어진다.


5. ROS를 한 문장으로 정리하면?

ROS를 단순하게 정리하면 다음과 같다.

ROS는 로봇 애플리케이션을 개발하기 위한 오픈소스 소프트웨어 개발 플랫폼으로, 통신 기능과 개발 도구, 다양한 로봇 기능을 제공한다.

특히 기억해둘 부분은 ROS ≠ 운영체제라는 것이다.

이름에 Operating System이 들어가지만 실제 운영체제라기보다는 로봇 개발을 위한 SDK 및 소프트웨어 생태계라고 이해하는 것이 좋다.


6. ROS 2를 배우는 이유

ROS 2는 기존 ROS 1에서 요구되었던 한계를 개선하고,

  • 멀티 플랫폼
  • 실시간성 지원
  • 보안
  • 다양한 로봇 환경
  • 상업용 제품
  • 새로운 통신 기술

등을 고려하여 설계되었다.

특히 ROS 2에서는 DDS(Data Distribution Service) 기반의 통신 구조를 사용하며, 이후 실습에서 노드, 토픽, 서비스 등의 개념을 배우면서 이 통신 구조를 직접 확인하게 된다.


마무리

이번에는 실제 ROS 실습을 진행하기 전에 ROS가 무엇인지, 왜 ROS 2가 등장했는지, ROS가 어떤 역할을 하는지부터 정리했다.

핵심만 다시 정리하면,

ROS
 ├─ Plumbing
 │   └─ 노드 간 통신 / 메시지 전달
 │
 ├─ Tools
 │   └─ 실행 / 디버깅 / 시각화 / 로깅 등
 │
 ├─ Capabilities
 │   └─ SLAM / Navigation / Driver / 알고리즘 등
 │
 └─ Community
     └─ 오픈소스 생태계

결국 ROS는 로봇을 직접 움직이는 하나의 프로그램이라기보다, 여러 로봇 소프트웨어를 연결하고 개발할 수 있도록 도와주는 플랫폼이라고 이해하면 될 것 같다.

0개의 댓글