LoginSignup
13
20

More than 5 years have passed since last update.

Windows10 HomeでDockerを使って簡単にTOPPERS/EV3RTのビルド環境を構築する

Last updated at Posted at 2018-01-16

はじめに

本稿はLEGOマインドストームで、リアルタイムOSであるTOPPERS/EV3RT用のプログラムをビルドする環境をWindows10 HomeエディションでDockerを使って簡単に構築するための方法を記しています。

Windows10 Pro以上を持っている方はDocker for Windowsをインストールして使う方が楽です。[手順/EV3RTのサンプルコードをダウンロードする]までスキップしてください。

macOSの方はこちら

Dockerを用いないビルド環境の構築について

もちろんDockerを使わずに環境を構築する方法はあります。
Windowsで環境を構築する場合、例えば公式の方法ではCygWinを使っています。他にも、Bash on Windows[BoW]を使う方法もあります。
しかし、CygWin・BoWは時間がかかり、バージョンによって動作に大きな差1がでることから、今回Dockerを使った環境構築方法を記すことにしました。

予備知識

Docker

Dockerはコンテナ型の仮想化環境を提供するオープンソースソフトウェアである。VMware製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ。
WikipediaのDockerの記事より

仮想化技術の一つで、例えば仮想マシン(VirtualBoxなど)と比べて、起動が速い・メモリ消費量が少ない・移植性が高いなどといったメリットが存在します。
必要なミドルウェアがインストール済の環境を手軽に用意できることと上記のメリットから、多くの方に利用されています。

参考

ETrobo-Docker

TOPPERS/EV3RTのビルド環境をラッピングしたUbuntuベースのDockerイメージです。
EV3RTをビルドするための環境が用意されています。今回はこれを利用します。
詳細はこちら

手順

Dockerを使えるようにする

※既にDockerがインストールされている場合は次のセクションにお進みください

ETrobo-Dockerを使うためにはDockerを使えるようになる必要がある。Windows10のHomeエディションではDocker Toolboxをインストールすることで実現できる。

Intel VT-X/AMD-vが有効かどうかを確認する

Dockerを動かすためには仮想化ハードウェア拡張を有効にする必要がある。有効になっているかどうかを確認する。
有効でない場合は、BIOSより有効にする。(参考

  1. タスクマネージャを起動2する。
  2. 詳細(D)が表示されている場合はそれをクリックする。
  3. パフォーマンスタブをクリックする。
  4. CPUの欄の仮想化有効になっているか確認する。

タスクマネージャ

Docker Toolboxをインストールする

Dockerを使えるようにするためにDocker Toolboxをインストールする。
以下の5つがインストールされる。

  • Docker Client for Windows
  • Docker Machine for Windows
  • Kitematic for Windows(Alpha)
  • VirtualBox
  • Git for Windows
  1. Docker公式ページGet Doccker Toolbox for Windowsをクリックしてインストーラをダウンロードする。
  2. インストーラを実行し、画面にしたがってインストールする。途中にあるチェックボックスは理由がない限りデフォルトで構わない。

デスクトップにできるショートカット

インストールが完了すると、Docker Quickstart TerminalKitematicのショートカットが生成されています。

  • Docker Quickstart TerminalはDockerVMを素早く起動することができ、起動後はそのままMINGW64ターミナルとして利用できる。
  • KitematicはDockerをGUIで操作するツール。本稿では扱わない。(参考)

Docker Quickstart Terminalを起動する

デスクトップにできたDocker Quickstart Terminalをダブルクリックすると、ターミナルが起動する。インストール後の初回起動時はDockerVMが立ち上がるまで少し時間がかかる。以下の鯨の画面になればDockerが使えるようになる。
Docker鯨くん
しっかり動くか確認するために、以下のコマンドを実行する。

~
$ docker run hello-world

hello-worldイメージ
上のような文字が出力されればインストールは完了!

EV3RTのサンプルコードをダウンロードする

※既にソースコードを持っている方は次のセクションに進んでください

TOPPERSのEV3のページ

平成30年10月8日(月)追記:
現在の最新版はβ7-2です。

  1. TOPPERSのEV3のページev3rt-beta7-2-release.zipをダウンロードし、解凍する。
  2. 解凍したフォルダの中にあるhrp2.tar.gzを解凍3し、解凍したhrp2フォルダの中のsdkフォルダの中のworkspaceフォルダをユーザのホームディレクトリ直下C:\Users\(ユーザ名)\workspaceにコピーする。

Docker Quickstart TerminalのホームディレクトリはWindowsのホームディレクトリと同じなので、ホームディレクトリ直下にワークスペースがあると後々楽になる

ソースコードをビルドする

先ほど立ち上げたDocker Quickstart Terminalで目的のソースコードがあるフォルダに移動する。
C:\Users\(ユーザ名)\workspace以下にソースコードがある場合、以下のコマンドで移動できる。

~
$ cd ~/workspace

上のセクションでサンプルコードをダウンロードしている場合、lsコマンドで以下のフォルダがあることが確認できる。

~/workspaceの中身

ビルドしたいフォルダに移動する。今回はev3way-cppをビルドする。

~/workspace
$ cd ev3way-cpp

ビルドには、上記で紹介した、TOPPERS/EV3RTのビルド環境をラッピングしたUbuntuベースのDockerイメージのETrobo-Dockerを利用する。
以下のコマンドを実行する。初回はイメージをプルする必要があるため時間がかかる。

~/workspace/ev3way-cpp
$ docker run -v $PWD:/home/hrp2/sdk/workspace/product korosuke613/etrobo-docker

平成30年8月9日(木) 追記
$ docker run -v $PWD:/home/hrp2/sdk/workspace/src korosuke613/etrobo-docker

$ docker run -v $PWD:/home/hrp2/sdk/workspace/product korosuke613/etrobo-docker
に変更しました。

ビルド画面

このような画面になったらビルド成功!
生成された実行ファイルは、実行したフォルダにappという名前で保存されている。

Mindstormsで動かしてみる

生成した実行ファイルをMindstormsにコピーすることでMindstormsでプログラムを実行できる。

おわりに

本稿の方法だとEV3RTのビルド環境を簡単に素早く構築できます。
今回はWindowsでの説明でしたが、Dockerが使えるなら他のOSでも同様にビルド環境を構築できます。
また、ローカル環境を汚さないので、不要になったらDockerイメージを消すだけで済みます。
マインドストームを用いた教育で、各生徒のノートパソコンを使う場合4などにご活用ください。


  1. 事実、2017年10月にBowを使った方法で複数の学生に環境構築をさせたところ、当時はWindowsのバージョンによってUbuntuのバージョンが異なり、謎のエラーでビルドができない学生が出て、大変なことになりました。 

  2. Ctrl + Shift + Esc キーを押すか、タスクバーの空白の領域を右クリックし、[タスク マネージャー] をクリックして、タスクマネージャを起動できます。 

  3. tar.xzの解凍ができない場合はこちらを参考にしてください。 

  4. 私の所属する研究室では毎年1年生にMindstormsで演習をしており、毎回各学生の環境構築で苦戦します。そこでDockerを用いることにしました。 

13
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
20