메인 콘텐츠로 건너뛰기

맥북에서 ROS 2 Humble 환경 구축하기 - UTM 가상머신 활용

맥북에서 UTM 가상머신을 활용하여 ROS 2 Humble 개발 환경을 구축하는 가이드 입니다. Ubuntu 22.04 ARM64 설치부터 Publisher/Subscriber 테스트까지 단계별로 설명합니다.

2025년 12월 26일
로봇
맥북에서 ROS 2 Humble 환경 구축하기 - UTM 가상머신 활용 - 아티클 커버 이미지

들어가며

ROS 2는 Ubuntu를 공식 지원하기 때문에, macOS 환경에서는 가상머신이나 컨테이너를 통해 개발 환경을 구성하는 것이 일반적입니다.

이 글에서는 UTM 가상머신을 활용해 맥북에 ROS 2 Humble 개발 환경을 구축하는 과정을 처음부터 끝까지 단계별로 정리했습니다. ROS 2를 처음 접하는 분들도 그대로 따라 하면 설치와 기본 동작 확인까지 무리 없이 진행할 수 있도록 구성했습니다.

이 글에서 다루는 내용

  • UTM 설치 및 Apple Silicon 최적화 설정
  • Ubuntu 22.04 ARM64 설치
  • ROS 2 Humble 설치 및 환경 설정
  • 첫 실습: Publisher / Subscriber 통신 테스트
  • SSH 접속을 활용한 효율적인 개발 환경 구성
  • 설치 과정에서 자주 발생하는 문제와 해결 방법

필요한 사양

  • 맥북: 리눅스 PC가 있다면 굳이 UTM 가상머신에 올릴 필요가 없이 바로 ROS2 설치 부분 보시면 됩니다. :)
  • 메모리: 16GB 이상 권장 (8GB에서도 가능하나 전반적인 속도 저하 발생)
  • 디스크: 최소 50GB 이상의 여유 저장 공간
  • 소요 시간: 전체 설치 과정에 약 2~3시간 필요

1. UTM 설치

UTM이란? UTM은 Apple Silicon 환경에 최적화된 무료 가상머신 소프트웨어로, Parallels나 VMware Fusion과 같은 유료 대안 없이도 macOS에서 안정적으로 Linux 가상 환경을 구성할 수 있습니다.

1-1. UTM 다운로드

UTM은 공식 웹사이트를 통해 직접 다운로드하거나, Homebrew를 이용해 터미널에서 간편하게 설치할 수 있습니다.

방법 1: 공식 웹사이트 이용

  • 접속 주소: https://mac.getutm.app/
  • 상단의 “Download” 버튼 클릭
  • UTM.dmg 파일 다운로드 후 설치
    UTM 다운로드 페이지

방법 2: Homebrew 사용 (터미널) Homebrew가 이미 설치되어 있다면, 명령어 한 줄로 UTM을 빠르게 설치할 수 있어 관리와 업데이트 측면에서 편리합니다.

brew install --cask utm

1-2. UTM 설치

  1. 다운로드한 UTM.dmg 파일 실행
  2. UTM.app을 Applications 폴더로 드래그
  3. Applications 폴더에서 UTM 실행
  4. 보안 경고가 나오면 열기 클릭

UTM 설치 화면


2. Ubuntu 22.04 ARM64 설치

2-1. Ubuntu 이미지 다운로드

ROS 2 Humble은 Ubuntu 22.04(Jammy Jellyfish)를 공식 지원합니다. Apple Silicon 환경에서는 반드시 ARM64 아키텍처용 Ubuntu 이미지를 사용해야 합니다.

Ubuntu ARM64 다운로드

2-2. UTM에서 새 가상머신 생성하기

Step 1: 새 가상머신 생성 시작

UTM 애플리케이션을 실행합니다.

  • 화면 상단의 + 버튼을 클릭해서 '새로운 가상 머신 생성'을 시작합니다.

    UTM 첫 실행 화면

  • 가상화 방식 선택 화면에서 '가상화'를 선택합니다.

  • Apple Silicon 환경에서는 '가상화' 방식을 사용해야 하드웨어 가속을 최대한 활용할 수 있습니다.

UTM 새 VM 생성

Step 2: 운영체제 선택

  1. "Linux" 선택 합니다.

ISO 파일 선택

Step 3: 하드웨어 설정

권장 설정은 다음과 같습니다.

  • 메모리(RAM): 8192 MB (8GB)
    • 16GB 맥북: 8GB 할당
    • 32GB 맥북: 12~16GB 할당 가능
  • CPU 코어: 4 cores (기본값)
  • OpenGL 가속: 활성화 (Gazebo 및 GUI 성능 향상)

메모리 및 CPU 설정

Step 4: ISO 파일 선택

  1. Apple 가상화 사용: 활성화 (Apple Silicon 최적화)
  2. 부팅 이미지 종류 : Boot from ISO image 선택
  3. "찾아보기"를 클릭합니다.
  4. 다운로드한 ubuntu-22.04.5-live-server-arm64.iso 파일을 선택합니다.
  5. "계속"을 클릭합니다.

ISO 파일 선택

Step 5: 스토리지 설정

  • 디스크 크기: 최소 30GB, 권장 50GB 선택합니다.
  • ROS 2, Gazebo, 추가 패키지 설치 시 약 20~30GB의 디스크 공간이 사용됩니다.

디스크 크기 설정

Step 6: 공유 폴더 (선택)

  • 맥북과 Ubuntu 간 파일 공유가 필요한 경우 설정합니다.
  • 지금은 건너뛰어도 이후에 추가 가능합니다. 건너뛰도록 합니다.

공유 폴더 설정

Step 7: VM 이름 설정

  • 이름: ros2-humble-dev (또는 원하는 이름)
  • 저장 클릭합니다.

image


3. Ubuntu 설치

3-1. VM 시작

  1. UTM에서 생성한 가상 머신(VM)을 선택합니다.
  2. 상단의 재생 버튼을 클릭합니다. (또는 VM을 더블클릭합니다)
  3. Ubuntu 설치 화면이 표시됩니다.
  4. 'Try or Install Ubuntu Server' 선택합니다.

Ubuntu 설치 시작

3-2. Ubuntu 설치 과정

언어 선택

  • English 선택 (권장)
  • 한국어도 선택 가능하지만, ROS 2 공식 문서와 튜토리얼이 대부분 영어로 제공되므로 English 사용을 추천합니다

언어 선택

키보드 레이아웃

  • Layout: English (US) 또는 Korean
  • 입력 테스트 후 적절한 레이아웃 선택

키보드 레이아웃

설치 타입 설정

  • Ubuntu Server 선택 (기본값 유지)
  • "Done" 클릭

설치 타입 설정

네트워크 설정

  • DHCP 자동 설정 (기본값 유지)
  • "Done" 클릭

네트워크 설정

프록시 설정

  • 입력 없이 비워둠
  • "Done" 클릭

프록시 설정

미러 설정

미러 설정

디스크 파티션

  • "Use an entire disk" 선택 (기본값)
  • "Done" 클릭 후 "Continue"로 확인

디스크 파티션

파일 시스템

프로필 설정

중요! 여기 정보 기록해두세요:

  • Your name: [원하는 이름]
  • Your server's name: ros2-dev (추천)
  • Username: [사용자명]
  • Password: [비밀번호]

사용자 계정 설정

Upgrade to Ubuntu Pro

  • 선택하지 않고 "Done"

Ubuntu Pro

SSH 설정

  • "Install OpenSSH server" 체크 (권장)
  • 나중에 터미널 접속 편함

SSH 설정

  • 선택하지 않고 "Done"

Featured Server Snaps

설치 시작

  • 설치 진행 (약 10-20분)
  • 완료되면 "Reboot Now" 클릭

설치 시작

3-3. 첫 부팅

  1. 재부팅 후 로그인 화면
  2. 설정한 username/password 입력
  3. 로그인 성공!

첫 화면

3-4. 좀 더 편하기 위한 팁 : SSH로 맥북 터미널에서 접속하기

UTM 콘솔 환경에서는 복사·붙여넣기가 안 되어 작업 효율이 떨어집니다. 아니 답답해서 공부하기 어렵습니다. OpenSSH 서버를 설치해 두었다면, 맥북 터미널에서 SSH로 접속하는 방식을 적극 추천합니다.

이 방식의 장점은

  • 명령어 복사·붙여넣기 가능해서 터미널 오타 감소하고
  • VS Code Remote-SSH 확장과 연동 가능 합니다.

ROS 2 개발을 장기간 진행할 예정이라면 사실상 필수적인 설정입니다.

SSH 접속 방법

1단계: Ubuntu VM에서 IP 주소 확인

UTM의 Ubuntu 터미널에서 아래 명령으로 ip 주소 확인합니다.

hostname -I

예시 출력: 192.168.64.5 (이런 형식의 IP 주소)

2단계: 맥북 터미널에서 SSH 접속

맥북에서 새 터미널을 열고:

ssh [username]@[IP주소]

실제 예시:

ssh nadomola@192.168.64.5

처음 접속 시:

Are you sure you want to continue connecting (yes/no/[fingerprint])?

yes 입력

비밀번호 입력 → 접속 완료!

이제 맥북 터미널에서 Cmd+C, Cmd+V로 복사-붙여넣기가 가능합니다.

SSH 접속


4. ROS 2 Humble 설치

4-1. 시스템 업데이트

먼저 Ubuntu 패키지를 최신으로 업데이트합니다.

sudo apt update
sudo apt upgrade -y

4-2. ROS 2 저장소 추가

공식 ROS 2 설치 가이드를 따릅니다.

locale 설정

locale 설정을 하는 이유는, ROS 2와 관련 도구들이 UTF-8 기반 영어 로케일을 전제로 동작해 문자 인코딩 오류나 예기치 않은 실행 문제를 예방하기 위함입니다.

sudo apt install locales -y
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

ROS 2 GPG 키 추가

ROS 2 GPG 키를 추가하는 이유는 ROS 패키지가 공식적으로 신뢰된 출처에서 왔는지 검증하고, 위·변조된 패키지 설치를 방지하여 시스템 보안을 유지하기 위해서입니다.

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

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

ROS 2 저장소 추가

Ubuntu 기본 저장소에는 ROS 2가 포함되어 있지 않으므로, ROS 공식 패키지를 apt로 설치·업데이트하기 위해 별도의 저장소를 등록해야 합니다.

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

4-3. ROS 2 Humble 설치

현재 등록된 모든 저장소(Ubuntu + ROS 2)의 패키지 목록을 최신 상태로 갱신하고, ROS 2 Humble의 데스크톱 풀 패키지를 설치합니다.

sudo apt update
sudo apt install ros-humble-desktop -y

설치 시간: 약 10-20분

  • 1.5GB 정도의 패키지 다운로드 및 설치
  • ROS 2 코어, RViz, rqt 등 GUI 도구 포함

ROS 2 설치 중

4-4. 환경 설정

bashrc에 source 추가

ROS 2 Humble의 환경 변수를 매번 수동으로 설정하지 않아도 되도록 로그인 시 자동으로 로드하게 하고, 그 설정을 현재 터미널 세션에도 즉시 적용되게 설정합니다.

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

설치 확인

현재 ROS 2 환경이 정상적으로 초기화되었는지 확인하기 위해, 기본적으로 생성되는 ROS 2 토픽 목록 출력을 확인합니다.

방법 1: 기본 토픽 확인

ros2 topic list

예상 출력:

/parameter_events
/rosout

방법 2: 패키지 목록 확인 설치된 ROS 2 패키지 전체 목록 중 앞의 10개만 출력해 ROS 2가 정상적으로 설치되었는지 빠르게 확인해봅니다.

ros2 pkg list | head -10

예상 출력:

action_msgs
action_tutorials_cpp
action_tutorials_interfaces
...

⚠️ BrokenPipeError 메시지가 나와도 정상입니다 (head 명령어 때문).

방법 3: 환경 변수 확인

printenv | grep ROS

예상 출력:

ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DISTRO=humble

ROS 2 설치 확인


5. 첫 실습: ROS 2 동작 테스트

ROS 2가 제대로 작동하는지 간단한 Publisher/Subscriber 예제로 테스트해봅시다.

5-1. 터미널 2개 준비

SSH를 통해 터미널을 2개 접속합니다.

터미널 1 (이미 접속 중): 현재 SSH 세션 사용

터미널 2 (새로 열기): 맥북에서 새 터미널을 열고 다시 SSH 접속:

ssh [사용자명]@[IP주소]

5-2. Talker 실행 (Publisher)

터미널 1에서 실행: ros2 run demo_nodes_cpp talker 는 ROS 2에 기본으로 포함된 예제 퍼블리셔 노드를 실행하여 /chatter 토픽으로 “Hello World” 메시지를 주기적으로 발행함으로써 ROS 2 노드 실행과 토픽 송신이 정상 동작하는지 확인하기 위한 명령입니다.

ros2 run demo_nodes_cpp talker

출력 예시:

[INFO] [1234567890.123456789] [talker]: Publishing: 'Hello World: 0'
[INFO] [1234567890.223456789] [talker]: Publishing: 'Hello World: 1'
[INFO] [1234567890.323456789] [talker]: Publishing: 'Hello World: 2'
...

Talker 실행

5-3. Listener 실행 (Subscriber)

터미널 2에서 실행: ros2 run demo_nodes_py listener는 ROS 2의 예제 구독자 노드를 실행하여 /chatter 토픽으로 발행되는 메시지를 실시간으로 수신·출력함으로써 노드 간 통신이 정상 동작하는지 확인하는 명령입니다.

ros2 run demo_nodes_py listener

출력 예시:

[INFO] [1234567890.124567890] [listener]: I heard: [Hello World: 0]
[INFO] [1234567890.224567890] [listener]: I heard: [Hello World: 1]
[INFO] [1234567890.324567890] [listener]: I heard: [Hello World: 2]
...

Listener 실행

5-4. 테스트 결과

이로써 ROS 2의 기본 통신 구조가 정상적으로 동작함을 확인했습니다. 수고하셨습니다!

  • Talker 노드는 /chatter 토픽으로 메시지를 발행하고
  • Listener 노드는 해당 토픽을 구독하여 메시지를 수신합니다

이는 ROS 2 환경이 올바르게 설치되었고, 노드 간 DDS 기반 통신이 정상적으로 구성되었음을 의미합니다.


6. 트러블슈팅

문제 1: apt upgrade 중 "Daemons using outdated libraries" 팝업

증상:

sudo apt upgrade -y 실행 중 서비스 재시작 확인 팝업이 나타남

해결 방법:

  1. Tab 키<Ok> 선택 (기본값)
  2. Enter 키 눌러 확인
  3. 체크된 서비스들이 자동으로 재시작됨

설명:

  • 시스템 업그레이드 시 업데이트된 라이브러리를 사용하는 서비스들을 재시작할지 묻는 정상적인 프롬프트
  • 가상머신 첫 설치 환경이므로 모든 서비스 재시작해도 안전
  • <Ok> 선택 권장 (자동 재시작)

7. 마무리

축하합니다! 🎉

이제 맥북 Apple Silicon 환경에서도 ROS 2 Humble을 활용한 개발을 본격적으로 시작할 수 있습니다. 가상머신 기반이지만, SSH와 원격 개발 도구를 활용하면 실제 Ubuntu 머신과 거의 동일한 개발 경험을 얻을 수 있습니다.

다음 단계로는 ROS 2의 핵심 개념을 이해하고, 시뮬레이션과 실제 로봇 프로젝트로 확장해나가 봅시다.

완료한 작업:

  • ✅ UTM 가상머신 설치 및 설정
  • ✅ Ubuntu 22.04 ARM64 설치
  • ✅ SSH 접속으로 편리한 개발 환경 구축
  • ✅ ROS 2 Humble 설치 및 환경 설정
  • ✅ Publisher/Subscriber 통신 테스트 성공

다음 단계

이제 본격적인 ROS 2 학습을 시작할 수 있습니다:

  1. ROS 2 기본 개념

  2. 간단한 로봇 프로젝트

    • TurtleSim으로 기본 조작 배우기
    • 간단한 노드 직접 작성해보기
  3. 시뮬레이션 실습

    • Gazebo 설치
    • TurtleBot3 시뮬레이션
    • SLAM (Simultaneous Localization and Mapping) 실습
  4. 실제 프로젝트 구현

    • 센서 데이터 처리
    • 자율주행 알고리즘
    • Computer Vision 통합

참고 자료

공유하기