본문 바로가기

카테고리 없음

ROS2 설치하는 방법

728x90

Windows 10에서 WSL2로 ROS2 Jazzy 설치하기 (실수까지 포함한 완벽 가이드)

로보틱스 회사 지원을 준비하면서 ROS2를 처음 설치해봤습니다. Windows 환경에서 WSL2로 ROS2를 깐 과정을 — 중간에 만난 실수와 해결 방법까지 포함해서 — 정리했습니다. 이 글 따라 하면 누구나 깔 수 있습니다.

목차

  1. ROS2를 왜 WSL2에 깔아야 하나
  2. 사전 환경 확인
  3. WSL2 + Ubuntu 설치
  4. 첫 번째 함정: Ubuntu 22.04 vs 24.04
  5. 시스템 기본 설정 (Locale)
  6. ROS2 저장소 등록 — 각 단계가 뭘 하는지
  7. ROS2 Jazzy 본체 설치
  8. 환경변수 설정 + rosdep 초기화
  9. 동작 테스트 (Talker / Listener)
  10. 개발에 필요한 추가 패키지
  11. 자주 만나는 문제와 해결

 

1. ROS2를 왜 WSL2에 깔아야 하나

ROS2는 공식적으로 Windows·macOS도 지원하지만, 사실상 Linux(Ubuntu) 전용입니다.

OS 지원 등급 현실
Ubuntu Linux Tier 1 (공식) 자율주행 회사 100% 사용
Windows 네이티브 Tier 3 일부 패키지만 동작
macOS Tier 3 데모·학습용
WSL2 Ubuntu Tier 1 (Ubuntu와 동일) Windows에서 Linux 그대로 사용 ⭐

 

특히 iceoryx, ros2_tracing(LTTng), Real-time(PREEMPT_RT) 같은 핵심 도구는 Linux에서만 제대로 동작합니다.

WSL2는 진짜 Linux 커널을 Windows에서 돌리는 것 입니다. 가상머신과 달리 매우 가볍고, 네이티브 Ubuntu와 거의 동일하게 동작합니다.

결론: Windows 10/11 사용자라면 WSL2 + Ubuntu가 정답.


2. 사전 환경 확인

PowerShell(관리자)에서 다음 명령으로 현재 상태 확인합니다.

wsl --status
wsl --list --verbose
wsl --version

확인할 것:

  • WSL 기본 버전이 2인지
  • Ubuntu 배포판이 이미 깔려있는지

저는 Docker Desktop 때문에 docker-desktop 배포판만 보였고, 개발용 Ubuntu는 없는 상태였습니다.

디스크 공간도 확인합니다. Ubuntu + ROS2 풀 설치에 약 15GB 필요합니다.

Get-PSDrive C | Select-Object Used, Free

3. WSL2 + Ubuntu 설치

Microsoft Store에서 설치 (권장)

  1. Win 키 → "Microsoft Store" 검색해서 열기
  2. 검색창에 "Ubuntu" 입력
  3. "Ubuntu 22.04.x LTS" 또는 "Ubuntu" (최신 LTS) 설치
  4. 설치 완료 후 [열기] 클릭

명령어로 설치 (대안)

# 관리자 PowerShell
wsl --install -d Ubuntu

첫 실행 — 사용자 계정 생성

검은 창이 뜨면서:

Enter new UNIX username:
  • Username: 영문 소문자만 (예: myname) — 띄어쓰기·특수문자 불가
  • Password: 비밀번호 입력 (화면에 안 보이는 게 정상, 두 번 입력)

이 비밀번호는 매번 sudo 쓸 때 필요하니 꼭 기억하세요.


4. 첫 번째 함정: Ubuntu 22.04 vs 24.04

여기서 제가 한 실수를 공유합니다.

처음에 wsl --install -d Ubuntu-22.04 명령으로 22.04를 깔려고 했더니 다음 에러가 났습니다.

배포 이름이 잘못되었습니다. 'Ubuntu-22.04'.
유효한 배포 목록을 보려면 'wsl.exe --list --online'를 사용하세요.
오류 코드: Wsl/InstallDistro/WSL_E_DISTRO_NOT_FOUND

wsl --list --online 으로 확인해보니 그냥 Ubuntu만 있고 버전 명시된 항목이 없었습니다. 그래서 Microsoft Store에서 깔았더니 Ubuntu 24.04 (Noble) 가 설치됐습니다.

$ lsb_release -a
Description: Ubuntu 24.04.1 LTS
Release:     24.04
Codename:    noble

ROS2 버전 선택

Ubuntu 버전에 따라 ROS2 버전이 정해집니다.

Ubuntu ROS2 LTS 지원 종료
22.04 (Jammy) Humble 2027.05
24.04 (Noble) Jazzy 2029.05

저는 24.04가 깔린 김에 Jazzy로 진행했습니다. 핵심 기능(iceoryx, SROS2, ros2_tracing 등)은 두 버전 모두 지원하고, 회사 자격요건에는 특정 ROS2 버전 명시가 없으니 그대로 진행해도 됩니다.

만약 Humble이 꼭 필요하면 Microsoft Store에서 "Ubuntu 22.04.x LTS"를 명시적으로 설치하면 됩니다.


5. 시스템 기본 설정 (Locale)

이제부터는 Ubuntu 터미널에서 작업합니다.

시스템 업데이트

sudo apt update && sudo apt upgrade -y

5분 정도 걸립니다. 처음 sudo 사용 시 비밀번호 물어봅니다.

필수 도구 설치

sudo apt install -y curl gnupg lsb-release software-properties-common locales

Locale을 UTF-8로

ROS2는 UTF-8 locale을 필요로 합니다.

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

마지막 locale 출력에 LANG=en_US.UTF-8이 보이면 OK입니다.


6. ROS2 저장소 등록 — 각 단계가 뭘 하는지

명령어를 그냥 복붙하기 전에, 각 단계가 무슨 일을 하는지 알면 다른 패키지 설치할 때도 응용 가능합니다.

Linux의 apt앱스토어라고 생각하면 쉽습니다. apt가 패키지를 받아오려면:

  1. 저장소 주소 등록
  2. 그 저장소가 진짜인지 검증할 인증키 등록
  3. 새 저장소의 패키지 목록 갱신

ROS2는 Ubuntu 기본 저장소에 없어서 직접 추가해야 합니다.

Step 1. Universe 저장소 활성화

sudo add-apt-repository universe -y

Ubuntu 저장소는 4종류로 나뉩니다.

저장소 설명
main 캐노니컬 공식 지원 (기본 활성)
universe 커뮤니티 유지보수 오픈소스 ← 이걸 켬
restricted 독점 드라이버
multiverse 라이선스 제약

ROS2 의존성 일부가 universe에 있어서 활성화해야 합니다. 앱스토어에 "커뮤니티 앱 표시" 옵션 ON 같은 개념입니다.

Step 2. ROS2 GPG 키 등록

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

ROS2 공식 서명키를 다운로드해서 /usr/share/keyrings/ 폴더에 저장합니다.

 

왜 필요? — 패키지가 진짜 ROS2 공식인지 검증하기 위함입니다. 가짜 서버가 있어도 서명키가 다르면 apt가 거부합니다. 보안 핵심입니다.

비유하자면 새 출판사 인감을 등록하는 것입니다.

 

확인:

ls -lh /usr/share/keyrings/ros-archive-keyring.gpg

Step 3. ROS2 저장소 주소 등록

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

긴 명령이지만 분해하면 단순합니다.

부분 의미
deb [...] deb 패키지 저장소
arch=$(dpkg --print-architecture) CPU 아키텍처 자동 입력 (amd64/arm64)
signed-by=... Step 2에서 등록한 키로 검증
http://packages.ros.org/ros2/ubuntu 저장소 서버
$(. /etc/os-release && echo $UBUNTU_CODENAME) Ubuntu 코드명 자동 입력 (noble)
| sudo tee /etc/apt/sources.list.d/ros2.list ros2.list 파일로 저장

확인:

cat /etc/apt/sources.list.d/ros2.list

다음과 비슷하게 보이면 OK:

deb [arch=amd64 signed-by=...] http://packages.ros.org/ros2/ubuntu noble main

Step 4. 패키지 목록 갱신

sudo apt update

새 저장소가 인식되면서 ROS2 패키지 목록이 받아집니다. 도서관 신간 카탈로그 갱신과 비슷합니다.

확인 — 출력에 packages.ros.org 가 보여야 합니다.


7. ROS2 Jazzy 본체 설치

이제 본격 설치입니다. 약 1GB 다운로드, 설치 후 약 3GB를 차지합니다.

sudo apt install -y \
  ros-jazzy-desktop \
  python3-colcon-common-extensions \
  python3-rosdep \
  python3-pip \
  python3-argcomplete

💡 Ubuntu 22.04를 쓰신다면 ros-jazzy-desktopros-humble-desktop 으로 바꾸시면 됩니다.

10~15분 정도 걸립니다. 메시지 폭포처럼 쏟아지는 게 정상입니다.

설치 확인

ls /opt/ros/jazzy/

bin, lib, share, setup.bash 등이 보이면 성공입니다.


8. 환경변수 설정 + rosdep 초기화

rosdep 초기화

rosdep는 ROS2 패키지의 시스템 의존성을 자동 설치해주는 도구입니다.

sudo rosdep init
rosdep update

updated cache 메시지까지 보이면 OK.

자동 source 설정

매번 터미널 열 때마다 ROS2 환경이 자동 로드되게 ~/.bashrc에 추가합니다.

echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
source ~/.bashrc

확인

echo $ROS_DISTRO

출력이 jazzy이면 ROS2 설치 완료입니다.


9. 동작 테스트 (Talker / Listener)

ROS2가 정상 동작하는지 테스트합니다. 터미널 2개가 필요합니다.

터미널 1 (지금 창)

ros2 run demo_nodes_cpp talker

출력:

[INFO] [talker]: Publishing: 'Hello World: 1'
[INFO] [talker]: Publishing: 'Hello World: 2'
...

터미널 2 (새 창)

새 Ubuntu 창을 여는 방법:

  • Windows Terminal: 위쪽 + 또는 Ctrl+Shift+T
  • 시작메뉴에서 Ubuntu 다시 클릭
  • PowerShell에서 wsl 입력

새 터미널에서:

ros2 run demo_nodes_py listener

출력:

[INFO] [listener]: I heard: [Hello World: 5]
[INFO] [listener]: I heard: [Hello World: 6]
...

두 터미널이 통신하면 🎉 ROS2 정상 동작입니다. 종료는 각 터미널에서 Ctrl+C.


10. 개발에 필요한 추가 패키지

기본 설치만으로도 학습은 가능하지만, 실습 프로젝트엔 다음이 추가로 필요합니다.

빌드 도구

sudo apt install -y python3-colcon-mixin python3-vcstool git build-essential cmake

MQTT 관련 (IoT 연동)

sudo apt install -y mosquitto mosquitto-clients
pip3 install paho-mqtt --break-system-packages

ros2_tracing (성능 분석)

sudo apt install -y ros-jazzy-tracetools ros-jazzy-ros2trace

SROS2 (보안 통신)

sudo apt install -y ros-jazzy-sros2

💡 위 4개는 나중에 필요할 때 깔아도 됩니다. 우선 ROS2 기본만으로 학습 시작 가능합니다.


11. 자주 만나는 문제와 해결

문제 1. WSL에서 복사·붙여넣기가 안 됨

Linux 터미널은 Ctrl+C/Ctrl+V가 안 통합니다. (Ctrl+C는 명령 중단용)

해결:

  • 마우스 우클릭 — 자동 붙여넣기
  • Ctrl + Shift + V — 키보드 붙여넣기
  • 마우스 휠 클릭 — 가운데 버튼 붙여넣기

문제 2. wsl --install -d Ubuntu-22.04 안 됨

WSL 온라인 목록에 22.04가 없을 수 있습니다.

해결:

  • Microsoft Store에서 "Ubuntu 22.04.x LTS" 검색해서 설치
  • 또는 Ubuntu 24.04 + ROS2 Jazzy로 진행

문제 3. sudo apt update 시 GPG 에러

Step 2 키 등록 실패 가능성. 다시 시도:

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

문제 4. ros2: command not found

source 안 됐을 때 발생.

해결:

source /opt/ros/jazzy/setup.bash

매번 치기 귀찮으면 Step 8의 echo "source ..." >> ~/.bashrc 다시 실행.

문제 5. pip installexternally-managed-environment 에러

Ubuntu 24.04부터 시스템 Python에 직접 pip 설치를 막습니다.

해결:

  • 임시: pip install <pkg> --break-system-packages
  • 권장: python3 -m venv ~/myenv && source ~/myenv/bin/activate 후 pip 사용

마치며

여기까지 따라오셨다면:

  • WSL2 위에 Ubuntu 24.04(또는 22.04)
  • ROS2 Jazzy(또는 Humble)
  • 첫 Pub/Sub 노드 동작 확인

까지 끝낸 셈입니다. 디스크 사용량은 약 7~10GB.

다음 단계:

저는 12일 학습 계획으로 Zero-Copy IPC 벤치마크와 SROS2 보안 적용까지 진행하고 있습니다. 결과는 추후 글로 정리하겠습니다.

질문이나 막힌 부분 있으면 댓글 남겨주세요.


참고 자료


태그: #ROS2 #Jazzy #WSL2 #Ubuntu #로보틱스 #자율주행 #개발환경 #Linux