[ROS 프로그래밍] 1. ROS 기초

YH·2023년 8월 30일
0

1. ROS 기초

1) ROS (Robot Operating System)

  • 오픈소스 로봇 운영체제로 로봇 소프트웨어를 개발하는 데 필요한 소프트웨어의 집합체
  • 메타 운영체제(Meta OS), 미들웨어(Middleware)
  • 소프트웨어 모듈 + 라이브러리 집합 + 도구 집합

2) ROS 아키텍쳐

3) ROS 특징

  • 로봇 SW를 만들기 위한 코드 재사용이 용이한 환경제공
  • 대규모 실행 시스템 및 프로세스에도 적용 가능
  • 표준화된 통신 프로토콜을 따라는 이기종간의 메세지 교환이 가능하므로 Linux, Windows, Raspbian, RTOS, Android, iOS 등 다양한 OS 환경에서 통일된 방법으로 상호작용을 구현하는 것이 가능

4) ROS 제공 도구

  • RVIZ - 센서 데이터를 비롯한 주변환경 변화를 시각화 하는 도구
  • RQT - Qt 기반의 GUI 응용 개발 도구로 노드 연결 정보를 그래프로 표현하며, 사용자 상호작용(UI)를 갖춘 응용 개발에 이용
  • GAZEBO - 물리 엔진 기반의 3차원 시뮬레이터로 시뮬레이터 제작 및 모델링에 이용

5) ROS에서의 통신

  • 토픽의 publish & subscribe 기반의 메세지 교환
  • NODE - publish -> TOPIC - subscribe -> NODE
  • 하드웨어 부품 또는 소프트웨어 모듈에 노드가 하나씩 할당되어 노드간 통신을 기반으로 전체 시스템을 구동시킴
  • 서로 분리된 하드웨어 장치 안에 있는 노드들이 네트워크 연결을 통해 서로 통신하여 하나의 단일 시스템으로서 동작하는 것이 가능

6) ROS 용어

  • 마스터(Master) : 노드간 통신을 총괄 관리하며 'ROS Core'라고 부름
  • 노드(Node) : 토픽을 주고 받는 통신 주체로 실행가능한 최소의 단위의 프로세스
  • 토픽(Topic) : 주고받는 메시지
  • 발행자 노드(Publisher) : 토픽을 만들어 보내는 노드
  • 구독자 노드(Subscriber) : 토픽을 받는 노드
  • 패키지(Package) : 하나 이상의 노드와 노드실행을 위한 정보 등을 묶어놓은 것

7) ROS 노드간 통신 기본 과정

  • (1) 통신이 이루어지기 이전에 통신을 원한느 노드는 마스터에 의뢰하여 연결해야 하는 노드의 주소를 얻어오고, 서로 접속정보를 교환
  • (2) 통신환경이 구축이 완료되면 노드간 통신은 마스터를 거치지 않고 직접 이루어짐

8) ROS 노드간 통신

  • 토픽(Topic) 방식의 통신

    일방적이고 지속적인 메시지 전송
    1:1 뿐만 아니라 1:N 및 N:N 통신도 가능

  • 서비스(Service) 방식의 통신

    서버가 제공하는 서비스에 클라이언트가 요청을 보내고 응답을 받는 방식
    양방향 통신, 일회성 메시지 송수신

9) ROS 노드간 통신 시나리오

  • (1) 마스터(Roscore) 시동
    • 통신이 이루어지려면 Roscore가 실행되고 있어야 함
  • (2) 구독자(Subscriber) 노드 구동
    • 특정 토픽(Topic)에 발행되는 메시지를 수신하기를 요청
  • (3) 발행자(Publisher) 노드 구동
    • 특정 토픽(Topic) 메시지를 발행하겠다는 의사를 전달
  • (4) 노드 정보 전달
    • 마스터가 발행자 정보를 구독자에게 전달
  • (5) 노드간 접속 요청
    • 구독자 노드가 발행자 노드에 TCPROS 접속을 요청
  • (6) 노드간 접속 요청에 대한 응답
    • 발행자 노드가 자신의 TCPROS URI를 전송하여 응답
  • (7) TCPROS 접속
    • 발행자 노드와 구독자 노드 사이에 소켓 연결이 이루어짐
  • (8) 메시지 전송
    • 발행자 노드가 구독자 노드에게 메시지 전송
  • (9) 메시지 전송 반복
    • 접속이 한번 이루어진 뒤에는 별도 절차 없이 지속적으로 메세지 송수신
profile
Keep Recycling Your Dreams

0개의 댓글

관련 채용 정보