ROS Study4 - ROS의 중요 컨셉

2023. 1. 19. 17:30공부방

로봇 운영체제에는 다양한 ROS용어가 존재합니다. 이번에는 ROS용어에 대해서 알아보겠습니다.

 

ROS 주요 3가지 용어

  • Node
    -> 최소 단위의 실행 가능한 프로세서를 가리키는 용어로써 하나의 실행 가능한 프로그램
    장점) Unitest를 기능별로 할 수 있습니다, open source로 활용 가능합니다.
    -> ROS는 최소한의 실행단위로 프로그램을 나누어 작업을 하고 각 노드는 메시지 통신으로 데이터를 주고받습니다.
    -> Node화 시키는게 중요!!
  • Package
    -> 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것.
    -> 패캐지의 묶음을 메타패키지라 하여 따로 분리
    -> Sensor는 Sensor끼리, Motor는 Motor끼리 나눠서 Node를 만드는게 유용합니다.
  • Message
    -> 메시지를 통해 노드간의 데이터를 주고받습니다.
    -> 메시지는 integer, floating, point, boolean과 같은 변수 형태입니다.
    -> 메시지 안에 메시지를 품는 간단한 데이터 구조 및 메시지들의 배열과 같은 구조도 사용 가능합니다.

 

메시지 통신 방법 : Topic, Service, Action

  • Topic
    -> 단방향, 연속성을 가지고 있는 메시지 통신 방법, 일반적으로 데이터를 보내는 경우에 많이 사용
    Publisher : 메시지를 보내는 노드     Subscriber : 메시지를 받는 노드
    -> 목적에 따라서 1:N, N:1, N:N통신도 가능합니다.

  • Service
    -> 양방향, 일회성(접속이 끊김. 따라서 다시 하려면 재접속을 하고 보내야 함)
    Service client : 요청, 명령
    Service server : 동작, 프로세싱, 요청이 끝난경우

  • Action
    -> Task가 복잡하거나 장시간 걸리거나 중간에 결과를 알고싶을 때, 많이 사용
    Action client : 요청, 명령
    Action server : 중간 중간 결과를 클라이언트에게 계속 전달

경험적 빈도수 : Topic - 80~90%, Service - 5~10%, Action - 1%

 

 

메시지 통신 개념 Catch!!

  • ROS에서 가장 기본이 되는 기술적 포인트 : 노드간의 메시지 통신

1. 마스터 구동 : XMLRPC
    -> $roscore를 통해서 마스터를 구성

2. Subscriber Node 구동
    -> $rosrun 패키지이름 노드이름

3. Publisher Node 구동
    -> $rosrun 패키지이름 노드이름

4. Publisher 정보 알림
    -> 마스터는 Subscriber Node에게 새로운 Publisher 정보를 알립니다.

5. Publisher Node에 접속 요청
    -> 마스터로부터 받은 Publisher 정보를 이용하여 TCPROS접소을 요청

6. Subscriber Node에 접속 응답
    -> 접속 응답에 해당되는 자신의 TCP URI 주소와 포트번호를 전송

7. TCP 접속
    -> TCPROS를 이용하여 Publisher Node와 직접 연결

8. 메시지 전송
    -> 발행자 노드는 Subscriber Node에게 메시지를 전송(Topic)

9. Service 요청 및 응답
    -> 1회에 한해 접속, 서비스 요청 및 서비스 응답이 수행되고 서로간의 접속을 끊습니다.
    -> 마스터가 노드의 정보를 관리해서 매칭시킨 후, 그와 관련된 정보를 넘겨주는 Topic과 동일한 flow를 가짐.

  • ex) turtlesim 패키지
    - roscore : roscore는 ROS를 사용할 때 제일 먼저 실행, Ros의 node 및 파라미터를 관리
    - rosrun : node 하나를 실행시킬 때 사용하는 명령어
    ex) rosrun [패키지] [node], rosrun turtlesim turtlesim_node : turtlesim패키지 안에 있는 turtlesim_node를 실행시켜라 라는 의미

 

Ros메시지

  • 메시지 통신에는 topic, service, action 3가지 방법이 존재합니다.

  • 메시지는 노드 간에 데이터를 주고 받을 때, 사용하는 데이터의 형태
    -> 토픽, 서비스, 액션은 모두 메시지를 사용
     http://wiki.ros.org/msg
 

msg - ROS Wiki

ROS uses a simplified messages description language for describing the data values (aka messages) that ROS nodes publish. This description makes it easy for ROS tools to automatically generate source code for the message type in several target languages. M

wiki.ros.org

     일반적으로 많이 사용하는 메시지를 모아둠 : http://wiki.ros.org/common_msgs

 

common_msgs - ROS Wiki

melodic noetic   Show EOL distros:  EOL distros:   electric fuerte groovy hydro indigo jade kinetic lunar electric: Documentation generated on March 01, 2013 at 03:01 PMfuerte: Documentation generated on December 28, 2013 at 04:51 PMgroovy: Documentat

wiki.ros.org

     -> 단순 자료형조 - ex) 정수, 소수점, boolean
        http://wiki.ros.org/std_msgs

 

std_msgs - ROS Wiki

melodic noetic   Show EOL distros:  EOL distros:   electric fuerte groovy hydro indigo jade kinetic lunar diamondback: Only showing information from the released package extracted on Unknown. No API documentation available. Please see this page for in

wiki.ros.org

    -> 메시지 안에 메시지를 품고 있는 간다한 데이터 구조 - ex) geometry_msgs/PoseStamped

        http://docs.ros.org/api/geometry_msgs/html/msg/PoseStamped.html

 

geometry_msgs/PoseStamped Documentation

File: geometry_msgs/PoseStamped.msg Raw Message Definition # A Pose with reference coordinate frame and timestamp Header header Pose pose Compact Message Definition

docs.ros.org

    

Name

  • 노드, 메시지가 가지는 고유의 식별자
  • ROS는 graph라는 추상 데이터 형태 지원
  • 글로벌(global)
    -> 문자 없이 네임을 바로 쓰거나 네임 앞에 슬레쉬를 붙임
  • 프리베이트(private)
    -> 네임 앞에 틸트를 붙임

 

좌표 변환(TF, transform)

  • 각 조인트들의 상대 좌표 변환
    -> 트리 형태로 조인트들간의 관계도를 표시함

 

클라이언트 라이브러리

  • 다양한 프로그래밍 언어 지원

'공부방' 카테고리의 다른 글

ROS Study6 - ROS 도구  (0) 2023.01.21
ROS Study5 - ROS 명령어  (0) 2023.01.19
ROS Study3 - 개발환경 구축  (0) 2023.01.14
ROS Study2 - 로봇 운영체제 ROS  (0) 2023.01.14
Ros Study1 - 로봇 소프트웨어 플랫폼  (0) 2023.01.05