카테고리 없음

[ROS2] node, service, topic, action 명령어 정리

gyeongtiger 2025. 1. 9. 19:36

ROS2의 핵심 구성 요소인 노드, 서비스, 토픽, 액션에 대해 정리하고 관련 명령어를 정리해보겠습니다.

 

Node

노드란? ROS2에서 실행가능한 최소 단위로 데이터를 송수신하거나 특정 로직을 실행합니다. 

# 노드 실행
ros2 run <PKG_name> <node_name>

# 노드 리스트 확인
ros2 node list

# 노드 정보 확인
ros2 node info <node_name>

 

Service

서비스란? 노드 간에 동기적으로 데이터를 요청하고 응답받는 방식입니다. 클라이언트가 서버에 요청(request)을 하면 응답(response)하며 메세지를 주고 받습니다. 

# service list
ros2 service list

# service type 확인(파일명)
ros2 service type <service_name>

# service type 확인(terminal에 띄우기)
ros2 interface show <service_type>

# service 호출하기
ros2 service call <service_name> <service_type> "{key:value, key:value, ...}"

 

Topic

토픽이란? 노드 간에 데이터를 비동기적으로 송수신하기 위한 채널입니다. 메세지를 토픽으로 발행하면 모든 노드에서 메세지에 접근 가능합니다.

# topic 확인(-t를 붙이면 토픽의 타입도 함께 알려줌, -v를 붙이면 info도 알려주는데 humble 버전 부터 지원하는 것 같음)
ros2 topic list -t

# topic type 확인
ros2 topic type <topic_name>

# topic info 
ros2 topic info <topic_name>

# interface show
ros2 interface show <topic_type>

# topic 값 보기
ros2 topic echo <topic_name>

# 터미널에서 topic 한번만 발행하기
ros2 topic pub --once <topic_name> <topic_type> "{key: value, ...}"

# 터미널에서 topic Nhz로 주기적으로 발행하기
ros2 topic pub --rate <hz(int)> <topic_name> <topic_type> "{key: value, ...}"

 

Action

액션이란? 서비스와 토픽이 합쳐져있는 형태라고 생각하면 된다고 합니다.

# action list 확인 (-t를 붙이면 타입 확인 가능)
ros2 action list -t

ros2 interface show <action_type>

ros2 action send_goal <action_name> <action_type> "{key: value}"