ROS2 개발서적 완독 챌린지 Week3
2023년 4월 부터 12주 동안, 판교오로카 회원님들과 "ROS2로 시작하는 로봇 프로그램"(표윤석, 임태훈 지음) 을 완독하는 챌린지 입니다. 매주 4개의 Chapter 를 읽고 책의 내용을 블로그에 정리합니다.
서적링크
http://www.yes24.com/Product/Goods/102949767
9장 패키지 설치와 노드 실행
ROS2의 패키지와 노드에 대해 알아보고, turtlesim 예제를 실행합니다.
turtlesim 이란?
turtlesim은 ROS tutorials에 있는 대표적인 예제 패키지입니다. turtlesim 패키지에는 다음과 같은 노드가 있습니다.
$ ros2 pkg executables turtlesim
turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node
turtlesim의 코드는 아래의 GitHub를 참고하십시오.
https://github.com/ros/ros_tutorials/tree/humble/turtlesim
turtlesim 을 실행해보자!
tutlesim_node 노드와 tutle_teleop_key를 각각 명령줄 환경에서 실행합니다.
$ ros2 run turtlesim turtlesim_node
$ ros2 run turtlesim turtlesim_node
turtlesim과 teleop_turtle이 실행된 상태에서 node list 를 보면 아래와 같습니다.
$ ros2 node list
/teleop_turtle
/turtlesim
topic list 명령어로 교환 가능한 topic 목록을 볼 수 있습니다.
$ ros2 topic list
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
service list 명령어로 사용 가능한 service 목록을 볼 수 있습니다.
$ ros2 service list
/clear
/kill
/reset
/spawn
/teleop_turtle/describe_parameters
/teleop_turtle/get_parameter_types
/teleop_turtle/get_parameters
/teleop_turtle/list_parameters
/teleop_turtle/set_parameters
/teleop_turtle/set_parameters_atomically
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/describe_parameters
/turtlesim/get_parameter_types
/turtlesim/get_parameters
/turtlesim/list_parameters
/turtlesim/set_parameters
/turtlesim/set_parameters_atomically
action list 명령어로 action의 목록을 볼 수 있습니다.
$ ros2 action list
/turtle1/rotate_absolute
rqt_graph 를 통한 노드와 토픽 시각화
ROS2 GUI 도구인 rqt_graph를 사용하면 노드와 토픽을 시각화할 수 있습니다.
10장 ROS2 노드와 데이터통신
노드와 데이터통신
- 노드는 ROS2 의 최소실행단위로서, 하나의 ROS2 프로그램을 의미합니다. (운영체제의 프로세스의 개념)
- 노드는 메시지를 통해서 서로 데이터를 주고 받습니다.
- 메시지의 형태는 Integer, Float, Bool, String 등 다양하게 정의할 수 있습니다.
- 메시지의 교환방법은 토픽, 서비스, 액션, 파라미터로 나눌 수 있습니다.
노드의 실행
명령줄 환경에서 ros2 run 명령 또는 launch 명령으로 노드를 실행할 수 있습니다.
$ ros2 run turtlesim turtlesim_node
$ ros2 run turtlesim turtlesim_teleop_key
실행중인 노드의 목록보기
명령줄 환경에서 ros2 node list 명령어를 통해 실행중인 노드의 목록을 볼 수 있습니다.
노드의 정보보기
명령줄 환경에서 node info 명령어를 통해 노드의 정보를 확인할 수 있습니다.
$ 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:
11장 토픽
토픽은 비동기식 단방향 메시지 송수신 방식입니다. 메시지를 송신하는 Publisher와 메시지를 수신하는 Subscriber 간의 통신입니다.
$ 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
- turtlesim 노드는 Subscribers 로써, Twist 형식의 cmd_vel을 수신합니다.
'로보틱스 > ROS' 카테고리의 다른 글
ROS2 완독 챌린지 Week9 (2부 Ch.12~18) (0) | 2023.06.18 |
---|---|
ROS2 완독 챌린지 Week5 (Ch.17~20) (0) | 2023.05.21 |
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 |
ROS2 Node 와 Topic 기본 개념 (0) | 2021.10.12 |
ROS Classic 에서 ROS2 로 넘어가야 하는 이유 II (0) | 2021.09.14 |