여러 블로그를 참고해 ROS 컨테이너를 설치해봤는데 잘 되지 않았다.
➡️ Ubuntu 18.04 컨테이너를 설치해서 여기에 ROS를 설치했다.
docker images -a
를 입력해 현재 가진 이미지들을 확인해보자!
실패한 ros 이미지들과 docker를 처음 깔았을 때 튜토리얼 이미지도 지워주자!
docker rmi osrf/ros:melodic-desktop-full-bionic
docker rmi ros:melodic-ros-core-bionic
docker rmi docker101tutorial:latest
docker pull ubuntu:bionic
docker run -it --name ros ubuntu:bionic
powershell 창을 하나 더 열어서 docker ps
라고 입력하면 아래와 같이 실행중인 컨테이너를 확인할 수 있다.
container는 root 권한이기 때문에 관리자 권한을 따로 설정할 필요 없다. (sudo 쓰지 않는다!)
ROS를 설치하기 전해 먼저 아래의 작업을 해준다.
apt-get update
apt-get install lsb -y
여기서 아래의 에러가 발생했다.
➡️apt-get install lsb -y --fix-missing
(이걸 해결하지 않으면 앞으로 에러가 많이 생기니까 꼭 해주자!! 처음에 이걸 안해서 생긴 에러는 밑에 정리했다.)
이제 ROS 공식 홈페이지를 보면서 ROS를 설치하면 된다.
📌 공식 홈페이지에서 적혀있는 코드에서 "sudo"를 전부 빼야 한다.
sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
apt install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add -
apt update
apt install ros-melodic-desktop-full
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
apt install python-rosdep
rosdep init
rosdep update
echo "alias cm='cd ~/catkin_ws && catkin_make'" >> ~/.bashrc
echo "eb='vim ~/.bashrc'" >> ~/.bashrc
echo "sb='source ~/.bashrc'" >> ~/.bashrc
roscore
을 실행해서 잘 돌아가면 설치가 잘 된 것이다!
exit
을 눌러서 컨테이너를 나온다.
docker ps -a
를 입력하면 지금까지 우리가 있었던 ros 컨테이너를 있는 걸 볼 수 있다.
앞으로 필요할 때마다 사용하기 편하게 이 ros 컨테이너를 이미지로 저장해두자.
docker images -a
를 입력하면 아직 ros 이미지는 없는 것을 볼 수 있다.
docker commit {CONTAINER ID} {MY IMAGE NAME:TAG}
를 하면 컨테이너가 이미지로 저장된다.
다시 이미지를 확인해보면 ros가 추가된 것을 볼 수 있다!
위에서 말했듯이 apt-get install lsb -y
에서 생기는 에러를 해결하지 않아서 ros를 설치할 때 많은 어려움을 겪었다. 그 내용은 아래와 같다.
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add -
여기서 에러가 생겼다.
"E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation
(23) Failed writing body"
apt-get update && apt-get install -y gnupg2
을 실행하니 또 다른 에러가 떴다.
➡️apt-get install gnupg1
으로 해결
다시 curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add -
을 입력하니까 "OK"라는 문구가 떴다.
apt update
apt install ros-melodic-desktop-full
이번엔 아래와 같은 에러가 떴다.
E: Unable to correct problems, you have held broken packages.
하지만 실패했고 결국 이 컨테이너를 지우고 다시 처음부터 해보면서 apt-get install lsb -y
에서 생긴 에러를 고치지 않아서 이런 문제가 생겼다는 걸 알게 되었다...!
참고한 사이트)
WSL2 ROS (with Docker)
(ROS 삽질기 - 0) Docker 환경에서 ROS 돌리기
WSL2 ROS (with Docker)