본문 바로가기

로보틱스/ROS

ROS2 Node 와 Topic 기본 개념

728x90
반응형

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 2로 시작하는 로봇 프로그래밍 - YES24

이 책은 ROS 공식 플랫폼인 TurtleBot3의 개발자이자 10여 년간 ROS 기반 프로젝트를 진행한 로보틱스 엔지니어인 필자들이 실무에서 얻은 경험과 커뮤니티 활동을 바탕으로 작성한 ROS 로봇 프로그래

www.yes24.com

 

반응형