スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


にほんブログ村 その他趣味ブログ LEGO・ブロックへ

Unimog ウニモグ (8110) x NXT (8547) - プログラミング編

こんばんは、matkです。

写真を落ち着いて撮る時間とスペースがないので先にプログラミングの説明をしたいと思います。

今回はMicrosoft Robotics Developer Studio(以下、MRDSと略します)というソフトウェアの一部である、VPL(Visual Programming Language)というNXTソフトウェア(NXT-G)に相当する機能を用いてプログラミングしました。今回使用したバージョンはRDS 2008R3ですが、RDS 4betaが最近出ました。

公式のNXTソフトウェアやRobotCとの比較を先に述べますと、まずVPLはNXT本体にプログラムを置いて実行するタイプではなく、パソコンから通信しつつ実行するタイプであるという違いがあります。NXT本体のファームウェアはNXTソフトウェアと同じでOKです。また、LEGO社のセンサは全部OKですが、HiTechnic社とMindSensors社のセンサでは加速度センサとコンパスセンサしか対応していません。その代わり、webカメラ、Xboxのコントローラ、Joystickなどの普通のPCの周辺機器との相性のよさは抜群です。また、ルンバ(!)とか他のロボットにも対応しています。ただ、普通のjoystickではあまり沢山のボタンやスティックを読み込んでくれなくて、Xboxコントローラの方ができることは多いです。僕は以下のコントローラを購入して、PCに接続してXboxモードで動かしてします。

あとは、センサー界の期待の大型新人、Kinectに公式対応している点がいいところです。NXTと組み合わせて何を作ればよいか今のところバッチリしたものは思い浮かびませんが…(^-^;)

実行面では、RobotCではJoystick使うとたまに同期が崩れて、片方のモーターだけが早く回転するような現象にあいましたが、MRDSでは完璧です。実行の安定さとマルチタスクの性能の良さはさすがのMicrosoftであり、MRDS自体はあまり普及していないにもかかわらず、そのマルチタスクの根幹をなす部分(CCRとDSS)は他のロボット以外の用途に使われているようです。

さて、実際の今回のUnimogのプログラムですが、以下のようになりました。



基本的な作成の仕方はNXTソフトウェアと同じです。1つ1つのブロック(MRDSでは「サービス」と呼ばれます)をドラッグ&ドロップでつなげていくイメージです。しかし、英語onlyだとか、単にブロックをつなぐだけではなく、馴染みのない選択肢を選ばなくてはならないとか、初心者にかなりのハードルがあります。もったいないことです。

プログラムの内容を簡単に説明しますと、
・コントローラのA,BでmotorCを動かしてギアチェンジ
・コントローラのX,YでそれぞれmotorBを正転/逆転
・コントローラのL,RでそれぞれmotorAを正転/逆転
・コントローラの十字キーの左右でmotorA, motorBを同期させて正転/逆転
・コントローラのスティックで、ステアリング+走行(スティックの座標がそのままmotor powerになる)
です。最後のスティックもなかなか反応がよくて、斜めに倒すとちゃんとステアリングと走行が同時に行われます。うーむ、さすが!今後はコントローラでリモコンしたい時はすべてMRDSでプログラミングすると思います。

プログラマの視点から見たときのNXTソフトウェアより良い点は、関数定義ができることは同じですが、配列(リスト)が簡単に使えること、その結果繰り返し処理も簡単にできること、再帰関数なども定義できちゃうこと、オリジナルサービスが簡単にC#で作れることが挙げられます。ただ、IronPythonやIronRubyでサービスを作るのはドキュメントがなさ過ぎてかなりキツいです。あと、VPLを使わないで全部C#で作成することも可能ですが、これはかなり記述量が増えて、一気にお手軽感がなくなります。趣味ならnxt-pythonで十分じゃないかと諦めてしまいます。まあデータ解析スクリプトばっかり書いてるへたれプログラマの末路ですね。詳しくは以下の書籍をご覧ください。これらは日本語という点はよいですが、基本的にはMRDSのマニュアル・チュートリアルの丸写しのような部分も多いです。どちらも2章分ぐらいのページはたしかに有用ですが…。
スポンサーサイト


にほんブログ村 その他趣味ブログ LEGO・ブロックへ

コメントの投稿

非公開コメント

No title

ウニモグ改造お疲れ様です!
動画も拝見しましたが、動力を伝えるためにいろんな工夫をされていることが伝わってきました。回転の動きの方向を変えたりとか、力の大きさを変えたりとか結構大変なんですね。

この年末に向けてNXTをいじろうかな、と思いました。買ってからまだ開封してないですからねぇ・・・そろそろ開封しないと年またいじゃいそうです(汗)

Re: No title

力の方向や大きさを変えるのは最初はとても悩みましたが、最近は慣れてだいぶできるようになってきました。思い通りにいくとかなり楽しいですよ!
たしかに年末など、時間がまとまって取れるときは大箱やNXTの開け時ですねw
リンク
フリーエリア
プロフィール

tsukuba.lego

Author:tsukuba.lego
●主な登場人物
koba : 会長. RCX, WeDo, NXT1.0, NXT2.0を持つ.
matk : 副会長. 2010年夏にNXT2.0を購入, 20年来のレゴ熱復活.
●会員募集中です!小学生から歓迎. 近日月1ぐらいで集まる予定.
mail:tsukuba.lego@gmail.com
YouTube (tsukubalego)
Twitter(tsukubalego)

カテゴリ
最新記事
最新コメント
月別アーカイブ
検索フォーム
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
最新トラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。