Windows で ROS2 のシミュレーションを行う (1)
VirtualBox による仮想マシンに Ubuntu 22.04 をインストールする
本資料では Windows で ROS2 のシミュレーションを行う方法を解説する。
ROS (ロス) は Ubuntu (ウブントゥ) という Linux (リナックス) で動作させるのが最もトラブルが少ない。
Linux とは OS のコアのことであり、Ubuntu とは様々ある Linux のバリエーションの一つと思っておいて欲しい。
(正確に言えば、Ubuntu は Linux ディストリビューションの一つ、ということになる)。
言い替えれば、ROS を動作させるのは、皆さんが使い慣れている Windows や macOS といった OS 上ではなく、
Ubuntu という Linux ディストリビューション上であるのが主流、ということである。
そのため、ROS を学ぶためには Ubuntu (Linux) のインストールや利用がほぼ必須と言って良い。
最近は Windows で ROS を使う方法も出て来ているが、下手をすると Ubuntu で ROS を使うよりもハードルが高い。
ROS には Ubuntu が必要とは言え、自宅等の PC に Ubuntu をインストールすることは必ずしも容易ではない。
最悪の場合、もとから入っていた Windows が起動しなくなるなどのトラブルが起こり得る。
そこで、本資料では Windows 上に VirtualBox というアプリケーションを用いて仮想マシンを構築し、
その仮想マシン上に Ubuntu をインストールするという方針をとる。
それにより、Windows の環境を壊すことなく安全に ROS の演習を行うことができる。
ただし、仮想マシンの性質上、Ubuntu および その上で動作する ROS の速度はかなり遅い。
その点は「自宅で安全に ROS の演習を実行できる」ことを優先した結果として御了承頂きたい。
本ページでは、VirtualBox のインストールと仮想マシンの作成、および Ubuntu のインストールまでを解説する。
本資料で必要なのは 64 ビット版の Windows 10 / 11 である。
なお、最近はあまり見かけないが 32 ビット版の Windows では Ubuntu が対応していないので以下の演習を実行できない。
また、macOS での動作は、恐らく下記の制約があるだろう。
- M1/M2 系チップ搭載の macOS では本演習は実行できない (Ubuntu Linux の仮想イメージを実行できないはず)
- Intel チップ搭載の macOS なら本演習は実行できるが、トラブル対応などは自己責任で。
その際、「macOS 上の仮想 Windows 上で動く VirtualBox」ではなく、「macOS 上の VirtualBox」を試すのが良いと思われる。
その場合、文中のファイル名「VirtualBox-7.0.16-162802-Win.exe」などを、「VirtualBox-7.0.16-162802-OSX.dmg」などと適切に読み替える必要がある。
さて、本ページの内容は以下の通りである。
まず、以下の 3 つのファイルをダウンロードする。2024 年 4 月末時点の最新版を記す。
- VirtualBox のインストールファイル:VirtualBox のダウンロードページの
「VirtualBox 7.0.16 platform packages」→「Windows hosts」をクリック。
より新しいバージョンが存在する場合はそちらをダウンロードすれば良いだろう。
執筆時点では VirtualBox-7.0.16-162802-Win.exe がダウンロードされた。
- VirtualBox の仮想マシンで様々な機能を有効にする拡張パック:VirtualBox のダウンロードページの
「VirtualBox 7.0.16 Oracle VM Virtual Box Extension Pack」→「All supported platforms」をクリック。
より新しいバージョンが存在する場合はそちらをダウンロードすれば良いだろう。
執筆時点では Oracle_VM_VirtualBox_Extension_Pack-7.0.16.vbox-extpack がダウンロードされた。
- Ubuntu 22.04 のインストールディスク:Ubuntu 日本語Remix ダウンロードページの
ubuntu-ja-22.04-desktop-amd64.iso をクリックしてダウンロード
以上のファイルのダウンロードが終ったら次に進む。
まずは VirtualBox のインストールを行う。ダウンロードした VirtualBox-7.0.16-162802-Win.exe を
ダブルクリックして指示にしたがって VirtualBox をインストールしよう。
途中でインストール項目の変更などは必要はない。
途中で USB ドライバのインストールを促された場合はそれもインストールする。
なお、macOS (Intel) を用いている場合、インストール途中に「セキュリティとプライバシー」で Oracle America, Inc. からの
システムソフトウェア読み込みを許可し、インストールをしなおさねばならなかった。
インストールを終了すると、以下のように Oracle VM VirtualBox マネージャーが起動する。
ここでは一旦右上の×ボタンで画面を閉じよう。
次に、ダウンロードした Oracle_VM_VirtualBox_Extension_Pack-7.0.16.vbox-extpack をダブルクリックし、
拡張パックをインストールしよう。途中の「VirtualBoxライセンス」画面では、
ライセンス文をスクロールして最後まで読まないと「同意します」ボタンを押せないので注意。
拡張パックのインストールが終ったら (時間はかからずすぐ終わる)、再び VirtualBox マネージャーを閉じよう。
そして、デスクトップに「Oracle VM VirtualBox」というアイコンができているはずなのでもう一度起動する。
上の画面で「新規」ボタンをクリックして
Ubuntu 22.04 をインストールするための仮想マシンを作成しよう。
下図のような画面が現れるので、「名前」の部分に「ubuntu22.04」と記入する。
すると、「タイプ」と「バージョン」が下記のように自動的に切り替わるはずである。
それを確認したら、次にOS インストールに必要な ISO イメージファイルの指定を行う。
下図のように「ISOイメージ」右端にある下向きの矢印をクリックする。
すると下図の状態になるので、「その他」をクリックして選択する。
すると、下図のようにファイルの選択画面になるので、先程ダウンロードした Ubuntu 22.04 のインストール用 ISO イメージを選択して「開く」ボタンをクリックする。
すると、以下の画面になる。
ここで、「自動インストールをスキップ」にチェックを入れ (重要!)「次へ」ボタンをクリックする。
このチェックを入れないと、恐らくかなり先に進んだ後で、ここまで戻ってやり直すことになるので注意。
すると、下記のように仮想マシンのメモリー量と CPU 数を決める画面が現れる。
横方向の目盛の最大値として、皆さんが使っている PC のメモリ量およびCPU数が表示される。
下図では、本資料を作成している PC の環境を示す 16384 MB と 20CPU が最大値として表示されているが、もちろんこの値は人により異なる。
それらの値から、Ubuntu 22.04 が使用できるメモリ量と CPU 数を決めるわけである。
大きければ大きい程よいが、大きすぎると Windows が使用するメモリが不足するので、
グラフの緑色の範囲で大きめの値にすると良いだろう。上図ではメモリー量 4096 MB、CPU数 2 に設定している。
(このあたりが標準的な値ではないかと思う)
なお、このメモリ量は、仮想マシン上で Ubuntu 22.04 が動作しているときだけ使われるので、
普段のPC利用時に影響するわけではない。
サイズを決めたら「次へ」をクリックする。
次は、下図のように仮想ハードディスクのサイズを決める画面である。
ここでは、デフォルトの 25.00 GB のまま「次へ」をクリックする。
最後に、下図のようにこれまで行った設定を確認するための画面が現われる。そのまま「完了」をクリックする。
仮想マシンができると、Oracle VM Virtual Box マネージャーの画面は下図のように変化する。
Ubuntu 22.04 用に作成した仮想マシンが現われているのがわかる。これが選択された状態で「起動」ボタンをクリックする。
少し待つと、下図のように別画面が開く。これが、作成した仮想マシンの画面である。
なお、画面右側に「マウス統合」や「キーボードの自動キャプチャー」などのメッセージが表示されているのが見える。
これらのメッセージは青い吹き出しアイコンをクリックすると折りたたまれて表示が小さくなる。
なお、下図のように「GNU GRUB」と書かれている画面では、「Try or Install Ubuntu」が選択されていることを確認して Enter キーを押すと処理が先に進む。
放置したままでも先に進むが、数十秒待たされるので注意。
いずれにせよしばらくそのまま待つ。
最終的に、画面は以下のように変化する。仮想マシンが ISO イメージから起動され、
Ubuntu 22.04 をインストールするよう促されているのである。
このままの日本語表示の状態でインストールを続けると、押すべきボタンが画面外に配置され先に勧められなくなるので、
インストール時の言語を英語 (English) に変更しよう。
下図のように左のカラムでアルファベット順に並んだ言語から「English」を選択し、「Install Ubuntu」をクリックしよう。
すると、下図のように Ubuntu 上で用いるキーボードの設定画面が現われる。
下図のデフォルトの状態で「Continue」ボタンを押して良い。
下図の画面では、「Download updates while installing Ubuntu」のチェックを外す。
インストールにかかる時間を短縮するためである。「Continue」をクリック。
下図の画面では、デフォルトのまま「Install Now」をクリックして良い。
すると、下図のようにインストール前の警告が現れる。これは、さきほど仮想マシンに作成した 25.00GB のディスクに
Ubuntu をインストールすることを確認しているのである。
「Continue」をクリック。
すると、タイムゾーンの設定画面になる。Tokyo が選択されているのを確認して「Continue」をクリック。
以下のユーザー情報の画面では記入が必要である。まず、下側の
- Pick a username (ユーザー名)
- Choose a password (パスワードを二回入力)
はログイン時のユーザー名とパスワードを入力する(ここでは student)。アルファベットのみのシンプルなユーザ名が良い。
一番上の「Your name」は本当は任意なのだが、考えるのが面倒なのでユーザー名と同じにした。
Computer's name (コンピュータ名) も任意だが、アルファベットをメインとし、記号を用いるにしても「-」か「_」程度とするのが良い。
下図では「ubuntu2204」とした。
記入したら「Continue」をクリック。
以上でインストールが始まる。しばらく時間がかかる。
以下の画面が出たら「Restart Now」ボタンをクリック。
以下の画面が出たらキーボードの「Enter」キーを押す。以上で仮想マシンが再起動する。
なお、上の画面に到達せずに処理が進まなくなった場合、ubuntu 22.04 の画面を閉じ (仮想マシンの電源オフ)、
もう一度デスクトップから VirtualBox を実行し、ウインドウの「起動」ボタンを押せば以下の画面に続く場合があるので試してみて欲しい。
場合によっては Ubuntu 22.04 の再インストールという流れになるかもしれない。
インストールした Ubuntu 22.04 は 2022 年にリリースされた状態なのでやや古い。アップデートを行っていこう。
まず、ログイン画面でさきほど決めたパスワードを入力してログインする。
なお、デスクトップの言語を日本語化するのは、本ページの最後に行う。それまでは英語のままでおつき合い頂きたい。
日本語化のコマンドはやや長いため、コピー&貼りつけをできるようになってからの方が安全だからである。
すると、下図のウインドウが現われる。
右上のボタンを「Skip」→「Next」×3回→「Done」と押すことでこのアプリケーションを閉じてしまうのが良い。
また、デスクトップを開くと、下図のようにソフトウェアの更新を促す画面が時々現われる。
本資料では、ソフトウェアの更新は GUI からではなくターミナル上で行う方針なので、
ここでは「Remind Me Later (後で通知する)」をクリックし、更新を後回しにする。
ここからは、ターミナル (端末) を起動し、ソフトウェアの更新をし、
さらに、画面の解像度を大きくするなど、仮想マシンをより便利に用いるための設定を行う。
まず、下図のようにデスクトップ左下のアイコンをクリックしよう。
すると、アプリケーションなどの検索画面が現われるので、「terminal」と記入する。
すると、下図のように「Terminal (端末)」というアプリケーションが現われるので、クリックして起動する。
端末 (ターミナル) が起動した様子が下図である。
ちなみに、画面左下で「端末」のアイコンを右クリックして「Add to Favorites (お気に入りに追加)」を選択すると、
アイコンがその位置に固定されるので、次回からの「端末」の起動が楽になる。
そのアイコンをマウスで掴んで上に移動することもできる。
さて、ターミナル上で以下のコマンドを入力し、Enterキーを押すことで実行しよう。
インストールやアップデート可能なパッケージのリストを更新するためのコマンドである。
sudo apt update
このとき、
[sudo] password for student:
という表記が現れるので、パスワードを入力して Enter キーを押そう。
キー入力をしてもターミナル上は変化がないが、入力は受け付けられているので気にせず入力を続けよう。
これは、管理者権限が必要なプログラムを実行しようとしているので、パスワードが求められているのである。
その後、もし以下のようなメッセージが出た場合、1~2分時間をあけてからもう一度「sudo apt update」コマンドを実行すること。
同じコマンドをもう一度実行する際は、ターミナル上でキーボードで「↑」キーを押してしてから Enter キーを押すのが楽である。
E: ロック /var/lib/apt/lists/lock が取得できませんでした - open (11: リソースが一時的に利用できません)
(以下略)
上のメッセージが出ている間は先に進めないので、うまくいくまで辛抱づよく繰り返そう。
どうしても上のメッセージが消えない場合、一度 ubuntu を再起動し (画面右上の電源のアイコンから「電源オフ/ログアウト」→「再起動」)、
再帰動直後にログイン&コマンド実行を行えば上のメッセージが出ないことが多い。
期待通りに動作した場合は長いメッセージの最後に、以下のようなメッセージが出る。
(パッケージの個数を示す数字は実行タイミングにより異なる)
(略)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
557 packages can be upgraded. Run 'apt list --upgradable' to see them.
上のメッセージを確認したら、ターミナルで以下のコマンドを実行しよう。
このコマンドは、アップデート可能なパッケージを更新するためのコマンドである。
「-y」というオプションは、Yes/No の選択を求められたときに自動で Yes に相当する y を回答する、という意味になる。
sudo apt -y dist-upgrade
こちらのコマンドでも、パスワードの入力を求められたら入力する。
2022 年からの更新を一気に適用するので、それなりに時間がかかるのでのんびり待つ。
ターミナルでコマンドを入力可能になっていたら更新は終了したと思って良いだろう。
更新が終了したら、OS を再起動したいところだが、その前にあとで必要になるソフトウェアをここでインストールしておこう。
ターミナルで以下のコマンドを実行して gcc と make というソフトウェアをインストールする。
後で Guest Additions CD からソフトウェアをインストールする際に必要になる。
sudo apt -y install gcc make
パスワードの入力を求められたら入力すること。
以上が終わったら、Ubuntu を再起動しよう。再起動するには、
ターミナルで
sudo reboot
を実行するか、画面右上の電源のアイコンから「電源オフ/ログアウト」→「再起動」を選択すればよい。
再起動すると、Ubuntu 22.04 が最新の状態になる。
その状態で、画面の解像度を大きくしたり、Windows と Ubuntu との間でコピー&貼り付けしたりできるようにしよう。
Ubuntu 22.04 にログインした状態で、VirtualBoxのメニューから「デバイス」→「Guest Additions CD イメージの挿入」を選択しよう。
すると、下図のように 画面左下に (仮想的な) CD が挿入されたことを示すアイコンが現われる。
本来は、このタイミングで更新プログラムが自動実行されるのだが、Ubuntu 22.04 の場合は自動実行に失敗するようなので、手動で更新プログラムを実行しよう。
まず、ターミナルで「df -k」というコマンドを実行しよう。
システムのディスクの使用割合が表示される。ここで重要なのは、
下図の「/media/student/VBox_GAs_7.0.16」の部分である。
これは、挿入された仮想的な CD が、システムでどのような名前でアクセス出来るかを示している。
「student」の部分はユーザー名、「VBox_GAs_7.0.16」の部分はディスク名なのだが、数字は、用いている VirtualBox のバージョンにより異なる。
「/media/student/VBox_GAs_7.0.16」に相当する部分が、自分の環境でどうなっているかよく確認しよう。
確認したら、下図のようにまずターミナルで「 cd /media/student/VBox_GAs_7.0.16 」を実行する。
もちろん、自分の環境に適したコマンドに置き換える必要がある。
これは、仮想的なディスクの中身の位置に移動するコマンドである。
「 /media/student/VBox_GAs_7.0.16 」の部分はやや長いので、「df -k」の結果からコピー&貼りつけを行うと確実かもしれない。
ターミナル上では、Shift + Ctrl + C および Shift + Ctrl + V でコピー&貼りつけを行える。
移動が終わったら、下図のようにそのままターミナルで「 bash autorun.sh 」を実行する。
ここまでが正しく実行されていれば、下図のようにパスワードの入力を求められるので、
入力して Authenticate をクリックする。
するとターミナルが開き、追加ソフトウェアのインストールが始まるのでしばらく待つ。
下図のように、現われたターミナルに「Press Return to close this window...」と表示されていれば、インストールが完了している。
書かれている通りターミナル上で Return キー (Enter キーのこと) を押せば閉じられる。
以上を確認したら、Ubuntu 22.04 を再起動しよう。ターミナルで「sudo reboot」を実行するか、
デスクトップ右上にある電源のアイコンから「電源オフ/ログアウト」→「再起動」を選択すればよいのであった。
再起動が完了したら、Ubuntu 22.04 が起動している仮想マシンのウインドウのサイズをマウスで調整してみよう。
ウインドウのサイズに合わせ、Ubuntu 22.04 のデスクトップが広くなるはずである。
(そうならない場合、上で gcc と make のインストールを行っていない可能性がある)
画面がちらつく場合、画面サイズをマウスで調整すると、画面がちらつかない画面サイズが見つかるのではないかと思う。
さて、デスクトップ左側の Launcher 下部を見ると、Guest Additions CD のディスクが入りっぱなしになっている。
下図のようにディスクのアイコンを右クリックして「Eject (取り出し)」を実行するとこのアイコンは消える。
ここで、Windows と Ubuntu 間で、コピー&貼りつけを可能にしてみよう。
下図のように、VirtualBox のメニューで「デバイス」→「クリップボードの共有」→「双方向」をクリックして選択する。
そうすると、Windows上のブラウザでコマンドを Ctrl+C などでコピーした後、
Ubuntu のターミナルに対して貼り付けを行うことができるようになる。
Ubuntu のターミナルでの貼り付けは、ターミナル上で「Ctrl + Shift + V」である。
次ページ以降、かなり長いコマンドを実行しなければならなくなるので、
この「Windows でコマンドをコピーして Ubuntu 上で貼りつけ」のテクニックを確実に身につけて欲しい。
(Ubuntu 上の Firefox ブラウザで本ページを開いて「Ubuntu から Ubuntu へのコピー」でも良いのでお好みで)
ここで、インストール時からの設定言語を英語から日本語に変更しよう。ターミナルを起動し以下のコマンドを実行する。
やや長く入力ミスしやすいコマンドなので、ターミナルへ貼り付けて実行するのが確実である。
sudo update-locale LC_ALL=ja_JP.UTF-8 LANG=ja_JP.UTF-8
パスワードの入力も求められるので入力する。
コマンドの実行が終われば、Ubuntu を再起動しよう。言語が日本語になっているはずである。
なお、日本語化した後の初回ログイン時に、下図のメッセージが現われる。
フォルダーの名前を英語から日本語に更新するかと問われているので、「名前を更新する」ボタンを押して構わない。
以上で本ページの内容は終了である。ここまでの練習で想像はつくだろうが、Ubuntu を終了するためには、
Ubuntu 上で
デスクトップ右上にある電源のアイコンから「電源オフ/ログアウト」→「電源オフ」を実行し (ターミナルで sudo poweroff でもよい)、
最後に Windows 上で VirtualBox マネージャーを終了すれば良い。
逆に Ubuntu を起動するときは、Windows のデスクトップ上の「Oracle VM VirtualBox」を起動し、
アプリケーション上で「起動」アイコンをクリックすれば良い。
次のページ「Windows で ROS2 のシミュレーションを行う (2) ROS2 のセットアップ」
トップページに戻る