ROS 2

ros란?

정지홍 2024. 12. 31. 12:06

ROS( robot operating system )

  • 로봇 소프트웨어 개발을 위한 오픈 소스 프레임워크이다.
    로봇 개발의 복잡성을 줄이고, 다양한 hw와 sw 간의 상호 운용성을 지원.
    모듈식 설계로 개발 효율성을 높이는 것을 목표로 함.
  • ros의 구성 요소
    • node : ros에서 작업의 기반 단위이며, 실행 가능한 프로그램이다.
    • master : node간의 통신을 관리하는 중앙 관리 시스템이다.
    • topic : node간의 data를 교환하는 message chanel이다.
    • service : 요청-응답 방식의 통신을 제공하는 기능
    • action : 비동기 작업을 처리
    • message : node간 교환되는 데이터 형식으로, 표준 형식을 사용하거나 사용자가 형식을 정의할 수 있다.
    • package : ros에서 sw를 구성하는 기본단위이다. node, message정의 , service정의 등이 포함됨
    • bag : ros의 data 기록 및 재생을 위한 파일 형식이다.
  • 주요 특징
    • 모듈식 구조
      • ros는 여러개의 node로 구성되며, 각각의 node는 특정 작업을 수행함.
        • ex) 카메라 data 처리는 하나의 node , 로봇의 움직임 제어는 다른 node
    • 메시지 기반 통신
      • ros는 node간의 data교환을 위해서 publisher-subscriber모델을 사용함.
        publisher는 데이터를 보내는 노드, subscriber는 data를 받는 node이며, data는 topic을 통해 전송
    • 서비스와 액션
      • node간의 요청-응답 통신을 지원하는 service, 비동기 작업을 처리하는 action을 제공
    • hw의 추상화
      • 다양한 로봇 hw와 sensor를 추상화해서, 동일한 코드로 여러 로봇을 제어 가능.
  • 쓰는 이유
    • 개발 시간 단축
      • 기본적인 로봇 기능(경로 계획 , 맵핑 , 센서 데이터 처리)을 직접 구현할 필요 없이 바로 사용가능
    • 모듛화 및 재사용성
      • node기반의 모듈형 설계를 채택해서 각 기능을 독립적으로 개발할 수 있다.
        그래서 이를 특정 기능만 수정하거나해서 다른 프로젝트에서 재사용함이 가능
        • ex) 카메라 데이터를 처리하는 노드를 다른 프로젝트에서 동일하게 사용 가능
    • hw 추상화
      • ex) 다른 브랜드의 로봇팔을 써도 동일한 api로 제어가능
    • 표준화된 통신 시스템
      • ros는 node간 데이터를 주고받기 위해서 표준화된 통신 구조를 제공한다.
    • 시뮬레이션 지원
      • 실제 로봇 hw없이도 개발 및 테스트 가능