(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022147921
(43)【公開日】2022-10-06
(54)【発明の名称】疑似的接触提示システム、制御プログラムおよび制御方法
(51)【国際特許分類】
G06F 3/01 20060101AFI20220929BHJP
【FI】
G06F3/01 560
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2021049390
(22)【出願日】2021-03-24
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和2年度、国立研究開発法人科学技術振興機構、戦略的創造研究推進事業「ソーシャルタッチの計算論的解明とロボットへの応用に向けた研究開発」委託研究、産業技術力強化法第17条の適用を受ける特許出願。
(71)【出願人】
【識別番号】393031586
【氏名又は名称】株式会社国際電気通信基礎技術研究所
(74)【代理人】
【識別番号】100090181
【弁理士】
【氏名又は名称】山田 義人
(72)【発明者】
【氏名】塩見 昌裕
(72)【発明者】
【氏名】住岡 英信
【テーマコード(参考)】
5E555
【Fターム(参考)】
5E555AA08
5E555BA02
5E555BB02
5E555BD01
5E555BE17
5E555DA08
5E555DA27
5E555DB32
5E555DC85
5E555FA00
(57)【要約】
【課題】 疑似的接触を提示する新しい疑似的接触提示システムを提供することができる。
【解決手段】 疑似的接触提示システム(10)は、コミュニケーションロボット12およびHMD20を含み、HMDに複数の仮想エージェント(70)を表示し、個別にまたは同時に所定の動作を行うアニメーションを表示する。所定の動作に関連して、仮想エージェントに対応するロボットのアームを動作させる。つまり、疑似的接触提示システムは、HMDを装着したユーザ60に対して、視覚刺激を提示するとともに、これに関連した接触刺激を提示する。したがって、ユーザは、仮想エージェントに接触している体感を得る。つまり、ユーザに疑似的接触が提示される。
【選択図】
図4
【特許請求の範囲】
【請求項1】
ユーザに対して作用して前記ユーザに接触刺激を与える複数の刺激提示部を備える接触刺激提示装置、
前記複数の刺激提示部のうちの2つ以上の前記刺激提示部の各々に仮想エージェントを割り当てる割当手段、および
前記ユーザの頭部に装着され、前記割当手段によって割り当てられた複数の仮想エージェントを表示し、前記複数の仮想エージェントのうちの一部または全部を動作させて前記ユーザに視覚刺激を提示する頭部装着型表示装置を備え、
前記接触刺激提示装置は、前記複数の仮想エージェントのうちの一部または全部の動作に関連して、前記複数の刺激提示部のうちの2つ以上の前記刺激提示部の各々を動作させる、疑似的接触提示システム。
【請求項2】
前記視覚刺激提示装置は前記複数の仮想エージェントのうちの一部または全部について前記ユーザに対する動作を示すアニメーションで表示し、
前記刺激提示部は可動部を含み、前記接触刺激提示部は、前記可動部の動きで前記複数の仮想エージェントのうちの一部または全部についての動作のアニメーションに関連して変化するように前記可動部を動作させて前記接触刺激を前記ユーザに提示する、請求項1記載の疑似的接触提示システム。
【請求項3】
ユーザに対して作用して前記ユーザに接触刺激を与える複数の刺激提示部を有する接触刺激提示装置および前記ユーザの頭部に装着される頭部装着型表示装置を備える、疑似的接触提示システムのコンピュータによって実行される制御プログラムであって、前記コンピュータを、
前記接触刺激提示装置の前記複数の刺激提示部を制御して前記ユーザに接触刺激を提示させる可動部制御部、
前記複数の刺激提示部のうちの2つ以上の前記刺激提示部の各々に仮想エージェントを割り当てる割当手段、および
前記割当手段によって割り当てられた複数の仮想エージェントのうちの一部または全部を表示する表示部として機能させ、
前記複数の仮想エージェントを前記頭部装着型表示装置で表示することによって前記ユーザに対して視覚刺激を提示するとともに、前記可動部制御部によって、前記複数の仮想エージェントのうちの一部または全部の動作に関連して、前記複数の刺激提示部のうちの2つ以上の前記刺激提示部の各々を動作させる、感覚刺激提示プログラム。
【請求項4】
ユーザに対して作用して前記ユーザに接触刺激を与える複数の刺激提示部を有する接触刺激提示装置および前記ユーザの頭部に装着される頭部装着型表示装置を備える、疑似的接触提示システムの制御方法であって、
前記接触刺激提示装置の前記複数の刺激提示部を制御して前記ユーザに接触刺激を提示させるステップ、
前記複数の刺激提示部のうちの2つ以上の前記刺激提示部の各々に仮想エージェントを割り当てるステップ、および
前記割当手段によって割り当てられた複数の仮想エージェントのうちの一部または全部を表示するステップを含み、
前記複数の仮想エージェントを前記頭部装着型表示装置で表示することによって前記ユーザに対して視覚刺激を提示するとともに、前記接触刺激提示装置で、前記複数の仮想エージェントのうちの一部または全部の動作に関連して、前記複数の刺激提示部のうちの2つ以上の前記刺激提示部の各々を動作させる、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、疑似的接触提示システム、制御プログラムおよび制御方法に関し、特にたとえば、ユーザに接触による刺激を提示する作用体と当該ユーザに対して視覚による刺激を提示するヘッドマウントディスプレイを用いる、疑似的接触提示システム、制御プログラムおよび制御方法に関する。
【背景技術】
【0002】
この種の従来の疑似的接触提示システムの一例が特許文献1に開示されている。特許文献1に開示される疑似的接触提示システムによれば、コミュニケーションロボットは、ユーザの背中に回せるほどの長さの腕でユーザをハグするなどして、ユーザに接触刺激を提示する。ユーザの頭部に装着したHMD(Head Mounted Display)には、コミュニケーションロボットのハグ動作と実質的に同期して状態が変化される仮想エージェントが表示される。コミュニケーションロボットがユーザを抱き返すことによって接触刺激が当該ユーザに与えられ、さらにHMDの仮想エージェントによって視覚刺激が当該ユーザに与えられる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記の特許文献1に開示される疑似的接触提示システムでは、1つのコミュニケーションロボットに対応して1つの仮想エージェントを割り当て、コミュニケーションロボットの動作に仮想エージェントの動作を同期させるようにしてある。つまり、コミュニケーションロボットおよび仮想エージェントを用いた接触による刺激をユーザに提示する構成が簡単である。この特許文献1では、複数の仮想エージェントの接触による刺激をユーザに提示することについては考慮されていなかった。
【0005】
それゆえに、この発明の主たる目的は、新規な、疑似的接触提示システム、制御プログラムおよび制御方法を提供することである。
【0006】
また、この発明の他の目的は、複雑な接触刺激を提供することができる、疑似的接触提示システム、制御プログラムおよび制御方法を提供することである。
【課題を解決するための手段】
【0007】
第1の発明は、ユーザに対して作用してユーザに接触刺激を与える複数の刺激提示部を備える接触刺激提示装置、複数の刺激提示部のうちの2つ以上の刺激提示部の各々に仮想エージェントを割り当てる割当手段、およびユーザの頭部に装着され、割当手段によって割り当てられた複数の仮想エージェントを表示し、複数の仮想エージェントのうちの一部または全部を動作させてユーザに視覚刺激を提示する頭部装着型表示装置を備え、接触刺激提示装置は、複数の仮想エージェントのうちの一部または全部の動作に関連して、複数の刺激提示部のうちの2つ以上の刺激提示部の各々を動作させる、疑似的接触提示システムである。
【0008】
第2の発明は、第1の発明に従属し、視覚刺激提示装置は複数の仮想エージェントのうちの一部または全部についてユーザに対する動作を示すアニメーションで表示し、刺激提示部は可動部を含み、接触刺激提示部は、可動部の動きで複数の仮想エージェントのうちの一部または全部についての動作のアニメーションに関連して変化するように可動部を動作させて接触刺激をユーザに提示する。
【0009】
第3の発明は、ユーザに対して作用してユーザに接触刺激を与える複数の刺激提示部を有する接触刺激提示装置およびユーザの頭部に装着される頭部装着型表示装置を備える、疑似的接触提示システムのコンピュータによって実行される制御プログラムであって、コンピュータを、接触刺激提示装置の複数の刺激提示部を制御してユーザに接触刺激を提示させる可動部制御部、複数の刺激提示部のうちの2つ以上の刺激提示部の各々に仮想エージェントを割り当てる割当手段、および割当手段において割り当てた複数の仮想エージェントのうちの一部または全部を表示する表示部として機能させ、複数の仮想エージェントを頭部装着型表示装置で表示することによってユーザに対して視覚刺激を提示するとともに、可動部制御部によって、複数の仮想エージェントのうちの一部または全部の動作に関連して、複数の刺激提示部のうちの2つ以上の刺激提示部の各々を動作させる、感覚刺激提示プログラムである。
【0010】
第4の発明は、ユーザに対して作用してユーザに接触刺激を与える複数の刺激提示部を有する接触刺激提示装置およびユーザの頭部に装着される頭部装着型表示装置を備える、疑似的接触提示システムの制御方法であって、接触刺激提示装置の複数の刺激提示部を制御してユーザに接触刺激を提示させるステップ、複数の刺激提示部のうちの2つ以上の刺激提示部の各々に仮想エージェントを割り当てるステップ、および割り当てた複数の仮想エージェントのうちの一部または全部を表示するステップを含み、複数の仮想エージェントを頭部装着型表示装置で表示することによってユーザに対して視覚刺激を提示するとともに、接触刺激提示装置で、複数の仮想エージェントのうちの一部または全部の動作に関連して、複数の刺激提示部のうちの2つ以上の刺激提示部の各々を動作させる、制御方法である。
【発明の効果】
【0011】
この発明によれば、ユーザの頭部に装着された頭部装着型表示装置に表示された複数の仮想エージェントのうちの一部または全部に動作させ、その動作に関連して、複数の仮想エージェントのうちの一部または全部に対応する刺激提示部を動作させるので、仮想エージェントの動作による視覚刺激を提示するとともに、これに関連して、刺激提示部による接触刺激を提示することができる。つまり、仮想エージェントに接触しているかのような体感を得ることができる。よって、疑似的な接触を提示する、新しい、疑似的接触提示システム、制御プログラムおよび制御方法を提示することができる。
【0012】
この発明の上述の目的、その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0013】
【
図1】
図1はこの発明の一実施例の疑似的接触提示システムの電気的な構成を示すブロック図である。
【
図2】
図2は
図1に示すロボットの外観構成を正面から見た図である。
【
図3】
図3は
図1に示すロボットの電気的な構成を示すブロック図である。
【
図4】
図4は
図1に示す疑似的接触提示システムを使用する状態の一例を横から見た図である。
【
図5】
図5は
図1に示すHMDに表示される2体の仮想エージェントの一例を示す図である。
【
図6】
図6は
図1に示すHMDに表示される3体の仮想エージェントの一例を示す図である。
【
図7】
図7は
図1に示すHMDに表示される2体の仮想エージェントの他の例を示す図である。
【
図8】
図8は
図1に示すHMDに表示される3体の仮想エージェントの他の例を示す図である。
【
図9】
図9は
図1に示すサーバに内蔵されるRAMのメモリマップの一例を示す図である。
【
図10】
図10は
図1に示すサーバに内蔵されるCPUの第1疑似接触処理の一例の一部を示すフロー図である。
【
図11】
図11は
図1に示すサーバに内蔵されるCPUの第1疑似接触処理の他の一部であって、
図10に後続するフロー図である。
【
図12】
図12は
図1に示すサーバに内蔵されるCPUの第2疑似接触処理の一例の一部を示すフロー図である。
【
図13】
図13は
図1に示すサーバに内蔵されるCPUの第2疑似接触処理の他の一部であって、
図12に後続するフロー図である。
【発明を実施するための形態】
【0014】
図1を参照して、この実施例の疑似的接触提示システム(以下、「システム」という)10は、ユーザ(人ないし参加者)に対して物理的または身体的な刺激、つまりユーザの触覚に与える刺激または接触によりユーザに与える刺激(以下、「接触刺激」という)を提示するためのロボット12を含む。ロボット12は、この実施例では、接触刺激を提示する動作を含み、必要に応じて、音声を発生するコミュニケーションロボットである。
【0015】
図2は
図1の実施例に用いる接触刺激提示装置としてのロボット12を正面から見た場合の外観構成の一例を示す。ただし、他の外観、構造を持つ任意の接触刺激提示装置が利用可能である。
【0016】
ロボット12は、棒状の3本のフレーム120a、120b、120cを含む。フレーム120a、120b、120cは、たとえばアルミニウムのような金属でも、繊維強化プラスチックまたはエンジニアリングプラスチックのような樹脂でもよく、基本的に、安全な強度が得られる断面形状や太さで設計される。たとえば、角柱または角筒のフレームが利用され得る。
【0017】
フレーム120aは、ロボット12の底部を構成し、水平方向に延びて床または床面に据え付けられる。フレーム120bは、ロボット12の胴体部を構成し、垂直方向に延びて配置され、下端部をフレーム120aの中央またはほぼ中央に固定される。フレーム120cは、ロボット12の肩部を構成し、水平方向に延びて配置され、フレーム120bの上部に固定される。
【0018】
フレーム120cには、それの両端から延びるロボットアーム(以下、単に「アーム」という)122、124および126が設けられる。アーム122、124および126は、それぞれ、人間の腕を模した構造であり、それぞれ、肘関節および肩関節に相当する関節を有している。したがって、以下の説明においては、便宜上、人間の腕についての部位の名称を用いることがある。
【0019】
アーム122および124は、ロボット12を正面から見た場合のフレーム120cの左側の端部に設けられ、アーム126は、ロボット12を正面から見た場合のフレーム120cの右側の端部に設けられる。以下、ロボット12およびその一部について方向を用いて説明する場合には、ロボット12を正面から見た場合の上下左右を用いることにする。
【0020】
アーム122は、前腕に相当するフレーム122aと上腕に相当するフレーム122bを含み、さらに、フレーム122aとフレーム122bを連結する関節(肘関節に相当する)122c、および、フレーム122bとフレーム120cを連結する関節(肩関節に相当する)122dを含む。
【0021】
アーム124は、前腕に相当するフレーム124aと上腕に相当するフレーム124bを含み、さらに、フレーム124aとフレーム124bを連結する関節(肘関節に相当する)124c、および、フレーム124bとフレーム120cを連結する関節(肩関節に相当する)124dを含む。
【0022】
ただし、
図2からも分かるように、アーム122は、フレーム120cの左側端部の下面に連結され、アーム124は、フレーム120cの左側端部の上面に連結される。
【0023】
アーム126は、前腕に相当するフレーム126aと上腕に相当するフレーム126bを含み、さらに、フレーム126aとフレーム126bを連結する関節(肘関節に相当する)126c、および、フレーム126bとフレーム120cを連結する関節(肩関節に相当する)126dを含む。このアーム126は、フレーム120cの右側端部の下面に連結される。
【0024】
一例として、関節122c、124cおよび126cは、それぞれ、前腕を上腕に対して最大90°開くことができる。したがって、関節122c、124cおよび126cの角度を制御することによって、アーム122、124および126をそれぞれ曲げたり延ばしたりすることができる。
【0025】
また、一例として、関節122d、124dおよび126dは、それぞれ、上腕を、各関節122d、124dおよび126dがフレーム120cと連結された面に対して最大150°開くことができる。ただし、上腕を構成するフレーム122b、124bおよび126bが、関節122d、124dおよび126dがフレーム120cと連結されている面に対して垂直となる場合の角度を0°としてある。したがって、関節122d、124dおよび126dの角度を制御することによって、アーム122、124および126をそれぞれ上げ下げする、または、前後に出すことができる。
【0026】
さらに、この実施例では、ロボット12がアーム122、124および126の各々でユーザ60(
図4参照)と握手できるように、関節122c、122d、124c、124d、126cおよび126dにアクチュエータを組み込んでいる。
【0027】
接触刺激提示装置すなわちロボット12は、インターネットや電話通信回線のようなネットワーク14を介してサーバ16に接続される。サーバ16は、PC、PDA、スマートフォン、タブレット端末のような汎用のコンピュータである。
【0028】
図示は省略するが、サーバ16には、タッチパネルまたは/およびキーボードのような入力装置が含まれ、オペレータがそのような入力装置を操作することができる。このようなサーバ16の動作を制御するためのプログラムおよびデータは、サーバ16に内蔵しているメモリ(たとえば、HDDおよびRAM)16bに記憶されており、同じく内蔵のCPU16aによってサーバ16の全体的な動作が制御される。このCPU16aは、上述のオペレータの操作に従って、ロボット12のCPU36(後述)を通して、ロボット12の動作および発話を制御し、さらには後述のHMD20による仮想エージェントの表示を制御する。このため、サーバ16は通信モジュール16cを備えており、CPU16aは通信モジュール16cを介して、ネットワーク14すなわちロボット12およびHMD20と、有線で、または無線で、通信可能に接続される。
【0029】
また、
図1のシステム10は頭部装着型表示装置であるHMD20を含み、このHMD20はロボット12による接触刺激の提示を受けるユーザ60の頭部64に装着される(
図4参照)。実施例では、このHMD20として、Oculus社製のOculus Rift(商品名)を使用し、このHMD20の位置すなわちユーザ60の頭部位置を精度よく検出するために、Oculus sensor(商品名)のような位置検出装置18aを利用した。
【0030】
つまり、サーバ16には、位置検出装置18aの出力が与えられる。位置検出装置18aは、頭部位置計測部として機能するが、この位置検出装置18aとして利用されるOculus sensorは、ジャイロセンサと加速度を組み合わせることで、HMD20(Oculus Rift)の位置を追跡することによって、ユーザ60の頭部64の位置を精度よく検出することができる。
【0031】
上記のとおり、ロボット12は床に固定されており、ロボット12に対するHMD20の初期位置を設定または登録することにより、実空間におけるHMD20の位置すなわちユーザ60の頭部位置を検出することができる。したがって、この実施例では、CPU16aは、実空間におけるロボット12とユーザ60の頭部位置の位置関係を用いて、仮想空間における仮想エージェントおよび視点(仮想のカメラ)の位置を制御する。HMD20はいわゆる一人称視点の画像(この実施例では、仮想エージェント)を表示するため、仮想のカメラの位置は仮想空間におけるユーザ60の頭部位置に相当する。また、仮想のカメラの注視点は、仮想空間におけるロボット12の所定の位置に設定する。たとえば、所定の位置は、仮想空間におけるロボット12の中心に設定される。これは一例であり、様々な大きさの仮想エージェントがHMD20に表示される画像に収まれば、他の位置が採用されてもよい。
【0032】
ただし、仮想空間においてロボット12自体が描画されることはなく、仮想エージェントを仮想空間に配置したり、仮想空間における仮想のカメラの位置を決定したりする場合に、ロボット12の位置等が用いられるだけである。たとえば、ロボット12の位置(フレーム120aの中心の位置)が3次元の仮想空間における原点に設定され、ロボット12のフレーム120aおよび120cと平行な方向がX軸の方向に設定され、フレーム120bと平行な方向がZ軸の方向に設定され、X軸およびZ軸の両方に垂直な方向がY軸の方向に設定される。
【0033】
サーバ16には、さらに環境音やユーザ60の声を収集するマイク18bおよび環境画像やユーザ60の画像を取得するカメラ18cなどが接続される。マイク18bが収集した音声データがサーバ16に入力され、サーバ16はその音声データを用いて音声認識をすることができる。カメラ18cからの画像データがサーバ16に入力され、サーバ16はその画像データを処理して、たとえば個人同定をすることができる。
【0034】
この実施例では、ロボット12はユーザ60と対話することができるようにされている。そのために、サーバ16のメモリ16bには、そのようなユーザ60との対話に必要な話題およびその話題に応じたシナリオが予め設定される。ただし、先に説明したように、サーバ16を通して遠隔オペレータがユーザ60と対話することもできる。
【0035】
上述のHMD20は、たとえば90Hzのリフレッシュレートで110°視野の高解像度の立体画像を表示することができる。
【0036】
HMD20は、サーバ16から送信される画像データによって、後述の
図5-
図8に示すような仮想エージェント70(70a、70b、70c)を表示する。このことにより、ユーザ60の視覚または/および聴覚に対する刺激(視覚刺激)を付与する。
【0037】
そのため、サーバ16のメモリ16bには、性別や年代の異なる複数の仮想エージェント70の画像データを予め設定している。画像データは、仮想エージェント70が直立している静止画のデータのみならず、所定の動作(この実施例では、挨拶、握手および歩行)を行う場合のアニメーションのデータを含む。
【0038】
そして、サーバ16は、ロボット12と協働する(インタラクションする)ユーザ60を同定した後、同定したユーザ60に適合する性別や年代の仮想エージェント70を選択して、その画像データを、ネットワーク14を介して、HMD20に送る。これによって、HMD20がユーザ60に適合した仮想エージェント70を表示することができる。ただし、仮想エージェント70は、ユーザ60によって登録されるようにしてもよい。
【0039】
この実施例では、ロボット12には、複数の仮想エージェント70を割り当てることができる。この実施例では、ロボット12に割り当てる仮想エージェント70の数は、ロボット12のアームの数以下である。したがって、ロボット12の3つのアーム122、124および126に対応して、1体、2体または3体の仮想エージェント70が割り当てられる。
【0040】
ロボット12に対して何体の仮想エージェント70を割り当てるかは、ユーザ60が決定することができる。ただし、このシステム10をゲームなどの任意のアプリケーションに適用する場合には、当該アプリケーションのシナリオに応じて固定的にまたは動的に決定することができる。
【0041】
1体の仮想エージェント70がロボット12に割り当てられる場合には、1体の仮想エージェント70がアーム122および126に割り当てられる。2体の仮想エージェント70がロボット12に割り当てられる場合には、2体のうちの一方の仮想エージェント70がアーム122に割り当てられ、2体のうちの他方の仮想エージェント70がアーム126に割り当てられる。3体の仮想エージェント70がロボット12に割り当てられる場合には、3体のうちの1体の仮想エージェント70がアーム122に割り当てられ、残り2体のうちの一方の仮想エージェント70がアーム124に割り当てられ、残り2体のうちの他方の仮想エージェント70がアーム126に割り当てられる。
【0042】
ただし、これは一例であり限定される必要はない。また、割り当てられた複数の仮想エージェント70は、互いに重ならないようにHMD20に表示される。
【0043】
なお、1体の仮想エージェント70がロボット12に割り当てられる場合については、本願発明の本質的な内容ではなく、また、出願人が先に出願し、既に公開された特開2019-45928号に開示された内容と重複するため、詳細な説明については省略する。
【0044】
図2では省略するが、ロボット12の上部(たとえば、フレーム120bの上端部)にはスピーカおよびマイクが取り付けられており、ロボット12は、ユーザ60に対して発話したり、ユーザ60の発話を聞き取ったりすることができる。発話のための音声合成ソフトウェアとしては、XIMERA(ATR音声言語研究所:商品名)を採用した。
【0045】
図3はロボット12の電気的な構成の一例を示すブロック図である。
図3に示すように、ロボット12は、ロボット12の全体制御を司るCPU36を備える。CPU36は、バス38を通して通信モジュール40に接続され、したがって、CPU36は通信モジュール40を介して、ネットワーク14すなわちサーバ16と、有線で、または無線で、通信可能に接続される。
【0046】
CPU36はまた、バス38を通してメモリ42にアクセスでき、このメモリ42に設定されているプログラムやデータに従って、バス38を通してアクチュエータ制御回路44に指令値を与え、各アクチュエータA1‐Anの動作を制御する。アクチュエータ制御回路44は、CPU36から与えられる指令値に応じた数のパルス電力を生成し、それを該当するステッピングモータに与えることによって、各アクチュエータA1‐Anを駆動する。
【0047】
ただし、アクチュエータとしてはこのようなステッピングモータを用いるものの他、サーボモータを用いるアクチュエータ、流体アクチュエータなど任意のアクチュエータが利用可能である。
【0048】
ここで、アクチュエータA1‐Anは関節122c、122d、124c、124d、126cおよび126dのアクチュエータ(ステッピングモータ)である。したがって、アクチュエータ制御回路44は関節制御部としても機能する。
【0049】
センサI/F(インタフェース)46は、バス38を介して、CPU36に接続され、触覚センサ48およびカメラ50からのそれぞれの出力を受ける。
【0050】
触覚センサ48は、たとえばタッチセンサであり、ロボット12の触覚の一部を構成する。つまり、触覚センサ48は、人間や他の物体等がロボット12に触れたか否かを検出する。たとえば、触覚センサ48がロボット12のアーム122、124および126の前腕(フレーム122a、124aおよび126a)にそれぞれ設けられ、ユーザ60の手がロボット12のアーム122、124、126に触れたかどうかを検知することができる。
【0051】
触覚センサ48はさらに感圧センサとしても機能する。このような触覚センサ48は、一例として、たとえば高分子ピエゾセンサシートで形成され、たとえば腕28の内面側に、複数のセンサシートが適宜分散して設けられる。このような触覚センサ48は、ユーザ60と握手したロボット12の前腕(フレーム122a、124a、126a)に掛かる圧力を検知することができる。
【0052】
触覚センサ48からの出力(検出データ)は、センサI/F46を介してCPU36に与えられる。したがって、CPU36は、人間や他の物体等がロボット12に触れたこと(およびその強弱ないし圧力)および人間や他の物体等がロボット12から離れたことを検出することができる。
【0053】
さらに、触覚センサ48が検出した圧力データはCPU36から出力され、通信モジュール40およびネットワーク14を介してサーバ16に与えられる。
【0054】
カメラ50は、イメージセンサであり、ロボット12の視覚の一部を構成する。つまり、カメラ50は、ロボット12の眼から見た画像ないし画像を検出するために用いられる。この実施例では、カメラ50の撮影画像(動画ないし静止画)に対応するデータ(画像データ)は、センサI/F46を介してCPU36に与えられる。CPU36は、撮影画像の変化を検出するのみならず、その画像データを、通信モジュール40およびネットワーク14(
図1)を介してサーバ16に送信する。そして、サーバ16は、受信した画像データをモニタ(図示せず)に出力する。したがって、カメラ50の撮影画像がモニタに表示される。
【0055】
また、スピーカ54およびマイク56は、入出力I/F52に接続される。スピーカ54は、ロボット12が発話を行う際に音声を出力する。サーバ16の操作者ないしオペレータ(以下、「遠隔オペレータ」ということがある。)が直接発話を行う場合、ネットワーク14、通信モジュール40および入出力I/F52を通して当該音声が出力される。具体的には、遠隔オペレータがマイク56を通して発話すると、対応する音声データがサーバ16からネットワーク14を介してCPU36に与えられる。そして、CPU36は、その音声データを、入出力I/F52を介してスピーカ54から出力する。
【0056】
マイク56は、音センサであり、ロボット12の聴覚の一部を構成する。このマイク56は、指向性を有し、主として、ロボット12と対話(コミュニケーション)するユーザ60(人)の音声を検出するために用いられる。
【0057】
ロボット12のメモリ42は、たとえばRAMおよびHDDであり、音声認識プログラムおよび上述のXIMERAのような音声合成プログラムが予め設定されている。音声認識プログラムは、マイク56を通して入力される、人間がロボット12に対して発話した内容をCPU36が認識するためのプログラムであり、CPU36は、たとえばDPマッチングや隠れマルコフ法(Hidden Markov Model:HMM)により、人間の発話内容を音声認識する。
【0058】
CPU36は、その音声認識プログラムに従って、遠隔オペレータがマイク56を通して入力した発話を認識する。たとえば、上述のHMM法やディープニューラルネットワーク(Deep Neural Network:DNN)のような音響モデルを用いて発話音声を検出できる。
【0059】
遠隔オペレータの音声を直接スピーカ54から出力する外に、ロボット12から合成音声によって発話させることができる。CPU36は、サーバ16から合成音声によってスピーカ54から発話する指示が入力されたとき、このサーバ16から与えられる合成音声データに従って合成音声をスピーカ54に出力する。
【0060】
この実施例では基本的に、ロボット12のすべての動作は、オペレータ(図示せず)が操作するサーバ16から与えられる。そのために、CPU36は、センサI/F46を通して取得するセンサデータや、入出力I/F52を通して取得する音声データや画像データを、通信モジュール40からネットワーク14を経由して、サーバ16のCPU16aに与える。サーバ16は、それらのデータを得て、ロボット12の状態を知ることができる。
【0061】
ただし、サーバ16は、位置検出装置18aからの位置情報と圧力情報を使用して、仮想エージェント70とロボット12の両方の動作を自律的に制御することもできる。
【0062】
図4はユーザ60がシステム10を使用する場合の状態を横から見た場合の一例を示す。
図4に示すように、ユーザ60はHMD20を装着し、ロボット12の前方に正対して立つ。つまり、ロボット12とユーザ60は向かい合っている。ロボット12とユーザ60は対話ないし会話することができる。また、ユーザ60がロボット12に近づき、ロボット12とユーザ60の距離dが所定距離df以下になると、ロボット12はアーム122、124および126でユーザ60に触れることができる。この場合、ユーザ60がロボット12のアーム122、124および126の少なくとも1つに触れることができる。一例として、所定距離dfは、70cm-1mであり、アーム122、124および126の長さによって決定される。
【0063】
上述したように、ロボット12には、複数の仮想エージェント70を割り当てることができる。2体の仮想エージェント70がロボット12に割り当てられる場合には、一方の仮想エージェント70がロボット12のアーム122に重なる位置に配置され、他方の仮想エージェント70がロボット12のアーム126に重なる位置に配置される。
図5に示す例では、仮想エージェント70aの左腕がアーム122に重なり、仮想エージェント70bの右腕がアーム126に重なるように、仮想エージェント70aおよび70bが仮想空間に配置される。つまり、2体の仮想エージェント70がロボット12に割り当てられる場合には、ロボット12のアーム122が仮想エージェント70aの左腕に対応し、ロボット12のアーム126が仮想エージェント70bの右腕に対応する。
【0064】
また、3体の仮想エージェント70がロボット12に割り当てられる場合には、3体のうちの1体の仮想エージェント70がロボット12のアーム122に重なる位置に配置され、残りの2体のうちの一方の仮想エージェント70bがロボット12のアーム126に重なる位置に配置され、残りの2体のうちの他方の仮想エージェント70cがロボット12のアーム124に重なる位置に配置される。
図6に示す例では、仮想エージェント70aの右腕がロボット12のアーム122に重なる位置に配置され、仮想エージェント70bの右腕がロボット12のアーム126に重なる位置に配置され、仮想エージェント70cの左腕がロボット12のアーム124に重なる位置に配置される。つまり、3体の仮想エージェント70がロボット12に割り当てられる場合には、ロボット12のアーム122が仮想エージェント70aの右腕に対応し、ロボット12のアーム124が仮想エージェント70cの左腕に対応し、ロボット12のアーム126が仮想エージェント70bの右腕に対応する。
【0065】
したがって、サーバ16のCPU16aは、ロボット12に接近するユーザ60(人ないし参加者)60に対して、複数の仮想エージェント70の各々が、個別にユーザ60に対して第1の所定の動作を行うとともに、ユーザ60に対して第1の所定の動作を行う仮想エージェント70に同期して、当該仮想エージェント70が割り当てられたアーム122、124または126を動作させる処理(以下、「第1疑似接触処理」という)を実行することができる。ただし、アーム122、124または126の動作は、第1の所定の動作に応じた動作である。
【0066】
また、サーバ16のCPU16aは、仮想空間において、複数の仮想エージェント70を仮想空間内のユーザ60に近づけて、複数の仮想エージェント70がユーザ60に対して同時に第2の所定の動作を行うとともに、複数の仮想エージェント70が割り当てられたアーム122およびアーム124、または、アーム122、124および126を動作させる処理(以下、「第2疑似接触処理」という)を実行することができる。ただし、アーム122、124および126の動作は、第2の所定の動作に応じた動作である。
【0067】
この実施例では、第1の所定の動作および第2の所定の動作は握手である。一例として、第1疑似接触処理は、仮想空間に設定された握手会の会場において、ユーザ60が、アイドルである複数の仮想エージェント70と個別に握手するような状況において実行される。一方、第2疑似接触処理は、ユーザ60がアイドルであり、複数のファンである複数の仮想エージェント70に囲まれ、各仮想エージェント70から握手を求められている状況において実行される。
【0068】
したがって、第1疑似接触処理および第2疑似接触処理のうち、いずれの処理を実行するかは、サーバ16の操作者ないし遠隔オペレータが決定したり、システム10が適用されるアプリケーションのシナリオ(文脈)によって決定されたりする。ただし、アプリケーションのシナリオは、ユーザ60がどの選択肢を選んだかに応じて可変的に決定されることがある。
【0069】
たとえば、第1疑似接触処理では、ユーザ60はロボット12に割り当てられた1体、2体または3体の仮想エージェント70と対話し、ユーザ60がロボット12と握手できる所定距離dfまで接近すると、サーバ16のCPU16aは、仮想エージェント70とロボット12の両方に信号を送信し、HMD20に仮想エージェント70の握手のアニメーションを表示させるとともに、ロボット12に握手を開始させる。つまり、ユーザ60に対する接触動作が実行される。したがって、ユーザ60は、ロボット12のアーム122、124または126を握って握手することができ、握ったアーム122、124または126に割り当てられた仮想エージェント70と握手している体感を得る。つまり、疑似的な接触がユーザ60に提示される。ただし、複数の仮想エージェント70のうち、握手のアニメーションが表示されるのは、ユーザ60との距離が最も近いアーム122、124または126に割り当てられた仮想エージェント70のみである。
【0070】
たとえば、2体の仮想エージェント70がロボット12に割り当てられている場合において、ユーザ60が仮想エージェント70aに近づくと、
図7に示すように、仮想エージェント70aが握手を行い、これに関連(または、同期)して、仮想エージェント70aに対応するアーム122が動作される。つまり、ロボット12はアーム122を用いて握手を行う。したがって、ユーザ60は、HMD20で仮想エージェント70aが握手する様子を見ながら、ロボット12のアーム122を握って握手する。つまり、HMD20に表示された仮想エージェント70のアニメーションによる視覚刺激がユーザ60に提示されるとともに、ロボット12の動作による接触刺激がユーザ60に与えられる。
【0071】
図示は省略するが、カメラ18cの画像などからユーザの手の動きを検出可能にしておくことにより、ユーザが握手を行う場合に、ユーザの手の画像もHMD20に表示することができる。ただし、ユーザの手の動きを検出しない場合であっても、ユーザの手等がロボット12のアームに触れたことは触覚センサ48の出力から知ることができるため、ユーザ手等がロボット12のアームに触れたことが検知された場合に、ユーザの手の画像をHMD20に表示するようにしてもよい。以下、ユーザが握手する場合について同様である。
【0072】
また、図示は省略するが、第1疑似接触処理では、3体の仮想エージェント70がロボット12に割り当てられた場合も、同様に、仮想空間において、ユーザ60(視点)が最も近づいた仮想エージェント70が握手を行い、ロボット12は、当該仮想エージェント70に対応するアーム122、124または126を用いて握手の動作を実行する。
【0073】
なお、第1疑似接触処理では、1体の仮想エージェント70がロボット12に割り当てられた場合には、仮想空間において、ユーザ60(視点)が当該仮想エージェント70に近づくと、当該仮想エージェント70は握手を行い、ロボット12は、当該仮想エージェント70が対応するアーム122または124を用いて握手の動作を実行する。
【0074】
また、この実施例では、ユーザ60と各仮想エージェント70の親密度が設定されており、第1疑似接触処理においては、ユーザ60が仮想エージェント70と握手すると、当該ユーザ60に対する当該仮想エージェント70の親密度が向上される。たとえば、握手をしたことが無い仮想エージェント70の親密度は0に設定され、握手をする度に、親密度が1加算される。たとえば、親密度は、仮想エージェント70を選択する際の条件として使用することができ、また、挨拶するときの発話内容の決定に使用することができる。仮想エージェント70を選択する場合に、親密度が高いまたは低い仮想エージェント70を選択することができる。また、親密度が0のユーザ60に対しては“はじめまして”と挨拶し、親密度が1以上のユーザ60に対しては“こんにちは”または“久しぶり”と挨拶することができる。これらは一例であり、親密度は他の用途に使用されてもよい。
【0075】
また、第1疑似接触処理では、複数の仮想エージェント70のうちの少なくとも1つの仮想エージェント70がユーザ60に対して挨拶したり、複数の仮想エージェント70はユーザ60と個別に対話したりする。仮想エージェント70がユーザ60に挨拶することで、ユーザ60はロボット12に近づくように誘導される。また、ユーザ60が複数の仮想エージェント70と個別に対話する場合には、一例として、複数の仮想エージェント70は、順番にユーザ60に話しかけ、複数の仮想エージェント70の発話が終了すると、次にユーザ60が発話する。
【0076】
なお、本件は、ロボット12の動作によって、ユーザ60に、仮想エージェント70の動作を疑似的に体感させる、つまり、疑似的接触を提示することが目的であるため、ユーザ60と仮想エージェント、70は対話しなくてもよい。
【0077】
また、第1疑似接触処理は、ユーザ60がロボット12から離れる、ロボット12に対して手を振る、またはユーザ60がHMD20を外すなどの特定の動作を行ったり、ユーザ60が「さようなら」または「ばいばい」などの特定の内容を発話したりした場合に、第1疑似接触処理は終了される。このことは、第2疑似接触処理を終了する場合についても同様である。なお、ユーザ60がHMD20を外したことはカメラ18cの画像に基づいて検出することができる。
【0078】
第2疑似接触処理では、ロボット12に割り当てられた1体、2体および3体の仮想エージェント70がユーザ60に近づき、ユーザ60はロボット12に割り当てられた1体、2体または3体の仮想エージェント70と握手する。ユーザ60がロボット12と握手できる所定距離dfまで接近すると、サーバ16のCPU16aは、第2疑似接触処理を開始する。このようにするのは、第2疑似接触処理では、仮想空間において、仮想エージェント70をユーザ60(視点)に近づけて握手するため、ユーザ60はロボット12と握手できる距離に近づいている必要があるからである。
【0079】
なお、第2疑似接触処理では、仮想エージェント70をユーザ(視点)に近づけるように移動させるため、この実施例では、サーバ16は、第2疑似接触処理を開始したときに、1または複数の仮想エージェント70を描画する場合には、実空間のロボット12とユーザ60の位置関係よりも、1または複数の仮想エージェント70を視点から離した位置に配置(描画)する。
【0080】
第2疑似接触処理が開始されると、ロボット12に割り当てられた1体、2体または3体の仮想エージェント70は次第にユーザ60(仮想のカメラ)に近づけられる。ロボット12に割り当てられた1体、2体または3体の仮想エージェント70とロボット12の各々に信号を送信し、ロボット12に割り当てられたすべての仮想エージェント70の握手のアニメーションをHMD20に表示させるとともに、ロボット12に握手を開始させる。つまり、ユーザ60に対する接触動作が実行される。ただし、第2疑似接触処理では、ロボット12に割り当てられたすべての仮想エージェント70が同時に握手を行うため、ロボット12が握手を行う場合には、ロボット12に割り当てられたすべての仮想エージェント70に対応するアームが動作される。つまり、1体の仮想エージェント70および2体の仮想エージェント70がロボット12に割り当てられている場合には、アーム122および126が動作される。また、3体の仮想エージェント70がロボット12に割り当てられている場合には、アーム122、124および126が動作される。したがって、ユーザ60は、ロボット12のアーム122、124および126のうちのいずれか1つまたは2つを握って握手することができ、ロボット12に割り当てられた1体、2体または3体のすべての仮想エージェント70と握手している体感を得る。つまり、疑似的な接触がユーザ60に提示される。
【0081】
たとえば、3体の仮想エージェント70がロボット12に割り当てられている場合において、仮想空間において、3体の仮想エージェント70がユーザ60(視点)に近づくと、
図8に示すように、3体の仮想エージェント70(70a、70b、70c)が握手を行い、これに関連(または、同期)して、3体の仮想エージェント70の各々に対応するアーム122、124および126が動作される。つまり、ロボット12はアーム122、124および126を用いて握手を行う。したがって、ユーザ60は、HMD20で3体の仮想エージェント70が握手する様子を見ながら、ロボット12のアーム122、124および126のうちの1つまたは2つを握って握手する。つまり、HMD20に表示された仮想エージェント70のアニメーションによる視覚刺激がユーザ60に提示されるとともに、ロボット12の動作による接触刺激がユーザ60に与えられる。
【0082】
図示は省略するが、第2疑似接触処理では、2体の仮想エージェント70がロボット12に割り当てられた場合も、同様に、仮想空間において、2体の仮想エージェント70がユーザ60(視点)に近づくと、当該2体の仮想エージェント70が握手を行い、ロボット12は、当該2体の仮想エージェント70に対応するアーム122および126を用いて握手の動作を実行する。
【0083】
なお、第2疑似接触処理では、1体の仮想エージェント70がロボット12に割り当てられた場合には、仮想空間において、1体の仮想エージェント70がユーザ60(視点)に近づくと、当該1体の仮想エージェント70は握手を行い、ロボット12は、当該1体の仮想エージェント70が対応するアーム122を用いて握手の動作を実行する。
【0084】
なお、詳細な説明は省略するが、ロボット12はアーム122、124、126のフレーム122a、124a、126aにそれぞれ触覚センサ48を備えるため、第1疑似接触処理および第2疑似接触処理において、ロボット12が握手を行っている場合には、ユーザ60の手等が触れたことを検出すると、アーム122、124、126を上下に反復移動させるようにしてもよい。
【0085】
また、アーム122、124、126の動きが仮想エージェント70の動きに関連して変化するが、サーバ16には、そのような関連性をより高めることができるように、ロボット12の動作(状態遷移)と、HMD20での仮想エージェント70の動作(状態遷移)とを同期させることができるプログラムが設定されている。
【0086】
そのプログラムでは、仮想エージェント70の腕および肩の関節の角度と一致するように、ロボット12の関節122c、122d、124c、124d、126c、126dの関節角(各関節を制御するアクチュエータA1-Anで検出され、モータ制御にフィードバックされる)が制御される。
【0087】
ただし、ロボット12の動作と仮想エージェント70の動作とは必ずしも同期させる必要はない。ロボット12の動作とHMD20に表示される仮想エージェント70の動作とが多少時間的に前後しても、ある程度のずれであれば問題がないことを確認している。
【0088】
ロボット12の動作と仮想エージェント70の動作とを同期させる場合には、ロボット12の動作の遅延時間を予め検出しておき、その遅延時間を考慮して、仮想エージェント70のアニメーションの再生を行えば良い。
【0089】
図9はサーバ16に内蔵されるメモリ(ここでは、RAM)16bのメモリマップ300の一例を示す。
図9に示すように、メモリ16bは、プログラム記憶領域302およびデータ記憶領域304を含む。プログラム記憶領域302には、この実施例の制御プログラムが記憶されている。
【0090】
制御プログラムは、通信プログラム302a、割当プログラム302b、センサ値検出プログラム302c、画像生成プログラム302dおよびロボット制御プログラム302eなどを含む。
【0091】
通信プログラム302aは、外部の機器、この実施例では、ロボット12およびHMD20のそれぞれと有線または無線で通信するためのプログラムである。
【0092】
割当プログラム302bは、ユーザの操作等に従って設定された仮想エージェント70の数に応じて、ロボット12に1または複数の仮想エージェント70を割り当てるためのプログラムである。
【0093】
センサ値検出プログラム302cは、各種のセンサ(この実施例では、触覚センサ48、カメラ50およびマイク56)からの出力を検出するためのプログラムである。
【0094】
画像生成プログラム302dは、HMD20に表示する画像データを生成するためのプログラムである。この実施例では、ロボット12に割り当てられた1または複数の仮想エージェント70の静止画および動画(アニメーション)についての画像データが生成される。
【0095】
ロボット制御プログラム302eは、ロボット12に割り当てられた1または複数の仮想エージェント70が所定の第1の動作および第2の動作(この実施例では、第1の動作および第2の動作は、握手)する場合に、各仮想エージェント70に対応するアーム(122および124、または、122、124および126)を、所定の第1の動作および第2の動作に同期して動作させる動作データと、必要に応じて、ロボット12の発話内容に対応する音声データをロボット12に送信するためのプログラムである。
【0096】
図示は省略するが、プログラム記憶領域302には、ロボット12の制御および仮想エージェント70の制御を行うための他のプログラムも記憶される。
【0097】
また、データ記憶領域304には、センサ値データ304a、アーム制御データ304b、発話データ304cおよび画像データ304dが記憶される。
【0098】
センサ値データ304aは、各種のセンサから出力されたデータであり、センサ値検出プログラム302cに従って検出されたデータである。アーム制御データ304bは、ロボット12のアーム122、124および126を制御するためのデータであり、具体的には、アクチュエータを駆動するためのデータである。
【0099】
発話データ304cは、ロボット12に割り当てられた仮想エージェント70が発話する内容の合成音声のデータである。ただし、発話(対話)コンテンツは予めデータベース(たとえば、サーバ16のメモリ16b)に設定しておいたコンテンツを利用したり、ウェブ上のAPI(Application Programming Interface)などを利用したりすることができる。
【0100】
画像データ304dは、仮想エージェント70をHMD20に表示するための画像データであり、画像生成プログラム302dに従って生成される。ただし、画像データ304dは、仮想エージェント70の静止画のデータおよび仮想エージェント70の動作についてのアニメーションのデータを含む。
【0101】
図示は省略するが、データ記憶領域304には、ロボット12の制御および仮想エージェント70の制御を行うために必要な他のデータが記憶されたり、タイマ(カウンタ)およびフラグが設けられたりする。
【0102】
図10および
図11は、
図1に示したサーバ16に内蔵されるCPU16aの第1疑似接触処理のフロー図である。
図12および
図13は、
図1に示したサーバ16に内蔵されるCPU16aの第2疑似接触処理のフロー図である。以下、第1疑似接触処理および第2疑似接触処理について説明するが、一度説明した処理と同じ処理については簡単に説明することにする。また、第1疑似接触および第2疑似接触の動作は、この実施例では、サーバ16のCPU16aがメモリ16bに設定されている制御プログラムに従って実行する。つまり、サーバ16のCPU16aがロボット12のCPU36(
図3)に指令信号を送ることによって、サーバ16が間接的にロボット12の動作も制御する。
【0103】
図10に示すように、CPU16aは、第1疑似接触処理を開始すると、ステップS1で、カメラ18cからの画像データを検出し、ステップS3で、ステップS1で検出した画像データに基づいて、ユーザ60が誰であるかを同定する。
【0104】
ただし、カメラ18cからの画像データではなく、たとえばRFID(radio frequency identifier)など他の手段を利用してユーザ60の個人同定を行うようにしてもよい。この場合、CPU16aは、ステップS1では、RFIDを検出する。
【0105】
なお、ユーザ60が予め登録されておらず、ステップS1で誰であるかを同定できなかったユーザ60に対しては、匿名のIDを暫定的に割り当てることによって処理を継続することもできる。
【0106】
続くステップS5では、仮想エージェント70の数を設定する。上述したように、仮想エージェント70の数は、ロボット12が備えるアームの本数以内で、ユーザの操作等に従って設定することができ、この実施例では、1-3のいずれかに設定される。
【0107】
続くステップS7では、仮想エージェント70の数が1であるかどうかを判断する。ステップS7で“YES”であれば、つまり、仮想エージェント70の数が1であれば、ステップS9で、HMD20に1体の仮想エージェント70を表示して、
図11に示すステップS17に進む。
【0108】
ただし、ステップS9では、ステップS3で同定したユーザ60に応じて選択された1体の仮想エージェント70が、その右腕がアーム122と重なり、かつ、その左腕がアーム124と重なる位置に描画された画像データがHMD20に送信される。
【0109】
この場合、サーバ16は、ユーザ60と同性または異性の仮想エージェント70の候補からランダムに選択してもよいし、ユーザ60が自分のために予め登録している仮想エージェント70を手動的に選択するようにしてもよい。
【0110】
ただし、上述の匿名IDを持つユーザ60に対しては、特定の仮想エージェント70を手動的に選択してもよい。
【0111】
このように仮想エージェント70を手動的に選択させる場合には、たとえばHMD20に選択スイッチ(図示せず)を設け、その選択スイッチの操作に応じて、サーバ16が仮想エージェント70の候補の画像を順次HMD20に表示し、所望の仮想エージェント70が表示されるとその選択スイッチの操作を停止すればよい。
【0112】
なお、ロボット12とユーザ60との距離dは、予め決定されているロボット12の位置と、位置検出装置18aからの位置情報に基づいて算出され、仮想空間において、視点(仮想のカメラ)とロボット12の距離が現実空間における距離dに相当する距離に設定され、仮想エージェント70が描画される。また、上述したように、仮想のカメラの注視点は、仮想空間におけるロボット12の中心である。以下、仮想エージェント70を描画して画像データを生成する場合について同様である。
【0113】
一方、ステップS7で“NO”であれば、つまり、仮想エージェント70の数が1でなければ、ステップS11で、仮想エージェント70の数が2であるかどうかを判断する。
【0114】
ステップS11で“YES”であれば、つまり、仮想エージェント70の数が2であれば、ステップS13で、HMD20に2体の仮想エージェント70を表示して、ステップS17に進む。
【0115】
ただし、ステップS13では、ステップS3で同定したユーザ60に応じて選択された2体の仮想エージェント70が、そのうちの一方の1体の左腕がアーム122と重なり、かつ、そのうちの他方の1体の右腕がアーム124と重なり、横並びで描画された画像データがHMD20に送信される。
【0116】
一方、ステップS11で“NO”であれば、つまり、仮想エージェント70の数が3であれば、ステップS15で、HMD20に3体の仮想エージェント70を表示して、ステップS17に進む。
【0117】
ただし、ステップS15では、ステップS3で同定したユーザ60に応じて選択された3体の仮想エージェント70が、そのうちの1体の右腕がアーム122と重なり、残りの2体のうちの一方の1体の右腕がアーム124と重なり、かつ、残りの2体のうちの他方の1体の左腕がアーム126と重なり、横並びで描画された画像データがHMD20に送信される。
【0118】
図11に示すように、ステップS17では、話題を選択し、対話を開始する。このとき、ユーザ60が対話のテーマを選択してもよいし、サーバ16に蓄積している各ユーザ60の対話履歴に基づいて特定のテーマを自動的に選択するようにしてもよい。また、ステップS17では、対話を開始するに際して、挨拶についての発話内容の合成音声データをロボット12およびHMD20に送信する。ただし、挨拶に代えて、ユーザ60をロボット12に近づけたり、対話を誘導したりする発話内容であってもよい。さらに、複数の仮想エージェント70がロボット12に割り当てられている場合には、複数の仮想エージェント70の各々についての発話内容の合成音声データが所定の順番でロボット12およびHMD20に送信される。ただし、これは一例であり、いずれか1体の仮想エージェント70の発話内容の合成音声データのみが送信されてもよい。ただし、仮想エージェント70の種類に応じて合成音声の音高(周波数)が変化される。
【0119】
続く、ステップS19では、ロボット12のすべてのアーム122、124および126を初期位置に戻す。つまり、CPU16aは、ロボット12に、アーム122、124および126を初期位置に戻す制御データを送信する。
【0120】
続いて、ステップS21で、一定時間(たとえば、2~3秒)待機する。ここでは、ロボット12およびすべての仮想エージェント70の移動および動作を一定時間停止させる。そして、ステップS23で、ユーザ60(視点)が仮想エージェント70と握手できる距離に近づいたかどうかを判断する。ただし、複数の仮想エージェント70がロボット12に割り当てられている場合には、いずれか1体の仮想エージェント70と握手できる距離に近づいたかどうかを判断する。つまり、現実空間において、ユーザ60と、仮想エージェント70が割り当てられたロボット12のアーム122、124、126との距離が所定距離df以下であるかどうかを判断する。具体的には、CPU16aは、ネットワーク14を通してロボット12から受信したカメラ50からの画像データに基づいて、ユーザ60が、アーム122、124および126の少なくとも1つと握手可能な位置まで近づいてきたかどうか判断する。
【0121】
ただし、カメラ50からの画像データをモニタ(図示せず)上で確認し、オペレータが判断するようにしてもよい。
【0122】
なお、このステップS23の判断のためには、実施例ではカメラ50の画像データを解析するようにしたが、たとえばロボット12を置いている床または天井のような環境に設置しているカメラ18c、先に説明したレーザ距離計(Oculus Sensors)、マットセンサのようなユーザ60位置検知システムを利用するようにしてもよい。
【0123】
ステップS23で“NO”であれば、つまり、ユーザ60が仮想エージェント70と握手できる距離に近づいていなければ、ステップS21に戻る。一方、ステップS23で“YES”であれば、つまり、ユーザ60が仮想エージェント70と握手できる距離に近づいていれば、ステップS25で、ユーザ60に最も近い仮想エージェント70の腕をユーザ60(視点)に近づけて握手する。ここでは、CPU16aは、ユーザ60に最も近い仮想エージェント70の腕を仮想空間における視点の方向に近づけて握手するアニメーションを再生する。
【0124】
続くステップS27で、ユーザ60に最も近い仮想エージェント70に対応するロボット12のアーム122、124または126をユーザ60に近づけて握手する。ステップS27では、CPU16aは、アクチュエータ制御回路44を通して関節(122cと122d、124cと124d、または、126cと126d)のアクチュエータを制御することで、ユーザ60に最も近い仮想エージェント70に対応するロボット12のアーム122、124または126を、上腕(フレーム122b)に対する前腕(フレーム122a)の角度、上腕(フレーム124b)に対する前腕(フレーム124a)の角度、または、上腕(フレーム126b)に対する前腕(フレーム126a)の角度を70°に設定した状態で、ユーザ60が存在する方向に少し上げる(または、前に出す)。
【0125】
続いて、ステップS29で、当該仮想エージェント70の親密度を向上させ、ステップS31で、話題に応じた対話を実行する。ここでは、CPU16aは、ステップS17で選択した話題に応じた対話を実行する。ただし、対話の履歴を記憶しておくことにより、選択した話題について過去に対話したことが有る場合には、重複しない発言内容が選択される。
【0126】
また、発言とともに、仮想エージェント70が動作を行う場合には、この仮想エージェント70が割り当てられたアーム122、124または126も仮想エージェント70の動作に同期して動作される。
【0127】
そして、ステップS33では、ユーザ60が対話終了を希望しているかどうかを判断する。ここでは、CPU16aは、上記のようなユーザ60の特定の動作を検出したり、上記のようなユーザ60の特定の内容についての発話を検出したりした場合に、ユーザ60が対話終了を希望していると判断する。このことは、後述するステップS81の処理についても同様である。
【0128】
ステップS33で“NO”であれば、つまり、ユーザ60が対話終了を希望していない場合にはステップS31に戻って対話を続行する。一方、ステップS33で“YES”であれば、つまり、ユーザ60が対話終了を希望している場合には、第1疑似接触処理を終了する。
【0129】
また、
図12に示すように、CPU16aは、第2疑似接触処理を開始すると、ステップS51で、カメラ18cからの画像データを検出し、ステップS53で、ステップS51で検出した画像データに基づいて、ユーザ60が誰であるか同定する。
【0130】
ただし、第2疑似接触処理では、仮想エージェント70がユーザ60に近づくように、HMD20に画像を表示するため、上述したように、この第2疑似接触処理は、ユーザ60がロボット12と握手可能な位置に近づいたことを前提として開始される。
【0131】
続くステップS55で、仮想エージェント70の数を設定し、ステップS57で、仮想エージェント70の数が1であるかどうかを判断する。ステップS57で“YES”であれば、ステップS59で、HMD20に1体の仮想エージェント70を表示して、
図13に示すステップS67に進む。
【0132】
一方、ステップS57で“NO”であれば、ステップS61で、仮想エージェント70の数が2であるかどうかを判断する。ステップS61で“YES”であれば、ステップS63で、HMD20に2体の仮想エージェント70を表示して、ステップS67に進む。一方、ステップS61で“NO”であれば、ステップS65で、HMD20に3体の仮想エージェント70を表示して、ステップS67に進む。
【0133】
なお、第2疑似接触処理では、上述したように、仮想エージェント70をユーザ(視点)に近づけるように移動させるため、CPU16aは、ステップS59、S63およびS65において1または複数の仮想エージェント70を描画する場合には、実空間のロボット12とユーザ60の位置関係よりも、1または複数の仮想エージェント70を視点から離した位置に配置(描画)する。
【0134】
図13に示すように、ステップS67では、ロボット12のすべてのアーム122、124および126を初期位置に戻す。続いて、ステップS69で、一定時間待機する。次のステップS71では、すべての仮想エージェント70をユーザ60に接近させる。たとえば、CPU16aは、仮想空間において、すべての仮想エージェント70を視点に向けて所定距離(たとえば、70cm)移動させた場合の画像データを生成し、HMD20に送信する。
【0135】
そして、ステップS73で、すべての仮想エージェント70がユーザ60と握手できる距離に近づいたかどうかを判断する。ここでは、仮想空間において、すべての仮想エージェント70と視点の距離が、それぞれ、所定距離df以下になったかどうかを判断する。
【0136】
ステップS73で“NO”であれば、つまり、すべての仮想エージェント70がユーザ60と握手できる距離に近づいていなければ、ステップS69に戻る。一方、ステップS73で“YES”であれば、つまり、すべての仮想エージェント70が握手できる距離に近づいていれば、ステップS75で、すべての仮想エージェント70の腕をユーザ60に近づけて握手する。ここでは、CPU16aは、すべての仮想エージェント70の腕を仮想空間における視点の方向に近づけて握手するアニメーションを再生する。ただし、仮想エージェント70が1体の場合には、当該仮想エージェント70のアニメーションが再生される。仮想エージェント70が2体の場合には、当該2体の仮想エージェント70の各々のアニメーションが再生される。仮想エージェント70が3体の場合には、当該3体の仮想エージェント70のアニメーションの各々が再生される。
【0137】
続くステップS77では、すべての仮想エージェント70に対応するロボット12のアームをユーザ60に近づけて握手する。ステップS77では、CPU16aは、すべての仮想エージェント70に対応するロボット12のアームを、上腕に対する前腕の角度を70°に設定した状態で、ユーザ60が存在する方向に少し上げる(または、前に出す)。ただし、仮想エージェント70が1体の場合には、アーム122の動作が制御される。仮想エージェント70が2体の場合には、アーム122および124の動作が制御される。仮想エージェント70が3体の場合には、アーム122、124および126の動作が制御される。
【0138】
続いて、ステップS79で、一定時間(たとえば、2~3秒)待機し、ステップS81で、ユーザ60が握手終了を希望しているかどうかを判断する。ステップS81で“NO”であれば、つまり、ユーザ60が握手終了を希望していない場合には、ステップS79に戻る。一方、ステップS81で“YES”であれば、つまり、ユーザ60が握手終了を希望している場合には、第2疑似接触処理を終了する。
【0139】
この実施例によれば、HMDを利用して複数の仮想エージェントを用いた任意の視覚刺激を提示しながら、複数の仮想エージェントが割り当てられたロボットの複数のアームから接触刺激を提示するので、仮想エージェントに接触している体感を得ることができる。つまり、新しい疑似的接触提示システムを提供することができる。
【0140】
また、この実施例によれば、視覚刺激提示装置すなわちHMDが複数の仮想エージェントの動作を表示し、この動作に関連して、接触刺激提示装置の可動部すなわちロボットの複数のアームを動かすことよって接触刺激をユーザに提示するので、視覚刺激と接触刺激の一体感を高めることができる。
【0141】
なお、この実施例の第2疑似接触処理では、3体の仮想エージェントがロボットに割り当てられている場合には、3体の仮想エージェントをユーザ(視点)に近づけて動作を行うようにしたが、3体のうちの2体の仮想エージェントをユーザに近づけて動作を行うようにしてもよい。この場合、3体のうちの2体の仮想エージェントはランダムなどの所定のルールに従って、または、ユーザによって選択される。
【0142】
また、この実施例では、ロボットのアームは肘関節と肩関節に相当する関節を有する構成であるが、肘関節または肩関節のみを有する構成でもよい。肘関節のみを有する場合には、上腕を動かすことで握手を行うことができ、肩関節のみを有する場合には、腕全体を動かすことで握手を行うことができる。
【0143】
さらに、この実施例では、ロボットのアームを3本設けるようにしたが、アームは2本以上であれば、4本以上設けることも可能である。アームを4本以上設ける場合には、さらに多数の仮想エージェントをHMDに表示し、各仮想エージェントと個別にまたは同時にインタラクションすることができる。
【0144】
さらにまた、この実施例では、ユーザは仮想エージェントと握手する場合について説明したが、所定の動作は握手に限定される必要はなく、タッチであってもよい。
【0145】
なお、上述の実施例では、サーバが1台でシステムの各要素を制御するようにしたが、ロボット、サーバおよびHMDをそれぞれ別のコンピュータで制御するようにしてもよいし、任意の台数のコンピュータでシステムを管理および制御することができる。
【0146】
また、上述の実施例で示したHMDに表示する仮想エージェントとしては、3Dのコンピュータグラフィクスエージェントであればどのようなキャラクタを用いてもよい。そのため、ユーザに応じて、見た目や性別、服装、種族(人、動物、擬人化キャラクタなど)、リアルさ(アニメ調、実写調など)を変更してもよい。
【0147】
なお、上述の実施例で挙げた角度などの具体的数値はいずれも単なる例示であり、必要に応じて適宜変更可能である。
【符号の説明】
【0148】
10 …疑似的接触提示システム
12 …コミュニケーションロボット
16 …サーバ
20 …HMD
60 …ユーザ
70 …仮想エージェント
122、124、126 …ロボットアーム