반응형
ROS2 노드 간의 통신을 위한 인터페이스
ROS2 통신 인터페이스
ROS 애플리케이션은 메시지, 서비스 및 액션의 세가지 형태의 노드간의 통신을 지원한다. 노드 간의 통신을 위해 사용되는 인터페이스에 대해서 정리한다. 인터페이스는 IDL (interface definition language) 형식으로 작성할 수 있다.
기존 ROS Classic 처럼 msg, srv 등의 포멧을 지원한다.
ROS2 메시지 인터페이스
ROS2 메시지 명세하는 방법
ROS 메시지의 필드를 설명하는 간단한 텍스트 파일의 형태로 작성한다.
fieldtype1 fieldname1
fieldtype2 fieldname2
fieldtype3 fieldname3
예를 들어 GPS 측위 data 는 다음과 같이 작성할 수 있다.
float64 latitude
float64 longitude
ros2 github 의 Path.msg 예제를 보면, 다음과 같이 (기존에 정의된) Message 형태를 재사용하여 정의할 수 있다.
# An array of poses that represents a Path for a robot to follow.
# Indicates the frame_id of the path.
std_msgs/Header header
# Array of poses to follow.
geometry_msgs/PoseStamped[] poses
경계가 있는 배열의 형태로 메세지를 Message 정의할 수도 있다.
int32[] unbounded_integer_array
int32[5] five_integers_array
int32[<=5] up_to_five_integers_array
string string_of_unbounded_size
string<=10 up_to_ten_characters_string
string[<=5] up_to_five_unbounded_strings
string<=10[] unbounded_array_of_string_up_to_ten_characters each
string<=10[<=5] up_to_five_strings_up_to_ten_characters_each
ROS2 메시지 정의 규칙
- 영문 소문자, 숫자를 사용할 수 있으며 알파벳 문자로 시작되어야 한다.
- 밑줄로 끝나면 안되며, 밑줄이 연속으로 있어도 안된다.
- 초기값을 지정할 수 있다. (ex. float64 latitude 37.532600)
- 문자열은 ' 또는 " 로 정의해야한다.
- 상수는 대문자로 표기하며, 등호 기호 (=)로 사용해서 정의한다.
ROS2 서비스 인터페이스
ROS2 서비스 명세하는 방법
ROS 서비스의 요청과 응답을 분리해서 작성한다. 예를 들어, 다음은 문자열을 받아 문자열을 반환하는 서비스의 매우 간단한 예이다.
string str
---
string str
ROS2 서비스 정의 규칙
- --- 를 사용하여 요청과 응답을 분리한다.
- 서비스 내부에 다른 서비스를 포함할 수 없다.
참고자료
https://docs.ros.org/en/foxy/Concepts/About-ROS-Interfaces.html#
반응형
'로보틱스 > ROS' 카테고리의 다른 글
ROS2 완독 챌린지 Week3 (Ch.09~12) (0) | 2023.05.13 |
---|---|
ROS2 완독 챌린지 Week2 (Ch.05~08) (1) | 2023.04.25 |
ROS2 Humble Hawksbill 설치 (0) | 2023.04.18 |
ROS2 완독 챌린지 Week1 (Ch.01~04) (0) | 2023.04.14 |
ROS2 Node 와 Topic 기본 개념 (0) | 2021.10.12 |
ROS Classic 에서 ROS2 로 넘어가야 하는 이유 II (0) | 2021.09.14 |
ROS Classic 에서 ROS2 로 넘어가야 하는 이유 I (0) | 2021.09.14 |
Ubuntu 20.04 에서 ROS2 Foxy Fitzroy설치하기 (0) | 2021.09.11 |