TIKI-MINI로 시작하는 ROS2 실무
목차

3. 개발 PC 환경

3.3ROS2 Humble 직접 설치 (OVA 사용 시 무시)

설치 전에 3.2장의 마지막 단계에서 만든 스냅샷이 있는지 확인하세요. 이 장에서 문제가 생기면 되돌릴 수 있습니다.

ROS2 Humble 설치 순서로케일 설정UTF-8 로케일en_US.UTF-8저장소 준비universe 켜기ros2-apt-source 설치시스템 업그레이드apt updateapt upgrade (생략 금지)123ROS2 설치ros-humble-desktopros-dev-tools환경 설정source /opt/ros/humble/setup.bash설치 확인talker / listenerturtlesim456업그레이드를 건너뛰면 중요 시스템 패키지가 삭제될 수 있습니다
이 장의 설치 순서입니다. 번호는 아래 절 번호와 같고, 3번 업그레이드는 건너뛰지 않습니다.

1. 로케일 설정

ROS2는 UTF-8 로케일이 필요합니다. 공식 문서는 en_US.UTF-8로 테스트했다고 안내합니다.

locale  # 현재 설정 확인 (UTF-8이 보이는지)
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
locale  # 설정이 적용되었는지 다시 확인

설치 때 영어를 선택했다면 이미 UTF-8일 가능성이 높습니다. 그래도 위 명령은 그대로 실행해도 안전합니다.

2. 저장소 준비 (Universe, ROS 2 apt 소스)

ROS2 패키지를 받으려면 먼저 Ubuntu의 universe 저장소를 켜고 ROS 2 apt 소스를 등록합니다.

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

다음 명령은 ROS 공식 문서가 안내하는 현재 방식으로, ros2-apt-source 패키지를 내려받아 설치합니다. 이 패키지가 서명 키와 apt 소스 설정을 만들고 이후 설정 변경도 자동으로 갱신합니다. 수동으로 GPG 키를 등록하던 이전 방식 대신 이 방식을 씁니다.

sudo apt update && sudo apt install curl -y
export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F'"' '{print $4}')
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"
sudo dpkg -i /tmp/ros2-apt-source.deb

3. ROS2 설치

먼저 패키지 목록을 갱신하고 시스템을 최신으로 만듭니다.

sudo apt update
sudo apt upgrade

이제 데스크톱 버전을 설치합니다. ROS, RViz, 데모, 튜토리얼이 포함되며 이 교육에서는 이 버전을 사용합니다. 용량이 커서 시간이 걸립니다.

sudo apt install ros-humble-desktop
sudo apt install ros-dev-tools

ros-dev-tools는 패키지를 빌드하는 데 필요한 컴파일러와 도구를 설치합니다. 3.7장의 colcon 빌드에서 사용합니다.

4. 환경 설정: source

설치한 ROS2는 /opt/ros/humble에 있습니다. ros2 명령을 쓰려면 터미널을 열 때마다 아래 설정 파일을 불러와야 합니다.

source /opt/ros/humble/setup.bash

이 파일을 불러오면 PATH와 라이브러리 경로 같은 환경 변수가 잡혀서 셸이 ros2 명령과 ROS 패키지를 찾습니다. 설정이 됐는지 확인합니다.

printenv ROS_DISTRO
ros2 --help

예상 출력

humble

ros2 --help는 사용법과 명령 목록을 출력합니다.

5. 설치 확인 1: talker와 listener

터미널을 두 개 열어 두 노드를 각각 실행하고 통신을 확인합니다. talker는 메시지를 발행(publish)하고 listener는 구독(subscribe)합니다. 1.3장에서 에뮬레이터로 해 본 것의 실제 버전입니다.

터미널 1 (새 터미널 창 또는 탭)

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker

터미널 2 (Ctrl+Shift+T로 새 탭을 열거나 새 창)

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener

터미널 1에는 "Publishing"으로 시작하는 줄이, 터미널 2에는 "I heard"로 시작하는 줄이 계속 출력되면 성공입니다. 공식 문서에 따르면 이 결과로 C++ API(talker)와 Python API(listener)가 모두 정상임이 확인됩니다.

예상 출력 (메시지 번호는 다를 수 있습니다)

[INFO] [...] [talker]: Publishing: 'Hello World: 1'
[INFO] [...] [listener]: I heard: [Hello World: 1]

종료하려면 각 터미널에서 Ctrl+C를 누릅니다.

6. 설치 확인 2: turtlesim

turtlesim은 ROS2 학습용 2D 시뮬레이터입니다. 거북이 한 마리를 키보드로 움직일 수 있습니다. 먼저 설치되어 있는지 확인합니다.

ros2 pkg executables turtlesim

예상 출력

turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node

아무것도 나오지 않거나 패키지를 찾을 수 없다는 오류가 나면 설치합니다.

sudo apt update
sudo apt install ros-humble-turtlesim

터미널 1

source /opt/ros/humble/setup.bash
ros2 run turtlesim turtlesim_node

파란 창과 거북이가 나타납니다.

터미널 2

source /opt/ros/humble/setup.bash
ros2 run turtlesim turtle_teleop_key

거북이가 화살표 키에 맞춰 움직이면 ROS2 그래픽 프로그램(GUI)까지 정상입니다. 터미널 3개를 열어 상태도 확인해 볼 수 있습니다.

source /opt/ros/humble/setup.bash
ros2 node list
ros2 topic list

예상 출력 (일부)

/teleop_turtle
/turtlesim
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

/turtle1/cmd_vel 토픽으로 속도 명령이 오가는 것을 볼 수 있습니다. 이 명령어들은 1.2장과 1.3장에서 자세히 다룹니다.

7. 흔한 오류와 해결

증상원인해결
ros2: command not found이 터미널에서 source를 하지 않음source /opt/ros/humble/setup.bash 실행. 새 터미널을 열 때마다 필요
Unable to locate package ros-humble-desktopUniverse나 ROS apt 소스 등록 누락, 또는 Ubuntu 버전이 22.04가 아님2번 절을 다시 수행하고 sudo apt update 실행. 버전은 lsb_release -a로 확인
ROS_APT_SOURCE_VERSION이 비어 있어 curl 실패GitHub API 접속 제한 또는 네트워크 문제잠시 후 재시도, echo $ROS_APT_SOURCE_VERSION으로 값 확인
apt가 잠겨 있다 (Could not get lock)다른 업데이트 프로세스가 실행 중몇 분 기다린 뒤 재시도. 자동 업데이트가 끝나면 풀립니다
E: Unable to correct problems 등 의존성 오류업그레이드 없이 설치 시도, 또는 중간에 설치 중단sudo apt update && sudo apt upgrade 후 다시 설치. 반복되면 스냅샷으로 되돌려 순서대로 재시도
디스크 공간 부족 (No space left on device)VM 디스크가 작음df -h로 확인. 필요하면 디스크 확장 또는 새 VM 생성
listener에 아무것도 안 나옴서로 다른 환경(source 누락 등), 노드가 이미 종료됨두 터미널 모두 source 했는지, talker가 실행 중인지 확인
turtlesim 창이 안 뜨거나 검은 화면, 비정상 종료VM 그래픽/3D 가속 문제3.2장의 3D 가속 주의사항 참고. Xorg 세션으로 로그인하거나 3D 가속 설정을 바꿔 봅니다

문제가 해결되지 않으면 0.3장의 "막혔을 때" 순서를 따르세요. 오류 메시지 전체를 복사해 두면 도움이 됩니다.

한눈에 정리

  1. 설치 순서: 로케일 → Universe와 ros2-apt-source → apt update/upgrade → ros-humble-desktop → ros-dev-tools.
  2. apt upgrade를 설치 전에 반드시 한다. 22.04 초기 상태에서는 시스템 패키지가 삭제될 위험이 있다.
  3. 터미널마다 source /opt/ros/humble/setup.bash를 실행해야 ros2를 쓸 수 있다.
  4. talker/listener는 터미널 두 개에서 각각 실행해 통신을 확인한다.
  5. turtlesim은 키 입력을 teleop 터미널에 포커스를 두고 한다.
  6. 설치 직후 스냅샷을 만든다.

확인 문제

Q1. 새 터미널을 열고 `ros2 topic list`를 실행하니 `command not found`가 나옵니다. 원인은?

그 터미널에서 source /opt/ros/humble/setup.bash를 실행하지 않았기 때문입니다. 터미널마다 환경 설정을 불러와야 합니다. 3.4장에서 .bashrc로 자동화하는 법을 배웁니다.

Q2. ROS2를 설치하기 전에 `sudo apt upgrade`를 해야 하는 이유는?

Ubuntu 22.04의 초기 업데이트 상태에서 ROS2 의존 패키지를 설치하면 systemd, udev 관련 문제로 중요 시스템 패키지가 삭제될 수 있다고 공식 문서가 경고하기 때문입니다.

Q3. talker와 listener를 한 터미널에서 순서대로 실행하면 안 되는 이유는?

ros2 run이 실행한 프로세스는 Ctrl+C로 종료할 때까지 터미널을 점유합니다. 그래서 첫 노드가 실행 중인 동안 같은 터미널에서 다음 명령을 입력할 수 없습니다. 노드마다 터미널(또는 탭)이 필요합니다.

다음 장

다음은 터미널 설정입니다. Tilix와 .bashrc 자동 설정으로 반복 작업을 줄입니다.