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でROS2を使う

Posted at

はじめに

本記事では、Windows11 環境Docker を使って ROS2 の最新バージョン「Jazzy」を動かす手順を解説します。GUIを使った turtlesim のチュートリアルも動作確認済みです。

記事の対象者

  • ROS2ってLinuxでしか動かないんじゃないの?っていう人
  • WindowsにDockerを入れたけどGUI表示の仕方がわからない人

1. 前提条件

以下の環境が準備されている必要があります:

  • Windows 10/11
  • Docker Desktop インストール済
  • WSL2 有効化済

2. X Server の準備(VcXsrv)

Windows 上で GUI アプリケーションを表示するために、X Server を起動します。

VcXsrvのダウンロード

以下のリンクからVcXsrvをダウンロードできます。

VcXsrv の設定手順

  1. スタートメニューから「XLaunch」を起動
  2. Display settingsMultiple windows を選択し「Next」
  3. Client startupStart no client を選択し「Next」
  4. Extra settingsDisable access control にチェックを入れて「Next」
  5. 最後に「Finish」で起動

image.png

X Server はバックグラウンドで動作します。エラーが出なければ準備完了です。

3. Docker コンテナの起動

【操作する場所】

PowerShell または Windows ターミナル

以下のコマンドで ROS2 Jazzy 環境を持つ Docker コンテナを起動します:

docker run -d --rm \
  --name ros_jazzy \
  -e DISPLAY=host.docker.internal:0.0 \
  osrf/ros:jazzy-desktop \
  sleep infinity

sleep infinity を指定することで、コンテナが即終了せず常駐します。

image.png

4. コンテナ内で turtlesim を実行する

ここからは複数のターミナルを使用します。

GUI ノードを起動

まずはコンテナに入ります:

docker exec -it ros_jazzy bash

次にROS2環境を有効化:

source /opt/ros/jazzy/setup.bash

turtlesim の GUI ノードを起動:

ros2 run turtlesim turtlesim_node

image.png

亀が起動

image.png

キー入力の受付

GUIノードとは異なるターミナルを立ち上げ以下のコマンドで再度コンテナに入ります:

docker exec -it ros_jazzy bash

同様にセットアップして、キーボード操作用ノードを起動:

source /opt/ros/jazzy/setup.bash
ros2 run turtlesim turtle_teleop_key

image.png

ターミナル上で矢印キーを押すと、turtlesim のウィンドウでカメが動きます!

image.png

5. トラブルシューティング

カメが表示されるが動かない

対象のターミナルをクリックしてから矢印キーを押さないと入力が反映されません。

GUI が表示されない

  • VcXsrv が起動しているか確認
  • Windows ファイアウォールのアクセス許可を確認

おまけ

カメの初期位置を変更したい

turtlesim_node 起動後に別ターミナルで以下を実行:

ros2 service call /kill turtlesim/srv/Kill "{name: 'turtle1'}"
ros2 service call /spawn turtlesim/srv/Spawn "{x: 2.0, y: 8.0, theta: 1.57, name: 'turtle1'}"

まとめ

  • Docker + Windows でも ROS2 Jazzy の GUI アプリが動作可能
  • VcXsrv を使えば turtlesim もスムーズに操作可能
  • docker exec を活用して複数ターミナルを使おう

ここまででWindows*Dockerでturtlesimを利用することでできました。

あとは公式ドキュメントを参考にチュートリアルを進めてください。

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?