(57)【要約】【課題】自律的に行動するロボットというコンセプトを尊重しつつ、緩やかな他律性を導入する。【解決手段】ロボット１００は、現実空間に関する環境情報を取得する現実入力系１７０と、妖精によって転送される行動命令を取得する仮想入力系１７６と、環境情報に基づいて自律的にロボットの第１モーションを決定し、かつ行動命令に従って他律的にロボットの第２モーションを決定する動作制御部１５０と、第１モーションおよび第２モーションを実行する駆動機構１２０と、を備える。【選択図】図１０
2020000279.tif 000002
【特許請求の範囲】
【請求項１】
現実空間に関する環境情報を取得する現実入力系と、
仮想空間に位置する仮想キャラクタによって転送される行動命令を取得する仮想入力系と、
環境情報に基づいて自律的にロボットの第１モーションを決定し、かつ行動命令に従って他律的にロボットの第２モーションを決定する動作制御部と、
第１モーションおよび第２モーションを実行する駆動機構と、を備えることを特徴とする自律行動型ロボット。
【請求項２】
前記仮想入力系は、仮想キャラクタの仮想空間における位置を示す通知を取得し、
前記動作制御部は、仮想キャラクタの仮想空間における位置に基づいて自律的にロボットの第３モーションを決定し、
前記駆動機構は、第３モーションを実行することを特徴とする請求項１記載の自律行動型ロボット。
【請求項３】
第３モーションは、仮想キャラクタの仮想空間における位置に対応する現実空間における位置へ向う移動であることを特徴とする請求項２記載の自律行動型ロボット。
【請求項４】
前記仮想入力系は、仮想キャラクタの動作を示す通知を取得し、
前記動作制御部は、仮想キャラクタの動作に基づいて自律的にロボットの第４モーションを決定し、
前記駆動機構は、第４モーションを実行することを特徴とする請求項１から３のいずれかに記載の自律行動型ロボット。
【請求項５】
第４モーションは、仮想キャラクタの動作を模倣する行動であることを特徴とする請求項４記載の自律行動型ロボット。
【請求項６】
前記現実入力系は、環境情報に基づく第１イベントを生成し、
前記仮想入力系は、行動命令に関する第２イベントを生成し、
前記動作制御部は、第１イベントと第２イベントを同じ系統として処理することによって、第１モーションおよび第２モーションを決定することを特徴とする請求項１から５のいずれかに記載の自律行動型ロボット。
【請求項７】
前記動作制御部は、仮想キャラクタに対する親密度に応じて、第２モーションを決定することを特徴とする請求項１から６のいずれか記載の自律行動型ロボット。
【請求項８】
第２モーションを実行した後の状況に応じて仮想キャラクタに対する親密度を調整する親密度管理部を、更に備えることを特徴とする請求項７記載の自律行動型ロボット。
【請求項９】
前記動作制御部は、ロボットの感情に従って、第２モーションを決定することを特徴とする請求項１から８のいずれか記載の自律行動型ロボット。
【請求項１０】
第２モーションを実行した後の状況に応じてロボットの感情を調整する感情管理部を、更に備えることを特徴とする請求項９記載の自律行動型ロボット。
【請求項１１】
自律行動型ロボットとユーザ端末と管理装置とを含むロボット制御システムであって、
前記自律行動型ロボットは、
現実空間に関する環境情報を入力する現実入力系と、
仮想キャラクタによって転送される行動命令を入力する仮想入力系と、
環境情報に基づいて自律的にロボットの第１モーションを決定し、かつ行動命令に従って他律的にロボットの第２モーションを決定する動作制御部と、
第１モーションおよび第２モーションを実行する駆動機構と、を備え、
前記ユーザ端末は、
仮想キャラクタにロボットへ転送させる行動命令を出力する命令出力部を備え、
前記管理装置は、
仮想空間における仮想キャラクタを制御する仮想キャラクタ処理部を備え、
前記仮想キャラクタ処理部は、前記ユーザ端末から出力された行動命令を前記自律行動型ロボットへ転送することを特徴とするロボット制御システム。
【請求項１２】
前記ユーザ端末は、
撮影画像を取得するカメラと、
仮想空間における仮想キャラクタの位置に応じて、仮想キャラクタを撮影画像に重ねた拡張現実画面を表示する表示処理部と、を更に備え、
ユーザが前記ユーザ端末の拡張現実画面に表示された仮想キャラクタを視認したタイミングで、ロボットにおいてデータ送信を開始するとともに、前記ユーザ端末においてデータを運ぶ姿の仮想キャラクタを拡張現実画面に表示することを特徴とする請求項１１記載のロボット制御システム。
【請求項１３】
撮影画像を取得するカメラと、
仮想空間における仮想キャラクタの位置に応じて、仮想キャラクタを撮影画像に重ねた拡張現実画面を表示する表示処理部と、
仮想キャラクタにロボットへ転送させる行動命令を出力する命令出力部と、
を備えることを特徴とするユーザ端末。
【請求項１４】
仮想空間における仮想キャラクタを制御する仮想キャラクタ処理部を備えた管理装置であって、
前記仮想キャラクタ処理部は、仮想キャラクタに自律行動型ロボットへ転送させる行動命令をユーザ端末から受け付けた場合に、当該行動命令を当該自律行動型ロボットへ転送することを特徴とする管理装置。
【請求項１５】
現実空間に関する環境情報を入力する機能と、
仮想キャラクタによって転送される行動命令を入力する機能と、
環境情報に基づいて自律的にロボットの第１モーションを決定し、かつ行動命令に従って他律的にロボットの第２モーションを決定する機能と、
第１モーションおよび第２モーションを駆動機構に実行させる機能と、をコンピュータに発揮させることを特徴とする自律行動型ロボットの行動制御プログラム。
【請求項１６】
仮想空間における仮想キャラクタの位置に応じて、カメラにより取得された撮影画像に仮想キャラクタを重ねた拡張現実画面を表示する機能と、
仮想キャラクタに自律行動型ロボットへ転送させる行動命令を出力する機能と、をコンピュータに発揮させることを特徴とするプログラム。
【請求項１７】
仮想空間における仮想キャラクタを制御する機能と、
仮想キャラクタに自律行動型ロボットへ転送させる行動命令をユーザ端末から受け付けた場合に、当該行動命令を当該自律行動型ロボットへ転送する機能と、をコンピュータに発揮させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自律的に行動を選択するロボット、に関する。
【背景技術】
【０００２】
人間は、癒やしを求めてペットを飼う。その一方、ペットの世話をする時間を十分に確保できない、ペットを飼える住環境にない、アレルギーがある、死別がつらい、といったさまざまな理由により、ペットをあきらめている人は多い。もし、ペットの役割が務まるロボットがあれば、ペットを飼えない人にもペットが与えてくれるような癒やしを与えられるかもしれない（特許文献１、２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−３２３２１９号公報
【特許文献２】国際公開第２０１７／１６９８２６号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
対人ロボットの技術分野では、ロボットに仮想的な人格を設定し、その人格がロボットに反映されたように振る舞わせることがある。このようにすれば、人間はロボットに感情を移入しやすくなり、共感が得られる。ロボットの人格は、たとえば自律的な処理を行うプログラムによって実現されている。
【０００５】
自律性を有するロボットは、原則として自らの判断に基づいて行動するが、人間がこのようなロボットを意図的に動かしたいと思うこともある。
【０００６】
しかし、人間がロボットを直接操作できてしまうと、本来自らの判断で行動していたはずのロボットの特性と相容れないことになる。
【０００７】
したがって、ロボットの自律性を担保しつつ、人間の意図に沿ってロボットが行動するようにコントロールすることが求められる。人間がロボットを操作する場合に、人間の欲求が直にロボットに向けられれば、自律行動型ロボットの世界観が崩されてしまう恐れがある。
【０００８】
本発明は上記課題認識に基づいて完成された発明であり、その主たる目的は、自律的に行動するロボットというコンセプトを尊重しつつ、緩やかな他律性を導入するための技術、を提供することにある。
【課題を解決するための手段】
【０００９】
本発明のある態様における自律行動型ロボットは、現実空間に関する環境情報を取得する現実入力系と、仮想キャラクタによって転送される行動命令を取得する仮想入力系と、環境情報に基づいて自律的にロボットの第１モーションを決定し、かつ行動命令に従って他律的にロボットの第２モーションを決定する動作制御部と、第１モーションおよび第２モーションを実行する駆動機構と、を備える。
【００１０】
本発明のある態様におけるロボット制御システムは、自律行動型ロボットとユーザ端末と管理装置とを含む。自律行動型ロボットは、現実空間に関する環境情報を入力する現実入力系と、仮想キャラクタによって転送される行動命令を入力する仮想入力系と、環境情報に基づいて自律的にロボットの第１モーションを決定し、かつ行動命令に従って他律的にロボットの第２モーションを決定する動作制御部と、第１モーションおよび第２モーションを実行する駆動機構と、を備える。ユーザ端末は、仮想キャラクタにロボットへ転送させる行動命令を出力する命令出力部を備える。管理装置は、仮想空間における仮想キャラクタを制御する仮想キャラクタ処理部を備え、仮想キャラクタ処理部は、ユーザ端末から出力された行動命令を自律行動型ロボットへ転送する。
【００１１】
本発明のある態様におけるユーザ端末は、撮影画像を取得するカメラと、仮想空間における仮想キャラクタの位置に応じて、仮想キャラクタを撮影画像に重ねた拡張現実画面を表示する表示処理部と、仮想キャラクタにロボットへ転送させる行動命令を出力する命令出力部と、を備える。
【００１２】
本発明のある態様における管理装置は、仮想空間における仮想キャラクタを制御する仮想キャラクタ処理部を備え、仮想キャラクタ処理部は、仮想キャラクタに自律行動型ロボットへ転送させる行動命令をユーザ端末から受け付けた場合に、当該行動命令を当該自律行動型ロボットへ転送する。
【発明の効果】
【００１３】
本発明によれば、自律的に行動するロボットというコンセプトを尊重しつつ、緩やかな他律性を導入することができる。
【図面の簡単な説明】
【００１４】
【図１】仮想空間を想定するロボットの概念を説明するための概念図である。
【図２】図２（ａ）は、ロボットの正面外観図である。図２（ｂ）は、ロボットの側面外観図である。
【図３】ロボットの構造を概略的に表す断面図である。
【図４】基本構成におけるロボットのハードウェア構成図である。
【図５】ロボットシステムの機能ブロック図である。
【図６】ロボットが妖精を追う様子を示す図である。
【図７】ロボットが妖精の踊りを模倣する様子を示す図である。
【図８】サーバ及びスマートフォンにおける妖精関連の機能ブロック図である。
【図９】本実施形態におけるロボットシステムの機能ブロック図である。
【図１０】現実入力系、仮想Ｉ／Ｆ系およびロボット制御系の詳細を示す図である。
【図１１】イベントテーブルの例を示す図である。
【図１２】仮想入力系の処理を示すフローチャートである。
【図１３】妖精が仮想空間に投入される処理過程を示すシーケンス図である。
【図１４】妖精データの一部を示す構造図である。
【図１５】妖精が移動する処理過程を示すシーケンス図である。
【図１６】動作制御処理を示すフローチャートである。
【図１７】妖精が踊る処理過程を示すシーケンス図である。
【図１８】図１６の動作制御処理の続きを示すフローチャートである。
【図１９】ロボット行動命令が転送される処理過程を示すシーケンス図である。
【図２０】図１８の動作制御処理の続きを示すフローチャートである。
【図２１】図２０の動作制御処理の続きを示すフローチャートである。
【図２２】スマートフォンにおけるデータ移動処理に関するフローチャートである。
【図２３】サーバにおけるデータ移動処理に関するシーケンス図である。
【図２４】ロボットにおけるデータ移動処理に関するシーケンス図である。
【図２５】図２４の続きを示すシーケンス図である。
【発明を実施するための形態】
【００１５】
自律的に行動するロボットを人間が操作しようとする状況を考える。たとえば、ロボットが自律的に行動する以外に、ユーザがロボットに働きかけてユーザの方に近づかせたいと思うことがあるかも知れない。同じく、ユーザの命令によってロボットに写真撮影を行わせたいことがあるかも知れない。また、ロボットと連動するアプリケーションの開発者は、アプリケーションからの命令によってロボットの行動を制御したいと考えるかも知れない。アプリケーションの例としては、たとえばロボットが撮影した写真をＳＮＳ（Social Networking Service）サーバに投稿する機能を有するものが考えられる。
【００１６】
しかし、自律行動型ロボットを他の装置と連携させる場合にも、ロボットのコンセプトである自律性を過度に阻害してはならない。そこで、発明者は、自律的に行動するロボットというコンセプトを尊重しつつ、柔軟な他律性を導入するための技術を提案する。
【００１７】
そのため、本実施形態では、ユーザとロボットを仲介する仮想キャラクタを導入する。この例における仮想キャラクタは、動物、昆虫、人、植物などの自然物や、ロボット、車、飛行機、家具などの人工物をモチーフとする視覚的に表現されたものである。仮想キャラクタには、外見的な特徴と、性格や特技などの内面的な特徴が設定され、それらの特徴に応じて仮想キャラクタとしての振る舞いが決まる。本実施形態では、自然物の精霊として伝説や物語で登場する妖精を仮想キャラクタとして用いる。一般的に、妖精は羽を持つ小さい人のような外観をしており、空中を舞い、可愛くて、良い存在として表現される。本実施形態の妖精も、ロボットよりも小さく、羽を有する人のような外観をしており、空中を自由に舞い、ロボットにとって大好きな存在として設定される。妖精は、ロボットに好かれており、かつ人間には従順であることを前提とする。
【００１８】
妖精は人間に対して従順なので、ユーザが妖精に指示すれば、妖精は指示された通りに動く。ロボットは妖精が好きなので、妖精が動けば、ロボットは妖精についていこうとする。ロボットは、自律的に行動するので常に妖精についていくとは限らないが、好きな妖精には高確率でついていく。このように、ユーザは妖精という仲介者を介して、ロボットを不完全ではあるが緩やかにコントロールできる。こうしたコントロールは、親密度の高い存在に近づくという本能的な行動をロボットに組み込み、ロボットが人間に対して抱いている親密度よりも、妖精に抱いている親密度を高く設定することによって実現される。これにより、ロボットの自律性とユーザの支配欲を、自律行動型ロボットの世界観を崩すこと無く両立させることができる。
【００１９】
具体的には、ロボットと人間が実在する現実空間とは別に、ロボットが認知する仮想的な空間を設定する。ロボットは現実空間に存在し、仮想空間も認識できる。妖精は仮想空間に存在し、現実空間も認識できる。仮想空間は、現実空間へ投影可能である。仮想空間における１つの位置は、現実空間における１つの位置に対応しており、相互に変換することができる。単純な例では、座標系の変換によって仮想空間と現実空間の対応付けが成立する。つまり、ロボットは、現実空間に仮想空間を重ねて分け隔たりなく認識することで、現実空間にあたかも妖精が存在するように振る舞うことができる。
【００２０】
図１は、仮想空間を想定するロボット１００の概念を説明するための概念図である。本実施形態では、仮想空間に仮想キャラクタがいるものと想定する。ロボット１００は、自ら計測したデータに基づくイベントを契機として行動する場合の他に、仮想キャラクタから得られる通知や命令などに基づくイベントを契機として行動することがある。上述したとおり、妖精は仮想キャラクタの例であるが、仮想キャラクタは妖精以外のキャラクタであってもよい。ユーザはロボット１００を目視できるが、妖精を目視できない。但し、ユーザは、スマートフォン５００を用いれば、ＡＲ（Augmented Reality：拡張現実）表示によって妖精を確認できる。ロボット１００は、妖精を認知できるという想定に従って動作する。仮想キャラクタは、サーバ２００によって管理される。
【００２１】
また、ユーザは、直接ロボット１００を動かすのではなく、妖精を介してロボット１００を間接的に動かすものとする。以下、その意義について述べる。
【００２２】
妖精は、物理的な存在ではないがロボットと人間のコミュニケーションの仲介者として働く。人間がその妖精へ命令を発すれば、妖精はその命令をロボット１００に伝達する。そして、好意を持っている妖精に頼まれれば、ロボット１００はそれを受け入れて行動する。
【００２３】
つまり、ロボット１００は、人間に頼まれて動くのではなく、妖精の勧めを聞き入れた結果として行動する。ロボット１００の行動は人間が望んだものではあるが、直接的に人間の命令に従ったわけではない。このように、妖精から受けた命令であるからこそ従っていることにすれば、人間がロボット１００を支配できているという印象が生まれにくくなる。「妖精のおかげでロボット１００を制御できた」、「妖精が仲介してくれないとロボット１００に行動を命令できない」という感覚が、「このロボット１００は人間に単純に従うものではない」という印象を生じさせ、ロボット１００の自律性に関する認識が維持される。
【００２４】
もし、ユーザ端末から直接的にロボット１００に行動を命令できるとしたら、そのようなロボット１００は、リモート操作可能な普通の機械ということになり、人格的な側面が失われる。また、別の方法として、ユーザ端末から行動を命令されたロボット１００が、人間からの直接的な命令に気まぐれに従うようにすれば、一面でロボット１００の主体性を演出できるかもしれない。しかし、このような気まぐれなロボット１００は、単に反応性が悪い機械に過ぎないと捉えられるかも知れない。
【００２５】
本実施形態のように人間が妖精を介してロボット１００に命令する方式であれば、ロボット１００が結果的に命令に従ったとしても、妖精との関係性に基づくロボット１００自身の判断が介在しているという点において、ロボット１００の主体性が守られるようになる。したがって、ロボット１００に関して服従的な印象は生じない。
【００２６】
本実施形態の場合、妖精という仲介者が居なければロボット１００にコンタクトできないことに関して、ユーザは「もどかしさ」や「迂遠さ」を感じるかも知れない。しかし、このような感じ方は、むしろ、独り立ちしているロボット１００であるという本来のコンセプトに合致していると言える。
【００２７】
ロボット１００が命令に応じたとしても、それは人間に対する服従の表れではなく、ロボット１００が仲介した妖精を高く信頼しているからである。上述のとおり、人間による支配の印象を排除すればロボット１００の人格（主体性）が尊重され、人間はロボット１００に共感しやすい。
【００２８】
続いて、動作の概要について説明する。最初に、ユーザはスマートフォン５００を操作して妖精を仮想空間に投入する。仮想空間に投入された妖精は、肉眼では視認できないが、スマートフォン５００におけるＡＲ表示によって視認できる。つまり、仮想空間から現実空間に投影された妖精を、背景画像に重ねて表示するユーザインタフェースを実現する。尚、投入される妖精は、複数でもよい。また、複数のスマートフォン５００で同時にＡＲ表示により視認できてよい。
【００２９】
妖精の投入後、ユーザは、スマートフォン５００を操作して妖精に種々の指示を行うことができる。ここでは、ロボット１００への行動命令（以下、ロボット行動命令とよぶ）を転送させる指示を行うものとする。
【００３０】
妖精とロボット１００の交信において、妖精からロボット１００へ伝えられるデータは、主に通知や命令である。これらのデータは、比較的簡単な処理で解析できる。
【００３１】
一方、ロボット１００が現実空間から得るデータは、主に内部センサで計測されるデータである。計測データは、温度、明るさや音量などの数値データの他、画像や音声などのデータである。現実空間から得られるデータは、比較的高度な認識処理の対象となる。認識結果は、ロボット１００が自律的に行動する契機となることがある。
【００３２】
また、ロボット１００と妖精は、互いに主体性を認めるものと想定する。彼らは独自の判断を行うとともに他者を尊重する。両者は互いに独立しているものの、ロボット１００が、妖精を意識して行動することがある。たとえばロボット１００が、妖精の仮想位置が投影される現実位置に近づくこともある。逆に妖精が、ロボット１００を意識して行動することがある。たとえば妖精が、ロボット１００の近くに自らの仮想位置が投影されるように移動することが考えられる。
【００３３】
ロボット１００と妖精は、互いにメッセージを伝えてもよい。つまり、ロボット１００から妖精へ話しかけることと、妖精からロボット１００へ話しかけることが考えられる。また、妖精は、ロボット１００とユーザを仲介してメッセージを伝えてもよい。妖精とロボットとがコミュニケーション行動を行うとき、ロボットはコミュニケーション行動に応じて身体を駆動し、適切なモーションを実行する。このとき、ユーザはスマートフォン５００を介してロボット１００を見ることでモーションの意味を理解できるが、ロボット１００を直接見てもモーションの意味を理解できない。
【００３４】
ロボット１００は、感情を示すパラメータを備える。機嫌が良いときには、ロボット１００は妖精からの通知や命令によく応じ、反対に機嫌が悪いときには、通知や命令にはあまり応じない。この例では、ロボット１００の感情状態を示す感情パラメータを用いるが、詳しくは後述する。以上のように、本実施形態では、仮想空間と現実空間を融合したロボット１００の世界観を提供する。
【００３５】
以下、ロボット１００の基本構成について図２から図５に関連して説明したあと、本実施形態における妖精の制御と応用に関する実装方法を説明する。
【００３６】
［基本構成］
図２（ａ）は、ロボット１００の正面外観図である。図２（ｂ）は、ロボット１００の側面外観図である。
本実施形態におけるロボット１００は、外部環境および内部状態に基づいて行動を決定する自律行動型のロボットである。外部環境は、カメラやサーモセンサなど各種のセンサにより認識される。内部状態はロボット１００の感情を表現するさまざまなパラメータとして定量化される。ロボット１００は、オーナー家庭の家屋内を行動範囲とする。以下、ロボット１００に関わる人間を「ユーザ」とよぶ。
【００３７】
ロボット１００のボディ１０４は、全体的に丸みを帯びた形状を有し、ウレタンやゴム、樹脂、繊維などやわらかく弾力性のある素材により形成された外皮を含む。ロボット１００に服を着せてもよい。ロボット１００の総重量は５〜１５キログラム程度、身長は０．５〜１．２メートル程度である。適度な重さと丸み、柔らかさ、手触りのよさ、といった諸属性により、ユーザがロボット１００を抱きかかえやすく、かつ、抱きかかえたくなるという効果が実現される。
【００３８】
ロボット１００は、一対の前輪１０２（左輪１０２ａ，右輪１０２ｂ）と、一つの後輪１０３を含む。前輪１０２が駆動輪であり、後輪１０３が従動輪である。前輪１０２は、操舵機構を有しないが、回転速度や回転方向を個別に制御可能とされている。後輪１０３は、キャスターであり、ロボット１００を前後左右へ移動させるために回転自在となっている。後輪１０３はオムニホイールであってもよい。
【００３９】
前輪１０２および後輪１０３は、駆動機構（回動機構、リンク機構）によりボディ１０４に完全収納できる。走行時においても各車輪の大部分はボディ１０４に隠れているが、各車輪がボディ１０４に完全収納されるとロボット１００は移動不可能な状態となる。すなわち、車輪の収納動作にともなってボディ１０４が降下し、床面Ｆに着座する。この着座状態においては、ボディ１０４の底部に形成された平坦状の着座面１０８（接地底面）が床面Ｆに当接する。
【００４０】
ロボット１００は、２つの手１０６を有する。手１０６には、モノを把持する機能はない。手１０６は上げる、振る、振動するなど簡単な動作が可能である。２つの手１０６も個別制御可能である。
【００４１】
目１１０は、液晶素子または有機ＥＬ素子による画像表示が可能である。ロボット１００は、音源方向を特定可能なマイクロフォンアレイや超音波センサなどさまざまなセンサを搭載する。また、スピーカーを内蔵し、簡単な音声を発することもできる。
【００４２】
ロボット１００の頭部にはツノ１１２が取り付けられる。上述のようにロボット１００は軽量であるため、ユーザはツノ１１２をつかむことでロボット１００を持ち上げることも可能である。ツノ１１２には全天球カメラが取り付けられ、ロボット１００の上部全域を一度に撮像可能である。
【００４３】
図３は、ロボット１００の構造を概略的に表す断面図である。
図３に示すように、ロボット１００のボディ１０４は、ベースフレーム３０８、本体フレーム３１０、一対の樹脂製のホイールカバー３１２および外皮３１４を含む。ベースフレーム３０８は、金属からなり、ボディ１０４の軸芯を構成するとともに内部機構を支持する。ベースフレーム３０８は、アッパープレート３３２とロアプレート３３４とを複数のサイドプレート３３６により上下に連結して構成される。複数のサイドプレート３３６間には通気が可能となるよう、十分な間隔が設けられる。ベースフレーム３０８の内方には、バッテリー１１８、制御回路３４２および各種アクチュエータが収容されている。
【００４４】
本体フレーム３１０は、樹脂材からなり、頭部フレーム３１６および胴部フレーム３１８を含む。頭部フレーム３１６は、中空半球状をなし、ロボット１００の頭部骨格を形成する。胴部フレーム３１８は、段付筒形状をなし、ロボット１００の胴部骨格を形成する。胴部フレーム３１８は、ベースフレーム３０８と一体に固定される。頭部フレーム３１６は、胴部フレーム３１８の上端部に相対変位可能に組み付けられる。
【００４５】
頭部フレーム３１６には、ヨー軸３２０、ピッチ軸３２２およびロール軸３２４の３軸と、各軸を回転駆動するためのアクチュエータ３２６が設けられる。アクチュエータ３２６は、各軸を個別に駆動するための複数のサーボモータを含む。首振り動作のためにヨー軸３２０が駆動され、頷き動作のためにピッチ軸３２２が駆動され、首を傾げる動作のためにロール軸３２４が駆動される。
【００４６】
頭部フレーム３１６の上部には、ヨー軸３２０を支持するプレート３２５が固定されている。プレート３２５には、上下間の通気を確保するための複数の通気孔３２７が形成される。
【００４７】
頭部フレーム３１６およびその内部機構を下方から支持するように、金属製のベースプレート３２８が設けられる。ベースプレート３２８は、クロスリンク機構３２９（パンタグラフ機構）を介してプレート３２５と連結される一方、ジョイント３３０を介してアッパープレート３３２（ベースフレーム３０８）と連結される。
【００４８】
胴部フレーム３１８は、ベースフレーム３０８と車輪駆動機構３７０を収容する。車輪駆動機構３７０は、回動軸３７８およびアクチュエータ３７９を含む。胴部フレーム３１８の下半部は、ホイールカバー３１２との間に前輪１０２の収納スペースＳを形成するために小幅とされる。
【００４９】
外皮３１４は、ウレタンゴムからなり、本体フレーム３１０およびホイールカバー３１２を外側から覆う。手１０６は、外皮３１４と一体成形される。外皮３１４の上端部には、外気を導入するための開口部３９０が設けられる。
【００５０】
図４は、ロボット１００のハードウェア構成図である。
ロボット１００は、内部センサ１２８、通信機１２６、記憶装置１２４、プロセッサ１２２、駆動機構１２０およびバッテリー１１８を含む。プロセッサ１２２と記憶装置１２４は、制御回路３４２に含まれる。各ユニットは電源線１３０および信号線１３２により互いに接続される。バッテリー１１８は、電源線１３０を介して各ユニットに電力を供給する。各ユニットは信号線１３２により制御信号を送受する。バッテリー１１８は、リチウムイオン二次電池であり、ロボット１００の動力源である。
【００５１】
内部センサ１２８は、ロボット１００が内蔵する各種センサの集合体である。具体的には、カメラ（全天球カメラ）、マイクロフォンアレイ、測距センサ（赤外線センサ）、サーモセンサ、タッチセンサ、加速度センサ、ニオイセンサなどである。タッチセンサは、外皮３１４と本体フレーム３１０の間に設置され、ユーザのタッチを検出する。ニオイセンサは、匂いの元となる分子の吸着によって電気抵抗が変化する原理を応用した既知のセンサである。
【００５２】
通信機１２６は、各種の外部機器を対象として無線通信を行う通信モジュールである。記憶装置１２４は、不揮発性メモリおよび揮発性メモリにより構成され、コンピュータプログラムや各種設定情報を記憶する。プロセッサ１２２は、コンピュータプログラムの実行手段である。駆動機構１２０は、複数のアクチュエータおよび上述した車輪駆動機構３７０を含む。このほかには、表示器やスピーカーなども搭載される。
【００５３】
駆動機構１２０は、主として、車輪（前輪１０２）と頭部（頭部フレーム３１６）を制御する。駆動機構１２０は、ロボット１００の移動方向や移動速度を変化させるほか、車輪（前輪１０２および後輪１０３）を昇降させることもできる。車輪が上昇すると、車輪はボディ１０４に完全に収納され、ロボット１００は着座面１０８にて床面Ｆに当接し、着座状態となる。また、駆動機構１２０は、ワイヤ１３４を介して、手１０６を制御する。
【００５４】
図５は、ロボットシステム３００の機能ブロック図である。
ロボットシステム３００は、ロボット１００、サーバ２００および複数の外部センサ１１４を含む。ロボット１００およびサーバ２００の各構成要素は、ＣＰＵ（Central Processing Unit）および各種コプロセッサなどの演算器、メモリやストレージといった記憶装置、それらを連結する有線または無線の通信線を含むハードウェアと、記憶装置に格納され、演算器に処理命令を供給するソフトウェアによって実現される。コンピュータプログラムは、デバイスドライバ、オペレーティングシステム、それらの上位層に位置する各種アプリケーションプログラム、また、これらのプログラムに共通機能を提供するライブラリによって構成されてもよい。以下に説明する各ブロックは、ハードウェア単位の構成ではなく、機能単位のブロックを示している。
ロボット１００の機能の一部はサーバ２００により実現されてもよいし、サーバ２００の機能の一部または全部はロボット１００により実現されてもよい。
【００５５】
家屋内にはあらかじめ複数の外部センサ１１４が設置される。サーバ２００には、外部センサ１１４の位置座標が登録される。ロボット１００の内部センサ１２８および複数の外部センサ１１４から得られる情報に基づいて、サーバ２００がロボット１００の基本行動を決定する。外部センサ１１４はロボット１００の感覚器を補強するためのものであり、サーバ２００はロボット１００の頭脳を補強するためのものである。ロボット１００の通信機１２６が外部センサ１１４と定期的に通信し、サーバ２００は外部センサ１１４によりロボット１００の位置を特定する（特許文献２も参照）。
【００５６】
（サーバ２００）
サーバ２００は、通信部２０４、データ処理部２０２およびデータ格納部２０６を含む。
通信部２０４は、外部センサ１１４およびロボット１００との通信処理を担当する。データ格納部２０６は各種データを格納する。データ処理部２０２は、通信部２０４により取得されたデータおよびデータ格納部２０６に格納されるデータに基づいて各種処理を実行する。データ処理部２０２は、通信部２０４およびデータ格納部２０６のインタフェースとしても機能する。
【００５７】
データ格納部２０６は、モーション格納部２３２と個人データ格納部２１８を含む。
ロボット１００は、複数の動作パターン（モーション）を有する。手１０６を震わせる、蛇行しながらオーナーに近づく、首をかしげたままオーナーを見つめる、などさまざまなモーションが定義される。
【００５８】
モーション格納部２３２は、モーションの制御内容を定義する「モーションファイル」を格納する。各モーションは、モーションＩＤにより識別される。モーションファイルは、ロボット１００のモーション格納部１６０にもダウンロードされる。どのモーションを実行するかは、サーバ２００で決定されることもあるし、ロボット１００で決定されることもある。
【００５９】
ロボット１００のモーションの多くは、複数の単位モーションを含む複合モーションとして構成される。たとえば、ロボット１００がオーナーに近づくとき、オーナーの方に向き直る単位モーション、手を上げながら近づく単位モーション、体を揺すりながら近づく単位モーション、両手を上げながら着座する単位モーションの組み合わせとして表現されてもよい。このような４つのモーションの組み合わせにより、「オーナーに近づいて、途中で手を上げて、最後は体をゆすった上で着座する」というモーションが実現される。モーションファイルには、ロボット１００に設けられたアクチュエータの回転角度や角速度などが時間軸に関連づけて定義される。モーションファイル（アクチュエータ制御情報）にしたがって、時間経過とともに各アクチュエータを制御することで様々なモーションが表現される。
【００６０】
先の単位モーションから次の単位モーションに変化するときの移行時間を「インターバル」とよぶ。インターバルは、単位モーション変更に要する時間やモーションの内容に応じて定義されればよい。インターバルの長さは調整可能である。
以下、いつ、どのモーションを選ぶか、モーションを実現する上での各アクチュエータの出力調整など、ロボット１００の行動制御に関わる設定のことを「行動特性」と総称する。ロボット１００の行動特性は、モーション選択アルゴリズム、モーションの選択確率、モーションファイル等により定義される。
【００６１】
モーション格納部２３２は、モーションファイルのほか、各種のイベントが発生したときに実行すべきモーションを定義するモーション選択テーブルを格納する。モーション選択テーブルにおいては、イベントに対して１以上のモーションとその選択確率が対応づけられる。
【００６２】
個人データ格納部２１８は、ユーザの情報を格納する。具体的には、ユーザに対する親密度とユーザの身体的特徴・行動的特徴を示すマスタ情報を格納する。年齢や性別などの他の属性情報を格納してもよい。
【００６３】
ロボット１００は、ユーザごとに親密度という内部パラメータを有する。ロボット１００が、自分を抱き上げる、声をかけてくれるなど、自分に対して好意を示す行動を認識したとき、そのユーザに対する親密度が高くなる。ロボット１００に関わらないユーザや、乱暴を働くユーザ、出会う頻度が低いユーザに対する親密度は低くなる。
【００６４】
データ処理部２０２は、位置管理部２０８、認識部２１２、動作制御部２２２、親密度管理部２２０および状態管理部２４４を含む。
位置管理部２０８は、ロボット１００の位置座標を特定する。状態管理部２４４は、充電率や内部温度、プロセッサ１２２の処理負荷などの各種物理状態など各種内部パラメータを管理する。また、状態管理部２４４は、ロボット１００の感情（寂しさ、好奇心、承認欲求など）を示すさまざまな感情パラメータを管理する。これらの感情パラメータは常に揺らいでいる。感情パラメータに応じてロボット１００の移動目標地点が変化する。たとえば、寂しさが高まっているときには、ロボット１００はユーザのいるところを移動目標地点として設定する。
【００６５】
時間経過によって感情パラメータが変化する。また、後述の応対行為によっても各種感情パラメータは変化する。たとえば、オーナーから「抱っこ」をされると寂しさを示す感情パラメータは低下し、長時間にわたってオーナーを視認しないときには寂しさを示す感情パラメータは少しずつ増加する。
【００６６】
認識部２１２は、外部環境を認識する。外部環境の認識には、温度や湿度に基づく天候や季節の認識、光量や温度に基づく物陰（安全地帯）の認識など多様な認識が含まれる。ロボット１００の認識部１５６は、内部センサ１２８により各種の環境情報を取得し、これを一次処理した上でサーバ２００の認識部２１２に転送する。
【００６７】
具体的には、ロボット１００の認識部１５６は、画像から移動物体、特に、人物や動物に対応する画像領域を抽出し、抽出した画像領域から移動物体の身体的特徴や行動的特徴を示す特徴量の集合として「特徴ベクトル」を抽出する。特徴ベクトル成分（特徴量）は、各種身体的・行動的特徴を定量化した数値である。たとえば、人間の目の横幅は０〜１の範囲で数値化され、１つの特徴ベクトル成分を形成する。人物の撮像画像から特徴ベクトルを抽出する手法については、既知の顔認識技術の応用である。ロボット１００は、特徴ベクトルをサーバ２００に送信する。
【００６８】
サーバ２００の認識部２１２は、ロボット１００の内蔵カメラによる撮像画像から抽出された特徴ベクトルと、個人データ格納部２１８にあらかじめ登録されているユーザ（クラスタ）の特徴ベクトルと比較することにより、撮像されたユーザがどの人物に該当するかを判定する（ユーザ識別処理）。また、認識部２１２は、ユーザの表情を画像認識することにより、ユーザの感情を推定する。認識部２１２は、人物以外の移動物体、たとえば、ペットである猫や犬についてもユーザ識別処理を行う。
【００６９】
認識部２１２は、ロボット１００になされたさまざまな応対行為を認識し、快・不快行為に分類する。認識部２１２は、また、ロボット１００の行動に対するオーナーの応対行為を認識することにより、肯定・否定反応に分類する。
快・不快行為は、ユーザの応対行為が、生物として心地よいものであるか不快なものであるかにより判別される。たとえば、抱っこされることはロボット１００にとって快行為であり、蹴られることはロボット１００にとって不快行為である。肯定・否定反応は、ユーザの応対行為が、ユーザの快感情を示すものか不快感情を示すものであるかにより判別される。抱っこされることはユーザの快感情を示す肯定反応であり、蹴られることはユーザの不快感情を示す否定反応である。
【００７０】
サーバ２００の動作制御部２２２は、ロボット１００の動作制御部１５０と協働して、ロボット１００のモーションを決定する。サーバ２００の動作制御部２２２は、ロボット１００の移動目標地点とそのための移動ルートを作成する。動作制御部２２２は、複数の移動ルートを作成し、その上で、いずれかの移動ルートを選択してもよい。
【００７１】
動作制御部２２２は、モーション格納部２３２の複数のモーションからロボット１００のモーションを選択する。各モーションには状況ごとに選択確率が対応づけられている。たとえば、オーナーから快行為がなされたときには、モーションＡを２０％の確率で実行する、気温が３０度以上となったとき、モーションＢを５％の確率で実行する、といった選択方法が定義される。
【００７２】
親密度管理部２２０は、ユーザごとの親密度を管理する。上述したように、親密度は個人データ格納部２１８において個人データの一部として登録される。快行為を検出したとき、親密度管理部２２０はそのオーナーに対する親密度をアップさせる。不快行為を検出したときには親密度はダウンする。また、長期間視認していないオーナーの親密度は徐々に低下する。
【００７３】
（ロボット１００）
ロボット１００は、通信部１４２、データ処理部１３６、データ格納部１４８、内部センサ１２８および駆動機構１２０を含む。
通信部１４２は、通信機１２６（図４参照）に該当し、外部センサ１１４、サーバ２００および他のロボット１００との通信処理を担当する。データ格納部１４８は各種データを格納する。データ格納部１４８は、記憶装置１２４（図４参照）に該当する。データ処理部１３６は、通信部１４２により取得されたデータおよびデータ格納部１４８に格納されているデータに基づいて各種処理を実行する。データ処理部１３６は、プロセッサ１２２およびプロセッサ１２２により実行されるコンピュータプログラムに該当する。データ処理部１３６は、通信部１４２、内部センサ１２８、駆動機構１２０およびデータ格納部１４８のインタフェースとしても機能する。
【００７４】
データ格納部１４８は、ロボット１００の各種モーションを定義するモーション格納部１６０を含む。
ロボット１００のモーション格納部１６０には、サーバ２００のモーション格納部２３２から各種モーションファイルがダウンロードされる。モーションは、モーションＩＤによって識別される。前輪１０２を収容して着座する、手１０６を持ち上げる、２つの前輪１０２を逆回転させることで、あるいは、片方の前輪１０２だけを回転させることでロボット１００を回転行動させる、前輪１０２を収納した状態で前輪１０２を回転させることで震える、ユーザから離れるときにいったん停止して振り返る、などのさまざまなモーションを表現するために、各種アクチュエータ（駆動機構１２０）の動作タイミング、動作時間、動作方向などがモーションファイルにおいて時系列定義される。
データ格納部１４８には、個人データ格納部２１８からも各種データがダウンロードされてもよい。
【００７５】
データ処理部１３６は、認識部１５６および動作制御部１５０を含む。
ロボット１００の動作制御部１５０は、サーバ２００の動作制御部２２２と協働してロボット１００のモーションを決める。一部のモーションについてはサーバ２００で決定し、他のモーションについてはロボット１００で決定してもよい。また、ロボット１００がモーションを決定するが、ロボット１００の処理負荷が高いときにはサーバ２００がモーションを決定するとしてもよい。サーバ２００においてベースとなるモーションを決定し、ロボット１００において追加のモーションを決定してもよい。モーションの決定処理をサーバ２００およびロボット１００においてどのように分担するかはロボットシステム３００の仕様に応じて設計すればよい。
【００７６】
ロボット１００の動作制御部１５０は選択したモーションを駆動機構１２０に実行指示する。駆動機構１２０は、モーションファイルにしたがって、各アクチュエータを制御する。
【００７７】
動作制御部１５０は、親密度の高いユーザが近くにいるときには「抱っこ」をせがむ仕草として両方の手１０６をもちあげるモーションを実行することもできるし、「抱っこ」に飽きたときには左右の前輪１０２を収容したまま逆回転と停止を交互に繰り返すことで抱っこをいやがるモーションを表現することもできる。駆動機構１２０は、動作制御部１５０の指示にしたがって前輪１０２や手１０６、首（頭部フレーム３１６）を駆動することで、ロボット１００にさまざまなモーションを表現させる。
【００７８】
ロボット１００の認識部１５６は、内部センサ１２８から得られた外部情報を解釈する。認識部１５６は、視覚的な認識（視覚部）、匂いの認識（嗅覚部）、音の認識（聴覚部）、触覚的な認識（触覚部）が可能である。
【００７９】
認識部１５６は、移動物体の撮像画像から特徴ベクトルを抽出する。上述したように、特徴ベクトルは、移動物体の身体的特徴と行動的特徴を示すパラメータ（特徴量）の集合である。移動物体を検出したときには、ニオイセンサや内蔵の集音マイク、温度センサ等からも身体的特徴や行動的特徴が抽出される。これらの特徴も定量化され、特徴ベクトル成分となる。認識部１５６は、特許文献２等に記載の既知の技術に基づいて、特徴ベクトルからユーザを特定する。
【００８０】
検出・分析・判定を含む一連の認識処理のうち、ロボット１００の認識部１５６は認識に必要な情報の取捨選択や抽出を行い、判定等の解釈処理はサーバ２００の認識部２１２により実行される。認識処理は、サーバ２００の認識部２１２だけで行ってもよいし、ロボット１００の認識部１５６だけで行ってもよいし、上述のように双方が役割分担をしながら上記認識処理を実行してもよい。
【００８１】
ロボット１００に対する強い衝撃が与えられたとき、認識部１５６はタッチセンサおよび加速度センサによりこれを認識し、サーバ２００の認識部２１２は、近隣にいるユーザによって「乱暴行為」が働かれたと認識する。ユーザがツノ１１２を掴んでロボット１００を持ち上げるときにも、乱暴行為と認識してもよい。ロボット１００に正対した状態にあるユーザが特定音量領域および特定周波数帯域にて発声したとき、サーバ２００の認識部２１２は、自らに対する「声掛け行為」がなされたと認識してもよい。また、体温程度の温度を検知したときにはユーザによる「接触行為」がなされたと認識し、接触認識した状態で上方への加速度を検知したときには「抱っこ」がなされたと認識する。ユーザがボディ１０４を持ち上げるときの物理的接触をセンシングしてもよいし、前輪１０２にかかる荷重が低下することにより抱っこを認識してもよい。
まとめると、ロボット１００は内部センサ１２８によりユーザの行為を物理的情報として取得し、サーバ２００の認識部２１２は快・不快を判定する。また、サーバ２００の認識部２１２は特徴ベクトルに基づくユーザ識別処理を実行する。
【００８２】
サーバ２００の認識部２１２は、ロボット１００に対するユーザの各種応対を認識する。各種応対行為のうち一部の典型的な応対行為には、快または不快、肯定または否定が対応づけられる。一般的には快行為となる応対行為のほとんどは肯定反応であり、不快行為となる応対行為のほとんどは否定反応となる。快・不快行為は親密度に関連し、肯定・否定反応はロボット１００の行動選択に影響する。
【００８３】
認識部１５６により認識された応対行為に応じて、サーバ２００の親密度管理部２２０はユーザに対する親密度を変化させる。原則的には、快行為を行ったユーザに対する親密度は高まり、不快行為を行ったユーザに対する親密度は低下する。
【００８４】
以上の基本構成を前提として、次に、本実施形態におけるロボット１００、サーバ２００及びスマートフォン５００の実装について、特に、本実装の特徴と目的および基本構成との相違点を中心として説明する。
【００８５】
この例で、ロボット１００は妖精を追う動きをすることがある。図６は、ロボット１００が妖精を追う様子を時間経過毎に示す図である。図６（ａ）は、まだ妖精が仮想空間に投入されていない状況を示している。図６（ｂ）は、妖精が仮想空間に投入された状況を示している。人間には妖精が見えないが、ロボット１００は妖精を認識している。ロボット１００は、妖精の仮想位置が投影される現実位置を把握している。図６（ｃ）は、妖精が移動してロボット１００から離れた状況を示している。図６（ｄ）は、移動した妖精を追う様子を示している。このように、ロボット１００は好きな妖精に付いて行こうとするので、ユーザは妖精を移動させることによって、目的の場所へロボット１００を誘導することができる。つまり、妖精の存在が、ロボット１００の自律的な行動決定に関わる内部パラメータに影響を及ぼし、ロボット１００が結果的にコントロールされる。
【００８６】
更に、ロボット１００は妖精の動作を模倣することがある。図７は、ロボットが妖精の踊りを模倣する様子を経過時間毎に示す図である。図７（ａ）は、まだ妖精が踊っていない状況を示している。図７（ｂ）は、妖精が踊り始めた状況を示している。図７（ｃ）は、ロボット１００が、妖精が踊る様子を見て真似ている状況を示している。このように、ロボット１００は好きな妖精の動きを真似ようとするので、ユーザは妖精に指示動作をさせることによって、ロボット１００に所望のとおり振る舞わせることができる。言い換えると、妖精の存在により、ロボット１００は一時的に「踊る」という機能を身につける。
【００８７】
［妖精関連の実装］
図８は、サーバ２００及びスマートフォン５００における妖精関連の機能ブロック図である。図８では、サーバ２００の各種機能のうち、主にスマートフォン５００との連携に関わるものを示している。
【００８８】
（サーバ２００）
本実施形態におけるサーバ２００のデータ処理部２０２は、仮想キャラクタ投入部２５０、仮想キャラクタ位置管理部２５２、仮想キャラクタ情報提供部２５４および仮想キャラクタ処理部２５６を含む。
仮想キャラクタ投入部２５０は、仮想空間へ妖精を投入する処理を行う。具体的には、仮想キャラクタ投入部２５０は、妖精を制御するための妖精プログラムをロードして、仮想キャラクタ処理部２５６の機能をスタートさせる。妖精プログラムは、妖精のキャラクタ毎に用意される。仮想キャラクタ投入部２５０は、複数の妖精プログラムの中から選択して読み込む。妖精プログラムは、妖精の外観を決める情報や、妖精を識別するための識別情報を保持する。仮想キャラクタ位置管理部２５２は、仮想空間における妖精の位置を管理する。仮想キャラクタ情報提供部２５４は、妖精に関する情報をスマートフォン５００およびロボット１００へ提供する。仮想キャラクタ処理部２５６は、妖精に関する制御を行う。
【００８９】
本実施形態におけるサーバ２００のデータ格納部２０６は、仮想キャラクタプログラム格納部２６０と仮想キャラクタデータ格納部２６２を含む。仮想キャラクタプログラム格納部２６０は、妖精プログラムを格納する。仮想キャラクタデータ格納部２６２は、妖精データ４４０を格納する。妖精データ４４０については、図１４に関連して後述する。
【００９０】
（スマートフォン５００）
スマートフォン５００は、内部センサ５０２、データ処理部５０４、通信部５０６およびデータ格納部５０８を含む。内部センサ５０２は、カメラ５１０を含む。カメラ５１０は、たとえばＡＲ表示に用いられる背景画像を撮影する。
【００９１】
データ処理部５０４は、操作受付部５２２、命令出力部５２４、ＡＲ表示処理部５２６およびデータ移動部５２８を含む。操作受付部５２２は、タッチパネルを用いてユーザによる操作を受け付ける。命令出力部５２４は、妖精に転送させるロボット行動命令を出力する。ＡＲ表示処理部５２６は、ＡＲ表示を行う。データ移動部５２８は、後述する形態においてデータ移動処理を行う。
【００９２】
通信部５０６は、外部装置、たとえばサーバ２００との通信処理を担当する。
【００９３】
データ格納部５０８は、各種データを格納するために用いられ、移動対象データ格納部５３０を含む。移動対象データ格納部５３０は、後述する形態におけるデータ移動処理によって移動の対象となるデータを格納する。
【００９４】
図９は、本実施形態におけるロボットシステム３００の機能ブロック図である。図９に示したサーバ２００は、図８に示したサーバ２００と同じものである。
（サーバ２００）
本実施形態におけるサーバ２００のデータ処理部２０２は、更にデータ移動部２４６を含む。データ移動部２４６は、後述する形態においてデータ移動処理を行う。
【００９５】
（ロボット１００）
本実施形態におけるロボット１００のデータ処理部１３６は、現実入力系１７０、仮想Ｉ／Ｆ（インタフェース）系１７２、ロボット制御系１７４およびデータ移動部１８４を有する。
現実入力系１７０は、現実空間に関する環境情報を取得する。仮想Ｉ／Ｆ系１７２は、仮想空間とのデータ入出力インタフェースである。ロボット制御系１７４は、ロボット１００の行動を制御する。データ移動部１８４は、後述する形態においてデータ移動処理を行う。現実入力系１７０、仮想Ｉ／Ｆ系１７２およびロボット制御系１７４については、図１０に関連して後述する。
【００９６】
データ格納部１４８は、モーション格納部１６０、イベントテーブル格納部１６２、親密度格納部１６４、感情格納部１６６およびマップ格納部１６８を含む。
モーション格納部１６０は、上述のとおり各種モーションファイルを格納する。イベントテーブル格納部１６２は、イベントテーブルを格納する。イベントテーブルについては、図１１に関連して後述する。親密度格納部１６４は、ユーザに対する親密度および妖精に対する親密度を格納する。感情格納部１６６は、ロボットの感情を示すパラメータを格納する。マップ格納部１６８は、仮想位置と現実位置との対応を示すマップを格納する。
【００９７】
尚、サーバ２００のデータ処理部２０２に含まれる機能単位のブロックをロボット１００のデータ処理部１３６に設けてもよい。具体的には、サーバ２００のデータ処理部２０２に含まれる位置管理部２０８と同等のブロックを、ロボット１００のデータ処理部１３６に設けてもよい。サーバ２００のデータ処理部２０２に含まれる親密度管理部２２０と同等のブロックを、ロボット１００のデータ処理部１３６に設けてもよい。サーバ２００のデータ処理部２０２に含まれる状態管理部２４４と同等のブロックを、ロボット１００のデータ処理部１３６に設けてもよい。また、サーバ２００のデータ処理部２０２に含まれる認識部２１２における機能を、ロボット１００のデータ処理部１３６に含まれる現実認識部１５４で担ってもよい。サーバ２００のデータ処理部２０２に含まれる動作制御部２２２における機能を、ロボット１００のデータ処理部１３６に含まれる動作制御部１５０で担ってもよい。サーバ２００のデータ格納部２０６に含まれる個人データ格納部２１８と同等の格納部を、ロボット１００のデータ格納部１４８に設けてもよい。
【００９８】
続いて、図１０に示した現実入力系１７０、仮想Ｉ／Ｆ系１７２およびロボット制御系１７４の詳細について説明する。
現実入力系１７０は、計測データ入力部１５２および現実認識部１５４を含む。計測データ入力部１５２は、内部センサ１２８によって計測されたデータを取得する。現実認識部１５４は、計測データ入力部１５２において取得された計測データに基づいて環境に関するイベント（以下、環境イベントという）を生成する。
【００９９】
たとえば温度センサで計測した温度が許容範囲の上限値を超えている場合に、現実認識部１５４は「大変暑い」という環境イベントを生成する。また、マイクロフォンで検出した音量が許容範囲の上限値を超えている場合に、現実認識部１５４は「大きな音が発生した」という環境イベントを生成する。高度な判断を伴う例として、カメラ５１０で撮影された映像に基づいて、現実認識部１５４が「Ａさんが来た」という環境イベントを生成する。あるいは撮影された映像と計測した温度に基づいて、現実認識部１５４が「Ｂさんが抱っこしてくれている」という環境イベントを生成する。生成された環境イベントは、イベントテーブルに追加される。
【０１００】
ここで図１１に示したイベントテーブルの例について説明する。イベントＩＤ：１のレコードは、環境イベントの例を示している。イベントテーブルのレコードには、イベントＩＤ、イベント種類、パラメータおよび完了フラグが格納される。パラメータは、イベント種類に応じた内容である。完了フラグは、初期値がＯＦＦであり、動作制御部１５０においてイベントに関する処理が済んだ時点でＯＮとなる。イベントテーブルには、現実入力系１７０において発生したイベントの他に、仮想入力系１７６において発生したイベントも登録される。図１１は、イベントＩＤ：２００までのイベントがすでに処理され、新たにイベントＩＤ：２０１のイベントが登録され、まだ処理されていない状態を示している。動作制御部１５０は、全てのイベントに対して処理をする必要はない。例えば、ロボットの内部状態に応じて、イベントに対して選択的に処理をすればよい。
【０１０１】
図１０の説明に戻る。仮想Ｉ／Ｆ系１７２は、仮想入力系１７６を含む。仮想入力系１７６は、妖精からの通知や命令を入力する。具体的には、仮想入力系１７６は、サーバ２００のデータ処理部２０２から、この通知や命令を入力する。仮想入力系１７６は、交信データ入力部１８８および仮想認識部１８２を有する。交信データ入力部１８８は、妖精からの交信データを、通信部１４２を介して取得する。仮想認識部１８２は、妖精からの交信データの内容を認識する。この例において妖精からの交信データは、妖精位置通知、妖精動作通知およびロボット行動命令のうちのいずれかである。妖精位置通知は、仮想空間における妖精位置（妖精の仮想位置）を知らせる。妖精動作通知は、仮想空間における妖精の動作を知らせる。ロボット行動命令は、ロボットに行動させる命令である。
【０１０２】
図１２に示した仮想入力系１７６の処理について説明する。交信データ入力部１８８は、妖精からの交信データを取得する（Ｓ１）。そして、仮想認識部１８２は、取得した交信データが妖精位置通知であるか否かを判定する（Ｓ２）。
【０１０３】
取得した交信データが妖精位置通知であると判定した場合には、図１１に示したイベントＩＤ：２から４のレコードのように、妖精位置通知イベントをイベントテーブルに追加する（Ｓ３）。尚、妖精位置通知イベントにおけるパラメータは、妖精の仮想位置である。妖精が仮想空間を漂っているので、このように妖精位置通知が連続的に送られる。
【０１０４】
図１２の説明に戻って、取得した交信データが妖精位置通知でないと判定した場合には、取得した交信データが妖精動作通知であるか否かを判定する（Ｓ４）。
【０１０５】
取得した交信データが妖精動作通知であると判定した場合には、図１１に示したイベントＩＤ：１０１のレコードのように、妖精動作通知イベントをイベントテーブルに追加する（Ｓ５）。尚、妖精動作通知イベントにおけるパラメータは、動作種類である。
【０１０６】
一方、取得した交信データが妖精動作通知でないと判定した場合には、取得した交信データがロボット行動命令であるか否かを判定する（Ｓ６）。
【０１０７】
取得した交信データがロボット行動命令であると判定した場合には、図１１に示したイベントＩＤ：２０１のレコードのように、ロボット行動命令イベントをイベントテーブルに追加する（Ｓ７）。尚、ロボット行動命令イベントにおけるパラメータは、行動種類である。また、行動種類が「ユーザへの接近」である場合には、ユーザの現実位置もパラメータに加えられる。付加されるパラメータの内容は、行動種類に依存する。
【０１０８】
取得した交信データがロボット行動命令でないと判定した場合には、Ｓ１の処理に戻る。また、Ｓ３、Ｓ５およびＳ７の処理の後も、Ｓ１の処理に戻る。
【０１０９】
図１０の説明に戻る。仮想Ｉ／Ｆ系１７２は、更に仮想出力系１７８を含む。仮想出力系１７８は、仮想空間へ送るデータを出力する。仮想出力系１７８は、交信データ出力部１８６を含む。交信データ出力部１８６は、妖精への交信データを、通信部１４２を介して出力する。
【０１１０】
ロボット制御系１７４は、動作制御部１５０、親密度管理部１９０、感情管理部１９２および位置変換部１９４を含む。動作制御部１５０は、イベントテーブルに登録されたイベントに基づいてモーションを決定し、決定したモーションの実行を駆動機構１２０に指示する。
【０１１１】
親密度管理部１９０は、ユーザに対する親密度および妖精に対する親密度を管理する。親密度管理部１９０は、たとえばロボット行動命令に従ってモーションを実行した後の状況に応じて妖精に対する親密度を調整する。あるいは、親密度管理部１９０は、妖精位置通知や妖精動作通知に基づいて選択したモーションを実行した後の状況に応じて妖精に対する親密度を調整する。つまり、妖精に従った結果、ユーザから快行為を受けたら、親密度管理部１９０は、その妖精に対する親密度をあげる。一方、ユーザから不快行為を受けたら、親密度管理部１９０は、その妖精に対する親密度を下げる。具体的には、現実認識部１５４によって快行為が認識されれば、親密度管理部１９０は、そのとき仮想空間にいる妖精に対する親密度を高くする。たとえば、ユーザに抱っこされたことによって、ユーザの応対が快行為に該当すると判定した場合には、親密度管理部１９０は、妖精に対する親密度に所定値を加える。逆に、現実認識部１５４によって不快行為が認識されれば、親密度管理部１９０は、そのとき仮想空間にいる妖精に対する親密度を低くする。たとえば、ユーザから乱暴を受けたことによって、ユーザの応対が不快行為に該当すると判定した場合には、親密度管理部１９０は、妖精に対する親密度から所定値を引く。
【０１１２】
感情管理部１９２は、上述した状態管理部２４４と同様に、ロボット１００の感情（寂しさ、好奇心、承認欲求、機嫌の良さなど）を示すさまざまな感情パラメータを管理する。感情管理部１９２は、たとえばロボット行動命令に従ってモーションを実行した後の状況に応じて感情パラメータを調整する。あるいは、感情管理部１９２は、妖精位置通知や妖精動作通知に基づいて選択したモーションを実行した後の状況に応じて感情パラメータを調整する。具体的には、現実認識部１５４によって快行為が認識されれば、感情管理部１９２は、たとえば機嫌の良さを示すパラメータの値を増やす。たとえば、ユーザに抱っこされたことによって、ユーザの応対が快行為に該当すると判定した場合には、感情管理部１９２は、機嫌の良さを示すパラメータに所定値を加える。逆に、現実認識部１５４によって不快行為が認識されれば、感情管理部１９２は、機嫌の良さを示すパラメータの値を減らす。たとえば、ユーザから乱暴を受けたことによって、ユーザの応対が不快行為に該当すると判定した場合には、感情管理部１９２は、機嫌の良さを示すパラメータから所定値を引く。
【０１１３】
位置変換部１９４は、マップ格納部１６８に格納されているマップを用いて、仮想位置を現実位置へ変換する処理と、現実位置を仮想位置へ変換する処理を行う。位置変換部１９４は、マップを用いずに、関数処理によって位置を変換してもよい。
【０１１４】
［妖精投入の実装］
妖精が仮想空間に投入される処理について説明する。図１３は、妖精が仮想空間に投入される処理過程を示すシーケンス図である。
図６（ａ）に示した状況において、スマートフォン５００の操作受付部５２２は、ユーザによる妖精投入の操作を受け付ける（Ｓ１１）。たとえば、ユーザがスマートフォン５００の画面に表示された妖精リストにおいて妖精名を選択することによって、仮想空間に投入させたい妖精が特定される。
【０１１５】
スマートフォン５００の操作受付部５２２は、通信部５０６を介して、妖精投入指示をサーバ２００へ送信する（Ｓ１２）。妖精投入指示には、投入対象を特定する妖精ＩＤが含まれる。
【０１１６】
サーバ２００の通信部２０４において妖精投入指示を受信すると、サーバ２００の仮想キャラクタ投入部２５０は、妖精処理を起動する（Ｓ１３）。具体的には、仮想キャラクタ投入部２５０は、妖精ＩＤによって特定される妖精プログラムを仮想キャラクタプログラム格納部２６０から読み出してメモリにロードさせ、妖精プログラムの命令コードをプロセッサに実行させる。その結果、データ処理部２０２に仮想キャラクタ処理部２５６としての機能（妖精制御用のプログラム）が開始される。また、仮想キャラクタ処理部２５６における初期処理で設定される妖精の仮想位置が、仮想キャラクタ位置管理部２５２に伝えられる。この仮想位置は、たとえば仮想空間における座標によって特定される。尚、投入される妖精の数は、２以上であってもよい。その場合には、複数の妖精処理が起動され、複数の仮想キャラクタ処理部２５６が設けられる。尚、仮想キャラクタ処理部２５６は、その後妖精が仮想空間を自律的に漂うように制御を続ける。
【０１１７】
サーバ２００の仮想キャラクタ情報提供部２５４は、通信部２０４を介して、妖精位置通知をスマートフォン５００へ送信するとともに（Ｓ１４）、ロボット１００へ同じ妖精位置通知を送信する（Ｓ１５）。これらの妖精位置通知には、妖精ＩＤおよび妖精の仮想位置が含まれる。仮想キャラクタ情報提供部２５４は、家屋内にロボット１００が複数ある場合に、すべてのロボット１００に対して妖精位置通知を送信する。但し、妖精とロボット１００が対応付けられている場合に、対応付けられているロボット１００に対してのみ妖精位置通知を送信してもよい。このようにすれば、あるロボット１００だけが特定の妖精を認識できているという状況を設定できる。
【０１１８】
ここで、妖精とロボット１００を対応付ける妖精データ４４０について触れておく。図１４は、妖精データ４４０の一部を示す構造図である。妖精データ４４０は、サーバ２００の仮想キャラクタデータ格納部２６２に格納されている。妖精データ４４０において、妖精ＩＤにロボットＩＤが対応付けられている場合には、そのロボット１００に対してのみ妖精に関する情報が提供される。妖精ＩＤにロボットＩＤが対応付けられていない場合には、すべてのロボット１００に対して妖精に関する情報が提供される。妖精に関する情報は、たとえば妖精位置通知や妖精動作通知などである。妖精データ４４０において、たとえば妖精の名前、性別、身体的特徴や行動的特徴などのパラメータおよびグラフィック画像を含んでもよい。
【０１１９】
図１３の説明に戻る。スマートフォン５００の通信部５０６において妖精位置通知を受信すると、スマートフォン５００のＡＲ表示処理部５２６は、ＡＲ表示を行う（Ｓ１６）。ＡＲ表示処理部５２６は、妖精の仮想位置を、現実空間における妖精位置（妖精の現実位置）に変換する。そして、カメラ５１０で撮影された背景画像に妖精のグラフィック画像を重ねて表示する。背景画像として映し出す現実空間の領域内に妖精の現実位置が含まれない場合には、妖精のグラフィック画像は表示されない。つまり、妖精の現実位置の方にカメラ５１０を向けたときに、妖精のグラフィック画像が表示される。妖精位置の方にカメラ５１０を向けていないときに、妖精のグラフィック画像は表示されない。
【０１２０】
妖精の表示に関する応用例を示しておく。背景画像として映し出す現実空間の領域のうち限定的範囲内に妖精の現実位置が含まれる場合に限って、妖精を表示してもよい。この限定的範囲は、表示可能範囲ということもできる。たとえば、スマートフォン５００の位置及び姿勢に基づいて限定的範囲を設定する。限定的範囲の例として、カメラ５１０の主軸となす角度が基準以内であって、カメラ５１０との距離が下限値以上かつ上限値以下である点を含む範囲が考えられる。このようにすれば、表示画面の隅に寄っている妖精は表示されない。また、近すぎる妖精や遠すぎる妖精も表示されない。応用例の説明を終える。
【０１２１】
ロボット１００の通信部１４２において妖精位置通知を受信すると、ロボット１００の仮想認識部１８２は、通知イベントを生成する（Ｓ１７）。生成された通知イベントは、図１１のイベントＩＤ：２で例示したようにイベントテーブルに追加される。このようにして、図６（ｂ）に示したように仮想空間に妖精が投入された状況となる。
【０１２２】
［妖精移動の実装］
続いて、妖精が移動する処理について説明する。図１５は、妖精が移動する処理過程を示すシーケンス図である。この例では、スマートフォン５００のアプリケーション５２０からの指示を受けて妖精位置が変更される。
【０１２３】
図６（ｂ）に示した状況において、スマートフォン５００の操作受付部５２２は、ユーザによる妖精移動の操作を受け付ける（Ｓ１９）。たとえば、スマートフォン５００のタッチパネルで、妖精を移動させるためのスライド操作を検出する。
【０１２４】
そして、スマートフォン５００の操作受付部５２２は、たとえばスマートフォン５００の姿勢、スライド方向及びスライド量に基づいて仮想空間における移動ベクトルを算出する（Ｓ２０）。
【０１２５】
スマートフォン５００の操作受付部５２２は、通信部５０６を介して、妖精移動指示をサーバ２００へ送信する（Ｓ２１）。妖精移動指示には、移動対象を特定する妖精ＩＤと仮想空間における移動ベクトルが含まれる。
【０１２６】
サーバ２００の通信部２０４において妖精移動指示を受信すると、妖精移動指示に含まれる移動ベクトルが、妖精ＩＤとともに仮想キャラクタ位置管理部２５２へ渡される。仮想キャラクタ位置管理部２５２は、妖精ＩＤで特定される妖精の仮想位置を変更する（Ｓ２２）。具体的には、現在の仮想位置に移動ベクトルを加えることによって、新たな仮想位置が算出される。
【０１２７】
サーバ２００の仮想キャラクタ情報提供部２５４は、通信部２０４を介して、妖精位置通知をスマートフォン５００へ送信するとともに（Ｓ２３）、ロボット１００へ同じ妖精位置通知を送信する（Ｓ２４）。妖精位置通知には、妖精ＩＤおよび妖精の仮想位置が含まれる。上述のとおり、家屋内にロボット１００が複数ある場合には、すべてのロボット１００に対して妖精位置通知を送信する。但し、妖精とロボット１００が対応付けられている場合には、対応付けられているロボット１００に対してのみ妖精位置通知を送信する。
【０１２８】
スマートフォン５００の通信部５０６において妖精位置通知を受信すると、スマートフォン５００のＡＲ表示処理部５２６は、妖精の仮想位置に基づいてＡＲ表示を行う（Ｓ２５）。
【０１２９】
ロボット１００の通信部１４２において妖精位置通知を受信すると、ロボット１００の仮想認識部１８２は、妖精位置通知イベントを生成する（Ｓ２６）。生成された妖精位置通知イベントは、イベントテーブルに追加される。このようにして、図６（ｃ）に示したように仮想空間における妖精が移動した状況となる。
【０１３０】
尚、上述した例ではスマートフォン５００が移動ベクトルを算出したが、サーバ２００において移動ベクトルを算出することもある。たとえば妖精が仮想空間を漂うようにするために、常時仮想キャラクタ処理部２５６が妖精を少しずつ移動させる。そのため、仮想キャラクタ処理部２５６は、たとえば乱数を用いて不規則な移動ベクトルを算出し、その移動ベクトルによって妖精位置を変更する処理を繰り返す。そして、図１５の場合と同様に、妖精位置を変更する都度、サーバ２００は妖精位置通知を送信し、スマートフォン５００においてＡＲ表示を行い、ロボット１００において妖精位置通知イベントを生成する。
【０１３１】
ここで、ロボット１００における処理の説明に移る。ロボット１００においてイベントが発生するとそれに応じて動作する。図１６のフローチャートは、ロボット１００における動作制御処理を示す。
【０１３２】
ロボット１００の動作制御部１５０は、常時イベントテーブルを監視し、未処理のイベントを１つずつ特定する（Ｓ２８）。未処理のイベントが複数ある場合には、先に発生したイベントが特定される。未処理のイベントがなければ、新たなイベントが発生するまで動作制御部１５０は待機する。
【０１３３】
ロボット１００の動作制御部１５０は、特定した未処理のイベントが妖精位置通知イベントであるか否かを判定する（Ｓ２９）。
【０１３４】
特定した未処理のイベントが妖精位置通知イベントでない場合には、端子Ａを介して図１８に示したＳ４３の処理に移る。
【０１３５】
一方、特定した未処理のイベントが妖精位置通知イベントである場合には、ロボット１００の動作制御部１５０は、妖精位置通知イベントが反応条件に該当するか否かを判定する（Ｓ３０）。反応条件は、モーションの契機となるイベントを特定する条件であって、モーション選択テーブルに予め設定されている。たとえば、妖精がロボット１００から離れた場合に、ロボット１００が妖精に近づくという仕様の場合には、通知された妖精位置が投射される現実位置とロボットの間の距離が所定値未満であることが反応条件となる。尚、妖精位置が投射される現実位置は、ロボット１００の位置変換部１９４が仮想空間から現実空間へ位置変換を行うことによって求められる。
【０１３６】
妖精位置通知イベントが反応条件に該当しないと判定した場合には、端子Ａを介して図１８に示したＳ４３の処理に移る。
【０１３７】
一方、妖精位置通知イベントが反応条件に該当すると判定した場合には、ロボット１００の動作制御部１５０は、妖精位置通知イベントを無視するか否かを判定する（Ｓ３１）。たとえば、ロボット１００の動作制御部１５０は、妖精ＩＤに対応する親密度やロボット１００の感情（寂しさ、好奇心、承認欲求、機嫌の良さなど）を示すさまざまな感情パラメータに基づいて判断する。たとえば、ロボット１００の動作制御部１５０は、妖精ＩＤに対応する親密度が基準値以上であれば無視せず、同じく親密度が基準値を下回れば無視する。あるいは、ロボット１００の動作制御部１５０は、寂しさを示す感情パラメータが基準値以下であれば無視せず、基準値を超えていれば無視してもよい。また、ロボット１００の動作制御部１５０は、機嫌の良さを示す感情パラメータが基準値以上であれば無視せず、基準値未満であれば無視してもよい。更に、親密度に基づく判断と感情パラメータに基づく判断を組み合わせてもよい。このようにすれば、ロボット１００のそのときどきの心理状態によって、ロボット１００の行動が異なるという演出的効果を奏する。
【０１３８】
妖精位置通知イベントを無視すると判定した場合には、端子Ａを介して図１８に示したＳ４３の処理に移る。
【０１３９】
一方、妖精位置通知イベントを無視しないと判定した場合には、ロボット１００の動作制御部１５０は、モーション選択テーブルに基づいて妖精位置通知イベントに応じたモーションを選択する（Ｓ３３）。このとき動作制御部１５０は、妖精に対する親密度に応じて、モーションを選択してもよい。たとえば、１つの反応条件に対して複数のモーションを対応付けておき、妖精に対する親密度に基づいていずれかのモーションを選択してもよい。例として、ロボット１００から大きく離れた妖精位置を示す妖精位置通知イベントが発生したときに、妖精に対する親密度が基準値以上であれば、ロボット１００は妖精の方へ速く進み、妖精に対する親密度が基準値未満であれば、ロボット１００は妖精の方へ遅く進むことが考えられる。
【０１４０】
また、１つの反応条件に対して複数のモーションを対応付けておき、ロボット１００の感情に基づいていずれかのモーションを選択してもよい。例として、ロボット１００が妖精から大きく離れたことを示す妖精位置通知イベントが発生したときに、ロボット１００の動作制御部１５０は、寂しさを示す感情パラメータが基準値を超えていれば妖精の方へ速く進むモーションを選択し、寂しさを示す感情パラメータが基準値以下であれば妖精の方へ遅く進むモーションを選択することが考えられる。また、ロボット１００の動作制御部１５０は、機嫌の良さを示す感情パラメータが基準値を超えていれば妖精の方へ速く進むモーションを選択し、機嫌の良さを示す感情パラメータが基準値以下であれば妖精の方へ遅く進むモーションを選択してもよい。更に、親密度に基づく判断と感情パラメータに基づく判断を組み合わせてもよい。このようにすれば、ロボット１００のそのときどきの心理状態によって、ロボット１００の行動が異なるという演出的効果を奏する。
【０１４１】
ロボット１００の動作制御部１５０は、選択したモーションの実行を駆動機構１２０に指示する（Ｓ３４）。そして、端子Ａを介して図１８に示したＳ４３の処理に移る。
【０１４２】
［妖精動作の実装］
続いて、妖精が踊りのような動作を行う処理について説明する。仮想キャラクタ処理部２５６が自発的に妖精の動作を開始させてもよいが、ここではスマートフォン５００からの指示に従って妖精が動作を開始する形態について説明する。
【０１４３】
図１７は、妖精が踊る処理過程を示すシーケンス図である。図７（ａ）に示した状況において、スマートフォン５００の操作受付部５２２は、ユーザによる動作指示の操作を受け付ける（Ｓ３６）。たとえば、ユーザがスマートフォン５００の画面に表示された動作リストにおいて動作種類を選択する。この例では、動作種類として踊りが選択されるものとする。単に踊りではなく、具体的な踊りの種類（たとえば、フラダンス）を選択してもよい。この場合には、動作種類として踊りの種類が特定される。
【０１４４】
スマートフォン５００の操作受付部５２２は、通信部５０６を介して、妖精動作指示をサーバ２００へ送信する（Ｓ３７）。妖精動作指示には、動作対象を特定する妖精ＩＤと動作種類が含まれる。
【０１４５】
サーバ２００の通信部２０４において妖精動作指示を受信すると、妖精ＩＤで特定される仮想キャラクタ処理部２５６が妖精の動作を開始させる（Ｓ３８）。具体的には、仮想キャラクタ処理部２５６が、状態パラメータとして動作種類を保持する。
【０１４６】
サーバ２００の仮想キャラクタ情報提供部２５４は、通信部２０４を介して、妖精動作通知をスマートフォン５００へ送信するとともに（Ｓ３９）、ロボット１００へ同じ妖精動作通知を送信する（Ｓ４０）。妖精動作通知には、妖精ＩＤおよび動作種類が含まれる。上述のとおり、家屋内にロボット１００が複数ある場合には、すべてのロボット１００に対して妖精動作通知を送信する。但し、妖精とロボット１００が対応付けられている場合には、対応付けられているロボット１００に対してのみ妖精動作通知を送信する。
【０１４７】
スマートフォン５００の通信部５０６において妖精動作通知を受信すると、スマートフォン５００のＡＲ表示処理部５２６は、動作する妖精をＡＲ画面に表示する（Ｓ４１）。この例では、踊る姿の妖精が表示される。
【０１４８】
ロボット１００の通信部１４２において妖精動作通知を受信すると、ロボット１００の仮想認識部１８２は、妖精動作通知イベントを生成する（Ｓ４２）。生成された妖精動作通知イベントは、イベントテーブルに追加される。このようにして、図７（ｂ）に示したように仮想空間における妖精が踊る状況となる。
【０１４９】
尚、アプリケーション５２０は、妖精を移動させたり、妖精に動作させたりせずに、単に妖精の投入を指示するだけのものであってもよい。
【０１５０】
妖精動作通知イベントが発生した場合のロボット１００における処理の説明に移る。図１８は、図１６に続く動作制御処理フローを示している。
ロボット１００の動作制御部１５０は、図１６のＳ２８で特定した未処理のイベントが妖精動作通知イベントであるか否かを判定する（Ｓ４３）。
【０１５１】
未処理のイベントが妖精動作通知イベントでない場合には、端子Ｂを介して図２０に示したＳ５４の処理に移る。
【０１５２】
一方、未処理のイベントが妖精動作通知イベントである場合には、ロボット１００の動作制御部１５０は、妖精動作通知イベントが反応条件に該当するか否かを判定する（Ｓ４４）。上述のとおり、反応条件は、モーションの契機となるイベントを特定する条件であって、モーション選択テーブルに予め設定されている。たとえば、妖精が踊っている場合に、ロボット１００も踊るという仕様の場合には、妖精動作通知に含まれる動作種類が「踊る」であることが反応条件となる。
【０１５３】
妖精動作通知イベントが反応条件に該当しないと判定した場合には、端子Ｂを介して図２０に示したＳ５４の処理に移る。
【０１５４】
一方、妖精動作通知イベントが反応条件に該当すると判定した場合には、ロボット１００の動作制御部１５０は、図１６のＳ３１に示した処理の場合と同様に、妖精動作通知イベントを無視するか否かを判定する（Ｓ４５）。
【０１５５】
妖精動作通知イベントを無視すると判定した場合には、端子Ｂを介して図２０に示したＳ５４の処理に移る。
【０１５６】
一方、妖精動作通知イベントを無視しないと判定した場合には、ロボット１００の動作制御部１５０は、モーション選択テーブルに基づいて妖精動作通知イベントに応じたモーションを選択する（Ｓ４６）。動作制御部１５０は、妖精に対する親密度に応じて、モーションを選択してもよい。たとえば、モーション選択テーブルにおいて１つの反応条件に対して複数のモーションを対応付けておき、動作制御部１５０は、妖精が踊っていることを示す妖精動作通知イベントが発生したときに、妖精に対する親密度が基準値以上であれば、激しく踊るモーションを選択し、妖精に対する親密度が基準値未満であれば、軽く踊るモーションを選択することが考えられる。
【０１５７】
また、１つの反応条件に対して複数のモーションを対応付けておき、ロボット１００の感情に基づいていずれかのモーションを選択してもよい。例として、妖精が踊っていることを示す妖精動作通知イベントが発生したときに、ロボット１００の動作制御部１５０は、寂しさを示す感情パラメータが基準値を超えていれば軽く踊るモーションを選択し、寂しさを示す感情パラメータが基準値以下であれば激しく踊るモーションを選択することが考えられる。また、ロボット１００の動作制御部１５０は、機嫌の良さを示す感情パラメータが基準値を超えていれば激しく踊るモーションを選択し、機嫌の良さを示す感情パラメータが基準値以下であれば軽く踊るモーションを選択してもよい。更に、親密度に基づく判断と感情パラメータに基づく判断を組み合わせてもよい。このようにすれば、ロボット１００のそのときどきの心理状態によって、ロボット１００の行動が異なるという演出的効果を奏する。
【０１５８】
ロボット１００の動作制御部１５０は、選択したモーションの実行を駆動機構１２０に指示する（Ｓ４７）。そして、端子Ｂを介して図２０に示したＳ５４の処理に移る。
【０１５９】
［命令転送の実装］
次に、妖精がロボット１００へ行動命令を転送する処理について説明する。図１９は、ロボット行動命令が転送される処理過程を示すシーケンス図である。
図１で説明したように、ユーザがロボット１００に何かの行動をさせようとする場合に、ロボット１００に直接命令するのではなく、妖精を介してロボット１００へ命令する。そのために、スマートフォン５００の操作受付部５２２は、ロボット行動命令を妖精に転送させるための指示操作を受け付ける（Ｓ４９）。たとえば、ユーザが、スマートフォン５００の画面に表示された行動命令リストにおいてロボット１００にさせたい行動の種類を選択することによって、ロボット行動命令を妖精に転送させる指示を行うようにする。この例における行動種類は、たとえば「ユーザへの接近」、「妖精への接近」、「踊る」あるいは「歌う」などである。
【０１６０】
スマートフォン５００の操作受付部５２２は、通信部５０６を介して、ロボット行動命令の転送指示をサーバ２００へ送信する（Ｓ５０）。ロボット行動命令の転送指示には、ロボット行動命令を転送する妖精のＩＤ、行動種類、パラメータが含まれる。行動種類がユーザへの接近である場合に、パラメータはユーザの現実位置である。パラメータの内容は、行動種類に依存する。
【０１６１】
サーバ２００の通信部２０４においてロボット行動命令の転送指示を受信すると、妖精ＩＤによって特定される仮想キャラクタ処理部２５６は、通信部２０４を介して、ロボット行動命令を転送する（Ｓ５１）。ロボット行動命令には、上述した妖精ＩＤ、行動種類及びパラメータが含まれる。Ｓ５１の処理の前に、仮想キャラクタ処理部２５６が命令転送の許否を判断してもよい。たとえば、前回命令転送を行ったタイミングから間もなければ、仮想キャラクタ処理部２５６は命令転送を拒否してもよい。
【０１６２】
ロボット１００の通信部１４２においてロボット行動命令を受信すると、ロボット１００の仮想認識部１８２は、ロボット行動命令イベントを生成する（Ｓ５２）。生成されたロボット行動命令イベントは、イベントテーブルに追加される。
【０１６３】
ロボット行動命令イベントが発生した場合のロボット１００における処理の説明に移る。図２０は、図１８に続く動作制御処理フローを示している。
ロボット１００の動作制御部１５０は、図１６のＳ２８で特定した未処理のイベントがロボット行動命令イベントであるか否かを判定する（Ｓ５４）。
【０１６４】
未処理のイベントがロボット行動命令イベントでない場合には、端子Ｃを介して図２１に示したＳ６１の処理に移る。
【０１６５】
一方、未処理のイベントがロボット行動命令イベントである場合には、ロボット１００の動作制御部１５０は、ロボット行動命令を承諾するか否かを判定する（Ｓ５５）。承諾は命令の許可を意味し、非承諾は命令の拒否を意味する。
【０１６６】
たとえば、ロボット１００の動作制御部１５０は、妖精ＩＤに対応する親密度やロボット１００の感情（寂しさ、好奇心、承認欲求、機嫌の良さなど）を示すさまざまな感情パラメータに基づいて判断する。たとえば、ロボット１００の動作制御部１５０は、妖精ＩＤに対応する親密度が基準値以上であれば承諾し、親密度が基準値を下回れば承諾しない。あるいは、ロボット１００の動作制御部１５０は、寂しさを示す感情パラメータが基準値以下であれば承諾し、基準値を超えていれば承諾しなくてもよい。また、ロボット１００の動作制御部１５０は、機嫌の良さを示す感情パラメータが基準値以上であれば承諾し、基準値未満であれば承諾しなくてもよい。更に、親密度に基づく判断と感情パラメータに基づく判断を組み合わせてもよい。このようにすれば、ロボット１００のそのときどきの心理状態によって、ロボット１００の行動が異なるという演出的効果を奏する。
【０１６７】
ロボット１００がロボット行動命令を承諾しない場合に、ロボット行動命令を承諾しない旨のメッセージをサーバ２００の仮想キャラクタ処理部２５６へ返してもよい。その場合、仮想キャラクタ処理部２５６は、ロボット１００からのメッセージをスマートフォン５００のアプリケーション５２０に転送してもよい。そして、スマートフォン５００のアプリケーション５２０は、ロボット１００からのメッセージを出力してもよい。
【０１６８】
ロボット行動命令を承諾する場合に、ロボット１００の動作制御部１５０は、ロボット行動命令イベントのパラメータに仮想位置が含まれるか否かを判定する（Ｓ５６）。ロボット行動命令イベントのパラメータに仮想位置が含まれない場合には、そのままＳ５８の処理に移る。一方、ロボット行動命令イベントのパラメータに仮想位置が含まれる場合には、ロボット１００の位置変換部１９４は、仮想位置を現実位置に変換する（Ｓ５７）。たとえば、「妖精への接近」というロボット行動命令イベントにおいて、妖精の仮想位置が妖精の現実位置に変換される。
【０１６９】
ロボット１００の動作制御部１５０は、モーション選択テーブルに基づいてロボット行動命令イベントに応じたモーションを選択する（Ｓ５８）。このとき動作制御部１５０は、妖精に対する親密度に応じて、モーションを選択してもよい。たとえば、モーション選択テーブルにおいて１つのロボット行動命令イベントに対して複数のモーションを対応付けておき、動作制御部１５０は、妖精に対する親密度に基づいていずれかのモーションを選択してもよい。例として、ユーザへの接近を命ずるロボット行動命令イベントが発生したときに、妖精に対する親密度が基準値以上であれば、ユーザの方へ速く移動するモーションを選択し、妖精に対する親密度が基準値未満であれば、ユーザの方へ遅く移動するモーションを選択することが考えられる。
【０１７０】
また、１つのロボット行動命令イベントに対して複数のモーションを対応付けておき、ロボット１００の感情に基づいていずれかのモーションを選択してもよい。例として、ユーザへの接近を命ずるロボット行動命令イベントが発生したときに、ロボット１００の動作制御部１５０は、寂しさを示す感情パラメータが基準値を超えていればユーザの方へ速く移動するモーションを選択し、寂しさを示す感情パラメータが基準値以下であればユーザの方へ遅く移動するモーションを選択することが考えられる。また、ロボット１００の動作制御部１５０は、機嫌の良さを示す感情パラメータが基準値を超えていればユーザの方へ速く移動するモーションを選択し、機嫌の良さを示す感情パラメータが基準値以下であればユーザの方へ遅く移動するモーションを選択してもよい。更に、親密度に基づく判断と感情パラメータに基づく判断を組み合わせてもよい。このようにすれば、ロボット１００のそのときどきの心理状態によって、ロボット１００の行動が異なるという演出的効果を奏する。
【０１７１】
ロボット１００の動作制御部１５０は、選択したモーションの実行を駆動機構１２０に指示する（Ｓ５９）。たとえば、行動種別がユーザへの接近であれば、駆動機構１２０はユーザの現実位置の方へ移動するためのモーションを行う。行動種別が踊るであれば、小刻みな回転や移動を組み合わせたモーションを行う。そして、端子Ｃを介して図２１に示したＳ６１の処理に移る。
【０１７２】
［環境イベントによる処理］
続いて、環境イベントが発生した場合の処理について説明する。図２１は、図２０の動作制御処理の続きを示すフローチャートである。
ロボット１００の動作制御部１５０は、図１６のＳ２８で特定した未処理のイベントが環境イベントであるか否かを判定する（Ｓ６１）。
【０１７３】
未処理のイベントが環境イベントでないと判定した場合には、Ｓ６６の処理に戻る。一方、未処理のイベントが環境イベントであると判定した場合には、ロボット１００の動作制御部１５０は、環境イベントが反応条件に該当するか否かを判定する（Ｓ６２）。上述のとおり、反応条件は、モーションの契機となるイベントを特定する条件であって、モーション選択テーブルに予め設定されている。たとえば、気温が高いときにロボット１００が「冷房つけて」と発声するという仕様の場合には、環境イベントの事象種類が「大変暑い」であることが反応条件となる。
【０１７４】
環境イベントが反応条件に該当しないと判定した場合には、Ｓ６６の処理に移る。一方、環境イベントが反応条件に該当すると判定した場合には、ロボット１００の動作制御部１５０は、図１６に示したＳ３１の処理の場合と同様に、環境イベントを無視するか否かを判定する（Ｓ６３）。
【０１７５】
環境イベントを無視すると判定した場合には、Ｓ６６の処理に戻る。一方、環境イベントを無視しないと判定した場合には、ロボット１００の動作制御部１５０は、モーション選択テーブルに基づいて環境イベントに応じたモーションを選択する（Ｓ６４）。
【０１７６】
ロボット１００の動作制御部１５０は、モーションの実行を駆動機構１２０に指示する（Ｓ６５）。モーションの実行を終えた段階で、ロボット１００の動作制御部１５０は、実行完了メッセージをサーバ２００の仮想キャラクタ処理部２５６へ送ってもよい。その場合、サーバ２００の仮想キャラクタ処理部２５６は、実行完了メッセージをスマートフォン５００へ転送してもよい。そして、スマートフォン５００のアプリケーション５２０は、実行完了メッセージを出力してもよい。
【０１７７】
さらに、スマートフォン５００が実行完了メッセージを出力した場合に、アプリケーション５２０において、ユーザから「ありがとう」という感謝メッセージを受け付けるようにしてもよい。そして、アプリケーション５２０は、感謝メッセージをサーバ２００の仮想キャラクタ処理部２５６へ送信してもよい。これを受けて、サーバ２００の仮想キャラクタ処理部２５６は、感謝メッセージをロボット１００へ転送してもよい。
【０１７８】
ロボット１００の交信データ入力部１８８が感謝メッセージを取得した場合に、仮想認識部１８２はユーザによる快行為であると認識してもよい。そして、このように仮想認識部１８２において快行為が検出されたとき、親密度管理部１９０は、ユーザに対する親密度を高めてもよい。さらに、親密度管理部１９０は、そのとき仮想空間にいる妖精に対する親密度を高めてもよい。加えて、感情管理部１９２は、たとえば機嫌の良さを示す感情パラメータを高めてもよい。
【０１７９】
図２１の説明に戻る。モーションの実行を指示すると、図１６のＳ２８で特定したイベントの完了フラグをＯＦＦにする（Ｓ６６）。そして、図１６のＳ２８に戻って、次のイベントを特定する。
【０１８０】
［妖精視認の応用］
続いて、ユーザによる妖精の視認を所定処理の契機とする応用例について説明する。ここでは、ユーザがスマートフォン５００をかざして妖精を視認しているときにデータの移動が行われるように、ロボットシステム３００が動作する例を示す。
【０１８１】
ロボット１００が写真データをＳＮＳサーバに投稿しようとする場合を想定する。このような状況で、ユーザがスマートフォン５００におけるＡＲ表示で妖精を確認すると、データを運ぶ姿の妖精が映し出されるとともに、データ送信が開始される。つまり、データを運ぶ姿の妖精をユーザが視認することがデータ送信のトリガーイベントとなるようにして、データ送信を視覚化する。このようにすれば、ユーザが知らない間にデータが送信されるのではないかという不安を払拭し、ユーザに安心感を与えることができる。
【０１８２】
以下では、データ移動に関する３つの例を説明する。いずれの例でも、ユーザが妖精を視認していないときには、データを移動させないまま待機し、ユーザが妖精を視認してからデータを移動する。この例では、妖精がＡＲ表示されている状態であれば、ユーザが妖精を視認しているものとみなす。あるいは、妖精がＡＲ表示されると同時に、スマートフォン５００の表示面側のカメラ５１０で撮影された画像にユーザの顔が写っている場合に、ユーザが妖精を視認しているものと判断してもよい。
【０１８３】
１番目に、スマートフォン５００においてデータ移動処理を行う例について説明する。図２２は、スマートフォン５００におけるデータ移動処理に関するフローチャートである。
スマートフォン５００のデータ移動部５２８は、データ移動のイベントが発生したか否かを判定する（Ｓ６８）。たとえば、スマートフォン５００のカメラ５１０によって撮影されたロボット１００の写真がＳＮＳサーバへ自動投稿されるタイミングで、データ移動のイベントが発生する。この例の場合、移動対象データ格納部５３０に格納される移動対象データは、スマートフォン５００のカメラ５１０によって撮影された写真データである。
【０１８４】
データ移動のイベントが発生していないと判定した場合には、Ｓ６８の処理を繰り返す。一方、データ移動のイベントが発生したと判定した場合には、スマートフォン５００のＡＲ表示処理部５２６は、妖精がＡＲ画面内に表示されているか否かを判定する（Ｓ６９）。
【０１８５】
妖精がＡＲ画面内に表示されていないと判定した場合には、Ｓ６９の処理を繰り返す。したがって、妖精が表示されなければ、待機を続けることになる。一方、妖精がＡＲ画面内に表示されていると判定した場合には、スマートフォン５００のデータ移動部５２８はデータ移動処理を開始し（Ｓ７１）、スマートフォン５００のＡＲ表示処理部５２６は、データを運搬している姿の妖精を表すグラフィック画像をＡＲ画面に表示させる（Ｓ７０）。表示される妖精を、データ運搬中を表す姿に変更することによって、データ転送が行われていることをユーザが認識できる。
【０１８６】
その後、スマートフォン５００のデータ移動部５２８は、データ移動処理が完了したか否かを判定する（Ｓ７２）。データ移動処理が完了していない場合には、Ｓ７２の処理を繰り返して、データ移動処理の完了を待つ。データ移動処理が完了すると、スマートフォン５００のＡＲ表示処理部５２６は、元の姿の妖精を表示する（Ｓ７３）。つまり、何もしていないときの妖精のグラフィック画像が表示される。元の姿を表すグラフィック画像に戻すことによって、データ転送が終わったことをユーザが認識できる。
【０１８７】
たとえばＳＮＳへの自動投稿プログラムが停止した場合に、図２２に示したルーチンは終了する（Ｓ７４のＹＥＳルート）。一方、自動投稿プログラムが停止していない場合には、次の投稿動作に備えて、Ｓ６８の処理に戻って上述した処理を繰り返す（Ｓ７４のＮＯルート）。
【０１８８】
２番目に、サーバ２００においてデータ移動処理を行う例について説明する。図２３は、サーバ２００におけるデータ移動処理に関するシーケンス図である。
サーバ２００のデータ移動部２４６は、データ移動のイベントが発生したか否かを判定する。たとえば、写真データがサーバ２００からＳＮＳサーバへ自動投稿されるタイミングで、データ移動のイベントが発生する。前提として、ロボット１００のカメラで撮影された写真データが、サーバ２００に転送され、サーバ２００のデータ格納部２０６に格納されているものとする。
【０１８９】
データ移動のイベントが発生したと判定すると（Ｓ７６）、サーバ２００のデータ移動部２４６は、妖精の表示状況に関する問い合わせをスマートフォン５００へ送信する（Ｓ７７）。問い合わせには、表示の成否が問われる妖精を特定する妖精ＩＤが付加される。
【０１９０】
スマートフォン５００の通信部５０６において妖精の表示状況に関する問い合わせを受信すると、スマートフォン５００のＡＲ表示処理部５２６は、妖精がＡＲ画面内に表示されているか否かを判定する。スマートフォン５００のＡＲ表示処理部５２６によって妖精が表示されていないと判定した場合には、妖精が「非表示」であることを示す表示状況が、スマートフォン５００の通信部５０６からサーバ２００へ送信される。
【０１９１】
サーバ２００の通信部２０４において「非表示」の表示状況を受信すると、サーバ２００のデータ移動部２４６によって、妖精の表示状況に関する問い合わせの送信が繰り返される。スマートフォン５００も、上述の処理を繰り返す。したがって、妖精が表示されなければ、待機を続けることになる。
【０１９２】
一方、スマートフォン５００のＡＲ表示処理部５２６によって妖精が表示されていると判定した場合には（Ｓ７８）、妖精が「表示中」であることを示す表示状況がサーバ２００へ送信される（Ｓ７９）。
【０１９３】
サーバ２００の通信部２０４において「表示中」を示す表示状況を受信すると、サーバ２００のデータ移動部２４６は、データ移動処理を実行する（Ｓ８０）。たとえば、ＳＮＳへ記事が投稿される。そして、サーバ２００のデータ移動部２４６は、データ移動の開始通知をスマートフォン５００へ送信する（Ｓ８１）。データ移動の開始通知には、妖精ＩＤが含まれる。
【０１９４】
スマートフォン５００の通信部５０６においてデータ移動の開始通知を受信すると、スマートフォン５００のＡＲ表示処理部５２６は、データを運搬している姿の妖精を表すグラフィック画像をＡＲ画面に表示させる（Ｓ８２）。データ運搬中を表すグラフィック画像に変更することによって、データ転送が行われていることをユーザが認識しやすくなる。
【０１９５】
その後、サーバ２００におけるデータ移動処理が完了すると、サーバ２００のデータ移動部２４６は、データ移動の完了通知をスマートフォン５００へ送信する（Ｓ８３）。データ移動の完了通知には、妖精ＩＤが含まれる。
【０１９６】
スマートフォン５００の通信部５０６においてデータ移動の完了通知を受信すると、スマートフォン５００のＡＲ表示処理部５２６は、元の姿の妖精を表すグラフィック画像をＡＲ画面に表示させる（Ｓ８４）。つまり、何もしていないときの妖精のグラフィック画像が表示される。元の姿を表すグラフィック画像に戻すことによって、データ転送が終わったことをユーザが認識しやすくなる。
【０１９７】
３番目に、ロボット１００においてデータ移動処理を行う例について説明する。図２４は、ロボット１００におけるデータ移動処理に関するシーケンス図である。
ロボット１００のデータ移動部１８４は、データ移動のイベントが発生したか否かを判定する。たとえば、ロボット１００のカメラで撮影された写真データがロボット１００からＳＮＳサーバへ自動投稿されるタイミングで、データ移動のイベントが発生する。写真データは、事前に撮影されたものであってもよいし、データ移動のタイミングで撮影されたものであってもよい。
【０１９８】
データ移動のイベントが発生したと判定すると（Ｓ８６）、ロボット１００のデータ移動部１８４は、妖精の表示状況に関する問い合わせをサーバ２００へ送信する（Ｓ８７）。この問い合わせには、表示の成否が問われる妖精を特定する妖精ＩＤが含まれる。
【０１９９】
サーバ２００の通信部２０４において妖精の表示状況に関する問い合わせを受信すると、仮想キャラクタ処理部２５６は、この問い合わせをスマートフォン５００へ転送する（Ｓ８８）。
【０２００】
スマートフォン５００の通信部５０６において妖精の表示状況に関する問い合わせを受信すると、スマートフォン５００のＡＲ表示処理部５２６は、妖精ＩＤに係る妖精がＡＲ画面内に表示されているか否かを判定する。ＡＲ表示処理部５２６によって妖精が表示されていないと判定した場合には、妖精が「非表示」であることを示す表示状況が、スマートフォン５００の通信部５０６からサーバ２００へ送信される。
【０２０１】
サーバ２００の通信部２０４において「非表示」の表示状況を受信すると、サーバ２００のデータ移動部２４６によって、妖精の表示状況に関する問い合わせの送信が繰り返される。スマートフォン５００も、上述の処理を繰り返す。したがって、妖精が表示されなければ、待機を続けることになる。
【０２０２】
一方、スマートフォン５００のＡＲ表示処理部５２６によって妖精が表示されていると判定した場合には（Ｓ８９）、妖精が「表示中」であることを示す表示状況がサーバ２００へ送信される（Ｓ９０）。
【０２０３】
サーバ２００の通信部２０４において「表示中」を示す表示状況を受信すると、サーバ２００の仮想キャラクタ処理部２５６は、通信部２０４を介して、「表示中」を示す表示状況をロボット１００へ転送する（Ｓ９１）。
【０２０４】
ロボット１００の通信部１４２において「表示中」を示す表示状況を受信すると、ロボット１００のデータ移動部１８４は、データ移動処理を実行する（Ｓ９２）。たとえば、写真データがＳＮＳサーバへアップロードされる。端子Ｅ、ＦおよびＧを介して図２５に示したシーケンスへ移る。
【０２０５】
データ移動処理が始まると、ロボット１００の通信部１４２は、データ移動の開始通知をサーバ２００へ送信する（Ｓ９３）。データ移動の開始通知には、妖精ＩＤが含まれる。
【０２０６】
サーバ２００の通信部２０４においてデータ移動の開始通知を受信すると、サーバ２００の仮想キャラクタ処理部２５６は、通信部２０４を介して、データ移動の開始通知をスマートフォン５００へ転送する（Ｓ９４）。
【０２０７】
スマートフォン５００の通信部５０６においてデータ移動の開始通知を受信すると、スマートフォン５００のＡＲ表示処理部５２６は、データを運搬している姿の妖精を表すグラフィック画像をＡＲ画面に表示させる（Ｓ９５）。データ運搬中を表すグラフィック画像に変更することによって、データ転送が行われていることをユーザが認識しやすくなる。
【０２０８】
その後、ロボット１００におけるデータ移動処理が完了すると、ロボット１００の通信部１４２は、データ移動の完了通知をサーバ２００へ送信する（Ｓ９６）。データ移動の完了通知には、妖精ＩＤが含まれる。
【０２０９】
サーバ２００の通信部２０４においてデータ移動の完了通知を受信すると、サーバ２００の仮想キャラクタ処理部２５６は、通信部２０４を介して、データ移動の完了通知をスマートフォン５００へ転送する（Ｓ９７）。
【０２１０】
スマートフォン５００の通信部５０６においてデータ移動の完了通知を受信すると、スマートフォン５００のＡＲ表示処理部５２６は、元の姿の妖精を表すグラフィック画像をＡＲ画面に表示させる（Ｓ９８）。つまり、何もしていないときの妖精のグラフィック画像が表示される。元の姿を表すグラフィック画像に戻すことによって、データ転送が終わったことをユーザが認識しやすくなる。
【０２１１】
このように、ユーザが妖精を視認してからデータ移動が始まるようにすれば、ユーザの知らないうちにデータの移動が終わっているという事態を回避できる。また、データ運搬中の姿で妖精を表示すれば、データが移動していることを感覚的に捉えやすくなる。妖精を視認するためにスマートフォン５００をかざす行為は楽しく、「妖精を見つけたおかげで、妖精にデータを運ぶという仕事をさせることができた」と感じさせるので、ユーザを飽きさせないという面もある。
【０２１２】
［その他の態様］
その他の態様として、家屋内にユーザがいない場合に、自動的に妖精が投入されるようにしてもよい。例えば、サーバ２００の認識部２１２によって無人状態が所定時間以上続いたと認識した場合に、仮想キャラクタ投入部２５０が自動的に妖精処理を起動するように制御する。このようにすれば、ロボット１００がモーションを起こす契機を絶やさないようにできる。
【０２１３】
その他の態様として、妖精が室内に流れる音楽に気づいてロボット１００に踊りを促すことによって、ロボット１００が音楽にあわせて踊りだすという仕様も考えられる。具体的には、スマートフォン５００に搭載されている音楽検知ソフトが、マイクロフォンで入力した音データによって音楽を検知すると、音楽検知結果を仮想キャラクタ処理部２５６に渡す。仮想キャラクタ処理部２５６は、音楽通知をロボット１００に転送する。ロボット１００は、音楽通知を受信すると、音楽通知イベントを生成し、音楽通知イベントの発生によって踊るモーションを選択して実行する。
【０２１４】
尚、ユーザがスマートフォン５００を操作して妖精の回収を指示すれば、サーバ２００はその妖精に対応する仮想キャラクタ処理部２５６の処理を停止させ、その仮想キャラクタ処理部２５６を消滅させる。また、仮想キャラクタ処理部２５６が設定されてから所定時間が経過すると、その仮想キャラクタ処理部２５６が処理を終え、自ら消滅するようにしてもよい。
【０２１５】
なお、本発明は上記実施形態や変形例に限定されるものではなく、要旨を逸脱しない範囲で構成要素を変形して具体化することができる。上記実施形態や変形例に開示されている複数の構成要素を適宜組み合わせることにより種々の発明を形成してもよい。また、上記実施形態や変形例に示される全構成要素からいくつかの構成要素を削除してもよい。
【０２１６】
１つのロボット１００と１つのサーバ２００、複数の外部センサ１１４によりロボットシステム３００が構成されるとして説明したが、ロボット１００の機能の一部はサーバ２００により実現されてもよいし、サーバ２００の機能の一部または全部がロボット１００に割り当てられてもよい。１つのサーバ２００が複数のロボット１００をコントロールしてもよいし、複数のサーバ２００が協働して１以上のロボット１００をコントロールしてもよい。
【０２１７】
ロボット１００やサーバ２００以外の第３の装置が、機能の一部を担ってもよい。図９において説明したロボット１００の各機能とサーバ２００の各機能の集合体は大局的には１つの「ロボット」として把握することも可能である。１つまたは複数のハードウェアに対して、本発明を実現するために必要な複数の機能をどのように配分するかは、各ハードウェアの処理能力やロボットシステム３００に求められる仕様等に鑑みて決定されればよい。
【０２１８】
上述したように、「狭義におけるロボット」とはサーバ２００を含まないロボット１００のことであるが、「広義におけるロボット」はロボットシステム３００のことである。サーバ２００の機能の多くは、将来的にはロボット１００に統合されていく可能性も考えられる。
【０２１９】
ロボット１００の行動制御プログラムは、所定のサーバからインターネットを介して提供されてもよいし、ＣＤ−ＲＯＭなどの固定の記録媒体により提供されてもよい。
いずれにしてもロボット１００の行動制御プログラムは、ロボット１００とは異なる記録媒体（サーバ、ＣＤ−ＲＯＭなど）から提供されることにより、ロボット１００にインストールされてもよい。
【０２２０】
仮想キャラクタは、妖精などの親密度が高いキャラクタだけでなく、恐竜や怪物などロボット１００が嫌う対象であってもよい。ロボット１００が嫌う対象（「嫌悪キャラクタ」という）には、親密度が妖精などより低く設定される。これにより、嫌悪キャラクタが仮想空間に投入されると、ロボット１００は嫌悪キャラクタから逃げるように振る舞う。
【０２２１】
また、仮想キャラクタは、妖精などの移動できるキャラクタではなく、料理や衣装などの移動できない物を表現したアイテムであってもよい。アイテム毎に、影響を及ぼす内部パラメータが定義されてよい。例えば、料理や衣装などの嗜好アイテムは好奇心のパラメータに影響を与え、好奇心を高める。この結果、嗜好アイテムが仮想空間に投入されると、ロボット１００はそのアイテムに近づく。また、雷などの嫌悪アイテムは、不安感のパラメータに影響を与え、不安な気持ちを増大させる。この結果、嫌悪アイテムが仮想空間に投入されるとロボット１００は、そのアイテムから離れる。
【０２２２】
嗜好アイテムと嫌悪アイテムとを同時に投入してもよく、この場合は、ロボット１００は遠く離れた場所から注視するような振る舞いをする。このように、仮想キャラクタとして、様々なアイテムを加えることで、多様な制御ができる。
【０２２３】
仮想キャラクタにより一時的に機能が追加されるとしたが、追加される機能はいろいろとあってよい。例えば、花を見つける妖精が仮想キャラクタとして投入されると、ロボット１００は花に対する物体認識力が高まり、その妖精が投入されていないときより花を見つけやすくなる。
【０２２４】
また、火の妖精と水の妖精を投入し、あるロボット１００には火の妖精を関連付け、別のロボット１００には水の妖精を関連付ける。火の妖精が関連付けられたロボット１００は、火を使った攻撃ができるようになり、水の妖精が関連付けられたロボット１００は、水を使った攻撃ができるようになる。そして、火の妖精が関連付けられたロボット１００と水の妖精が関連付けられたロボット１００とが、それぞれの攻撃方法で戦うといったゲーム要素の強い実施形態も実現できる。
【０２２５】
本実施形態におけるロボット１００は、妖精を介して取得した行動命令に従うので、自律的に行動するロボットというコンセプトを尊重しつつ、緩やかな他律性を導入することができる。また、ロボット１００が、妖精とコミュニケーションを図るという特殊な認知能力を備えているという想定で、ユーザに幻想的な楽しみを与えることができるという面もある。
【０２２６】
また、ロボット１００は、妖精の位置に基づいて自律的にモーションを実行するので、妖精との位置関係に基づく自主的な振る舞いを演出できる。
【０２２７】
また、ロボット１００は、妖精の位置へ向って移動するので、ロボット１００が妖精を慕う様子を表現できる。妖精の位置を間接的にユーザにわからせることができる面もある。
【０２２８】
また、ロボット１００は、妖精の動作に基づいて自律的にモーションを実行するので、妖精の動きに応じる自主的な振る舞いを演出できる。
【０２２９】
また、ロボット１００は、妖精の動作を真似るので、ロボット１００が妖精に抱く共感を表現できる。妖精の動作を間接的にユーザにわからせることができる面もある。
【０２３０】
また、現実入力系によるイベントと仮想入力系によるイベントを同じ系統で扱うので、入力系の違いによるイベント取り扱いの差異を解消し、現実空間と仮想空間を融合した世界観を円滑に表現できる。
【０２３１】
また、妖精に対する親密度に応じてモーションを決定するので、緩やかな他律性を実現できる。
【０２３２】
また、妖精に従った後の状況に応じて妖精に対する親密度を調整するので、ロボット１００は妖精に対する信頼性を築きやすい。
【０２３３】
また、ロボット１００の感情に応じてモーションを決定するので、緩やかな他律性を実現できる。
【０２３４】
また、妖精に従った後の状況に応じてロボット１００の感情を調整するので、妖精に対する柔軟な従順性を築きやすい。
【符号の説明】
【０２３５】
１００  ロボット、１０２  前輪、１０２ａ  左輪、１０２ｂ  右輪、１０３  後輪、１０４  ボディ、１０６  手、１０８  着座面、１１０  目、１１２  ツノ、１１４  外部センサ、１１８  バッテリー、１２０  駆動機構、１２２  プロセッサ、１２４  記憶装置、１２６  通信機、１２８  内部センサ、１３０  電源線、１３２  信号線、１３４  ワイヤ、１３６  データ処理部、１４２  通信部、１４８  データ格納部、１５０  動作制御部、１５２  計測データ入力部、１５４  現実認識部、１６０  モーション格納部、１６２  イベントテーブル格納部、１６４  親密度格納部、１６６  感情格納部、１６８  マップ格納部、１７０  現実入力系、１７２  仮想Ｉ／Ｆ系、１７４  ロボット制御系、１７６  仮想入力系、１７８  仮想出力系、１８２  仮想認識部、１８４  データ移動部、１８６  交信データ出力部、１８８  交信データ入力部、１９０  親密度管理部、１９２  感情管理部、１９４  位置変換部、２００  サーバ、２０２  データ処理部、２０４  通信部、２０６  データ格納部、２０８  位置管理部、２１２  認識部、２１８  個人データ格納部、２２０  親密度管理部、２２２  動作制御部、２３２  モーション格納部、２４４  状態管理部、２４６  データ移動部、２５０  仮想キャラクタ投入部、２５２  仮想キャラクタ位置管理部、２５４  仮想キャラクタ情報提供部、２５６  仮想キャラクタ処理部、２６０  仮想キャラクタプログラム格納部、２６２  仮想キャラクタデータ格納部、３００  ロボットシステム、３０８  ベースフレーム、３１０  本体フレーム、３１２  ホイールカバー、３１４  外皮、３１６  頭部フレーム、３１８  胴部フレーム、３２０  ヨー軸、３２２  ピッチ軸、３２４  ロール軸、３２５  プレート、３２６  アクチュエータ、３２７  通気孔、３２８  ベースプレート、３２９  クロスリンク機構、３３０  ジョイント、３３２  アッパープレート、３３４  ロアプレート、３３６  サイドプレート、３４２  制御回路、３７０  車輪駆動機構、３７８  回動軸、３７９  アクチュエータ、３９０  開口部、４４０  妖精データ、５００  スマートフォン、５０２  内部センサ、５０４  データ処理部、５０６  通信部、５０８  データ格納部、５１０  カメラ、５２０  アプリケーション、５２２  操作受付部、５２４  命令出力部、５２６  ＡＲ表示処理部、５２８  データ移動部、５３０  移動対象データ格納部
【図１】
2020000279.tif 000003
【図２】
2020000279.tif 000004
【図３】
2020000279.tif 000005
【図４】
2020000279.tif 000006
【図５】
2020000279.tif 000007
【図６】
2020000279.tif 000008
【図７】
2020000279.tif 000009
【図８】
2020000279.tif 000010
【図９】
2020000279.tif 000011
【図１０】
2020000279.tif 000012
【図１１】
2020000279.tif 000013
【図１２】
2020000279.tif 000014
【図１３】
2020000279.tif 000015
【図１４】
2020000279.tif 000016
【図１５】
2020000279.tif 000017
【図１６】
2020000279.tif 000018
【図１７】
2020000279.tif 000019
【図１８】
2020000279.tif 000020
【図１９】
2020000279.tif 000021
【図２０】
2020000279.tif 000022
【図２１】
2020000279.tif 000023
【図２２】
2020000279.tif 000024
【図２３】
2020000279.tif 000025
【図２４】
2020000279.tif 000026
【図２５】
2020000279.tif 000027