대학 입학 때부터 맥북을 사용했던 나, 로봇 공학을 전공하기 시작하면서 ROS를 사용해야할 일이 많아졌다. 그동안은 랩실에 있는 데스크탑에 우분투를 깔아서 ROS를 사용했었는데, 졸업하고 나니 ROS를 사용할 수 없게 됨!
이왕 이렇게 된거 내가 가지고 있는 맥북 (Macbook Air M2)에 ROS2를 깔아보기로 함.
M2는 가이드가 딱히 없어서 M1 기준으로 찾아본 결과, 두 가지 방법이 있는것 같았음.
- UTM 사용
- RoboStack 사용
안타깝게도 나는 둘 다 사용경험이 없음. ㅠㅠ 하지만 UTM 사용한 분의 포스팅이 있어서 UTM으로 먼저 해보기로 함..
스포) 1번으로 하면 gazebo 안돼서 결국 2로 함..
UTM 홈페이지 들어가면 다음과 같은 화면이 나오고, 'Download' 누르면 됨.

.dmg 다운받는 동안,,, 우리는 Ubuntu 22.04 ISO 파일을 다운받으러 갑니다 -> 여기
저는 이거 받아줬어요.

UTM 초기화면은 다음과 같고, '새 가상머신 만들기' 클릭


다음 과정부터는 제가 참고한 포스팅 남겨놓을게요!
M1 맥북 Ubuntu 가상 머신 구축

저는 이렇게 설정해주었고요,
로그인 후
$ sudo apt update
$ sudo apt install ubuntu-desktop
를 해주면 알아서 설치된다고 했는데요,,,

저는 이 상태로 30분 기다리다가,,,, 뭔가 이상하다 싶어서 끄고 다시 해줬어요
결국,,,

성공!
아래 커맨드로 터미네이터 설치

rosdep 설치

Gazebo 설치가 안됨...!

gazebo 안쓰는 분들은 첫번째 방법으로 하면 될 것 같고.. 저는 gazebo 가 필수라,,, 이 포스팅 보고 homebrew 사용하기로 했습니다 ^^;;
RoboStack은 ROS를 Anaconda와 같은 패키지 관리 시스템을 사용하여 설치하고 관리할 수 있도록 하는 프로젝트이다. 이를 통해 Windows나 macOS에서도 쉽게 ROS를 설치하고 실행할 수 있다. RoboStack은 의존성 문제를 해결하고, 패키지 관리를 용이하게 하며, 다양한 운영 체제에서 일관된 개발 환경을 제공한다.
주요 장점
1. 간편한 설치: Conda 패키지를 통해 ROS와 관련된 다양한 패키지를 손쉽게 설치할 수 있다.
2. 의존성 관리: Conda 환경을 사용하여 패키지 간의 충돌 없이 의존성을 효율적으로 관리할 수 있다.
3. 다중 운영체제 지원: Linux, macOS, Windows 등 다양한 운영체제에서 ROS를 동일한 방식으로 설치하고 사용할 수 있다.
4. 격리된 환경: 프로젝트마다 별도의 Conda 환경을 생성하여 서로 다른 ROS 설정을 독립적으로 관리할 수 있다.
기본적인 도구와 의존성을 설치하기 위해 Homebrew를 설치해준다
터미널에 다음과 같이 실행
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ brew doctor
brew doctor 실행하고 오류 뜨면 하라는 대로 하면 됨.
내 경우,
$ brew untap homebrew/core
해줌.
$ mkdir -p ~/miniconda3
$ curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o ~/miniconda3/miniconda.sh
$ bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
$ rm -rf ~/miniconda3/miniconda.sh
$ ~/miniconda3/bin/conda init bash
$ ~/miniconda3/bin/conda init zsh
모든 명령어 실행할 후 터미널을 닫고 다시 연다.
아래 명령어로 miniconda 올바르게 설치된 것을 확인할 수 있다.
$ conda --version
conda가 정상적으로 설치되었으면 ROS를 위한 가상환경을 따로 만들어줘야 한다.(base에서 ROS 설치하면 안된다고 함!)
base 환경에서, mamba를 설치해줌.
$ conda install mamba -c conda-forge
mamba 설치 후, 가상환경을 만들어준다. 이름은 하고싶은대로 하면 되고, 나의 경우 ros_env 로 해줬다.
$ conda create -n ros_env
가상환경 활성화는 아래 커맨드로 실행. 가상환경이 활성화되면 앞에 (ros_env)로 표시된다.
$ conda activate ros_env
Robostack 채널 추가 및 ROS2 설치
(ros_env)$ conda config --env --add channels conda-forge
(ros_env)$ conda config --env --add channels robostack-staging
(ros_env)$ conda config --env --remove channels defaults
(ros_env)$ conda install ros-humble-desktop
ROS2 이기 때문에 rviz2 를 실행해야 rviz가 제대로 실행된다
$ rviz2

Gazebo와 ROS2를 서로 다른 conda 환경에 설치해야 의존성 충돌을 피할 수 있다고 함.
# base 환경으로 전환
$ conda deactivate
# Gazebo 설치 스크립트 실행
$ curl -ssL http://get.gazebosim.org | sh
설치하는데 시간이 좀 걸림.
$ conda activate ros_env
$ gazebo
이렇게 하면 서로 충돌없이 사용 가능하다고 함.

드디어... M2 맥북에서 gazebo 실행 완...
다음 포스팅에서는 Nav2랑 로봇 구동하는 것까지 해볼 예정..
[1] https://jih0.medium.com/m1-%EB%A7%A5%EB%B6%81-ubuntu-%EA%B0%80%EC%83%81-%EB%A8%B8%EC%8B%A0-%EA%B5%AC%EC%B6%95-using-utm-1c1c135a37cb
[2] https://velog.io/@running_learning/Mac-M1-ROS2-Gazebo-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0