2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

カテゴリー

ブログパーツ

無料ブログはココログ

« 2010年7月 | トップページ | 2010年9月 »

2010年8月

2010年8月25日 (水)

もうすこし広いところでテストドライブ

リモートブレインの夏休み:iPhoneロボット

試験場がちょっと狭いので、マンションのロビーを借りて、もう少しスピードを出すテストをしました。ソファーセットやテーブルが置いてあるサンルームのような場所です。床は人造大理石です。

Dscn0870  Dscn0873

5mくらいの直線部が確保できるので、スピードも上がるはずですが… 微速から低速に上がるとソナーが反応してアボートしてしまいます。

振動がソナーの超音波マイクに伝わり、誤動作するようです。

以前(もしかすると学生時代かもしれませんが)ロジックICとトランジスタでソナーを作った時も、基板をコンコンとたたくと表示が乱れたのを覚えています。超音波マイクは40KHzくらいに共振するようになっていますが、たたく衝撃の振動成分には、かなり高い周波数がふくまれるので、誤動作を誘い易いようです。

iRoverのようなキャタピラ車は、キャタピラの爪を地面に打ち付けながら走行するので、大理石のような固い路面では、衝撃が発生し易いのかも知れません。

最新型のソナーなので大丈夫かなと思っていたのですが、やはり基本は一緒でした。ただ、微速移動中やサーボでアタマを振りながらのソナースキャンなどでは、ノイズの混入は見られません。やはり安定性は格段に進歩しているように思います。

現在は白いナイロンスタッドでソナー基板を止めていますが、これをラバーのスタッドに変更してみることにします。

Dscn0876

2010年8月22日 (日)

テストドライブ

リモートブレインの夏休み:iPhoneロボット

僕は都会の夏が好きです。

アスファルトにつきさる
きっぱりとした陽光
君に焦がれるように僕は地下鉄の階段を昇る

両手を広げて光の中に立てば、
光子が
ニュートリノが
何十億年という時間が
僕の体をまっすぐに通り抜けていく
宇宙の神秘を歌いながら

そして
ためらいがちに駅ビルの角を回ってくる
しめった風のひとかけらには
街路樹の
駅前にだれかが植えたひょろひょろのひまわりの
そして木造アパートの出窓の一鉢のガーベラの
ちいさな命のつぶやきが
 「きょうも生きている。あしたはもっと生きたい」

‥‥‥

なんて具合に現代詩の一節がひねり出せるくらいですが・・・今年はちょっと暑すぎます。 iRoverとパソコンを近所の公園に持ち込んでテストを、と思っているのですが、なかなか思い切れません。

とりあえず、家の中で基本テストを行うことにしました。
パソコンでツィッターとパノラマ画像のウィンドウを開いたところがこれです。

Photo

下のツィッターにiRoverのアカウントへのリプライとして命令をツィートします。

現在実行できる命令は、
 前進
 右回転
 左回転
 トリップ
 写真
だけです。
iRoverは、これらのキーワードが入った平文のツィートを命令として認識します。

距離や旋回のパラメータは、ツィート中に半角で指示します。角度は度、距離はセンチ、メートルいずれでも受け入れます。

トリップ命令は、長距離の移動に対応した命令で、ソナーで周囲の状況を確認しながら移動します。近くに障害物がなければ速度を上げ、前方1メートル以内に障害物が近づいたら、そこで停止します。

移動命令を実行したら、ロボットボディはお辞儀をするようにiPhoneを下に方向けます。iPhoneアプリはこれを検出することで命令の完了を感知し、自動的にパノラマ写真を撮影します。

2010年8月19日 (木)

iRoverの視野を広げる

リモートブレインの夏休み:iPhoneロボット

ネットタンサーをテレオペレーションで操縦していると、カメラの視野が意外と狭いことに気がつきます。

人間の視野は、眼球運動の効果も考慮に入れると180度近くありますが、カメラだとせいぜい60度あるかないかです。(確かに、ハイビジョン以前のテレビドラマって、結構役者さん同士がくっついて演技してましたねえ。)

これでは、現在ロボットが置かれている状況を、視覚的に判断するには不十分です。すぐ隣に抜け道があっても、画像を見ただけではわかりません。

そこで、iRoverではカメラをパンすることで、人間の視野に近い写真を自動的に撮影することにしました。
それがこのパノラマ写真です。作業しているワンルームをほぼ一望することができます。(元イメージは1200X300です。クリックしてブラウザを広げると原寸まで拡大できます)

Panorama1

本来、パノラマ写真は、銀塩写真時代のスリットカメラのように、視野の中央部の写真をいくつも継ぎ合わせることで、自然な超広角画像を実現しています。

この写真は、たった3枚の写真をはぎ合わせただけなので、パノラマ写真としての品質は良くありません。しかし、撮影が簡単で、ロボットの周囲の状況を把握するには、十分ではないかなと思います。
写真の下側には、方位角のゲージを焼き込んで、進行方向の指示をし易くしています。

ただし、iPhoneのカメラAPIの立ち上がり時間やなんやらの関係で、撮影に30秒近くかかるのが玉にきずです。もっとも、ツィッターやHP経由で操作する分には、それほど遅いとも感じませんが。

2010年8月14日 (土)

iRoverの光カプラ

リモートブレインの夏休み:iPhoneロボット

iPhoneからロボットボディへデータを転送するには、ここでテストしているように、画面の点滅を使います。光カプラの正式版はこのようになっています。

Dscn0820  Dscn0823

Dscn0826

プラ板で製作し、つや消し黒で塗装しました。カプラをiPhoneの画面にゴムバンドで固定するためのゴム掛けも付けてあります。模型飛行機の主翼台みたいですね。どうしても僕の作るものは、昔の模型から脱却できないようです。

1ビットずつのシリアル転送なのに、センサは写真のように左右に二つあり、それぞれCoronのADで値を読んでいます。左右のドットが「黒・白」なら0、「白、黒」なら1という具合に、左右のセンサの差分でデータビットを判別しています。

これは強烈な直射日光の下でも、感度調整が必要ないようにするための工夫です。

以前作ったiClimberではセンサの絶対値で1,0を判別するようにしていました。そのため、室内と屋外とではカプラの感度調整が必要でした。屋外ではiPhon画面のガラスなどを通して、日光が回り込んでしまうためです。

屋外に持ち出すたびに、調整棒で感度調整するというのは、あまりスマートな感じはしませんね。

そういう訳で、センサ絶対値の変動の影響を受けにくいよう、左右のセンサの差分をデータビットとすることにしました。
実際、室内でも真夏の直射日光下でも、再調整なしで画面からのデータを読み取ってくれています。

なお、iRoverでは1回のデータ転送を12bitにしています。これだと、16種類のコマンドと、1バイトのパラメータをいっぺんに送ることが出来ます。

2010年8月 5日 (木)

iPhoneのロボットアプリをOAuthに対応させる

リモートブレインの夏休み:iPhoneロボット

今までのiPhoneアプリのツィッターインターフェイスは認証が出来ないので、statuses/user_timeline という認証なしで使えるAPIで、特定のアカウントのツィートを抜き出していましたが、これではロボットがツィートできないという問題を抱えていました。

つまり、命令は聞くが返事はしないという、つきあいにくいタクシーの運転手みたいな感じで、いろいろと不便です。

それに、ひとりのユーザーの命令しか聞けないというのも問題です。テストならよいですが、せっかくソーシャルサービスであるツィッターを使っているのだから、最終的には、多くの人の意見を聞いて次の行動を決定するロボットにしたいと思っています。
大げさにいえば、多くのユーザーのツィートを集合知としてとらえる実験ですね。

と、いう訳で、懸案のOAuth認証で、まっとうなツィッターAPIに挑戦することにしました。

ところでOAuthってなんて読むんでしょう。「オース」でいいのでしょうか? なんか昭和30年代のナイスガイに挨拶されてるみたいですが。「オーッス!」って。現代では応援団くらいしか使っていないのでは? いや、応援団も使ってない完全な死語の可能性も。
30年ほど前の1970年代末には、金子節子先生の傑作少女マンガ「オッス!美里ちゃん」がありましたね。僕も読んでました。あの頃は現役なのかな。でも当時大学生の僕は使わなかったですねえ。

ああ、脱線しました。

ともあれ、オース認証の現実的な実装はこちらのサイトがわかりやすかったです。
オース認証で必要なのは次の4つの暗号です。

CONSUMER-KEYとCONSUMER-SECRET
ACCESS_TOKENとACCESS_TOKEN_SECRET

これをちゃんと取得しようとすると、プログラムもユーザーの操作も複雑になります。

ただし、自作のソフトで使うだけなら、次のようにして必要な暗号を集め、ソースコードに埋め込んでアプリをビルドすれば、先に紹介したサイトのような簡単なクライアントアプリで問題なくツィッターAPIを使えます。

まず、自分のツィッターアカウントが必要です。これでツィッターのHPにログインしておきます。

ツィッターホームの一番下のメニューから「API」をクリック

移動した英語の画面の上のメニューから「Your Apps」をクリック

移動した日本語まじりの画面から「新しいアプリケーションを登録する」をクリック

ここでアプリケーション名を「適当に(英文がいいと思います。簡単な名前は他とかぶる場合があります。)」つけ必要事項を入れて、「クライアント」「Read & Write」で登録(この辺わからなければ、詳しい説明のサイトがあるでしょうから、検索してください)

登録できたら表示された画面にCONSUMER-KEYとCONSUMER-SECRETがあります。

その画面右の「My Access Token」をクリックするとACCESS_TOKENとACCESS_TOKEN_SECRETが表示されます。

以上の情報を、前述のサイトのツイッターに投稿するコードに組み込んで呼び出せば、自分のツィッターに投稿できます。

もちろん、認証が必要な他のAPIも同じように実装できますので、まあなんとかそれらしいことが出来るめどが立ちました。

« 2010年7月 | トップページ | 2010年9月 »