Development/Docker

[Docker] Docker를 이용하여 ROS 실행 및 GUI 보는 방법

jstar0525 2022. 9. 1. 03:22
반응형

https://jstar0525.tistory.com/202

 

[Docker] Deep Learning 및 ROS 연구 개발 환경 setting

내가 사용하는 딥러닝 개발 환경에 대하여 서술하고자 한다. Deep Learning과 관련하여 우리 연구실에서 다수의 연구원들이 개별 PC에서 서버로 ssh를 통하여 접속하고 GPU들을 사용을 한다. 지금까지

jstar0525.tistory.com

위에서 언급한 Docker 설정 후,

ROS를 실행하고 GUI를 보는 방법은 아래와 같다.

 

여기에서는 아래의 두가지 방법으로 GUI를 띄우는 방법을 알아본다.

 

※주의 : Windows11에서는 GUI가 실행되지 않거나 문제가 있을 수 있음 (2023년 1월 21일 기준)

 

Docker에서 GUI 띄우는 방법

  • Ubuntu 화면에 GUI 띄우기
  • Windows10에서 MobaXterm의 X server를 이용하여 원격으로 GUI 띄우기

 

1) Ubuntu 화면에 GUI 띄우기

아래 방법은 우분투를 실행한 컴퓨터의 모니터에 GUI를 Docker를 사용하여 띄우는 방법이다.

(1) 실행하려는 터미널에 xhost 설정을 한다.

xhost +

(2) xhost 설정을 실행한 터미널에서 도커를 실행시킨다.

docker run -it \
    --privileged \
    --gpus all \
    -e DISPLAY=$DISPLAY \
    -e QT_X11_NO_MITSHM=1 \
    -v /tmp/.X11-unix:/tmp/.X11-unix:rw \
    -v /etc/localtime:/etc/localtime:ro \
    -e TZ=Asia/Seoul \
    -v /dev:/dev \
    -w /root \
    osrf/ros:melodic-desktop-full

이 때, $DISPLAY는 같은 컴퓨터라고 해도 부팅할 때마다 값이 변할 수 있어 변수($DISPLAY)를 사용한다.

 

2) Windows10에서 MobaXterm의 X server를 이용하여 원격으로 GUI 띄우기

아래의 방법은 X server를 이용하여 Windows10으로 GUI를 띄우는 방법이다.

(1) MobaXterm 설정

  • configuration

  • x11 remote access : full
    • OpenGL acceleration의 Hardware는 Windows10의 GPU를 사용하는 것이고,
      Software는 Hardware를 사용하지 않고 software를 사용하는 것이다.
    • 원인을 모르겠지만 가끔 Hardware에서 작동되지 않을 경우도 있다.
    • software와 hardware의 차이는
      mobaxterm에서 해당 원격 PC로 ssh 접속한 후
      아래의 명령을 실행하면 알 수 있다.
glxinfo | grep 'OpenGL renderer'

  • check X server IP

(2) docker 실행

  • Mobaxterm의 X server IP를 docker를 실행할 때 옵션에 넣어
    Docker를 실행한다.
docker run -it \
    --privileged \
    --gpus all \
    -e DISPLAY=192.168.131.2:0.0 \
    -e QT_X11_NO_MITSHM=1 \
    -v /tmp/.X11-unix:/tmp/.X11-unix:rw \
    -v /etc/localtime:/etc/localtime:ro \
    -e TZ=Asia/Seoul \
    -v /dev:/dev \
    -w /root \
    osrf/ros:melodic-desktop-full

 

DISPLAY 옵션

Docker를 실행하고

이미 실행한 DISPLAY값을 변경하려면

아래의 두 가지 방법 중 자신이 GUI를 띄우고 싶은 방법을 진행한다.

 

1) 로컬 모니터에 GUI 띄우기

DISPALY값을 확인하려면

로컬에서
아래의 명령을 통해서 알 수 있다.

$ echo $DISPLAY
:0

위에서 확인된 값을 통하여

Docker에서

아래의 명령을 실행하고

같은 터미널에서 GUI를 실행한다.

export DISPLAY=:0

 

2) Windows10에 Mobaxterm을 통해 GUI 원격으로 띄우기

또는 이미 실행한 Docker에서

Mobaxterm 통한 GUI를 보기 위해서는

Docker에서

자신의 DISPLAY X Server IP를 export하고
같은 터미널에서 GUI를 실행한다.

export DISPLAY=192.168.132.2:0.0

 

GUI 테스트

# roscore
# source /opt/ros/melodic/setup.bash
# rosrun turtlesim turtlesim_node

# rqt

# rviz

 

# gazebo

# source ~/ws_moveit/devel/setup.bash
# roslaunch panda_moveit_config demo.launch rviz_tutorial:=true

http://docs.ros.org/en/melodic/api/moveit_tutorials/html/doc/getting_started/getting_started.html

 

Getting Started — moveit_tutorials Kinetic documentation

Download Example Code To easily follow along with these tutorials, you will need a ROBOT_moveit_config package. The default demo robot is the Panda arm from Franka Emika. To get a working panda_moveit_config package, we recommend you install from source. W

docs.ros.org

반응형