図1は、実施例における情報処理システム1の構成例を示す。情報処理システム1は、ロボット10と、ユーザAが頭部に装着するヘッドマウントディスプレイ装置(HMD)100とを備える。HMD100は、両眼用の表示パネル102と、両耳用のイヤホン104と、マイク106とを備える。ここでは音声出力手段としてイヤホン104を採用しているが、耳に当てる形状のヘッドホンを採用してもよい。HMD100はアクセスポイント(AP)2を介して、ネットワーク4に接続される。AP2は無線アクセスポイントおよびルータの機能を有し、HMD100は、AP2と既知の無線通信プロトコルで接続するが、ケーブルで接続してもよい。
ロボット10は、アクチュエータ装置12と、アクチュエータ装置12により姿勢を変更可能に駆動される筐体20とを備える。筐体20には、右カメラ14a、左カメラ14b、右マイク16a、左マイク16bおよびスピーカ18が搭載される。以下、右カメラ14aおよび左カメラ14bを特に区別しない場合には「カメラ14」と呼び、右マイク16aおよび左マイク16bを特に区別しない場合には「マイク16」と呼ぶ。実施例においてカメラ14およびマイク16は、アクチュエータ装置12により駆動される筐体20に設けられるが、スピーカ18は、たとえばアクチュエータ装置12の半球状のハウジング36に設けられてもよい。ロボット10はアクセスポイント(AP)3を介して、ネットワーク4に接続される。ロボット10は、AP3と既知の無線通信プロトコルで接続するが、ケーブルで接続してもよい。
情報処理システム1において、HMD100とロボット10はネットワーク4を介して通信可能に接続する。なおHMD100とロボット10とが近くに存在する場合、両者はAPを介さずに、直接、無線または有線で通信可能に接続してもよい。情報処理システム1においてロボット10は、ユーザAのいわば分身として動作する。ユーザAが装着しているHMD100の動きはロボット10に伝達され、アクチュエータ装置12が、HMD100の動きに連動して筐体20を動かす。たとえばユーザAが首を前後に振ると、アクチュエータ装置12が筐体20を前後に振るように動かし、ユーザAが首を左右に振ると、アクチュエータ装置12が筐体20を左右に振るように動かす。これによりロボット10の周囲にいる人は、ユーザAがその場にいるかのような感覚をもって、ユーザAとコミュニケーションをとることができる。
右カメラ14aおよび左カメラ14bは、筐体20の前面にて横方向に所定の間隔を空けて配置される。右カメラ14aおよび左カメラ14bはステレオカメラを構成し、右カメラ14aは右目用画像を所定の周期で撮影し、左カメラ14bは左目用画像を所定の周期で撮影する。撮影された右目用画像および左目用画像は、リアルタイムでユーザAのHMD100に送信される。HMD100は、受信した右目用画像を右目用表示パネルに表示し、受信した左目用画像を左目用表示パネルに表示する。これによりユーザAは、ロボット10の筐体20が向いている方向の映像をリアルタイムで見ることができる。
右マイク16aおよび左マイク16bは、筐体20において横方向に所定の間隔を空けて配置される。右マイク16aおよび左マイク16bはステレオマイクを構成し、横方向に所定の間隔を空けて配置されることで、音源の位置に応じて音声が到達する時間が異なるようにされる。音声の到達時間の差は、右マイク16aおよび左マイク16bが生成する音声信号の位相差として表れる。なお右マイク16aおよび左マイク16bの音声信号の位相差を大きくするために、右マイク16aおよび左マイク16bは可能な限り離して、具体的には筐体20の両側面に配置されることが好ましい。
右マイク16aおよび左マイク16bで生成された音声信号は、後述するように加工されて、右耳用音声データおよび左耳用音声データとしてリアルタイムでユーザAのHMD100に送信される。HMD100は、受信した右耳用音声データを右耳用のイヤホン104から出力し、受信した左耳用音声データを左耳用のイヤホン104から出力する。これによりユーザAは、ロボット10の周囲の音声をリアルタイムで聞くことができる。
人間が左右方向の音源の位置を音波の両耳への到達時間の差によって知覚することは知られているが、実際には到達時間の差だけでなく、音波を集める耳介の形状、音波を中耳に伝える外耳道の形状等にも依存して音源の位置を知覚している。また人間の正面に対して右側または左側に音源がある場合、距離の近い側の耳介と比べると、距離の遠い側の耳介に音波が到達するためには経路中に顔が位置するため、音波の到達時間差は音源からの距離差以上に大きくなる。
一方で筐体20の前面は平坦な形状を有し、またマイク16は耳介や外耳道に相当する形状を有していないため、音声到達時間差は、実質的に音源と両マイクとの距離差に対応することになる。実施例では、筐体20の両側面に右マイク16aおよび左マイク16bを配置して両者を最大限離れた位置に設けているが、右マイク16aで生成した音声信号と左マイク16bで生成した音声信号を増幅して右耳用イヤホンと左耳用イヤホンから出力しても、音源の左右方向の位置をよく知覚できないことが本発明者の実験により明らかになった。
つまり人間が普段聞き慣れている音と比べると、右マイク16aおよび左マイク16bが生成する音声信号の位相差は、左右方向を知覚するには小さいことが実験により判明した。そこでロボット10は、右マイク16aおよび左マイク16bの音声信号の位相差を増幅して、より人間の両耳で聞こえる音に近づけた音声データをHMD100に提供する仕組みを備えている。この仕組みについては後述する。
HMD100において、マイク106は、ユーザAが発した音声信号を生成する。ユーザAによる音声データは、リアルタイムでロボット10に送信され、ロボット10は、受信した音声データをスピーカ18から出力する。これによりロボット10の周辺にいる人は、ユーザAが発した音声をリアルタイムで聞くことができる。
このように情報処理システム1では、ロボット10がユーザAにより遠隔操作されてユーザAの顔の動きや音声を再現し、またユーザAがHMD100を通じて、ロボット周辺の画像や音声を視聴でき、ユーザAとロボット10周辺の人とが、リアルタイムでコミュニケーションをとることができる。このような情報処理システム1は、様々な環境において有用に利用される。
図2は、ロボット10の利用場面の例を示す。この例では、部屋で会議をしており、ユーザAの分身であるロボット10が、テーブル上に配置されている。この例でロボット10は正面の4人の方向を向いており、カメラ14は、正面の4人を画角内で撮影している。ロボット10は、カメラ14の撮影画像をリアルタイムでユーザAのHMD100に送信する。ユーザAはHMD100の表示パネル102を通じて部屋の状況を見ながら会議に参加し、発言するとユーザAの音声がロボット10にリアルタイムで送信され、ロボット10は、スピーカ18からユーザAの音声を出力する。
また上記したように、ロボット10は、左右のマイク16で生成した音声信号の位相差を増幅した音声データを、リアルタイムでHMD100に送信する。これによりユーザAは、部屋内で声を出した人が、筐体20が向いている方向に対して右側に位置するのか、または左側に位置するのか、または正面に位置するのかを知覚できる。ユーザAは、自分の右側の人が発言したと感じると、首を右に回して右側を向く。このときロボット10の筐体20もユーザAの首の動きに連動して右側に向くため、カメラ14は、右側に座っている参加者を撮影することになる。
このようにユーザAは、分身であるロボット10がユーザAの動きに連動することで、遠隔地にいながら、あたかも部屋にいるような感覚で会議に参加できる。また実際に部屋にいる参加者も、ユーザAの声や、また筐体20の動きから、ユーザAと違和感なくコミュニケーションをとることができる。なお図2に示す利用場面は一例であり、他の利用場面においてもユーザAは遠隔地にいながら、ロボット10から視聴データを得ることができる。
図3は、HMD100の外観形状の例を示す。この例においてHMD100は、出力機構部110および装着機構部112から構成される。装着機構部112は、ユーザが被ることにより頭部を一周してHMD100を頭部に固定する装着バンド108を含む。装着バンド108はユーザの頭囲に合わせて長さの調節が可能な素材または構造とする。
出力機構部110は、HMD100をユーザが装着した状態において左右の目を覆う形状の筐体114を含み、内部には目に正対する位置に表示パネル102を備える。表示パネル102は液晶パネルや有機ELパネルなどであってよい。筐体114内部には、表示パネル102とユーザの目との間に位置し、ユーザの視野角を拡大する左右一対の光学レンズが備えられる。
HMD100はさらに、装着時にユーザの耳に差し込まれるイヤホン104を備える。なおイヤホン104は、音声出力手段の一例であり、HMD100はヘッドホンを備えてもよい。このときHMD100とヘッドホンとは、一体に構成されてもよいが、別体であってもよい。
HMD100は、姿勢センサが検出したセンサ情報、およびマイク106からの音声信号を符号化した音声データをロボット10に送信し、またロボット10で生成された画像データおよび音声データを受信して、表示パネル102およびイヤホン104から出力する。
なお図3に示すHMD100は、両目を完全に覆う没入型(非透過型)のディスプレイ装置を示すが、透過型のディスプレイ装置であってもよい。また形状としては、図示されるような帽子型であってもよいが、眼鏡型であってもよい。なおHMD100は専用の頭部装着ディスプレイ装置のみならず、表示パネル、マイク、スピーカを有する端末装置と、端末装置の表示パネルをユーザの目の前の位置に固定する筐体とから構成されてもよい。端末装置は、たとえばスマートフォンやポータブルゲーム機など、比較的小型の表示パネルを有するものであってよい。
図4は、HMD100の機能ブロックを示す。制御部120は、画像信号、音声信号、センサ情報などの各種信号およびデータや、命令を処理して出力するメインプロセッサである。記憶部122は、制御部120が処理するデータや命令などを一時的に記憶する。姿勢センサ124は、HMD100の回転角度や傾きなどの姿勢情報を所定の周期で検出する。姿勢センサ124は、少なくとも3軸の加速度センサおよび3軸のジャイロセンサを含む。マイク106は、ユーザの声を電気信号に変換して音声信号を生成する。
通信制御部126は、ネットワークアダプタまたはアンテナを介して、有線または無線通信により、ロボット10との間で信号やデータを送受信する。通信制御部126は、制御部120から、姿勢センサ124で検出された姿勢情報、およびマイク106からの音声信号を符号化した音声データを受け取り、ロボット10に送信する。また通信制御部126は、ロボット10から、画像データおよび音声データを受け取り、制御部120に供給する。制御部120は、画像データおよび音声データをロボット10から受け取ると、画像データを表示パネル102に供給して表示させ、また音声データをイヤホン104に供給して音声出力させる。
図5は、ロボット10の外観構成を示す。筐体20は、カメラ14、マイク16およびスピーカ18を収容する。カメラ14およびスピーカ18は筐体前面に設けられ、マイク16は筐体側面に設けられる。筐体20は保護カバー19を有し、ロボット10を使用しない状態では、保護カバー19が筐体前面を覆う閉位置に配置されて、カメラ14およびスピーカ18を保護する。図5に示す状態は、保護カバー19が閉位置から略180度回転した開位置に配置され、カメラ14が露出して、周囲を撮影可能となっている。保護カバー19は開位置で固定されるストッパ機構を有することが好ましい。
筐体20はアクチュエータ装置12によって姿勢を変更可能に支持されている。アクチュエータ装置12は、脚部40と、脚部40の上部に支持される半球状のハウジング36と、筐体20を駆動するための駆動機構50とを備える。駆動機構50は、長尺方向に第1貫通長孔32aを形成された第1円弧状アーム32と、長尺方向に第2貫通長孔34aを形成された第2円弧状アーム34と、第1円弧状アーム32と第2円弧状アーム34とを交差させた状態で、第1円弧状アーム32と第2円弧状アーム34とを回動可能に支持する台座30とを備える。台座30の上側は、カバー38により覆われており、カバー38で覆われた空間には、第1円弧状アーム32および第2円弧状アーム34をそれぞれ回転させるモータが配置されている。なお台座30は、ハウジング36に対して回動可能に支持されており、ハウジング36内には、台座30を回転させるモータが配置されている。
第1円弧状アーム32および第2円弧状アーム34は半円状に形成され、同じ回転中心を有するように両端部が台座30に支持される。半円状の第1円弧状アーム32の径は、半円状の第2円弧状アーム34の径よりも僅かに大きく、第1円弧状アーム32は、第2円弧状アーム34の外周側に配置される。第1円弧状アーム32と第2円弧状アーム34は、台座30において直交するように配置されてよい。実施例では、第1円弧状アーム32が台座30に支持された両端部を結ぶラインと、第2円弧状アーム34が台座30に支持された両端部を結ぶラインとが直交する。挿通部材42は、第1貫通長孔32aおよび第2貫通長孔34aに挿通されて、第1貫通長孔32aおよび第2貫通長孔34aの交差位置に配置される。挿通部材42は、第1円弧状アーム32および第2円弧状アーム34の回転により、第1貫通長孔32a内および第2貫通長孔34a内を摺動する。
図6は、挿通部材42の構成を示す。挿通部材42は、第1貫通長孔32aおよび第2貫通長孔34aの挿通状態を維持するように、第1貫通長孔32aよりも幅広の第1規制部42aと、第2貫通長孔34aよりも幅広の第2規制部42bとを備える。第1規制部42aは第1貫通長孔32aよりも上側に配置され、第2規制部42bは第2貫通長孔34aよりも下側に配置されて、挿通部材42が第1貫通長孔32aおよび第2貫通長孔34aから脱落することを防止する。挿通部材42を第1貫通長孔32aおよび第2貫通長孔34aに取り付ける際は、第1規制部42aまたは第2規制部42bのいずれか一方が軸部42cとは別体に形成され、軸部42cを第1貫通長孔32aおよび第2貫通長孔34aに挿入した状態で、軸部42cの端部に固定する構造をとってもよい。
軸部42cは、第1貫通長孔32aおよび第2貫通長孔34aに挿入される部分であり、第1貫通長孔32aおよび第2貫通長孔34aの交差箇所に常時位置する。軸部42cは、第1貫通長孔32a内および第2貫通長孔34a内において回転を規制される。実施例では軸部42cが、第1貫通長孔32aおよび第2貫通長孔34aの幅よりも僅かに狭い幅をもつ矩形断面を有し、第1貫通長孔32a内および第2貫通長孔34a内で回転を規制されるが、それ以外の手段により軸部42cの回転が規制されてよい。たとえば第2円弧状アーム34の内周面にレールが設けられ、第2規制部42bにレール溝が設けられて、レールとレール溝とが嵌合することで軸部42cの回転が規制されてもよい。第1規制部42aには筐体20が取り付けられ、軸部42cの回転が規制されることで、筐体20を所望の姿勢に維持することが可能となる。
なお軸部42cは、第1貫通長孔32aおよび第2貫通長孔34aの幅よりも狭い幅を有することで、第1貫通長孔32a内および第2貫通長孔34a内を摺動可能とする。これにより挿通部材42は、第1円弧状アーム32および第2円弧状アーム34の回転により、第1貫通長孔32aに沿って移動でき、また第2貫通長孔34aに沿って移動できる。
図7は、ロボット10の断面を示す。図7(a)は、第1円弧状アーム32と第2円弧状アーム34とが台座30に対して90度起立した状態で第2円弧状アーム34に沿って切断した断面を示し、図7(b)は、第1円弧状アーム32と第2円弧状アーム34とが台座30に対して90度起立した状態で第1円弧状アーム32に沿って切断した断面を示す。
第1モータ52は、第1円弧状アーム32を回転させるために設けられ、第2モータ54は、第2円弧状アーム34を回転させるために設けられる。第1モータ52および第2モータ54は、台座30上に配置されて、台座30が回転すると、第1モータ52および第2モータ54も台座30とともに回転する。第3モータ56は、台座30を回転させるために設けられ、ハウジング36内に配置される。第1モータ52、第2モータ54および第3モータ56は、図示しない電源装置から電力を供給されて回転する。
第1モータ52が第1円弧状アーム32を回転し、第2モータ54が第2円弧状アーム34を回転し、第3モータ56が台座30を回転することで、アクチュエータ装置12は、挿通部材42に取り付けられた筐体20の向きおよび姿勢を変化させられる。
図8および図9は、ロボット10における筐体20の姿勢の例を示す図である。
図8(a)および(b)は、筐体20を左右方向に傾けた例を示す。図9(a)および(b)は、筐体20を前後方向に傾けた例を示す。このようにロボット10の駆動機構50は、筐体20に任意の姿勢をとらせることが可能となる。筐体20の姿勢は、第1モータ52および第2モータ54の駆動量を調整することで制御され、また筐体20の向きは、第3モータ56の駆動量を調整することで制御される。
図10は、ロボット10の機能ブロックを示す。ロボット10は、外部からの入力を受け付けて処理する入力系統22と、外部への出力を処理する出力系統24とを備える。入力系統22は、受信部60、センサ情報取得部62、動き検出部64、視線方向決定部66、アクチュエータ制御部68、音声データ取得部70および音声処理部72を備える。また出力系統24は、画像処理部80、音声処理部82および送信部90を備える。
図10において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、回路ブロック、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
上記したようにHMD100は、姿勢センサ124が検出したセンサ情報およびマイク106が生成した音声信号を符号化した音声データをロボット10に送信し、受信部60は、センサ情報および音声データを受信する。音声データ取得部70は、受信した音声データを取得し、音声処理部72が音声処理を実施して、スピーカ18から出力する。これによりロボット10は、ユーザAの音声をリアルタイムで再生し、ロボット10の周囲の人が、ユーザAの声を聞くことができる。
センサ情報取得部62は、HMD100の姿勢センサ124が検出した姿勢情報を取得する。動き検出部64は、ユーザAの頭部に装着されたHMD100の姿勢を検出する。視線方向決定部66は、動き検出部64により検出されたHMD100の姿勢に応じて筐体20のカメラ14の視線方向を定める。
動き検出部64は、HMD100を装着したユーザの頭部の姿勢を検出するヘッドトラッキング処理を行う。ヘッドトラッキング処理は、ユーザの頭部の姿勢に、HMD100の表示パネル102に表示する視野を連動させるために行われ、実施例のヘッドトラッキング処理では、HMD100の水平基準方向に対する回転角度と、水平面に対する傾き角度とが検出される。水平基準方向は、たとえばHMD100の電源がオンされたときに向いている方向として設定されてよい。
視線方向決定部66は、動き検出部64により検出されたHMD100の姿勢に応じて、視線方向を定める。この視線方向は、ユーザAの視線方向であり、ひいては分身であるロボット10のカメラ14の視線方向(光軸方向)である。
カメラ14の視線方向(光軸方向)をユーザAの視線方向に連動させるために、ロボット10の基準姿勢を事前に設定しておく必要がある。図5には、第1円弧状アーム32と第2円弧状アーム34とが台座30に対して90度起立した状態を示しているが、この状態を水平方向として設定し、またロボット10の電源がオンされたときに筐体20の前面が向いている方向を、水平基準方向として設定してよい。なおロボット10は、HMD100と同様に姿勢センサを有して、水平方向を自律的に設定できるようにしてもよい。
HMD100およびロボット10の基準姿勢を設定した状態で、視線方向決定部66は、動き検出部64により検出された回転角度および傾き角度を、そのままカメラ14の視線方向(光軸方向)として決定してよい。動き検出部64が、HMD100の回転角度および傾き角度を検出すると、視線方向決定部66は、HMD100の視線方向を3次元座標のベクトル(x,y,z)として決定し、このときロボット10のカメラ14の視線方向を同じ(x,y,z)と決定してもよく、また何らかの補正を加えた(x’,y’,z’)として決定してもよい。
アクチュエータ制御部68は、視線方向決定部66で決定された視線方向となるようにカメラ14の向きを制御する。具体的にアクチュエータ制御部68は、第1モータ52、第2モータ54、第3モータ56に供給する電力を調整して、HMD100の動きに、筐体20の動きを追従させる。アクチュエータ制御部68によるモータ駆動制御は、リアルタイムに実施され、したがって筐体20の向きは、ユーザAの視線の向きと同じように動かされる。
実施例のアクチュエータ装置12によれば、筐体20は、第1円弧状アーム32および第2円弧状アーム34の回転中心を基準として駆動されるが、この動きは人の首と同じ動きを示す。アクチュエータ装置12は、2本の半円アームを交差させた簡易な構造でユーザAの首の動きを再現する。
人は首の動きによって意思を伝達する。たとえば日本では首を縦に振ると肯定を、横に振ると否定を表現するが、アクチュエータ装置12は、ユーザAの首の動きと同じように筐体20を動かすため、ロボット10の周囲の人は、筐体20の動きによってもユーザAの意思を感じ取ることができる。そのためユーザAの首の動きを簡易な構造で再現できることは、テレイグジステンス技術において非常に有用である。
次に出力系統24について説明する。
出力系統24において、右カメラ14aおよび左カメラ14bは、アクチュエータ装置12により制御された方向に向けられて、それぞれの画角内を撮影する。右カメラ14aおよび左カメラ14bは、たとえば大人の平均的な両目の間隔となるように離れて配置されてよい。右カメラ14aが撮影した右目用画像データおよび左カメラ14bが撮影した左目用画像データは、送信部90からHMD100に送信されて、それぞれ表示パネル102の右半分および左半分に表示される。これらの画像は、右目および左目から見た視差画像を形成し、表示パネル102を2分割してなる領域にそれぞれ表示させることで、画像を立体視させることができる。なおユーザAは光学レンズを通して表示パネル102を見るために、画像処理部80は、予めレンズによる光学歪みを補正した画像データを生成して、HMD100に供給してもよい。
右カメラ14aおよび左カメラ14bは、所定の周期(たとえば1/60秒)で撮影を行い、送信部90は遅延なく画像データをHMD100に送信する。これによりユーザAはロボット10の周囲の状況をリアルタイムで見ることができ、また顔の向きを変えることで、見たい方向を見ることができる。
右マイク16aおよび左マイク16bは、ロボット10の周囲の音を電気信号に変換して音声信号を生成する。以下、右マイク16aが生成する音声信号を「第1音声信号」と呼び、左マイク16bが生成する音声信号を「第2音声信号」と呼ぶ。上記したように、右マイク16aおよび左マイク16bは、筐体20において横方向に離れて配置されているため、右マイク16aが生成する第1音声信号と左マイク16bが生成する第2音声信号には、位相差が生じる。
本発明者は、第1音声信号および第2音声信号を、そのままの位相差で符号化してHMD100に提供した場合に、ユーザが、音源の方向を認識できない、つまり音声が右側から聞こえてくるのか、または左側から聞こえてくるのかを判別しにくいという知見を実験により得た。実験では筐体20の横方向の幅を大人の人間の顔幅程度(16cm)に設定しているが、人間の耳における音波伝達構造をマイク16では再現できないために、第1音声信号および第2音声信号の位相差のみでは、人間が音源の方向を知覚するには足りないという結論が得られた。
これを解決する手段として、筐体20の横方向の幅を大きくして、第1音声信号と第2音声信号の位相差を大きくすることが考えられるが、その場合は筐体20の重量が重くなり、アクチュエータ装置12で使用するモータの出力を高める必要が生じる。また筐体20の横方向の幅を大きくすると、右マイク16aと左マイク16bの間隔が、人間の両耳の間隔よりも広くなるため、実際に人が音を聞く感覚とは異なる音声信号が取得されることになる。
そこで本発明者は、第1音声信号と第2音声信号の位相差を増幅することで、この問題を解決することを考え出した。音声処理部82は、以下に説明するように、右マイク16aが生成する第1音声信号および左マイク16bが生成する第2音声信号の位相差を増幅する機能を有する。なおロボット10は、リアルタイムでマイク音声をHMD100に伝達する必要があるため、音声処理部82は、位相差増幅機能を、ハードウェア回路によって実現する。
図11は、音声処理部82が備える位相差増幅装置82aの回路構成を示す。位相差増幅装置82aは、右マイク16aが生成した第1音声信号vRと左マイク16bが生成した第2音声信号vLの位相差を増幅して出力するアナログ回路装置である。
第1増幅器84aは、右マイク16aから第1音声信号vRを入力されると、第1音声信号vRを増幅した第1正相信号VR +と、第1音声信号vRを反転増幅した第1逆相信号VR −とを出力する。第1増幅器84aは、入力信号の正相成分を増幅して出力するオペアンプと、入力信号の逆相成分を増幅して出力するオペアンプとから構成されてもよいが、正相成分および逆相成分を出力する2つの出力端子を有するオペアンプから構成されてもよい。
また第2増幅器84bは、左マイク16bから第2音声信号vLを入力されると、第2音声信号vLを増幅した第2正相信号VL +と、第2音声信号vLを反転増幅した第2逆相信号VL −とを出力する。第2増幅器84bも、第1増幅器84aと同様に、それぞれ正相成分および逆相成分を出力する2つのオペアンプから構成されてもよく、また正相成分および逆相成分の双方を出力する1つのオペアンプから構成されてもよい。
第1加算器86aは、第1正相信号VR +を第1係数倍(α倍)した信号と、第2逆相信号VL −を第2係数倍(β倍)した信号とを加算した出力信号VrOUTを出力する。ここでα、βは、0より大きく、1以下の値を示す。なおαとβは異なるように設定され、この例ではα>βである。出力信号VrOUTは、以下の式で表現される。
VrOUT=α×VR ++β×VL −
第1加算器86aは、第1正相信号VR +をα倍に分圧する分圧回路の出力と、第2逆相信号VL −をβ倍に分圧する分圧回路の出力とを加算する加算回路であってもよいが、第1正相信号VR +をα倍した電圧信号と第2逆相信号VL −をβ倍した電圧信号とを加算するオペアンプであってもよい。
第2加算器86bは、第2正相信号VL +を第1係数倍(α倍)した信号と、第1逆相信号VR −を第2係数倍(β倍)した信号とを加算した出力信号VlOUTを出力する。出力信号VlOUTは、以下の式で表現される。
VlOUT=α×VL ++β×VR −
第2加算器86bは、第2正相信号VL +をα倍に分圧する分圧回路の出力と、第1逆相信号VR −をβ倍に分圧する分圧回路の出力とを加算する加算回路であってもよいが、第2正相信号VL +をα倍した電圧信号と第1逆相信号VR −をβ倍した電圧信号とを加算するオペアンプであってもよい。
第3増幅器88aは、第1加算器86aの出力信号VrOUTを第3係数倍(γ倍)してVROUTを出力し、第4増幅器88bは、第2加算器86bの出力信号VlOUTを第3係数倍(γ倍)してVLOUTを出力する。音声処理部82において、位相差増幅装置82aからの出力信号VROUT、VLOUTは、それぞれ音声符号化されて、右耳用音声データおよび左耳用音声データとして送信部90からHMD100に送信される。
図12は、信号波形の位相差を説明するための図である。図12(a)は、右マイク16aが生成する第1音声信号vRと左マイク16bが生成する第2音声信号vLの波形の関係を示す。ここでは説明の便宜上、第1音声信号vRと第2音声信号vLとをそれぞれ同倍に増幅した第1正相信号VR +と第2正相信号VL +との関係を示している。この入力波形では、ロボット10の筐体20から見て音源が右側に配置されており、第1正相信号VR +の位相の方が、第2正相信号VL +よりも僅かに進んでおり、また振幅は第1正相信号VR +の方が高い。
図12(b)は、第1加算器86aの出力信号VrOUTと第2加算器86bの出力信号VlOUTの波形の関係を示す。図12(a)に示す入力波形の位相差と比較すると、図12(b)に示す加算器の出力波形の位相差が広がっている(増幅している)ことが分かる。
図13は、入力信号波形の位相差を増幅する原理を説明するための図である。図13(a)は、第1正相信号VR +および第1逆相信号VR −と、第2正相信号VL +および第2逆相信号VL −を2次元座標系で表現している。第1正相信号VR +と第2正相信号VL +の位相差はθである。
図13(b)は、第1加算器86aの出力信号VrOUTと第2加算器86bの出力信号VlOUTを示す。上記したように、VrOUT、VlOUTは、
VrOUT=α×VR ++β×VL −
VlOUT=α×VL ++β×VR −
と表現される。図13(b)では、α=1.0、β=0.6を設定する。
図13(b)に示すように、VrOUTとVlOUTの位相差はθ’となり、図13(a)に示す位相差θよりも大きくなっている。このように位相差増幅装置82aは、入力された2つの音声信号の位相差を増幅する。
本発明者によるシミュレーションの結果、入力信号の位相差が15度のとき、出力信号の位相差は4倍の60度となり、入力信号の位相差が30度のとき、出力信号の位相差は3倍の90度となり、入力信号の位相差が45度のとき、出力信号の位相差は約2.7倍の120度となることが分かった。
このシミュレーション結果によると、位相差が小さいほど増幅率が大きくなっている。実際の筐体20では、入力信号の位相差は5度〜20度程度であり、位相差増幅装置82aは、この範囲における増幅率を大きくできることで、出力信号の位相差を、ユーザが音源の方向を聞き分けられる程度に広げられる。位相差増幅装置82aからの出力信号VROUT、VLOUTは、それぞれ音声符号化されて、右耳用音声データおよび左耳用音声データとして送信部90からHMD100に送信される。
HMD100において、右耳用音声データは、右耳用のイヤホン104から音声として出力され、左耳用音声データは、左耳用のイヤホン104から音声として出力される。ユーザAは、位相差を増幅された音声を両耳から聞くことで、音源の方向を認識する。ユーザAは、右側から声が聞こえてきたと感じれば、顔を右側に向ける。このときユーザAの顔の動きに連動してロボット10の筐体20が右側を向くため(図2参照)、ロボット10のカメラ14は、右側の環境を撮影して、撮影画像データをリアルタイムでHMD100に送信する。これによりユーザAは、発声した人の顔を見ながら話すことができ、従来にない優れたユーザインタフェースを実現できる。
なお上記した例では、α=1.0、β=0.6と設定したが、α、βの値は、実験により適切に設定されることが好ましい。図5に示すように、右マイク16aおよび左マイク16bは、筐体20の側面を窪ませた位置であって、前面からみて奥側の位置に設けている。マイク16における音波の伝達構造は、筐体側面の形状に依存するため、α、βの比は、実験により最適に求められることが好ましい。
なお図5において、マイク16は、後板17の横方向の内側に配置されている。これは後板17に、前方からの音波と後方からの音波の周波数特性を異ならせ、後方からの高域成分を低減させる役割をもたせるためである。つまり後板17は、マイク16に対して人の耳介のような機能をもち、後方からの音波が後板17を回り込んでマイク16に到達するようにしている。なお前方からの音波と後方からの音波の周波数特性を異ならせるために、後板17は、さらに上下方向および横方向に広げられて形成されてもよい。マイク16の後方に後板17のような音波遮蔽体を形成することで、ユーザAは、音源の前後方向の位置を聞き分けることも可能となる。
このように情報処理システム1では、ユーザAが、自分の分身であるロボット10を用いて、リアルタイムでロボット10の周囲にいる人達と自由にコミュニケーションをとることができる。以下では、情報処理システム1の利用可能性をさらに高める技術について提案する。
従来より、カメラの傾きを変えながら撮影した画像をスティッチ(縫い合わせ)して全天球パノラマ画像を生成する技術が知られている。最近では、専用のパンチルトカメラも販売されており、個人でも全天球パノラマ画像を撮影できるようになっている。
情報処理システム1において、ロボット10は、ユーザAの頭部の動きに応じた視線方向にカメラ14を向けて、周囲を撮影する。ユーザAが様々な方向を向くことで、カメラ14が様々な方向を撮影する。この撮影画像に、視線方向を表現する3次元ベクトルを付加して記録しておくことで、仮想的な全天球パノラマ画像を生成することが可能となる。
図14は、ロボット10の機能ブロックの変形例を示す。この機能ブロックは、図10に示す機能ブロックを前提としており、その中で視線方向決定部66から画像処理部80に対して、決定した視線方向が供給されることを示している。
ユーザAによるロボット10の使用中、送信部90は、両眼用の画像データおよび両耳用の音声データ(以下、まとめて「視聴データ」と呼ぶこともある)を、ネットワーク4経由でユーザAのHMD100に送信している。このとき送信部90は、同じ視聴データをネットワーク4経由でルータ5を介して処理装置200にも送信し、処理装置200はユーザAの視聴データを記録する。
処理装置200は、ユーザAの視聴データを記録しつつ、ユーザAの画像データをもとに全天球パノラマ画像をリアルタイム生成し、ユーザAとは異なるユーザBの視線方向に応じた画像をユーザBのHMD100aに提供する機能をもつ。なおHMD100aは、これまで説明したHMD100と同じ構成を備える。処理装置200は、たとえば単一のサーバにより構成されてもよいが、クラウドサービスを提供するサーバ群により構成されてもよい。
処理装置200が全天球パノラマ画像を生成できるようにするために、画像処理部80は、フレーム画像データのそれぞれに、視線方向決定部66から供給される視線方向を示すベクトル情報と、撮影開始点からの経過時間を示す撮影時間情報とを付加する。ベクトル情報は、ロボット10のカメラ14の視線方向を示す。撮影時間情報は、撮影開始点からの時間を表現するものであればよく、たとえば撮影された順番を示すフレーム番号であってもよい。
この技術では、ユーザAによるロボット10の使用中に、ユーザBがHMD100aを装着し、ロボット10から供給されるユーザAの視聴データをもとに生成される画像データおよび音声データを、HMD100aに提供する。ユーザAの視聴データをそのまま再生するだけであれば、処理装置200は、受信した視聴データをそのままユーザBのHMD100aにストリーミング配信するだけでよいが、この技術では、処理装置200が、ユーザAの画像データをもとに構成される全天球パノラマ画像から、ユーザBの視線方向にもとづいた画像を再構成して、ユーザBのHMD100aに提供できるようにする。なお音声データは、ユーザBのHMD100aにストリーミング配信される。
図15は、処理装置200の機能ブロックを示す。処理装置200は、受信部202、センサ情報取得部204、動き検出部206、視線方向決定部208、画像決定部210、音声決定部212、視聴データ提供部214、送信部216および記録部218を備える。記録部218は画像記録部220および音声記録部222を含む。受信部202が、ロボット10から送信された視聴データを受信すると、画像記録部220は、受信した画像データを順次記録し、音声記録部222は、受信した音声データを順次記録する。なお画像データは、フレーム画像ごとに、撮影時のベクトル情報および撮影時間情報を付加されている。
ユーザBは、HMD100aを通じて、処理装置200に、ユーザAの視聴データの再生指示を送信する。処理装置200は、再生指示を受け付けると、視聴データの再生処理を開始する。音声決定部212はユーザBに提供する音声データを決定し、音声記録部222に記録された音声データを、音声記録部222からただちに読み出し視聴データ提供部214に提供する。つまり音声決定部212は、ロボット10から提供される音声データを、HMD100aにストリーミング配信する。したがってユーザBは、ユーザAが聞いている音声と同じ音声をHMD100aのイヤホン104から聞くことができる。
処理装置200による再生処理中、受信部202は、ユーザBが装着したHMD100aから送信されるセンサ情報を受信し、センサ情報取得部204は、受信したセンサ情報を取得する。このセンサ情報は、姿勢センサ124がHMD100aの姿勢を検出した姿勢情報である。動き検出部206は、ユーザBの頭部に装着されたHMD100aの姿勢を検出する。視線方向決定部208は、動き検出部206により検出されたHMD100aの姿勢に応じて、全天球パノラマ画像における仮想カメラの視線方向を定める。画像決定部210はユーザBに提供する画像データを決定し、画像記録部220に記録された複数の画像データを用いて、決定された視線方向に向けた仮想カメラにより撮影される画像を合成して画像データを生成する。
視聴データ提供部214は、画像決定部210で決定された画像データと、音声決定部212で決定された音声データとを合わせた視聴データを、送信部216からユーザBのHMD100aに提供する。
図15において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、回路ブロック、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
処理装置200は、全方位のパノラマ画像を生成する。したがってユーザBが首を左または右に回して水平方向の視線を左または右に回転させることで、左方向または右方向のパノラマ画像がHMD100aの表示パネル102に表示され、またユーザBが首を上または下に傾けて、垂直方向に視線を傾けることで、上方向または下方向のパノラマ画像がHMD100aの表示パネル102に表示されるようになる。
図16は、処理装置200が生成する全天球パノラマ画像を説明するための図である。この技術では、ユーザBが球体の中心に位置し、視線の方向を変更することで、見える画像が変更される仮想環境を実現する。画像決定部210は、画像記録部220に記録されている画像データをスティッチ(縫い合わせ)して、全天球パノラマ画像を生成する。
実施例では、説明を単純にするためにロボット10がカメラ14をズームせず、一定の拡大率で画像データを取得する。そのため画像決定部210は、画像データに付加されたベクトル情報にもとづいて、画像データを全天球の内周面に張り合わせることで、全天球パノラマ画像を構成する。なお複数の画像データが重複する箇所については、最新の画像データで上書きし、これによりリアルタイムの状況に近い全天球パノラマ画像を構成できるようになる。
なお実際の画像決定部210の画像生成処理は、処理負荷を軽減するために、常に全天球パノラマ画像を再構成するのではなく、ユーザBが位置する中心点9から撮影されるフレーム画像7を動的に生成する処理となる。このとき画像決定部210は、仮想カメラ8の撮影範囲(画角)を、実際のロボット10のカメラ14の撮影範囲(画角)に対応するように設定することが好ましい。これによりユーザAの視線方向とユーザBの視線方向とが一致しているタイミングでは、ユーザBは、ユーザAと同じ画像を見られるようになる。
このように画像決定部210は、画像データにメタデータとして設定されているベクトル情報を用いて、イメージスティッチング処理を実施し、ユーザBの視線方向から定まる撮影範囲のフレーム画像7を生成する。動き検出部206は、ユーザBのヘッドトラッキング処理を行うことで、ユーザBの頭部(実際にはHMD100a)の回転角度および傾きを検出する。ここでHMD100aの回転角度は、水平面の基準方向に対する回転角度であり、基準方向は、たとえばHMD100aの電源がオンされたときに向いている方向として設定されてよい。またHMD100aの傾きは、水平面に対する傾斜角度である。ヘッドトラッキング処理として既知の技術が利用されてよく、動き検出部206は、HMD100aの姿勢センサが検出したセンサ情報から、HMD100aの回転角度および傾きを検出する。
視線方向決定部208は、検出したHMD100aの回転角度および傾きにしたがって、仮想球体における仮想カメラ8の姿勢を定める。仮想カメラ8は、仮想球体の中心点9から仮想球体の内周面を撮影するように配置されており、視線方向決定部208は、仮想カメラ8の光軸の向きを、ロボット10のカメラ14の光軸方向と一致するように決定してもよい。
ロボット10において、視線方向決定部66は、ユーザAのHMD100の視線方向を3次元座標のベクトル(x,y,z)として決定すると、ロボット10のカメラ14の視線方向を同じ(x,y,z)と決定してもよいことを説明した。処理装置200においても、視線方向決定部208は、ユーザBのHMD100aの視線方向を3次元座標のベクトル(x,y,z)として決定すると、仮想カメラ8の視線方向を同じ(x,y,z)と決定してもよい。また視線方向決定部66において、HMD100の視線方向を所定の変換式で補正してカメラ14の視線方向を求める場合には、視線方向決定部208においても、HMD100aの視線方向を同じ変換式で補正して仮想カメラ8の視線方向を求めてもよい。このように、それぞれの3次元座標系を取り扱うことで、ユーザAの視線方向とユーザBの視線方向とが一致しているタイミングでは、ユーザBは、ユーザAと同じ画像を見られるようになる。
画像決定部210は、仮想カメラ8のフレーム画像7を生成すると、光学レンズ用の光学歪み補正を施し、視聴データ提供部214に画像データを供給する。なお図16においては1つの仮想カメラ8が示されているが、実際には左目用と右目用の2つの仮想カメラ8が配置されて、それぞれの画像データが、ロボット10から提供される左目用画像データおよび右目用画像データにもとづいて生成される。
図17は、画像記録部220に記録されている撮影画像データを説明するための図である。ここでは説明の便宜上、片目用の複数の画像データを示し、またユーザBの視線方向に対して適切なアフィン変換を施した状態の画像データを2次元平面上に配置している。なおユーザBの視線方向については後述する。
画像決定部210は、各撮影画像の重複する部分をつなぎ合わせて、全天球パノラマ画像を生成する機能をもつ。撮影画像をつなぎ合わせる技術については、たとえば同一出願人による特許第5865388号にも記載されているように既知の技術を利用してよい。以下では、画像記録部220に記録された複数の撮影画像データのうち、いずれの撮影画像データを用いるかを選択する手法について説明する。
図17に、5つの画像データI1〜I5を示す。各画像データに含まれる(x,y,z)は、撮影時のカメラ14の視線方向(ベクトル情報)を表現し、“t”は、撮影時間情報を表現する。ここで画像データI1は、ベクトル情報(x1,y1,z1)および撮影時間情報t1を付加情報として有する。同様に画像データI2は、ベクトル情報(x2,y2,z2)および撮影時間情報t2を付加情報として有し、画像データI3は、ベクトル情報(x3,y3,z3)および撮影時間情報t3を付加情報として有し、画像データI4は、ベクトル情報(x4,y4,z4)および撮影時間情報t4を付加情報として有し、画像データI5は、ベクトル情報(x5,y5,z5)および撮影時間情報t5を付加情報として有する。
なお付加情報である撮影時間情報t1〜t5は、撮影開始点(時間0)からの経過時間を表現し、t1<t2<t3<t4<t5の関係にある。したがって画像データI1〜I5の中では、画像データI1が最初に撮影され、画像データI5が最後に撮影されている。画像決定部210は、撮影時間情報と、視線方向決定部208が決定した仮想カメラ8の視線方向にもとづいて、合成画像を生成するための画像データを選択する。
具体的に画像決定部210は、視線方向決定部208が決定した仮想カメラ8の視線方向、つまりHMD100aを装着したユーザBが向いている方向から、全天球パノラマ画像から切り取る撮影範囲(仮想カメラ8の画角)を定め、撮影範囲内に含まれる画像を含む画像データを、画像データに付加されたベクトル情報にもとづいて抽出する。
図18は、画像決定部210が生成するべきフレーム画像7と、画像データとの関係を示す図である。図17および図18において、各画像データI1〜I5は、各ベクトル情報にもとづいて、仮想カメラ8の視線方向(X,Y,Z)に直交する2次元平面上に写像されており、各画像データI1〜I5の位置は、2次元平面において4つの頂点座標で定義される。画像決定部210は、仮想カメラ8の視線方向(X,Y,Z)により、全天球パノラマ画像における仮想カメラ8の画角の位置(撮影範囲)を定め、視線方向に直交する2次元平面のフレーム画像7の4つの頂点座標を定める。画像決定部210は、画像記録部220に記録された画像データのうち、フレーム画像7に含まれる画像データを抽出する。図示されるように画像データI1〜I5は、フレーム画像7に含まれる画像を含んでいるため、仮想カメラ8の撮影範囲内に含まれる画像データとして抽出される。
画像決定部210は、複数の画像データが重複する領域については、遅い撮影時間情報をもつ画像データを優先して用いて合成画像を生成する。図18に示す例では、フレーム画像7に、撮影時間の早い画像データから順に、つまり画像データI1から順に書き込み、新しい画像データで順次上書きしていくようにフレーム画像7を合成する。
このように画像決定部210は、複数の画像データのうち重複する領域については、より現在時刻に近い撮影時間情報をもつ画像データを用いて、合成画像を生成するようにする。たとえば撮影範囲内に含まれる画像で、画像データI4と画像データI5に重複する部分が存在した場合には、より遅い撮影時間をもつ画像データI5を重複部分に埋め込む。これにより、現在時刻に近い画像データを用いて合成画像を生成できるようになり、ユーザBに対して、現在時刻に近い合成画像を提供できるようになる。
この画像再生アプリケーションでは、ユーザBが向く方向によっては、画像データが不足して、フレーム画像7の生成が困難な場合がある。特にロボット10が撮影を開始した直後は、画像データ数がそもそも少ないため、画像決定部210が、ユーザBの視線方向に応じたフレーム画像7を生成できないことも生じる。実際には起こりえないが、撮影期間中、ユーザAがHMD100を全く動かさなかった場合には、画像記録部220に記録されている画像データのベクトル情報は全て同じとなるため、たとえばユーザBが、ユーザAと真逆の方向を向くと、当該視線方向の仮想カメラ8の撮影範囲内に含まれる画像データは存在しない。
そのような場合、画像決定部210は、受信したユーザAの画像データに、ユーザBの視線方向の画像を生成できない旨のメッセージを重畳した画像データを生成して、視聴データ提供部214からHMD100aに提供してもよい。たとえばユーザBの視線方向の画像を所定割合(たとえば30%)以上合成できない場合に、画像決定部210は合成画像の生成を行わず、上記メッセージとともに、ユーザAが見た画像データを視聴データ提供部214に供給してもよい。
また画像決定部210は、複数の画像データからフレーム画像7を合成するため、生成されたフレーム画像7は、つぎはぎ画像となり、視認性が悪くなる場合もある。そのため、たとえば撮影範囲内の所定割合(たとえば50%)の画像を1つの画像データから形成できない場合には、上記したように、画像決定部210は、ユーザBの視線方向の画像を生成できない旨のメッセージを、ユーザAの画像データに重畳した画像データを生成してもよい。
上記した例では、画像決定部210が、遅い撮影時間情報をもつ画像データを優先して用いて合成画像を生成することを説明したが、より早い撮影時間情報をもつ画像データを用いることでフレーム画像7の所定割合以上を構成できる場合には、より早い撮影時間情報をもつ画像データを用いてもよい。
また時間が経過すると、ロボット10の撮影している環境に変化が生じるため、過去の画像データを用いた合成画像をユーザBに提供することが好ましくないことも考えられる。そのため画像決定部210は、所定時間以上前の画像データについては、合成画像に含めないように、画像抽出処理を行ってもよい。
以上は、ユーザBが、ユーザAの視聴データをリアルタイムで利用する例を示した。以下は、その応用技術について説明する。応用技術では、処理装置200が、ユーザAの視聴データのリアルタイム再生を目的とするのではなく、二次利用を目的として視聴データを記録する。
視聴データの二次利用のために、ロボット10において画像処理部80は、フレーム画像データのそれぞれに、撮影時間情報とベクトル情報を付加し、また音声処理部82は、音声データに、録音開始点からの経過時間を示す録音時間情報を付加する。なおカメラ14による撮影(録画)およびマイク16による録音は同じタイミングで開始されるため、撮影開始点および録音開始点は同じタイミングを示す。撮影時間情報および録音時間情報は、ロボット10におけるクロック生成部で生成された時刻情報であってよい。画像データおよび音声データに付加情報を付加する形式は何であってもよく、処理装置200が、再生用の視聴データを生成する際に参照できる形式であればよい。
この応用技術では、ユーザAがロボット10の使用を終了した後、別のユーザB(ユーザAであってもよい)がHMD100aを装着して、処理装置200に記録されたユーザAの視聴データをもとに生成される画像データおよび音声データを、HMD100aに提供する。このとき実施例で説明したように、処理装置200は、ユーザAの視聴データをもとに全天球パノラマ画像を構成し、全天球パノラマ画像からユーザBの視線方向にもとづいた画像を再構成して、ユーザBのHMD100aに提供できるようにする。この利用環境では、ロボット10は使用しない。
図15を参照して、画像記録部220は、ロボット10から送信された画像データを記録しており、音声記録部222は、ロボット10から送信された音声データを記録している。この応用技術においては、画像記録部220および音声記録部222は、ロボット10からユーザAに対して送信された視聴データの全てが記録済みの状態にある。なお画像データは、撮影時間情報と、撮影時のベクトル情報とを付加されており、音声データは、録音時間情報を付加されている。
ユーザBは、HMD100aを通じて、処理装置200に、ユーザAの視聴データの再生指示を送信する。処理装置200は、再生指示を受け付けると、視聴データの再生処理を開始する。なお記録部218が1時間分の視聴データを記録している場合、ユーザBは、1時間の範囲内で、任意の時間から再生を開始できるようにしてもよい。この場合、受信部202は、ユーザBから時間指定を受け付け、画像決定部210および音声決定部212に供給する。
音声決定部212は、再生開始点からの経過時間を示す再生時間情報に対応する録音時間情報をもつ音声データを、音声記録部222から読み出し、視聴データ提供部214に提供する。再生開始点は、視聴データの再生開始点を意味し、したがって撮影開始点および録音開始点と同じタイミングを示す。音声決定部212は再生時間情報に録音時間情報が一致する音声データを音声記録部222から読み出し、視聴データ提供部214に提供する。
処理装置200による再生処理中、受信部202は、ユーザBが装着したHMD100aから送信されるセンサ情報を受信し、センサ情報取得部204は、受信したセンサ情報を取得する。このセンサ情報は、姿勢センサ124がHMD100aの姿勢を検出した姿勢情報である。動き検出部206は、ユーザBの頭部に装着されたHMD100aの姿勢を検出する。視線方向決定部208は、動き検出部206により検出されたHMD100aの姿勢に応じて、仮想カメラの視線方向を定める。画像決定部210は、画像記録部220に記録された複数の画像データを用いて、決定された視線方向に向けた仮想カメラにより撮影される画像を合成する。視聴データ提供部214は、画像決定部210で合成された画像データと、音声決定部212で読み出された音声データとを合わせた視聴データを、送信部216からHMD100aに提供する。
画像決定部210は、ユーザBによる視聴データの再生時間以前にユーザAが見た画像をスティッチ(縫い合わせ)して、ユーザBが位置する中心点9から撮影されるフレーム画像7を動的に生成する。
ユーザBによる視聴データの再生時間以前にユーザAが見た画像について説明する。画像記録部220に、撮影開始点から1時間分の画像データが記録されている場合、ユーザBによる再生開始点からの再生時間は、1時間以内のどこかのタイミングで特定される。たとえば再生時間が再生開始から15分のタイミングである場合、15分以内の撮影時間情報が付加された画像、つまり撮影開始点から15分が経過するまでに撮影された画像が、再生時間以前にユーザAが見た画像となる。つまり再生開始から15分の時点を再生しているのであれば、画像決定部210は、撮影開始から15分以内の撮影時間情報が付加された画像データを用いてフレーム画像7を生成し、再生開始から45分の時点を再生しているのであれば、画像決定部210は、撮影開始から45分以内の撮影時間情報が付加された画像データを用いてフレーム画像7を生成する。
図18を参照して、画像決定部210は、再生時間情報以前の撮影時間情報を付加された画像データを抽出するようにし、再生時間情報よりも後の撮影時間情報を付加された画像データを抽出しないようにする。たとえば、フレーム画像7を再生する時間情報が時間t3より後であって、時間t4より前であれば、画像決定部210は、画像データI1〜I3を抽出し、画像データI4、I5は抽出しない。このように、再生時間情報以前の撮影時間情報を付加された画像データを用いて合成画像を生成することで、画像決定部210は、再生時間よりも後に撮影された画像をユーザBに見せないようにする。
視聴データ提供部214は、再生時間に対応する録音時間情報をもつ音声データをHMD100aに送信しているため、ユーザBは、再生時間に同期した音声を聞いている。そのため再生時間以前の状況については概ね承知しており、提供される画像データが再生時間以前の画像データから合成されたものであれば、どのような状況が表示されているかを把握できる。しかしながら提供される画像データが、再生時間より後の画像データから合成されていれば、ユーザBは承知していない画像を見せられることになり、ユーザBを混乱させることが予想される。そこで画像決定部210は、再生時間よりも後に撮影された画像をユーザBに見せないようにする。
なお画像決定部210は、複数の画像データのうち重複する部分については、再生時間情報に近い撮影時間情報をもつ画像データを用いて、合成画像を生成するようにする。たとえば撮影範囲内に含まれる画像で、画像データI1と画像データI2に重複する部分が存在した場合には、より後に撮影された画像データI2を重複部分に埋め込む。これにより、再生時間情報に近い画像データを用いて合成画像を生成できるようになり、ユーザBには、再生時間の直近の画像データから合成した画像を提供できるようになる。
以上、本発明を実施例をもとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
実施例では、画像決定部210が、イメージスティッチング処理を実施し、ユーザBの視線方向から定まる撮影範囲のフレーム画像7を生成することを説明した。変形例では、イメージスティッチング処理を実施することなく、画像決定部210が、仮想カメラ8の視線方向と、画像記録部220に記録された画像データに付加されたベクトル情報とにもとづいて、ユーザBに提供する画像データを決定する。
この変形例で画像決定部210は、仮想カメラ8の視線方向に対応するベクトル情報を付加された画像データを、ユーザBに提供する画像データとして決定する。仮想カメラ8の視線方向に対応するベクトル情報とは、仮想カメラ8の視線方向と一致するベクトル情報、および仮想カメラ8の視線方向と実質的に一致するとみなせるベクトル情報を含む。具体的には、仮想カメラ8の視線方向とベクトル情報とが所定の角度以内(たとえば10度)にある場合に、画像決定部210は、仮想カメラ8の視線方向とベクトル情報とが実質的に一致することを判定してもよい。
ユーザAの視聴データを同期再生する場合、画像決定部210は、仮想カメラ8の視線方向に対応するベクトル情報を付加された画像データのうち、最も遅い撮影時間情報をもつ画像データを、ユーザBに提供する画像データとして決定する。これによりユーザBに対して、現在時刻に近い画像を提供できるようになる。
仮想カメラ8の視線方向に対応するベクトル情報を付加された画像データが画像記録部220に記録されていない場合、画像決定部210は、高さ方向(z軸方向)の成分を除いた(x、y)成分が実質的に一致するとみなせるベクトル情報を付加された画像データを、ユーザBに提供する画像データとして決定してもよい。一致するとみなせるベクトル情報とは、(x、y)成分が所定角度以内(たとえば7度)の範囲にあるベクトル情報である。(x、y)成分のみの近似をみることで、画像決定部210は、仮想カメラ8の視線方向に対応するベクトル情報を付加された画像データを見つけやすくし、これによりユーザBに画像データを提供できない事態を回避できるようになる。
ユーザAの視聴データを二次利用する場合、画像決定部210は、ユーザBによる視聴データの再生時間以前にユーザAが見た画像から、ユーザBに提供する画像データを決定する。つまり画像決定部210は、再生時間情報以前の撮影時間情報を付加された画像データの中から、仮想カメラ8の視線方向に対応するベクトル情報を付加された画像データを決定する。このとき、該当する画像データが複数存在すれば、画像決定部210は、再生時間情報に近い撮影時間情報をもつ画像データを選択することが好ましい。
なおユーザAが横方向に首を回したときの画像データが画像記録部220に記録されているケースを検討する。ユーザBがユーザAから少し遅れて、ユーザAと逆方向に首を回すと、HMD100aに、ユーザAが見た画像が逆再生されることが生じうる。この場合、画像データの時系列が逆転することになり、ユーザBに違和感を生じさせる可能性がある。そのためユーザBが連続的に視線方向を変化させる際に、ユーザAの画像データを逆再生させることになる場合には、画像決定部210は、画像データを固定して、提供する画像データを変化させないようにしてもよい。
情報処理システム1の有用性を高めるために、ロボット10は、触覚センサや振動センサなど、外部からの入力を受け付ける入力センサをさらに備えてもよい。図10に示す機能ブロックにおいて、入力センサは、出力系統24に設けられ、入力センサのセンサ情報は、送信部90からHMD100に送信される。HMD100は、センサ情報を出力する出力手段を備え、センサ情報を振動などに変換してユーザAに伝達してもよい。
また情報処理システム1では、ロボット10が、ユーザAの首の動きに筐体20を連動させることを説明したが、さらにユーザAの表情などの状態を伝達する手段を有してもよい。たとえばHMD100は、装着したユーザAの目や眉の動きを検出するセンサや、声の調子を解析する手段などを備える。目や眉の動きは、ユーザの表情を表現するものであり、また声の調子は、ユーザの心理状態を表現する。目や眉の動きおよび/または声の調子に関する情報は、HMD100からロボット10に送信され、ロボット10は、筐体20に設けた表情ユニットを駆動して、ユーザAの表情、心理状態などを再現してもよい。表情ユニットは、筐体20の前面においてカメラ14の上部に形成した駆動部(たとえば眉の形状を模したもの)であってよく、HMD100から送信された情報をもとに、駆動部が駆動される。なお表情ユニットとして、保護カバー19を利用してもよく、筐体20内に保護カバー19を動かすモータを設けて、保護カバー19が開閉動作されてもよい。また表情ユニットは、ユーザAの表情や心理状態を色で表現するディスプレイであってよく、表示色を変化させることで、ユーザAの表情や心理状態を表現してもよい。