1. VcXsrv Windows X Server 설치하기

img

img

img

img

img

img

img

img

*MAC : XQuartz 설치하기

우리는 앞선 작업에서 Image 설정 작업을 완료했다. 그런데, “컨테이너 내부에서 Rviz나, rqt_graph를 실행하게 되면, 우리가 볼 수 있을까? CLI 환경인데..”

Linux에서는 X11 Forwarding이라는 것이 존재한다. SSH의 연결을 통해, GUI로 구성되는 디스플레이 출력을 전달해주는 기능이다. Ubuntu에서는 X11 Client, Mac에서는 XQuartz, 윈도우에는 XWindows를 사용하면 이 기능을 사용할 수 있다.

우선, XQuartz 공식 사이트에서 XQuartz를 받아 설치한다. XQuartz를 실행하면, 아무것도 뜨지 않을 수 있는데, 맥 좌측 상단에는 모든 메뉴가 표시된다. img

여기서 설정으로 들어간 뒤, 보안 탭에서 네트워크 클라이언트에서의 연결을 허용 항목을 체크해준다. img

2. Docker Desktop 설치

https://www.docker.com/products/docker-desktop/

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
$ docker-compose -f .\ros.yml up

img

img

C:\Users\admin\LSC>docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 368d2b103abc osrf/ros:humble-desktop-full “/bin/bash” 2 minutes ago Up 2 minutes 0.0.0.0:10000->10000/tcp ros-ros2

set DOCKER_TLS_VERIFY=
set DOCKER_HOST=
set DOCKER_CERT_PATH=
set DOCKER_MACHINE_NAME=

C:\Users\admin\LSC>docker exec -it ros-ros2 /bin/bash

# echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
# exit
$ docker exec -it ros-ros2 /bin/bash
# ros2 run turtlesim turtlesim_node

img

$ docker exec -it ros-ros2 /bin/bash
# ros2 run turtlesim turtle_teleop_key

img

img

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

# apt update

img

# apt upgrade

img

# apt install -y git python3-pip

img

# 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

img

# gazebo

img

img

Source : https://with-rl.tistory.com/entry/Windows%EC%97%90%EC%84%9C-Docker%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-ROS2-Gazebo-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

3. Mac 전용

1) Install Homebrew

Homebrew는 Mac OS에서 소프트웨어의 설치 및 업데이트에 용이하고 이를 통해 프로그래밍 언어, 라이브러리 등을 쉽게 설치할 수 있게 하는 패키지매니지 tool이다.

더욱이 homebrew는 Apple(또는 Linux)에서 제공하지 않는 유용한 패키지 관리자를 설치한다는 점에서 유용하게 쓰인다.

우선 터미널 창을 열어 다음 커맨드를 실행한다.

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

이를 통해 homebrew가 설치된다. homebrew 메인 페이지에 그대로 쓰여있어 이를 복사+붙여 넣기 해도 된다. Homebrew homepage

만약 터미널 창에 Next step란에 Run ~~ Commands in your terminal이라고 뜨면 그걸 그대로 복붙 해서 터미널에서 실행하면 된다. 그 후 터미널에 다음 커맨드를 실행한다.

$ brew doctor

2) Install Conda environment

ROS2 실행을 위한 conda 환경을 설정해주어야 한다. Anaconda 보다 가벼운 Miniconda나 Miniforge를 사용하는 것을 추천한다.

Mac m1 환경에서 Miniconda를 설치하는 방법은 아래 사이트에서 친절하게 설명해 주기 때문에 그대로 따라 하기만 하면 된다.

Miniconda Quick command install

(주의: 아래 그림처럼 ‘Mac OS’를 선택했는지 확인할 것.) img

conda가 정상적으로 설치되어 실행된다면 터미널 창에 줄마다 맨 앞에 ‘(base)’라는 문구가 나온다.

img img
   

3) Install ROS2 using Robostack

Robostack 홈페이지에 다음과 같이 설명되어 있다.

Welcome to RoboStack - a bundling of the Robot Operating System (ROS) by Open Robotics for Linux, Mac and Windows using the Conda package manager. We provide ROS packages for ROS1 Noetic and ROS2 Humble (as well as unsupported Melodic/Foxy/Galactic packages), as well as a variety of ROS related plugins for Jupyter notebooks.

다양한 OS platform에서 제공되며 Conda 환경에서 쉽게 ROS를 실행할 수 있게 한다고 한다.

Conda가 설치되었다면, (base)환경에서 아래의 코드 블록을 실행한다.

$ conda install mamba -c conda-forge

다음과 같은 주의사항이 있다고 한다. 아마 Ros 설치 중에 오류가 난다면 이와 관련된 오류가 될 것이다. img

Mamba를 설치했다면 Conda 가상환경을 만들어주자.

# ex) conda create -n robot_env
$ conda create -n "가상환경 이름"

가상환경 설치가 끝났다면 설치된 가상환경을 활성화시켜 주자.

# ex) conda activate robot_env
$ conda activate "앞에서 지은 가상환경 이름"

이렇게 해주면 앞에 있던 ‘(base)’가 ‘(가상환경 이름)’으로 바뀔 것이다. 가상환경을 잘 활성화시켰다는 의미! 그 후 conda environment configuration에 conda-forge와 robostack 채널을 추가하고, default 채널은 지워줘야 한다. 이때 주의할 것은 가상환경이 잘 활성화되어있는지 파악하는 것이다!

# this adds the conda-forge channel to the new created environment configuration 
$ conda config --env --add channels conda-forge

# and the robostack channel
$ conda config --env --add channels robostack-staging

# remove the defaults channel just in case, this might return an error if it is not in the list which is ok
$ conda config --env --remove channels defaults

이제 드디어 ROS2를 설치할 수 있게 되었다. ROS2 설치 커맨드는 다음과 같다.

# Install ros-humble into the environment (ROS2)
$ conda install ros-humble-desktop

그 후 초기화를 위해 가상환경을 deactivate 했다가 다시 활성화시켜주자.

# deactivate 먼저
condaa deactivate

# 다시 가상환경 activate
conda activate "가상환경 이름"

그 후 가상환경 내에서 ROS Package를 관리해 주고 도와주는 tool을 설치해 준다.

$ conda install compilers cmake pkg-config make ninja colcon-common-extensions catkin_tools rosdep

이렇게 되면 ROS2 설치가 끝났다!! 잘 설치되었는지 확인하기 위해서 Rviz를 실행시켜 보자.

$ rviz2

성공적으로 설치가 완료되었다면 다음과 같이 RViz가 새 창으로 열리게 된다. (Rviz는 로봇 시뮬레이션을 위한 3D 시각화 툴이라고 생각하면 된다)

img

4) Install Gazebo

Gazebo는 오픈 소스로 제공되는 가상 시뮬레이션 툴이다.

이를 통해 사용자 원하는 로봇을 가상 시뮬레이션에 삽입한 후, 삽입된 로봇과 사용자가 작성한 프로그램이 메시지를 주고받으며 동작하는 모습을 확인할 수 있게 해 준다. 이는 ROS와 별게 프로그램이기 때문에 따로 설치해 주도록 하자.

다행히도 한 줄만으로 간단하게 Gazebo를 설치할 수 있다고 한다. (그러나 아래의 커맨드로 간단하게 설치하는 것은 OS X 10.11 이상 버전에서 작동한다고 하니, 그 이전 버전인 경우 default standard library와 rebuilding dependencies를 바꿔야 한다고 합니다.. 참고하시길..)

별개의 프로그램이기 때문에 ROS설치를 위해 가상환경에서 벗어나야 한다. 우선 deactivate를 해주자.

$ conda deactivate

그럼 당연히 (base) 환경으로 바뀔 것이다. 이제 gazebo를 설치해 주자.

$ curl -ssL http://get.gazebosim.org | sh

이거 설치하는데 시간이 걸린다. 미뤘던 방 청소를 하고 오자.. 설치가 끝났다면 실행이 되는지 보기 위해 (base) 환경에서 gazebo를 실행해 주자.

$ gazebo

설치가 성공적으로 되었다면 다음과 같은 화면이 뜬다! img

Source : https://velog.io/@running_learning/Mac-M1-ROS2-Gazebo-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0