Ubuntu ROS 실습(2)

zeusqoi·2026년 9월 17일

개인공부

목록 보기
21/42

지난 글에서는 ROS의 기본 개념과 ROS 2의 특징에 대해 정리했다.

이번에는 실제 Ubuntu 환경에서 ROS 2 Humble을 설치하고 기본적인 ROS 2 동작을 확인해보았다.

실습 환경은 다음과 같다.

  • Ubuntu 22.04.5 LTS
  • ROS 2 Humble
  • Shell: zsh
  • Workspace: ~/ros2_ws

1. Locale 설정

ROS 2 Humble 설치를 위해 먼저 시스템의 Locale을 확인했다.

locale

처음에는 ko_KR.UTF-8로 설정되어 있었다.

ROS 2 설치 과정에 맞춰 en_US.UTF-8 Locale을 생성하고 기본 Locale로 설정했다.

sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

현재 터미널에도 적용한다.

export LANG=en_US.UTF-8

다시 확인했을 때 LANG=en_US.UTF-8로 정상적으로 변경된 것을 확인했다.


2. ROS 2 저장소 설정

ROS 2 패키지를 설치하기 위해 필요한 저장소와 키를 설정했다.

먼저 software-properties-common을 설치하고 universe 저장소를 활성화했다.

sudo apt install software-properties-common
sudo add-apt-repository universe

이후 curl을 설치했다.

sudo apt update && sudo apt install curl -y

ROS 2 저장소의 GPG 키를 등록했다.

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

그리고 ROS 2 패키지 저장소를 등록했다.

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

저장소 설정 후 패키지를 업데이트하고 업그레이드했다.

sudo apt update && sudo apt upgrade

3. ROS 2 Humble 설치

이제 ROS 2 Humble Desktop을 설치했다.

sudo apt install ros-humble-desktop

추가로 ROS 개발 도구도 설치했다.

sudo apt install ros-dev-tools

설치 후 ROS 2 환경을 확인하기 위해 환경 설정을 적용했다.

처음에는 setup.bash를 사용했지만 현재 사용 중인 Shell이 zsh였기 때문에 setup.zsh를 사용했다.

source /opt/ros/humble/setup.zsh

이후 다음 명령어로 환경변수를 확인했다.

printenv | grep -i ROS

다음과 같이 정상적으로 확인되었다.

ROS_DISTRO=humble
ROS_PYTHON_VERSION=3
ROS_VERSION=2

즉, ROS 2 Humble 환경이 정상적으로 구성된 것을 확인할 수 있었다.


4. ROS 2 Workspace 생성

ROS 2에서 사용할 Workspace를 생성했다.

mkdir -p ~/ros2_ws/src

Workspace로 이동한다.

cd ~/ros2_ws

그리고 colcon을 이용해 Workspace를 빌드했다.

colcon build --symlink-install

현재 src 폴더에 별도의 ROS 2 패키지가 없기 때문에 다음과 같이 표시되었다.

Summary: 0 packages finished

패키지가 없어서 0개가 빌드된 것이므로 오류는 아니다.

빌드 후 Workspace의 환경을 적용했다.

source install/local_setup.zsh

5. ROS 환경 자동 설정

매번 터미널을 열 때마다 ROS 2 환경을 직접 source하는 것은 번거롭기 때문에 Shell 설정 파일에 ROS 환경을 등록했다.

현재 환경이 zsh이므로 ~/.zshrc를 수정했다.

nano ~/.zshrc

파일 하단에 다음 내용을 추가했다.

source /opt/ros/humble/setup.zsh
source ~/ros2_ws/install/local_setup.zsh

저장한 후 설정을 적용했다.

source ~/.zshrc

다시 환경변수를 확인했다.

printenv | grep -i ROS

이번에는 다음과 함께 Workspace 관련 환경도 확인할 수 있었다.

ROS_DISTRO=humble
ROS_VERSION=2
ROS_PYTHON_VERSION=3
COLCON_PREFIX_PATH=/home/namseungjoo/ros2_ws/install

이제 새로운 터미널에서도 ROS 2 Humble 환경을 사용할 수 있도록 설정되었다.


6. ROS 2 Demo Node 실행

ROS 2가 정상적으로 설치되었는지 확인하기 위해 기본 Demo Node를 실행했다.

ros2 run demo_nodes_cpp talker

실행 결과:

Hello World 메시지가 계속 발행되는 것을 확인했다.

실행을 종료할 때는 Ctrl+C를 사용했다.

이를 통해 ROS 2 노드가 정상적으로 실행되는 것을 확인했다.


7. Turtlesim 실행

다음으로 ROS 2의 대표적인 예제인 Turtlesim을 실행했다.

먼저 패키지가 설치되어 있는지 확인했다.

ros2 pkg list | grep turtlesim

결과:

turtlesim

Turtlesim 노드를 실행했다.

ros2 run turtlesim turtlesim_node

그러면 다음과 같이 거북이가 나타나는 Turtlesim GUI가 실행된다.


8. Turtlesim 키보드 조작

이제 다른 터미널에서 키보드 조작 노드를 실행했다.

ros2 run turtlesim turtle_teleop_key

실행하면 다음과 같은 안내가 출력된다.

Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
Use G|B|V|C|D|E|R|T keys to rotate to absolute orientations.
'F' to cancel a rotation.
'Q' to quit.

현재 설치된 Turtlesim에서는 i, j, k, l이 아니라 방향키를 사용해 거북이를 움직였다.

  • ↑ : 앞으로 이동
  • ↓ : 뒤로 이동
  • ← : 왼쪽 회전
  • → : 오른쪽 회전

실제로 방향키를 입력했을 때 거북이가 움직이는 것을 확인했다.


9. /turtle1/cmd_vel 토픽 확인

Turtlesim에서는 거북이의 이동 명령이 ROS 2의 토픽(Topic)을 통해 전달된다.

이를 직접 확인하기 위해 새로운 터미널에서 다음 명령어를 실행했다.

ros2 topic echo /turtle1/cmd_vel

그 상태에서 teleop 터미널에서 방향키를 입력하면 다음과 같이 메시지가 출력된다.

예를 들어 앞으로 이동할 때 linear.x 값이 전달되는 것을 확인할 수 있었다.

즉, 이번 실습을 통해 다음과 같은 구조를 직접 확인했다.

turtle_teleop_key
        │
        │  /turtle1/cmd_vel
        ▼
   turtlesim_node
        │
        ▼
     거북이 이동

키보드 입력이 바로 Turtlesim을 직접 조작하는 것이 아니라, ROS 2 토픽을 통해 이동 명령이 전달되고 Turtlesim 노드가 이를 처리하는 구조이다.


10. RQt 실행

마지막으로 ROS 2의 GUI 도구인 RQt도 실행해보았다.

rqt

실행하면 RQt GUI가 나타난다.

RQt는 다양한 ROS 2 관련 플러그인을 GUI 형태로 사용할 수 있도록 해주는 도구이다.

현재 화면에서는 별도의 플러그인을 선택하지 않은 기본 화면이 나타났다.


마무리

이번 실습에서는 실제로 ROS 2가 어떻게 동작하는지 간단하게 확인했다.

정리하면 다음과 같다.

Ubuntu 22.04
      ↓
ROS 2 Humble 설치
      ↓
ROS 환경 설정
      ↓
Workspace 생성 및 빌드
      ↓
Demo Node 실행
      ↓
Turtlesim 실행
      ↓
Teleop으로 거북이 조작
      ↓
/turtle1/cmd_vel 토픽 확인
      ↓
RQt 실행

특히 Turtlesim 실습을 통해 노드(Node)와 토픽(Topic)이 실제로 어떻게 연결되어 동작하는지 직접 확인할 수 있었다.

0개의 댓글