[ROS] ROS 기초(2) 통신

happy_quokka·2023년 10월 1일
0

ROS

목록 보기
2/25

ROS에서의 통신

  • 통신 = 노드(node) 간 토픽(topic)의 발행 & 구독(publish & subscribe) 기반의 메시지 교환

  • ROS를 사용하면 서로 다른 기종 간에 메시지 교환 가능

  • 노드간 통신을 기반으로 전체 시스템을 구동

    • HW 부품, SW 모듈에 node가 하나씩 할당
    • node들은 master(node 간 통신을 도와준다, 전체에 1개)의 도움을 받아 서로 메시지를 주고 받는다
    • node는 OS의 도움을 받아 HW 장치들을 제어

  • 네트워크를 통한 원격 연동도 가능


ROS 노드간 통신 기본 과정

  1. 통신이 이루어지기 전에 통신을 원하는 node는 master에 의뢰
  2. 연결해야하는 node의 정보(주소)를 얻어오고 서로 접속 정보를 교환

  3. 통신환경 구축이 완료되면, node 간 통신은 master를 거치지 않고 직접 이루어진다


노드간 통신의 2가지 방식

topic 방식의 통신

  • 일방적이고 지속적인 메시지 전송
  • 1:1, 1:N, N:N 통신도 가능
  • 자율주행은 이 방법 사용

service 방식의 통신

  • server가 제공하는 service에 client가 요청을 보내고 응답을 받는 방식
  • 양방향 통신, 일회성 메시지 송수신

ROS 노드간 통신 시나리오

1. master(roscore) 실행

  • master의 ip 주소가 공개되어야 함

2. subscriber node 구동

  • 특정 topic에 발행되는 메시지를 수신하기를 master에 요청

3. publisher node 구동

  • 특정 topic 메시지를 발행하겠다는 의사를 master에 전달

4. node 정보 전달

  • master가 publisher 정보를 subscriber에게 전달

5. node 간 접속 요청

  • subscriber node가 publisher node에 TCPROS 접속 요청

6. node 간 접속 요청에 대한 응답

  • publisher node가 자신의 TCPROS URI(port 포함)을 전송하여 응답

7. TCPROS 접속

  • publisher node와 subscriber node 사이에 소켓(socket) 연결이 이루어짐

8. 메시지 전송

  • publisher node가 subscriber node에게 메시지(topic) 전송

9. 메시지 전송 반복

  • 접속이 한번 이루어진 뒤에는 별도의 절차 없이 지속적으로 메시지 송수신 (master의 역할이 사라지지만 아에 사라지는 것은 아니다!!)

0개의 댓글