3. 개발 PC 환경
3.3ROS2 Humble 직접 설치 (OVA 사용 시 무시)
설치 전에 3.2장의 마지막 단계에서 만든 스냅샷이 있는지 확인하세요. 이 장에서 문제가 생기면 되돌릴 수 있습니다.
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-desktop | Universe나 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장의 "막혔을 때" 순서를 따르세요. 오류 메시지 전체를 복사해 두면 도움이 됩니다.
한눈에 정리
- 설치 순서: 로케일 → Universe와
ros2-apt-source→apt update/upgrade→ros-humble-desktop→ros-dev-tools. apt upgrade를 설치 전에 반드시 한다. 22.04 초기 상태에서는 시스템 패키지가 삭제될 위험이 있다.- 터미널마다
source /opt/ros/humble/setup.bash를 실행해야ros2를 쓸 수 있다. - talker/listener는 터미널 두 개에서 각각 실행해 통신을 확인한다.
- turtlesim은 키 입력을 teleop 터미널에 포커스를 두고 한다.
- 설치 직후 스냅샷을 만든다.
확인 문제
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 자동 설정으로 반복 작업을 줄입니다.