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      

カテゴリー

ブログパーツ

無料ブログはココログ

« 2011年4月 | トップページ | 2011年6月 »

2011年5月

2011年5月31日 (火)

webサイトからロボットをプログラムする(続き)

ロボット作ろう:新リモートブレイン

前回の続きです。

まず、今回のロボットシステムに名前をつけました。KameRoです。カメロ、カメ+ロボットですね。
今回の不細工なロボットが、グレイ・ウォルターの作った原始的なカメロボット、Machina Speculatrix(考えるキカイと言う意味の「似非学名」)の中身に良く似ているからです。この写真はウォルターさんがカメロボットElsieを作っているところです。(撮影用のヤラセのようですが) 今回のロボットに似てるでしょう?

Elsie150

以前、岩波から出ていたウォルターの著書「生きている脳」には比較的詳しい解説がありましたが、とっくに絶版になっています。以前は日本語で解説したHPもあったのですが今はないようです。英文ならここがベストでしょう。実に丹念に資料を集めてあります。youtubeには動画があります。
実は1975年くらいにこのカメのレプリカを作ったことがありまして… もちろんトランジスタを使ってですが。詳しいハナシはのちほど「管理人のページ」で。

ともかくめでたく名前がついたところで、システムの解説です。

Kamero

システムの主な構成要素は、左から、Tiny-BASICを搭載したプログラマブル移動ロボットKameRo、ロボットとインターネットとのブリッジとして機能するスマートブリッジを走らせたパソコン、レンタルサーバに構成されたWebページ群、これにアクセスしてプログラム作成や実行をするためのブラウザ端末です。なお、おおざっぱな概念はこの投稿にあります。

システムには二つの基本機能があります。一つはwebページからBASICプログラムをダウンロードし実行する機能、二つ目はロボットからのメッセージや画像をwebページに反映させる機能です。

ダウンロードと実行は、次のように行われます。
webページのフォームにBASICプログラムを書き込み、Sendボタンをクリックすると、サーバ上のdata.txtにプログラムが、command.txtに「ダウンロードコマンド」が書き込まれます。このコマンドをローカルのパソコンに走らせたスマートブリッジアプリで定期的に読み込み、コマンドに対応したアクションを起こします。
ダウンロードコマンドなら、サーバのdata.txtを読み込み、ロボットのHANA-BASICインタプリタに送り込みます。また、Runボタンで実行コマンドが書き込まれたら、ロボットに対して"RUN"を送信します。

もう一つの機能は、ロボットからサーバへのメッセージやデータの送信です。
まず、ダウンロードの結果やエラーメッセージをMsg.txtとしてサーバにアップします。これをwebページに表示することで、送ったプログラムの状態や簡単なデバッグが可能になります。
さらにBASICプログラムの実行中は、print文を使いロボットからシリアルブリッジにコマンドを送ることで、様々なデータのサーバへの送信を実現しています。
例えば、print "$JPG"とやってコマンド$JPGをスマートブリッジへ送信すると、スマートブリッジは以降のデータをjpegファイルとして受け取り、サーバにアップします。Vision.htmlにアクセスすることでこれを自動更新付きで見ることが出来ます。
また、$MSGコマンドは以降の文字列(改行まで)をMsg.txtとしてサーバにアップします。これはセンサでの測定結果などをwebページで確認するために使用します。

というわけで、webサイトから遠隔地に居る探査ロボットKameRoをプログラムし、探査結果を確認することが曲がりなりにも実現できました。すごーくやり難いですが、下の写真のようにiPhoneでもプログラムの開発が出来てしまいます。

Dscn1693

2011年5月30日 (月)

Webサイトからロボットをプログラムする

ロボット作ろう:新リモートブレイン

ようやくのことで、Webサイトから、リモートブレインロボットにプログラムを送り込む実験に成功しました。結構時間がかかってしまいました。

時間がかかったのは、あまり作業の時間が取れなかったことと、なれないネットがらみのプログラムのせいではないかと思います。なかなか手こずりました。

試作したサイトはこんな感じです。

Webprog

プログラムを入力するウィンドウ、ロボットからのメッセージを表示するウィンドウ、画像を表示するウィンドウの三点セットです。一つにまとめることも出来るでしょうが、とにかく機能確認ということで、こんな感じです。

とにかく、どういうスタイルで作ればよいかもわからす、しかもわからないことをちょっと検索すると、山のように、スタイルの異なるプログラム例が現れるというのは… 僕のような初心者には、カオスとしか言いようがありません。

ともあれ、
■サーバー側の処理はphp
■ブラウザ側での処理はjavascript
と言う方針で、ナントカ作成した代物です。

一番手こずったのは、phpでテキストファイルを吐き出すと、"が¥"になってしまうという、エスケーブシーケンスの問題です。Xamppでやってると問題ないのに、ターゲットのサーバにあげるとエスケープされるようでした。

「print "SAMPLE"」などと、BASICプログラムではよく使う記号なので、そのままHANA-BASICに送り込むと、当然エラーになってしまいます。ロボットに送信する時になんとかならないかとか、BASICで対応できないかとか、「回り道」での対策を考えたりしたのもマイナスポイントでしたねえ。電気のノイズと同じで、元から絶たなきゃダメ、つまり、そういうテキストを吐き出さないようにするのがスジ、これを押し通すべきでした。おかげでだいぶ時間を無駄にしました。

結局、マジッククォートとか言う機能をサーバのphp設定画面でOFFにすることで解決しました。この機能は最新のphpではOFFになっているが、ちょっと前まではONがデフォルトだったそうです。最近インストールしたXamppの設定ではOFFでした。もちろん、エスケーブを無効にする関数もあるのですが、使い方が悪かったのか、どうもうまく行きませんでした。

使い勝手はともかく、これでネットからプログラムを送り込み実行する環境は出来上がりました。

次回は、この辺をもう少し解説します。

2011年5月 8日 (日)

新リモートブレインの試作機仕様の確認

新リモートブレイン:ロボット作ろう

以前投稿したコンテンポラリーなリモートブレインのコンセプトに対して、試作機の性能や第一段階の目標が、なんとかなっているのかどうかを確認しておきます。

コンセプトは

1・「人工知能」の部分はネット上にもつ
2・行動制御の部分はロボット上に持ち、これはネットからプログラム可能とする
3・ロボットをインターネットに接続する「ブリッジ」はなるべくシンプルに

と、いうことになります。

1については、第一段階の目標にはそもそもはいってません。「人間がネットにアクセスしてロボットをプログラムする」ことが、当面の目標です。

2はとりあえず実装しました。プログラム言語が自作のHANA-BASICというTiny-BASICなのは、作った僕もどうかなと思いますが、テストした結果は意外にも良好です。デモ動画にPSDで周囲をスキャンして壁沿いに進行方向を変えるというのがありますが、このような行動も比較的簡単に記述できます。ネット対応はまだですが、基本的にはロボタでやった手法が使えると思います。

3は現在作業中です。VC#で試作をしていますが、簡単な仕組みなのでネット接続つきのボードコンピュータにしようかな、と2ヶ月前くらいには思っていたのですが… 結局こういうものをこしらえて、WindowsXPでいくことにしました。

Dscn1671

XS35というIntel Atom D510(1.66GHz)搭載の安価なベアボーンに40GのインテルのSSDを載せ、手持ちのWindowsXPをインストールしました。RealVNCでリモート化したので、モニタやキーボードやマウスは必要ありません。インストール時だけ、他のパソコンから借りてくればOKです。さらに、このベアボーンは無線LANもついてますし、動作中まったく無音なので置き場所を選びません。下手にボードコンピュータで苦労するよりはよいのでは、という判断です。

猫のぞきカメラのPCソフト(改良版)はすでにコレの起動項目に入っています。外出する前に電源スイッチを入れるだけ、ただし、終了はリモートデスクトップからするしかありませんが。

2011年5月 6日 (金)

またまたXBeeの通信速度のハナシ

ロボット作ろう:花岡ちゃんのウィークエンド

前回、「ブロードキャストからユニキャストに変えたら、エンドデバイスからコーディネーターへの転送速度が速くなった」という投稿をしましたが、この原因がわかりました。

ユニキャストにすれば(理屈はわからないけど)早くなるのか?ということで猫のぞきカメラのXBeeの設定を変え、ユニキャストにしてみましたが、まったく変化なしです。つまり、エンドデバイスからコーディネータへの通信では、ブロードキャストであれユニキャストであれスピードは変わらないということです。

そこでいろいろと調べたところ、エンドデバイスのファームウェアのバージョンが、ロボットと猫のぞきカメラでは異なっていることがわかりました。

■ロボットに使ったもの Version 2870
■猫のぞきカメラのもの Version 2821

これはX-CTUでModem Configurationを読み込むと表示されます。半信半疑で猫のぞきカメラのXBeeのバージョンを2870に設定し書き直してみました。Always update firmwareにチェックを入れてWriteすればOKです。これをカメラにセットして試してみると・・・ 早くなりました。カメラとPICとの通信速度をロボットよりはやい115.2Kに設定してあるせいで、ロボより2秒早い9秒で転送できます。(このへんの説明はこちら

理屈がわからないのは変わりませんが、ともかく実用的には何とかなりそうです。

2011年5月 5日 (木)

新リモートブレインの当面の目標と作業を確認する

ロボット作ろう:新リモートブレイン

ひろい猫騒動も一段落したところで、当面の目標と作業を確認しておきます。

第一段階の目標を図のように設定します。

Basic

目標は「インターネット経由でプログラムを送り込み、作業をさせる」ことです。

ローカルのPCに走らせたスマートブリッジとWEBアプリケーションのAPIを利用して、ZigBee応用ロボットをWWWサーバに接続し、専用HPにアクセスすることでカメラ画像の閲覧・ロボットからのメッセージの確認・BASICプログラムの送信と実行を行います。

ロボットとZigBee部分は荒削りながら出来上がっているので、次はスマートブリッジの部分です。現在、その実験を次のようなソフトで行っています。(ひろい猫騒動でしばらく停滞していますが…)

Xbee

これは前の投稿にある、パソコンからプログラムをダウンロードしたり、送られてくる画像データを表示したりするソフトです。

ファイルダイアログを開いてBASICプログラムのソースコードを選び、DLボタンでロボットにダウンロードします。RUNボタンをクリックするとプログラムを実行、BASICプログラムからのメッセージ(PRINT命令でタイプアウトされる内容)は、その下のテキストボックスに表示されます。これを将来的にはサーバにアップロードすることになります。

表示されている画像はロボットカメラがとらえたものです。カメラは以前試作したこれとほぼおなじものです。猫がなぜかみょーんと背伸びをしていますが、胸の辺りに見える青白いスポットは、PSDからの赤外線の反射をカメラが捕らえたものです。

カメラの撮影のためのホストからの特別なコマンドはありません。撮影用のBASICプログラムをダウンロードして実行させます。プログラムはカメラシステムに撮影コマンドを送るとともに、ホストに対してjpegデータを受信するようメッセージを送ります。この方式だと、センサーが反応したら写真を撮るなどのインタラクティブな対応も可能です。

転送速度は以前の投稿で書いているように、確かに早くなっているようです。ストップウォッチで確認したところ、撮影プログラムを実行してから11秒で画像が表示されます。ホストとの通信速度を、本機より早い115.2K(本機は38,4K)に設定している猫のぞきカメラでは19秒ですから、やはりブロードキャストからユニキャストへの変更が大きいように思いますが・・・
なお、この転送時間のうち、3秒はカメラの起動時間ですから、PICを使ったカメラをXBeeにつなげるキカイの転送時間は約8秒ということになります。画像データサイズは12kバイトくらいなので、見かけの転送レートは15Kbpsくらいですね。

2011年5月 3日 (火)

新リモートブレインの運動テスト動画

ロボット作ろう:新リモートブレイン

試作したボディの動作テストの動画です。

ここのところ、捨て猫を拾ったりしたおかげで忙しく、アップが延び延びになっていました。
この動画には3つのトピックが収録されていますが、最後のものは、PSDを動的に使って周囲の障害物のデータを収集、BASICプログラムで進行方向を変更しています。

このロボットは市販の完成メカ部品を利用して作ってあるわけですが、以前の投稿にあるように、残念ながらそのほとんどは国内では買えません。海外のロボット部品の通販サイトで購入したものです。ターレットや走行部分で$100程だったと思います。

これは、ある意味残念なことです。なぜなら、アメリカやヨーロッパのアマチュアは、機械工作が得意でなくとも、これくらいの性能の移動ロボットを比較的低コストで作ることが出来るのですから。
日本の機械が不得手なアマチュアや研究者だと、せいぜいタミヤのギアボックスを使って、おおざっぱな制御の走行メカを作るのが関の山ですね。出来合いのロボットボディは大きくて高価ですし。
ロボットは、基本的なキカイがしっかりしていないと、モノとして成功するのは難しい、つまり、もしよいアイデアであっても、そんな理由で試作がうまく働かず、あきらめてしまうこともあるのではないでしょうか。

ロボットの実用分野で欧米に水を開けられる「根っこ」の部分が、この辺に垣間見えるような気もします。

« 2011年4月 | トップページ | 2011年6月 »