以前、GPUを持っていない人が、GPUを用いた強化学習をrosのgazeboでするためにGCPで仮想的にGPU環境を作るという記事を書きました。ここでは試験的にこのサイトを参考にroboschoolを動かすところまでやりました。
本記事ではこの記事で作成した環境があることを前提に話をします。
以下の記事を参照してください。
GCP+Docker+GPUでrosを動かす (1) ~ GCPでGPUとVNCを用いた環境の構築 ~
本記事では以下2つのDocker imageを参考にDocker + ros + gazebo + VNCを実現できるDocker imageを作成しましたので紹介いたします。
dorowu/ubuntu-desktop-lxde-vnc
ct2034/docker-ubuntu-vnc-desktop
#作成した環境
- ubuntu18.04
- ros melodic
- gazebo 9.0
- VNCで動作可能
上記の環境を作成した理由としては、ubuntu16.04、ros kineticの環境はあったがすでにkineticからmelodicに移行している人が大半で、melodicでの環境を構築することに需要を感じたからです。
#Docker imageの使い方
以前の記事で作成した環境があれば、VNC Viewer for Google Chromeを用いて、GCPのVMのデスクトップに入ることができると思います。
ここまでできていれば今回のはかなり簡単です!
まずはDocker HubからDocker imageをpullする。
$ sudo docker run -it --rm -p 6080:80 mtakeshi1222/ros_gui
これでコンテナが立ち上がります。
次に、VNC Viewer for Google Chrome上のデスクトップからFirefoxを起動します。
起動したFirefoxでhttp://localhost:6080 に接続します。(前回のroboschoolと同様です)
これでubuntuのデスクトップが表示されます。
あとはデスクトップ上にあるTerminatorを用いてroscore
なりrviz
なりgazebo
なりで試していただければいいと思います。
参考までにTerminatorはCtrl + Shift + Eでターミナルを縦に二分します。同様にCtrl + Shift + Eで横に二分します。
Terminatorで以下のコマンドを入力する。このとき別々の端末を使用
$ roscore
別の端末を用意(Terminator上でCtrl + Shift + Eなどする)
$ rviz
同様のことをgazebo
でもできる。
一度Terminatorを閉じて、再度開く。
Terminatorで以下のコマンドを入力する。このとき別々の端末を使用
$ roscore
別の端末を用意(Terminator上でCtrl + Shift + Eなどする)
$ gazebo
端末画面を3つ用意すれば以下のように3つ同時に動かすことも可能
$ roscore
別の端末を用意(Terminator上でCtrl + Shift + Eなどする)
$ rviz
別の端末を用意(Terminator上でCtrl + Shift + Oなどする)
$ gazebo
以上でGCPを用いてgazeboを動かすことができた。
#まとめ
GCPを用いることで固定資産に限らず様々な環境での実験をすることができることが分かった。次回はこの環境で強化学習を回すことを目指す。
githubやDocker Hubも共有するのでぜひスターお願いします。
また、コメントやプルリクもしていただけるととてもうれしいです。
github : 1222-takeshi/docker-ros-gazebo-vnc
Docker Hub : mtakeshi1222/ros_gui
###ひとこと
私の調べではubuntu18.04 + ros melodic + VNCの環境は世界でも初めてだと思う。なので、これを機にWindowsやMacのユーザも気軽にgazeboやrvizに触れられることを願っています。