(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
図1は、実施例のエンターテインメントシステム1の概略構成を示す。エンターテインメントシステム1は、ロボット装置20と、ロボット装置20が参加する仮想世界を構築するサーバ装置10と、ロボット装置20が参加する仮想世界をディスプレイに表示する端末装置12とを備える。サーバ装置10、端末装置12、ロボット装置20は、それぞれ情報処理装置として構成されてよい。ロボット装置20および端末装置12は、アクセスポイント(AP)3を介して、インターネットなどのネットワーク2経由でサーバ装置10と通信可能に接続する。
【0011】
ロボット装置20は、たとえば人型ロボットとして構成されて、ユーザにより所有される。ロボット装置20はオーナであるユーザを、画像解析による顔認証や音声解析による声紋認証などによって認識できることが好ましい。ロボット装置20がオーナを認識することで、たとえばオーナからの指示のみを受け付け、他人からの指示を受け付けないように行動できる。ロボット装置20は人間と同じような部位を持ち、各部位の繋ぎ部分には、アクチュエータを搭載した関節部分が設けられる。ロボット装置20はアクチュエータを駆動することで姿勢のバランスを保ちつつ、様々な機能を実行する。
【0012】
ロボット装置20は、歩いたり、走ったりするなどの基本機能については、各アクチュエータの制御手法を記述したプログラムモジュール、つまり制御態様を事前にインストールされている。またロボット装置20は、サーバ装置10などの外部装置から、新しい機能を実行するためのプログラムモジュールをダウンロードしてインストールすることで、新しい機能を獲得できる。
【0013】
実施例のロボット装置20は学習することで、基本機能を含む既存機能を改良したり、また、これまでできなかった新しい機能を獲得できるようになる。たとえば「走る」という基本機能に関して関節部分の各アクチュエータの制御態様が事前にインストールされているが、ユーザが「速く走る」ためのコツをコーチングすると、ロボット装置20がコーチングされた内容にしたがって、基本機能よりも「速く走る」機能を獲得することを目的とした学習を行う。このときロボット装置20は「走る」基本機能を実行するための制御態様を改良することで、「速く走る」機能を実現するための制御態様を導出し、「速く走る」機能を獲得していく。なお基本機能の制御態様の改良により「速く走る」機能を獲得できなければ、ロボット装置20は、基本機能の制御態様を無視して、すなわち「走る」機能のプログラムモジュールを利用することなく、「速く走る」ための制御態様を一から学習により求めてもよい。
【0014】
図1には、1台のロボット装置20しか示していないが、実施例では、複数台の同じスペックのロボット装置20がエンターテインメントシステム1に参加することを想定している。たとえばプリセットされた「走る」機能により、ユーザのロボット装置20が1メートル(m)を約2秒で走ることができる場合、他の同一スペックのロボット装置20も同じく1mを約2秒で走るように構成されている。
【0015】
エンターテインメントシステム1において、自分のロボット装置20を、より速く走らせようと思うユーザは、ロボット装置20に速く走るための走り方(コツ)を指導する。実施例では基本機能を改良したり、また新しい機能を覚えさせるようにするためのユーザによる指導を「コーチング」と呼ぶ。ロボット装置20は様々な動作モードをもち、「コーチングモード」に入ることで、ユーザからコーチングを受けられ、「学習モード」に入ることで、受けたコーチング内容にしたがって機械学習を行う。
【0016】
たとえばユーザから「今よりも速く走れるようになる」とするミッション(タスク)を与えられた場合、ロボット装置20は、1mを2秒未満で走れるようになれば、ミッション達成となる。ロボット装置20は、1mを2秒未満で走ることができたときの各アクチュエータの制御態様を記録して、学習を終了してよい。
【0017】
しかしながら、ユーザから「1mを1.5秒以下で走れるようになる」とするミッションを与えられた場合、ユーザによるコーチングが適切であったとしても、ミッション難易度が高いために、必ずしもミッションを達成できるとは限らない。なおユーザによるコーチングが適切でない場合には、コーチング内容を反映した機械学習を行っても、逆にタイムが遅くなることもある。このようにロボット装置20は、与えられたミッションを達成できるように試行錯誤を繰り返すが、たとえば試行上限回数内にミッションを達成できなかった場合には、ユーザにその旨を知らせることが好ましい。ユーザは通知を受けることで、コーチング内容を変更する契機を得る。
【0018】
ロボット装置20が基本機能の性能向上に成功すると、ユーザは、自分のロボット装置20を、他のユーザのロボット装置20と競わせたくなる。たとえばエンターテインメントシステム1の運営者が体育館などのスペースを借りて、ロボットによる「5メートル走」の大会を開催すれば、ユーザはロボット装置20を会場に持ち込んで、5メートル走大会に参加させられる。複数のロボット装置20はスタートラインに並べられて、スタートの合図で5m先のゴールに向けて一斉にスタートする。スタートの合図は「ヨーイドン」のかけ声によって行われてもよい。たとえばユーザがロボット装置20のスタートスイッチを手動で、または無線で操作することで、ロボット装置20が走り出してよい。このとき「走る」機能に最適な改良が加えられたロボット装置20が、どのロボットよりも速くゴールし、そのユーザは栄冠を手にする。
【0019】
このような大会は、学習の成果を試すための絶好の機会であり、勝ち負けがついてくるために、ユーザのコーチングに対するモチベーションが高められる。しかしながら会場から遠い場所に住んでいるユーザにとっては、会場までロボット装置20を持ち運ぶことは大変であり、手軽に参加できるとは言い難い。
【0020】
そこでエンターテインメントシステム1では、サーバ装置10が、複数のロボット装置20が競技を行うための仮想的な競技場を提供する。この仮想的な競技場では、それぞれのユーザおよびロボット装置20が、自宅にいながらにして競技大会に参加できる。仮想的な競技場の一つの例は、ロボットが「5メートル走」の大会を実施するための会場である。サーバ装置10は、スタートラインと、スタートラインから5m先のゴールラインと、各ロボットの走行レーンを地表に描いた3次元の競技場を用意し、参加する各ロボット装置20のCG(computer graphics:コンピュータグラフィックス)モデルをスタートラインに並べる。以下、ロボット装置20のCGモデルを、「仮想ロボット」と呼ぶこともある。競技場の様子を示す画像データは、サーバ装置10から端末装置12に配信され、ユーザは、端末装置12のディスプレイを通じて、自分のロボット装置20がスタートラインについている様子を見ることができる。
【0021】
各ユーザは、それぞれの自宅で、ロボット装置20が5m走れるスペースを確保し、サーバ装置10から提供されるスタートの合図を待機する。なおロボット装置20の走りは、接地面(床面)の影響を受ける。そのため、公平を期すべく5mレース用マットが販売されて、各ユーザは、マット上でロボット装置20を走らせることがルール化されてもよい。
【0022】
ユーザは、端末装置12からスタートの合図、この例では「ヨーイドン」のかけ声を聞くと、ロボット装置20のスタートスイッチを手動で、またはリモートコントローラで操作して、ロボット装置20を走り出させる。リモートコントローラの機能は、端末装置12により実現されてもよい。なお、スタートの合図は、サーバ装置10からロボット装置20に直接供給されて、ロボット装置20が、サーバ装置10から合図を受けると、自動的に走り出すようにプログラミングされていてもよい。
【0023】
各ロボット装置20の走っている状態を示す動作データは、ロボット装置20または端末装置12からサーバ装置10にリアルタイムで送信される。走っている状態を示す動作データは、加速度センサやジャイロセンサなどの検出データを含んでよく、またロボット装置20のカメラが撮影した画像を含んでもよい。いずれにしても動作データは、ロボット装置20がスタートしてから走った累積距離を特定できるデータであることが好ましい。また動作データは、ロボット装置20の姿勢を仮想ロボットで再現するためのアクチュエータの駆動データを含んでもよい。
【0024】
サーバ装置10は、ロボット装置20の動作データを、対応する仮想ロボットの走りに反映して、複数の仮想ロボットによる競争をシミュレーションする。サーバ装置10は、ロボット装置20が現実世界で走っている速度に相当する速度で、仮想競技場で仮想ロボットを走らせ、したがって現実世界で5メートルを最速で走りきったロボット装置20の仮想ロボットが、仮想競技場においてゴールラインに最速で到達する。各ユーザは、サーバ装置10から競技映像を端末装置12に配信されて、自分のロボット装置20に対応する仮想ロボットの活躍を観戦できる。
【0025】
以上のようにエンターテインメントシステム1では、ユーザがロボット装置20にコーチングを行い、ロボット装置20がコーチング内容にしたがってトレーニングする環境を提供するとともに、そのトレーニング成果を発揮できる環境を提供する。以下では、まずユーザのコーチングについて説明する。
【0026】
図2は、人型ロボットであるロボット装置20の外観例を示す。ロボット装置20は、人間と同じように、頭部、頸部、体幹(胸部、腹部、背部)、上肢、下肢を有し、上肢は上腕、前腕および手を、下肢は大腿、下腿および足を有する。各部位の繋ぎ部分には、アクチュエータを搭載した関節部分が設けられる。
【0027】
図3は、ロボット装置20の入出力系統を示す。処理部30は、音声データ、画像データ、センサデータなどの各種データや、命令を処理して出力するメインプロセッサである。処理部30は、駆動機構34を制御してロボット装置20を動かし、またスピーカ36から音声を出力し、発光部38を発光させる。駆動機構34は、ロボット装置20の可動部である関節部分に組み込まれたモータおよびモータ間を連結するリンク機構、モータの回転角を検出する回転角センサを含み、モータが駆動されることで、ロボット装置20の腕や脚、首などの関節部分が動かされる。
【0028】
マイク22は周囲の音声を集音して音声信号に変換し、カメラ24は周囲を撮影して、撮影画像を取得する。センサ26は、ユーザによる接触を検知するタッチセンサや、3軸の加速度センサ、ジャイロセンサ、測位センサなどを含む。記憶部28は、処理部30が処理するデータや命令などを記憶する。特に実施例では処理部30が、学習により得られた制御態様を記憶部28に蓄積する。通信部32はアンテナを介して、処理部30から出力されるデータを無線通信によりサーバ装置10に送信し、またサーバ装置10から各種データおよび情報を無線通信により受信し、処理部30に出力する。たとえば処理部30は、新しい動作機能を実行するためのプログラムモジュールを、通信部32を介してダウンロードしてインストールしてもよい。
【0029】
図4は、処理部30の機能ブロックを示す。処理部30は、受付部40、モード設定部42および制御部44を備える。受付部40は、ユーザからの指示や、サーバ装置10からの通知を受け付ける。
図4において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、回路ブロック、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0030】
ロボット装置20は、複数の動作モード群の中から選択された動作モードで動作する。動作モードには、自律的に行動する自律行動モード、ユーザによるコーチングを受け付けるコーチングモード、自律的に学習する学習モード、ユーザからの指示により行動する指定行動モードが少なくとも含まれる。
【0031】
受付部40が、ユーザまたはサーバ装置10からモード選択指示を受け付けると、モード設定部42が、動作モード群の中から、いずれかの動作モードを設定する。なおモード設定部42は、モード選択指示に限らず、受付部40が他の種類の指示を受け付けた場合であっても、その指示に応じた動作モードを自動設定してよい。モード設定部42は、設定した動作モードに応じた発光色で、発光部38を点灯させることが好ましい。ユーザは発光色を見ることで、現在の動作モードを確認できる。
【0032】
受付部40は、ユーザからのモード選択指示を、ロボット操作用のリモートコントローラから受け付けてもよく、またユーザの発声を音声解析することで受け付けてもよい。また受付部40は、タッチセンサにより所定の接触が検知されたときに、モード選択指示を受け付けてもよい。以下では、受付部40が「コーチングモード」の選択指示を受け付け、モード設定部42が動作モードとしてコーチングモードを設定した場合について説明する。
【0033】
実施例では、ロボット装置20に対してミッションが与えられる。ミッションは「タスク」や「課題」と言い換えることもでき、ロボット装置20による学習の対象となる。ユーザは、ロボット装置20がこれまで実行できていない機能の獲得を、ミッションとしてロボット装置20に与えてよく、以下では、「今よりも速く走れるようになる」とするミッションが、ロボット装置20に与えられた場合について説明する。なおサーバ装置10が所定のミッションをエンターテインメントシステム1に接続する全てのロボット装置20に与えて、ロボット装置20の学習成果を競う大会を後日開催するようにしてもよい。
【0034】
記憶部28には、プリセットされたデフォルト機能として搭載されている「走る」機能の制御態様が記憶されている。制御態様は、時系列に沿った駆動機構34の駆動タイミングを含む手順を示したものであり、制御部44が、制御態様にしたがって駆動機構34を駆動すると、ロボット装置20は走りだす。
【0035】
図5(a)〜(d)は、ロボット装置20が走っているときの姿勢の例を示す。制御部44が制御態様にしたがってロボット装置20を走らせると、ロボット装置20は、
図5(a)に示す姿勢、
図5(b)に示す姿勢、
図5(c)に示す姿勢、
図5(d)に示す姿勢と、順番に姿勢を変化させて、走る動作を行う。ロボット装置20は1mを2秒で走り、つまりデフォルトの機能としてロボット装置20は0.5m/秒で走る基本機能を有している。
【0036】
ユーザは、ロボット装置20に速い走り方をコーチングするために、姿勢に関する指示をロボット装置20に与える。人間が速く走るためのコツとして、たとえば強い前傾姿勢を保つ、頭部を動かさない、大腿部をできるだけ上げるなど、姿勢にまつわるものが知られている。ユーザは、人型ロボットであるロボット装置20に対して、速く走るための姿勢に関する指示を与え、制御部44は、コーチングモードにおいて、ユーザから姿勢に関する指示を受け付けて、記憶部28に記憶させる。
【0037】
この例でユーザは、ロボットが速く走るために必要と考える複数の姿勢に関する指示をロボット装置20に提供する。姿勢に関する指示は、とるべき姿勢を特定するものであってよい。
図5(a)〜(d)に4つの姿勢を示しているが、ユーザは、この4つの姿勢をそれぞれ速く走るために変更し、変更した姿勢を特定する情報をロボット装置20に提供してよい。デフォルト機能で走るときのロボット装置20の姿勢を、さらに前傾にした方が速く走れると考えれば、ユーザは、4つの姿勢のそれぞれを、少しだけ前傾にした姿勢をとるべきことを、ロボット装置20に入力する。制御部44は、ユーザから入力された複数の姿勢に関する指示を受け付けて、記憶部28に記憶させる。なお当然のことながらユーザは、速く走るための5つ以上の姿勢を特定する情報を時系列順にロボット装置20に入力し、制御部44が記憶部28に記憶させてよい。
【0038】
ユーザは、コーチングモードで姿勢に関する指示を行った後、ロボット装置20の動作モードを「学習モード」に切り替えるモード選択指示をロボット装置20に入力する。受付部40が、「学習モード」のモード選択指示を受け付けると、モード設定部42が動作モードとして学習モードを設定する。
【0039】
学習モードにおいて制御部44は、受付部40がコーチングモードにおいて受け付けた姿勢に関する指示を、ロボット装置20の姿勢に反映しながら、「今よりも速く走れるようになる」というミッションを達成するための駆動機構34の制御態様を学習することで導出する。任意の種類の学習アルゴリズムが、与えられたミッションに応じて単一的または複合的に適用されてよく、具体的には教師あり学習、教師なし学習、強化学習などが適用されてよい。
【0040】
上記した例では、コーチングモードでロボット装置20は、
図5(a)〜(d)に示した4つの姿勢を少しだけ前傾にするべきことを、ミッションを達成するための姿勢に関する指示として受け付ける。実施例でユーザは、走る一連の動作における全ての姿勢を入力するわけではなく、あくまでも、一連の動作のなかで切り出したキーフレームの一部の姿勢のみを入力するのである。そのため制御部44は、少なくとも、その間の姿勢を補間するような強化学習を行う必要がある。
【0041】
なお「走る」動作に関しては、既にデフォルト機能として制御態様が組み込まれているので、制御部44は、デフォルトの制御態様を参考情報として利用してよい。また外部のサーバ装置10などから、速く走るための姿勢情報を取得するようにしてもよい。制御部44は、ユーザにより指示された姿勢に関する指示を、ロボット装置20の姿勢に反映しつつ、参考情報を利用して制御態様を効率的に導出することが好ましい。
【0042】
ユーザによる指示の入力手法として、ユーザは、ロボット装置20の関節部分を手で動かして、ユーザが速く走れると考える姿勢をロボット装置20にとらせ、その姿勢を覚え込ませる。具体的にコーチングモードでは、ユーザがロボット装置20をポージングさせて、所望の姿勢をとらせると、制御部44が、そのときの駆動機構34における関節角度等の姿勢を定めるための情報を、姿勢情報として記憶部28に記憶させる。このときユーザは、姿勢情報を記憶部28に記憶させるためのトリガを、たとえばリモートコントローラからロボット装置20に与えてもよい。結果として、この姿勢情報は、ユーザの好みや感性を反映したものとなる。
【0043】
制御部44は、ユーザから、とるべき複数の姿勢に関する指示を受け付けて、記憶部28に記憶させる。ユーザが、一連の動作において多くの姿勢を指示することで、制御部44は、一連の動作における姿勢を数多く特定できるため、学習効率が高まることになる。制御部44は、複数の姿勢を、そのとるべき順番にしたがって受け付け、記憶部28に記憶させる。たとえば
図5(a)〜(d)に示す一連の姿勢において、ユーザは、それぞれを少しだけ前傾させた姿勢を、この順番にロボット装置20にとらせると、制御部44は、各姿勢を再現するための姿勢情報を記憶部28に記憶させる。
【0044】
学習モードで制御部44は、受け付けた複数の姿勢を順番にとりながら、その間の動きを補間する学習を行う機能をもつ。そのためユーザは、全ての姿勢をコーチングすることなく、速く走るために重要と考えるキーとなる姿勢のみをコーチングすればよい。なお学習モードにおいて、制御部44は、とりあえずユーザにより指定された姿勢と、その間を補間するように簡単なアルゴリズムで計算した姿勢をとって走るように、駆動機構34を制御してみる。学習が十分でないため、多くの場合は、ロボット装置20が転倒することになるが、その時点で走る状態をユーザに見せることで、ユーザは、さらなるコーチングを行う必要があるか判断できる。
【0045】
なお制御部44は、コーチングモードにおいて受け付けた姿勢に関する指示をロボット装置20の姿勢に反映してミッションを達成できるか否かをシミュレートするシミュレーション機能を備えてよい。このシミュレーション機能は、動作時におけるイナーシャ等も計算して、絶対にとることのできない姿勢であるか否かを判断できる。たとえばコーチングモードでユーザが、前傾しすぎた姿勢をロボット装置20にとらせた場合、当該姿勢をとると、確実に転倒することをシミュレーション機能は判定できる。実際にロボット装置20が試してみて転倒すると、損傷のリスクが上がるため、確実に転倒することが分かっている姿勢を経由する制御態様を試すことに意味はない。そこで制御部44は、シミュレーション機能により動作不能であることが予測されると、動作不能であることに関する情報を出力して、ユーザに知らせることが好ましい。たとえば、この情報は、スピーカ36から出力してよい。
【0046】
なお制御部44は、シミュレーション機能により動作不能であることが予測されると、動作不能の要因となる姿勢に関する情報を無視してよい。つまり、確実に転倒する姿勢は無視して、それ以外のコーチングされた姿勢を用いて、学習を行ってもよい。
【0047】
学習モードにおいて、ユーザは、さらなるコーチングが必要と感じると、コーチングモードへのモード変更指示を入力する。これによりモード設定部42は、動作モードをコーチングモードに変更する。
【0048】
以上のように、コーチングモードでは、姿勢に関する指示を、ユーザが直接ロボット装置20をポージングさせることで入力できる。他の入力手法として、ユーザは、実際にロボット装置20の前でお手本となる走り方で走り、ロボット装置20をコーチングしてもよい。このときロボット装置20は、カメラ24でユーザの走りを撮影し、制御部44が、ユーザの姿勢を画像解析して、自身の走りに反映させる教師あり学習を行ってよい。またユーザは、音声により姿勢に関する指示をロボット装置20に入力してよい。音声による指示入力は学習モードにおいても実施できることが好ましい。たとえばロボット装置20が速く走るための学習中に、ユーザは、もっと顔を上げて、または、もっと前傾にして、というような音声で指示する。ロボット装置20は、マイク22でユーザの発話を受け付け、制御部44は、発話内容を解析して、瞬時に、自身の動きに反映できることが好ましい。
【0049】
以上のようにして、ユーザは、速い走り方をコーチングし、ロボット装置20は、試行錯誤を繰り返すことで、速く走るための制御態様を学習する。エンターテインメントシステム1においてサーバ装置10は、様々な種類の仮想的な競技大会を開催する。その競技大会の一つが「5m走」であり、ユーザは、腕試しを兼ねて、速く走れるようになった自分のロボット装置20を、大会にエントリする。
【0050】
ユーザは、自分が所有するロボット装置20をサーバ装置10に事前に登録しておくことで、ロボット装置20を大会に参加させることができる。サーバ装置10は、ロボット装置20をユーザに紐付けて登録し、ロボット装置20に対応するCGモデルである仮想ロボットを作成しておく。
【0051】
サーバ装置10は、3次元のCGモデルである仮想ロボットを、現実世界のロボット装置20と同じ外観をもつ仮想オブジェクトモデルとして作成してよいが、異なる外観の仮想オブジェクトモデルとして作成してもよい。エンターテインメントシステム1では、複数の仮想ロボットが、対応するロボット装置20の実際の走りに合わせて、仮想競技場で5m走の競技を行うが、現実世界で流通するロボット装置20の外観は、すべて同じであることも考えられる。そのため、仮想ロボットを同じ外観のモデルとして作成すると、仮想競技場で、ユーザが自分のロボットを見分けられない可能性があるため、各ユーザが仮想オブジェクトの外観をカスタマイズできるようにしてもよい。ユーザは端末装置12を通じて、仮想競技場に設置された5mのコースを、仮想ロボットが走り抜ける映像を見ることができる。
【0052】
図6は、サーバ装置10の機能ブロックを示す。サーバ装置10は、処理部100、通信部102および記憶部104を備え、処理部100は、取得部110、仮想ロボット制御部112および画像生成部114を有する。仮想ロボット制御部112は、仮想の競技会場において、複数の仮想ロボットを競技させる。
図6において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、回路ブロック、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0053】
記憶部104は、エンターテインメントシステム1に参加するユーザおよびロボットに関する情報を記憶する。ユーザに関する情報は、ユーザが所有するロボット装置20および端末装置12のアドレス情報や、ユーザ識別情報(ユーザID)、ユーザの氏名、住所などの個人情報を含む。ロボットに関する情報は、ロボット装置20に対応付けられる仮想オブジェクトの形状および外観データ、腕や脚、首などの関節の位置や、その可動範囲など、仮想ロボットを仮想空間にて動作および表示させるために必要なモデルデータを含む。
【0054】
また記憶部104は、仮想空間の3次元モデルデータを記憶する。実施例ではサーバ装置10が、5m走の競技会場を提供するため、記憶部104は、5m走の競技会場の3次元モデルデータを少なくとも記憶している。なおサーバ装置10は、ユーザがエントリする競技を選ぶためのロビールームを提供し、ユーザがロビールームで、選択肢として示される競技の中からいずれかを選べるようにしてよい。サーバ装置10は5m走以外にも、たとえばサッカーの競技会場を提供できてよく、記憶部104は、競技に応じた様々な3次元モデルデータを記憶している。
【0055】
図7は、端末装置12に表示される競技会場の例を示す。
図7には、競技開始前(スタート前)の競技会場の様子が示されており、複数の仮想ロボットがスタートラインに整列している。なお
図7には、すべての仮想ロボットが、現実のロボット装置20と同じ外観を有するように作成されており、ユーザが、自分のロボットを見分けづらい。そのためユーザは、仮想ロボットに、独自に色づけするなどして区別できるようにしてよい。またユーザがロボット装置20に着色したり、シールを貼ったり、形状を変えたりするような加工を行っていることもある。この場合、サーバ装置10は、ロボット装置20の撮影画像を受信して、ロボット装置20と同様の外観となるように仮想ロボットを作成してもよい。また自分の仮想ロボットの上方に、自分の仮想ロボットであることを示す情報(矢印など)が表示されてもよい。また上記したように、ユーザは、ロボット装置20とは別の形状の仮想ロボットを作成できるのであれば、自分のロボットを形状の違いから簡単に見分けられるようになる。
【0056】
仮想ロボット制御部112は、競技場の仮想空間を構築し、スタートラインに、エントリしたユーザの仮想ロボットを整列させる。画像生成部114は、仮想ロボットが存在する仮想空間をレンダリングして、ユーザに提供する画像を生成し、通信部102から端末装置12に配信させる。ユーザはサーバ装置10に対して任意の視点からの画像を要求することができ、たとえば自分の仮想ロボットの視線方向の画像や、仮想ロボットを俯瞰的に視る視点からの画像などを、端末装置12を通じて要求できる。画像生成部114は、視点の変更要求を取得すると、要求された視点からの画像を生成し、通信部102が、生成された画像を配信する。端末装置12は、リアルタイム配信された画像をディスプレイに表示する。これによりユーザは、競技に参加する仮想ロボットの様子を確認できる。
【0057】
図7に示す画像は、スタート3秒前である状態を示している。この3秒後に、「ヨーイドン」のかけ声が発声され、各ユーザは、自分のロボット装置20に、スタート指示を入力する。なおロボット装置20は、このとき、ユーザからの指示により行動する指定行動モードを動作モードとして設定されている。「ヨーイドン」のかけ声は、直接ロボット装置20に入力されて、ロボット装置20が、スタートするように制御されてよい。いずれにしてもエンターテインメントシステム1では、各ユーザが別々の場所で、スタータの合図で自分のロボット装置20を一斉に走らせることで、5m走大会が実現される。
【0058】
走り出したロボット装置20は、自身のリアルタイムの動きを表す(再生する)ための動作データを、サーバ装置10に送信する。ロボット装置20のリアルタイムの動きを表すための動作データは競技によって異なってよい。5m走の競技では、動作データは、センサ26による検出データであってよく、所定のサンプリング周期で、走っている速度ないしはスタートラインからの移動距離を特定できるデータであればよい。ロボット装置20は、タイムスタンプを付加した動作データを、所定のサンプリング周期でサーバ装置10に送信する。
【0059】
動作データは、仮想ロボット制御部112により、仮想ロボットを仮想競技会場で走らせるために利用される。そのため動作データは、ロボット装置20がスタートしてから走った累積距離を特定できるデータである必要がある。理想的な通信環境のもとで、ロボット装置20は所定のサンプリング周期で動作データをサーバ装置10に送信し、サーバ装置10は、動作データに付加されたタイムスタンプで示される時間に、スタートラインから累積距離だけ移動した位置を走っているように、仮想ロボットの動きを制御する。ロボット装置20が、スタートからの累積距離を自身で算出できる場合には、周期的に送信する動作データに累積距離を含ませることが好ましい。なおレース用マットにスタートラインからの移動距離を示すマークが付加され、カメラ24がマークを撮影できる場合には、撮影画像が動作データに含まれて、仮想ロボット制御部112が撮影画像から、スタートラインからの移動距離を導き出せるようにしてもよい。
【0060】
なお動作データは、ロボット装置20の動きを再現するためのアクチュエータの駆動データを含んでもよい。仮想ロボット制御部112は、駆動データを用いて、ロボット装置20の動きと仮想ロボットの動きとが同期するように制御してよい。
【0061】
サーバ装置10において、取得部110が、複数のユーザの複数のロボット装置20のリアルタイムの動きを表すための動作データを取得する。仮想ロボット制御部112は、複数のロボット装置20の動作データを用いて、同じ仮想空間内で複数のロボット装置20に対応する複数の仮想ロボットを動かす。仮想ロボット制御部112は、動作データを仮想ロボットの動きに反映するため、実世界で速く走るロボット装置20に対応する仮想ロボットは、仮想世界においても速く走る。つまり、ロボット装置20の実際のスピードが、仮想ロボットのスピードに反映される。これにより異なる場所に存在する複数のロボット装置20による5m走大会が成立する。
【0062】
画像生成部114は、複数の仮想ロボットが動いている仮想空間の画像を生成し、通信部102から、ユーザの端末装置12に送信させる。ユーザは、自分の仮想ロボットが、他のユーザの仮想ロボットと競争している様子を観戦でき、子供の運動会を見ているような体験を得られる。
【0063】
以上は、サーバ装置10においてVR(virtual reality:バーチャルリアリティ)映像を生成して、各端末装置12に配信する仕組みである。以上の例では、複数の仮想ロボットの動く様子が、対応するロボット装置20のリアルタイムの動きを表すための動作データを用いて仮想空間上で表現されたが、ユーザの仮想ロボット以外の仮想ロボットは、過去の動作データによって動かされてもよい。
【0064】
以下、サーバ装置10が他のユーザのロボット装置20の動作データを、ユーザの端末装置12に配信して、端末装置12が、AR(Augmented Reality:拡張現実)映像を生成する仕組みを示す。
図8は、端末装置12の機能ブロックを示す。端末装置12は、処理部200、通信部202、ディスプレイ204、カメラ206および記憶部208を備え、処理部200は、撮影画像取得部210、動作データ取得部212、仮想ロボット制御部214、画像生成部216および画像出力部218を有する。
図8において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、回路ブロック、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0065】
端末装置12は、複数のロボット装置20が動いている様子をディスプレイ204に表示する。この例では、ディスプレイ204にライブビュー表示がされている状態で、ユーザがロボット装置20の走る様子をカメラ206で撮影し、ロボット装置20に並んだ位置に、他のロボット装置20の仮想ロボットが走るAR映像を生成する。
【0066】
記憶部208は、一緒に競技を行う他のユーザに関する情報を記憶する。ユーザが5m走の競技大会にエントリすると、サーバ装置10は、同走する他のユーザのロボット装置20を特定して、他のユーザに関する情報を端末装置12に提供する。他のユーザに関する情報は、少なくとも他のユーザのロボット装置20に対応づけられる仮想オブジェクトの形状および外観データ、腕や脚、首などの関節の位置や、その可動範囲など、仮想ロボットを仮想空間にて動作および表示させるために必要なモデルデータを含む。
【0067】
カメラ206は、動いている(走っている)ロボット装置20を撮影し、撮影画像取得部210は、カメラ206が撮影している画像を取得する。動作データ取得部212は、他のユーザのロボット装置20の動きを表すための動作データを取得する。仮想ロボット制御部214は、撮影画像の中に含まれる5m走のコースを特定する。上記したようにレース用マットが床に置かれている場合、仮想ロボット制御部214は、レース用マットに描かれているスタートラインおよびゴールラインを画像内から抽出して、5m走のコースを特定する。
【0068】
スタート前、ユーザは、ロボット装置20をレースマットのスタートラインに配置し、仮想ロボット制御部214は、ロボット装置20の横に仮想ロボットを並べる。この様子を示す画像は、画像生成部216により生成され、ディスプレイ204に表示される。スタートが合図されると、ユーザは、ロボット装置20のスタートスイッチを操作して、ロボット装置20を走り出させる。仮想ロボット制御部214は、他のユーザのロボット装置20の動作データから、他のユーザの仮想ロボットを5m走のコースに沿って走らせる。画像生成部216は、ロボット装置20を撮影したライブビュー画像に、他のユーザの仮想ロボットを重ね合わせた画像を生成する。画像出力部218は、重ね合わせた画像をディスプレイ204に出力する。これによりユーザは、自宅内のレース用マットにおいて、自分のロボット装置20と他のユーザの仮想ロボットとが競争している様子を観戦できる。
【0069】
VR映像の生成処理に関して説明したように、動作データ取得部212は、ユーザのロボット装置20とは別の場所にいる他のユーザのロボット装置20のリアルタイムの動きを表すための動作データを取得する。なお、他のユーザの動作データは、サーバ装置10経由で取得してよく、また他のユーザのロボット装置20から直接取得してもよい。これによりユーザは、リアルタイムに行われる5m走の競技を観戦できる。AR映像によれば、自宅が5m走の会場となるため、ユーザはリラックスして、ロボット装置20の活躍を観戦できる。
【0070】
なお、動作データ取得部212は、過去の他のユーザのロボット装置20の動きを表すための第2動作データを記憶部208から読み出して取得してもよい。たとえば端末装置12は、サーバ装置10から、5m走の世界チャンピオンの動作データを事前に取得して、記憶部28に記憶させておく。これによりユーザは、好きなタイミングで、世界チャンピオンとの対決を楽しむことができるようになる。
【0071】
以上は、道具を使わない競技について説明したが、ロボット装置20の機能が向上すると、ボールを使った球技なども実現可能になる。以下、エンターテインメントシステム1の運営者が体育館を借りて、ロボット装置20によるサッカー大会を開催する例を示す。ここで体育館には、テープなどのマーカによってサッカーのフィールドが区画される。5m走の大会では、ロボット装置20は、他のロボット装置20に関係なく、ただ5mを走ればよかったが、球技などの競技では相手との関係が重要となるため、ロボット装置20は、競技場における自身および他のロボット装置20の位置や、ボールの位置などをリアルタイムで認識できる必要がある。これらの位置認識技術に関しては、カメラを用いたSLAM(Simultaneously Localization and Mapping )などの画像認識技術などを用いればよい。実施例では、位置認識や物体認識の技術は、既存のものを利用する。
【0072】
図9は、ロボット装置20がサッカーをしている様子を示す。サッカーとは、ボールを手を用いずに相手のゴールに入れて得点を競い合う球技であるが、現実にロボット装置20によるサッカー大会を開催すると、キック力不足のために、ボールがあまり転がらず、盛り上がりを欠くことがある。そこで実施例では、ボールとして自走アシスト機能をもつ移動体50を採用し、ロボット装置20に蹴られた移動体50が、勢いよく転がることで、ゲーム性を高めるようにする。また逆に狭いサッカーコートではボールが転がりすぎて、すぐにボールがコート外に出てしまうこともあるが、この場合にも移動体50に自走アシスト機能をもたせることで、移動体50の転がりを抑制するなどのコントロールをできるようになる。なお、
図9に示す例では移動体50が球型ロボットとして構成され、たとえば特許文献2に示した技術を用いて形成されてよい。なお移動体50は球型である必要は必ずしもなく、自走アシスト機能を有するものであれば、特に形状は問わない。たとえば移動体50は、ボールが浮いた状態を表現するために、飛行機能を有していてもよい。
【0073】
図10は、移動体50の機能ブロックを示す。移動体50は、処理部300、検出部302、カメラ304、通信部308、駆動源310、スピーカ312、発光部314および記憶部316を備え、処理部300は、移動情報導出部320、領域設定部322、制御部324、特定部326および取得部328を有する。
図10において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、回路ブロック、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0074】
検出部302は、移動体50に加えられた外力を検出する。たとえば検出部302は力覚センサであってよく、移動体50の外面付近に設けられて、移動体50に加えられた外力の大きさおよび方向を検出する。実施例の検出部302は、ロボット装置20が移動体50に加えた外力、つまり蹴った力の大きさおよび方向が検出される。
【0075】
移動情報導出部320は、検出部302が検出した外力に応じて、移動体50の移動方向および移動速度を導出する。移動方向については、移動体50が蹴られた方向と一致するように導出されてよい。
【0076】
ここで移動情報導出部320は、移動速度を、検出した外力の大きさに、所定のゲインを乗算して算出してよい。このゲインは、ロボット装置20に応じて定められることが好ましい。たとえばサッカー大会に参加するロボット装置20が全て同一スペックのロボットであれば、ゲインは同一であってよいが、異なるスペックのロボット装置20が混在するような場合には、キック力の強いロボットと弱いロボットとが存在しうる。そこでロボットのスペックに応じてゲインが事前に調整され、移動情報導出部320は、移動体50に外力を与えたロボット装置20に応じたゲインを用いて、移動速度を導出してよい。実施例では、キック力の強いロボット装置20のゲインを小さく、キック力の弱いロボット装置20のゲインを大きくして、キック力の強弱がゲーム性に与える影響を低減させてよい。またロボット装置20ごとのゲインは常に一定ではなく、検出した外力の大きさに応じて定められてよく、たとえば検出した外力が大きいほど、ゲインが大きく設定されてもよい。
【0077】
そのために移動体50は、サッカー大会に参加するロボット装置20の識別情報(ロボットID)を、試合開始前に事前に取得しておく。特定部326は、蹴ったロボット装置20を特定し、移動情報導出部320は、特定されたロボット装置20に応じたゲインを用いて、移動体50の移動速度を算出する。特定部326は、たとえばカメラ304で撮影された画像を解析することで、蹴った物体、すなわちロボット装置20を特定してもよい。また通信部308が、蹴ったロボット装置20からロボットIDを取得して、特定部326に渡すことで、特定部326が、蹴ったロボット装置20を特定してもよい。このように特定部326がロボット装置20を特定することで、移動情報導出部320は、ロボット装置20に応じた移動体50の移動方向および移動速度を導出できるようになる。
【0078】
制御部324は、駆動源310を駆動して、移動体50を移動させる。駆動源310はたとえば複数のモータから構成される。移動体50がロボット装置20により蹴られて、移動情報導出部320が、蹴られた後の移動体50の移動方向および移動速度を導出すると、制御部324は、導出した移動方向および移動速度に応じて、駆動源310を駆動して、移動体50を移動させる。このように制御部324が移動体50の移動を制御することで、ロボット装置20によるキック力が仮に弱い場合であっても、サッカー競技が成立するように移動体50がフィールド内を自走アシスト機能で移動する。
【0079】
なお実際のサッカー競技では、蹴られたボールは、いずれ勢いを失って止まる。そこで制御部324が、外力に応じて導出された移動速度で移動体50を移動させた後、移動情報導出部320は、移動体50の移動速度を経過時間に応じて徐々に下げるように算出する。これによりロボット装置20に蹴られた移動体50は永遠に転がり続けることなく、停止する。このとき移動情報導出部320は、接地面における仮想的な摩擦の影響を加味して、移動体50の移動速度を徐々に下げてよい。
【0080】
サッカーのルールでは、ボールがタッチラインを割ると、スローインによりボールをフィールド内に戻し、ゴールラインを割ると、ゴールキックやコーナーキックによってリスタートする。ロボットサッカーでは、そこまで厳密なルールを適用する必要はなく、ボールがラインを超えようとすると、仮想的に設けられた壁により跳ね返されてフィールド内に戻る方向に動くように制御されてよい。
【0081】
この制御を実現するために、領域設定部322は、移動体50が移動可能な実空間の領域を設定する。ここで実空間の領域は、タッチラインおよびゴールラインで囲まれたフィールド内である。領域設定部322が移動可能な領域としてフィールド内であることを設定した場合、特定部326は、たとえばカメラ304で撮影された画像を解析することで、移動体50がフィールド外に出そうなときに、境界に到達したことを特定して、移動情報導出部320に通知する。この場合、移動体50がラインから出ることなく、フィールド内に戻されるようなルールとなっているため、移動情報導出部320は、フィールドの境界において、少なくとも移動方向を変更し、制御部324に伝える。これにより制御部324は、移動体50を、あたかもライン上にある見えない壁にあたって跳ね返ったように移動制御し、プレイが継続される。
【0082】
この例では、実際の会場で、ユーザがロボット装置20を持ち寄ってサッカー大会に参加することを示したが、上記したように仮想のサッカー会場で開催される大会に参加してもよい。このとき、サッカー大会に参加するユーザは、自身のロボット装置20と移動体50とを、それぞれ所有している必要がある。サーバ装置10は、各ロボット装置20および各移動体50から、それぞれの動作データを取得し、フィールド内のロボット装置20や移動体50の位置を管理する。
【0083】
なおサーバ装置10は、各ユーザの移動体50に加えられた外力データを取得する。サーバ装置10は、取得した外力データを、実際に外力を加えられたユーザ以外の他のユーザの移動体50に送信する。移動体50において、通信部308は、サーバ装置10から、移動体50に加えられた仮想的な外力データを受信し、取得部328が、外力データを取得すると、移動情報導出部320は、取得した仮想的な外力に応じて、移動体50の移動方向および移動速度を導出する。これにより、ユーザの自宅にある移動体50が、遠隔地でプレイしている他のユーザのロボット装置20が移動体50を蹴ったことによって、動かされることになる。
【0084】
なお仮想のサッカー会場で大会が開かれる場合、各ユーザは、自宅内に、サッカー場のスペースを確保する。確保されたスペースは、領域設定部322により、移動可能な実空間領域として設定される。この場合、ユーザごとに、確保できるスペースは異なることが想定されるため、各移動体50における移動情報導出部320は、設定された領域の大きさに応じてゲインを調整して、移動速度を導出することが好ましい。制御部324は、移動体50の動作に合わせて、スピーカ312から出力する音や、発光部314の発光を制御してよい。
【0085】
サーバ装置10は、ロボット装置20および移動体50の仮想フィールドにおける位置をリアルタイムで管理しており、仮想フィールド内で各ロボット装置20の仮想ロボットを動かしている。たとえば仮想ロボット同士が接触する場合、サーバ装置10は、対応するロボット装置20に、接触により仮想ロボットが受ける仮想的な外力を伝達する。ロボット装置20において、受付部40が仮想的な外力を受け付けると、制御部44が、外力を受けた状態を再現するように駆動機構34を駆動し、ロボット装置20を動かす。
【0086】
この例では、衝突判定がサーバ装置10により実施されているが、ロボット装置20により実施されてもよい。このとき受付部40は、仮想フィールドにおける他の仮想ロボットの位置情報をサーバ装置10から受け付け、制御部44は、自身の仮想フィールドにおける位置をもとに、衝突判定を実施してよい。制御部44は、仮想フィールドにおける他の仮想ロボットとの衝突を判定すると、衝突により受ける仮想的な外力を導出して、外力を受けた状態を再現するように駆動機構34を駆動し、ロボット装置20を動かす。
【0087】
以上、本発明を実施例をもとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。実施例では、ロボット装置20の様子を見る手段としてスマートフォンなどの端末装置12を示したが、ヘッドマウントディスプレイなどを用いて、ユーザがロボット装置20の様子を見られるようにしてもよい。