Robot Operating System - Intro

Created
Jan 1, 2025 05:15 AM
Tags
ros
robot
어쩌면 스마트폰의 다음은 로봇일지도 모른다는 생각을 하게 됐다. 범용적인 컴퓨터, 스마트폰 다음으로 범용적인 로봇이 나온다면 스마트폰을 위해 애플리케이션을 개발했듯이 로봇을 위한 애플리케이션을 개발하게 되지 않을까?
 
그래서 요즘 조금씩 로봇에 관심을 가지고 소프트웨어 엔지니어로서 로봇에 대해 조금씩 알아가고 있다.
 

 
Robot Operating System(ROS)은 Robot을 위한 오픈소스 운영체제다.
 
  • 바퀴를 재발명하지 말자
  • 프로그래밍 언어에 의존적이지 않음
 

ROS 공식사이트의 소개 자료

 

ROS Framework Overview

개략적으로 ROS를 통해 어떤 것을 할 수 있고, 어떤 인터페이스를 제공하는지 가볍게 이해하기 좋다.
Video preview
 

기본 요소

  • DDS(Data Distribution Service)
    • 보안 설정을 적용해 노드 간 커뮤니케이션을 가능하게 함
  • Nodes
    • ROS framework가 적용된 실행되는 코드.
  • Bag Files
    • publish 된 데이터를 저장하고 불러와 시뮬레이션 할 수 있음.
 

노드 간 통신 방법

  • PubSub
    • 노드 간 커뮤니케이션 방식으로 토픽 별로 노드들은 PubSub을 통해 이벤트를 주고 받음.
  • Services
    • Request/Response 방식의 점대점 결합 커뮤니케이션.
    • 하나의 노드가 Request를 전송하면 다른 노드가 Response를 반환
    • 예시) survey 노드가 카메라 노드에 45도 회전을 요청 → 카메라 노드는 45도 회전 후 이미지를 반환(response)
  • Actions
    • 하나의 노드가 Goal을 설정하면 다른 노드가 그 Goal을 달성하기 위해 액션을 수행하고 피드백을 전송.
    • 예시) 한 노드가 특정 위도/경도로 이동한 뒤 사진을 찍어 보내라고 로봇의 컨트롤러 노드에 Goal을 전송.
      • Feedback: 컨트롤러 노드는 Goal을 실행하면서 주기적으로 클라이언트 노드에 진행상황을 전송 (ex 목표까지 10m 남음… 등)
      • Result: 목표지점에 도달하면 사진을 찍고 클라이언트 노드에 전달
 

특징

  • 개발한 코드는 package로 번들링해 배포 가능
  • 크로스 플랫폼 지원 (윈도우, 리눅스 등)