로봇/ROS

Windows에서 Docker를 이용해 ROS2, Gazebo 설치하기

with-RL 2023. 7. 12. 23:47

이 포스트는 로봇 시뮬레이션을 위해서 ROD2와 Gazebo를 Docker를 이용해서 Windows에 설치하는 방법에 대한 설명입니다.

이 과정은 다음 환경에서 구성했습니다.

  • windows 11
  • Docker Desktop v4.19.0

이 포스트는 다음 과정을 완료한 후에 참고하시길 바랍니다.

1. VcXsrv Windows X Server 설치하기

  • Docker에서 사용하는 Linux는 화면을 출력하기 위해서는 X11이라는 프로토콜을 이용합니다. X11을 Windows에서 사용할 수 있도록 하기 위한 VcXsrv라는 프로그램을 설치하는 과정입니다.
  • VcXsrv Windows X Server 사이트에 접속 후 설치 프로그램을 다운로드합니다.

  • 다운로드한 설치 프로그램을 더블클릭해서 ‘VcXsrv’ 프로그램을 설치합니다.

  • Windows 프로그램에서 ‘XLaunch’를 실행합니다.

  • ‘Display settings’ 창에서 ‘Display number’를 0으로 설정하고 ‘다음’ 버튼을 누릅니다.

  • ‘Client startup’ 창에서는 기본 값 그대로 ‘다음’ 버튼을 누릅니다.

  • ‘Extra settings’ 창에서 ‘Disable access control’을 선택 후 ‘다음’ 버튼을 누릅니다.

  • ‘Finish configuration’ 창에서 ‘마침’ 버튼을 누르면 설정이 완료됩니다. ‘Save configuration’ 버튼을 눌러서 설정값을 저장해 놓으면 이후에는 저장된 설정값을 더블 클릭하면 현재 설정으로 ‘VcXsrv’가 실행됩니다.

  • Windows의 ‘작업 표시줄’의 ‘숨겨진 아이콘 표시’를 누르면 ‘XLaunch’ 아이콘을 확인할 수 있습니다.

2. ROS2 설치

  • 다음은 Docker를 이용해 ROS2를 설치하는 과정입니다.
  • ROS2 Humble Distributions 사이트에 접속하면 다운로드 가능한 ROS2 버전을 확인할 수 있습니다. 현재 기준 가장 최신 버전인 Humble을 설치하겠습니다.

  • 적당한 위치에 ‘ros.yml’ 파일을 만들고 내용을 아래와 같이 편집합니다.
name: ros
services:
  ros2:
    image: osrf/ros:humble-desktop-full
    container_name: ros-ros2
    environment:
        DISPLAY: host.docker.internal:0.0
    ports:
        - “10000:10000”
    stdin_open: true
    tty: true
    entrypoint: /bin/bash
  • 아래 명령을 ‘Windows Power Shell’에서 실행해서 ROS2 docker 이미지를 설치합니다.
$ docker-compose -f .\ros.yml up

  • 아래와 같이 ROS2 docker 컨테이너가 실행 중인 것을 확인할 수 있습니다.

  • 다음은 아래 명령을 실행해서 ROS2 컨테이너에 접속합니다. 이후로는 편의상 Windows에서 실행하는 명령은 ‘$’으로 표현하고 컨테이너에서 실행하는 명령은 ‘#’으로 표현하겠습니다.

  • 아래 명령으로 로그인 시 ROS2 환경이 자동으로 설정되도록 합니다.
# echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
  • ROS2 환경을 설정하기 위해 로그아웃 후 다시 로그인합니다.
# exit
$ docker exec -it ros-ros2 /bin/bash
  • ROS2에서 Windows로 화면이 정상적으로 출력되는지 확인을 위해 아래 명령을 실행해서 turtlesim을 실행합니다. Windows에 아래와 같은 화면이 실행되면 정상입니다.
# ros2 run turtlesim turtlesim_node

  • 다른 ‘Windows Power Shell’을 실행하고 ROS2에 접속 후 아래 명령을 실행해서 key를 입력받을 수 있는 ‘turtle_teleop_key’ 프로그램을 실행합니다.
$ docker exec -it ros-ros2 /bin/bash
# ros2 run turtlesim turtle_teleop_key

  • 키보드의 상하좌우 화살표를 움직이면 화면의 로봇이 움직이는 것을 확인할 수 있습니다. 확인이 끝나면 CTRL+C를 눌러서 프로그램 두 개를 모두 종료합니다.

3. 관련 프로그램 및 Gazebo 설치하기

  • Gazebo는 로봇을 시뮬레이션할 수 있는 프로그램입니다. 실제로 로봇을 구축하고 테스트하기에는 너무 많은 노력이 필요하므로 시뮬레이션을 충분히 해본 후 실제 로봇을 구축하는 것이 더 효율적입니다.
  • 비슷한 툴에는 Unity Robotics Simulation, NVIDIA Isaac Sim 등이 있습니다.
  • ROS2 컨테이너에서 아래 명령을 실행해서 관련 프로그램 정보를 갱신합니다.
# apt update

  • 아래 명령을 실행해서 변경된 프로그램을 업데이트합니다.
# apt upgrade

  • ROS 컨테이너에 추가로 필요한 프로그램 ‘git’, ‘python3-pip’를 아래 명령으로 설치합니다.
# apt install -y git python3-pip

  • Gazebo 관련 프로그램을 아래 명령을 실행해서 설치합니다.
# apt install -y python3-colcon-common-extensions \
ros-humble-joint-state-publisher-gui \
ros-humble-gazebo-plugins \
ros-humble-joint-state-publisher \
ros-humble-gazebo-ros

  • 아래 명령을 실행해서 Gazebo를 실행합니다.
# gazebo

  • 아래와 같은 화면이 실행되면 정상입니다.

'로봇 > ROS' 카테고리의 다른 글

ROS2 Minimal Tutorial - Topic  (0) 2023.07.14
ROS2 Minimal Tutorial - Basic  (0) 2023.07.13
ROS1에 CygLiDAR 연동하기  (0) 2023.01.19
ROS1에 YOLO v5 연동하기  (1) 2023.01.18
Ubuntu에서 Docker를 이용한 ROS1, ROS2 설치  (0) 2023.01.17