NXT Controller in Lisp (alpha version)

Scheme版はこちら.

これは何?

LEGO社の MINDSTORMS NXT をLispで操作するためのバックエンドです.Lispを使って対話的にNXTプログラミングができるようになります.
LEGO社が公開している fantom SDK を利用して開発しています.
XS (RCX用)とは異なり,あくまでPC上で動くLispによる外部コントローラであるため,PCとNXTの間の通信は頻繁に発生することになります(特にイベント待ちの時).そのかわり,強力なCommon Lispの機能をフルに利用してメモリの制約もほとんど気にすることなくプログラミングが可能です.
XSにほぼ準拠した高水準なNXT操作用Lisp関数・マクロも実装しています.

動作要件

CLISPおよびSBCL版の制限事項

ダウンロード

nxt-lsp.zip (2007/08/27)

更新履歴

導入手順

  1. Lisp処理系のインストール
  2. fantom.dllのインストール
    1. Robolab2.9またはNXT SoftwareのCDから普通にインストールすればOKです.
  3. ファームウェアのダウンロード
    1. 必要な場合 (Robolabのファームウェアをダウンロードしてしまったり, leJOS を使っていた場合) は上記の場所から最新のstandard firmwareとBricxCC(NXT Softwareが手元にない場合)をダウンロードしてNXTにファームウェアをダウンロードしてください.
      (Vistaでは,BricxCCを「管理者として実行」する必要があるようです.)
  4. 実行
    1. PC本体とNXTをUSBケーブルかBluetoothで接続します.Bluetoothの接続は今のところかなり不安定ですのでうまくいかなければUSBを試してください.
      Bluetoothに関する追記 (2008/08/20)
      • BluetoothデバイスとNXTの相性がけっこうあるようです.私の環境では,ThinkPad X60内蔵のデバイスでは全然うまくいきませんでしたが, Abe UB22S を使うとあっさり成功しました. ここ を参考に,対応するデバイスを使用するとよさそうです.
      • 「Bluetoothで接続」 とは,パスコードを送ってシェイクハンドした状態まで持っていくことを指します.本体メニューの “Bluetooth” “My contacts” の画面でPCの名前が表示される状態ならOKと思われます. (同一PCであれば二度目以降は必要ない?)
    2. 本ページのnxt-lsp.zipをダウンロードして適当な場所に解凍します.
    3. Lisp処理系を起動します.
      • Allegro Common Lispの場合
        1. Windowsのスタートメニューから 「Allegro CL」 「ANSI ACL Images」 「Allegro CL 8.0 (ANSI)」 (Vistaの場合は管理者として) 実行します.
        2. プロンプトが表示されるので
          :cd 〈ディレクトリ名〉
          で, “nxt-lsp.zip” を解凍したディレクトリ “nxt.lsp” があるディレクトリ) に移動します. (打ち間違いなどでエラーがでたら, :pop と入力すれば元に戻ります.また,作業ディレクトリをこのディレクトリに設定したショートカットを作成しておけば,この作業は不要になります.)
      • Cygwin版CLISPの場合
        1. Cygwinのプロンプトを (Vistaの場合は管理者として) 起動します.
        2. cdコマンドで, “nxt-lsp.zip” を解凍したディレクトリ “nxt.lsp” があるディレクトリ) に移動します.
        3. “clisp” コマンドによりCLISPを起動します.
      • SBCLの場合
        1. Windowsのスタートメニューから 「SBCL x.x.x」 (Vistaの場合は管理者として) 実行します.
        2. プロンプトが表示されるので
          (require :sb-aclrepl)
          として,ACL風のRead Eval Print Loopを使えるようにします.
        3. :cd 〈ディレクトリ名〉
          で, “nxt-lsp.zip” を解凍したディレクトリ “nxt.lsp” があるディレクトリ) に移動します. (打ち間違いなどでエラーがでたら, :cont 0 と入力すれば元に戻ります.また,作業ディレクトリをこのディレクトリに設定したショートカットを作成しておけば,以上の作業は不要になります.)
    4. (load "nxt.lsp")
      (setup-nxt) (Bluetooth接続の場合は (setup-nxt t)
      として, t が返ってくれば接続成功です.
    5. (play "CDEFGAB")
      として音が鳴るか試してみてください.

マニュアル

ここ に置きました

参考にしたもの