Mac에서 Multipass를 사용한 ROS 개발환경 세팅

growJ.·2022년 11월 21일
1

ROS

목록 보기
1/2
post-thumbnail

자율주행 배달로봇을 위해 ROS 개발환경을 구축한 일지를 기록합니다.

ROS를 설치하기 위해서는 생각보다 까다로운 PC 환경을 요구합니다.
M1을 사용하는 입장에서 제가 필요한 ROS Melodic 버전은 설치가 불가능한 작업입니다.
대부분 M1을 사용하는 분들은 ROS2를 설치하기를 하나, 저는 Jetson Nano에 탑재할 ROS 패키지를 개발해야 하고, Jetson은 Ubuntu 18.04를, Ubuntu 18.04는 ROS Melodic 버전을 지원합니다.

먼저, Docker를 사용하여 개발환경을 구성하려 했으나, Docker의 리소스 사용이 생각보다 과하고, 접속하는 것이 은근 불편했습니다. 여러 자료를 찾아보던 중 Multipass를 이용하기로 했습니다.

Multipass 설치하기

multipass는 Ubuntu의 개발팀에서 우분투를 가상화 환경에서 사용할 수 있도록 지원하는 툴입니다. 마치 Docker처럼 Ubuntu를 쉽게 생성하고 관리하고, 접속할 수 있습니다.

먼저, Multipass를 설치해 줍니다. 아래 링크에서 소프트웨어를 받아도 되며, 저는 Homebrew를 통해 설치했습니다.

Multipass 설치 사이트 또는

brew install --cask multipass

Ubuntu 가상환경 생성하기

multipass를 생성했다면, 다음과 같은 명령어를 통해 쉽게 Termal을 통해 가상화 우분투를 생성할 수 있습니다.

multipass launch 18.04 -n ros-melodic -c 4 -m 4G -d 40G

위 명령어에서 각각의 항목은 다음과 같습니다.

multipass launch 18.04: Ubuntu 18.04로 가상화 환경 구성
-n ros-melodic: 해당 가상화 별명을 ros-melodic으로 지정
-c 4: 4Core 환경 구성
-m 4G: 4GB Memory 사용
-d 40G: 40GB 디스크 사용

가상환경이 생성되면, 우분투에 Terminal을 통해 접속할 수 있습니다.
Multipass 가상환경은, 내부 IP가 할당됩니다. 따라서 SSH나 XRDP와 같은 프로토콜로 원격 접속이 가능합니다.

가상환경 접속하기

Multipass로 만든 가상 환경은 다음 명령어로 해당 쉘에 접속이 가능합니다.

Multipass shell [가상환경명]
Multipass shell ros-melodic

Multipass를 사용할 때 필요한 명령어는 다음과 같습니다.

exit											// 쉘 접속 종료

multipass start [가상환경명]						// 가상환경 시작
multipass start ros-melodic

multipass stop [가상환경명]						// 가상환경 종료
miltipass stop ros-melodic

multipass restart [가상환경명]						// 가상환경 재시작
multipass restart ros-melodic

multipass delete [가상환경명]						// 가상환경 삭제
multipass delete ros-melodic

multipass purge									// 삭제한 가상환경 완전 삭제

multipass list									// 가상환경 목록

multipass info [가상환경명]						// 해당 가상환경 세부 정보 확인
multipass info ros-melodic

multipass info --all							// 모든 가상환경 세부 정보 확인

multipass mount [폴더 경로] [가상환경명]:[폴더경로]	// PC와 가상환경 내의 폴더 공유
multipass mount /Users/addps5012/ros_workspace ros-melodic:~/ros_workspace

multipass unmount [가상환경]						// 마운트 해제
multipass unmount ros-melodic

접속하면 다음과 같은 화면을 볼 수 있습니다.

Ubuntu 계정 설정하기

최초 접속 시에는 Ubuntu라는 계정으로 접속됩니다. 해당 계정은 비밀번호 설정이 되어있지 않으므로 다음 명령어로 비밀번호를 설정합니다.

sudo passwd ubuntu

Ubuntu Desktop과 XRDP 설정하기

기본 설치되는 Ubuntu는 GUI가 아닌 Terminal만 사용 가능한 상태입니다. 이를 GUI로 확인하고 접속하기 위해서 Ubuntu Desktop과 XRDP설치합니다.

sudo apt update							// APT 목록 갱신

sudo apt install ubuntu-desktop xrdp	// Ubuntu Dekstop과 XRDP 설치

XRDP: Microsoft에서 개발환 원격접속용 프로토콜로 기존 VNC와 다르게 혀냊 화면을 그대로 띄워주는 것이 아닌, 별도 접속을 생성합니다. VNC보다 쾌적하게 이용이 가능합니다.

Ubuntu Dekstop과 XRDP의 설치가 완료되었다면, XRDP 툴을 이용해 원격 접속이 가능합니다. XRDP 접속을 지원하는 프로그램은 Microsoft Remote Desktop과 Parallels Client가 있습니다. 저는 Microsoft Remote Desktop을 사용하도록 하겠습니다.

Microsoft Remote Desktop은 App Store에서 설치가 가능합니다.

XRDP 접속을 위해서는 가상환경의 IP주소를 알고 있어야 합니다. 다음 명령어를 통해 가상환경의 IP를 조회할 수 있습니다.

multipass into [가상환경명]
multipass info ros-melodic

위 과정에서 조회된 IP로 XRDP를 통해 접속하면 됩니다.

ROS 설치하기

저는 Ubuntu 18.04 버전을 사용하기에 Ros Melodic 버전을 설치하도록 하겠습니다.
아래 과정대로 Terminal에 순서대로 입력하면 ROS 설치는 완료됩니다.

// Sources.list 설정
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

// Curl 설치 및 설정
sudo apt install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

// APT 목록 갱신
sudo apt update

// Ros Melodic Dekstop 설치
sudo apt install ros-melodic-desktop-full

// Bash 설정 (시작 시 자동 로딩)
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

// 의존성 패키지 설정
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo rosdep init
rosdep update

Multipass Mount

맥과 가상환경 간 파일 공유를 한다면, 맥에서 VSCode와 같은 툴을 이용해 빠르게 편집하고 사용할 수 있습니다. 따라서 맥에 폴더 하나를 생성한 뒤 가상환경에 마운트 해줍니다.

multipass mount [MAC폴더 경로] [가상환경명]:[가상환경 경로]
multipass mount /Users/addps5012/Library/Mobile\ Documents/com~apple~CloudDocs/devOps/ros_delivery_project ros-melodic:~/ros_delivery_project

이렇게 마운트를 해준다면, Mac의 Finder를 통해 가상환경 파일에 쉽게 접근이 가능합니다.

가상환경에 해당 경로 폴더가 생성되었는지 확인합니다.

ROS Workspace 지정

마운트된 경로에서 ROS의 Workspace를 지정해줍니다.

cd [마운트된 경로]
cd ~/ros_delivery_project

mkdir -p src								// src 폴더 생성
cd src										// src 폴더로 이동
catkin_init_workspace						// workspace 지정

cd ..										// 상위 폴더로 이동
catkin_make									// workspace 빌드

source [workspace 경로]/devel/setup.bash		// 스크립트 설정
source ~/ros_delivery_project/devel/setup.bash

위와 같이 설정했다면, ROS Workspace 설정이 완료되었습니다.
매번 실행 때마다 source 명령어를 실행하기에는 귀찮기에, bashrc에도 workspace 스크립트를 등록합니다.

// Bash 설정 (시작 시 자동 실행)
echo "source ~/ros_delivery_project/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
profile
그냥 끄적여보는 블로그

6개의 댓글

comment-user-thumbnail
2023년 3월 13일

c타입 포트 등은 사용이 불가능한걸까요?

1개의 답글
comment-user-thumbnail
2023년 4월 26일

안녕하세요. 덕분에 microsoft remote desktop 연결까지는 되었습니다. 하지만,, rosrun turtlesim turtlesim_node와 같이 간단한 명령어 입력시, qt.qpa.screen: QXcbConnection: Could not connect to display Could not connect to any X display. <- 이런 에러가 뜨는데 무엇이 문제인지 아시나요..???

1개의 답글