상세 컨텐츠

본문 제목

ROS TurtleSim으로 쉽게 배우는 토픽 개념 이해하기

카테고리 없음

by baknoah 2025. 3. 13. 08:54

본문

ROS TurtleSim으로 토픽 개념부터 손쉽게 연습하기

초보자들이 로봇 운영 체제(ROS)를 배우는 과정은 새로운 개념과 툴을 이해하는 데 있어 어려움을 겪을 수 있습니다. 그중에서도 TurtleSim은 ROS의 기초를 다지기에 매우 유용한 도구입니다. 이번 블로그 글에서는 ROS TurtleSim을 사용하여 토픽 개념을 손쉽게 연습하는 방법에 대해 설명하겠습니다.

ROS란 무엇인가?

로봇 운영 체제(ROS)는 로봇 소프트웨어 개발을 위한 프레임워크입니다. ROS는 다양한 프로그래밍 언어와 플랫폼을 지원하며, 로봇 시스템의 통신을 원활히 할 수 있는 다양한 도구와 라이브러리를 제공합니다. ROS를 통해 개발자는 자율주행, 로봇 비전, 복잡한 알고리즘을 손쉽게 구현할 수 있습니다.

ROS TurtleSim 소개

TurtleSim은 ROS에서 제공하는 가상 로봇 시뮬레이터입니다. 간단한 명령을 통해 가상 거북이(Turtle)를 움직일 수 있으며, ROS의 다양한 기능을 쉽게 이해할 수 있도록 도와줍니다. TurtleSim을 사용하면 토픽, 서비스, 액션 등의 기본 개념을 실제 코드 작성 없이 익힐 수 있습니다.

토픽의 기본 개념

토픽(Topic)은 ROS의 핵심 개념 중 하나로, 데이터 통신의 채널입니다. 노드(node)라고 하는 ROS의 기본 실행 단위는 토픽을 통해 서로 메시지를 송수신합니다. 이로 인해 노드 간의 통신이 효율적으로 이루어질 수 있습니다.

토픽의 작동 방식

토픽의 작동 방식은 다음과 같습니다:

  • 노드가 토픽을 생성합니다.
  • 출력 노드가 토픽에 메시지를 퍼블리시(publish)합니다.
  • 구독(subscribe)하는 노드가 해당 토픽을 통해 메시지를 수신합니다.

TurtleSim 환경 설정하기

TurtleSim을 사용하기 위해서는 먼저 ROS 환경을 설정해야 합니다. 아래의 단계를 따라 진행해 보세요.

ROS 설치하기

먼저, ROS를 시스템에 설치해야 합니다. ROS의 설치 방법은 운영 체제에 따라 다르지만, 일반적으로 우분투(Ubuntu)를 사용하는 것이 보편적입니다. ROS를 설치하기 위해 터미널에서 다음 명령어를 입력합니다:

  • ROS Noetic 예시:
  • sudo apt install ros-noetic-desktop-full

TurtleSim 패키지 설치하기

다음으로 TurtleSim 패키지를 설치합니다. 터미널에서 다음 명령어를 입력하세요:

  • sudo apt install ros-noetic-turtlesim

TurtleSim 실행하기

설치가 완료되면 TurtleSim을 실행할 수 있습니다. 다음 명령어를 사용하여 TurtleSim을 시작합니다:

  • roscore을 입력하여 ROS 마스터를 실행합니다.
  • 새로운 터미널을 열고 rosrun turtlesim turtlesim_node을 입력합니다.

토픽 사용해보기

TurtleSim이 정상적으로 실행되면 이제 토픽을 사용하여 거북이를 움직여 보겠습니다. 이번에는 거북이를 이동시키기 위한 기본 방향 명령어를 퍼블리시 할 것입니다.

토픽 퍼블리시

거북이를 이동시키기 위해 geometry_msgs/Twist 메시지 타입을 사용합니다. 이 메시지는 선형 및 각 속도를 제어하는 데 사용됩니다. 다음과 같은 단계를 통해 퍼블리시할 수 있습니다:

  • 새로운 터미널을 열고 아래 명령어를 입력하여 퍼블리셔 노드를 만듭니다:
  • rosrun turtlesim turtlesim_node
  • rostopic pub -r 10 /turtle1/cmdvel geometrymsgs/Twist -p "linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}"

토픽 구독

거북이가 잘 이동하는지 확인하기 위해 구독 노드를 만들 수도 있습니다. 터미널에서 다음 명령어를 입력하여 현재 토픽 상태를 확인해 보세요:

  • rostopic echo /turtle1/cmd_vel

위 명령어를 통해 퍼블리시된 메시지의 내용을 실시간으로 확인할 수 있습니다. 거북이가 성공적으로 이동하고 있는지 확인해 보세요.

다양한 메시지 유형 다루기

토픽을 활용할 때 다양한 메시지 유형을 다루는 것이 중요합니다. TurtleSim에서 사용할 수 있는 몇 가지 주요 메시지 유형에 대해 소개하겠습니다.

geometry_msgs/Twist

앞서 설명한 대로, 이 메시지 유형은 거북이의 선형 및 각 속도를 제어하는 데 사용됩니다. 이 메시지를 변형하여 다른 속도로 거북이를 움직일 수 있습니다.

std_msgs/String

이 메시지 유형은 문자열 데이터를 퍼블리시하는 데 사용됩니다. 예를 들어, 거북이의 상태를 나타내는 간단한 메시지를 사용할 수 있습니다.

std_msgs/Float32

실수형 데이터를 전달하는 데 사용되는 메시지입니다. 예를 들어, 거북이의 속도를 표현할 때 사용할 수 있습니다.

예제 프로그램 작성하기

이제 TurtleSim과 토픽의 기본 개념을 익혔으니, 간단한 예제 프로그램을 작성해 보겠습니다. 이 프로그램은 거북이를 일정한 속도로 이동시키고, 그 상태를 출력합니다.

Python 스크립트 작성

아래와 같은 Python 스크립트를 작성합니다:

#!/usr/bin/env python
import rospy
from geometry_msgs.msg import Twist

rospy.initnode('turtlecontroller')
pub = rospy.Publisher('/turtle1/cmdvel', Twist, queuesize=10)
rate = rospy.Rate(10) 

msg = Twist()
msg.linear.x = 2.0
msg.angular.z = 0.0

while not rospy.is_shutdown():
    pub.publish(msg)
    rate.sleep()

위 코드는 터틀을 일정하게 이동시키는 아주 간단한 예제입니다. 이 스크립트를 실행하면 거북이가 계속해서 정의된 속도로 이동하게 됩니다.

스크립트 실행 방법

스크립트를 작성한 후, 다음과 같이 실행합니다:

  • 스크립트에 실행 권한을 부여합니다: chmod +x turtle_controller.py
  • ROS 마스터를 시작합니다: roscore
  • TurtleSim을 실행합니다: rosrun turtlesim turtlesim_node
  • 스크립트를 실행합니다: rosrun yourpackage turtlecontroller.py

여기서 your_package는 스크립트가 위치한 패키지의 이름입니다.

결론

ROS TurtleSim을 활용한 토픽 개념 연습은 로봇 소프트웨어 개발의 기초를 다지는 데 큰 도움이 됩니다. TurtleSim은 간단하지만 효과적인 방식으로 ROS의 핵심 개념을 체험할 수 있는 플랫폼입니다. 초보자로서 TurtleSim을 통해 다양한 메시지와 토픽의 사용법을 익히고, 이를 바탕으로 로봇 개발에 대한 이해도를 높일 수 있습니다.

추가적으로, TurtleSim을 통해 다양한 실험을 시도하고, 복잡한 알고리즘을 구현해 보세요. ROS의 다양한 기능을 탐색하는 즐거움과 함께 발전하는 자신을 발견할 수 있을 것입니다.