以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
なお、説明は以下の順序で行うものとする。
1.本開示の実施の形態
1.1.システム構成例
1.2.機能構成例
1.3.動作例
2.ハードウェア構成例
3.まとめ
<1.本開示の実施の形態>
[1.1.システム構成例]
まず、本開示の実施の形態に係る情報処理システムの構成例を説明する。
図1は、本開示の一実施形態に係る情報処理システムの一構成例を示す説明図である。なお、本明細書において、システムとは、所定の処理を実行するための構成のことを意味していてよく、システム全体として1つの装置とみなすこともできるし、複数の装置によってシステムが構成されているとみなすこともできる。図1に示す本実施形態に係る情報処理システムも、情報処理システム全体として所定の処理を実行可能に構成されていればよく、情報処理システム内のどの構成を1つの装置とみなすかは任意であってよい。
図1を参照すると、本開示の一実施形態に係る情報処理システム100aは、入力部110aと、出力部130aと、を備える。
出力部130aは、各種の情報をテーブル140aに表示することにより、当該情報をユーザに対して視覚的に通知する。出力部130aとしては、例えばプロジェクタが用いられる。図示するように、出力部130aは、テーブル140aの上方に、例えば天井から吊り下げられた状態でテーブル140aと所定の距離離隔して配置され、テーブル140aの天面に情報を投影する。このように上方からテーブル140aの天面に情報を表示する方式を、「プロジェクション型」とも呼称する。
なお、以下の説明では、出力部130aによって情報が表示される領域全体のことを表示画面とも呼称する。例えば、出力部130aは、表示画面に、情報処理システム100aによるアプリケーションの実行に伴いユーザに対して提示される情報を表示する。表示される情報は、例えば各アプリケーションの動作画面である。以下では、表示画面において、このようなアプリケーションの動作画面が表示される各表示領域を、ウインドウとも呼称する。また、例えば、出力部130aは、表示画面に、ボタンやスライダー、チェックボックス、テキストボックス、キーボード等の、選択、入力等のユーザによる各種の操作を受け付ける、いわゆるGUI(Graphical User Interface)部品(ウィジェット)を表示する。ウインドウもGUI部品の1つとみなすことができるが、本明細書では、ウインドウとその他のGUI部品とを区別するために、便宜的に、ウインドウをGUI部品には含めず、ウインドウ以外の表示要素のことをGUI部品と呼ぶこととする。
ここで、情報処理システム100aがプロジェクション型である場合には、出力部130aは照明機器を含んでもよい。出力部130aに照明機器が含まれる場合、情報処理システム100aは、入力部110aによって入力された情報の内容及び/又は出力部130aによって表示される情報の内容に基づいて、当該照明機器の点灯、消灯等の状態を制御してもよい。
また、出力部130aは、スピーカを含んでもよく、各種の情報を音声として出力してもよい。出力部130aがスピーカで構成される場合、スピーカの数は1つであってもよく、複数であってもよい。出力部130aが複数のスピーカで構成される場合、情報処理システム100aは、音声を出力するスピーカを限定したり、音声を出力する方向を調整したりしてもよい。
入力部110aは、情報処理システム100aを使用するユーザの操作内容を入力する装置である。図1に示す例では、入力部110aは、センサ等を含んで構成され、テーブル140aの上方に、例えば天井から吊り下げられた状態で設けられる。このように、入力部110aは、情報が表示される対象となるテーブル140aと離隔して設けられる。入力部110aは、テーブル140aの天面、すなわち、表示画面を撮影し得る撮像装置によって構成され得る。入力部110aとしては、例えば1つのレンズでテーブル140aを撮像するカメラや、2つのレンズでテーブル140aを撮像して奥行き方向の情報を記録することが可能なステレオカメラ等が用いられ得る。入力部110aがステレオカメラである場合には、例えば可視光カメラや赤外線カメラ等が用いられ得る。
入力部110aとして、1つのレンズでテーブル140aを撮像するカメラが用いられる場合、情報処理システム100aは、そのカメラが撮像した画像(撮像画像)を解析することで、テーブル140a上に位置する、実在する物理的な物体、例えばユーザの手の位置を検出することができる。また、入力部110aとしてステレオカメラが用いられる場合には、情報処理システム100aは、当該ステレオカメラによる撮像画像を解析することで、テーブル140a上に位置する物体の位置情報に加えて、当該物体の深度情報を取得することができる。情報処理システム100aは、当該深度情報に基づいて、高さ方向におけるテーブル140aへのユーザの手の接触若しくは近接、及びテーブル140aからの手の離脱を検出することが可能となる。なお、以下の説明では、ユーザが情報に表示画面に手等の操作体を接触又は近接させることを、まとめて単に「接触」とも称する。
本実施形態では、入力部110aによる撮像画像に基づいて、表示画面上(すなわちテーブル140aの天面上)における操作体、例えばユーザの手の位置が検出され、検出された操作体の位置に基づいて各種の情報が入力される。つまり、ユーザは、表示画面上で操作体を動かすことにより、各種の操作入力を行うことができる。例えば、ウインドウその他のGUI部品に対するユーザの手の接触が検出されることにより、当該ウインドウその他のGUI部品に対する操作入力が行われることになる。なお、以下の説明では、一例として、操作体としてユーザの手が用いられる場合について説明するが、本実施形態はかかる例に限定されず、操作体としてはスタイラスやロボットアーム等の各種の操作部材が用いられてもよい。なお、操作体とはGUI部品に対する操作入力に限らず、テーブル140a等に置かれた物体を移動させることが可能な物体をいうものとする。
また、入力部110aが撮像装置によって構成される場合には、入力部110aは、テーブル140aの天面を撮影するだけでなく、テーブル140aの周囲に存在するユーザを撮影してもよい。例えば、情報処理システム100aは、撮像画像に基づいて、テーブル140aの周囲におけるユーザの位置を検出することができる。また、例えば、情報処理システム100aは、撮像画像に含まれるユーザの顔や体の大きさ等、ユーザ個人を特定し得る身体的な特徴を抽出することにより、ユーザの個人認識を行ってもよい。
ここで、本実施形態はかかる例に限定されず、他の方法によりユーザの操作入力が実行されてもよい。例えば、入力部110aがテーブル140aの天面にタッチパネルとして設けられてもよく、ユーザの操作入力は、当該タッチパネルに対するユーザの指等の接触によって検出されてもよい。また、入力部110aを構成する撮像装置に対するジェスチャによってユーザの操作入力が検出されてもよい。あるいは、入力部110aは、ユーザが発する音声や、周囲の環境の環境音を収音するマイクロフォン等の音声入力装置を含んでもよい。当該音声入力装置としては、特定の方向の音声を収音するためのマイクアレイが好適に用いられ得る。また、当該マイクアレイは、その収音方向を任意の方向に調整可能に構成され得る。入力部110aとして音声入力装置が用いられる場合には、収音された音声により操作入力が行われてもよい。また、情報処理システム100aは、収音された音声を解析することにより、当該音声に基づいて個人認識を行ってもよい。あるいは、入力部110aは、リモートコントロール装置(いわゆるリモコン)によって構成されてもよい。当該リモコンは、リモコンに配置された所定のボタンを操作することにより、所定の指示が入力されるものであってもよいし、リモコンに搭載される加速度センサやジャイロセンサ等のセンサによってリモコンの動きや姿勢が検出されることにより、ユーザが当該リモコンを動かす操作によって、所定の指示が入力されるものであってもよい。更に、情報処理システム100aは、図示しないマウス、キーボード、ボタン、スイッチ及びレバー等、他の入力装置を入力部110aとして備えてもよく、ユーザによる操作は、これらの入力装置を介して入力されてもよい。
以上、図1を参照して、本実施形態に係る情報処理システム100aの構成について説明した。なお、図1には図示しないが、情報処理システム100aには他の装置が接続されていてもよい。例えば、情報処理システム100aには、テーブル140aを照らすための照明機器が接続されていてもよい。情報処理システム100aは、表示画面の状態に応じて当該照明機器の点灯状態を制御してもよい。
ここで、本実施形態では、情報処理システムの構成は図1に示すものに限定されない。本実施形態に係る情報処理システムは、各種の情報を表示画面に表示する出力部と、表示された情報に対する操作入力を少なくとも受け付けることが可能な入力部を備えればよく、その具体的な構成は限定されない。図2-図4を参照して、本実施形態に係る情報処理システムの他の構成例について説明する。図2-図4は、本実施形態に係る情報処理システムの他の構成例を示す図である。
図2に示す情報処理システム100bでは、テーブル140bの下方に出力部130aが設けられる。出力部130aは、例えばプロジェクタであり、当該テーブル140bの天板に向かって下側から情報を投影する。テーブル140bの天板は、例えばガラス板や透明プラスチック板等の透明な材質で形成されており、出力部130aによって投影された情報は、テーブル140bの天面に表示されることとなる。このようにテーブル140bの下から情報を出力部130aに投影して、テーブル140bの天面に情報を表示する方式を、「リアプロジェクション型」とも称する。
図2に示す例では、テーブル140bの天面(表面)に入力部110bが設けられる。入力部110bは、例えばタッチパネルによって構成され、テーブル140bの天面の表示画面への操作体の接触が当該タッチパネルによって検出されることにより、ユーザによる操作入力が行われる。なお、入力部110bの構成はかかる例に限定されず、図1に示す情報処理システム100aと同様に、入力部110bは、テーブル140bの下方にテーブル140bと離隔して設けられてもよい。この場合、入力部110bは、例えば撮像装置によって構成され、透明な材質によって形成される天板越しに、テーブル140bの天面上での操作体の位置を検出し得る。またこの場合、入力部110bは、影の長さや重さをセンシング可能なセンサで構成され、テーブル140bの天面に置かれた物体の重さや大きさをセンシングすることができる。
図3に示す情報処理システム100cでは、タッチパネル式のディスプレイが、その表示面を上方に向けた状態でテーブル上に設置される。情報処理システム100cでは、入力部110c及び出力部130cは、当該タッチパネル式のディスプレイとして一体的に構成され得る。つまり、ディスプレイの表示画面に各種の情報が表示され、当該ディスプレイの表示画面に対する操作体の接触がタッチパネルによって検出されることにより、ユーザによる操作入力が行われる。なお、情報処理システム100cにおいても、図1に示す情報処理システム100aと同様に、入力部110cとして、タッチパネル式のディスプレイの上方に撮像装置が設けられてもよい。当該撮像装置により、テーブルの周囲のユーザの位置等が検出され得る。また入力部110cは、入力部110bは、影の長さや重さをセンシング可能なセンサ(インセルセンサ)で構成され、出力部130cに置かれた物体の重さや大きさをセンシングすることができる。
図4に示す情報処理システム100dは、フラットパネル式のディスプレイを備える。情報処理システム100dでは、出力部130dは、フラットパネル式のディスプレイとして構成され、当該ディスプレイの表示画面に各種の情報が表示される。入力部は、図示しないマウスやキーボード、タッチパッド等の入力装置によって構成され、これらの入力装置によって表示画面内のポインタが操作されることにより、ユーザによる操作入力が行われる。なお、図3に示す情報処理システム100cと同様に、情報処理システム100dの入力部は、フラットパネル式のディスプレイに設けられるタッチパネルを含んでもよく、当該タッチパネルを介してユーザによる操作入力が行われてもよい。また、当該入力部は、フラットパネル式のディスプレイの表示面と対向する領域を撮像し得る撮像装置を含んでもよい。当該撮像装置により、フラットパネル式のディスプレイを観察するユーザの位置等が検出され得る。
以上、図2-図4を参照して、本実施形態に係る情報処理システムの他の構成例について説明した。以上説明したように、本実施形態に係る情報処理システムは、多様な構成によって実現され得る。ここで、以下では、図1に示す、テーブル140aの上方に入力部110a及び出力部130aが設けられる情報処理システム100aの構成を例に挙げて、本実施形態についての説明を行う。ただし、上述した図2-図4に示す構成等、本実施形態に係る情報処理システムを実現し得る他の構成であっても、以下に説明する機能と同様の機能を実現することが可能である。以下の説明では、簡単のため、情報処理システム100a、入力部110a、出力部130aを、単に情報処理システム100、入力部110、出力部130とも呼称することとする。
以上、本開示の実施の形態に係る情報処理システム100の構成例について説明した。続いて、本開示の実施の形態に係る情報処理システム100の機能構成例について説明する。
[1.2.機能構成例]
図5は、本開示の実施の形態に係る情報処理システム100の機能構成例を示す説明図である。以下、図5を用いて本開示の実施の形態に係る情報処理システム100の機能構成について説明する。
図5に示したように、本開示の実施の形態に係る情報処理システム100は、入力部110と、グラフィックス表示処理部120と、出力部130と、物体情報制御部200と、を含んで構成される。
入力部110は、情報処理システム100に対して各種の情報を入力するための入力インターフェースである。ユーザは、入力部110を介して、各種の情報を情報処理システム100に入力することができる。本実施形態では、入力部110は、出力部130によって生成される表示画面に対するユーザの操作入力を少なくとも受け付けることができるように構成される。例えば、入力部110は、イメージセンサを含む撮像装置によって構成され、表示画面上でのユーザの手等の操作体を含む撮像画像を撮影する。また例えば、入力部110は、ステレオカメラ、time of flight方式、structured light方式などの三次元情報を取得可能なデプスセンサで構成される。入力部110を介して入力された情報(例えば当該撮像画像についての情報等)は、後述する物体情報制御部200に提供され、物体情報制御部200によってユーザの操作入力が検出される。なお、本実施形態はかかる例に限定されず、入力部110は、例えばタッチパネル、マウス、キーボード、マイクロフォン、ボタン、スイッチ及びレバー等、他の入力装置によって構成されてもよい。
グラフィックス表示処理部120は、入力部110が受け付けたユーザの操作入力に基づき、出力部130に表示するグラフィックスの処理を行う。グラフィックス表示処理部120は、例えば、アプリケーションを表示するウインドウなどの様々なコンテンツの描画制御や、それぞれのコンテンツに対してユーザの操作入力などのイベントの提供を行う。本実施形態では、グラフィックス表示処理部120は、入力部110から受け付けたユーザの操作入力の内容を物体情報制御部200に提供する。そしてグラフィックス表示処理部120は、物体情報制御部200で行われた処理の内容を受け取り、その内容に基づいたグラフィックス処理を実行する。グラフィックス表示処理部120は、例えば画像処理回路を含んで構成される。
出力部130は、情報処理システム100によって処理される各種の情報をユーザに対して通知するための出力インターフェースである。出力部130は、例えば、ディスプレイやプロジェクタ等の表示装置によって構成され、後述する物体情報制御部200からの制御により、表示画面に各種の情報を表示する。出力部130は、上述したように、表示画面にウインドウ及びGUI部品を表示する。出力部130に表示されるウインドウ及びGUI部品等のことを「表示オブジェクト」とも称する。なお、本実施形態はかかる例に限定されず、出力部130は、スピーカ等の音声出力装置を更に含んでもよく、各種の情報を音声として出力してもよい。
物体情報制御部200は、入力部110が受け付けたユーザの操作入力に基づいた様々な処理を実行する。本実施形態では、物体情報制御部200は、入力部110が取得した手指や物体の情報に基づいて物体に関連付けられた属性情報や、手指に関連付けられた所有状態を認識し、これらの情報に基づいて物体の情報を制御する処理を行う。物体情報制御部200は、例えばCPU等の制御回路と制御回路を動作させるプログラムを格納するメモリを含んで構成される。
物体情報制御部200は、手指検出部210と、属性処理部220と、情報蓄積処理部230と、を含んで構成される。
手指検出部210は、入力部110が取得した情報に含まれる物体と手指の位置関係を用いて、ユーザがどの物体を操作したかを検出する処理を行う。手指検出部210による具体的な処理内容は後に詳述する。
属性処理部220は、入力部110がセンシング可能な領域(センシング可能領域)に存在する物体や手指に対する属性の割り当てに関する処理を行う。例えば属性処理部220は、物体と手指が近接または接触しているかの情報を用い、物体がどの属性を保持しているかを推定する処理を行う。また例えば属性処理部220は、物体が重なっているかどうかの情報を用い、重なっている物体がどの属性を保持しているかを推定する処理を行う。属性処理部220による具体的な処理内容は後に詳述する。
情報蓄積処理部230は、物体や手指の情報を蓄積する処理を行う。情報蓄積処理部230が蓄積した情報は、属性処理部220による処理に用いられる。情報蓄積処理部230が蓄積する情報の例については後述する。
以上、本開示の実施の形態に係る情報処理システム100の機能構成例について説明した。続いて、本開示の実施の形態に係る情報処理システム100を説明するが、その前に、情報処理システム100の動作で前提とする手指と物体の検出技術について説明する。
図6A~6Cは、手指と物体の検出技術を示す説明図である。
図6Aは、輪郭情報を用いた認識による検出技術の例である。この検出技術は、画像情報や三次元情報から輪郭抽出を行い、手と物体を判別する手法である。輪郭情報を用いた検出は、可視光でも不可視光でも利用でき、不可視光を利用した場合、上方からプロジェクションされても表示物が手や物体と干渉しないという利点がある。一方、輪郭情報を用いた検出は、物体を手に持つと、物体と手の輪郭が一体となるため、手と物体とを判別することが不可能になるという欠点がある。
図6Bは、セグメント情報を用いた認識による検出技術の例である。この検出技術は、画像情報の画素値を用いてセグメント分けすることで、手と物体を判別する手法である。例えば可視光カメラから取得された情報に対し、色を用いてセグメント分けすることが可能である。この検出技術は手に覆われなければ、手で物体を持っても手と物体とを識別することが可能という利点がある。一方、この検出技術は、手の色と物体の色が一定以上の差を持っていることが前提となり、差が小さい場合は手と物体とが一体として認識されてしまう欠点がある。またこの検出技術は、上方からプロジェクションされると手や物体に投影が重なった場合に誤判定の可能性が高くなるという欠点がある。またこの検出技術は、情報処理システムの全体構成が図1~図4のいずれの場合であっても、画面内に手や物体と近い色を表示する際には実物か表示物かを判別できないという欠点がある。
図6Cは、マーカを用いた認識による検出技術の例である。この検出技術は、これは手指と物体に予めマーカ(図中では星印)を付けて認識する方法である。この検出技術は、物体のマーカが手に覆われなければ、手で物体を持っても認識可能という利点がある。一方、この検出技術は、マーカを予め手指や物体に付加する必要性が生じるため、登録されている(マーカが付けられた)物体しか扱えないという欠点がある。
図7A~7Cは、検出時に手指と物体が置かれている状況の例を示す説明図である。図7Aは、手に物体を持ってはいるが、物体がまだ見えている状態である。この状態では、検出技術と状態によっては、手指と物体を判別することが可能である。図7Bは、物体を手が完全に覆う形で保持している状態である。この状態では、上述した3つの検出技術のいずれを用いても判別することは不可能である。図7Cは、手が持っている物体で、検出の対象となる物体が覆われている状態である。手が持っている物体も、本開示の操作体となり得る。この状態も、図7Bの場合と同様に上述した3つの検出技術のいずれを用いても判別することは不可能である。
本実施形態では、環境や状態により、手指と物体を判別できなくなることが分かるため、物体を追跡して属性を保持することができない状況下であっても、物体を追跡し、物体に関連付けられる属性を保持することを可能にする。
まず、本実施形態で用いる情報を示す。下記の表1~3は、情報蓄積処理部230において蓄積される情報を示している。表1は物体管理表、表2は所有状態管理表、表3は属性管理表である。それぞれの表は、例えばリレーショナルデータベース等の形式で実現される。
物体IDは、入力部110のセンサが返す物体のIDである。センサが手指か物体かを判別している限り維持される情報である。物体IDはセンサが認識できた単位で振られるため、重なっている物体は、その一塊に対して一つの物体IDが振られる。上述のように手に覆われたりすると、同じ物体であっても物体IDはインクリメントされる。
手指IDは、入力部110のセンサが返す手指のIDである。手1つについて1つのIDが振られる。
認識IDは、本実施形態による認識技術によって認識および追跡されるIDである。本認識技術により、物体が手に覆われたりしても一意の認識IDを維持することが可能である。物体の性質の数だけ一意の認識IDが存在する。
表1の物体管理表は、物体の状態を管理する表である。認識ID配列は、物体IDに対してその物体群がどの認識IDとして認識されているかを保持する。物体が重なっている場合は認識IDの配列として表現され、先頭の要素ほど下の段の物体の認識IDであることを示している。特徴量は、物体の高さや重さなどセンサから取得されたパラメータである。処理フラグはその物体IDを処理したかどうかを表すフラグで、例えば処理済みであればtrueや「1」といった処理済みであることを示す情報が、未処理であればfalseや「0」といった未処理であることを示す情報が格納される。
表2の所有状態管理表は、どの手指が何を保持しているかを管理する表である。認識ID配列は、手指IDに対してその手指がどの認識IDを保持しているかを表す。複数の物体を保持している場合は配列となり、先頭の要素ほど手に近い(置かれる順番が後)物体の認識IDである。
表3の属性管理表は、どの認識IDがどの属性を保持しているかを管理する表である。属性とは、アプリケーションに依存して決められる特性である。
まず、手指検出部210の動作例を説明する。図8は、本実施形態に係る手指検出部210の動作例を示す流れ図であり、後の図の「最寄手指検出処理」として示されている処理の例を示したものである。
手指検出部210は、入力部110から取得した全ての手指に対して(ステップS101)、手指の位置と物体の位置を取得し距離を算出するとともに、その距離が所定の閾値以下かどうかを判定する(ステップS102)。
図9は、物体から各手指の距離を算出する際の模式図である。図9に示すhand a,b,c,dのうち、hand c、dは、物体(object 1)から大きく離れており、物体と手との距離が閾値外のため物体を操作していた手とは見做されない。一方、hand a、bは閾値内のため距離を比較し、最小値であるhand aが、この物体を操作していた手と推定される。なお、手指検出部210は、距離の算出において、物体は中心や重心の位置を基準とし、手は甲の中心や指先の位置を基準とすることが出来る。また、より厳密に距離を測りたい場合には、手指検出部210は、手の形状や、手の面などを使って判断しても良い。距離に有意差が無い場合には、手指検出部210は、前フレームと比較して動いている方の手を、物体を操作している手と見做してもよい。
ステップS102の判定の結果、距離が閾値以下でない場合は(ステップS102、No)、手指検出部210は別の手指の処理に戻る。距離が閾値以下の場合は(ステップS102、Yes)、手指検出部210は、これまで検出された距離と比較し、新たに算出した距離が最小であるかどうかを判定する(ステップS103)。
ステップS103の判定の結果、距離が最小でない場合は(ステップS103、No)、手指検出部210は別の手指の処理に戻る。距離が最小の場合は(ステップS103、Yes)、手指検出部210は、その手指が物体の最寄りの手指であると判断し、その手指IDを記録(更新)する(ステップS104)。
手指検出部210は、以上の処理を繰り返し行うこと(ステップS105)で、物体から最も近い手指IDを取得する。
続いて、本開示の実施の形態に係る物体情報制御部200の動作例を説明する。図10は、本開示の実施の形態に係る物体情報制御部200の動作例を示す流れ図である。以下、図10を用いて本開示の実施の形態に係る物体情報制御部200の動作例について説明する。
物体情報制御部200は、まず入力部110がセンシングによって取得した手指情報及び物体情報を取得する(ステップS111)。以降の処理は、ユーザによる所定の操作が行われたなどの終了条件を満たすまで、毎フレーム繰り返し行われる。この場合のフレームは、グラフィックスをレンダリングするフレーム、もしくは入力部110からセンサ情報を取得する周期のフレームを指す。
手指情報及び物体情報を取得すると、続いて物体情報制御部200は、物体管理表の処理フラグを全てクリアする(ステップS112)。物体管理表の処理フラグが全てクリアされることにより、前のフレームで認識されていた物体について全て未処理の状態となる。
続いて物体情報制御部200は、物体が存在する場合の処理を実行する(ステップS113)。物体が存在する場合の処理の詳細は後述する。
続いて物体情報制御部200は、物体が存在しない場合の処理を実行する(ステップS114)。物体が存在しない場合の処理の詳細は後述する。
続いて物体情報制御部200は、手指がセンシング可能領域の範囲外に消えた場合の処理を実行する(ステップS115)。手指がセンシング可能領域の範囲外に消えた場合の処理の詳細は後述する。
そして物体情報制御部200は、ユーザによる所定の操作が行われたなどの終了条件を満たしたかどうか判断する(ステップS116)。終了条件を満たしていなければ(ステップS116、No)、物体情報制御部200はステップS111の処理に戻り、終了条件を満たしていれば(ステップS116、Yes)、物体情報制御部200は一連の処理を終了する。
続いて、上述のステップS113の物体が存在する場合の処理の詳細について説明する。図11は、本開示の実施の形態に係る物体情報制御部200の動作例を示す流れ図であり、上述のステップS113の物体が存在する場合の動作例を示す説明図である。なお、以下の一連の処理は、例えば属性処理部220が実行しうる。
物体情報制御部200は、入力部110から取得した物体分、以下の一連の処理を繰り返す(ステップS121)。全ての物体について処理していなければ(ステップS121、No)、物体情報制御部200は、処理対象の物体の物体IDが物体管理表に登録されているかを判断する(ステップS122)。処理対象の物体の物体IDが物体管理表に登録されていない場合(ステップS122、No)は、その物体は前フレームには存在しなかった物体であるため、物体情報制御部200は、後述の近接情報による物体推定処理を行う(ステップS123)。この近接情報による物体推定処理は、その物体が手指から発生した(置かれた)ものなのか、手指によらず発生したものかを判断し、認識IDを推定する処理である。
一方、処理対象の物体の物体IDが物体管理表に登録されている場合(ステップS122、Yes)は、その物体は前フレームも存在していた物体であるため、物体情報制御部200は、その物体の高さや重さなどの特徴量に変化がないかを判断する(ステップS124)。このステップS124の判断の際に、特徴量の差はセンサ性能による誤差なのか、明らかな有意差なのかを判断基準として付け加えてもよい。
その物体の高さや重さなどの特徴量に変化がない場合は(ステップS124、No)、物体情報制御部200は、次の物体の処理に移る。一方、その物体の高さや重さなどの特徴量に変化がある場合は(ステップS124、Yes)、物体情報制御部200は、後述の重畳情報による物体推定処理を行う(ステップS125)。この重畳情報による物体推定処理は、物体がどのように重ねられ増えたか、もしくは重ねられたものが減らされたか、を判断し、認識IDを推定する処理である。
物体情報制御部200は、近接情報による物体推定処理または重畳情報による物体推定処理を実行すると、推定した認識IDを用いて物体管理表に物体ID、認識ID配列、特徴量を更新する(ステップS126)。そして物体情報制御部200は、その物体について処理フラグを処理済みに設定する(ステップS127)。
物体情報制御部200は、上述の一連の処理を、入力部110から取得した物体分繰り返す(ステップS128)。
続いて、上述のステップS114の物体が存在しない場合の処理の詳細について説明する。図12は、本開示の実施の形態に係る物体情報制御部200の動作例を示す流れ図であり、上述のステップS114の物体が存在しない場合の動作例を示す説明図である。なお、以下の一連の処理は、例えば手指検出部210や属性処理部220が実行しうる。
ここまでの処理で処理フラグが立っていない物体は、前フレームには存在していたものが現フレームでは処理されていないため、物体が取り除かれた、または何らかの原因で消失して存在しない場合であると判断できる。物体情報制御部200は、この処理フラグが立っていない物体が存在する分、以下の処理を繰り返し行う(ステップS131)。
物体情報制御部200は、上述の最寄手指検出処理により、物体を取り除いたと推定される手指IDを取得し(ステップS132)。手指IDが発見できたかどうか判断する(ステップS133)。最寄手指検出処理により手指IDが発見できた場合は(ステップS133、Yes)、物体が手指に所有されたと考えられるので、物体情報制御部200は、所有状態管理表における、該当する手指IDの認識ID配列の末尾に認識IDを追加する(ステップS134)。該当する手指IDが存在しない場合は、物体情報制御部200は、手指IDと物体の持つ認識IDを追加する。なお、センシングの奥行き方向(例えば高さ方向)では物体と手等の操作体とが近接していなくても、手等の操作体が入力部110による物体のセンシングを遮蔽する位置に移動する場合はあり得る。そのような場合、操作体が物体のセンシングを少なくとも一部遮蔽する位置に移動してきたことが検出されると、物体情報制御部200は、物体がその操作体に所有されたとみなしてもよい。そして物体情報制御部200は、所有状態管理表における、物体のセンシングを少なくとも一部遮蔽した操作体に対応する手指IDの認識ID配列の末尾に、センシングが遮蔽された物体に対して登録されていた認識IDを追加してもよい。
一方、最寄手指検出処理により手指IDが発見できなかった場合は(ステップS133、No)、風で飛んだ等の何らかの原因で物体がセンシング可能領域から消失したことを意味するため、物体情報制御部200は、属性管理表から属性情報を削除する(ステップS135)。
そして物体情報制御部200は、物体管理表から該当する物体の行を削除する(ステップS136)。
物体情報制御部200は、上述の一連の処理を、処理フラグが立っていない物体が存在する分繰り返す(ステップS137)。
続いて、上述のステップS115の手指が範囲外に消えた場合の処理の詳細について説明する。図13は、本開示の実施の形態に係る物体情報制御部200の動作例を示す流れ図であり、上述のステップS115の手指が範囲外に消えた場合の動作例を示す説明図である。なお、以下の一連の処理は、例えば属性処理部220が実行しうる。
物体情報制御部200は、所有状態表に登録されている手指分、以下の処理を繰り返し行う(ステップS141)。
物体情報制御部200は、入力部110からの情報を基に、該当する手指がセンシング可能領域の範囲内に存在するかを判定する(ステップS142)。手指がセンシング可能領域の範囲内に存在する場合は(ステップS142、Yes)、物体情報制御部200は、その手指は物体を持ち続けていると判断し、何もせずに次の手指の処理に移る。
手指がセンシング可能領域の範囲内に存在しない場合は(ステップS142、No)、物体情報制御部200は、その手指が範囲外に消えたと判断し、手指が範囲外に消えた場合の処理を行う(ステップS143)。手指が範囲外に消えた場合の処理は、情報処理システム100が実行するアプリケーションで実現したい機能の用途に依存する。
例えば、手指が物体を持っている状態で範囲外に消えた場合、再び登場したときに同じ物体を持っているか不明なため、物体情報制御部200は、物体管理表、所有状態管理表、属性管理表の全てから該当する項目を削除する。
また例えば、範囲外に消えても同じ物体を持って再び登場するという前提のもと、物体情報制御部200は、全項目は維持し、所有状態管理表の手指IDにフラグを付けて記憶しておく。このケースの前提として、再び登場した手指が同じIDを振られる、または、同じ方向から手指が入ってきたらIDは異なっても同じと見做す場合が考えられる。
物体情報制御部200は、一連の処理を実行することにより、物体と手指の動きを追跡し、物体が手指に覆われたとしても、物体に関連付けられる属性を保持することが可能となる。
次に、図11のステップS123に示した、近接情報による物体推定処理について説明する。図14は、本開示の実施の形態に係る物体情報制御部200の動作例を示す流れ図であり、図11のステップS123に示した近接情報による物体推定処理を示す流れ図である。なお、一連の処理は、手指検出部210や属性処理部220が実行しうる。
近接情報による物体推定処理を行う場合、まず物体情報制御部200は最寄手指検出処理を行う(ステップS151)。そして物体情報制御部200は、最寄手指検出処理によって最寄手指IDが発見できたかどうか判断する(ステップS152)。
最寄手指IDが発見できた場合は(ステップS152、Yes)、続いて物体情報制御部200は、その手指IDが所有状態管理表に登録されているかを判断する(ステップS153)。
手指IDが所有状態管理表に登録されていれば(ステップS153、Yes)、続いて物体情報制御部200は、その手指IDに認識ID配列が存在するかを判断する(ステップS154)。
その手指IDに認識ID配列が存在していれば(ステップS154、Yes)、その手指IDを有する手指が持っていたのは、認識ID配列の最後尾の物体であると考えられるので、物体情報制御部200は、この物体を既存の認識IDを持つ物体と推定するとともに、推定に利用した認識ID配列の最後尾を削除する(ステップS155)。物体情報制御部200は、認識ID配列の最後尾の削除後に認識ID配列がまだ存在する場合はそのままにし、存在しない場合は手指IDごと行を削除する。
ステップS152の判断で最寄手指IDが検出できなかった場合は(ステップS152、No)、物体情報制御部200は、この物体は何らかの原因で発生した未知の物体であると判断し、新しい認識IDを割り振る(ステップS156)。
ステップS153の判断で手指IDが所有状態管理表に登録されていない場合は(ステップS153、No)、物体情報制御部200は、新たな手指から発生した未知の物体であると判断し、新しい認識IDを割り振る(ステップS156)。
ステップS154の判断で手指IDに認識ID配列が存在していなければ(ステップS154、No)、物体情報制御部200は、手指は既知だが置かれた物体は未知であると判断し、新しい認識IDを割り振る(ステップS156)。このケースは、例えば範囲外で最初から物体を持った状態でさらに範囲内でもう1つ物体を持った場合などが該当する。
物体情報制御部200は、この一連の処理を実行することにより、センシング可能領域に物体が発生した際に、その物体の最寄りの手指を検出することで、その物体が認識されているものかどうかを判断することができる。
続いて、図11のステップS125に示した、重畳情報による物体推定処理について説明する。図15は、本開示の実施の形態に係る物体情報制御部200の動作例を示す流れ図であり、図11のステップS125に示した重畳情報による物体推定処理を示す流れ図である。なお、一連の処理は、手指検出部210や属性処理部220が実行しうる。
以下の処理では、前提として、センシングの対象の物体が、所定の高さ方向の単位特徴量を有するものとして説明する。例えば、センシングの対象の物体が、平たい円柱状のコインの様な形状を有する物体であるとする。また、以下の説明では、センシングの奥行き方向が高さ方向であり、センシングの奥行き方向の特徴量が高さ方向の特徴量(物体が置かれる面を基準とした、物体の天面の高さ)であるとして説明するが、本開示は係る例に限定されるものではない。例えば、壁面に磁力を有する物体を吸着させるような場合では、壁面に対するセンシングや投影が行われる。そのような場合では、センシングの奥行き方向は壁面に対して垂直方向であり、センシングの奥行き方向の特徴量は壁面に対して垂直方向の特徴量(壁面を基準として、物体の面のうち壁面と平行な面の高さ)である。なお、センシングの奥行き方向の特徴量として基準面からの高さ以外の情報を用いてもよい。また例えばセンシングの奥行き方向の特徴量としてデプスセンサにより得られる物体の三次元情報の奥行方向の位置(デプスの座標情報)を用いても良い。
物体情報制御部200は、まず物体の特徴量が減少したかどうかを判断する(ステップS161)。特徴量が減少していれば(ステップS161、Yes)、物体情報制御部200は特徴量が減少した場合の処理を実行する(ステップS162)。特徴量が減少した場合の処理は後に詳述する。特徴量が減少していなければ(ステップS161、No)、物体情報制御部200は、その増加の差分が1段分(1単位特徴量分)であるかどうか判断する(ステップS163)。増加が1段分であれば(ステップS163、Yes)、物体情報制御部200は特徴量が1段増加した場合の処理を実行する(ステップS164)。特徴量が1段増加した場合の処理は後に詳述する。増加が2段分以上であれば(ステップS163、No)、物体情報制御部200は特徴量が2段以上増加した場合の処理を実行する(ステップS165)。特徴量が2段以上増加した場合の処理は後に詳述する。
続いて、上記ステップS162の特徴量が減少した場合の処理について説明する。図16は、本開示の実施の形態に係る物体情報制御部200の動作例を示す流れ図であり、図15のステップS162に示した特徴量が減少した場合の処理を示す流れ図である。なお、一連の処理は、手指検出部210や属性処理部220が実行しうる。
物体情報制御部200は、まず最寄手指検出処理を行う(ステップS171)。そして物体情報制御部200は、最寄手指検出処理によって最寄手指IDが発見できたかどうか判断する(ステップS172)。
最寄手指IDが発見できた場合は(ステップS172、Yes)、物体情報制御部200は、手指に所有されたため特徴量が減ったと判断し、所有状態管理表における該当する手指IDの認識ID配列の末尾に、所有された物体の認識IDを追加する(ステップS173)。ここで2段以上減少した場合は、物体情報制御部200は、手指IDの認識ID配列の末尾に、所有された物体の認識IDを複数追加する。この場合、認識ID配列には、上の段ほど配列の先頭に近い(つまり手に近い)順に追加される。
続いて、物体情報制御部200は、残された物体の最上段の認識IDが既知かを判断する(ステップS174)。既知の場合は(ステップS174、Yes)、物体情報制御部200は何もしない。一方、未知の場合は(ステップS174、No)、物体情報制御部200は、残された物体は所有された物体と同時に置かれていたことから、手指に持って行かれた物体と同じ性質の物体であろうと推定し、手指に持って行かれた物体と同じ認識IDを振る(ステップS175)。
ステップS172の判断で最寄手指IDが発見できなかった場合(ステップS172、Yes)は、物体情報制御部200は、その物体は手指に依らず減少したと判断するとともに、残された物体は、原因は不明だが、消失した上段に存在していた物体と同じ性質の物体であろうと推定し、その消失した物体と同じ認識IDを振る(ステップS175)。
続いて、上記ステップS164の特徴量が1段増加した場合の処理について説明する。図17は、本開示の実施の形態に係る物体情報制御部200の動作例を示す流れ図であり、図15のステップS164の特徴量が1段増加した場合の処理を示す流れ図である。なお、一連の処理は、手指検出部210や属性処理部220が実行しうる。
物体情報制御部200は、まず最寄手指検出処理を行う(ステップS181)。そして物体情報制御部200は、最寄手指検出処理によって最寄手指IDが発見できたかどうか判断する(ステップS182)。
手指IDが検出できた場合は(ステップS182、Yes)、物体情報制御部200は、その手指IDが所有状態管理表に登録されており、かつ認識ID配列を保持しているかを判断する(ステップS183)。その手指IDが所有状態管理表に登録されており、かつ認識ID配列を保持していれば(ステップS183、Yes)、物体情報制御部200は、認識ID配列の最後尾を用いて、この特徴量が1段増加した物体の認識IDと推定し、さらに推定に利用した認識ID配列の最後尾を削除する(ステップS184)。手指IDが所有状態管理表に登録されていない、または認識ID配列を保持していない場合は(ステップS183、No)、物体情報制御部200は、新たな手指から発生した未知の物体が1段増えており、かつ同じ場所に重ねられたことから、同じ性質を持った物体であろうと推定し、1段下の物体と同じ認識IDを振る(ステップS185)。
ステップS182の判断で最寄手指IDが発見できなかった場合(ステップS182、Yes)は、物体情報制御部200は、新たな手指から発生した未知の物体が1段増えており、かつ同じ場所に重ねられたことから、同じ性質を持った物体であろうと推定し、1段下の物体と同じ認識IDを振る(ステップS185)。
続いて、上記ステップS165の特徴量が2段以上増加した場合の処理について説明する。図18は、本開示の実施の形態に係る物体情報制御部200の動作例を示す流れ図であり、図15のステップS165の特徴量が2段以上増加した場合の処理を示す流れ図である。なお、一連の処理は、手指検出部210や属性処理部220が実行しうる。
物体情報制御部200は、まず最寄手指検出処理を行う(ステップS191)。そして物体情報制御部200は、最寄手指検出処理によって最寄手指IDが発見できたかどうか判断する(ステップS192)。
手指IDが検出できた場合は(ステップS192、Yes)、物体情報制御部200は、その手指IDが所有状態管理表に登録されており、かつ認識ID配列を保持しているかを判断する(ステップS193)。その手指IDが所有状態管理表に登録されており、かつ認識ID配列を保持していれば(ステップS193、Yes)、続いて物体情報制御部200は、増加した段数分の認識ID配列が存在するかを判断する(ステップS194)。増加した段数分の認識ID配列が存在していれば(ステップS194、Yes)、増加した物体は全て既知の物体であるので、物体情報制御部200は、その増加した段数分の認識ID配列を用いて、その物体に既存の認識IDを割り当てると共に、増加した段数分の認識ID配列を所有状態管理表から削除する(ステップS195)。
ステップS194の判断で、増加した段数分の認識ID配列が存在していなければ(ステップS194、No)、物体情報制御部200は、増加した段数分の物体に未知の物体が挟まっていると判断し、利用できるだけの認識IDを用いる。物体情報制御部200は、不足分は一緒に置かれた物体の一番下の段と同じ性質の物体であろうと推定して、同じ認識IDで属性管理表を更新する(ステップS196)。また物体情報制御部200は、利用した分の認識ID配列を削除する。
ステップS192の判断で、手指IDが検出できなかった場合は(ステップS192、No)、新たな手指から発生した未知の物体が数段増えたことになり、物体情報制御部200は、同じ場所に重ねられたことから、同じ性質を持った物体であろうと推定する。そして物体情報制御部200は、1段下の物体と同じ認識IDを振る(ステップS197)。
ステップS193の判断で、手指IDが所有状態管理表に登録されておらず、または認識ID配列を保持していなければ(ステップS193、No)、物体情報制御部200は、同じ場所に重ねられたことから、同じ性質を持った物体であろうと推定する。そして物体情報制御部200は、1段下の物体と同じ認識IDを振る(ステップS197)。
物体情報制御部200は、このように物体の特徴量が変化したかを検出することにより、物体が重ねられて同時に置かれていた、手指により同時に置かれたといった物体の動きを追跡することができる。また物体情報制御部200は、このような一連の処理により、同じ動きをしている物体は同じ性質であろうと推定を行い、未知の物体に対して認識IDを割り振ることができる。
ここまで説明してきた物体情報制御部200の一連の処理について具体例を挙げて説明する。以下の具体例では、物体管理表に保存される特徴量として、三次元センサから取得された物体の高さを例に挙げて説明する。まずは、センシング可能領域に未知の物体が現れる例を説明する。
図19A~19Cは、センシング可能領域に未知の物体が現れた際の動作を説明する説明図である。図19A~19Cには、テーブルがセンシング可能領域であり、そのテーブルに未知の物体が現れた場合の各表の状態も併せて図示されている。
図19Aは、物体を持った手(hand a)が現れた状態を示す図である。この場合、物体管理表、所有状態管理表、属性管理表には何も情報が登録されていないとする。
図19Bは、物体を持った手がテーブルに物体を置いた状態を示す図である。この時点でも、まだ物体管理表、所有状態管理表、属性管理表には何も情報が登録されない。
図19Cは、手が物体をテーブルに置いた後、物体から手を離した状態を示す図である。物体がテーブルに置かれ、その物体から手が離されると、物体情報制御部200は、テーブルに置かれた物体を認識し、その物体に対して、図19Cに示したような情報を登録する。物体情報制御部200は、その物体に対し物体IDは「1」として登録し、認識ID配列に認識IDとして「A」を登録する。物体情報制御部200は、この認識ID「A」の情報を属性管理表にも登録する。この時点では、この物体がどのような属性を有するか不明のため、物体情報制御部200は、属性管理表には未知の物体として登録する。
次に、センシング可能領域に属性が既知の物体が置いてあり、その物体をセンシング可能領域内で動かした場合の動作を説明する。図20A~20Dは、センシング可能領域に物体が置いてあり、その物体をセンシング可能領域内で動かした場合の動作を説明する説明図である。図20A~20Dには、テーブルがセンシング可能領域であり、そのテーブル上で属性が既知の物体が動かされた場合の各表の状態も併せて図示されている。
図20Aは、物体ID「1」の物体がテーブルに置かれている状態を示す図である。この状態では、図20Aに示したような情報が物体管理表、所有状態管理表、属性管理表に登録されているとする。
図20Bは、物体ID「1」の物体が手(hand a)に持たれた状態を示す図である。物体ID「1」の物体が手(hand a)に覆われたことが検出されると、物体情報制御部200は、当該物体に対応する認識ID配列の情報を所有状態管理表に移す。また物体情報制御部200は、この時点で、物体管理表の処理フラグをfalseに変化させる。
図20Cは、手が認識ID配列「A」の物体を持ってテーブル上で動いている状態を示す図である。この時点では物体管理表には情報が登録されておらず、所有状態管理表には、認識ID配列「A」の物体を手指ID「a」の手が所有していることが登録されている。
図20Dは、手指ID「a」の手が認識ID配列「A」の物体をテーブルに置いた後、物体から手を離した状態を示す図である。物体がテーブルに置かれ、その物体から手が離されると、物体情報制御部200は、テーブルに置かれた物体を認識し、その物体に対して、図20Dに示したような情報を登録する。物体情報制御部200は、その物体に対し物体IDは「2」として登録し、認識ID配列に認識IDとして「A」を登録する。
次に、センシング可能領域の外に物体を移動される例を説明する。これは、手指が物体を持っている状態で範囲外に消えた場合、再び登場したときに同じ物体を持っているか不明なため、物体情報制御部200が物体管理表、所有状態管理表、属性管理表の全てから該当する項目を削除する例である。図21A~21Dは、センシング可能領域に物体が置いてあり、その物体をセンシング可能領域内で動かした場合の動作を説明する説明図である。図21A~21Dには、テーブルがセンシング可能領域であり、そのテーブル上で属性が既知の物体が動かされた場合の各表の状態も併せて図示されている。
図21Aは、物体ID「1」の物体がテーブルに置かれている状態を示す図である。この状態では、図21Aに示したような情報が物体管理表、所有状態管理表、属性管理表に登録されているとする。
図21Bは、物体ID「1」の物体が手(hand a)に持たれた状態を示す図である。物体ID「1」の物体が手(hand a)に覆われたことが検出されると、物体情報制御部200は、当該物体に対応する認識ID配列の情報を所有状態管理表に移す。この際、物体情報制御部200は、検出した手の手指IDを「a」として登録する。また物体情報制御部200は、この時点で、物体管理表の処理フラグをfalseに変化させる。
図21Cは、手指ID「a」の手が認識ID配列「A」の物体を持ってテーブル上で動いている状態を示す図である。この時点では物体管理表には情報が登録されておらず、所有状態管理表には、認識ID配列「A」の物体を手指ID「a」の手が所有していることが登録されている。
図21Dは、手指ID「a」の手がセンシング可能領域の外に出た状態を示す図である。手指ID「a」の手がセンシング可能領域の外に出て、入力部110が認識出来なくなると、物体情報制御部200は、所有状態管理表の情報をクリアする。認識ID配列に記述されていた認識ID「A」の物体が他にセンシング可能領域に存在しないので、物体情報制御部200は、属性管理表の情報もクリアする。
センシング可能領域の外に物体を移動される例をもう一つ説明する。これは、範囲外に消えても同じ物体を持って再び登場するという前提のもと、物体情報制御部200が、全項目を維持した上で所有状態管理表の手指IDにフラグ等を付けて記憶しておく例である。図22A~22Fは、センシング可能領域に物体が置いてあり、その物体をセンシング可能領域内で動かした場合の動作を説明する説明図である。図22A~22Fには、テーブルがセンシング可能領域であり、そのテーブル上で物体が動かされた場合の各表の状態も併せて図示されている。
図22Aは、物体ID「1」の物体がテーブルに置かれている状態を示す図である。この状態では、図22Aに示したような情報が物体管理表、所有状態管理表、属性管理表に登録されているとする。
図22Bは、物体ID「1」の物体が手(hand a)に持たれた状態を示す図である。物体ID「1」の物体が手(hand a)に覆われたことが検出されると、物体情報制御部200は、当該物体に対応する認識ID配列の情報を所有状態管理表に移す。この際、物体情報制御部200は、検出した手の手指IDを「a」として登録する。また物体情報制御部200は、この時点で、物体管理表の処理フラグをfalseに変化させる。
図22Cは、手指ID「a」の手が認識ID配列「A」の物体を持ってテーブル上で動いている状態を示す図である。この時点では物体管理表には情報が登録されておらず、所有状態管理表には、認識ID配列「A」の物体を手指ID「a」の手が所有していることが登録されている。
図22Dは、手指ID「a」の手がセンシング可能領域の外に出た状態を示す図である。手指ID「a」の手がセンシング可能領域の外に出て、入力部110が認識出来なくなっても、物体情報制御部200は、所有状態管理表及び属性管理表の情報を維持する。この際、物体情報制御部200は、手指ID「a」の手がセンシング可能領域の外に出たことを示す情報を付す。ここでは、物体情報制御部200は、手指IDに括弧を付すことで手がセンシング可能領域の外に出たことを示す。
図22Eは、手指ID「a」の手がセンシング可能領域の中に戻ってきた状態を示す図である。ここでは、手指ID「a」の手は認識ID配列「A」の物体を所有したままであるとみなし、物体情報制御部200は、所有状態管理表の手指IDに付いていた括弧を外す。
図22Fは、手指ID「a」の手が認識ID配列「A」の物体をテーブルに置いた後、物体から手を離した状態を示す図である。物体がテーブルに置かれ、その物体から手が離されると、物体情報制御部200は、テーブルに置かれた物体を認識し、その物体に対して、図22Fに示したような情報を登録する。物体情報制御部200は、その物体に対し物体IDは「2」として登録し、認識ID配列に認識IDとして「A」を登録する。
次に、センシング可能領域内に2つ重ねて置かれている物体の一つを手で持って移動させた場合の例を説明する。図23A~23Dは、センシング可能領域に物体が置いてあり、その物体をセンシング可能領域内で動かした場合の動作を説明する説明図である。図23A~23Dには、テーブルがセンシング可能領域であり、そのテーブル上で物体が動かされた場合の各表の状態も併せて図示されている。
図23Aは、物体ID「1」の物体がテーブルに置かれている状態を示す図である。物体ID「1」の物体は、高さ方向の基準特徴量として高さ1センチメートルの2つの物体が積み重なったものである。この状態では、図23Aに示したような情報が物体管理表、所有状態管理表、属性管理表に登録されているとする。物体情報制御部200は、積み重なっている2つの物体の内、上の物体は認識IDが「A」であるとして認識しているが、下の物体はどのような物体か認識出来ていない。従って物体情報制御部200は、物体ID「1」の物体について、物体管理表の認識ID配列に「?,A」として登録している。
図23Bは、物体ID「1」の物体が手(hand a)に持たれた状態を示す図である。物体ID「1」の物体が手(hand a)に覆われたことが検出されると、物体情報制御部200は、当該物体に対応する認識ID配列の情報を所有状態管理表に移す。この際、物体情報制御部200は、検出した手の手指IDを「a」として登録する。
図23Cは、手指ID「a」の手が認識ID配列「A」の物体のうち、上の物体を持ってテーブル上で動いている状態を示す図である。物体情報制御部200は、残された物体について物体IDを「2」として物体管理表に登録する。この際、物体情報制御部200は、不明であった物体ID「2」の物体について、認識ID配列に「A」を割り当てる。これは、同じ所に積み重なっている物体は同じ属性を有すると推定することに基づくものである。また物体情報制御部200は、所有状態管理表に、認識ID配列「A」の物体を手指ID「a」の手が所有していることを登録する。
図23Dは、手指ID「a」の手が物体をテーブルに置いた状態を示す図である。物体情報制御部200は、手から離れた物体について、物体IDを「3」として物体管理表に登録する。その際、直前まで認識ID配列「A」の物体を手指ID「a」の手が所有していたので、物体情報制御部200は、物体ID「3」の物体について、認識ID配列に「A」を割り当てる。
次に、センシング可能領域内に置かれている物体を積み重ねた後に移動させ、さらにその中の一つを手で持って移動させた場合の例を説明する。図24A~24Fは、センシング可能領域に物体が置いてあり、その物体をセンシング可能領域内で動かした場合の動作を説明する説明図である。図24A~24Fには、テーブルがセンシング可能領域であり、そのテーブル上で物体が動かされた場合の各表の状態も併せて図示されている。
図24Aは、物体ID「1」および「2」の物体がテーブルに置かれている状態を示す図である。物体ID「1」および「2」の物体は、それぞれ高さ1センチメートルの物体である。この状態では、図24Aに示したような情報が物体管理表、所有状態管理表、属性管理表に登録されているとする。物体ID「1」の物体の認識ID配列は「A」であり、物体ID「2」の物体の認識ID配列は「B」である。
図24Bは、物体ID「1」の物体が手(hand a)に持たれた状態を示す図である。物体ID「1」の物体が手(hand a)に覆われたことが検出されると、物体情報制御部200は、当該物体に対応する認識ID配列の情報を所有状態管理表に移す。この際、物体情報制御部200は、検出した手の手指IDを「a」として登録する。
図24Cは、物体ID「1」の物体が物体「2」に、手によって積み重ねられている状態を示す図である。物体ID「1」に次いで「2」の物体が手(hand a)に覆われたことが検出されると、物体情報制御部200は、物体ID「2」の物体に対応する認識ID配列の情報も所有状態管理表に移す。
図24Dは、積み重ねられている物体が手によって持ち上げられている状態を示す図である。物体情報制御部200は、所有状態管理表における手指IDを「a」の行に認識ID配列「A,B」を登録する。物体情報制御部200は、手指ID「a」を有する手が認識ID配列「A,B」からなる物体を持っていることを把握する。
図24Eは、積み重ねられている物体のうち、下の物体をテーブルに置いた状態を示す図である。物体情報制御部200は、手から離れた物体について、物体IDを「3」として物体管理表に登録する。その際、直前まで認識ID配列「A」の物体を手指ID「a」の手が所有していたので、物体情報制御部200は、物体ID「3」の物体について、認識ID配列に、下の物体に割り当てられていた認識IDである「B」を割り当てる。
図24Fは、手指ID「a」の手が物体をテーブルに置いた状態を示す図である。物体情報制御部200は、手から離れた物体について、物体IDを「4」として物体管理表に登録する。その際、直前まで認識ID配列「A」の物体を手指ID「a」の手が所有していたので、物体情報制御部200は、物体ID「4」の物体について、認識ID配列に「A」を割り当てる。
次に、センシング可能領域内に置かれている物体に、別の物体が1段積み重ねられた場合の例を説明する。図25A~25Dは、センシング可能領域内に置かれている物体に、別の物体が積み重ねられた場合の動作を説明する説明図である。図25A~25Dには、テーブルがセンシング可能領域であり、そのテーブル上で物体が動かされた場合の各表の状態も併せて図示されている。
図25Aは、物体ID「1」の物体がテーブルに置かれている状態を示す図である。物体ID「1」の物体は、高さ1センチメートルの物体である。この状態では、図25Aに示したような情報が物体管理表、所有状態管理表、属性管理表に登録されているとする。物体ID「1」の物体の認識ID配列は「A」である。
図25Bは、物体ID「1」の物体に、別の物体が積み重ねられた状態の例を示す図である。そして図25Cは、物体から手が離された状態の例を示す図である。所有状態管理表には何も情報が登録されていなかったので、図25Cで現れた(認識可能になった)物体は、誰が持っていた物体か不明である。従って、その物体がどのような物体であるかも不明である。よって物体情報制御部200は、物体ID「1」を「2」に変化させると共に、認識ID配列を「?,A」として物体管理表に登録する。
図25Dは、積み重ねられた物体の認識IDを推定する例を示す図である。物体情報制御部200は、積み重ねられた物体は、下に置かれていた物体と同じ認識IDを有すると推定し、物体ID「2」の物体の認識ID配列を「?,A」として物体管理表に登録する。
次に、センシング可能領域内に置かれている物体に、別の物体が2段積み重ねられた場合の例を説明する。図26A~26Dは、センシング可能領域内に置かれている物体に、別の物体が2段積み重ねられた場合の動作を説明する説明図である。図26A~26Dには、テーブルがセンシング可能領域であり、そのテーブル上で物体が動かされた場合の各表の状態も併せて図示されている。
図25Aは、物体ID「1」の物体がテーブルに置かれている状態を示す図である。物体ID「1」の物体は、高さ1センチメートルの物体である。この状態では、図25Aに示したような情報が物体管理表、所有状態管理表、属性管理表に登録されているとする。物体ID「1」の物体の認識ID配列は「A」である。また、手指ID「a」の手には、認識ID配列が「B」で登録されている。すなわち物体情報制御部200は、この時点では、認識IDが「B」である物体が1つだけ手指ID「a」の手に持たれていると把握している。
図26Bは、物体ID「1」の物体に、別の物体が積み重ねられた状態の例を示す図である。そして図26Cは、物体から手が離された状態の例を示す図である。入力部110による認識の結果、高さが増えたので、物体情報制御部200は、物体ID「1」を「2」に変化させる。そして物体情報制御部200は、所有状態管理表に登録されている認識ID配列の情報を物体管理表に移すが、その際、高さが1センチメートルから3センチメートルに増えたので、物体ID「1」の物体に、別の物体が2つ積み重ねられたことになる。しかし、物体情報制御部200は認識IDが「B」である物体が1つだけ手指ID「a」の手に持たれていると把握している。すなわち、一番下の物体の認識IDは「A」であり、一番上の物体の認識IDは「B」であるが、真ん中の物体の認識IDは何であるか分からない。従って物体情報制御部200は物体ID「2」の認識ID配列を「A,?,B」と登録する。
図26Dは、積み重ねられた物体の認識IDを推定する例を示す図である。物体情報制御部200は、認識IDが不明な物体は、一緒に持たれていた物体と同じ認識IDを有すると推定し、物体ID「2」の物体の認識ID配列を「A,B,B」として物体管理表に登録する。
本実施形態では、このように物体に認識IDを付与するとともに、物体の近くにあった手を認識することで、ユーザが手でテーブルに置かれた物体を覆い、再度物体をテーブルに置いた場合であっても、当該物体に認識IDを付与し続けることが出来る。この技術を用いることで、例えば、ネットワークへの通信機能が無い物体であっても、あたかもネットワーク通信機能を有するかのような振る舞いをさせることが可能になる。
図27は、本開示の実施の形態に係る情報処理システム100を用いた通信システムの構成例を示す説明図である。図27には、情報処理システム100と、情報処理システム100にネットワークを介して接続されているルータ700及びPC800が図示されている。ネットワークはインターネット等のWAN(Wide Area Network)であってもよく、LAN(Local Area Network)であってもよい。情報処理システム100と、ルータ700と、PC800との間のネットワーク接続は、有線であっても良く、無線であっても良い。またネットワークの通信プロトコルとしてTCP/IPが用いられてもよく、その他のプロトコル、例えば独自に定められたプロトコル等が使用されても良い。
また図27には、テーブル上の、情報処理システム100からセンシング可能な領域に置かれている物体601、602が図示されている。この物体601、602は、例えば食器などの、いずれも通信機能を有していない物体である。そこで本実施形態では、これらの物体601、602に、IPアドレスのような、物体を一意に識別可能な識別子を付与する。この識別子は、物体601、602に仮想的にアクセスするための識別子であり、図27には、情報処理システム100、ルータ700、PC800には実際の通信で使用するIPアドレスが、物体601、602には、情報処理システム100から一意に識別可能な仮想のIPアドレスが図示されている。すなわち、物体601、602に割り当てられた仮想のIPアドレスは、情報処理システム100がこのIPアドレスを用いて通信を行うためのものでは無く、情報処理システム100が物体を識別するために使用するものである。なお、本実施形態では物体を一意に識別可能な識別子としてIPアドレスを用いたが、本開示は係る例に限定されるものでは無く、情報処理システム100は、他にも物体のセンシングに際して物体IDを用いてもよく、物体IDに所定のインデックス(objectIndex)を付加したものを用いてもよい。
図27に示した物体601、602には、属性処理部220によって以下のような情報が割り当てられている。ここで物体IDが1の物体は物体601であり、物体IDが2の物体は物体602である。
情報処理システム100は、仮想的に、ゲートウェイであり、かつDHCP(Dynamic Host Configuration Protocol)サーバのように振る舞う仮想的なローカルエリアネットワークを構成する。物体601、602に、上記の表5で示したような属性を付与することで、例えばPC800から物体601、602の状態のセンシングを情報処理システム100に指示することが可能となる。すなわち、PC800から、物体601、602に関連付けられたIPアドレスを指定したリクエストを情報処理システム100に送信することで、情報処理システム100は、指定した物体に対する処理(センシング処理や情報投影処理)を実行することができる。
情報処理システム100は、上述したように様々なセンサを備えうるので、例えばセンシング可能領域に置かれた物体の重さ、大きさ、数、色、温度等の情報をセンシングすることができる。そして情報処理システム100は、PC800からのリクエストに基づいて、どの物体のどの情報をセンシングすべきかについて把握することが可能となる。なお、情報処理システム100は、外部の装置からのリクエストに基づいて2つ以上の状態のセンシングを同時に行っても良い。例えば、PC800から指定された物体の数と重さをセンシングするリクエストが送信された場合は、情報処理システム100は、リクエストに基づいて指定された物体の数と重さをセンシングする。
図28は、本開示の実施の形態に係る情報処理システム100の動作例を示す流れ図である。図28に示したのは、情報処理システム100からセンシング可能な領域に置かれている物体の状態を外部からの指示に基づいてセンシングしたり、情報の投影を外部からの指示に基づいて行ったりする場合の、情報処理システム100の動作例である。
情報処理システム100は、ユーザによる所定の操作が行われたなどの所定の終了条件を満たしたかどうかを判断し(ステップS201)、終了条件を満たしていれば(ステップS201、Yes)、一連の処理を終了するが、終了条件を満たしていなければ(ステップS201、No)、続いて外部の装置からリクエストを受信したかどうか判断する(ステップS202)。本実施形態では、外部の装置からは、リクエストとして、物体等の状態を取得する情報取得リクエストか、情報を出力する情報出力リクエストのいずれかがネットワークを介して情報処理システム100に送信される。
外部の装置、例えばPC800からリクエストを受信していなければ(ステップS202、No)、情報処理システム100は、ステップS201の所定の終了条件を満たしたかどうかの判断処理に戻る。
一方、外部の装置、例えばPC800からリクエストを受信していれば(ステップS202、Yes)、情報処理システム100は、そのリクエストを解析し(ステップS203)、受信したリクエストが物体の状態を取得する情報取得リクエストかどうか判断する(ステップS204)。当該判断は、例えば属性処理部220が実行しうる。物体の状態を取得する情報取得リクエストであれば(ステップS204、Yes)、情報処理システム100は、物体の状態の取得を行う情報取得リクエスト処理を行う(ステップS205)。物体の状態の取得を行う情報取得リクエスト処理とは、入力部110を用いて、センシング可能領域に置かれた物体のセンシングを行う処理であり、この場合において情報取得リクエストはセンシングリクエストである。センシング対象の物体は、外部の装置、例えばPC800から指示されうる。なお情報取得リクエストの内容がセンシングを必要としない情報取得である場合は、情報処理システム100は物体のセンシング処理を行わず、指定された情報をメモリなどの記憶媒体から読み出し、読み出した情報をレスポンスとして送信する。センシングを必要としない情報取得とは、例えば情報処理システム100の状態の取得であり、具体的には例えば、情報処理システム100の電源投入からの稼働時間、総稼働時間、稼働時間帯、ファームウェアのバージョン等の情報を取得する場合などをいう。また情報処理システム100の状態として、センサやプロジェクタ等の状態(正常か異常か)を取得できれば、それらのデバイスの状態についても情報処理システム100の状態に含まれうる。受信リクエストが情報を出力する情報出力リクエストであれば(ステップS204、Yes)、情報処理システム100は、情報の投影を行う情報出力リクエスト処理を行う(ステップS206)。これらの処理は、例えば属性処理部220が実行しうる。情報の投影対象は、外部の装置、例えばPC800から指示されうる。情報出力リクエスト処理が情報の投影である場合、情報処理システム100は、リクエストに含まれる識別子で指定された物体の位置、高さ等や、投影対象の状態等をセンシングして、物体に応じた適切な場所に投影する。例えば、物体の色が黒である、物体の天面の形状の起伏が激しい、物体の天面の面積が狭い等の理由で視認性が悪い場合は、情報処理システム100は、その物体の周辺に投影する。また例えば、物体の色が白であり、物体の天面の形状が平面で、物体の天面の面積も投影に十分な広さである場合は、情報処理システム100は、その物体の天面に投影する。また入力部110に備えられるセンサやその他のセンサによりユーザの位置をセンシングできる場合、情報処理システム100は、そのユーザに正対する方向に文字列や画像などの情報を投影してもよい。すなわち、外部の装置、例えばPC800が情報出力リクエストを送信する場合、PC800が情報を投影したい物体や、当該物体の周辺の現在の状態を把握していなくても、また投影場所を座標などで細かく指定しなくても、識別子を指定するだけで、物体に対して適切な場所へ情報の投影が可能となる。また情報を投影するリクエストには、物体との相対的な投影位置(例えば物体の天面、右方向、左方向、上方向、又は下方向)を指定するコマンドが含まれていても良い。情報処理システム100が物体の識別子及び相対的な投影位置を指定するコマンドをPC800から受信した場合、物体情報制御部200は、受信したリクエストで指定された物体の識別子に対応する物体の現在位置をセンシングし、その現在位置を基準として当該コマンドで指定された相対的な位置に指定された情報を投影する。なお、情報出力リクエスト処理は情報の投影に限られない。例えば、情報出力リクエストは音声の出力を指示するコマンドを含んでいてもよい。情報出力リクエストに音声の出力を指示するコマンドが含まれている場合、情報処理システム100は、情報出力リクエスト処理として指向性スピーカなどによる音声の出力を行っても良い。
取得リクエスト処理または投影リクエスト処理が完了すると、情報処理システム100は、リクエストを送った装置に対するリプライ処理を行う(ステップS207)。情報処理システム100は、一連の動作を実行することで、外部の装置からのリクエストに応じて、物体のセンシングを行ったり、情報の投影を行ったりすることが出来る。
次に、情報処理システム100とPC800との間の具体的な通信内容について説明する。図29は、情報処理システム100及びPC800の動作例を示す流れ図である。図29に示した例では、物体を識別する情報として物体IDに所定のインデックス(objectIndex)を付加したものを用いている。
PC800は、まず情報処理システム100に対して、情報処理システム100のセンシング可能領域に物体が存在するかどうかのリクエストを送信する(ステップS211)。この際、PC800からは、情報処理システム100のアドレスを指定し、引数に対象の物体の認識ID(ここでは認識IDを「B」とする。以下同じ)を指定する。情報処理システム100は、センシングを行って、指定された物体が存在するかどうかのレスポンスをPC800に返す(ステップS212)。情報処理システム100は、物体が存在していればコード200番をPC800に返し、存在していなければコード404番をPC800に返す。これらのコードは、HTTP(Hyper Text Transfer Protocol)で規定されたステータスコードを用いることが出来、例えばWEB API(Application Programming Interface)として利用することができる。ただし、情報処理システム100とPC800との間で使用されるコードはHTTPで規定されたステータスコードに限定されるものではない。
続いてPC800は、情報処理システム100に対して、その物体の温度を取得するリクエストを送信する(ステップS213)。情報処理システム100は、リクエストに応じて、指定された物体の温度のセンシングを行い、センシング結果をPC800に返す(ステップS214)。ここでは、認識IDが「B」の物体が2つあり、情報処理システム100はその2つの物体の温度をセンシングしてPC800へ返す例が示されている。なお、図29には、「objectIndex」が「1」の物体の温度は摂氏20度であり、「objectIndex」が「2」の物体の温度は摂氏10度であることが、情報処理システム100からPC800に返されている。
続いてPC800は、情報処理システム100に対して情報を投影するリクエストを送信する(ステップS215)。ここでは、温度が摂氏20度であった物体に対して「おかわりいかがですか?」というメッセージを投影するリクエストをPC800から情報処理システム100に送っている例が示されている。
情報処理システム100は、情報を投影するリクエストに基づいて情報の投影を行うと、その投影処理の結果をPC800に返す(ステップS216)。
図30A、30Bは、情報処理システム100による物体のセンシング及び情報の投影例を示す説明図である。図30A、30Bには、物体601、602として、それぞれビールが注がれたグラスが図示されている。物体601、602は、いずれも認識ID(recognitionID)が「B」として登録されている。また物体601は「objectIndex」が「1」として、物体602は「objectIndex」が「2」として、それぞれ登録されている。
情報処理システム100は、PC800から送られた、物体の温度を取得するリクエストに応じて物体601、602の温度をセンシングした結果、物体601の温度が20度、物体602の温度が10度と、それぞれ測定した。
物体601の温度が20度であったので、PC800の操作者は物体601に対して「おかわりいかがですか?」というメッセージを投影するリクエストを情報処理システム100に送信する。情報処理システム100は、PC800からのリクエストに応じ、図30Bに示したように、物体601の周囲に「おかわりいかがですか?」というメッセージを投影することができる。
PC800から情報処理システム100へのリクエストの他の例を示す。認識IDがAである物体の個数を返して欲しい場合は、PC800は情報処理システム100へ、以下のような引数を与えたURLによるリクエストを送信する。情報処理システム100は、リクエストに基づいて認識IDがAである物体の個数をカウントし、認識IDがAである物体の個数をPC800へ返信する。
http://11.22.33.2/index.html?recognitionID=A&query=number
認識IDがAである1番目の物体の色を返して欲しい場合は、PC800は情報処理システム100へ、以下のような引数を与えたURLによるリクエストを送信する。情報処理システム100は、リクエストに基づいて認識IDがAである1番目の物体の色をセンシングし、認識IDがAである1番目の物体の色をPC800へ返信する。
http://11.22.33.2/index.html?recognitionID=A&objectIndex=1&query=color
認識IDがBである2番目の物体のサイズをミリメートル単位で返して欲しい場合は、PC800は情報処理システム100へ、以下のような引数を与えたURLによるリクエストを送信する。情報処理システム100は、リクエストに基づいて認識IDがBである2番目の物体のサイズをミリメートル単位でセンシングし、認識IDがBである2番目の物体のサイズをPC800へ返信する。
http://11.22.33.2/index.html?recognitionID=B&objectIndex=2&query=size&unit=mm
図29の例では物体を識別する情報として物体IDに所定のインデックス(objectIndex)を付加したものが用いられていたが、上述したように、物体を識別する情報として物体IDそのものが用いられても良く、物体IDにIPアドレスを付加したものが用いてもよい。どのような情報が物体を識別する情報として用いられるかによって上記のURLの引数部分(「?」以降のパラメータ)が変化する。
認識IDに関連付けられる属性は、IPアドレス以外のものであってもよい。例えば、認識IDに関連付けられる属性として、物体の種類(タイプ)の情報が関連付けられても良い。物体の種類としては、例えば食器であれば、皿、コーヒーカップ、ワイングラスなどである。この物体の種類(タイプ)の情報は、認識IDで示された種類に属する物体に、仮想的にアクセスするための種類識別子である。認識IDに関連付けられる属性として物体の種類の情報を関連付ければ、情報処理システム100は、認識IDを指定することでセンシング環境下の同一種類の複数の物体に、一度のリクエストで情報取得処理を行ったり、情報出力処理を行ったりしてもよい。
また情報処理システム100は、認識IDに物体の種類の情報が関連付けられた場合、認識IDごとに対応したアクションIDを設定し、情報出力リクエストに認識IDとアクションIDを含めても良い。このアクションIDは、物体の種類に対応した情報出力処理を示すものである。情報処理システム100は、情報出力リクエストに認識IDとアクションIDを含めることで、物体の種類に応じた適切なアクションを実行することが出来る。例えば、アクションIDと情報出力処理との内容を関連付けたデータベースを用意しておき、情報処理システム100は、このデータベースを参照して情報出力処理の内容を決定しても良い。例えば情報処理システム100は、PC800からのリクエストが前記種類識別子と前記アクション識別子を伴う情報出力リクエストである場合、物体の種類の情報により示された種類に属する物体に対し、アクションIDに対応する情報出力を出力部130に行わせる。以下において、PC800からリクエストを受けた情報処理システム100の動作例を説明する。
図31は、情報処理システム100及びPC800の動作例を示す流れ図である。図31に示した例では、物体を識別する情報として物体IDに所定のインデックス(objectIndex)を付加したものを用いている。また、図32は、図31の動作例においてセンシングされる物体の例を示す説明図である。図32には、センシング対象の物体としてテーブルに置かれたコーヒーカップ及びコーヒーカップの中に注がれているコーヒーが示されている。
PC800は、まず情報処理システム100に対して、情報処理システム100のセンシング可能領域に物体が存在するかどうかのリクエストを送信する(ステップS221)。この際、PC800からは、情報処理システム100のアドレスを指定し、引数に対象の物体の認識ID(ここでは認識IDを「C」とする。以下同じ)を指定する。情報処理システム100は、センシングを行って、指定された物体が存在するかどうかのレスポンスをPC800に返す(ステップS222)。情報処理システム100は、物体が存在していればコード200番をPC800に返し、存在していなければコード404番をPC800に返す。これらのコードは、HTTPで規定されたステータスコードを用いることができ、例えばWEB APIとして利用することができる。ただし、情報処理システム100とPC800との間で使用されるコードは、情報処理システム100とPC800が処理可能な所定のコードであればよく、必ずしもHTTPで規定されたステータスコードに限定されるものではない。
続いてPC800は、情報処理システム100に対して、その物体の内部高さを取得するリクエストを送信する(ステップS223)。情報処理システム100は、リクエストに応じて、指定された物体の内部高さのセンシングを行い、センシング結果をPC800に返す(ステップS224)。ここでは、認識IDが「C」の物体が1つあり、情報処理システム100はその物体の内部高さをセンシングしてPC800へ返す例が示されている。なお、図31には、「objectIndex」が「1」の物体の内部高さは10センチメートルであることが、情報処理システム100からPC800に返されている。
続いてPC800は、情報処理システム100に対して、その物体に対して文字を投影するリクエストを送信する(ステップS225)。ここでは、センシングした物体に対して「good morning」という文字を投影する例が示されている。情報処理システム100は、指定された文字を投影した結果に関するレスポンスをPC800に返す(ステップS226)。PC800からリクエストを受けた情報処理システム100は、図32に示すように、コーヒーカップに注がれたコーヒーの表面に「good morning」という文字を投影することが可能となる。
所定期間経過後、PC800は、情報処理システム100に対して、センシングした物体の内部高さを取得するリクエストを送信する(ステップS227)。情報処理システム100は、リクエストに応じて、指定された物体の内部高さのセンシングを行い、センシング結果をPC800に返す(ステップS228)。ここでは、認識IDが「C」の物体が1つあり、情報処理システム100はその物体の内部高さをセンシングしてPC800へ返す例が示されている。なお、図31には、「objectIndex」が「1」の物体の内部高さは0センチメートルであることが、情報処理システム100からPC800に返されている。
続いてPC800は、情報処理システム100に対して、その物体に対して文字を投影するリクエストを送信する(ステップS229)。ここでは、センシングした物体の周囲に対して「It's time to go」という文字を投影する例が示されている。情報処理システム100は、指定された文字を投影した結果に関するレスポンスをPC800に返す(ステップS230)。なお、このステップS230では、ステップS225とは異なるアクションID=2が指定されている。このアクションID=2は、センシングした物体の周囲に、現在時刻と共にメッセージを表示するアクションであるとする。PC800からリクエストを受けた情報処理システム100は、図32に示すように、コーヒーカップの周囲に現在時刻を表示すると共に「It's time to go」という文字を投影することが可能となる。
図33は、情報処理システム100及びPC800の動作例を示す流れ図である。図33に示した例では、物体を識別する情報として物体IDに所定のインデックス(objectIndex)を付加したものを用いている。また、図34は、図33の動作例においてセンシングされる物体の例を示す説明図である。図34には、センシング対象の物体としてテーブルに置かれた皿およびワイングラスが示されている。
PC800は、まず情報処理システム100に対して、情報処理システム100のセンシング可能領域に物体が存在するかどうかのリクエストを送信する(ステップS231)。この際、PC800からは、情報処理システム100のアドレスを指定し、対象の物体の認識ID(ここでは認識IDを「D」とする)を引数で指定すると共に、その物体の位置を座標で返すための引数を指定する。情報処理システム100は、センシングを行って、指定された物体が存在するかどうかのレスポンスをPC800に返す(ステップS232)。情報処理システム100は、物体が存在していればコード200番をPC800に返し、存在していなければコード404番をPC800に返す。これらのコードは、HTTPで規定されたステータスコードを用いることが出来、例えばWEB APIとして利用することができる。ただし、情報処理システム100とPC800との間で使用されるコードはHTTPで規定されたステータスコードに限定されるものではない。また情報処理システム100はレスポンスをPC800に返す際に、その物体の中心位置の座標を返す。
続いてPC800は、情報処理システム100に対して、情報処理システム100のセンシング可能領域に物体が存在するかどうかのリクエストを送信する(ステップS233)。この際、PC800からは、情報処理システム100のアドレスを指定し、対象の物体の認識ID(ここでは認識IDを「E」とする)を引数で指定すると共に、その物体の位置を座標で返すための引数を指定する。情報処理システム100は、センシングを行って、指定された物体が存在するかどうかのレスポンスをPC800に返す(ステップS234)。情報処理システム100は、物体が存在していればコード200番をPC800に返す。また情報処理システム100はレスポンスをPC800に返す際に、その物体の中心位置の座標を返す。
そしてPC800は、情報処理システム100から取得した2つの物体の中心座標間の距離が所定の距離以下であれば、情報処理システム100に対して、「objectIndex」が「1」の物体に対して所定の柄を投影するリクエストを送信する(ステップS235)。情報処理システム100は、所定の柄を投影した結果に関するレスポンスをPC800に返す(ステップS236)。
この処理を応用すれば、PC800は、様々な物体に対して柄などを投影するよう情報処理システム100に指示を送出することが出来る。図35は、皿の近くに置かれたワイングラスに所定の柄が投影された様子を示す図である。また図36は、皿の近くに置かれたビアマグに所定の柄が投影された様子を示す図である。情報処理システム100は、皿の近くに置かれている物体に応じた柄を投影することが可能となる。
図37は、情報処理システム100及びPC800の動作例を示す流れ図である。図37に示した例では、物体を識別する情報として物体IDに所定のインデックス(objectIndex)を付加したものを用いている。また、図38は、図37の動作例においてセンシングされる物体の例を示す説明図である。図38には、センシング対象の物体としてテーブルに置かれた皿およびワイングラスが示されている。
PC800は、まず情報処理システム100に対して、情報処理システム100のセンシング可能領域に物体が存在するかどうかのリクエストを送信する(ステップS241)。この際、PC800からは、情報処理システム100のアドレスを指定し、対象の物体の認識ID(ここでは認識IDを「D」とする)を引数で指定すると共に、その物体の位置を座標で返すための引数を指定する。情報処理システム100は、センシングを行って、指定された物体が存在するかどうかのレスポンスをPC800に返す(ステップS242)。情報処理システム100は、物体が存在していればコード200番をPC800に返し、存在していなければコード404番をPC800に返す。これらのコードは、HTTPで規定されたステータスコードを用いることが出来、例えばWEB APIとして利用することができる。ただし、情報処理システム100とPC800との間で使用されるコードはHTTPで規定されたステータスコードに限定されるものではない。また情報処理システム100はステップS242でレスポンスをPC800に返す際に、認識した物体の中心位置の座標を返す。
続いてPC800は、情報処理システム100のセンシング可能領域に物体が存在するかどうかのリクエストを送信する(ステップS243)。この際、PC800からは、情報処理システム100のアドレスを指定し、対象の物体の認識ID(ここでは認識IDを「G」とする)を引数で指定すると共に、その物体の位置を座標で返すための引数を指定する。情報処理システム100は、センシングを行って、指定された物体が存在するかどうかのレスポンスをPC800に返す(ステップS244)。また情報処理システム100はステップS244でレスポンスをPC800に返す際に、認識した物体の中心位置の座標を返す。
続いてPC800は、情報処理システム100のセンシング可能領域に物体が存在するかどうかのリクエストを送信する(ステップS245)。この際、PC800からは、情報処理システム100のアドレスを指定し、対象の物体の認識ID(ここでは認識IDを「H」とする)を引数で指定すると共に、その物体の位置を座標で返すための引数を指定する。情報処理システム100は、センシングを行って、指定された物体が存在するかどうかのレスポンスをPC800に返す(ステップS246)。
図37に示した例では、認識ID「D」、「G」の物体は存在するが、認識ID「H」の物体は存在しないことが情報処理システム100のセンシングにより判明したとする。するとPC800は、情報処理システム100に対して、「objectIndex」が「1」で、物認識IDが「D」の物体に対して所定の柄を投影するリクエストを送信する(ステップS247)。情報処理システム100は、所定の柄を投影した結果に関するレスポンスをPC800に返す(ステップS248)。図39は、情報処理システム100がセンシングした物体(皿)の周囲に所定の柄を投影している様子を示す説明図である。
図40は、本実施形態に係る情報処理システム100の動作例を示す流れ図である。図40に示したのは、図37に示した動作例に対応するものであり、情報処理システム100の動作に注目して示した流れ図である。情報処理システム100は、PC800からのセンシングの指示により、まず認識IDがD(皿)の物体が見つかったかどうかを判定する(ステップS251)。認識IDがD(皿)の物体が見つからなかった場合は(ステップS251、No)、情報処理システム100は、その後何もせずに処理を終了する(ステップS252)。
一方、認識IDがD(皿)の物体が見つかった場合は(ステップS251、Yes)、続いて情報処理システム100は、PC800からのセンシングの指示により、認識IDがG(スープ皿)の物体が見つかったかどうかを判定する(ステップS253)。認識IDがG(スープ皿)の物体が見つからなかった場合は(ステップS253、No)、情報処理システム100は、認識IDがD(皿)の物体が見つかった場合の柄を表示する処理を実行する(ステップS254)。図41は、認識IDがD(皿)の物体が見つかった場合に情報処理システム100が投影する柄の例を示す説明図である。図41には、テーブルに置かれた皿の周囲、および、皿の表面に所定の柄が投影されている様子が示されている。
一方、認識IDがG(スープ皿)の物体が見つかった場合は(ステップS253、Yes)、続いて情報処理システム100は、PC800からのセンシングの指示により、認識IDがH(ナプキン)の物体が見つかったかどうかを判定する(ステップS255)。認識IDがH(ナプキン)の物体が見つからなかった場合は(ステップS255、No)、情報処理システム100は、認識IDがG(スープ皿)の物体が見つかった場合の柄を表示する処理を実行する(ステップS256)。図42は、認識IDがG(スープ皿)の物体が見つかった場合に情報処理システム100が投影する柄の例を示す説明図である。図42には、スープ皿の周囲に所定の柄が投影されている様子が示されている。
一方、認識IDがH(ナプキン)の物体が見つかった場合は(ステップS255、Yes)、続いて情報処理システム100は、認識IDがH(ナプキン)の物体が見つかった場合の柄を表示する処理を実行する(ステップS257)。図43は、認識IDがH(ナプキン)の物体が見つかった場合に情報処理システム100が投影する柄の例を示す説明図である。図43には、皿の周囲、および、ナプキンの表面に所定の柄が投影されている様子が示されている。
このように、情報処理システム100は、認識した物体に応じてそれぞれ異なる絵柄を投影する制御を、PC800からの指示により実行することが可能となる。
<2.ハードウェア構成例>
次に、図44を参照して、本開示の一実施形態にかかる情報処理システム100のハードウェア構成について説明する。図44は、本開示の実施形態にかかる情報処理システム100のハードウェア構成例を示すブロック図である。
図44に示すように、情報処理システム100は、CPU(Central Processing unit)901、ROM(Read Only Memory)903、およびRAM(Random Access Memory)905を含む。また、情報処理システム100は、ホストバス907、ブリッジ909、外部バス911、インターフェース913、入力装置915、出力装置917、ストレージ装置919、ドライブ921、接続ポート923、通信装置925を含んでもよい。さらに、情報処理システム100は、必要に応じて、撮像装置933、およびセンサ935を含んでもよい。情報処理システム100は、CPU901に代えて、またはこれとともに、DSP(Digital Signal Processor)またはASIC(Application Specific Integrated Circuit)と呼ばれるような処理回路を有してもよい。
CPU901は、演算処理装置および制御装置として機能し、ROM903、RAM905、ストレージ装置919、またはリムーバブル記録媒体927に記録された各種プログラムに従って、情報処理システム100内の動作全般またはその一部を制御する。ROM903は、CPU901が使用するプログラムや演算パラメータなどを記憶する。RAM905は、CPU901の実行において使用するプログラムや、その実行において適宜変化するパラメータなどを一次記憶する。CPU901、ROM903、およびRAM905は、CPUバスなどの内部バスにより構成されるホストバス907により相互に接続されている。さらに、ホストバス907は、ブリッジ909を介して、PCI(Peripheral Component Interconnect/Interface)バスなどの外部バス911に接続されている。
入力装置915は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなど、ユーザによって操作される装置である。入力装置915は、ユーザの音声を検出するマイクを含んでもよい。入力装置915は、例えば、赤外線やその他の電波を利用したリモートコントロール装置であってもよいし、情報処理システム100の操作に対応した携帯電話などの外部接続機器929であってもよい。入力装置915は、ユーザが入力した情報に基づいて入力信号を生成してCPU901に出力する入力制御回路を含む。ユーザは、この入力装置915を操作することによって、情報処理システム100に対して各種のデータを入力したり処理動作を指示したりする。また、後述する撮像装置933も、ユーザの手の動きなどを撮像することによって、入力装置として機能しうる。
出力装置917は、取得した情報をユーザに対して視覚的または聴覚的に通知することが可能な装置で構成される。出力装置917は、例えば、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、有機EL(Electro-Luminescence)ディスプレイ、プロジェクタなどの表示装置、ホログラムの表示装置、スピーカおよびヘッドホンなどの音声出力装置、ならびにプリンタ装置などでありうる。出力装置917は、情報処理システム100の処理により得られた結果を、テキストまたは画像などの映像として出力したり、音声または音響などの音声として出力したりする。また、出力装置917は、周囲を明るくするためライトなどを含んでもよい。
ストレージ装置919は、情報処理システム100の記憶部の一例として構成されたデータ格納用の装置である。ストレージ装置919は、例えば、HDD(Hard Disk Drive)などの磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイスなどにより構成される。このストレージ装置919は、CPU901が実行するプログラムや各種データ、および外部から取得した各種のデータなどを格納する。
ドライブ921は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブル記録媒体927のためのリーダライタであり、情報処理システム100に内蔵、あるいは外付けされる。ドライブ921は、装着されているリムーバブル記録媒体927に記録されている情報を読み出して、RAM905に出力する。また、ドライブ921は、装着されているリムーバブル記録媒体927に記録を書き込む。
接続ポート923は、機器を情報処理システム100に直接接続するためのポートである。接続ポート923は、例えば、USB(Universal Serial Bus)ポート、IEEE1394ポート、SCSI(Small Computer System Interface)ポートなどでありうる。また、接続ポート923は、RS-232Cポート、光オーディオ端子、HDMI(登録商標)(High-Definition Multimedia Interface)ポートなどであってもよい。接続ポート923に外部接続機器929を接続することで、情報処理システム100と外部接続機器929との間で各種のデータが交換されうる。
通信装置925は、例えば、通信ネットワーク931に接続するための通信デバイスなどで構成された通信インターフェースである。通信装置925は、例えば、有線または無線LAN(Local Area Network)、Bluetooth(登録商標)、またはWUSB(Wireless USB)用の通信カードなどでありうる。また、通信装置925は、光通信用のルータ、ADSL(Asymmetric Digital Subscriber Line)用のルータ、または、各種通信用のモデムなどであってもよい。通信装置925は、例えば、インターネットや他の通信機器との間で、TCP/IPなどの所定のプロトコルを用いて信号などを送受信する。また、通信装置925に接続される通信ネットワーク931は、有線または無線によって接続されたネットワークであり、例えば、インターネット、家庭内LAN、赤外線通信、ラジオ波通信または衛星通信などである。
撮像装置933は、例えば、CCD(Charge Coupled Device)またはCMOS(Complementary Metal Oxide Semiconductor)などの撮像素子、および撮像素子への被写体像の結像を制御するためのレンズなどの各種の部材を用いて実空間を撮像し、撮像画像を生成する装置である。撮像装置933は、静止画を撮像するものであってもよいし、また動画を撮像するものであってもよい。
センサ935は、例えば、加速度センサ、ジャイロセンサ、地磁気センサ、光センサ、音センサなどの各種のセンサである。センサ935は、例えば情報処理システム100の筐体の姿勢など、情報処理システム100自体の状態に関する情報や、情報処理システム100の周辺の明るさや騒音など、情報処理システム100の周辺環境に関する情報を取得する。また、センサ935は、GPS(Global Positioning System)信号を受信して装置の緯度、経度および高度を測定するGPSセンサを含んでもよい。
以上、情報処理システム100のハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。かかる構成は、実施する時々の技術レベルに応じて適宜変更されうる。
<3.まとめ>
以上説明したように本開示の実施の形態によれば、通信機能を有していない物体を個別に識別して、その物体の状態のセンシングが可能な情報処理システム100が提供される。本開示の実施の形態に係る情報処理システム100は、外部の装置からのリクエストに応じて物体を識別して物体のセンシングを行うとともに、外部の装置からのリクエストに応じて物体を識別して情報の投影を行うことが可能となる。
本明細書の各装置が実行する処理における各ステップは、必ずしもシーケンス図またはフローチャートとして記載された順序に沿って時系列に処理する必要はない。例えば、各装置が実行する処理における各ステップは、フローチャートとして記載した順序と異なる順序で処理されても、並列的に処理されてもよい。
また、各装置に内蔵されるCPU、ROMおよびRAMなどのハードウェアを、上述した各装置の構成と同等の機能を発揮させるためのコンピュータプログラムも作成可能である。また、該コンピュータプログラムを記憶させた記憶媒体も提供されることが可能である。また、機能ブロック図で示したそれぞれの機能ブロックをハードウェアで構成することで、一連の処理をハードウェアで実現することもできる。
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
なお、以下のような構成も本開示の技術的範囲に属する。
(1)
センシング可能領域に存在する物体のセンシングを行う検出部と、
外部装置からネットワークを介して送信された前記物体に関連付けられた識別子が指定されたリクエストの受信に応じて、前記識別子に対応する物体のセンシングを前記検出部に行わせて、該センシングの結果に基づき前記リクエストに対するレスポンスを前記外部装置に送信する処理部と、
を備える、情報処理装置。
(2)
前記リクエストは少なくとも物体に対するセンシングを要求するセンシングリクエスト又は物体に対する情報出力を要求する情報出力リクエストであり、
前記処理部は、前記リクエストがセンシングリクエストである場合、前記検出部に前記物体に対するセンシングを行わせ、前記リクエストが情報出力リクエストである場合、前記物体に関する情報の出力を出力部に行わせる、前記(1)に記載の情報処理装置。
(3)
前記物体はネットワーク接続機能を持たない物理的な物体であり、
前記処理部は、前記センシング可能領域内でセンシングした前記物体に前記識別子を関連付ける処理を行う、前記(2)に記載の情報処理装置。
(4)
前記識別子は、前記物体に仮想的にアクセスするための識別子である、前記(3)に記載の情報処理装置。
(5)
前記識別子は、前記物体に仮想的にアクセスするためのアドレスを含む、前記(4)に記載の情報処理装置。
(6)
前記識別子は物体の種類を示す情報であって、前記識別子で示された種類に属する前記物体に仮想的にアクセスするための種類識別子である、前記(4)または(5)に記載の情報処理装置。
(7)
前記種類識別子には、物体の種類に対応した情報出力処理を示すアクション識別子が関連付けられており、
前記処理部は、前記リクエストが前記種類識別子と前記アクション識別子を伴う情報出力リクエストである場合、前記種類識別子により示された種類に属する前記物体に対して前記アクション識別子に対応する情報出力を前記出力部に行わせる、
前記(6)に記載の情報処理装置。
(8)
前記処理部は、前記情報出力リクエストが受信された場合、前記情報出力リクエストの受信後に、前記情報出力リクエストで指定された識別子に対応する物体の位置をセンシングし、センシングした位置に対応する場所に対して前記出力部に情報の出力を行わせる、前記(2)~(7)のいずれかに記載の情報処理装置。
(9)
前記出力部は、前記リクエストが前記情報出力リクエストである場合、前記物体に関する文字若しくは画像の投影出力又は音声出力を行う、前記(2)~(8)のいずれかに記載の情報処理装置。
(10)
前記検出部は、前記物体の温度をセンシングし、センシングした温度に基づいて前記リクエストに対するレスポンスを送信する、前記(1)~(9)に記載の情報処理装置。
(11)
前記検出部は、前記物体の色をセンシングし、センシングした色に基づいて前記リクエストに対するレスポンスを送信する、前記(1)~(10)に記載の情報処理装置。
(12)
前記検出部は、前記物体の重さをセンシングし、センシングした重さに基づいて前記リクエストに対するレスポンスを送信する、前記(1)~(11)に記載の情報処理装置。
(13)
前記検出部は、前記物体の数をセンシングし、センシングした数に基づいて前記リクエストに対するレスポンスを送信する、前記(1)~(12)に記載の情報処理装置。
(14)
前記検出部は、前記物体の状態として物体のサイズをセンシングし、センシングしたサイズに基づいて前記リクエストに対するレスポンスを送信する、前記(1)~(13)に記載の情報処理装置。
(15)
前記処理部からの処理の結果に基づいて情報の出力を行う出力部を備える、前記(1)~(14)に記載の情報処理装置。
(16)
センシング可能領域に存在する物体のセンシングを行うことと、
外部装置からネットワークを介して送信された前記物体に関連付けられた識別子が指定されたリクエストの受信に応じて、前記識別子に対応する物体のセンシングを行わせて、該センシングの結果に基づき前記リクエストに対するレスポンスを前記外部装置に送信することと、
をプロセッサが行うことを含む、情報処理方法。
(17)
コンピュータに、
センシング可能領域に存在する物体のセンシングを行うことと、
外部装置からネットワークを介して送信された前記物体に関連付けられた識別子が指定されたリクエストの受信に応じて、前記識別子に対応する物体のセンシングを行わせて、該センシングの結果に基づき前記リクエストに対するレスポンスを前記外部装置に送信することと、
を実行させる、コンピュータプログラム。