0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows Docker DesktopにおけるUbuntuコンテナの作成方法とROSの環境設定

Posted at

0⃣ Windows Docker Desktopを起動

1⃣ コンテナの作成準備

  1. Windows Power Shellを開き、Dockerコンテナを作成したいディレクトリに移動する。
  2. 新規のコンテナを、ホストPCが内臓しているGPUを付属した状態で起動する。GPUをつけないとコンテナ内でGUIアプリケーションを動かした際に負荷がかかってPCがフリーズする可能性が高まってしまう。

以下はubuntu20.04で起動した例である。

# 新しいコンテナの起動
PS C:\Users\hamchan\Ubuntu20.04> docker run --gpus all -it --name v2 ubuntu:20.04
root@a7e0b835c8bf:/# apt update

“root”の表示は、すでにUbuntu20.04のコンテナにスーパーユーザとしてログインしている状態を指す。

以降の手順はすべて、Dockerコンテナ内での作業となる。

2⃣ コンテナ内の環境設定

# 環境設定
root@83ec67676497:/# apt update
root@83ec67676497:/# apt install -y locales
root@83ec67676497:/# locale-gen ja_JP.UTF-8
root@83ec67676497:/# update-locale LANG=ja_JP.UTF-8
root@83ec67676497:/# export LANG=ja_JP.UTF-8

3⃣ ROSのインストール

ここではROS Noeticをインストールする手順を述べる。ROSのバージョンやディストリビューションに関わらず、インストール手順は基本どのROSでも同じである。

# ROSのインストール
root@83ec67676497:/# apt install -y curl gnupg lsb-release
root@a7e0b835c8bf:/# sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
root@83ec67676497:/# curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add -
root@a7e0b835c8bf:/# apt update
root@83ec67676497:/# apt install -y ros-noetic-desktop-full

# ROSの初期設定
root@83ec67676497:/# echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
root@83ec67676497:/# source ~/.bashrc

# 追加パッケージのインストール
root@83ec67676497:/# apt install -y python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

#TurtleBot3のインストール
root@83ec67676497:/# apt install -y ros-noetic-turtlebot3
root@83ec67676497:/# apt install -y ros-noetic-turtlebot3-gazebo
root@83ec67676497:/# echo "export TURTLEBOT3_MODEL=waffle" >> ~/.bashrc
root@83ec67676497:/# source ~/.bashrc

rosのインストールには30分ほどかかる。

4⃣ GUIの環境設定

WindowsホストのXmingというアプリケーションを利用してDockerコンテナ内のGUIを動かせるようにするため、下記のコマンドを実行する。

GUIを起動するには、予めWindowsホスト側でXmingを起動しておく必要がある。

# Xサーバの設定
root@83ec67676497:/# apt install -y x11-apps

# DISPLAY環境変数の設定 
# export DISPLAY=<ホストPCのIPアドレス>:0.0
root@83ec67676497:/# export DISPLAY=1xx.xx.xx.x:0.0
root@a7e0b835c8bf:/# echo "export DISPLAY=1xx.xx.xx.x:0.0" >> ~/.bashrc
root@a7e0b835c8bf:/# source ~/.bashrc
root@a7e0b835c8bf:/# apt update

DISPLAY環境変数におけるIPアドレスは、ホストPCのWSLのIPアドレスを使用する。

ここで使用しているWindowsホストPCのIPアドレスは1xx.xx.xx.xである(各自のIPアドレスに置き換える)。WSLアドレスはホストマシンの起動のたびに変わる可能性があるので、ipconfigコマンドなどで逐一確認する必要がある。

以下のイーサネット アダプター vEthernet(WSL)項目のIPアドレスを使用する。ホストPCのIPアドレスではない。

上記と全く同じ設定をしているのにも関わらずGUIが起動しない場合は、WindowsホストPCのファイアウォール設定でXming X Serverのアクセスが許可されていない可能性がある。

コントロールパネルを開き、システムとセキュリティ > Windows Defender ファイアウォール > 許可されたアプリ > 設定の変更 の順にクリックして以下のような画面が表示されたら、リストから”Xming X Server”を探し、”プライベート”と”パブリック”の両方にチェックを入れる。

image.png

5⃣ ROSの動作確認

同じコンテナに接続したターミナルを3つ用意する。

1.一つ目のターミナルで

root@83ec67676497:/# roscore

2. 二つ目のターミナルで

# コンテナの起動
PS C:\Users\hamchan\Ubuntu20.04> docker exec -it a7e0b835c8bf /bin/bash

# Gazeboの起動
root@83ec67676497:/# roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch

GUIが正しく作動していれば、下図のようなGazeboアプリケーションが起動する。

image.png

3.三つ目のターミナルで

# コンテナの起動
PS C:\Users\hamchan\Ubuntu20.04> docker exec -it a7e0b835c8bf /bin/bash

# teleopノードの起動
root@83ec67676497:/# roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

TurtleBot3モデルの移動制御ができる。

4.操作手順

三つ目のターミナル(teleopコマンドを実行したターミナル)の画面をアクティブにした状態で該当キーボードを押すと、Gazebo画面上のモデルを動かすことができる。

使用キーはw,a,s,d,x,spaceである。

動画のようにGazebo上のモデルをキーボード操作できれば、rosは正しく動作しているといえる。

Gazebo2024-07-2320-49-27-ezgif.com-video-to-gif-converter.gif

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?