2. Mindstorm のアーキテクチャ

2.1. 基本ハードウェア

ご存知ない方のために書きますが、Lego の Mindstorm のキットは、 ロボット工学のキットで、Lego グループから約 200 US ドルで発売 されています。キットの中身は、Lego のたくさんのブロックと,RCX というもの (CPU と LCD といくつかのコネクタが付いた大きなブロッ ク) と、二つのモータと、(外界との交信用の) 光センサと二つのタッ チセンサです。

RCX キットの現在のリリースは、バージョン 1.5 で、2001 年の春、 RCX 2.0 に置き換わる予定です。今のところ、この文書内で "RCX" と言った時は、"RCX 1.x" を意味 します。1.0 と 1.5 の違いは、些細ですが、1.5 から 2.0 への変更 はかなり大きなものです - 厳密な変更の範囲は、まだ、わかりません。

もっとハードウェアの詳細を学びたいなら (とはいえ、それらは RCX のプログラムの一語一語が何を意味しているのかを見るために、逐語 的にディスアセンブルしている人たちからの報告なので、読むのがイ ヤになるくらい詳しかったりするのですが)、二つの重要なウェブサ イトがあります - Russell Nelson's Lego Mindstorms InternalsKekoa Proudfoot's RCX Internals を訪れてください。

2.2. 標準の RCX プログラミング

Linux から Mindstorm を動作させるためのいろいろな方法を理解する ための手がかりは、はじめに、Mindstorm キットが MS Windows で正常 に動作している時の仕組を理解することです。 簡単に言うと、Lego から提供される MS Windows 上のソフトウェアツー ルを使えば、誰でも (あるいはたぶん、12-14 才くらいの子供が) ちょ うど積木を組み立てるような感覚で、グラフィックを操作して Mindstorm 用のプログラムを作成できます。この方法でプログラ ムが "組み立て" られると、そのソフトウェアは、プ ログラムを byte-code にコンパイルします。次に、この byte-code は、ロボットにダウンロードされ、そしてそこで、RCX のファームウェ アが byte-code を処理し、byte-code の命令に基づきマシンを制御 します。byte-code の構文解析に加え、RCX ファームウェアは、OS に似た多くの機能を持っています - ハードウェアの制御、スレッド、 そして、特にロボットとの通信に使われる IR ポートの制御の機能で す。IR ポートからの (完全なプログラムに比して) 特別なコマンド、 もしくは、特別なリモート制御コマンドを受付ける能力もあり、それ らのコマンドに基づきロボットを動かします。

標準のファームウェアは、現在 (RIS バージョン 1.5 を購入したとし ても) バージョン 1.0 です。これは、とても深刻な制限があります - たとえば、それぞれの変数は、RAM ではなく、レジスタに格納されるの で、たった 32 の変数しか持てません。しかし、それでもかなりかっこ いいことができ、ファームウェアのバージョン 2.0 (このベータバー ジョンが LEGO から入手できます。) では、これらの制限がかなり緩和 され、1.x ハードウェアに対する下位互換性も保たれるはずです。

2.3. Linux ツールが適合するところ

Linux 上での Mindstorms プログラムは、前の章で述べたソフトウェ アのセットの一部をそれぞれ独自のソフトウェアに置き換えるかたち で機能するようになっています。あるプログラムは、標準の Lego ファームウェアを独自の OS ライクなシステムや言語インタープリタ へと完全に置き換えてしまいます。それ以外のプログラムは、標準の Lego byte-code に一致した byte-code を生成するので、そうした byte-code さえ生成されれば、その解釈(インタープリト)には標準の ファームウェアを使います。最後に、ロボット上で実際に何かを実行 するためのものを与えることなく、ホスト PC からロボットを制御す るためのリモート制御用コードだけを生成するプログラムもあります。 そうしたプログラムの場合も、標準の Lego ファームウェアを使います。

2.4. Linux ホスト用ハードウェアの必須条件

ツールの大部分はコマンド形式なので、ハードウェアの必須条件は最 低限で、基本的にどんな Linux システムでも動作するはずです。

例外が一つだけあって、シリアルポートはどうしても必要です (最新 のレガシーフリーなマシンには無いかもしれません)。RCX との通信 は、マシンのシリアルポートにつながった IR tower を経由します。 つまり、シリアルポートがないマシンではアダプタを買わないかぎり RCX を使えません。さらに、IRQ やシリアルポートが競合してきちん と動かないことになるかもしれません。これは、特に、モデムが /dev/ttyS0 を使っている場合です。対処は3つあります - 一つは、 2番目のシリアルポートを IR tower 用に使用します。ほとんどの場 合、これで動作するはずです。これでダメなら、モデムと RCX の同 時使用を止めます。これが受け入れられないなら、次に、 ("extended dumb serial driver options" の下の) "support for sharing serial interrupts" のカーネ ルコンパイルオプションを調べ、それをオンにし、再コンパイルして ください。

Mac は標準的なシリアルポートが付いていないので、LinuxPPC ユーザ はアダプタを入手し、ツールを使うためにいくつかの変更をしなけれ ばならないかもしれません。NQC の作者で Mac ユーザである Dave Baum は、このための方法を 説明で書いています。

2.5. CyberMaster と Scout

RIS に加え、Lego は他に2つのロボット工学システムを作りました - (ヨーロッパだけで入手可能な) CyberMaster と Scout です。残念 ながら、これらが他のツールと動作するのは、一つ (Section 5 で述べる NQC) だけのようです。大ざっぱな言い方 をすれば、Scout の購入を考えていて、あまり小遣いに困っていなけれ ば、思い切って RCX を購入しなさい - 追加で払った以上の価値があり ます。

2.6. Mindstorm の Vision Command

Vision Command kit は、新しく追加された Mindstorm シ リーズの一つで、USB カメラを使って何かかっこいいことができます。 残念ながら、USB カメラサポート (特に USB Quickcam サポート) は、 まだ、Linux 下では不安定で、このためこの製品は Linux 下ではまだ サポートされません。それをハックしたいなら、このページを見てください。ここには、よく似た Quickcam 向けのドライバもあります。

2.7. MS Windows CD についての重要な注意

下記のたくさんのプログラムが公式の Lego ファームウェアを使って いるので、MS Windows CD が必要かもしれません。MS Windows をブー トする必要はありません - 時間を途切れさせずにすみますね :) し かし、(とりわけ NQC か RCX.pm を実行するなら) 電池切れの時に、 ファームウェアを得るために CD をマウントする必要があるかもしれま せん。なるべくマウントしたくないなら、CD 上のファイル firm0309.lgo を探し、Linux パーティション上 の安全な場所にコピーしてください。