ROS2 예제 실행
이전 글에서 ROS2 Humble을 설치해 보았다.
2024.09.30 - [ROS/ROS2] - [ROS2] 001 : ROS2 Humble 설치 (Ubuntu 22.04)
[ROS2] 001 : ROS2 Humble 설치 (Ubuntu 22.04)
ROS2 Humble 설치ubuntu 22.04에 ROS2 Humble을 설치하는 법을 정리해 보았다. 우분투 설치 방법은 아래 포스트를 참고하면 된다. https://menggu1234.tistory.com/8 [Linux] 001 : Ubuntu 설치 18.04/20.04/22.04. Rufus & Ventoy
menggu1234.tistory.com
위 글에서도 예제를 실행하는 방법을 서술하였지만 이번에는 더 많은 예제 실행과 명령어를 정리해 보겠다.
1. demo_nodes_cpp Talker & Listener
talker 노드 실행
$ ros2 run demo_nodes_cpp talker
listener 노드 실행
$ ros2 run demo_nodes_cpp listener
실행결과는 아래와 같다.
talker 노드
$ ros2 run demo_nodes_cpp talker
[INFO] [1730175295.179854679] [talker]: Publishing: 'Hello World: 1'
[INFO] [1730175296.180159374] [talker]: Publishing: 'Hello World: 2'
[INFO] [1730175297.179821424] [talker]: Publishing: 'Hello World: 3'
[INFO] [1730175298.179951259] [talker]: Publishing: 'Hello World: 4'
[INFO] [1730175299.179773655] [talker]: Publishing: 'Hello World: 5'
---
listener 노드
$ ros2 run demo_nodes_cpp listener
[INFO] [1730175295.180659676] [listener]: I heard: [Hello World: 1]
[INFO] [1730175296.180690602] [listener]: I heard: [Hello World: 2]
[INFO] [1730175297.180416683] [listener]: I heard: [Hello World: 3]
[INFO] [1730175298.180561914] [listener]: I heard: [Hello World: 4]
[INFO] [1730175299.180069836] [listener]: I heard: [Hello World: 5]
---
demo_nodes_cpp 패키지는 기본적으로 /chatter라는 토픽을 publish / subscribe 하며 메시지 내용과 카운트를 출력해 준다.
/chatter 토픽의 정보는 아래와 같이 확인할 수 있다.
$ ros2 topic info /chatter
Type: std_msgs/msg/String
Publisher count: 1
Subscription count: 1
ros2 topic info 명령어를 통해 /chatter 토픽이 std_msgs/msg/String 타입을 가진 것과 퍼블리셔 1개(talker 노드), 서브스크라이버 1개(listener 노드)를 가지고 있는 것을 확인할 수 있다. ros2 topic과 같은 ros2의 명령어는 아래에서 추가로 설명하겠다.
rqt_graph를 통해서 노드와 토픽 등의 관계를 확인할 수 있다.
터미널에 아래와 같이 입력한다.
$ rqt_graph
talker, listener 노드를 실행했을 때 확인할 수 있는 rqt_graph의 모습이다.
rqt_graph는 ROS 환경에서 개발을 진행할 때 노드 간의 구조를 이해하는 데에 있어서 매우 유용하니 참고해 두면 좋다.
2. Turtlesim
ros2에는 turtlesim이라는 간단한 GUI 패키지 하나를 제공한다.
주로 ros 입문자에게 교육용으로 사용하기도 하며 다양한 ros의 기능을 지원하기 때문에 공부하기에 좋은 패키지이다.
우선 turtlesim 패키지를 설치해야 한다.
$ sudo apt update
$ sudo apt install ros-humble-turtlesim
설치를 완료하였다면 아래 명령어를 통해 turtlesim 패키지의 노드를 확인할 수 있다.
$ ros2 pkg executables turtlesim
turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node
위와 같이 turtlesim 패키지에는 4개의 노드(executable)이 있는 것을 확인할 수 있다.
각각의 노드의 역할은 다음과 같다.
- draw_square : 사각형 모양으로 turtle을 움직이게 하는 노드
- mimic : 유저가 지정한 토픽으로 동일 움직임의 turtlesim_node를 복수 개 실행
- turtle_teleop_key : turtle을 움직이게 하는 /turtleX/cmd_vel을 publish 하는 노드
- turtlesim_node : turtlesim 기본 노드, 2D 시뮬레이터 노드
turtlesim_node와 turtle_teleop_key를 사용하여 거북이를 움직여 볼 수 있다.
$ ros2 run turtlesim turtlesim_node
$ ros2 run turtleim turtle_teleop_key
키보드의 방향키를 사용해서 거북이를 조종할 수 있다.
노드와 토픽 간 관계를 rqt_graph를 통해 확인한 모습이다.
이제 두개의 노드에서 어떤 토픽, 서비스, 액션이 있는지 확인해 보자. 아래의 명령어를 통해 확인이 가능하다.
$ ros2 node list # 실행되고 있는 ROS2 노드 목록
$ ros2 topic list # 현재 publish/subscribe 되고 있는 토픽 목록
$ ros2 service list # 현재 존재하는 service 목록
$ ros2 action list # 현재 존재하는 action 목록
명령어를 각각 실행한 결과는 아래와 같다. (turtlesim_node, turtle_teleop_key 실행 상태)
$ ros2 node list
/teleop_turtle
/turtlesim
$ ros2 topic list
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
$ 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
$ 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
$ ros2 action list
/turtle1/rotate_absolute
명령어에 따른 실행 결과의 내용을 정리하면 다음과 같다.
ros2 node list
출력 결과 | 내용 |
/teleop_turtle | turtle_teleop_key 노드의 이름 |
/turtlesim | turtlesim_node 노드의 이름 |
ros2 topic list
출력 결과 | 내용 |
/parameter_events | ROS 2 노드에서 파라미터가 생성, 삭제, 업데이트될 때 이벤트를 알리는 토픽 |
/rosout | 노드의 로그 메시지를 출력하는 토픽 |
/turtleX/cmd_vel | turtleX에 해당하는 거북이의 선속도, 각속도 |
/turtleX/color_sensor | turtleX에 해당하는 거북이가 감지한 색 정보 |
/turtle1/pose | turtleX에 해당하는 거북이의 위치와 방향 |
ros2 service list
출력 결과 | 내용 |
/clear | turtlesim 시뮬레이터 상의 경로 지우기 |
/kill | 특정 turtle 삭제 |
/reset | turtlesim 시뮬레이터 초기화 |
/spawn | 새 turtle 지정 위치, 방향에 생성 |
/teleop_turtle/describe_parameters | teleop_turtle 노드 파라미터 설명 |
/teleop_turtle/get_parameter_types | teleop_turtle 노드 파라미터 타입 조회 |
/teleop_turtle/get_parameters | teleop_turtle 노드 특정 파라미터 값 조회 |
/teleop_turtle/list_parameters | teleop_turtle 노드 모든 파라미터 목록 조회 |
/teleop_turtle/set_parameters | teleop_turtle 노드 파라미터 값 설정 |
/teleop_turtle/set_parameters_atomically | teleop_turtle 노드 파라미터 값 설정 (한 번에 적용) |
/turtleX/set_pen | turtleX의 펜 색상, 두께 등을 설정 |
/turtleX/teleport_absolute | turtleX를 절대 좌표로 이동 |
/turtleX/teleport_relative | turtleX를 상대 좌표로 이동 |
/turtlesim/describe_parameters | turtlesim 노드의 파라미터 설명 |
/turtlesim/get_parameter_types | turtlesim 노드의 파라미터 타입 조회 |
/turtlesim/get_parameters | turtlesim 노드의 특정 파라미터 값 조회 |
/turtlesim/list_parameters | turtlesim 노드의 모든 파라미터 목록 조회 |
/turtlesim/set_parameters | turtlesim 노드의 파라미터 값 설정 |
/turtlesim/set_parameters_atomically | turtlesim 노드의 파라미터 값 설정 (한 번에 적용) |
ros2 action list
출력 결과 | 내용 |
/turtleX/rotate_absolute | turtleX를 지정된 절대 각도로 회전 |
'ROS > ROS2' 카테고리의 다른 글
[ROS2] 005 : ROS2 C++ 패키지, 노드 작성 가이드 (1) | 2024.10.29 |
---|---|
[ROS2] 004 : ROS2 노드(Node)와 데이터 (0) | 2024.10.29 |
[ROS2] 003 : ROS2 명령어 정리 (0) | 2024.10.29 |
[ROS2] image_recognition 프로젝트 001 - usb_camera 패키지 (3) | 2024.10.10 |
[ROS2] 001 : ROS2 Humble 설치 (Ubuntu 22.04) (2) | 2024.09.30 |