2014年5月9日金曜日

メカナムホイール+BrickPi でLEGO全方向移動ロボット

 今回のガラクタは、LEGO用のメカナムホイールです。VistonさんのRobot Shopで入手しました。外観としてはこんな感じ



のものになります。以前にオムニホイールを3つ使ったLEGOの全方向移動ロボットを試してみたことがありますが、オムニホイールは通常のタイヤの回転軸と垂直に小さな樽状のコロのようなタイヤが付いていて、通常のタイヤの回転とは関係なく回転軸と垂直に移動できるようになっていて、以前に作ったLEGOロボットではオムニホイール3つをロボットの中心から円周上に120度ずつの位置に配置して、三輪の回転比で平行移動や真地回転を行えるものでした。メカナムホイールはオムニホイールが車輪と垂直にコロが付いているのに対して、車輪に対して斜め(45度かな?)にコロが取り付けられており、斜めの方向(右斜め、左斜め)で二種類の方向があり、それぞれ二輪ずつ計四輪で全方向移動を実現します。それぞれ、単体のメカナムホイールは車輪軸で回転すると斜めに頃が付いているので、斜め方向に車両を移動させようとします。四輪の回転方向と比率の合力でロボットの移動方向が決まります。メカナムホイールに関する詳細は、こちらとかこちらを参考にしました。

 LEGOで組んだメカナムホイールロボットの外観はこんな感じです。




 以前にオムニホイールでロボットを組んだときは、剛性が低いというか、なんか全体的にぽよんぽよんだったので、今回はその辺も少し気にして枠組みを構成しました。


 博士が乗っても大丈夫!


 前回のオムニホイール版ではコントローラは NXT Brick でしたが、今回は BrickPi を使ってみました。BrickPi なので、PS3 のBluetoothゲームコントローラを接続してコントロールするのがいつものパターンなんですが、少し趣向を変えて、スマホ等のブラウザからのコントロールを試してみました。以前に Interface 誌の2013年9月号で見て、試してみたいと思っていたので、当該号を引っ張りだして(といっても、CD-ROM版を先日買ったので、CD-ROMを取り出してきて・・・ですが)、よくわからないながらも、なんとか、Raspberry Pi (BrickPi)側でnode.jsでWebサーバを動かして、mobile-jqueryのスライダコントロールを使った簡単な制御画面(Webページ)を作って、PCやスマホのブラウザから制御画面を表示して、スライダを操作することでメカナムホイールロボットを動かすところまではなんとか到達。ちなみにWebCamの画像はmjpeg-streamerというアプリケーションでWebページに表示しています。


 ソースの一部はこちらにおいてあります。MotorDriveNode.js が node.js 用のサーバサイドのスクリプト、MotorDrive.htm がコンテンツです。jquery, mobile-jqueryが必要なのと、コード内のIPアドレスは適宜変更が必要です。実際にモータを動かしているのは、MotorDriveNode.js 内でspawnで呼ばれている DriveMecanum.c の実行形式です。Web のUIが変更(操作)されるとその値を送信して、最長3秒間その値で稼働します。3秒前に次の変更があると次の変更の値で動作します。