NXTプログラミング(2)


プログラムは簡単だ。Bluetoothの接続設定を行なえば(手順→NXTをBluetooth経由で接続する方法)あとは、仮想的にCOMポートとみなせるから、そのCOMポートをopenしてコマンドをsendで送ってやるだけである。終了するときはcloseを忘れずに。


コマンド表は、以下のURLのBluetooth Developer Kit (BDK) というのがそれである。
http://mindstorms.lego.com/Overview/NXTreme.aspx


C#VB.NETなどを使うなら System.IO.Ports.SerialPortというクラスがあるので、これを使えば簡単に出来る。


上のLego公式サイトのほうには、fantomSDKとか言うSDKがupされているが、そんな気持ち悪いSDKを使う必要は全然無いのである。COMポートに直接コマンドを送ればよろしい。


まあ、C#を使うならNXT#というプロジェクト(http://nxtsharp.fokke.net/)から、NxtCommunicator.cs ( Lego Bluetooth Protocolのwrapper)だけ持ってきたほうが楽だろうが、結局、送信コマンドのそれぞれの意味を調べる作業が必要なので、あまり楽にもならない。


一番の難点は、上のBluetooth Developer Kit (BDK)、仕様書が説明不足でわかりにくいってことだろう。
それぞれのパラメータの意味は、
http://mindstorms.lego.com/Overview/NXTreme.aspx
LEGO MINDSTORMS NXT Executable File Specificationのほうに書かれている模様。


そこで、この連載では、それぞれの送信コマンドの意味について詳しく説明を書いていきたいと思っているが、↓の人が、詳しくて非常にわかりやすい解説を書いてくれている(私の説明なんかよりずっと丁寧!)ので、様子を見ながら少しずつこちらも書き進めていきたいと思う。


■ LEGO Mindstorm NXT を Ruby でコントロールする方法(Mac 編)
http://bearmini.net/blog/View.aspx?bid=1&aid=125
■ LEGO Mindstorm NXT を Ruby でコントロールする方法(Windows 編)
http://bearmini.net/blog/View.aspx?bid=1&aid=129
■ ruby-nxt の使い方(入門編)
http://bearmini.net/blog/View.aspx?bid=1&aid=131
■ ruby-nxt の使い方 - モーターを回す(基本編)
http://bearmini.net/blog/View.aspx?bid=1&aid=133


あと、BDKに載っているそれぞれのコマンドで意味がわからないところは、次のページを見ているとずいぶん解決した。


■ NXTコントローラのマニュアル
http://ryujin.kuis.kyoto-u.ac.jp/~hiraisi/nxt-lsp/manual.html