このブログについて

2006年10月5日発売予定の「教育用レゴ マインドストーム NXT」を発売前から体験しちゃうブログ。

書いてる人: ooba

Powered by TypePad

NXT のオープンソース化の状況

マインドストーム NXT 発表当時より、LEGO 社は「オープンソース化」を公言していました。実際、NXT の公式サイトでは8月上旬にはいくつかの仕様書が公開されていました。

LEGO.com MINDSTORMS Overview

現在公開されているのは、実行ファイル形式の仕様、Bluetooth 通信の仕様、回路図を含むハードウェア仕様などです。NXT とコミュニケーションするためのドライバの SDK もあります。「オープンソース」というので LEGO 社謹製の標準ファームウェアのソースが公開されるのだと思っていたのですが、それはまだないようです。

これらの情報や独自で解析した結果などを元に、すでにサードバーティからツールやプログラミング環境、拡張パーツなどがリリースされています。上記ページにいくつかリンクがありますのでたどってみて下さい。リンクにはないですが、プログラミング環境として「Robot C」や「NXT# - Mindstorms for .NET」なんてのもあります。

個人的には、標準ファームウェア上で動くプログラムをアセンブリ言語ライクにプログラミングできる「NBC - NeXT Byte Codes」と、コンパスセンサーやモーター並列制御ユニットなどの拡張パーツをリリースしている「Mindsensors.com」がオススメです。同時に、RCX 時代に愛用していた NQCleJOS が早く NXT 対応しないかと心待ちにしています。

標準ファームウェアのソースコードが公開されたら、サードバーティによるファームウェア&開発環境の開発が一気に加速すると思うのですが、今後公開されるのかどうかはよくわかっていません。上記 SDK もヘッダーファイルとライブラリファイルだけでソースは含まれていませんしねぇ。気長に待ちたいと思います。

複数の NXT で遊ぶ マスター・スレーブ編

続いて、いわゆるマスター・スレーブ制御とよばれるものをやってみました。といっても自分の手足に機械を装着したりする本格的なやつではなくて、片方のロボットを動かすともう片方のロボットが同じ動きをする、というものです。

Masterslave

これもプログラムを適当に組んでいるため、メッセージの取りこぼしなどが原因でまったく同じ動きになっていません…。適当といっても結構苦労したんですケド。Bluetooth 通信はメールボックス型のメッセージ交換システムで成り立っていて、1台の NXT につき 最大10個のメールボックスを使って文字や数字、論理値が書かれたメッセージをやりとりできます。が、各メールボックスは最大5つまでしかメッセージを保存できないので、一方的に送り続けるとすぐにあふれて取りこぼしちゃうんですよねぇ。

Bluetooth 通信で厳密なメッセージ制御をするのは結構めんどくさいですが、それでも他の機能と同様に送信も受信もプログラムブロック1個でできちゃうのはなかなか便利です。NXT 1台で遊ぶより夢が広がってかなり楽しいので、1セット買った人はぜひもう1セット買いましょう(笑) ちなみに僕は4セット欲しいなぁ、とお財布と相談中…。

Bluetootht 通信を使ったマスター・スレーブ制御の本格的(?)なヤツはまた別のところでお見せできると思います…(^^;

複数の NXT で遊ぶ ラジコン編

レゴマインドストーム NXT を体験しはじめてからしばらくの間1セットだけで遊んでいたのですが、先日 NXT を3台同時にいじれる機会に恵まれました! わーい!

100_0902

NXT が複数セットあると、同じセンサーを同時に複数個使えたり、NXT 間で Bluetooth 通信でメッセージのやりとりができたり、できることがかなり増えてきます。Bluetooth 通信を使ったプログラミングをまだ試していなかったので、さっそく1対多の通信制御をやってみました。

ラジコンのプロポをイメージした以下のような NXT から、他の2台のホッケーロボットを操作します。タイヤでハンドル操作、バイオニクルのツメでスロット操作をするようになっています。かなりしょぼいですが気にしない。

100_0903 100_0905

以下は動かしてみたときの様子です。プログラムが適当なせいでメッセージを取りこぼしているのと、バッテリー残量の違いでまったく同じ動作になっていないのはご愛嬌。なんか反応が遅いのも通信周りが適当だからだと思います…。

Rccar

RCX 時代は赤外線通信だったため、赤外線ポートの向きや距離によっては通信できなくて困りましたが、Bluetooth 通信ならその辺はまったく問題ありません。家の隅から隅まで走らせて遊ぶことが出来ました。接続の手続きがちょっと面倒なのが残念です。

モーターを動かしてみる

マインドストーム NXT からはモーターがサーボモーターになりました。公式サイトの紹介では「回転センサー内臓のインタラクティブ・サーボモーター」とありますが、要はこれまでのモーターと違って回転角度の制御ができるモーターになった、と思っていただければ問題ありません。マインドストーム用のパーツの中で、NXT 本体に次いで高機能になったのがこのサーボモーターです。

レゴブロックには実はかなりの種類のモーターがあります。そのうちのいくつかを今回のサーボモーターと並べてみました。

100_0726

このように、これまではモーターというと四角い形をしたものが多かったのですが、今回はサイズが倍近くになっているのに加え、モーターとしての構造や形が大きく変化しました。このサイズと形状から、これまでみたいにちょっと動かしたい部分に気軽に組み込むことが難しくなるでしょう。一方で、これまでは「軸がどれだけ回っているか」「軸を○度回す」などの制御はモーター単体では不可能でしたが、今回からはサーボモーター単体で±1度の精度で角度制御できるようになりました。

これまでのマインドストームで角度制御したいときには、以下の写真のような角度センサーを別途取り付ける必要があったんです。

100_0728

青いブロックが角度センサーです。実はコレ、あんまり精度がよくないし分解能も低いのですが、みんなタッチセンサーなどと上手く組み合わせてなんとか制御に使っていました。このように、これまでは角度制御する予定の可動部分にはロボットの設計段階でこの角度センサーを取り付けておく必要がありましたが、マインドストーム NXT からはあまり考えずにロボットを組むことができます。そういう意味では、制御に関してはハードウェアレベルでそれほど悩まなくてすみそうです。

角度センサーとモーターを合わせると大体サーボモーターと同じサイズですね。この二つをどうにか連結させて組み込む手間を考えたら、最初からパッケージになっているのはラクチンかも知れません。一方で、角度制御がいらない部分にもこの大きさのパーツを組み込む必要が出てきますし、この独特の形を配置するのには毎回悩まされそうです…(^^;)。そういう意味でも、従来のモーターが使える教育用セットは使い勝手がよいかも知れません。

さて、そのサーボモータの概観をちょっと見てみましょう。

100_0733 100_0735

見てわかるように、ポッチが一切なくなった代わりに何箇所かにペグを差し込む穴が用意されています。この穴を上手く使ってサーボモーターを固定しなくてはいけません。Technic 系のセットでよく遊んでいる人だったらあまり悩まないのかも知れませんが。また、サーボモーター自体をデザインの骨格に組み込むような設計が必要そうです。

サーボモーターの回転スピードや角度制御の精度などを確認する意味も込めて、簡単な装置を作ってみました。

続きを読む "モーターを動かしてみる" »

NXT の詳細 中身編

外見編に続いて、NXT の中身についても少し詳しく説明します。

NXT のスペックは以下のようになっています。

  • 32bit ARM7 マイクロプロセッサ (256Kbyte フラッシュメモリ、64Kbyte RAM)
  • 8bit AVR マイクロコントローラ (4Kbyte フラッシュメモリ、512byte RAM)
  • Bluetooth Class II V2.0 準拠
  • USB 2.0 通信ポート
  • 入力4ポート、出力3ポート (共に6線デジタルケーブル)
  • 100×64 ピクセル 液晶ディスプレイ
  • 8KHz 8bit モノラルスピーカー
  • 単3電池6本または充電式バッテリーで駆動

従来の RCX と比べると、頭脳部分ともいえる CPU とメモリが大幅にグレードアップしています。CPU は 8bit の H8 から 32bit の ARM7 に変わりました。ゲーム機でいうとファミコンとプレステくらいの性能差です。かなりオーバースペックな気がしますが、これで複雑な処理も楽々こなしてくれるに違いありません。

また、RCX ではファームウェア (OS みたいなもの) とプログラムを 32Kbyte しかないメモリに保存していました。しかもただの RAM なので電池を抜くとダウンロードした内容が消えてしまいます。持ち運ぶときには電池を抜かず電源ボタンも押さないように慎重に扱うのですが、何回もファームウェアやプログラムを消してしまった覚えがあります。それが NXT からはファームウェアやプログラム、音声ファイル、画像ファイルなどはフラッシュメモリに保存する形になりました。電池を抜いてもしっかり保存されるのは素直にうれしいです。メモリ自体の容量も増えているため、より複雑なプログラムを組むことができます。

あとは、これまで赤外線通信しかサポートしていなかったのがそれが廃止され、USB と Bluetooth による通信がサポートされました。赤外線通信はポートの向きや環境に影響を受けることが多かったのですが、Bluetooth なら問題なさそうです。これにより、PC との通信はもちろんのこと、Bluetooth を搭載した携帯や PDA とも通信可能です。また、NXT 同士で Bluetooth を使ってメッセージをやりとりすることもできます。

他の仕様はこれまでに書いてきたとおりですね。個人的には入出力ポートがもうちょっと増えているとうれしかったんですが、今回からモーターやセンサーが大きくなりましたし、まあしようがないですね。

情報ばかりになってしまったので、ここで実際に PC と接続して NXT の中をのぞいてみましょう。

続きを読む "NXT の詳細 中身編" »

NXT の詳細 外見編

マインドストーム NXT の要ともいえる CPU ブロック、通称「NXT」について少し詳しく説明します。

外見編ということで、まずは正面写真から見てみましょう。

100_0703_1 100_0700

NXT の特徴の一つである液晶画面の大きさがよくわかります。100×60ピクセルの画面に文字や絵を好きなように表示することができます。プログラムの動作確認などをする場合、いままでは情報量が少ない画面でなんとかがんばる必要がありましたが、ようやくその呪縛から解放されます。これだけ大きいと NXT 単体でゲームもできそうですね、と伏線を張っておきます(^^

NXT ではこの大きな画面と4つのボタンを使って、高機能で多階層なメニューを楽に操作することができます。メニューには、プログラム起動をかねたファイル管理、簡易プログラム環境、入出力の動作確認、新しい通信方式である Bluetooth や操作音のボリュームといった各種設定などがあります。4つのボタンは、真ん中にあるオレンジ色のが決定系ボタン、左右にそれぞれある三角のが左右ボタン、一番下の長細いのがキャンセル系ボタンで、最初の3つは自作プログラムからも利用することが出来ます。ちなみに電源を切る場合は一番下のボタンを使います。

続いて、側面と裏面を見てみましょう。

100_0681 100_0683

ついでに従来の CPU ブロックである RCX と SCOUT を並べてみました。NXT がこれまでより一回り大きくなっているのがわかると思います。電池はこれまでと同じように単三6本を裏面のパネルを開けて入れます。教育用セットには、裏面のパネルと交換する形で充電式バッテリーを使うこともできます。ちなみに、裏面に空いている穴の一つ (写真の一番左上の穴) には、リセットボタンが仕込まれています。NXT が暴走したりフリーズしたりしたときに、針金やシャフトを使ってリセットをかけることができます。

最後は入出力のケーブルを接続する上面と下面の写真です。

100_0684 100_0685

上面には出力用のポートが3つと USB ポートが1つ、下面には入力用のポートが4つ備わっています。これまでは電極が仕込まれたブロックだった通信ケーブルの端子が、ご覧のように電話線や LAN ケーブルみたいな形に変わっています。よく見ると電話線などの端子と違い、出っ張りの部分が端に寄っています。間違って違うケーブルを挿さないようにする配慮だと思いますが、あまり見ない形状なのでケーブルの自作はめんどくさそうですね(^^;

さて、このように NXT のどこをどう見渡してもポッチ (ブロックをはめるための突起) が見当たりません。そのため、NXT を固定するには Technic シリーズのようにペグやビーム、シャフトなどを使う必要があります。寸法チェックを兼ねて適当にくっつけてみたのでご覧下さい。

続きを読む "NXT の詳細 外見編" »

マインドストームシリーズを並べてみた

大きさ比較も兼ねて、いままで発売されたマインドストームシリーズを含む代表的な CPU ブロックを並べてみました。それぞれ極々簡単に紹介します。

History

左上のが一般向けの「Robot Invention System (通称 RIS)」や教育用の「Team Challenge Set」などに付属していた「RCX」と呼ばれる CPU ブロックです。従来のマインドストームとは基本的にこれらのことを指します。入出力はそれぞれ3系統で、パソコン上でかなり自由にプログラムできるようになっています。僕が技術委員長をやっている「ETロボコン」も、これと C/C++ の開発環境 (brickOS) や Java の開発環境 (leJOS) を使っています。バージョンや形が何種類かあります。

その右にあるのが「Robotics Discovery Set (通称 RDS)」に付属していた「SCOUT」です。RCX はパソコンがないとプログラミングできませんが、SOUCT はボタンとディスプレイを使って単体でプログラミング可能です。内蔵の光センサー(上の黒い部分)の他に、入出力がそれぞれ2系統使えます。コンセプトが「生物」なのか、セットに入っているパーツは虫っぽいものが多いです。SCOUT の電源を入れると「ジ、ジ、ジ」と鼓動っぽい音 (実は3段階の制御スピードを表現している) がするのも面白いです。

左下のがスターウォーズとマインドストームのコラボともいえる(?)「Droid Development Kit」や「Dark Side Development Kit」に付属していた「MICRO SCOUT」です。光センサーとモーターを1つずつ内蔵しているだけの低機能なブロックですが、これで二足歩行ロボットを作ったりする人もいます (例えば五十川さんの龍神)。RCX に付属の赤外線タワーなどを使って簡単なプログラミングができます。色は白と灰色の2種類あります。

右下にあるのが「Spybotics」に付属のモノです。正式にはマインドストームシリーズではありませんが、流れを汲むシリーズだと思います。タッチセンサーと光センサーに加え、モーターも左右2つ内蔵しています。パソコンと連携して「ミッション」と呼ばれるゲームをクリアしていくのが主な遊び方ですが、自由にプログラミングもできます。付属のリモコンでも動かせたりとなかなか面白いシリーズです。色は4種類あります。

そして右上にあるのが今回の NXT です。RCX や SCOUT よりちょっと大きくなっています。そしてポートが上下に移動したことにより、画面やボタンが格段に大きくなっているのがわかります。こうやってこれまでのモノと比べてみると「ずいぶん進化したなぁ」という印象です。そしてなにより、ようやく Mac に正式対応してくれたのがうれしいです。ただ、これまで必ずどこかにあった通称「ポッチ」が一切なくなったのがちょっと残念ですねぇ。

NXT のスペックや形状、サイズなどの詳細解説は、別のエントリーで改めて書きたいと思います。

教育用セットのパーツ内容

セットに入っているパーツを広げてみました。一回組んだ形跡がありますが気にしないで下さい(^^;

Set_view

左下にあるのが今回の CPU ブロックである「NXT」です。その右にあるのが各センサーやモーターです。従来のマインドストームのセットにはタッチセンサーと光センサーしかつきませんでしたが、NXT ではサウンドセンサー(音量を測るセンサー)と超音波センサー(距離を測るセンサー)がはじめから付属しています。さらにモーターには回転センサーが内蔵しているので、センサー系だけで5種類も標準装備していることになります。これはうれしいですねー。

NXT の上にあるのが新しいセンサーやモーターをつなぐケーブルです。長さは3種類あります。コネクタが電話線のような形状をしていますが、ちょっと違う特殊な形です。このように NXT から接続方式が変わったので、これまでのセンサーやモーターはそのまま繋げなくなりました。

が、右下あたりにライトブロックがあるのでお気づきの方もいると思いますが、教育用セットには従来のセンサーやモーター、ライトブロックなどをつなげるための変換ケーブルが付属しています。ライトブロックの周囲を囲んでいるものがそうです。手元には一本しかないのですが、販売時には3本付属するそうです。これでいままでの資産も活かせますね。一般用セットにはつかないようなのですが、別売りされるんでしょうかねぇ…。

他に変わったところだと、新しいタイプのターンテーブルが1つ入っています。これが入っているセットは現在3つくらいしかないので、個人的には結構うれしいです(^^

ちなみに、この写真には載っていないパーツがいくつかあります。教育用セットにはタッチセンサーが2個つきますし、他に充電式のバッテリーやミニフィグなども付属しています。もちろん USB ケーブルも。Bluetooth 通信をするときに必要な PC 用の接続アダプターは別売りです (NXT には内蔵しています)。

次のエントリーでは、従来のマインドストームシリーズとの簡単な比較をしてみたいと思います。