Ubuntu ROS 실습(20)

zeusqoi·1일 전

개인공부

목록 보기
39/42

이번에는 ROS 2에서 제공하는 다양한 도구에 대해 정리했다.

ROS 2에서는 터미널에서 명령어를 입력하여 시스템을 확인하고 제어할 수 있는 CLI(Command-Line Interface) 도구뿐만 아니라, GUI 기반의 RQt, 3차원 시각화 도구인 RViz, 3차원 시뮬레이터인 Gazebo 등을 사용할 수 있다.

각 도구는 목적에 따라 사용하는 방법이 다르며, ROS 2 시스템을 개발하고 테스트할 때 서로 보완적인 역할을 한다.


1. 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는 실제 로봇 없이 시뮬레이션 환경에서 로봇을 테스트하는 데 활용할 수 있다.


2. ROS 2 도구: CLI 형태의 Command-Line Tools

ROS 2 CLI는 터미널에서 명령어를 입력하여 ROS 2 시스템을 확인하고 제어할 수 있는 도구이다.

ros2 명령어 뒤에 원하는 기능을 입력하는 형태로 사용한다.

ros2 <command> <verb> [options]

예를 들어 실행 중인 노드를 확인하려면 다음과 같이 입력한다.

ros2 node list

현재 실행 중인 노드의 정보를 확인하려면:

ros2 node info /turtlesim

과 같이 사용할 수 있다.

ROS 2 CLI는 별도의 GUI 프로그램 없이 터미널에서 ROS 시스템의 상태를 빠르게 확인할 수 있다는 장점이 있다.


3. ROS 2 CLI 사용법

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

과 같이 사용할 수 있다.


4. ROS 2 CLI 실행 명령어

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

5. ROS 2 CLI 정보 명령어

ROS 2 CLI에는 현재 실행 중인 시스템의 정보를 확인하기 위한 다양한 명령어가 있다.

Node

현재 실행 중인 Node 목록:

ros2 node list

특정 Node의 상세 정보:

ros2 node info /turtlesim

Topic

현재 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

현재 Service 목록:

ros2 service list

Service의 타입 확인:

ros2 service type /spawn

Action

현재 Action 목록:

ros2 action list

Action의 Client와 Server 정보:

ros2 action info /turtle1/rotate_absolute

Parameter

현재 Node의 Parameter 목록:

ros2 param list /turtlesim

특정 Parameter 값 확인:

ros2 param get /turtlesim background_r

이처럼 ROS 2 CLI를 사용하면 현재 ROS 시스템에서 어떤 Node와 Topic, Service, Action, Parameter가 사용되고 있는지 확인할 수 있다.


6. ROS 2 CLI 기능 보조 명령어

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 기능을 확인했다.


7. ROS 2 도구: GUI 기반 RQt

RQt는 ROS 2 시스템을 GUI 환경에서 확인하고 분석할 수 있도록 제공되는 도구이다.

터미널에서 명령어를 직접 입력하는 CLI와 달리 다양한 기능을 GUI 형태의 Plugin으로 사용할 수 있다.

대표적으로 Node와 Topic의 연결 관계를 확인하는 데 사용할 수 있다.

rqt_graph

이를 이용하면 다음과 같이 Node와 Topic 사이의 연결 관계를 시각적으로 확인할 수 있다.

/teleop_turtle
      │
      │ /turtle1/cmd_vel
      ↓
/turtlesim

RQt는 ROS 시스템의 통신 구조를 시각적으로 확인하거나 Plugin을 이용해 시스템을 분석할 때 활용할 수 있다.


8. ROS 2 도구: 3차원 시각화 툴 RViz

RViz는 ROS에서 전달되는 데이터를 3차원 공간에서 시각적으로 표현하기 위한 도구이다.

특히 실제 로봇이나 센서에서 발생하는 데이터를 확인하고 로봇의 상태를 시각적으로 분석하는 데 활용할 수 있다.

대표적으로 다음과 같은 데이터를 시각화할 수 있다.

Robot Model
Laser Scan
Camera Image
Point Cloud
Map
TF
Path
Pose

RViz를 사용하면 터미널에서 숫자로만 확인하던 데이터를 3차원 공간에서 직접 확인할 수 있다.

예를 들어 LiDAR의 Laser Scan 데이터를 RViz에서 표시하면 주변 장애물이나 환경 정보를 시각적으로 확인할 수 있다.

따라서 RViz는 ROS 데이터의 3차원 시각화에 초점을 둔 도구라고 할 수 있다.


9. ROS 2 도구: 3차원 시뮬레이터 Gazebo

Gazebo는 실제 로봇이나 센서 없이도 가상의 환경에서 로봇 시스템을 테스트할 수 있도록 하는 3차원 시뮬레이션 도구이다.

가상의 공간에 로봇과 센서, 장애물 등을 구성하고 실제 로봇에서 발생할 수 있는 움직임이나 센서 데이터를 시뮬레이션할 수 있다.

Gazebo
│
├── Robot
├── Sensor
├── Environment
├── Obstacle
└── Physics Simulation

예를 들어 모바일 로봇을 Gazebo 환경에 배치한 후 로봇을 이동시키거나 LiDAR, Camera 등의 센서를 통해 데이터를 생성할 수 있다.

이를 통해 실제 로봇을 준비하지 않고도 ROS 2 기반의 로봇 제어 및 센서 처리 프로그램을 테스트할 수 있다.


10. ROS 2 도구 비교

ROS 2에서 사용하는 주요 도구를 비교하면 다음과 같다.

도구형태주요 목적
ROS 2 CLI터미널ROS 시스템 명령 실행 및 정보 확인
RQtGUIROS 시스템 분석 및 시각화
RViz3D GUIROS 데이터의 3차원 시각화
Gazebo3D 시뮬레이터가상 환경에서 로봇 및 센서 시뮬레이션

각 도구의 역할을 간단하게 정리하면 다음과 같다.

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를 함께 활용하면서 시스템을 개발하고 분석할 수 있다.

0개의 댓글