« Ubuntu11.10でWebカメラを使う方法 | トップページ | Mac を Windows コンピュータに直接接続する »

Mindstorms NXT2.0をUbuntuでプログラムする一つの方法

あなたが、手軽にロボットをデザインして動かしてみたいのなら、Mindstorms NXT2.0はベストな選択だと思う。

Mindstorms NXT2.0にはロボットの形をつくる構造部品、ロボットが世界とインタラクションするための各種のセンサーとモーター、そして、センサーとモーターをコントロールするNXTブリックと呼ばれる小型のコンピュータが含まれる。

さらに、開発環境としてNXTーGがついてくる。

NXTーGはWindows用のグラフィカルプログラミングツールで、直感的にロボットの振る舞いをプログラムできる。

bluetoothにも標準で対応しており、難しいことを考えずに、ものすごく簡単にプログラムできる優れものだ。

しかし、一般的に、NXTーGのようなグラフィカルなプログラミング言語は、C言語やPythonのようなテキストでプログラムする言語に比べて、同じ内容をプログラムするために占有する画面が大きくなるというデメリットがある。

そのデメリットを解消して、快適にロボットをプログラムする方法を調べてみた。

実現したいのは、次の3つだ。

・テキストでプログラムできること
・Ubuntu上に開発環境を構築できること
・bluetoothでPCとNXTブリックが通信できること

調べた結果、

・開発言語はNXCが人気が高い
・NXCの開発環境であるBricxccはWindowsだけでなくUbuntuにも対応している
・bluetoothには、nexttoolというツールが対応している

ことがわかった。
なかなか良い。

NXCはC言語に似た文法をもつ言語だ。

例えば、

・少しの時間(500ms程度)、左前方に進み、
・その後、少しの時間(500ms程度)、右前方に進み、
・その後、少しの時間(500ms程度)、バックして止まる

というロボットの振る舞いをプログラムする場合は、次のようなコードを書く。

task main()
{
        OnFwd(OUT_A, 75);
        Wait(500);
        Off(OUT_A);
        OnFwd(OUT_B, 75);
        Wait(500);
        Off(OUT_B);
        OnRev(OUT_AB, 75);
        Wait(500);
        Off(OUT_AB);
}

このコードをロボットが実行するまでの手順は次のようなものだ。

まず、このコード(test.nxc)をコンパイルする。

nbc -O=test.rxe test.nxc

これで実行形式であるtest.rxeができる。

そのtest.rxeをNXTブリックにダウンロードして実行すると、上のコードのとおりにロボットが動く。

ダウンロードにはUSBケーブルを使ってもよいが、今回はbluetoothを使う。

今、NXTのデバイスIDが、00:00:00:00:00:00であるとすると、

test.rxeをNXTブリックにダウンロードするには、次のコマンドを実行する。

nexttool /COM=BTH::NXT::00:00:00:00:00:00::5 /BT -download=test.rxe

ダウンロードの完了後、次のコマンドにより、NXTブリックにダウンロードしたプログラムを実行すると、ロボットが上のコードの振る舞いどおりに動く。

nexttool /COM=BTH::NXT::00:00:00:00:00:00::5 /BT -run=test.rxe

今回は一通りの振る舞いを実行すると、ロボットが停止するが、ループをプログラムした場合などに、今動いているプログラムを止めるには、次のコマンドを実行する。

nexttool /COM=BTH::NXT::00:00:00:00:00:00::5 /BT -stop

//////////

Ubuntuを使ってNXTをプログラムする方法に関する情報は少ない。

まして、

 ・Ubuntu
 ・NXC
 ・bluetooth

をまとめて直接説明しているドキュメントは、今のところ見つからないのだが、

とても役に立ったのは次の2つのページだ。

開発ツールについては、このページを参考にすると良い。

Ubuntu上に開発環境を構築する方法については、このページを参考にすると良い。

|

« Ubuntu11.10でWebカメラを使う方法 | トップページ | Mac を Windows コンピュータに直接接続する »

ロボット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1286769/43257118

この記事へのトラックバック一覧です: Mindstorms NXT2.0をUbuntuでプログラムする一つの方法:

« Ubuntu11.10でWebカメラを使う方法 | トップページ | Mac を Windows コンピュータに直接接続する »