ROS의 node 간에 데이터를 주고 받을 때, topic / service / action 이 사용된다. 이 때, 사용되는 데이터의 형태를 ROS 2 interface 라고 한다.
ROS2에서는 기존의 msg, srv, action과 새롭게 추가된 IDL(interface definition language)가 있다.
각각 정수, 부동 소수점, boolean과 같은 단순 자료형을 기본으로 하며, 배열 구조도 사용이 가능하다.
ROS2 프로그래밍은 node 간의 메시지 통신을 위해 기본 interface(정수, 실수 등)를 담아둔 std_msgs
나 /geometry_msgs/Twist.msg
등을 사용하는 것이 일반적이다.
But, 이러한 경우 유저가 원하는 인터페이스 형식과는 다를 수 있다. 즉, 원하는 형태의 데이터 구조로 통신하기 위해서는 직접 interface 를 작성해야 한다.
참고로 ROS2 interface는 사용하려는 package 내에 포함시켜도 되지만 경험적으로 interface로만 구성된 패키지를 별도로 사용하는 것이 dependency 면에서 관리하기 편하다.