wn42
코딩이랑 이것저것
wn42
전체 방문자
오늘
어제
  • 분류 전체보기 (113)
    • 프로그래머스 (23)
      • LV1 (11)
      • LV2 (1)
      • LV3 (3)
      • 연습 (8)
    • 딥러닝 공부 (0)
      • 머신러닝&딥러닝 이론 (0)
    • 임베디드 (17)
      • Adventure Design (1)
      • 센서기반모바일로봇 (5)
      • ROS (9)
      • Google Coral (2)
    • C++ (38)
      • C++ 기초 (34)
      • 자료구조 및 알고리즘 (4)
    • Python (14)
      • 기본 파이썬 문법 (6)
      • Python 기초 (8)
    • 빅데이터 (9)
      • 빅데이터 첫걸음 시작하기(국비지원) (5)
      • 빅데이터 공부 (4)
    • 알고리즘 공부 (2)
      • 기본 알고리즘 (2)
    • 전자공학 (10)
      • 반도체 공정 (3)
      • 무선데이터통신 (7)
      • 반도체공학 (0)
    • C# (0)
      • C# 기본 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 상속
  • 데이터분석
  • 빅데이터
  • 클래스
  • ROS
  • 조건문
  • 정렬
  • Python
  • numpy
  • 딥러닝
  • 데이터분석 인강
  • Queue
  • 내일배움카드
  • 파이썬
  • 인스턴스
  • K디지털크레딧
  • 빅데이터 첫걸음 시작하기
  • google coral
  • 프로그래머스
  • 큐
  • 노드
  • 소멸자
  • c++
  • 반복문
  • 바이트디그리
  • 스택
  • 변수
  • 패스트캠퍼스
  • 스택/큐
  • stl

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
wn42

코딩이랑 이것저것

ROS 중요 컨셉
임베디드/ROS

ROS 중요 컨셉

2022. 3. 12. 17:58

ROS 용어

Node

  • 최소 단위의 실행 가능한 프로세서
  • 프로그램은 한 번에 짜는 것이 아니라 여러 개의 노드가 합쳐진 것임(카메라 노드, 라이다 노드 등)
  • 각 노드는 메시지 통신으로 데이터를 주고 받는다.

Package

  • 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것
  • 패키지의 묶음을 메타 패키지라 하여 따로 분리한다.

Message

  • 메시지를 통해 노드 간의 데이터를 주고 받게 된다.
  • 메시지는 integer, floating point, boolean과 같은 변수 형태

 

Topic

  • 단방향이고 연속적으로 이어지는 통신 형태
  • 일방적으로 데이터를 보내는 상황에 사용된다. 예를 들어 거리 센서 등에서 보낼 때 토픽을 쓴다.
  • 목적에 따라서 1:N, N:1, N:N 통신이 가능하다.
  • 가장 많이 쓰인다.

Publisher

  • 토픽 메시지를 전달하는 노드

Subscriber

  • 토픽 메시지를 받는 노드

 

Service

  • 토픽과 달리 양방향으로 이루어지는 통신 형태이다.
  • 클라이언트가 서비스를 요청하고 서버가 서비스 응답을 한다.
  • 클라이언트가 로봇에게 움직여달라고 요청, 서버가 로봇을 움직이게 하고 클라이언트에게 완료되었다고 말해줌.
  • 연속적으로 통신이 이어지는 토픽과 달리 결과가 나오면 통신이 끊긴다.
  • 토픽보다 사용 빈도는 적다.

 

Action

  • 중간마다 중간 결과인 액션 피드백을 전달하는 통신 형태.
  • 많이 쓰이지 않는다.

 

메시지 통신

마스터

  • roscore 명령어에 해당
  • 노드 정보들을 관리한다. 데이터에 관여하는 것은 아니고, 노드들의 통신을 연결해주는 역할을 한다.

 

노드

  • 토픽을 마스터에 전달한다. rosrun (패키지) (노드 이름) 명령어에 해당한다.
  • Subscriber : 노드의 이름, 토픽의 이름, 메시지 형태(카메라, 모터 등), IP 번호와 PORT 번호를 전달
  • Publisher : 노드의 이름, 토픽의 이름, 메시지 형태, IP 번호와 PORT 번호 전달
  • 둘의 정보가 같을 경우 마스터가 Publisher의 정보를 Subscriber 노드에 전달한다.
  • 이후 Subscriber 노드가 Publisher에게 TCPROS 접속을 요청한다. 퍼블리셔는 이에 응답한다.
  • 연결이 되면 Publisher에서 Subscriber로 메시지를 전송하는 토픽 또는 서비스 통신이 이루어진다.
  • 연결이 된 후부터는 마스터는 필요없다.

 

최종 메시지 통신 형태

 

메시지

메시지는 노드 간에 데이터를 주고받을 때 사용하는 데이터의 형태

  • 토픽, 서비스, 액션은 모두 메시지를 사용
  • 단순 자료형 - 정수, 부동 소수점, 불린
  • 메시지 안에 메시지를 품고 있는 간단한 데이터 구조 - geometry_msgs/PoseStamped 등
  • 메시지들이 나열된 배열과 같은 구조 - float32[ ] ranges, sensor_msgs/LaserScan 등

메시지 안에 메시지를 품고 있는 간단한 데이터 구조

 

네임(Names)

  • 노드, 메시지(토픽, 서비스, 액션, 파라미터)를 가지는 고유의 식별자
  • ROS는 그래프(graph)라는 추상 데이터 형태(abstract data type) 지원
  • 글로벌(global): 문자 없이 네임을 바로 쓰거나 네임 앞에 슬래쉬(/)를 붙임
  • 프라이빗(private): 네임 앞에 틸트(~)를 붙임

 

 

출처

  • ROS 강의 Chapter4(표윤석) : https://www.youtube.com/watch?v=skqzz_xQQXg&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw&index=4 
  • ROSwiki : http://wiki.ros.org/
    '임베디드/ROS' 카테고리의 다른 글
    • ROS 프로그래밍 실습(이동, 회전)
    • ROS 프로그래밍
    • ROS 도구
    • ROS 명령어
    wn42
    wn42
    코딩이랑 이것저것 하는 블로그

    티스토리툴바