環境
この記事は以下の環境で動いています。
項目 | 値 |
---|---|
CPU | Core i5-8250U |
Ubuntu | 16.04 |
ROS | Kinetic |
VMware | 14.1.1 |
インストールについてはROS講座02 インストールを参照してください。
またこの記事のプログラムはgithubにアップロードされています。ROS講座11 gitリポジトリを参照してください。
概要
実は私はほとんどUbuntuをVMの上で動作させています。VMを使っていてもネイティブ環境とほぼ同様にROSを使うことができます。VM上でROSを動かすときの注意点を書いていきます。
VM(ヴァーチャルマシーン)とは
VMとは仮想マシンのことで、別のシステム環境を再現するソフトです。今回の例で言いますと。Windows上で起動しているVMwareでは生のPC環境を再現していて、そこにUbuntuをインストールすることができます。この状態の時にWindowsをホストOS、UbuntuをゲストOSを呼びます。
これに対して普通にPCにUbuntuをインストールしている環境をネイティブ環境と言います。
メリット・デメリット
- メリット
- 普段使うWindows PC上でROSが使える。
- 複数のPCを所持する必要がない
- 複数のUbuntu環境を使い分けれる・同時に起動できる
- デメリット
- 演算やメモリの性能が低くなる、低く制限される。
- ネットワーク周りが面倒
- 予期せぬトラブルに会うことがある。
最大のメリットとして普段使っているwindowsPCにソフトをインストールするだけでUbuntuが使えるということです。わざわざUbuntu用に1つ余計にPCを持つ必要がありません。また1つのWindowsPC上で複数のVMを立ち上げることもできるので、通信周りのテストも簡単にできます。また簡単にインストール・アンインストールができるのでOSを破壊しかねないような危険な作業もリスクが低くできます。
デメリットとしてはVMであるが故の不具合がいくらかあることです。基本的には気になるようなものはないのですが、大きいものがあるので下に書いておきます。
VMの使い方
VMのソフトとしてVMwareとVirtualBoxの2つが有名ですが、今回はVMware workstation playerを使います。VMware workstation playerはWindowsとLinuxのみ対応で、Macには対応していません(VMware Fusionが対応しているらしいが、未検証)。
ダウンロード
製品のダウンロード - My VMwareでVMware Workstation Playerを選択します。
その次の画面でWindows版を選択してダウンロードします。
インストール
ダウンロードしたインストーラーの指示通りに行えばインストールされます。
Ubuntuイメージの入手
UbuntuのページのISOイメージを使います。
実機と違ってUSBメモリやDVDに焼く必要はありません。
新しいVMの作り方
VMWareを起動して「新規仮想マシンの作成」をクリックします。
次のウィンドウでインストーラーディスクイメージファイルのラジオボタンをONにして「参照」ボタンからUbuntuイメージを選択して、「次へ」を押します。
VMwareには「簡易インストール機能」があり、特定のOSについては通常よりも簡単にインストールをすることができます。以下の画面で情報を入れて「次へ」を押します。
- フルネームは何でも構いません。ログイン画面で表示される名前です(英数字で入れてください)。
- ユーザー名はbashのプロンプトの左側の名前です。
- 簡易インストールを入れるとホスト名(プロンプトの右側)はubuntuに固定になります。
- パスワードも好きなものを入れてください。
これで30分ほど待つとUbuntuのインストールは完了です。
この後ROSのインストールに入ります。ROSのインストールをした後に再起動するとこけることがあります。その時は参考ののリンクを参照に復旧してください。
VMwareで使うときのTips
low graphic modeの対処
apt upgrade
をした後で再起動するとlow graphic mode
と表示されることがあります。その場合はCtrl
+Alt
+F1
キーを押してCUI画面を開き、画面の指示に従ってユーザー名とパスワードを入れてCUIログインします。その後以下のコマンドを実行します。
sudo apt purge -y ubuntu-desktop
sudo apt purge -y lightdm
sudo apt install -y tasksel
sudo tasksel install ubuntu-desktop
カメラ
なぜかWebカメラが使えません。Webカメラをつないでも/dev/video0は出現するのですが、uvc_cameraなどで起動しても真っ黒い画像しか出てきません。
対処法として、vmwareの設定でusbの互換性を「USB2.0」から「USB3.0」に変更することでROSとして画像を読み込むことができました。
USBカメラはUSB2.0ですし、この設定をしても一部のGUIアプリケーションだとカメラ画像につながらなかったりするのですが、私の環境ではROSならつながりました。
ネットワーク
VMのネットワークは色々な種類がありますが、ここでは2種類があります。
NAT
ホストOSとゲストOSの間でネットワークを構成します。ホストOSがインターネットにつながっているならゲストOSからもインターネットを参照することはできますが、ネットワークが分離されているために外部からゲストOSに接続することは基本的にできません。ゲストOSのIPアドレスはVMwareがDHCPしてくれます。
ブリッジ
ホストOSとゲストOSがともに並列の関係でネットワークにつながります。この時にゲストOSのIPはルーターがDHCPする必要があります。
ルーターによっては相性が悪く、ブリッジモードにしてもIPをDHCPしてくれない物もあります。
設定の仕方
まず右上のネットワークのマークのボタンを右クリックして「設定」を選びます。出てくるウィンドウでネットワークの部分を選んで
、そこでNATなりブリッジモードなりを選びます。
gazeboを使う設定
VMwareはどうやらOpenGL3系に対応していないらしくて、VMware上でgazeboを起動しようとすると失敗します。export SVGA_VGPU10=0
の環境変数を付けるとOpenGL2系を使うようになり、正常に立ち上がります。bashrcに書いておきましょう。
CPUコア・メモリの割り当て
標準だとプロセッサは1コア、メモリが1GBしか割り当てられていません。gazeboを起動するなら多めに割り当てましょう。
参考
VMwareのネットワーク構成
VMwareでのgazeboの起動
Ubuntuが起動しない