水彩(仮)

NULLPointerExceptionガッ

Gazeboを使う際に注意してほしいこと。その2

続きです。

 

2.docker上では注意!dockerからの起動方法

Gazeboはdocker hubに公式としてイメージを配布しておりますが、これ表示できなくね?と思いました。そう、dockerのコンテナ上にはディスプレイがありません。どうすんだよって話ですが、大きく分けて3パターンの解決方法があります。

 

まず一つ目。

gzserver,gzclientを使う方法です。gzserverをdocker上のコンテナで、gzclientをホストのPCで,という方式です。

最近dockerがWindowsMacでもVirtual boxを介さず起動できるようになるとの発表がありましたので,そのうちこの方法が使えるようになると思います。厳密に言えば使えなくはないですがポート等の問題があるので、かなり厳しいと思います。

この方法の欠点はわざわざホスト側のPCにGazeboをインストールしなければならないことです。環境を汚さないことがdockerの大きな利点ですから、一番良い解決方法ではあるのですが、少しどうなのって感じです。

 

次に二つ目。

Xwindowを使う方法です。Xwindowはディスプレイの情報を別のPCに持って行けるので画面を転送すればできます。

これもまあまあ問題があります。まずGazeboは3Dのレンダリングがなされているため、Mac,Windowsでは3Dレンダリング関連で引っかかりまともに動かせません。

Ubuntuでは動作しますが、なぜか一部の画面が欠落したりでなんだかんだ使えません。

f:id:syoamakase:20160331161436p:plain

こんな感じ。左が欠落しています。VM上でしか試していませんので、もしかしたらネイティブでlinuxをインストールしている場合は使えるかもしれません。

 

最後に三つ目。

gzwebを使う方法です。その1でもちらっと書きましたがgzwebとは何かといいますとgzclient(3Dモデルのレンダリング)の機能をWebブラウザでしようとするものです。

機能は制限されてしまいますが、ある程度使えます。PR2等のセンサーなどが多いもの

では処理がかなり重いので、軽めのロボットを使うのであれば十分使えるでしょう。

 

基本に立ち返って…

さて、ここでは結局Gazeboって何が向いているんだって話ですね。Gazeboは物理シミュレータと銘打っているため、当然重力等を考慮した環境が必要な場合には有効です。

逆に、そんなのは別に要らない、リアルな画像が欲しいんだ、って場合は逆に向いていないと思います。その場合はUnityやUnreal Engine等のほうが相性がいいですし、何より動かしやすい(重要)。やりたいことが物理演算が必要ならばGazebo、要らないならまた別のものを考慮したほうがよいです。