webサイトからロボットをプログラムする(続き)
ロボット作ろう:新リモートブレイン
前回の続きです。
まず、今回のロボットシステムに名前をつけました。KameRoです。カメロ、カメ+ロボットですね。
今回の不細工なロボットが、グレイ・ウォルターの作った原始的なカメロボット、Machina Speculatrix(考えるキカイと言う意味の「似非学名」)の中身に良く似ているからです。この写真はウォルターさんがカメロボットElsieを作っているところです。(撮影用のヤラセのようですが) 今回のロボットに似てるでしょう?
以前、岩波から出ていたウォルターの著書「生きている脳」には比較的詳しい解説がありましたが、とっくに絶版になっています。以前は日本語で解説したHPもあったのですが今はないようです。英文ならここがベストでしょう。実に丹念に資料を集めてあります。youtubeには動画があります。
実は1975年くらいにこのカメのレプリカを作ったことがありまして… もちろんトランジスタを使ってですが。詳しいハナシはのちほど「管理人のページ」で。
ともかくめでたく名前がついたところで、システムの解説です。
システムの主な構成要素は、左から、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でもプログラムの開発が出来てしまいます。