Mac OS (M1 Chip) 에서 utm을 사용해 ubuntu 18.04 + ROS 1 Melodic을 세팅하는 것이 불가능하기 때문에 이를 대체할 수 있는 방법을 공유한다!
(LIMO 로봇을 구동해야하는데 지원하는 OS가 ubuntu 18.05 + ROS1 Melodic만 사용 가능해서 찾다찾다 정리된 블로그가 없어서 작성한다...)
🚨 < Problem > Mac에서 Docker를 이용해 ROS를 사용하려고 하면 XQuartz 를 사용하여 ROS GUI 애플리케이션 (ex. RViz, Gazebo, etc)를 사용해야 한다. 이 경우 Mac-Docker-XQuartz 관계가 복잡하게 얽혀있어 오류가 나는 경우가 많고 해결이 복잡하다.
💡 < Solution > 이를 해결하기 위해 Tiryoh의 GitHub의 docker-ros desktop-vnc 프로젝트의 리드미 파일을 참조하여, 해당 프로젝트를 활용하는 방법을 정리하였다. 이 프로젝트는 ROS를 포함한 데스크톱 환경을 Docker 컨테이너 내에서 VNC (Virtual Network Computing)를 통해 사용할 수 있게 해준다.
이 프로젝트를 로컬에 클론한다.
git clone https://github.com/Tiryoh/docker-ros-desktop-vnc.git
cd docker-ros-desktop-vnc
이미 빌드된 이미지를 Docker Hub에서 가져오는 게 더 빠르기 때문에 이미 사용되고 있는 이미지를 빌드해보자!
docker pull tiryoh/ros-desktop-vnc:melodic
컨테이너를 실행한다. 아래 명령어를 사용하면 된다.
docker run -it --rm \
--name=ros1_melodic_vnc \
-p 6080:80 \
tiryoh/ros-desktop-vnc:melodic
🚨 < Warning! > --rm 을 사용하면 1회성 컨테이너가 생성되는 것이기 때문에 docker에서 exit 명령어를 사용해 나가면 컨테이너가 사라진다!
💡 자세한 명령어는 docker 시리즈에 추후 업로드 할 예정이다. 간단하게만 설명해보자면
--name=ros1_melodic_vnc
: --name
옵션은 실행되는 컨테이너에 이름을 지정한다. (컨테이너의 이름은 ros1_melodic_vnc
로 설정했다.)-p 6080:80
:-p
옵션은 포트 매핑을 설정한다. 호스트 머신의 포트 6080을 컨테이너의 포트 80에 매핑했다.
http://localhost:6080
으로 접속해 컨테이너에서 실행 중인 VNC 서버에 접근할 수 있다.tiryoh/ros-desktop-vnc:melodic
: 사용할 Docker 이미지의 이름과 태그를 지정한다. 여기서 tiryoh/ros-desktop-vnc
는 이미지의 이름이고 (2번 과정에서 pull 한 image), melodic
은 태그이다. ROS Melodic 버전이 설치된 이미지를 사용하기 위해 태그를 지정해주자!
컨테이너가 실행된 후, 브라우저를 열고 http://localhost:6080
으로 접속한다.
상단바의 Menu 누르고 terminator를 검색하면 터미널 창에서 작업할 수 있다.
터미널을 열고 ROS 관련 명령어를 실행하면 시뮬레이터가 정상적으로 작동하는 것을 확인할 수 있다!!!
roscore &
rviz
😭 여기까지 확인하면 완성이다! 🎉 우여곡절 끝에 성공했지만 VScode도 설치하고 사용해보려고 하니 너무 많은 에러가 생겼다...💢 VScode 설치까진 완료했지만 터미널 연결이 불가능해 뭐가 문제인지 잘 모르겠다... 에효
20.04 버전도 부탁드려요 ~