コントローラー


更新 Ver. 0.27 2002.02.22
更新 Ver. 0.26 2002.01.11
更新 Ver. 0.25 2001.09.21
更新 Ver. 0.24 2001.06.26

作成 Ver. 0.00 2001.02.27



 Java初心者なので、エラー処理など至らないが、サンプルソースコードのようなレベルで、ERS-210に無線LANカードを搭載し、AIBOマスタースタジオのメモリースティック ERF-PC02または、プログラミングメモリースティックにシステムファイル類をコピーしたものの構成で、接続、コマンド発行、切断の一連の操作を行える。

Javaコード 備考
サンプルコード Ver. 0.27 R-CODE Ver1.2のシステム変数対応
サンプルコード Ver. 0.26 口の動きを修正、220対応
サンプルコード Ver. 0.25 距離センサー表現の追加
サンプルコード Ver. 0.24 頭の傾げと口の動きを追加
サンプルコード Ver.0.00


ファイルの取り扱いについて
 本サンプルコードは Java 2 JDK1.3 を用いて作成し動作確認をしている。また、クラスファイルはアプリケーションとして実行できるように作られており、アプレットとして動作しないので注意して欲しい。よって、本サンプルコードを実行するためには、 Java 2 JDK1.3相当の動作環境を設ける必要がある。


豆知識

Java アプレットについての制限事項

Java アプレットについては、基本的に以下の制限があります。
  • アプレットはローカルファイルの読み書きはできない
  • アプレットをダウンロードしたところとしか通信できない (接続しているところのポートも含む)
以上が何を意味しているかというと、ネットワーク環境でのセキュリティーを確保するための制限で、この制限を守るのは、ブラウザ側の仕事なのだそうだ。

注意
上記サンプルを使用して発生した、いかなるトラブルに対しも、当方は一切関知致しません。
各自の責任の範囲で実行して下さい。


 一様、まともなアプリになるように、これからも機能を整備していく予定であるが、初心者であるため更新の進度はあまり期待しないで欲しい。また、できるだけ素のJavaを体験するため、各種の統合開発環境をあえて使用していないので、デザインの質の悪さはお許しいただきたい。


コンパイル方法(MS-DOSプロンプトにて)
以下のコマンドで中間コードを生成する。


注)



実行方法の例(MS-DOSプロンプトにて)
R-Code.rの定義がない状態で、AIBOを起動しておき、以下のコマンドを実行する。

Ver. 簡単な説明と画面イメージ 補足
Ver. 0.25 実行後、テキストフィールド@へ、接続するAIBOのホストネームまたは、IPアドレスを入力し、"Connect"ボタンを押す。
接続以後、"Connect"ボタンは、"DisConnect"ボタンに変わり、AIBO側は、LEDの点滅が開始される。
機能しないところ以外を除き、該当する動作が指示できる。
切断は、"DisConnect"ボタンを押すことでおこなわれ、再び、"Connect"ボタンに変わり、AIBO側は、LEDの点滅をクリアする。
テキストフィールドAへR-Codeを直接キー入力することができる。実行には、"Enter"ボタンBを押す。また、リストCの項目を選択し、ダブルクリックすることで、テキストフィールドAへ選択内容を書き込むことができる。リストは雛型なので、引数の必要なものは、手動操作でキー入力する必要がある。(コマンドの最後が:で区切られているところに値を設定する必要がある。)
注) "Quit"ボタンを押した場合は、以後のコマンド処理を正しく受け付けなくなるようなので、AIBO側を再起動する必要がある。
実行画面サンプル(Ver. 0.25)
Monitor の Angle of Joint で表示

OptionメニューのManual Teachingを選択すると、以下のようにモーションのティーチング操作用に変わる。(簡易的なマニュアル)

REC Frameで1ステップ進めることが出来る。
保存は、FileメニューのMTN Saveを選択することで行われる。尚、ファイル名は固定で、本プログラムを起動したディレクトリーにsample_motion.mtnで保存される。
注) ティーチングの際は、ステーションモードや挟み込みモード等の脱力状態に設定する必要がある。(SET:Power:0が設定可能なバージョンを推奨)
コマンド発行による方法としては他に、PALY:MWCID:701が有効かもしれない。この方法では、脱力状態にはできるが、転倒の検出がされると元に戻ってしまうので、傾け方に注意して操作する必要があるだろう。(r_code氏のアドバイスならびに、AiboPet氏情報提供で、むし歯氏検証にて)
PALY:MWCID:811も良いかもしれない。
 簡単なラインでの動作アニメーション表示を組み込む。(何時かはソリッドモデル化) 当然、視点変更もできる。また、200フレームの蓄積機能を設け、Playbackができる。(1フレームおよそ0.1秒だが、リターン値は1〜2秒かかる様だ。)
 モーションのティーチング機能を Ver. 0.21で導入。
Monitor の Other System Value で表示

Scanning 3D Space の Front Scan で表示


Ver 0.24
 まだ、機能しない部分
  • メニューバー(Option, Monitor以外)


 歩行の右側に、頭を動かす操作を0.11で、ヘディングを0.13で、"Move"ボタンを0.14で導入。
 ターンの右側に、キックとタッチの操作を0.13で導入。
 各種変数の問い合わせを0.14で導入。
 関節角度情報表示パネルを0.15で導入。
 タッチセンサー情報表示および、設定変更を0.15で導入。
 "Auto Pilot"では、マスタースタジオでのサッカーが動作する。終了は"STOP"を押すこと。
 Logフィールドへ受信情報の出力を0.20で導入。よって、DOS窓への出力を停止する。
Ver. 0.00
実行後、テキストフィールドへ、接続するAIBOのホストネームまたは、IPアドレスを入力し、"Connect"ボタンを押す。
接続以後、前進、後進、右、左、斜め方向に移動し続ける操作と、止める操作、立つ、座る、伏せるの動作をボタンで指示できる。
実行画面サンプル(Ver. 0.00)

(Logフィールドはまだ飾り)




補足
 スレッドとして、入力ストリームを操作する処理を加えることで、コマンドに対するリターン情報を獲得できるので、各種センサーの情報や、システム変数等を問い合わせ、パネル上に表示させる機能が実現できる。これにより、よりAIBOを制御している感覚が味わえるであろう。



Java開発環境ならびに、実行環境について
技術評論社発行の JAVA PRESS Vol 14 の特集1 「Let's Bigin Java」が、役に立つだろう。
特別付録のCD-ROMに Java 2 SKD 1.3 が収納されている。

技術評論社発行の JAVA PRESS Vol 18 の 「JavaプログラミングのためのMS-DOS操作ガイド」も初心者向けには、役に立つだろう。



コントローラーについての開発四方山話


先ずは、はじめに

 そもそも、このようなアプリを開発しようとした意図は、単純明快、自分自身で思いのままに制御できるロボットにしてみたかったからであり、そのようなものが欲しかったからである。実は、予め打ち込んだ行動パターンのプログラムが正しく動くことを確認するだけの世界では、物足りなかったのである。無論、自律指向もひとつの遊びとしては、組み込むコードの対応能力の範囲を広げる腕試しで良いのだが、所詮は、予め組み込まれたものであり、例外に対処できない事が起こればそれでお終いになってしまい、また、作り直しになるのである。やはりインタラクティブでありたいのである。自分で実際に操作するからこそ面白いのであって、勝手に動いているのは、ある意味空しいのである。(それで良いときもあるが。)

 その点、今回のERS-210とマスタースタジオ、無線LANの構成は、この欲望を実現できる可能性を見出すことができそうであり、その方向へと私を掻き立てるきっかけを与えてくれた。無論、その前にJavaという言語がネットワークに対し、非常にスムーズにコード導入できるような仕組みを持っているという予備知識があったことも見逃せないが。(Javaで何か作ってみようと、日頃から模索していた。)

 当然、コントロールするからには、リアルに反応して欲しいし、リアルに情報をフィードバックしてもらいたい。どうせなら、画像情報も受信できるようにでき、表示可能になれば言うことなしである。無線LANの到達範囲や、障害物での切断がない範囲なら、遠隔操縦という醍醐味も味わえることになる。
 操縦していることを実感するには、実際に動いているAIBOを観測すればよい。しかし、その観測が不可能な状況下においても、制御したいのである。その為にも、コントロールするアプリ側に、AIBOから得られる情報をフィードバックして、表現する機能が必要である。AIBOから得られる情報を元に、仮想空間の再現(画像情報が得られれば、マッピングして操縦者に伝えることもできるだろ)、例えば、PSD(Position Sensing Device)の障害物までの距離情報と頭の角度等から作る仮想空間や、音の刺激による発生源空間位置認識、脚のセンサーの接し方の工夫により、体の状態の傾きや近くにあるものの構造解析等々、限られた情報源を元に、どれだけ状況を把握し操縦することができるかが、腕の試しどころなのである。
 ただ操縦するだけではなく、オートパイロット機能など、一時的に自動操縦する(自律コード転送)機能ももたせ、操縦者の負担を軽減する機能も含めたい。また、基本的に、PC上での処理になるため、より高度な頭脳として、PC側に様々な情報処理機能をもたせ、判断、指示できる機能を実現できるわけである。ようは、PCとの連携プレーによる、自律モード版である。

 AIBOには、キーボードやマウス、ディスプレイなどユーザーインターフェイスはないが、PCを間に入れることで人とのインターフェイスが整うのである。

 これ以外に、複数AIBOの同時制御による協調や、パソコン同士の通信を別途行っての連携操作等も実現できるだろう。正に、ゲーム感覚ではないか。

 しかしながら、このようなことが出来てくると、悪用する輩も出てくるわけで、何らかの被害をもたらす可能性も秘めているし、AIBO自体が危険にさらされる可能性もあるので、利用する側の徳の高さを信じたいところである。何事にも誤った操作や使用を行えば、不慮の事故も起こることがあるのである。注意されたし。

2001.03.01
hkora11


やっぱり、でてくるのね

 本家からも、いよいよリリースされる「AIBOナビゲーター」、ここで書いたことが現実になるわけだが、ここでの開発とは微妙に異なる製品仕様である為、開発自体は続行する予定である。とはいっても、暇なときにやっていることなので、なかなか進展がないのはご了承願いたい。
 因みに、「AIBOナビゲーター」は購入予定である。

2001.05.12
hkora11


些細なジレンマ

 残念ながら、このVer. 0.19でも、むし歯氏指摘の不具合は直っていない。とにかくコマンドを送りつける方式なので、それらが蓄積されてしまうのだが、それを回避する良い方法が現時点では思いつかない。(例外を多く組み込みすぎたのである。) また、既存の構成では、画像情報を取得できないようなので、現時点では断念するしかないようである。

2001.05.29
hkora11


機能は独立に

 実際にAIBO本体を操作してのティーチングによるモーション定義(*.mtn作成)については、このコントローラーで実現するより、独立したアプリケーションとして実現したほうがよさそうなので、新たに作業を追加する予定である。これで、少しはAIBOマスタースタジオでの作業性が向上し、使い勝手がよくなることであろう。但し、AIBOマスタースタジオのVer 1.0でのPMSの使用を推奨する。このバージョンでは、まだ、Powerの定義が有効で、Power=0での脱力状態が可能なのである。それ以外のバージョンでは、挟み込みモードに移行させる力技が必要となるだろう。

2001.05.30
hkora11


何時かは復活するのか

 少し話は脱線するが、AIBOマスタースタジオのVer. 1.0のPMSを使用して、本コントローラーを使用し、次のコマンドを入力して実行して欲しい。

AIBOは脱力の上、ほとんどの制御を停止させる。但し、各サーボのセンサーやタッチセンサー等は生きている。
 この状態で、脚や頭などを動かしてみてもらいたい。なんと、尻尾のLEDが発光するではないか。つまり、モーターがダイナモになっているのである。動かす速度を早くすると、より明るくなる。これからもわかるように、モーターはDCモーターを使用していることが伺える。
 この状態を利用し、モーション定義を行おうと考えているのである。無論、脱力状態なので、モーション定義は、各ユニット毎になる。
 元に戻すには、

を入力して実行するのだが、このコマンドを実行すると、いかなる状態にも関わらず、直前(SET:Power:0をする時) の状態に急速に戻ろうとするので、かなり危険といえる。

2001.05.31
hkora11


モーションティーチング

 簡易版ともいえるモーションのティーチングをVer. 0.21で導入してみた。まだ使い勝手の改良やバグ等が秘めているので、ご了承願いたい。
 それにしても、ここまでくると、ついでに11x系用のamaファイルも出力できるようにしてしまおうかと考えてしまうが、それはやはりやめておこう。この辺の作業は、マスタースタジオでの修正結果に基づいて、mtnファイルをamaファイルに置き換える、簡単な変換ツールを用意しようと考えている。(力のある方なら自力で作成できるだろう。)
 ところで、このようなものの需要がどれほどあるのかわからないが、とあるオーナーさんから強く開発の依頼を受けたので、先ずは第一段としてアップしてみた。
 ようやくオーナーサイドでの、本体での操作によるティーチングが可能になった。とりあえず、自由な振り付けをしてみて、楽しんでもらいたい。

2001.06.07
hkora11


MWCIDの選択

 既に、むし歯氏がソースをカスタマイズしてトライしているようなので、急遽 Ver. 0.23で導入を図ってみた。
 MWCIDについては、r_code氏の作成ToolであるDumpMWC.exeによって、全リストがダンプできるので、そちらを参考にすると良いだろう。
 直接、モーション番号を指定して動作を再現できるのは、非常に便利である。これで、あくまでもオリジナルのファイル構成のままで操作が可能ということになるのだ。機会があれば、リストに定義した以外のMWCIDも試してみたいものである。

 変な拘りだが、あくまでもオリジナルのファイル構成で出来ることが、私の挑戦なのである。

 それにしても、むし歯氏はチャレンジャーである。ソースを公開している意義があるというものである。

2001.06.23
hkora11


頭の傾げと口の開閉の再現導入

 ようやくVer. 0.24で、頭の傾げと口の開閉を再現できるようになったのだが、どうも数学は苦手で、三角関数と行列の嵐になるモーションの再現は、私にとって、少々、きつ過ぎる作業になってしまった。十数年、三角関数と行列にはお目にかかることがなかった私には、もう少し、勉強しておけば良かったのかなと、ふと思い込んでしまうのである。
 そういうことで、まだまだバグがありそうなので、ご了承願いたい。出来ることなら、より頭の切れる方に、ご指摘を受けたいものである。
 さて、一向に手をつけていない残りの機能(周囲の状況把握)については、そのほとんどが、三角関数と行列のお世話にならざるおえないので、どうしたらよいものか。ここらで、開発を諦めて、別のステージに乗り換えようかな。どの道、私の趣味の世界なのだから。(個人的には、十分な機能を盛り込んだつもりである。) それに、そろそろ夏季の連休の予定の海外ツーリングへの準備も始めなきゃならないし、再び、実家の引越しの手伝いに行かなきゃならないし、なにより、本業の方も、割り込みで訳のわからない画像処理と圧縮処理を手がけなきゃならないしで、AIBOどころではないのである。

2001.06.26
hkora11


開発作業再開!?

 巷では、9/12よりERS-310シリーズの受け付け開始となり、賑っているのかと思えば、米国の同時多発テロに影響され、少々自粛モードのように感じる。とりあえず、購入画面の動作が著しく遅かったので、購入者が沢山いるのであろう。といっても、私は別のもの(ポータブルチャージャー)を購入しようとしたのだが。
 ところで、海外ツーリングが北海道に変わってしまったのが心残りなのだが、割り込みの仕事もとうに手離れしたので、久々に作業を再開しようと思う。(本当だったら、夏休み明けから2ヶ月ほど、営業応援の話もあったのだ。)
 やはり、機能をメニューに割り振っておいて作成しないのはなんなので、周囲の状況把握をやってみようと思うのである。
 但し、三次元的なものではなく、二次元の世界で距離に応じて反応するものを考えている。まだイメージの中だけなのだが、視覚の一端になればよいと思うのである。

2001.09.13
hkora11


軽く肩鳴らし

 とはいっても、テスト的にフレームを追加してみた。距離に応じて、そのセンサーの反応を点滅のタイミングと作画サイズと色で表現しようとしたのだが、いまいちである。これに、フィールドスキャンとして、首の角度に応じた位置での距離の分布を追加しようと思うのである。
 まだまだ、調子が出ないので、何時導入できるか定かではないので、あしからず。

2001.09.21
hkora11





"AIBO"および"メモリースティック"、"R-Code"、"OPEN-R"は、もちろん、ソニー(株)の商標です。
このページはソニー(株)と関係無く、hkora11が勝手に作ったものです。