본문 바로가기
로보틱스/ROS

ROS2 완독 챌린지 Week3 (Ch.09~12)

by makepluscode 2023. 5. 13.
반응형

ROS2 개발서적 완독 챌린지 Week3

2023년 4월 부터 12주 동안, 판교오로카 회원님들과 "ROS2로 시작하는 로봇 프로그램"(표윤석, 임태훈 지음) 을 완독하는 챌린지 입니다. 매주 4개의 Chapter 를 읽고 책의 내용을 블로그에 정리합니다.

서적링크

http://www.yes24.com/Product/Goods/102949767

 

ROS 2로 시작하는 로봇 프로그래밍 - YES24

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

www.yes24.com


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

 

GitHub - ros/ros_tutorials: Code used in tutorials found on ROS wiki

Code used in tutorials found on ROS wiki. Contribute to ros/ros_tutorials development by creating an account on GitHub.

github.com

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을 수신합니다.
반응형