본문으로 바로가기

ROS2 Humble에서 Turtlesim 설치 및 실행하기

category 강좌/ROS2 2026. 5. 3. 22:59
728x90
728x90

ROS2를 처음 학습할 때 가장 먼저 다뤄볼 만한 예제 패키지가 turtlesim입니다. turtlesim은 거북이 모양의 시뮬레이터를 실행하여 ROS2의 노드, 토픽, 서비스, 액션 개념을 실습할 수 있게 해주는 기본 예제 패키지입니다.

ROS2의 구조를 이해하려면 단순히 명령어를 외우는 것보다, 하나의 노드가 어떻게 실행되고 ROS2 환경이 어떻게 터미널에 적용되는지를 먼저 이해하는 것이 중요합니다.

 

ROS를 처음 설치하고 turtlesim_node를 실행하면 파란 배경 위를 움직이는 거북이 하나가 나타난다. 겉보기에는 단순한 2D 프로그램이지만, 이 안에는 ROS의 핵심 구조가 그대로 들어 있다. 사용자는 키보드 입력이나 명령어를 통해 거북이를 움직이면서 자연스럽게 ROS의 통신 구조를 체험하게 된다.

거북이의 위치는 토픽으로 퍼블리시되고, 이동 명령은 또 다른 토픽으로 전달된다. 특정 기능은 서비스 호출로 실행되고, 반복적 작업이나 복잡한 제어는 액션으로 확장된다. 이 하나의 프로그램 안에서 ROS의 거의 모든 기본 개념이 실제로 “동작하는 형태”로 연결된다.

  

 

1. turtlesim이 만들어진 배경

turtlesim은 단순히 예제로 만든 프로그램이 아니라, ROS를 처음 접하는 사람을 위해 의도적으로 설계된 학습 도구입니다. 2008년, Morgan Quigley가 ROS 프로젝트를 시작하면서 튜토리얼의 필요성이 생겼고, 2009년에 Josh Faust가 이를 구체적인 형태로 구현하면서 turtlesim이 처음 등장했습니다.

초기 목적은 명확했습니다.
“로봇이 없어도 ROS를 이해할 수 있게 하자.”

당시 ROS는 실제 하드웨어 기반 개발이 중심이었기 때문에 입문 장벽이 높았습니다. turtlesim은 이 문제를 해결하기 위해 만들어진, 말 그대로 가장 작은 ROS 실습 환경이었습니다.

 

 

2. ROS1에서 ROS2까지, turtlesim의 변화

 

ROS1 시절 turtlesim은 거의 모든 튜토리얼의 출발점이었습니다. 특히 roscore → turtlesim_node → teleop 흐름은 ROS 입문 과정의 표준이었습니다.

대표 배포판은

  • Kinetic
  • Melodic
  • Noetic (마지막 LTS)

이 있습니다.

이 시기 turtlesim은 다음 역할을 수행했습니다:

  • 퍼블리셔/서브스크라이버 개념 학습
  • 서비스 호출 구조 이해
  • rqt_graph로 통신 구조 시각화

 

 

ROS2로 넘어오면서 turtlesim도 구조적으로 진화했습니다.
단순한 포팅이 아니라 ROS2의 핵심 철학을 반영하도록 개선되었습니다.

대표 배포판은

  • Foxy (LTS)
  • Humble (LTS)
  • Iron
  • Jazzy (2024 LTS, 2026 기준 핵심)
  • Kilted Kaiju

이 있습니다. ROS2의 특징을 간략하게 정리하면 아래와 같습니다.

 

 

  • DDS 기반 통신 적용
  • QoS 설정 실습 가능
  • 노드 구조 개선
  • 멀티 노드 및 분산 환경 대응

 

특히 ROS2 turtlesim은 단순한 입문을 넘어서 통신 품질(QoS) 실험용 도구로도 활용됩니다.

 

 

 

3. Turtlesim 이란?

turtlesim은 ROS를 처음 배우는 사람을 위한 공식 입문용 시뮬레이션 패키지다.
간단한 2D 화면에서 거북이를 움직이며 ROS의 핵심 개념을 직접 확인할 수 있습니다.

turtlesim을 이용하여 

  • 노드(Node)
  • 토픽(Topic)
  • 서비스(Service)
  • 액션(Action)
  • 파라미터(Parameter)
  • CLI 및 rqt 도구 연동

등을 학습할 수 있습니다.

turtlesim은 “ROS 구조를 가장 빠르게 체감하는 실습 도구”입니다. 실제 로봇 없이도 ROS의 흐름을 이해할 수 있게 만든 최소 단위 플랫폼입니다.

 

 

단순해서 버려질 것 같지만, 반대로 그래서 계속 살아남았습니다. 이유는 아래와 같습니다.

  • 설치 즉시 실행 가능
  • 결과가 눈에 바로 보임 (시각 피드백)
  • ROS1 → ROS2까지 동일한 학습 구조 유지
  • 교육, 강의, 테스트에서 표준처럼 사용

현재 ROS1의 배포는 Noetic (2020, 마지막 ROS1 LTS)을 마지막으로 2025년 기준 공식 지원이 종료되었습니다.

 

 

 

ROS2는 Jazzy, Kilted(2026, 현재 주요 LTS)가 배포되었습니다.

 

 

 

 

아래 그림은 그동안 ROS에서 사용되 ㄴ다양한 거북이들입니다.

 

 

4. 왜 ‘거북이’인가 — 단순한 캐릭터가 아니다

 

ROS에서 거북이는 단순한 마스코트가 아니라 교육 철학의 상징입니다.

기원을 보면 1960~70년대로 거슬러 올라갑니다.

  • Seymour Papert
  • Marvin Minsky

이들은 교육용 프로그래밍 언어인 Logo를 만들었고, 여기서 등장한 것이 바로 “Turtle Graphics”입니다. 사용자는 거북이를 움직이며 선을 그리고, 이를 통해 프로그래밍 개념을 직관적으로 배울 수 있었습니다.

여기서 핵심 아이디어는

“코드를 눈으로 보이게 만들어라”

 

 

이 철학이 그대로 ROS에 그대로 반영되었습니다.

  • turtlesim → 화면에서 움직이며 학습
  • TurtleBot → 실제 로봇 확장
  • ROS 로고 → 거북이 등껍질 패턴

결국 turtlesim은 단순한 예제가 아니라 수십 년 이어진 교육 방식의 계승의 결과물입니다.

 

 

5. turtlesim과 TurtleBot의 관계

 

ROS 학습 구조는 단계적으로 이어집니다.

  1. turtlesim
    → 개념 이해 (2D, 단순)
  2. Gazebo / 시뮬레이터
    → 물리 환경 이해
  3. TurtleBot
    → 실제 로봇 적용

즉 turtlesim은 단순한 데모가 아니라 전체 로봇 개발 과정의 시작점이다.

 

 

 

6. Turtlesim 설치

ROS2 Humble을 desktop 버전으로 설치했다면 일반적으로 turtlesim 패키지는 함께 설치되어 있습니다. 하지만 설치되어 있지 않거나 실행이 되지 않는다면 다음 명령어로 설치할 수 있습니다.

 

sudo apt install ros-humble-turtlesim

 

 

여기서 패키지 이름은 다음 구조를 가집니다.

 

ros-<ROS2 배포판 이름>-<패키지 이름>

 

따라서 Humble 버전에서 turtlesim을 설치할 때는 다음과 같은 이름을 사용합니다.

 

/opt/ros/humble/

 

이 경로 안에는 ROS2 명령어와 패키지를 사용할 수 있도록 환경 변수를 설정해 주는 setup.bash 파일이 있습니다.

터미널에서 ROS2 명령어를 사용하려면 다음 명령을 먼저 실행해야 합니다.

 

source /opt/ros/humble/setup.bash

 

이 명령을 실행해야 ros2, rqt, rviz2 같은 ROS2 관련 명령어를 정상적으로 사용할 수 있습니다.

 

 

7. Turtlesim 노드 실행

ROS2에서 노드를 실행할 때는 다음 명령 형식을 사용합니다.

 

ros2 run <패키지 이름> <노드 이름>

 

turtlesim 패키지 안에 있는 turtlesim_node를 실행하려면 다음과 같이 입력합니다.

 

ros2 run turtlesim turtlesim_node

 

이 명령의 의미는 다음과 같습니다.

 

  • ros2 : ROS2 명령어를 실행하는 기본 명령
  • run  : 특정 패키지의 실행 파일 또는 노드를 실행
  • turtlesim : 실행할 노드가 들어 있는 패키지 이름
  • turtlesim_node : 실제로 실행할 노드 이름

즉, 위 명령은 “turtlesim 패키지 안에 있는 turtlesim_node라는 노드를 실행하라”는 뜻입니다.

 

 

 

 

위의 그림처럼 turtlesim_node가 실행되면서 새로운 창이 열기고 거북이 한 마리가 출력됩니다. 머리는 오른쪽을 행하고 있습니다.

 

터미널에는 다음과 비슷한 로그가 출력됩니다

 

[INFO] [turtlesim]: Starting turtlesim
[INFO] [turtlesim]: Spawning turtle [turtle1] at x=[...], y=[...], theta=[...]

 

이 상태가 되면 ROS2 노드 하나가 정상적으로 실행된 것입니다.

 

다른 터미널을 실행하여 아래의 명령어로 현재 실행 중인 노드를 확입합니다.

 

ros2 node list

 

 

위의 그림처럼 출력되면 정상적으로 실행된 것입니다. 여기서 /turtlesim은 현재 실행 중인 ROS2 노드의 이름입니다.

 

 

8. ROS2 노드란?

ROS2에서 노드는 실행 가능한 최소 단위입니다.

쉽게 말하면 하나의 기능을 담당하는 프로그램입니다.

예를 들어 드론 시스템이라면 다음과 같이 노드를 나눌 수 있습니다.

카메라 노드
GPS 노드
비행제어 노드
그리퍼 제어 노드
상태 모니터링 노드
 

 

각 노드는 서로 독립적으로 실행되며, 토픽, 서비스, 액션을 통해 데이터를 주고받습니다.

turtlesim_node는 거북이 시뮬레이터를 실행하는 하나의 ROS2 노드입니다.

 

 

9. 노드 정보 확인

실행 중인 노드의 상세 정보를 확인하려면 다음 명령을 사용합니다.

 

ros2 node info /turtlesim

 

 

 

 

출력 결과에는 다음 항목들이 나옵니다.

Subscribers
Publishers
Service Servers
Service Clients
Action Servers
Action Clients
 

 

각 항목의 의미는 다음과 같습니다.

 

a. Subscribers

노드가 구독하고 있는 토픽입니다.
즉, 외부에서 들어오는 데이터를 받는 통로입니다.

예시:

 

/turtle1/cmd_vel : geometry_msgs/msg/Twist

 

이 토픽은 거북이의 이동 명령을 받습니다.
cmd_vel은 velocity command, 즉 속도 명령입니다.

 

b. Publishers

노드가 발행하고 있는 토픽입니다.
즉, 노드가 외부로 내보내는 데이터입니다.

예시:

 

/turtle1/pose : turtlesim/msg/Pose
/turtle1/color_sensor : turtlesim/msg/Color
/rosout : rcl_interfaces/msg/Log

 

/turtle1/pose는 거북이의 현재 위치와 방향 정보를 제공합니다.

 

c. Service Servers

노드가 제공하는 서비스입니다.
서비스는 요청과 응답 구조입니다.

 

예시:

 

/clear
/reset
/spawn
/kill
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative

 

예를 들어 /clear는 화면을 지우는 서비스이고, /spawn은 새 거북이를 생성하는 서비스입니다.

 

d. Action Servers

노드가 제공하는 액션입니다.
액션은 시간이 오래 걸리는 작업을 처리할 때 사용합니다.

 

예시:

 

/turtle1/rotate_absolute : turtlesim/action/RotateAbsolute

 

 

이 액션은 거북이를 특정 각도로 회전시키는 기능입니다.

 

 

10. turtle_teleop_key 노드 실행

 

터미널에서 turtle_teleop_key 노드를 실행시키면 화살표키로 turtlesim_node 노드의 거북이를 움직일 수 있게 됩니다. 새로운 터미널에서 아래의 명령을 실행합니다.

 

ros2 run turtlesim turtle_teleop_key

 

 

 

 

11. rqt_graph 실행

 

터미널 창에서  ROS 2 GUI툴인 rqt_graph를 실행시키면 각 노드와 토픽, 액션이 표시됩니다. 이 툴을 통해 현재 개발 환경에서의 모든 노드와 토픽, 액션을 그래프 뷰로 확인할 수 있습니다. 새로운 터미널을 실행시켜 rqt_graph를 실행합니다.

 

rqt_graph

 

아래의 그림 9에서 동그라미는 노드이고, 네모는 토픽 또는 액션이며 화살표는 메시지의 방향을 의미합니다. 서비스는 필요할 대 출력되고 액션은 토픽과 유사한 Pub, Sub 통신 방식의 응용이기 때문에 표시됩니다.

 

 

위의 rqt_graph 윈도우에서 Nodes/Topics(all)을 선택하고 Refresh 버튼을 클릭하면 아래처럼 그래프가 출력됩니다.

 

 

turtlesim 노드나 teleop_turtle 노드를 클릭하면 관련된 토픽과 액션, 서비스가 표시됩니다.

 

728x90
728x90

'강좌 > ROS2' 카테고리의 다른 글

ROS2 Topic  (0) 2026.05.04
ROS2 Service  (0) 2026.05.04
ROS2 Run Commands 설정  (0) 2026.05.03
ROS2 Humble 개발 환경 설정  (0) 2026.05.03
Ubuntu 22.04에서 ROS2 설치  (0) 2026.05.03