2013年6月30日日曜日

LEGO TECHNIC U400 ウニモグ と Arduino for Visual Studio お試しのつづき

 さて、Mindstorms NXTに手を出してから、にわかLEGOファンになってしまい、色々と手をつけていますが、今回はLEGO TECHNICシリーズの大物、U400 ウニモグです。


 Amazonで注文して届いた箱を見た瞬間、「・・・」ってなってしまったくらいの箱の大きさ。タバコは吸わなないので、煙草の箱がないんで、代わりに手のひらと大きさ比較。別に私の手が小さいわけではありません。



 箱を開けて、パーツを確認。なかなか手強そう。


 早速、組立て開始。基本はマニュアル通りに組み立てれば間違いなく完成するはずなんですが、部品が多いと、うっかりつけ忘れたりします。最後の方になって、中の中の方のギアを付け忘れて軸が空回りしたりすると、泣きたくなりますので、慎重に行きます。


 クラッチ(赤い部品)がついていて、一つのモータを切り替えて複数の動作に伝達できるようになっています。


 手前の青いチューブが出ているのは空気ポンプです。このモデルは空気圧でクレーンを動かせるようになっています。楽しみ。ところで、作り始めはなんとなく機構や動力の伝わり方も想像ができるんですが、この辺になってくると、もう、説明書にしたがって只々組み上げていくだけです。


 ディファレンシャルギアなんかもあります。LEGOはほんとにすごい「おもちゃ」だと思います。




 部品を小分けするのに、プラスティックのトレーやラジコンサーボのケース、石鹸の入れ物、それでもたりなくて、牛乳パックの底の部分を数cm切り取って即席トレーを用意しました。この牛乳パックトレーが以外に便利。電子部品なんかを机の上に広げるときなんかにも使えそう。ただし、注意事項として、使用済みの牛乳パックは綺麗に洗って、乾燥させてから使うこと。じゃないと、微妙に牛乳臭が・・・。



 車体ベース部分を組み立てたところ。タイヤもでかい。


 運転席部分を組み立て開始。


 シートももちろんブロックです。


 運転席部分を組み上げて、車体ベースと連結します。


 連結したところ。さらに荷台を組み立てて、車体に載せます。



 うぉーっ。つ、つかれた。でも、まだ、終わりじゃないんです。あと、車両前部にウィンチ、後部にクレーンがつきます。でも、もう、今日はだめかも・・・。なんか、肩が凝った。自分はあんまり肩こりはならないんですが、年かな・・・。レゴ肩だ・・・。

 というわけで、ウニモグの続きは次回の休日のお楽しみにとっておくことにしました。気分を変えて、何か別のことをしようと思い、ここで少し触った Arduino for Visual Studio をもう少し調べて見ることにしました。

 Visual Studio で Arduinoのコーディング・コンパイルができて、Visual Studioの補完機能も利用できるフリーのプラグインですが、有料のライセンスキーを購入するとデバッグ機能が使えるようになります。なお、30日間はお試しでフリーでデバッグ機能も使えるということなので試してみたいと思います。

 今回は試しにLEDチカのプログラムをdelay関数を使わずに変数でforループを回して、ブレークをかけて、変数の値をウオッチするというのを試しました。以下が、その画面です。


 Visual Studioはエディタとして使用されますが、Arduino側の実行・デバッグに対してデバッグモードにはならないので、通常のプロジェクトと同じ感じでデバッグしようとすると操作に戸惑うかもしれません。
 デバッグメニューの中に追加された「Arduino」メニューか、実行してシリアルモニタを表示して、そこにあるアイコンからメニューを選択して操作するような感じです。


 変数のウオッチもできます。ただ、どうやってウオッチ対象を設定するのかが初めはわからず、ちょっと戸惑いました。


 ブレークポイントを設定して、ブレークポイントヒット時の設定に参照したい変数の表示メッセージを設定しておくことで、上記のExpressionsウィンドウに変数の値を表示できます。ブレークをかけずに変数の値を見たい場合は「続けて実行する」にチェックを入れておけば、トレースポイントとして変数の値が参照されてプログラムは実行を続けます。


 デジタルポートの状況をモニタ表示できるウィンドウもあります。今回のテストプログラムでは実ボードのLEDに合わせて IOの13が点滅しました。

 同様にアナログポートの値をグラフ表示してくれるウィンドウもあります。アナログポート端子付近を指で触ってノイズを載せたところのグラフです。


 デバッグを行なっているところをキャプチャしてみました。


 通常のVisual Studioでのデバッグに比べると、操作に癖はありますが、かなり多機能で、いいんじゃないでしょうか。Arduino-IDEではステップ実行やウオッチがないので、printデバッグに頼るしかないので。まあ、タイミングがシビアな(組み込みはそもそもそういうのが対象だったりするんだけど)プログラムにはブレークをかけたデバッグはそもそも使えないことが多いですけど。



2013年6月29日土曜日

NXShield-Mx を試してみました。あと、Arduino for Visual Studioも。

 今日のガラクタは、 NXShield-Mx です。


 以前、Mindstorms NXT を始めた時に、まず、最初にケーブルをちょん切って、ArduinoとのI2C通信とRS485通信を試してみました。どうやらI2C通信はソフトウェアで行なっているようで、通常の100k/300kbpsの通信速度ではなく、9600bpsくらいで行なっているようでした。RS485は115200bpsでも通信出来ましたが、おそらくNXT側はもっと高速なレートでもいけるんじゃないでしょうか。
 さて、RS485でのNXTコントローラとArduinoの通信が出来れば、Arduino側にI2Cやアナログ入力、デジタル入出力のセンサやデバイス類を接続して、RS485での通信でNXTコントローラからのやり取りも可能になるわけですが、「簡単な内容ならいっそArduinoから直接モータとかセンサを制御しちゃってもいいんじゃない?」っていう発想もでてきます。実際、ネットで検索するとそういうことをされている方もいて、シールドなんかも自作しているんですが、今回は上記の市販のシールドを見つけたので、試してみようと思います。ライブラリも提供されているので、自分でMindstormsの仕様(オープンになっている)を見て、ゴニョゴニョする手間が省けます。
 何よりも、今回、これを試してみようと思ったきっかけは、NXTのBluetoothと自分?の相性があまりにも悪いので、いっそ、Arduinoでやるか?BluetoothにしてもArduinoならUART-Bluetoothアダプタ使えば実績あるし・・・。っていうのがありました。


 通常のArduinoのシールドと比べると非常に大きなものです。裏返してみると、こんな感じです。


 Arduinoにかぶさるようにして、Mindstorms のモジュラージャックが配置されています。また、ラジコンサーボなどを接続するためのピンヘッダもあります。


 NXShieldの基板は5mmくらの厚みがあり、実際には2枚の基板のサンドイッチになっていて内部に回路が実装されているようです。基板の数カ所にLEGOのシャフトに合わせた十字の穴が開いているので、これを利用してブロックに固定することができます。


 とりあえず、モータを動かすサンプルプロジェクトを動かしてみました。


 普段Arduinoでのプログラミングに慣れている人にはいいかも。シールドをスタックしたり、アナログ入力でセンサを使ったりも自由度が高いし。

 それと、今回、Arduinoのプログラミングの環境として、Arduino for Visual Studio (Visual Micro)というのを偶然見つけたので試してみました。フリーで利用できる(有料ライセンスキーを購入するとデバッグ機能が使えるらしい。ソフトモニタみたいなものかな?)ようなので、普段、Visual Studioに慣れている自分にはありがたいものを見つけました。コード補完もしてくれるし。(ちなみに自分の環境では、Arduino-IDE1.0.5ではコンパイルでエラーが出てしまい、1.0.4にしたらうまくいきました。)


 30日間は、評価版としてデバッグ機能も試せるみたいなので、今度試してみよう。



2013年6月28日金曜日

Robi 15~19号組立て

 今朝は起きがけに Robi の15号から19号までの組立てです。特筆するようなことはないんですが、20号からは先行刊行分と通常刊行分が統合されます。それに合わせて、頭部の(先行→通常での)改良された部分のパーツが先行向けに無償で提供されました。ディアゴさんありがとう。

 15号のパーツ。


 組み立てたところ。


 16号のサーボを肘につけたところ。


 17号の部品。


 17号を組み立てたところ。


 18号の部品。


 18号を組み立てたところ。


 19号は上腕サーボ。


 サーボを取り付けて、19号まで組み立てたところ。


2013年6月27日木曜日

NXT.NET で LEGO Mindstorms をコントロールしてみる

 今回は「Kinect×Mindstorms NXT ロボット プログラミング」という書籍に掲載されていた NXT.NET for Windows というのを使って Mindstorms NXT を動かしてみようと思います。
 書籍ではKinectと連携して、NUIでMindstorms NXTを操作していますが、まずは、NXT.NETを試してみようと思います。

 操作対象として、アームを組み立てます。


 土台にNXTモータを2つ設置して、


 アームを左右に旋回するためのターンテーブルルギアを設置。



 アームの先端にハンドを開閉するためにNXTサーボモータを取り付けます。先端にはタッチセンサとカラーセンサも付けます。


 とりあえず、アームの組立は終了。



 まずは、センサやモータポジションは使わず、PCから単純にモータ速度を制御するようなお試しをやってみようと思ったんですが、ここからが大変でした。といっても、プログラムが・・・とかじゃないです。Bluetoothがいうことを聞いてくれません。今回、NXTのBluetoothを初めて使ったのですが、一見、PCからデバイスが検出されて簡単に接続したように見えるんですが、実際には使えない状態でした。ネットで検索すると、Mindstorms付属のGUIプログラムツールを使うときはプログラムが直接通信するのでSPPを設定してはいけないとか、SPPで使う場合に東芝Bluetoothスタックを使うとNXTではうまくいかない、みたいな情報はあるんですが、今回はどちらにも該当しません。Win7標準のスタックでSPPで接続をして送信ポートと受信ポートが2つ構成されたような状況となっていて、これは、今回の場合は正しい構成のはず。結局、原因が分からず、ドライバを削除して入れなおしたり、ポートを手動で設定してみたり、色々と無意味そうなことを二時間近くやって、(その間には単純にドライバを入れなおしているにもかかわらずポートが構成されたり、されなかったり、明らかに間違ったデバイスとして認識されたり、一体、何なんだろう・・)、よくわからないけど、どうにかつながる状態に。しかし、プログラムから一旦接続して、再度接続しようとすると繋がらず、NXT側の電源を何度もOn/Offすると、また、つながって、また切断すると・・・・。

 使えねぇ・・・。

 まあ、遊びでやってるだけなんで、いいけど。おそらくは、自分のPCの環境だけでの問題だとは思うんだけど、これが、NXTのスタンダードなんだったら、EV3のBluetoothはもう少しまともにして貰いたいもんです。それとも、EV3はWLANもオプションで対応するみたいだから、Socketなり上位のプロトコルでネット接続してねってかんじなのかな?

 お試しで、NXT.NETを使って動かしてみたところ。NXT.NETでプログラムすること自体は、特に問題もなく、使いやすいです。


 お試しに使ったコードはこちらに置きます。

 自分はまだMindstorms にわかユーザなので、NXTをちゃんと使えていないわけですが、どうも、一癖ある感じです。世の中には、普通のモータ+LEGOとかNXTの代わりにArduinoとかでNXTのサーボを動かしている人もいるみたいだけど、もしかすると、自分もそっちの路線に走ってしまうかも・・・。



2013年6月23日日曜日

LEGO 空気圧パーツ

 今回はLEGOの空気圧パーツを試してみました。ポンプタンクスイッチシリンダ等のパーツが有り、ポンプで圧縮し(てタンクにため)た空気の圧力を使って駆動を行う仕組みになっています。


 左側がモータとポンプで構成されたコンプレッサで、右側が親指部分の駆動をシリンダで行うハンドです。手の甲当たりにあるスイッチ上のものが空気圧パーツのスイッチで、コンプレッサからの空気をシリンダの前後のそれぞれの方向へ切り替えることで、シリンダを前後に動かせるようになっています。



 スイッチから出たチューブがシリンダの前後方向にそれぞれ接続されています。エアーのスイッチを切り替えると、片方からエアーが送られ、反対側はフリー(空気が抜ける)状態になります。反対向きにスイッチを切り替えるとその状態が反対になります。スイッチを真ん中にしておくとシリンダー内の空気が保持されて固定状態になります。


 動かしてみたところ。


 モータでの駆動に比べると、エアーの駆動はやわらかさというか、ハンドで把持した場合も空気のバネによるクッション性があるので、こういう、ハンドとか動物系の動きにはいいのかも?
 ただ、残念なのが、エアーのスイッチが手動のレバーなこと。NTXから操作できるような電磁弁式のものとかないのかな?

2013年6月22日土曜日

レゴ スター・ウォーズ ミレニアム・ファルコン号 7965

 今回は「銀河系最速のガラクタ」、ミレニアム・ファルコン号です。MindstormsTECHNICシリーズは機構が面白かったり、色々組み替えたりして遊ぼうと思い入手しましたが、これに関しては、組み上げたら飾っておこうと思って入手しました。


 ミニフィグもダースベイダー、ハン・ソロ、レイア姫、オビ=ワン、ルーク、チューバッカと6種類入っていてお得な感じ?

 まずは、底面部の骨組みから開始です。


 底面、フロアの組立。じつは、プレートを幅の違うものと間違えて、あとで、組み直しています。


 内装品の配置。結構、細かいです。例の3Dチェス盤もあります。密輸品を隠すためのハッチもあります。


 操作パネルもちゃんとシールで再現されています。


 ハン・ソロとチューイがチェスをやるところ。


 チューバッカを座らせてみました。


ハン・ソロとチューイは3Dチェスのところに、ベッドの前には、ヘルメットを被ってフォースの訓練をする ルークとオビ=ワン。


 外壁を組み付けたところ。


 ベイダーのフィグもあったので、オビ=ワンがフォースと一体化するところ。


 内装を追加していきます。


 天面も取り付け始め。


 天面の台形になった部分は開閉することができて、内装を見ることができます。


 蓋(天面)を付け終えたところ。


 ファルコン号の特徴的な「くわがた」部分を取り付け。


 コクピットも付けて、完成でーす。


 コクピットには、ハン・ソロとレイアを座らせてみました。