[ROS 2]016: ROS2 인터페이스(interface)

maroo·2022년 8월 25일
0

ROS2

목록 보기
26/39

https://cafe.naver.com/openrt/24241

1. ROS2 인터페이스(interface)

인터페이스는 메세지다.(정확히는, 메세지의 형태)

ROS 2에서는 4가지 종류의 인터페이스를 사용한다.
ROS 1과 ROS 2에서 모두 사용하는 msg(토픽), srv(서비스), action(액션)
그리고 ROS 2에서 새롭게 추가된 IDL(Interface Definition Language, 아직은 무엇인지 잘 모르겠다).

이 인터페이스는 3가지 정도 형태가 있는데, 그 3가지 모두 자료형과 비슷한 개념이다.
(1)단순 자료형
-float, int 등
(2)메시지 안의 메시지: 데이터 구조
-[자료형 메시지명] 의 구조
-Vector3 linear 등
(3)[]만 추가한 배열
-float [] arr 등
-우리가 아는 배열의 구조와 같은 듯하다. 자료형 [] 배열명

2. 메시지 인터페이스(msg)

/turtle1/cmd/vel 토픽의 인터페이스를 살펴보자.

/turtle1/cmd/vel 토픽은 Twist형태고,
Twist형태는 Vector3형태고, Vector3 linear와 Vector3 angular로 나뉜다.
Vector3은 float64형태고, float64 x, float64 y, float64 z로 나뉜다.

이것이 메시지 안의 메시지인 데이터 구조 형태로,
합산하자면 총 6개의 개별 메시지가 있는 것이다.
(명칭이 정확한지는 모르겠으나 float64 linear.x, float64 linear.y, float64 linear.z, float64 angular.x, float64 angular.y, float64 angular.z 일 것이다.)

3. 서비스 인터페이스(srv)

서비스 인터페이스, srv는 서비스에 특정으로 사용되는 인터페이스이다. msg의 확장이라고 하고, msg와 크게 다르지 않다.

예시로 spawn서비스에 쓰인 srv를 알아보자.

어떤 인터페이스를 알아보고자 하면 터미널에서 ros2 interface show 인터페이스를 사용해 볼 수 있다.

$ ros2 interface show turtlesim/srv/Spawn.srv

spawn서비스에 쓰인 Spawn.srv인터페이스를 입력해 정보를 열람하면 다음과 같은 결과가 나온다.
float32 x와 같은 건 이전의 msg와 같다.
string name도 [자료형 메시지명]의 형태이다.

그런데 --- 이라는 구분자는 무엇일까?

서비스에서는 요청과 응답 srv를 구분하기 위해 ---를 사용한다.
위에 있는 x,y,theta, name은 요청을 보낼 때 사용하는 값,
아래 있는 name은 응답으로 보내는 값이다.

profile
할수이따 ~

0개의 댓글