1. Interface 란?

ROS의 node 간에 데이터를 주고 받을 때, topic / service / action 이 사용된다. 이 때, 사용되는 데이터의 형태를 ROS 2 interface 라고 한다.

ROS2에서는 기존의 msg, srv, action과 새롭게 추가된 IDL(interface definition language)가 있다.

각각 정수, 부동 소수점, boolean과 같은 단순 자료형을 기본으로 하며, 배열 구조도 사용이 가능하다.

2. Interface 의 내용

2-1. message interface (msg, 메시지 인터페이스)

2-2. service interface (srv, 서비스 인터페이스)

2-3. action interface (action, 액션 인터페이스)

3. ROS2 interface 신규 작성

ROS2 프로그래밍은 node 간의 메시지 통신을 위해 기본 interface(정수, 실수 등)를 담아둔 std_msgs/geometry_msgs/Twist.msg 등을 사용하는 것이 일반적이다.

But, 이러한 경우 유저가 원하는 인터페이스 형식과는 다를 수 있다. 즉, 원하는 형태의 데이터 구조로 통신하기 위해서는 직접 interface 를 작성해야 한다.

참고로 ROS2 interface는 사용하려는 package 내에 포함시켜도 되지만 경험적으로 interface로만 구성된 패키지를 별도로 사용하는 것이 dependency 면에서 관리하기 편하다.

interface package 만들기