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}"