09-17 16:42
Notice
Recent Posts
Recent Comments
반응형
관리 메뉴

BAN2ARU

[Ubuntu 20.04] 도커환경에서 ROS2 Foxy 설치하기 본문

Study/ROS

[Ubuntu 20.04] 도커환경에서 ROS2 Foxy 설치하기

밴나루 2023. 5. 29. 16:09

환경 : 라즈베리파이 Ubuntu 20.04 (일반 pc의 ubuntu 환경에서 동일하게 진행해도 될 듯?)

도커의 경우에는 공식홈페이지를 활용하여 설치를 진행하여 주세요~ 도커를 활용하지 않고 local 환경에서도 ROS를 직접 설치하여 진행하는 방법도 있으니, 혹시 도커를 활용하지 않는 경우에는 검색하셔서 ROS 설치를 진행하시면 됩니다.

1. ROS 설치

1_1. 도커 허브에서 이미지 다운로드

도커 허브(해당 링크는 Docker Official Image로 되어있는것으로, dockerhub에서 ROS검색 후, 원하는 이미지 다운로드도 가능)에서 ROS 이미지를 다운로드받는다. foxy를 활용할 예정이여서 foxy 이미지를 받았다.

docker pull ros:foxy

1_2. GUI 설정

ROS의 경우에는 GUI 사용이 거의 필수적이다. 이를 위해 몇가지의 작업을 수행해주어야한다. 우선 ubuntu에 다음과 같이 xhost 설정을 해주어야 한다.

DISPLAY 환경 변수 설정

export DISPLAY의 경우에는 연결하고자 하는 장비에 모니터가 연결되어있다면 echo $DISPLAY를 통해서 나온 값을 넣어주면 된다.

export DISPLAY=:1 
sudo apt install x11-xserver-utils 
xhost +local:docker

도커컨테이너 실행하기

  • —name: 생성할 컨테이너에 임의의 이름을 지정해주는 옵션
  • -it: install 과 terminal 옵션을 합친 것으로, 컨테이너를 종료하지않은 채로 터미널의 입력을 컨테이너로 전달하기 위해서 사용되는 옵션
  • —privileged : 시스템 주요 자원에 접근할 수 있는 권한 부여하는 옵션
  • -v /dev:/dev : -v는 볼륨 지정 옵션으로 호스트와 컨테이너의 디렉토리를 연결하는 옵션. usb로 연결한 cyglidar를 인식하기 위함
  • -v /tmp/.X11-unix:/tmp/.X11-unix: -v는 볼륨 지정 옵션으로 호스트와 컨테이너의 디렉토리를 연결하는 옵션.(<Host 절대경로>:<Container 절대경로> 순서) ROS는 기본적으로 GUI가 필요므로 x11을 사용하기 위해 지정해줌.
  • -e DISPLAY=$DISPLAY: e는 컨테이너 내에서 사용할 환경변수를 설정하는 옵션. GUI로 x11을 활용하므로 DISPLAY에 x11로 지정해줌.
  • /bin/bash : 이미지 안의 /bin/bash를 실행하는 옵션임
docker run --name ros_cyglidar -it --privileged -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY ros:foxy /bin/bash

만약 현재 실행중인 모니터에서 GUI를 보고자 하는 경우에는 옵션을 아래와 같이 작성 (윈도우에서 Xserver 실행 관련은 해당 페이지에서 확인 필요)

docker run --name ros_cyglidar -it --privileged -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/.Xauthority:/root/.Xauthority:rw -e DISPLAY=$DISPLAY --net host ros:foxy /bin/bash

GUI 동작 확인하기

docker를 실행하고 나면 apt-get update 후, GUI 실행을 위한 x11-apps를 수행해준다.

apt-get update
apt-get upgrade
apt-get install x11-apps
export DISPLAY=:1
xeyes

1_3. ROS 추가 설치 진행

차례대로 수행해주면 디스플레이에 눈 모양이 뜨는 것을 확인할 수 있다. 이젠 ROS2의 원활한 동작을 위해 차례대로 추가적인 설치를 진행해준다.

sudo apt update 
sudo apt upgrade 
sudo apt install ros-foxy-desktop python3-argcomplete 
sudo apt install ros-foxy-ros-base python3-argcomplete 
sudo apt install ros-dev-tools

(선택) 해당 부분까지 docker image 저장하기

지금까지 설치 진행된 내역을 저장하기 위하여 docker image를 저장해준다.

exit 
docker commit [컨테이너명] [원하는 이미지명] 
docker start [원하는 이미지명] 
docker attach [원하는 이미지명] 
export DISPLAY=:1

ROS2 동작 테스트

설치한 ROS2가 제대로 동작하는지 다음과 같은 코드를 통해 확인해준다.

ros2 run turtlesim turtlesim_node
728x90
Comments