반응형
ROS2 Node 와 Topic 기본 개념 정리
ROS 노드(Node) 는 무엇인가?
- Node 는 필요한 연산을 실행하는 최소 프로세스이다. Node 는 Graph 로 결합되고, Streaming Topic, RPC 서비스 및 매개 변수 서버를 사용하여 서로 통신한다.
- 로봇 제어 시스템은 일반적으로 많은 Node 로 구성된다. (예를 들어) 하나의 Node1 은 레이저 거리 측정기를 제어하고, Node2 는 로봇의 휠 모터를 제어하고, 또 다른 하나의 Node3 은 로컬라이제이션을 수행하고, Node4 는 경로 계획을 수행하고, Node5 는 시스템의 시각화 를 담당할 수 있습니다.
- Node 들을 묶어서 Pacakge 를 만들 수 있다. 아래는 turtlesim package 를 검색하고 하위 Node 를 출력해본 결과 이다.
$ ros2 pkg list | grep tur
turtlesim
$ ros2 pkg executables turtlesim
turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node
$ ros2 node list
/teleop_turtle
/turtlesim
ROS 노드(Node) 정보
node info 명령을 통해 Node 정보를 자세히 볼 수 있다.
$ ros2 node info /teleop_turtle
/teleop_turtle
Subscribers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
Publishers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/turtle1/cmd_vel: geometry_msgs/msg/Twist
Service Servers:
/teleop_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters
/teleop_turtle/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/teleop_turtle/get_parameters: rcl_interfaces/srv/GetParameters
/teleop_turtle/list_parameters: rcl_interfaces/srv/ListParameters
/teleop_turtle/set_parameters: rcl_interfaces/srv/SetParameters
/teleop_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
Service Clients:
Action Servers:
Action Clients:
/turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
$ ros2 node info /turtlesim
/turtlesim
Subscribers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/turtle1/cmd_vel: geometry_msgs/msg/Twist
Publishers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/turtle1/color_sensor: turtlesim/msg/Color
/turtle1/pose: turtlesim/msg/Pose
Service Servers:
/clear: std_srvs/srv/Empty
/kill: turtlesim/srv/Kill
/reset: std_srvs/srv/Empty
/spawn: turtlesim/srv/Spawn
/turtle1/set_pen: turtlesim/srv/SetPen
/turtle1/teleport_absolute: turtlesim/srv/TeleportAbsolute
/turtle1/teleport_relative: turtlesim/srv/TeleportRelative
/turtlesim/describe_parameters: rcl_interfaces/srv/DescribeParameters
/turtlesim/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/turtlesim/get_parameters: rcl_interfaces/srv/GetParameters
/turtlesim/list_parameters: rcl_interfaces/srv/ListParameters
/turtlesim/set_parameters: rcl_interfaces/srv/SetParameters
/turtlesim/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
Service Clients:
Action Servers:
/turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
Action Clients:
ROS 토픽(Topic) 은 무엇인가?
- Node 간의 메시지를 주고 받는 통신의 하나의 방법이다.
- Topic 을 주는 쪽을 송신자 (퍼블리셔, Publisher), 받는 쪽을 수신자, 구독자 (서브스크라이버, Subscriber) 라고 한다.
- 1:1, 1:N, N:N 등, 다양한 네트워크를 구성할 수 있다.
$ ros2 topic list
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
참고서적
반응형
'로보틱스 > ROS' 카테고리의 다른 글
ROS2 완독 챌린지 Week2 (Ch.05~08) (1) | 2023.04.25 |
---|---|
ROS2 Humble Hawksbill 설치 (0) | 2023.04.18 |
ROS2 완독 챌린지 Week1 (Ch.01~04) (0) | 2023.04.14 |
ROS2 노드간 통신 인터페이스 (0) | 2021.10.25 |
ROS Classic 에서 ROS2 로 넘어가야 하는 이유 II (0) | 2021.09.14 |
ROS Classic 에서 ROS2 로 넘어가야 하는 이유 I (0) | 2021.09.14 |
Ubuntu 20.04 에서 ROS2 Foxy Fitzroy설치하기 (0) | 2021.09.11 |
로스백, Rosbag 을 이용한 메시지 로깅 및 재생 (0) | 2021.01.03 |