ロボット

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上に開発環境を構築する方法については、このページを参考にすると良い。

| | コメント (0) | トラックバック (0)

マインドストームはソフトウェアエンジニアにおすすめのロボットシステムだ

ロボットに興味を持ち始めたソフトウェアエンジニアが、最初に手にするべきは、マインドストームNXTで決まりだろう。

ソフトウェアとハードウェアの融合としてのロボットシステムを、ここまで親しみやすい形で具現化した製品は、洋の東西を問わずないのではないだろうか。

こう断言するのには2つの理由がある。

一つはハードウェアを準備する敷居が、ものすごく低いことだ。

製品パッケージを買ってきて、最初のロボットを組み立て終わるまでに、30分もあれば充分だ。しかも、ロボットの形を作り出す仕組みがレゴブロックなので、自分のアイデア次第で、様々な形のロボットを新たに作り出すことができる。

二つ目は、標準でついてくるソフトウェア開発ツールLabVIEWの学習が、これまたものすごく簡単だということだ。

マインドストームの動作は、平行コンピューティングの概念を使ってプログラムできるのだが、LabVIEWを使うと、それがいとも簡単に実装できてしまう。

平行コンピューティングはロボットの自然な振る舞いを作り出すのに必須の概念だが、それが、専門的なことを意識することなく、ごく自然に実現できてしまうのは驚きだ。

これらの特徴は、日本のホビーロボットの特徴とは真逆のものと言える。

例えば、近藤科学のKHRー3HVだと、製品を買ってきてから、何時間もの間、延々とネジ止めの作業を続けなければならない。

毎日少しづつ組み立てる場合は、1週間以上かかるかもしれない。

そして出来上がったころには、疲れ果てて、動作をプログラミングする気力が無くなっていたりする。

しかも、2足歩行ロボットのプログラミングは難しく、標準の形から変えると、まともに動かなくなってしまう可能性が高い。

また、オプションのCPUボードを使うとC言語でプログラミングできるとはいうものの、できることは限られているし、そもそもC言語でのプログラミング自体が難しいものだから、誰もが自分のアイデアを自在にロボットに実現させるといったことは、程遠いだろうと思う。

KHRー3HVとマインドストームの違いは何なのだろう?

一つには、ハードウェア中心の考え方とソフトウェア中心の考え方があるのではないか。

KHRー3HVは本当によくできた精密機械だ。

ジャイロを使わなくても安定歩行や動作ができし、細身の格好良いプロポーションだ。

それに比べてマインドストームでつくる2足歩行ロボットは、大昔のロボットアニメに出てくるようなブリキのロボットのような姿だし、歩く姿ももたもたしている。

まさにKHRー3HVは職人技の粋をあつめたハードウェアの極みといったところだ。

一方のマインドストームは、ソフトウェアそのもののような印象を受ける。

ロボットの部品や、それらが集まってできるロボットは、ソフトウェアが現実の世界と関わるためのインタフェースに過ぎない、といった印象だ。

マインドストームが動いているのも見ていると、まるでアイデアが動いているような感覚を覚える。

と、ここまで書いた文章を読み返してみると、本当にマインドストームでロボットを作ることが楽しいんだなと思う。この楽しさはKHRー3HVを触っている時には感じなかったものだ。

もちろんKHRー3HVのような本格2足歩行ロボットを非難するつもりはないし、ハードウェアとしてのロボットは、むしろそちらが本流だと思う。

しかし、ソフトウェアエンジニアがロボットを作ってみたいというのは、自分のアイデアを、コンピュータの中だけでなく、現実の世界の中で実際に動かしてみたいという衝動にかられたときだろう。

そのモチベーションが下がらないうちに、最初の試みができる製品として、マインドストームは抜群に優れていると思うのだ。

 

ロボットに興味を持ち始めたソフトウェアエンジニアが、最初に手にするべきは、マインドストームNXTで決まりだろう。

レゴ マインドストーム NXT2.0 (英語版) 8547 Toy レゴ マインドストーム NXT2.0 (英語版) 8547

販売元:レゴ
発売日:2009/10/08
Amazon.co.jpで詳細を確認する

| | コメント (0) | トラックバック (0)

KHR-3HV導入記(2)

両足首のサーボ(ID10)と左脚大腿部のサーボ(ID7)の不具合で、近藤科学株式会社に送り返していたHKRー3HVだが、1週間も経たずに点検・修理を終えて戻ってきた。

近藤科学のサポートの素早さと丁寧さには感動した。
ありがとう、近藤科学。

なぜサーボが壊れたのか?という疑問は解消しないものの、点検・修理後のHKRー3HVはすこぶる快調に動いている。

ロボット本体の動作が確認できたので、次は無線LAN搭載マイコンであるKCBー3WLの動作確認だ。

マニュアルに従って、無線LANネットワークに参加する設定をすると、あっさり接続した。

その後、telnetでKCBー3WLに入って、Rcb4UdpServerを起動した後、PCでRCBCommanderを起動してRcb4UdpServerと接続する。

RCBCommanderのGUIにはゲームコントローラを模した操作ボタンがついており、その操作ボタンをマウスで押して、KHR-3HVを操作することができる。

前身、後進、右旋回、左旋回、右ステップ、左ステップ。

OKだ。

ここまでで、KHR-3HVをネットワークロボットとして使えることがわかった。

ところで、いくつか問題もある。

1. KCB-3WLをバックパックに取り付けると、ジャイロの取り付け場所がなくなる
2. KCB-3WLの無線LANユニットの感度が弱い?
3. 標準バッテリだと、KCB-3WLと無線LANユニットに十分な電源を共有できない?

1はバックパックにジャイロを取り付ける治具が必要そうだ。
2と3は引き続き調査中。

今回、KHRー3HVを使うと、比較的安価にネットワークロボットのプロトタイプシステムを構築できることがわかった。

KCB-3WLで動くソフトウェアを含めて、ソースコードが公開されているので、KHRー3HVを監視・制御する独自のツール群を構築するのも容易そうだ。

以上




| | コメント (0) | トラックバック (0)

KHR-3HV導入記

発売されてからずっと気になっていた近藤科学の人型ロボットKHRー3HVを、先日ようやく買った。
基本セットの組み立ては2日ほどで終わり、動作確認を完了。

ジャイロを組み立てマニュアルどおりに装着して、再度動作確認。
この時点で不具合はなし。

一週間後、一緒に買った無線LANコントロールユニットKCBー3WLを載せるところで問題発生。

基本セットの組み立てマニュアルどおりだと、バックパックに載せるスペースがない。
WEBで調べると、近藤科学のニュースリリースに、KCBー3WLを装着してバックパックを開いている写真が見つかる。
そのとおりに装着すると、今度はジャイロをつける場所がない。

仕方がないので、暫定的にバックパックの左側のパーツに仮止めし、動作確認OK。

ここで注意点が一つあることがわかった。

それは、KCBー3WLのCPUボードとインタフェースボードの接点をしっかり差し込むことだ。
最初組み立てた時、そこの接続があまかったようで、CPUボードが起動せず、原因を調べるのに結構時間をかけてしまった。

その後、KCB-3WLの無線LAN設定をしている最中に、両足首のサーボ(二つともID10)が応答しなくなっていることがわかり、そこを調べているうちに、左足のサーボ(ID7)から煙と異臭が発生した。

こんなにも簡単に壊れるのか?とビックリしたが、人型ロボットの脚には想像以上の負荷がかかっているのかもしれない。

とりあえず、買った店と近藤科学に問い合わせ中だ。
結果は分かり次第、ここに書く。

それにしても、サーボというものはこんなにも簡単に、壊れてしまうものなのだろうか?

1個7000以上する部品がこれほど脆弱だとすると、人型ロボットが家庭に1台なんていう時代は、まだまだずっと先になるのかもしれないなぁ、と思ってしまう。

残念。

| | コメント (0) | トラックバック (0)