@karaage0703さんが紹介してくれていた「Docker上でGUIのROS1/ROS2を一瞬でセットアップする方法」を試したところ、とても便利でした。
Dockerでコンテナを起動して、ブラウザからアクセスするだけでROS/ROS2が使える。超お手軽。
ブラウザでアクセスできて便利なんだど、操作しにくい・・・と思ったら、5900ポートを開放するだけで、他のVNCクライアントが接続できた。
画面サイズが小さくて使いにくいな・・・と持ったら、環境変数を設定するだけで画面サイズが変わった。
サクッと試してみるには最高の環境。
Docker外のROSと接続できれば、更に最高なんだけど・・・諦めた。
使いやすいDockerイメージを公開してくれた@Tiryohさん、紹介してくれた@karaage0703さんに感謝。
- コンテナ起動(ROS Melodic)
- コンテナ停止
- コンテナ停止後の起動
- ブラウザで画面にアクセス
- VNCクライアントとでアクセス
- コンテナのシェルに入る
- コンテナのシェルからGUI起動
- コンテナ内にパッケージを追加するときの注意点
- ROS 2 Dashingの場合の起動例
- メモ
- リンク
コンテナ起動(ROS Melodic)
初回の起動
$ docker run --name ros -p 6080:80 -p 5900:5900 -e RESOLUTION=1280x800 --shm-size=512m tiryoh/ros-desktop-vnc:melodic
コンテナ停止
$ docker stop ros
コンテナ停止後の起動
$ docker start ros
ブラウザで画面にアクセス
Webブラウザで http://127.0.0.1:6080 にアクセスすれば、すぐ使える。
VNCクライアントとでアクセス
VNCクライアントで http://127.0.0.1:5900 にアクセスすれば、すぐ使える。
Real VNC Viewerで接続を確認。
コンテナのシェルに入る
$ docker exec -it ros bash
bashよりも/bin/bashの方が正確だけど、楽なのでbashで。
コンテナのシェルからGUI起動
コンテナのシェルに入ってから環境変数DISPLAYを設定すれば、VNCで表示中の画面に対してGUIを起動できる。
例: コンテナのシェルに入ってから、VNCの画面でrqt起動
$ docker exec -it ros bash # export DISPLAY=:1 # rqt
コンテナ内にパッケージを追加するときの注意点
初回のみ apt update を実行しないとインストールに失敗する。
例:ネットワーク関連パッケージの追加。コンテナのシェルに入ってから実行。
$ apt update $ apt install iputils-ping net-tools tcpdump traceroute
ROS 2 Dashingの場合の起動例
$ docker run --name ros -p 6080:80 -p 5900:5900 -e RESOLUTION=1280x800 --shm-size=512m tiryoh/ros2-desktop-vnc:dashing
メモ
docker-ubuntu-vnc-desktopの中では、仮想フレームバッファ Xvfb が使われている。
ブラウザだけでアクセスできるVNCの名称は noVNC。
リンク
Docker上でGUIのROS1/ROS2を一瞬でセットアップする方法
ROS/ROS2のGUIをWebブラウザ経由でお手軽に試せるDockerfileを公開しました
GitHub:docker_ros-desktop-vnc
GitHub:docker_ros2-desktop-vnc
GitHub:docker-ubuntu-vnc-desktop
docker_ros-desktop-vncのベースイメージ。docker runで渡すと便利な引数が記載されている。
Windows + Docker + VS Code でROS 開発
Docker + ROS(kinetic)でチュートリアル
ROS1の複数コンテナ間で通信が便利そう。まだ試してない。
ROS複数Docker通信
ROS1/ROS2混在のコンテナ間で通信したい場合は便利そう。まだ試してない。
Docker-docs-jaドキュメント(Docker for Mac)
Docker Official Images:ROS