Docker 환경에서 ROS 설치

Speedwell🍀·2022년 5월 27일
0

Human Following Robot

목록 보기
18/18
post-thumbnail

여러 블로그를 참고해 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


1. Ubuntu 18.04 이미지 다운로드

docker pull ubuntu:bionic


2. Ubuntu 이미지를 이용해 컨테이너 생성하기

docker run -it --name ros ubuntu:bionic


powershell 창을 하나 더 열어서 docker ps라고 입력하면 아래와 같이 실행중인 컨테이너를 확인할 수 있다.


3. ROS 설치

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을 실행해서 잘 돌아가면 설치가 잘 된 것이다!


4. ros 컨테이너를 이미지로 저장

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)

0개의 댓글