[ROS2] 노드와 데이터 통신

HY K·2024년 9월 9일
0

ROS2

목록 보기
3/18

이번 포스팅에서는 ROS2의 노드와, 노드의 데이터 통신 그리고 노드 관련 명령어에 대해서 알아볼 것이다.


노드와 메시지 통신

💡 노드
노드(node)는 최소 단위의 실행 가능한 프로세스를 가리키는 용어로, ROS에서 최소한의 실행 단위로 기능하게 된다. 각 노드의 역할을 목적에 맞추어 세분화 시켜 각 노드들 간의 의존성을 줄이고, 독립성을 높여 재사용성을 강화하게 된다.

💡 메시지 통신
ROS 시스템에서는 수많은 노드들이 작동하므로, 노드 사이의 데이터 입출력이 피룡하다. 여기서 주고 받는 데이터를 메시지(Message)라고 하며, 메시지를 주고받은 통신 방식을 메시지 통신(Message Communication)이라고 한다.

💡 메시지
정수형, 실수형, 문자열과 같은 데이터 형태이며, 그 외에 간단한 자료구조 혹은 배열을 사용할 수 있다. 메시지를 주고 받는 방식에 따라서 토픽(topic), 서비스(service), 액션(action)으로 구분이 가능하다.


노드 관련 명령어

실행 명령어

$ ros2 run <pkg_name> <node_name>
// 하나의 노드를 실행 가능함

$ ros2 run <pkg_name> <node_name> __node:=<new_name>
// 이런 식이면 동일한 노드를 서로 다른 이름으로 실행이 가능함
// 혹은 namespace를 변경하면 된다.
$ ros2 launch <pkg_name> <launch_file_name>
// 복수의 노드를 다양한 설정을 통해서 실행 가능

이 후 노드 사이의 관계는

$ rqt_graph

명령어를 통해서 시각화 가능하다.

노드 목록 명령어

$ ros2 node list

현재 ROS2 환경에서 실행 중인 모든 노드가 출력된다.

노드의 정보 출력 명령어

$ ros2 node info <node_name>

노드명을 통해서 노드의 퍼블리셔, 서브스크라이버, 서비스, 액션, 파라미터 정보를 출력할 수 있는 명령어이다.

profile
로봇, 드론, SLAM, 제어 공학 초보

0개의 댓글