콘텐츠로 건너뛰기

맥북에서 ROS2 사용하기 – 우분투 Ubuntu 22.04 설치

로봇 연구 커뮤니티에 혜성같이 등장하여 이제는 두번째 세대를 배포하며 이제는 로봇 연구자들이 사실상 필수적으로 한번 쯤 사용해보게 되는 ROS. 수년간 개발이 이뤄지며 많은 사용자를 이끌어낸 첫번째 세대 ROS1은 어느덧 Ubuntu 20.05를 끝으로 더이상 지원이 되지 않게 되었습니다. 우분투를 기준으로는 22 버전부터 바이너리 설치를 지원하지 않아 직접 소스로 빌드하여 설치하지 않으면 사용이 어렵게 되었고, 자연스럽게 ROS2를 이용하는 로봇 커뮤니티가 점차 늘어나고 있습니다.

이번 포스팅에서는 맥북에서 ROS2를 설치하는 방법, 그 중에서도 호환성이 가장 좋은 우분투 설치를 통해 사용하는 방법과 그 이유에 대해 소개합니다.

참고로, 맥북에서 PyTorch를 사용하는 방법에 대해서는 아래 포스팅에 자세히 적어두었습니다.



맥북 우분투 ROS

맥북/맥OS 그리고 ROS/ROS2

1세대 ROS는 철저히 우분투를 기준으로 개발되어 우분투 외 OS는 정식으로 지원하지도, 사용하기 쉽지도 않았습니다. 이에 데스크탑 사용자라면 듀얼부팅을 통해, 혹은 듀얼부팅이 어려운 환경이라면 가상머신으로 우분투를 설치하여 사용하곤 하였습니다. 맥북을 사용하는 경우에는 전자의 경우가 쉽지 않기 때문에 (자칫 부팅과정에서 망해버리는 수도) 어쩔 수 없이 가상머신을 사용할 수 밖에 없었습니다.

문제는, 과거의 가상머신의 성능이 별로 좋지 못했던 점 입니다. 말 그대로 한 OS 위에서 다른 OS를 시뮬레이션 하는 방식에서는 원래 하드웨어가 낼 수 있는 성능에 크게 못미치는 성능에 만족해야 했습니다. 이를 극복하기 위한 노력이 몇몇 있었는데, 그 중에서도 제가 가장 먼저 접했던 방식은 윈도우 10 이상부터 지원하는 WSL 이었습니다. 리눅스를 네이티브로 이용하는 방식으로 효율이 많이 올라가서 우분투를 설치하고 이용하면서도 기존 가상머신에 비해 크게 향상된 효율 그리고 최근에는 CUDA까지 지원하면서 그 활용 가능성이 많이 높아졌습니다.

ROS2는 이런 점을 개선하고자 처음 개발부터 여러 운영체제를 동일하게 지원하는 크로스 플렛폼으로 개발되었습니다만, 쉽지는 않은 것 같습니다. 여전히 윈도우와 맥OS에서는 우분투에서에 비해 한계가 있고, 이에 많은 사용자가 여전히 우분투를 설치하여 이용하고 있습니다.

맥OS의 경우에는 아쉽게도 우분투를 네이티브로 활용할 수 있는 방법은 아직 없습니다. 대신 애플 M1/M2/M3 칩을 위해 개발된 Apple Virtualization을 이용하면 가상머신 방식이면서도 성능의 저하를 체감하기 어려울 정도로 좋은 효율로 우분투를 이용할 수 있습니다.

UTM으로 우분투 설치하기

지금부터는 UTM을 설치하고, 이 위에 우분투를 설치하는 과정에 대해 소개해보도록 하겠습니다.

UTM 소개

UTM(Universal Turing Machine)은 macOS에서 다양한 운영체제를 가상화할 수 있는 오픈 소스 가상화 소프트웨어입니다. 특히 Apple Silicon 칩(M1, M2)을 사용하는 맥북 사용자들에게 적합하며, QEMU를 기반으로 가볍고 효율적으로 동작합니다. UTM은 macOS의 네이티브 가상화 프레임워크를 활용하여 빠르고 안정적인 가상 머신 환경을 제공합니다. 이를 통해 macOS 사용자들은 손쉽게 우분투, 윈도우, 안드로이드 등 다양한 운영체제를 설치하고 사용할 수 있으며, GUI 기반의 직관적인 인터페이스로 설정과 관리도 용이합니다. 개발자들은 UTM을 통해 리눅스 환경을 구축하여, ROS2와 같은 리눅스 기반의 개발 도구를 실행할 수 있습니다.

특히, Apple Virtualization을 지원하며, 오픈소스인 만큼 무료이기 때문에 매우 유용하게 사용할 수 있는 툴으로 볼 수 있습니다.

UTM 설치하기

UTM의 설치는 매우 간단합니다. 아래 UTM 홈페이지에서 설치파일을 다운받으면 됩니다. 단, 앱스토어를 통해 받으면 $9.99의 비용이 발생하기 때문에 직접 다운받아 설치하는 것이 좋겠습니다.

utm down
App Store 말고 직접 다운로드를 권장

다운로드가 완료되면 다른 프로그램 설치와 마찬가지로 Applications 폴더에 그래그앤드롭 하는 것으로 설치를 완료할 수 있습니다.

utm install 1

Ubuntu 설치하기

UTM을 실행하면 아래와 같은 첫 화면에서 설치를 시작할 수 있습니다. 기본적으로는 설치하고자 하는 OS 설치 이미지 파일을 가지고 설치하게 되지만, Ubuntu 22.04는 UTM에 맞춰 준비된 설치 이미지를 라이브러리에서 받아 클릭 몇번으로 설치를 완료할 수 있습니다. 기본 우분투 이미지 보다 UTM에 맞춰진 이미지라 설치가 쉬운점 외에도 장점이 있어, 특별히 다른 이유가 없다면 라이브러리에서 받아 설치하는 것을 권장합니다.

open in utm
Open in UTM 클릭

기본 설정은 RAM이 4GB로 되어 있지만, 이는 다운로드 후 필요에 따라 변경 가능합니다. 위와 같이 [Open in UTM]을 클릭하면 UTM에서 바로 다운로드가 시작되는 것을 확인할 수 있습니다. 이름은 ubuntu-20.04로 되어있지만, 실제 설치되는 버전은 22.04 입니다.

utm ubuntu down

저의 경우에는 설치와 다운로드까지 1시간 전후로 소요되었습니다. 제 생각에 서버에서 제공하는 다운로드 속도가 빠르지 않아서 오래걸리는 점이 있는 것 같습니다.

설치가 완료되고 실행하면 아래와 같이 우분투 화면을 확인할 수 있습니다. UTM 라이브러리에서 받아서 설치했다면 기본 패스워드[ubuntu] 입니다.

ubuntu login

Ubuntu에 ROS2 설치하기

우분투 설치가 완료되면 이를 실행하여 ROS를 설치할 수 있습니다. 이미지가 UTM에 맞춰 셋업되어 있기 때문에 우분투는 바로 실행할 수 있습니다.

우분투가 실행되면 ROS2 공식 가이드를 따라 설치합니다.

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

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
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

# Desktop Install
sudo apt install ros-humble-desktop

sudo apt install ros-dev-tools

# Environment Setup
source /opt/ros/humble/setup.bash
ros install
ROS2 설치 과정

설치가 완료되고 설치메뉴얼의 예제를 실행시켜 정상적으로 설치된 것을 확인해 볼 수 있습니다.

Talker/Listener Example

Visual Studio Code로 개발하기

UTM의 장점 중 하나는 ROS를 가상머신에서 구동하면서도 맥OS에 설치된 Visual Studio Code로 ssh를 통해 개발을 할 수 있다는 점 입니다. 이렇게 하면 약간의 딜레이가 발생하는 가상머신 GUI가 아닌 더 작업하기 좋은 맥 환경에서 프로그래밍을 할 수 있습니다.

맥OS에만 VS Code를 설치해도 필요한 구성요소를 알아서 설치하기 때문에 두 OS에 모두 VS Code가 설치되어야 하는 것은 아닌 듯 하지만, 아주 간혹 가상머신 내에서 VS Code가 필요할 때가 있어 저는 양쪽에 모두 설치하고 있습니다. 즉, 원하시면 우분투에서의 설치는 건너뛰어도 괜찮습니다. (맥OS에서의 설치는 간단하니 넘어가도록 하겠습니다.)

Ubuntu에 VS Code 설치하기

VS Code를 설치하는 방법은 여러가지 있는데, ARM 기반 우분투에서는 커맨드로 바이너리 설치가 잘 안되는 것 같습니다. 이에, 설치 파일을 받아 직접 설치하는 것을 권장합니다. 우분투 내 브라우저로 아래 주소로 접속합니다. [https://code.visualstudio.com/Download]

여기서, 아래와 같이 [Arm64] .deb 버튼을 클릭하여 데비안 패키지를 다운로드 합니다.

arm64

다음으로, 터미널을 열어 다운로드한 폴더로 이동 후 아래 커맨드를 실행하여 설치합니다. (파일명의 버전은 다를 수 있습니다.)

sudo dpkg -i code_1.93.1-1726078191_arm64.deb

설치가 완료되면 터미널에서 [code]를 실행하거나 어플리케이션 목록에서 찾아 실행할 수 있습니다.

code

MacOS VS Code에 Remote Plugin 설치하기

다음으로, 우분투 환경으로 연결해 개발하기 위해 필요한 플러그인을 설치합니다. Visual Studio Code의 [EXTENSIONS: MARKETPLACE] 탭을 클릭 후 [remote]을 검색하면 [Remote Development] 플러그인을 확인할 수 있습니다. 이를 설치하고 VS Code를 재실행 하면 왼쪽 탭에 아래 아이콘이 생긴것을 확인할 수 있습니다.

Screenshot 2024 09 30 at 9.11.56 PM

Ubuntu에 접속하기

설치한 Remote 플러그인은 이용해 우분투에 접속할 수 있습니다. 이를 위해서는 우분투의 IP 주소를 확인해야 합니다. 우분투를 실행하여 터미널에서 아래 명령어로 IP 주소를 확인합니다.

ip address

아래와 같은 내용에서 IP 주소를 확인합니다.

ip
이 주소를 이용

다음으로, 맥OS VS Code Remote 플러그인으로 돌아와 아래와 같이 접속설정을 추가합니다.

remote add 1
+ 버튼 클릭 후 IP 주소를 입력하고 엔터

그리고 나서 SSH 탭의 리프레시 버튼을 누르면 추가한 주소로 된 설정을 확인할 수 있습니다.

Screenshot 2024 09 30 at 10.10.12 PM

주소 옆으로 화살표 모양 버튼을 클릭하여 접속을 시작할 수 있습니다. 처음 접속시 fingerprint관련 프롬트가 뜨는데, Continue를 눌러주고, Password를 묻는 프롬트가 뜨면 우분투 계정 패스워드를 입력하면 됩니다.

Screenshot 2024 09 30 at 10.10.30 PM

정상적으로 접속되면 우분투 안에서 개발하는 것과 동일한 환경에서 작업을 할 수 있게 됩니다.

ROS 플러그인 설치

VS Code로 ROS 관련 개발을 할 때 좋은점 중 하나로 ROS 개발을 위한 플러그인이 있다는 점을 꼽습니다. 디버깅에 특히 유용하여 저는 잘 사용하고 있고 가급적 사용을 추천하고 있습니다.

아래와 같이 Extensions 탭에서 [ROS]를 검색하여 해당 플러그인을 설치할 수 있습니다.

마무리

이 글에서는 UTM을 통해 맥북에서 우분투 22.04를 설치하고, 그 위에 ROS2를 설치하는 방법을 단계별로 설명했습니다. macOS의 강력한 성능을 유지하면서도 리눅스 기반 개발 환경을 손쉽게 구축할 수 있다는 점에서 UTM은 매우 유용한 도구입니다. ROS2와 우분투의 조합은 여전히 로봇 개발 및 연구에 최적화된 환경을 제공하므로, 맥북 사용자들도 이를 활용하여 다양한 프로젝트를 수행할 수 있습니다. 앞으로도 이러한 가상화 기술을 통해 더 많은 개발자들이 리눅스 환경에서 자유롭게 연구하고 개발할 수 있기를 기대합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다