EV3RTを使ってみる(1)

Toppers/EV3RTを使ってプログラムを作成したときの記事です。
この記事を書いた時のEV3RTのバージョンはβ3です。
目次はこちら

ETロボコンに参加しようと思っているので、その準備を開始しました。先日、ETロボコン2015の実施説明会も開催されたようですし、去年のように本番直前になって慌てるなんてことにならないようにしなければ。

というわけで、2012年に買ったMacBookAir(OSX ver.10.9.5)に開発環境の1つであるEV3RTをインストールしてみました。公式のWikiにインストール方法が丁寧に説明されていますので、これに従ってインストールすればサンプルプログラムをコンパイルするところまで行けます。ただし、GNUツールチェーンのバージョン違いには注意。1つ古いバージョンのGNUツールチェーンではサンプルプログラムをコンパイルできませんでした 1

2015-03-03-1さて、サンプルプログラムをEV3本体で動かすためにmicroSDカードを買ってきて 2、そのmicroSDカードのルートディレクトリにアプリケーションローダであるsdcard/uImageをコピーして、このSDカードをEV3のスロットに入れて電源を入れるとアプリケーションローダの画面が表示されます。ちなみに、差し込んだSDカードは簡単には取り出せません。テープを巻いて取り出しやすくしている人もいるようですが、私は「毛抜き」で無理やり抜いています 3

次に、コンパイルしたサンプルプログラムをEV3に移すのですが、なんとかコマンドラインからBluetooth経由で転送したいので、ZMODEMのプロトコルを話すソフトウェア lrzsz (ver.0.12.20) をインストール。このソフトウェアに lsz という名前のプログラムが入っていて、このプログラムがZMODEM経由のファイル送信をしてくれます。

あとは、EV3本体側をBluetoothからアプリケーションをロードする状態にして、ノートPCとEV3本体のBluetooth通信をペアリングして、コンパイルしたサンプルプログラムをEV3本体に転送すればEV3本体でサンプルプログラムが動作します。

というわけで、サンプルプログラムのコンパイルからEV3本体に移すまで:

まずは、サンプルプログラムのコンパイル。今回はhelloev3を試してみました。作業するディレクトリや作成されるファイルの名前などは公式Wikiに書いてあります。

$ make mod=helloev3
rm -rf /opt/ev3rt/workspace/OBJ
configure: Generating Makefile.appmod from ...
...
...
  LD      app

次にプログラムを転送する前に、Bluetoothのペアリングをして、Bluetoothのシリアルポートデバイスを確認。環境によってデバイスの名前が違うかも。

$ ls -l /dev/tty.MindstormsEV3
crw-rw-rw- 1 root wheel 33, 12  3  3 17:42 /dev/tty.MindstormsEV3

このシリアルポートデバイスを経由してファイルデータを転送します。ZMODEMは応答メッセージを返すタイプのプロトコルですので、lszの入力側にもリダイレクトが必要です。また、データ量の割に時間がかかるので気長に待ちます 4

$ lsz app > /dev/tty.MindstormsEV3 < /dev/tty.MindstormsEV3
Sending: app
Bytes Sent: 127963   BPS:3787                            

Transfer complete

とりあえず、成功しました。
2015-03-03-2

Notes:

  1. ちなみに、同じバーションのGNUツールチェーンでEV3RTとNextOSEKの両方に対応できます。NXTの開発もできます。たぶん、私はしませんけど。
  2. 人生で初めてmicroSDカードを買いました。もちろん、既に手元にある人はそれを使っても構いません。
  3. お手軽ですがお勧めはしません(笑)
  4. 私の環境だと10秒〜20秒ぐらい。