VMware Fusionにお世話になっております
私が使っているMacBook ProがBootcampでUbuntuをインストールできないので、他のOSを使用したいときは仮想環境を利用するしかありません。さまざまな仮想環境から選ぶうえで、
- 無料
- 他の仮想環境に比べて描画が早い
という点でVMware Fusionを選んでいます(なお、私は無料になる前に課金していました)。
前提として、仮想環境で処理を行う場合、その性能はマシンが持つ処理能力よりもかなり劣ってしまいます。例えば、定番である仮想環境VirtualboxでROSのGazeboを動かすと遅すぎて使えないレベルであります。それゆえに、描画の速さはGazeboのようなシミュレータを使用する際には大切なポイントになります。
私はVMware Fusionにお世話になりっ放しなのですが、UbuntuでROSを動かす際にはまったことがありましたので、対処方法をメモ代わりに書いておきます。
環境
- PC:MacBook Pro (2020, Intel CPU)
- OS:OSX Big Sur
- 仮想環境:VMware Fusion 12.2.1
- 仮想環境で動かしているOS:Ubuntu 18や20
Ubuntuのディスク容量がなぜか減る
ドラッグ&ドロップでファイルを母艦のOSから受け渡ししていませんか? この便利な機能を使ってる方は ~/.cashe/vmware/drag_and_drop
の下にフォルダが生成されているかどうか確認しましょう。そして全て削除しましょう。
Gazeboが起動しない。
こちらの srsさんの神記事 ROS講座54 VMWare上でROSを使う - Qiita - を参照しましょう。
VMwareはどうやらOpenGL3系に対応していないらしくて、VMware上でgazeboを起動しようとすると失敗します。export SVGA_VGPU10=0の環境変数を付けるとOpenGL2系を使うようになり、正常に立ち上がります。bashrcに書いておきましょう。
ただ、VMware Fusion 12はOpenGL3に対応しているようです。これが↓の問題に関係します。。
Gazebo内のRGBDカメラが変なDepthイメージを出す
RealsenseやKinectなどDepthイメージをセンシングできるRGBDカメラをGazeboで使用するとき、はまりポイントがありました。
上記の通り、VMwareでGazeboを表示させるためには、描画系のOpenGLのバージョンをを3から2に下げることになります。その状態でRGBDカメラをGazeboでシミュレートすると、このような現象が発生します。
Gazeboでdepth cameraのシミュレーションがおかしい件の続き。
— nisshan_ にっしゃん (@nisshan_) November 6, 2021
この記事の通りやっても、変な壁が現れる…。
もう無理…。環境を捨てて再構築しよう…。https://t.co/t0wxEHlBRP pic.twitter.com/Vnb5dhZ6mR
Depth情報を生成するときにレイトレーシングしているのですが、RGBカメラ画像の位置と整合性を取るために描画されたバッファが見えてしまっている気がします。ポイントクラウドを見ると、カメラの前に常に四角い板があるように見え続けるのです。このような状態だと何もできません…。
試行錯誤の結果、OpenGLのバージョンを3に上げると問題が発生しないことが分かりました。ゆえに「Gazeboでdepth cameraのシミュレーションを、VMwareで構築したUbuntu上で実行したいときは、 Ubuntu20のROS Noetic を使いましょう」。もちろん、 export SVGA_VGPU10=0
の環境変数をbashrcから削除しましょう。
結果、このように正しく深度データを取得できるようになりました。
おー、ROS Noeticでは発生しない!
— nisshan_ にっしゃん (@nisshan_) November 6, 2021
(Melodicで問題発生)
Noeticで環境構築を進めよう。 pic.twitter.com/lwVsy1pJzb