노드

평범한컴공생·2022년 8월 1일
0

[ROS2]

목록 보기
5/19
post-thumbnail

배경

1. ROS 2에서의 그래프

ROS에서의 그래프는 데이터를 한 번에 처리하는 과정 속에서의 요소들의 네트워크이다.

매핑과 시각화한 모든 실행 파일과 연결 관계를 포함한다.

2. ROS 2에서의 노드

ROS에서의 각각의 노드들은 모듈의 용도를 담당해야 한다. 각 노드들은 topics, services, actions, parameters를 통해 통신할 수 있다. 큰 규모의 로봇은 매우 많은 노드들로 이루어져 있다. ROS 2에서의 단일 실행 파일(Python, C++ 등) 하나 이상의 노드를 포함할 수 있다.

작업

1. ros2 run

ros2 run 명령어를 통해 패키지 내의 실행 파일을 실행할 수 있다.

ros2 run <package_name> <executable_name>

ros2 run 을 통해 turtlesim를 실행해보자.

ros2 run turtlesim turtlesim_node

package_nameturtlesim, executable_nameturtlesim_node임을 알 수 있다.

2. ros2 node list

ros2 node list 명령어는 현재 실행 중인 노드들의 이름을 보여준다. 노드들의 상호작용과 노드를 추적할 때 유용하다.

새 터미널을 열고 명령을 수행하자.

ros2 node list
/turtlesim

노드의 이름이 /turtlesim인 것을 알 수 있다.

또 다른 터미널을 열고 teleop 노드를 실행해 보자.

ros2 run turtlesim turtle_teleop_key

같은 방법으로 이름까지 확인하자.

ros2 node list
/turtlesim
/teleop_turtle

2.1 재매핑

재매핑을 사용하면 node name, topic names, service names 등 기본 노드의 속성을 사용자 값으로 재할당할 수 있다. /turtlesim 노드의 이름을 재할당 해보자.

ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle

다른 turtlesim 창이 새롭게 생성되었다. ros2 node list 명령어를 통해 노드의 이름을 확인해 보자.

/turtlesim
/teleop_turtle
/my_turtle

3. ros2 node info

노드의 이름을 통해 해당 노드의 자세한 정보를 알 수 있다.

ros2 node info <node_name>
ros2 node info /my_turtle

ros2 node info는 해당 노드와 상호작용 하고있는 subscribers, publishers, services, actions(ROS Graph Connection)를 반환한다.

/my_turtle
  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
    /my_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters
    /my_turtle/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
    /my_turtle/get_parameters: rcl_interfaces/srv/GetParameters
    /my_turtle/list_parameters: rcl_interfaces/srv/ListParameters
    /my_turtle/set_parameters: rcl_interfaces/srv/SetParameters
    /my_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
    /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
  Service Clients:

  Action Servers:
    /turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
  Action Clients:

/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

참고

ROS 2 Documentation: Foxy

profile
학부 연구생(220627~)

0개의 댓글