手元にある LEGO Mindstorms EV3 は、以前いきおいで買ったもので基本+拡張セットがひと揃いあります。引っ越し前に買って、家で動かしてみたもののかなりの間放置状態だったんですよね。実は、同時に教育プログラムセットの LiveVIEW 版も一緒に買ったのですが使わず仕舞い。引っ張り出そうと思ったんですがダウンロードURLだったか会員番号だったかを SSD ごと紛失してしまったので、なんともなりません。株式会社アフレル で買ったので、再問合せすればダウンロードできたりしませんかね。
フリーの LabVIEW を使う
プログラミング自体は、四角いインテリジェントブロックのボタンを使ってぽちぽち押せば作れるのですが、まあ、なかなか大変です。確か EV3 の Bluetooth シリアル通信は解析されているので、それ経由でハックすることも可能なはずですが、パンダ Scratch みたいに手軽にやりたいところです。
ソフトウェアをダウンロード – ダウンロード – レゴ®マインドストーム LEGO.com
http://www.lego.com/ja-jp/mindstorms/downloads/download-software?ignorereferer=true
ということで、上記からフリーの LabVIEW がダウンロードできます。製品版との違いは、Community: NI LabVIEW for LEGO® MINDSTORMS® / LabVIEW Module for LEGO MINDSTORMS – Download – National Instruments にあるのか…ちょっとわかりませんが、インテリジェントブロックと似たような感じで PC 上でプログラムができます。
が…、残念なことに EV3 の基本セットに入っている超音波センサーと地軸センサーがありません!
その代わりに、最近発売されたらしい赤外線距離センサーが入っています。モジュール自体が追加できるかどうかわかりませんが、まあモーター制御とカラーセンサー、タッチセンサーがあれば、それなりに使えるでしょう。
※既存のプロジェクトから「インテリジェントブロックのインポート」をすると超音波センサーの画像が出て来るので何らかのガードがかかっているのかもしれません。
追記 2015/11/01
いや、違った。Downloads – Mindstorms LEGO.com にある EV3 Software Block Download から特定のブロックをダウンロードできます。その後に、「ツール」→「ブロックのインポートウィザード」で取り込みができます。なんか、外部ブロックの仕様書もダウンロードできるので、かなりオープンな体制になっているようです。
EV3 と無線接続する
PC と EV3 インテリジェントブロックとの接続は、USB ケーブルか Bluetooth の2種類になります。Bluetooth ドングルは手元の安価な iBuffalo の USB ドングル(千円弱)で動くのでたいていのものが動くと思います。Raspberry Pi もそうなのですが、Linux では iBuffalo か Planex が確実に動くので財布的に助かります。
ちなみに、Wi-Fi ドングルは EV3 では動きません。というか、フリーの LabVIEW では動かず、製品版では動くそうです。まあ、Bluetooth で十分なのでこれを使います。
EV3 インテリジェントブロックに Bluetooth のドングルを差し込んだら、設定→Bluetooth を指定します。この中で「Visibility」と「Bluetooth」だけチェックを入れます。「iPhone/iPad/iPod」にチェックを入れると PC から繋がりません。たぶん、BLE 専用のドングルを使うパターンだと思うんですが、ちょっとよくわからず。
Windows PC 側はペアリングが必要です。ペアリングします。
ペアリングをしようとすると、コントローラ側でホスト名が出るので、ok ボタン(真ん中のボタン)を押します。パスコードの初期値が「1234」なので、そのままにしておいてokボタンを押すと、
PC 側でパスコードを要求するダイアログがでるので同じように「1234」を入れます。
その後で、LabVIEW の左下で Bluetooth 接続します。先にPCでペアリングしないとうまくいきません。たぶん、Mac のほうはここだけで設定できるのかも。
USB ケーブルでつなげるときは、左の「USB」にチェックを入れれば ok です。
LabVIEW でプログラミングする
で、ブロックを使ってぽちぽちと作って、実行ボタンを押すと EV3 が動きます。転送は自動的に行われるし、今どのブロックが動いているかがちかちかするので分かりやすいです…が、実は作りにくい。EV3 インテリジェントブロックでぽちぽち作っているのに慣れていれば大丈夫なのかもしれませんが。やっぱり C# とかで作りたいですよね。
これは、タッチセンサーでボタンを押したらピープ音を鳴らしてちょっとだけモーターを動かします。よくわからないと、これを作るだけでも結構面倒くさい。
接続しているモーターとかセンサーとかは、接続したときに右下に表示されます。また、プログラムは EV3 インテリジェントブロックにアップロードが可能です。既存のプログラムはメモリブラウザを使って追加削除ができます。
LabVIEW で作ったプログラムと、インテリジェントブロックで作ったプログラムは互換がないのですが、「ツール」→「インテリジェントブロックプログラムのインポート」を行うと、既存のプログラムを LabVIEW に取り込めます。
このあたりは、LabVIEW 付属のヘルプがあるので読むとよいでしょう(ネット上にはない模様)。
お次は C# で動かそう
そんな訳で手始めに LabVIEW を使ってブロックプログラミングをしておきます。じゃあ、これでは物足りないから普段使っているプログラム言語の場合はどうなるのか?ってのが、
レゴ エデュケーションと日本マイクロソフトが日本発 IT 人材育成を目的としたプログラミング ロボット教育カリキュラムの提供で連携 | News Center Japan
http://news.microsoft.com/ja-jp/2015/10/27/151027-azure-lego-education/
になる訳です。これでは MonoBrick という Linux を使うわけですが、これを引き続き。