テレパシー機能実演:ぴっきー、のっきー地球温暖化問題を語り合う

テレパシー機能の実演として、ぴっきー、のっきーに地球温暖化問題をかたり合わせてみた。
global
通常の、相手の言葉を聞き、認識して指定された自分の言葉を語りALDialogの機能では、相手が終わった途端(あるいは途中)から、話し出すことはできずにモタモタする。テレパシー機能を使うと、リズムに関しては人間の会話に近づくことができる。
ただ、言葉がロボット訛りがあるのと、台本の若干の誤り、ロボットの警報音、15分近い長さ、など、まだ、完成ではありませんが、テレパシー機能とは何かを感じ取ってもらえるのではないかと思います。
課題はまだまだあります。

複数ロボットの動作記録

ロボットの動作を記録することができるようにしたことは既に書いた。が、複数のロボットの場合に、問題が生じる。1台のピノキオで、複数のロボットをコントロールすることを前提にしているので、ロボット名で動作をlocalStorageに1回分だけ記録することができるようにした。テレパシーのロボット探査機能を使って、その時動かしているロボットの名前をセットし、動作を記録する。そして、記録の実行は、そのとき繋いでいるロボットの記録を実行することにした。

動作のマクロ機能を追加

ピノキオ(スマホコントローラー)に、動作を記録して再現する機能を追加した。予定した行動をさせる機能としては、口頭でコマンドを与える機能も持っている。二本立てになった。これによって、複数のロボットを操りやすくなった。事前に動作を決めておいて、マクロの実行コマンドだけを与えれば、複数のロボットが一連の動作を、ほぼ同時に開始させることができる。

ピノキオ1台で複数のロボット制御

2台目のロボットが来たので、2台のロボットでテレパシー機能を使った対話など、いろいろやろうと思って大学に来たら、スマホを1台しか持ってこなかった。本当は、Nexus7も持ってきて、それぞれコントロールしようと思ったのだが・・・。
しかし、そもそも、ロボットの台数だけ携帯端末を用意するというのは確かに不合理だと気付いた。
1台で複数のロボットを切り替えながら制御できるのが良い。まず、複数のロボットのIPアドレスや名前などを情報をしてlocalStrageに溜め込んで、接続を切り替える機能をピノキオに加えることにした(公開は、次のバージョン)。
最初の接続の時は、ロボットのIDとパスワードを聞かれて面倒かもしれないが、その後は、IPが変わらない限り、接続の切り替えだけで済むはずである。
テレパシーモジュールの中に、1台のロボットで、ローカルネット上のすべてのロボットのIPアドレスとロボット名を取得するメソッドが作成済みなので、それを使えば情報把握だけは簡単にできる。
ロボットのことに専念できる、せっかくの土曜日の1日だが、これに使っちゃうしかないか。早めに出来上がれば良いが。

パソコン不要のコントローラー:ピノキオ

ピノキオのメリットは、Choregrapheだけではなく、そもそもパソコン不要だということだ。動作や対話の機能を全てスマホから行える。
ただし、対話用の長いトピックファイルを、スマホで書くのは確かに大変だ。そういう時は、パソコンで、iBotサイトで対話用のtopicファイルを作成して、ロボットに組み込み、ロボットからスマホにダウンロードすればあとはスマホで再編集も含めて、全て対応できる。

ロボットの目からの映像をスマホに映す

この間だいぶ苦労したが、一応、ロボットの目から見た映像をスマホに映すことができた。(今日は赤いワンピースを着て女の子でーす)

技術的には予想以上に手こずった。フレームレートが、安定して映すことができる程度が、1/1000、つまり1秒間に1枚程度であると言う問題がある。が、いずれ改善したい。(プレイストアに公開されている現在のバージョン0.1.3にはこれは組込まれていません。次期バージョンからです。) "ロボットの目からの映像をスマホに映す" の続きを読む

ピノキオをPlayストアで公開

検索しても出てこないと思いますので、携帯端末(andoroidスマホ、タブレット)で以下にアクセスしてください。無料です。
https://play.google.com/store/apps/details?id=jp.co.ibot.iBotMobile
バグがあると思いますが、皆様のご意見をうかがって、少しずつ改良していきたいと思います。
以下に簡単な使用説明を書いておきました。
http://ibot.co.jp/page.php?menu=pinocchio
今回のバージョンでは、ロボットのportを9559に固定しています。問題ないと思いますが。

ピノキオ android リリース版試作

先に、chromeのcordovaでリリース版を作成するときにエラーが出ると書いた。
-----------------
Execution failed for task ':CordovaLib:compileReleaseJava'.
> 1.7 は無効なソースバージョンです。
-----------------
javaのバージョンがあわないということは予想がつくが、いつも1.8で使っているのに・・・。と思ったら、ほとんど新しいjavaはnetbeans用なので、コマンドラインで使うときのpathが未だに、1.6を指していることに気付かなかった。JAVA_HOMEを変更したら、すんなりリリース版のコンパイルが成功しapkファイルができた。そして、
--------------------
adb install android-armv7-release.apk
---------------------
で、白ロムスマホreleaseversionに転送したら、うまく組込まれ起動できた。
可愛いアイコンがホーム画面に輝いていますね。
これで、androidの「プレイストア」にアップする準備は全て整ったけれど、まだまだ調整が必要です。でも、来週には、公開するかもしれません。
ただ「古くなるAPIを使っている」という警告が何度か出たが、これはたぶん、socket APIのことだろうと思うが、当面更新するつもりはない。

スマホのコントローラーページ

ピノキオのスマホバージョンを若干調整した。コントロールのページと、対話管理ページでサブメニューを開いた(背景がグレーレイヤーとなる)ところはこんな感じになる。他も、まあ、使用に差し障りはない。Xperiaの横ピクセルは、360pxだ。解像度は横780ピクセルくらいはあったはずだが。両者の調整はまた面倒なので、jqueryの$(window).width()でとっている。
robot-controlerdialog
スクリーンをポートレイト位置にしたときに、短い方の幅(横幅)が500pxよりも大きければ、コントローラーの画像は、 縦横520pxにして、小さければ、縦横360pxのものにする。コントローラーをはめ込む<canvas></canvas>要素のタッチ位置を微細にとらえて、どの指示がされたかを決定するのだが、それが3次元配列(2×4×8:縦横位置、四隅の位置、8つの方向)の超複雑なデータで計算するのだが、データを作り直すのは面倒なので、単純に割合のでデフレーター(普通のときは、1、小さいときは360.0/520.0の値)をかけて、やり過ごした。 "スマホのコントローラーページ" の続きを読む