Loading the catalog…
Loading the catalog…
ROS 2에서는 노드 간 데이터를 주고받기 위해 Topic, Service, Action 등의 통신 방식을 사용한다. 이때 통신 과정에서 어떤 형태의 데이터를 주고받을 것인지 정의하는 것이 ROS Interface(인터페이스)다. ROS 2에서는 주로 다음과 같은 인터페이스를 사용한다. msg : Topic에서 사용 srv : Service에서 사용 action : Action에서 사용 1. ROS 인터페이스란? ROS 인터페이스는 노드 간 통신에 사용되는 데이터의 구조와 형태를 정의한 것이다. 정수(integer), 부동 소수점(float), Boolean과 같은 기본 자료형을 사용할 수 있으며, 하나의 메시지 안에 다른 메시지를 포함하거나 배열 형태의 데이터도 사용할 수 있다. 예를 들어 geometry_msgs/msg/Twist 에서는 Vector3 형태의 데이터를 linear , angular 라는 이름으로 포함하고 있다. Vector3 linear Vector3 angular 그리고 Vector3 는 다시 다음과 같이 x , y , z 값을 가진다. float64 x float64 y float64 z 즉, 인터페이스는 단순한 하나의 데이터뿐만 아니라 여러 데이터를 하나의 구조로 묶어서 전달할 수도 있다. 2. Message Interface (msg) msg 인터페이스는 Topic에서 사용하는 데이터 형식이다. 파일 확장자는 다음과 같다. *.msg 우리가 앞서 TurtleSim 실습에서 사용했던 /turtle1/cmd_vel Topic이 대표적인 예이다. /turtle1/cmd_vel 이 Topic은 다음과 같은 인터페이스를 사용한다. geometry_msgs/msg/Twist Twist 는 다음과 같이 구성되어 있다. Vector3 linear Vector3 angular linear 는 선속도, angular 는 각속도에 대한 정보를 나타내며 각각 x , y , z 값을 포함한다. 따라서 앞에서 실습했던 다음 명령어에서도 Twist 인터페이스를 사용한 것이다. ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist ... 3. Service Interface (srv) srv 인터페이스는 Service에서 사용하는 데이터 형식이다. 파일 확장자는 다음과 같다. *.srv Service는 Topic과 달리 요청(Request)을 보내고 응답(Response)을 받는 구조로 동작한다. 예를 들어 TurtleSim의 /spawn 서비스에서는 다음과 같은 Spawn.srv 인터페이스를 사용한다. float32 x float32 y float32 theta string name --- string name 여기서 --- 는 Request와 Response를 구분하는 구분자이다. Request ├─ x ├─ y ├─ theta └─ name ↓ Service ↓ Response └─ name 인터페이스의 실제 구조는 다음 명령어로 확인할 수 있다. ros2 interface show turtlesim/srv/Spawn.srv 4. Action Interface (action) action 인터페이스는 Action에서 사용하는 데이터 형식이다. 파일 확장자는 다음과 같다. *.action Action은 하나의 작업을 요청하고 결과를 기다리는 것뿐만 아니라, 작업이 수행되는 동안 Feedback을 전달할 수 있는 구조를 가진다. 기본적인 구조는 다음과 같다. Goal --- Result --- Feedback 즉, Goal: 수행할 작업의 목표 Result: 작업이 완료된 후의 결과 Feedback: 작업 수행 중 전달되는 진행 상황 으로 구성된다. 5. msg / srv / action 비교 구분 Topic Service Action 인터페이스 msg srv action 확장자 .msg .srv .action 데이터 구조 Data Request / Response Goal / Result / Feedback 특징 지속적인 데이터 전달 요청에 대한 응답 장시간 작업 및 진행 상황 전달 정리하면 msg , srv , action 은 각각 Topic, Service, Action에서 사용되는 데이터 구조를 정의한다. 특히 --- 구분자를 기준으로 보면 차이를 쉽게 이해할 수 있다. msg Data srv Request --- Response action Goal --- Result --- Feedback 6. 인터페이스 확인 명령어 ROS 2에서는 ros2 interface show 명령어를 이용하여 특정 인터페이스의 구조를 확인할 수 있다. 예를 들어: ros2 interface show geometry_msgs/msg/Twist 또는: ros2 interface show turtlesim/srv/Spawn 와 같이 사용할 수 있다. 이를 통해 실제로 어떤 자료형과 필드가 인터페이스에 정의되어 있는지 확인할 수 있다. 마무리 ROS 2의 인터페이스는 노드 간 통신에서 주고받는 데이터의 구조를 정의하는 역할을 한다. Topic ↓ msg ↓ Data Service ↓ srv ↓ Request → Response Action ↓ action ↓ Goal → Result + Feedback 앞서 실습한 TurtleSim의 /turtle1/cmd_vel 역시 geometry_msgs/msg/Twist 라는 인터페이스를 사용한다. 따라서 ROS 2에서 Topic, Service, Action을 이해하기 위해서는 각각 어떤 인터페이스를 사용하고, 그 인터페이스가 어떤 데이터 구조를 가지고 있는지 함께 이해하는 것이 중요하다.
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
Ubuntu ROS 실습(12). ROS 2에서는 노드 간 데이터를 주고받기 위해 Topic, Service, Action 등의 통신 방식을 사용한다. 이때 통신 과정에서 어떤 형태의 데이터를 주고받을 것인지 정의하는 것이 ROS Interface(인터페이스)다. ROS 2에서는 주로 다음과 같은 인터페이스를 사용한다. msg : Topic에서 사용 srv : Service에서 사용 action : Action에서 사용 1. ROS 인터페이스란? ROS 인터페이스는 노드 간 통신에 사용되는 데이터의 구조와 형태를 정의한 것이다. 정수(integer), 부동 소수점(float), Boolean과 같은 기본 자료형을 사용할 수 있으며, 하나의 메시지 안에 다른 메시지를 포함하거나 배열 형태의 데이터도 사용할…
Open source