はじめに
LETro Project とは、LEGO MindStorms Robotics Invention System (以下 RIS と略) に付属する RCX のプログラム開発環境を構築するプロジェクトです。C言語と uITRON ライクな OS と様々なツールの組み合わせで、RCX の機能をフルに使用できるプログラムをフリーで作成できる環境を提供することを目指しています。
OS はオブジェクトファイルの形で提供され、ユーザが作成したプログラムと一緒にリンクだけで使用可能です。OS のソースファイルを扱う必要はありません。またソースも公開していますので、OS 自体を自由に改造することも出来ます(流行り言葉で言えばオープンソースなのでしょう)。
nqc との違い
RIS には GUI により RCX CODE と呼ばれる標準プログラムを開発する環境が含まれています。またC言語ライクな記述で RCX CODE を作成できる nqc という環境が Dave 氏によって公開されています。
これらの環境は誰でも簡単に RCX 用のプログラムを作成できる反面、最初に RCX にダウンロードされるファームウェアに内蔵されている機能しか使えず、RCX の持つポテンシャルをフルに使い切るプログラムを作成できません。
そこでフリーのCコンパイラである gcc と LETro OS を使用することで、C言語により RCX を制御するプログラムの開発が出来るようにしました。目標としては、nqc でプログラムを作成し RCX に転送する程度の簡単さで RCX の限界に挑戦できるプログラムを作成できる環境を目指しています。
以下に現時点で nqc と比較した時の利点・欠点を挙げておきます。
nqc に比べての利点
- 実行速度が速い。システムコールを使用した場合でも、センサの変化に対して 1ms の遅れで追従することが可能。
- 変数の数の制約(nqc では 31 個)がない。メモリの許す限り変数や配列が作成できる。
- C言語の機能(ポインタ、構造体等)をフルに使用できる。既存のC言語によるアプリケーションの移植が容易に可能。
- タスク数の制限(nqc では 7 個)が 255 個まで拡大。
nqc に比べての欠点
- ダウンロード時間が長くなってしまう。
- 複雑なプログラムが書ける反面、バグのあるプログラムを作成する可能性が増大する。
- nqc よりもコンパイル・ダウンロード手順が複雑。nqc ならコマンド1発でコンパイルとダウンロードまで行ってくれる。
- MacOS 上での開発が出来ない。nqc の魅力のひとつはマルチプラットフォームに対応しているところだと思う。
legOS との違い
LETro OS と同じように gcc と組み合わせて RCX のプログラムを開発できる環境として legOS が有名です。RCX のためのフリーな OS の代名詞が legOS であると言っても過言ではありません。
私も legOS を使ってみたのですが、元々 UNIX 系の文化をベースにして作られているためか、環境を整えるのに様々なツールをインストールする必要があり、nqc のようにお手軽に試すことが難しいです。
そこで legOS よりも簡単に構築できるような環境を持つ OS を作ってみたいと考えています。
以下に現時点で legOS と比較した時の利点・欠点を挙げておきます。
legOS に比べての利点
- uITRON ライクなシステムコールを実装している点。日本語での参考文献が多い。legOS では衛藤さんのマニュアル翻訳が唯一の日本語ドキュメントになる。
- ファイルの数が少なく扱いが楽。OS 自身は1つのオブジェクトファイルで構成される。
legOS に比べての欠点
- 使用している人がいない。世界レベルでのシェアでは legOS には叶わない。legOS について書かれている 英文 Web ページも多いし、書籍でも解説されている。
- posix like なシステムコールに慣れている人なら legOS の方がとっつきやすい。
- 環境をインストールする必要あり。legOS には Web コンパイラが存在し、gcc を含めた開発環境のインストールをしなくてもコンパイル可能。
- ローテーションセンサ、音楽演奏、wav 再生、IR メッセージ送受信などの機能を現状持っていない。
まとめ
RCX を制御するプログラムを開発する環境はその他にも色々なものが公開されています。nqc / legOS と比較したのは、世界的に普及している点、同じC言語系である点、そして LETro プロジェクトの狙いが「nqc 程度の敷居で legOS の自由度が得られる」点にあるためです。
実際 LETro OS で出来ることは legOS で全部出来てしまいます。Newsgroup もあり、日々様々な情報が流れ、更新されています。わざわざ LETro OS を使う必要は無いかもしれません。結局自分自身でオリジナルな OS を作っている過程が楽しいんですよね。その過程で出来たものを、もし使って頂けるなら、非常にありがたいと思っています。