이번에는 ROS 2에서 제공하는 다양한 도구에 대해 정리했다.
ROS 2에서는 터미널에서 명령어를 입력하여 시스템을 확인하고 제어할 수 있는 CLI(Command-Line Interface) 도구뿐만 아니라, GUI 기반의 RQt, 3차원 시각화 도구인 RViz, 3차원 시뮬레이터인 Gazebo 등을 사용할 수 있다.
각 도구는 목적에 따라 사용하는 방법이 다르며, ROS 2 시스템을 개발하고 테스트할 때 서로 보완적인 역할을 한다.
ROS 2에서는 노드, 토픽, 서비스, 액션, 파라미터 등의 상태를 확인하고 시스템을 실행하거나 분석하기 위한 다양한 도구를 제공한다.
대표적으로 다음과 같은 도구가 있다.
ROS 2 Tools
│
├── ROS 2 CLI
│ └── 터미널 기반 명령어
│
├── RQt
│ └── GUI 기반 ROS 2 도구
│
├── RViz
│ └── 3차원 데이터 시각화
│
└── Gazebo
└── 3차원 로봇 시뮬레이션
즉, CLI는 ROS 2 시스템을 직접 확인하고 제어하는 데 사용하고, RQt와 RViz는 GUI를 이용한 분석 및 시각화에 활용하며, Gazebo는 실제 로봇 없이 시뮬레이션 환경에서 로봇을 테스트하는 데 활용할 수 있다.
ROS 2 CLI는 터미널에서 명령어를 입력하여 ROS 2 시스템을 확인하고 제어할 수 있는 도구이다.
ros2 명령어 뒤에 원하는 기능을 입력하는 형태로 사용한다.
ros2 <command> <verb> [options]
예를 들어 실행 중인 노드를 확인하려면 다음과 같이 입력한다.
ros2 node list
현재 실행 중인 노드의 정보를 확인하려면:
ros2 node info /turtlesim
과 같이 사용할 수 있다.
ROS 2 CLI는 별도의 GUI 프로그램 없이 터미널에서 ROS 시스템의 상태를 빠르게 확인할 수 있다는 장점이 있다.
ROS 2 CLI는 크게 명령어(Command)와 세부 기능(Verb)으로 구성된다.
예를 들어 ros2 topic은 Topic과 관련된 명령을 제공하고, 그 뒤에 list, echo, info, pub 등의 세부 명령을 사용할 수 있다.
ros2
├── node
├── topic
├── service
├── action
├── param
├── interface
├── pkg
└── bag
각 명령어마다 사용할 수 있는 세부 기능이 다르다.
예를 들어 Topic에서는 다음과 같은 명령을 사용할 수 있다.
ros2 topic list
ros2 topic info
ros2 topic type
ros2 topic echo
ros2 topic pub
Action의 경우:
ros2 action list
ros2 action info
ros2 action send_goal
Parameter는:
ros2 param list
ros2 param get
ros2 param set
ros2 param dump
ros2 param load
과 같이 사용할 수 있다.
ROS 2 CLI를 이용하면 패키지에 포함된 실행 파일을 직접 실행할 수 있다.
대표적인 명령어는 다음과 같다.
ros2 run <package_name> <executable_name>
예를 들어 TurtleSim을 실행할 때는 다음과 같이 입력한다.
ros2 run turtlesim turtlesim_node
키보드로 거북이를 조작하는 노드는:
ros2 run turtlesim turtle_teleop_key
와 같이 실행할 수 있다.
패키지에서 제공하는 실행 파일을 확인할 때는 다음 명령어를 사용할 수 있다.
ros2 pkg executables turtlesim
실습에서는 다음과 같이 TurtleSim에서 제공하는 실행 파일을 확인했다.
turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node
ROS 2 CLI에는 현재 실행 중인 시스템의 정보를 확인하기 위한 다양한 명령어가 있다.
현재 실행 중인 Node 목록:
ros2 node list
특정 Node의 상세 정보:
ros2 node info /turtlesim
현재 Topic 목록:
ros2 topic list
특정 Topic의 타입:
ros2 topic type /turtle1/cmd_vel
Topic의 상세 정보:
ros2 topic info /turtle1/cmd_vel
Topic으로 전달되는 메시지 확인:
ros2 topic echo /turtle1/cmd_vel
현재 Service 목록:
ros2 service list
Service의 타입 확인:
ros2 service type /spawn
현재 Action 목록:
ros2 action list
Action의 Client와 Server 정보:
ros2 action info /turtle1/rotate_absolute
현재 Node의 Parameter 목록:
ros2 param list /turtlesim
특정 Parameter 값 확인:
ros2 param get /turtlesim background_r
이처럼 ROS 2 CLI를 사용하면 현재 ROS 시스템에서 어떤 Node와 Topic, Service, Action, Parameter가 사용되고 있는지 확인할 수 있다.
ROS 2에는 시스템을 확인하거나 관리하기 위한 다양한 보조 명령어도 제공된다.
예를 들어 인터페이스 정보를 확인할 때는 다음 명령어를 사용할 수 있다.
ros2 interface list
특정 패키지에서 제공하는 인터페이스를 확인하려면:
ros2 interface package turtlesim
특정 메시지나 Action의 구조를 확인할 수도 있다.
ros2 interface show geometry_msgs/msg/Twist
ros2 interface show turtlesim/action/RotateAbsolute
또한 패키지의 실행 파일을 확인하거나 패키지 정보를 확인할 수도 있다.
ros2 pkg executables turtlesim
ros2 pkg xml turtlesim
ROS 2 CLI에서 제공되는 전체 기능은 다음 명령어로 확인할 수 있다.
ros2 extensions
실습에서는 ros2 extensions를 통해 node, topic, service, action, param, interface, pkg, bag 등의 다양한 CLI 기능을 확인했다.
RQt는 ROS 2 시스템을 GUI 환경에서 확인하고 분석할 수 있도록 제공되는 도구이다.
터미널에서 명령어를 직접 입력하는 CLI와 달리 다양한 기능을 GUI 형태의 Plugin으로 사용할 수 있다.
대표적으로 Node와 Topic의 연결 관계를 확인하는 데 사용할 수 있다.
rqt_graph
이를 이용하면 다음과 같이 Node와 Topic 사이의 연결 관계를 시각적으로 확인할 수 있다.
/teleop_turtle
│
│ /turtle1/cmd_vel
↓
/turtlesim
RQt는 ROS 시스템의 통신 구조를 시각적으로 확인하거나 Plugin을 이용해 시스템을 분석할 때 활용할 수 있다.
RViz는 ROS에서 전달되는 데이터를 3차원 공간에서 시각적으로 표현하기 위한 도구이다.
특히 실제 로봇이나 센서에서 발생하는 데이터를 확인하고 로봇의 상태를 시각적으로 분석하는 데 활용할 수 있다.
대표적으로 다음과 같은 데이터를 시각화할 수 있다.
Robot Model
Laser Scan
Camera Image
Point Cloud
Map
TF
Path
Pose
RViz를 사용하면 터미널에서 숫자로만 확인하던 데이터를 3차원 공간에서 직접 확인할 수 있다.
예를 들어 LiDAR의 Laser Scan 데이터를 RViz에서 표시하면 주변 장애물이나 환경 정보를 시각적으로 확인할 수 있다.
따라서 RViz는 ROS 데이터의 3차원 시각화에 초점을 둔 도구라고 할 수 있다.
Gazebo는 실제 로봇이나 센서 없이도 가상의 환경에서 로봇 시스템을 테스트할 수 있도록 하는 3차원 시뮬레이션 도구이다.
가상의 공간에 로봇과 센서, 장애물 등을 구성하고 실제 로봇에서 발생할 수 있는 움직임이나 센서 데이터를 시뮬레이션할 수 있다.
Gazebo
│
├── Robot
├── Sensor
├── Environment
├── Obstacle
└── Physics Simulation
예를 들어 모바일 로봇을 Gazebo 환경에 배치한 후 로봇을 이동시키거나 LiDAR, Camera 등의 센서를 통해 데이터를 생성할 수 있다.
이를 통해 실제 로봇을 준비하지 않고도 ROS 2 기반의 로봇 제어 및 센서 처리 프로그램을 테스트할 수 있다.
ROS 2에서 사용하는 주요 도구를 비교하면 다음과 같다.
| 도구 | 형태 | 주요 목적 |
|---|---|---|
| ROS 2 CLI | 터미널 | ROS 시스템 명령 실행 및 정보 확인 |
| RQt | GUI | ROS 시스템 분석 및 시각화 |
| RViz | 3D GUI | ROS 데이터의 3차원 시각화 |
| Gazebo | 3D 시뮬레이터 | 가상 환경에서 로봇 및 센서 시뮬레이션 |
각 도구의 역할을 간단하게 정리하면 다음과 같다.
CLI
→ 명령어를 이용한 ROS 시스템 제어 및 정보 확인
RQt
→ GUI를 이용한 ROS 시스템 분석
RViz
→ ROS 데이터를 3차원으로 시각화
Gazebo
→ 가상 환경에서 로봇을 시뮬레이션
이번에는 ROS 2에서 사용할 수 있는 다양한 도구에 대해 정리했다.
ROS 2 CLI를 이용하면 터미널에서 Node, Topic, Service, Action, Parameter 등의 정보를 확인하고 직접 명령을 실행할 수 있다.
RQt는 GUI 기반으로 ROS 시스템을 분석할 수 있으며, RViz는 ROS에서 발생하는 데이터를 3차원으로 시각화할 수 있다.
Gazebo는 실제 로봇이 없는 환경에서도 가상의 로봇과 센서를 구성하여 ROS 2 시스템을 테스트할 수 있는 3차원 시뮬레이션 도구이다.
전체적으로 정리하면 다음과 같다.
ROS 2 Tools
CLI
└─ 명령어 기반 시스템 제어 및 정보 확인
RQt
└─ GUI 기반 시스템 분석
RViz
└─ 3차원 데이터 시각화
Gazebo
└─ 3차원 로봇 시뮬레이션
ROS 2에서는 하나의 도구만 사용하는 것이 아니라, 목적에 따라 CLI, RQt, RViz, Gazebo를 함께 활용하면서 시스템을 개발하고 분석할 수 있다.