새소식

로봇,ROS,SLAM/ROS2 기초 공부

[ROS2] ROS2 Interfac 알아보기

  • -

ROS2에서 노드 간에 주고받는 데이터의 구조를 정의

 

 

🚀 ROS 2 Interface 개요

ROS 2 Interface(인터페이스)는 ROS 2 노드 간의 데이터 교환을 정의하는 메시지 타입(Message Type)을 의미합니다.

ROS 2에서는 토픽(Topic), 서비스(Service), 액션(Action)을 통해 데이터를 주고받으며, 이러한 데이터의 형식을 정의하는 것이 Interface입니다.

 

Interface는 .msg, .srv, .action 확장자를 가진 텍스트 파일로 정의 

- 메시지 (msg): Topic을 통한 단방향 통신에 사용 

- 서비스 (srv): 요청-응답 모델의 양방향 통신에 사용 

- 액션 (action): 장기 실행 작업을 위한 비동기 양방향 통신에 사용 

 

🔹 ROS 2 Interface 종류

ROS 2에서 사용하는 인터페이스에는 3가지 종류가 있습니다.

인터페이스설명예제

📌 Message (메시지) 토픽(Topic)에서 사용 std_msgs/msg/String
📌 Service (서비스) 요청/응답 구조 example_interfaces/srv/AddTwoInts
📌 Action (액션) 장기 실행 작업 action_tutorials_interfaces/action/Fibonacci

 

 

 

🟢 1. 메시지(Message) - Topic에서 사용

토픽(Topic)은 데이터를 계속 송수신하는 구조입니다.
토픽을 통해 데이터를 보내려면 **메시지 타입(Message Type)**을 정의해야 합니다.

📌 예제: std_msgs/msg/String

string data
 

👉 단순히 문자열 데이터를 전송하는 메시지 형식입니다.

 

📌 예제: geometry_msgs/msg/Twist

 
geometry_msgs/Vector3 linear
geometry_msgs/Vector3 angular
 

👉 로봇의 선속도(linear)와 각속도(angular)를 표현하는 메시지 형식입니다.

 


🟡 2. 서비스(Service) - 요청(Request) & 응답(Response)

서비스(Service)는 요청(Request)과 응답(Response) 구조로 작동하는 인터페이스입니다.
즉, 클라이언트(Client)가 요청을 보내면 서버(Server)가 응답을 반환하는 구조입니다.

📌 예제: example_interfaces/srv/AddTwoInts

 
int64 a
int64 b
---
int64 sum
 
  • 요청(Request): int64 a, int64 b → 두 개의 정수를 입력
  • 응답(Response): int64 sum → 두 수의 합을 반환

🔴 3. 액션(Action) - 장기 실행 작업

액션(Action)은 오랜 시간이 걸리는 작업을 수행할 때 사용되는 인터페이스입니다.
예를 들어, 로봇이 특정 위치까지 이동해야 하는 경우 진행 상황(Feedback)을 주면서 결과를 반환해야 합니다.

📌 예제: action_tutorials_interfaces/action/Fibonacci

 
int32 order
---
int32[] sequence
---
int32[] sequence
 
  • 목표(Goal): int32 order (계산할 피보나치 수열의 길이)
  • 피드백(Feedback): int32[] sequence (현재까지 계산된 수열)
  • 결과(Result): int32[] sequence (최종 계산된 수열)

 

ROS 2 Interface 확인 방법

✅ 1. 사용 가능한 인터페이스 목록 확인

 
ros2 interface list
 

👉 현재 ROS 2에 설치된 모든 인터페이스 목록을 출력합니다.

✅ 2. 특정 인터페이스 상세 보기

 
ros2 interface show std_msgs/msg/String
 

👉 std_msgs/msg/String의 데이터 구조를 확인합니다.

 
string data

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.