例示の実施形態は、人間工学的な人体模型の姿勢を作るための経済的な追跡機能を提供することに関して、上記で述べた問題を認識し、かつ考慮に入れている。このような機能は、製品寿命を通して適用可能である場合には、設計および製作工程判断の良好な状況認識を行えるようにする。例示の実施形態は、ユーザに、適切なジェスチャとして作業を行えるようにすることができ、また音声制御が提供されて、マウス、キーボード、または他の手動入力デバイスを用いることなく、コンピュータ支援設計環境の制御が可能になる。
例示の実施形態はまた、コンピュータ支援設計システムと共に低コストの動作検知入力機器を使用できるマーカ不要の動作追跡および取込み機能を提供する。これらの追跡および取込み機能は、人間工学的な人体模型の比較的低コストの全身追跡および制御、ならびに他の3次元幾何形状およびアプリケーション機能を可能にすることができる。
動作検知機器デバイスなどの外部入力デバイスを、人間工学的な人体モデルの姿勢および位置を制御するために使用することができる。これらのデバイスは、以前にはマウスおよびキーボードにより行われていた基本的な視覚的機能を行うために、コンピュータ支援設計システムと統合することができる。統合は、骨格の動きを追跡し、複数の骨格関節に関するx、y、およびz座標を出力するように行うことができる。統合はまた、動作検知デバイスに含まれるマイクロフォンアレイを用いることにより、音声コマンドを認識するように行うこともできる。
例示の実施形態はまた、動作検知デバイスにより取り込まれたコンテンツをコンピュータ支援設計システムと統合させる。統合することにより、コンピュータ支援設計システムと関連するアプリケーションプログラミングインターフェースを使用して、動作検知デバイスから収集されたデータの入力を、本明細書で提供されるアルゴリズムにより変換できるようになる。アルゴリズムは、コンピュータ支援設計システムが、人間工学的な人体モデル、またはコンピュータ支援設計環境を制御するために必要となりうるフォーマットへと、収集されたデータを変換できるようにする。
動作検知入力デバイスは、人体モデルの動作を追跡し、かつ人体模型上に位置する点に対する空間座標データの組を生成することができる。オブジェクト上の点は、3次元のx、y、およびzの直交座標により表すことができる。他の例示的な実施形態では、これだけに限らないが、球座標など他の座標方式を使用することができる。本明細書で提供されるアルゴリズムは、空間座標データを角度データに変換することができる。角度データは、人間工学的な人体模型の方向付けおよび位置を指定するのに使用することができる。コンピュータ支援設計システムは、角度データを計算し、かつ使用して、人間工学的な人体模型を位置決めし、かつ方向付ける。人体模型の体肢上の複数の関節に対する空間座標データを、体肢の運動中に収集することができる。
例示の実施形態は、動作検知入力デバイスをコンピュータ支援設計システムと統合する複数のアルゴリズムを提供する。統合により、コンピュータ支援設計システムが、人体モデルにより行われる姿勢、および動作検知入力デバイスにより取り込まれた姿勢と同様の姿勢に人間工学的な人体模型を位置決めすることができる。例示の実施形態は、音声制御を使用し、コンピュータ支援設計システムにより作られた環境に対して人体モデルを回転させることができる。音声コマンドおよび体の動作の組合せはまた、コンピュータ支援設計システムのワークベンチ環境において様々なカメラ機能を行うことが可能になる。
例示の実施形態は、人間工学および安全性の解析が、製品開発およびサポートの一部として行われる用途で使用することができる。自動車および他の自動車両、重機、ならびに航空機の製造者は、本明細書で提供されるシステムおよび方法に関する用途を見出すことができる。例示の実施形態は、設計および製作技術者が、様々なシナリオを評価できるようにする。技術者は、その構成が制御された製品およびプロセスデータ管理システムと共に作業しながら、これらの仕事を実行することができる。製品がどのように組み立てられ、かつ使用されるかに関する改善された状況認識を技術者に提供することにより、コスト低減が達成されうる。製品が製造段階に達したとき、設計変更を減らすことができる。
次に図を参照するものとする。図1は、例示的な実施形態により構造モデルを位置決めするためのシステム100のブロック図を示している。システム100は、データ送信サーバ110、コンピュータ支援設計システム130、変換アプリケーション132、検知デバイス140、および人体模型150を含む。
図1で示されたシステム100は、1つまたは複数のデータ処理システムを、おそらく、分散またはネットワーク化環境で、またおそらく、「クラウド」として知られた1群の遠隔的に管理されたデータ処理システムで用いて実装することができる。システム100を実装する1つまたは複数のデータ処理システムのそれぞれは、図35に関して述べられたデータ処理システム3500、またはその変形形態とすることができる。システム100は、1つまたは複数のブロックを含むものとして特徴付けることができる。これらのブロックのそれぞれは、別個のものとすることができるが、あるいは単一のアーキテクチャの一部とすることもできる。
データ送信サーバ110は、コンピュータシステムとすることができる。サーバコンポーネント122は、データ送信サーバ110上で実行する。変換アプリケーション132は、コンピュータ支援設計システム130上で実行し、複数のアルゴリズムを含む。変換アプリケーション132は、検知デバイス140により取り込まれたコンテンツを、コンピュータ支援設計システム130の機能と統合する。例示の実施形態は、検知デバイス140を示しているが、例示の実施形態は、複数の検知デバイスの使用を企図している。したがって、「検知デバイス」という用語は、単数の意味、または複数の意味で解釈することができる。
変換アプリケーション132は、検知デバイス140により実時間で追跡された、または記録されたデータから、人体モデルにより行われた同じまたは同様の姿勢に、人体模型150を位置決めすることができる。変換アプリケーション132は、解析で使用または再使用するために、望ましい姿勢情報のデータを記録することができる。変換アプリケーション132は、コンピュータ支援設計システム130により提供されるワークベンチ環境において、パン、ズーム、および回転などの機能を実施するために、ユーザにより提供される音声コマンドと腕の動作との組合せを実行することができる。このような音声コマンドは、人体模型150を見る事前設定された第2の人間の観点から、肩越しになる人体モデルの第1の人間の観点へとユーザの視点を変えるために使用することができる。音声制御は、モデルの背後の第1の人間の観点の距離を調整するために使用することができる。
変換アプリケーション132はまた、コンピュータ支援設計システム130の環境に対して人体モデルを回転するために音声制御の使用を提供することもできる。このような回転は、検知デバイス140により提供される単一のカメラビューを補償するために、かつカメラに対して位置合せされた人物を見るための要件を補償するために行うことができる。変換アプリケーション132により提供される音声制御は、人体模型150の骨格追跡および制御と、コンピュータ支援設計システム130により提供される環境のジェスチャ制御のための画面オーバーレイメニューとの間を切り換えることを可能にすることができる。変換アプリケーション132はまた、ユーザにより行われる音声コマンドの正しい解釈をサポートするために、視覚的なオンスクリーンのプロンプトを提供することができる。
変換アプリケーション132はまた、コンピュータ支援設計システム130のジェスチャ制御を識別するために使用される画面オーバーレイメニューを使用可能にすることと、進行しているセッション中にユーザ論議を行えるようにするために画面オーバーレイおよびジェスチャ制御を除去することとの間で切り換えることを可能にする音声制御を提供することができる。変換アプリケーション132はまた、進行しているセッション中に変換できるようにするために、他の音声コマンドが作用するのを止めることと、その後に、キーワードを用いて音声制御機能を再度働かせることとの間を切り換えるようにする特定の音声コマンドの使用を提供することもできる。
変換アプリケーション132は、複数のコンポーネントを含む。コンポーネントは、クライアントコンポーネント134、コマンドコンポーネント136、および対話コンポーネント138を含む。データ送信サーバ110上で実行されるサーバコンポーネント122は、検知デバイス140から入力を受け取り、かつ入力をデータストリームでクライアントコンポーネント134に送信する。サーバコンポーネント122は、検知デバイス140の要件と、コンピュータ支援設計システム130の要件との間の不適合性を解決することができる。例えば、検知デバイス140は、32ビット形式を使用し、かつ統合されたソフトウェア開発環境の1つのバージョンを必要とする可能性がある。コンピュータ支援設計システム130は、それとは対照的に、64ビット形式を使用し、異なる統合されたソフトウェア開発環境を必要とするはずである。サーバコンポーネント122は、これらの不適合性を解決することができる。
サーバコンポーネント122は、視覚化のために、検知デバイス140により取り込まれたカメラビデオ画像を表示することができる。サーバコンポーネント122はまた、様々なオーディオ側面を管理するために制御を行うことができる。実施形態では、サーバコンポーネント122の要素、ならびに変換アプリケーション132、クライアントコンポーネント134、コマンドコンポーネント136、および対話コンポーネント138の要素は、複数の物理コンピュータ上で実行することができる。例えば、サーバコンポーネント122の第1の部分は、データ送信サーバ110上で実行することができ、またサーバコンポーネント122の第2の部分は、コンピュータ支援設計システム130をホストするコンピュータ上で実行することができる。他の実施形態では、変換アプリケーション132の部分は、データ送信サーバ110上で実行することができる。クライアントコンポーネント134は、サーバコンポーネント122からデータストリームを受け取る。クライアントコンポーネント134は、検知デバイス140に関連するいずれかのソフトウェア開発キット、または他のソフトウェアツールとは独立して、必要に応じてデータ処理を行うことができる。
コマンドコンポーネント136は、コンピュータ支援設計システム130の機能を拡張する。コマンドコンポーネント136は、コンピュータ支援設計システム130のアプリケーションプログラミングインターフェースを統合するカスタマイズしたコマンドを提供する。コマンドコンポーネント136は、カメラデータおよび他の入力データを処理するために、クライアントコンポーネント134を統合する。
コマンドコンポーネント136は、オペレーションの2つの状態と、2つの状態間で遷移するための手段とを提供することができる。コマンドコンポーネント136は、ユーザにオペレーション状態の様々なモードを設定できるようにする対話を提示する。
コマンドコンポーネント136により提供される第1のオペレーション状態は、人体模型制御である。人体模型制御は、コンピュータ支援設計システム130により設定された体肢の方向付けおよび位置を指定するのに必要な様々な角度を計算するために、検知デバイス140から受け取った選択点データを使用することができる。前述のように、クライアントコンポーネント134は、検知デバイス140により生成されたデータストリームコンテンツを受け取る。データストリームコンテンツは、人体模型150が、生きているように実時間で、またはほぼ実時間でサーバコンポーネント122から受信される。人体模型制御の第2の機能は、コンピュータ支援設計システム130の3次元の視点を制御することである。このような制御は、人体模型150を既存の視点から見ることを可能にするが、あるいは見る点を第1または第2の視点に変更することを可能にする。
コマンドコンポーネント136により提供される第2のオペレーション状態は、ジェスチャを行うことを用いるシーン制御である。シーン制御およびジェスチャは、コンピュータ支援設計システム130のセッションに対してオーバーレイウィンドウを提示する。オーバーレイウィンドウは、コンピュータ支援設計システム130により提供されるシーンの3次元視点の制御を可能にする様々なアイコンを含むことができる。例えば、動作中の体部分に対する骨格点データを追跡することができ、オーバーレイウィンドウにおけるカーソルを、対応する距離および方向に移動させることができる。カーソルが、例えば、アイコン上に位置決めされ、数秒間停止した場合、カーソルがアイコン上の位置にある限り、アイコンの対応するコマンド機能が実行されうる。
コマンドは、コンピュータ支援設計システム130により提供されるシーンにおける3次元視点に作用する。実施されるコマンドは、右、左、上、および下方向にパニングすることができる。実施されるコマンドはまた、目標点の視点に関して回転させることができ、また目標点を入れること、および目標点から外すこと(scale in and out)を可能にする。対話コンポーネント138は、コマンドコンポーネント136に関連付けられており、かつユーザに、データ送信サーバ110およびコンピュータ支援設計システム130の機能を制御し、かつ操作できるようにするグラフィカルユーザインターフェースを提示する。
検知デバイス140は、動作および音を取り込むカメラおよびオーディオアレイとすることができるが、より少ない検知デバイス、あるいはおそらく1つまたは複数のさらなる、もしくは異なる検知デバイスとすることもできる。検知デバイス140は、ジェスチャおよび話されたコマンドを用いるナチュラルユーザインターフェースにより、物理的に接触するデバイスを必要とすることなく、ユーザに、制御および対話を可能にする。検知デバイス140は、ジェスチャ認識、顔認識、および音声認識を可能にする深度カメラおよびマイクロフォンを含むことができる。検知デバイス140は、ユニバーサルシリアルバス接続を用いて、データ送信サーバ110または他のデバイスと接続することができる。検知デバイス140の要素は、データ送信サーバ110に、互いに、または他のコンポーネントに無線で接続することができる。例示の実施形態では、検知デバイス140は、検知するために赤外線技術を使用することができるが、音響技術および可視光技術など、他の技術を使用することもできる。
人体模型150は、体肢152、体肢154、体肢156、および体肢158を含むことができる。実施形態では、体肢152、体肢154、体肢156、および体肢158に関連付けられた関節および他の構成要素の運動は、本明細書で述べるように、検知デバイス140により追跡され、かつ取り込まれ、変換アプリケーション132およびコンピュータ支援設計システム130により処理することができる。
図1で示す例示の実施形態は、様々な例示的な実施形態を実施できる態様に対して、物理的またはアーキテクチャ上の限定を示唆することを意味するものではない。例示されたものに加えて、かつ/または例示されたものに代えて、他のコンポーネントを使用することができる。いくつかのコンポーネントは、いくつかの例示の実施形態で不要のものでありうる。さらに、いくつかの機能コンポーネントを示すためにブロックが提示される。これらのブロックの1つまたは複数のものは、異なる例示的な実施形態において実施される場合、組み合わせる、かつ/または異なるブロックへと分割することができる。図2aは、例示的な実施形態により構造モデルを位置決めするための方法を示す流れ図である。図2で示す方法200は、図1のシステム100を用いて実施することができる。図2で示すプロセスは、図35のプロセッサユニット3504などのプロセッサにより実施することができる。図2で示すプロセスは、図1、および図3から図34で示すプロセスの変形形態でありうる。図2で示されたオペレーションは、「プロセス」により行われるものとして述べられているが、オペレーションは、本明細書の他で述べるように、少なくとも1つの有形のプロセッサにより、または1つまたは複数の物理的デバイスを用いることにより実施される。「プロセス」という用語はまた、非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ命令を含む。
方法200は、プロセスが、動作検知入力デバイスから1組の空間座標を受け取ると開始することができ、空間座標は、人体モデルの体肢の少なくとも1つの関節の位置を示している(オペレーション202)。コンピュータは、1組の空間座標をコンピュータ支援設計アプリケーションに送り、コンピュータ支援設計アプリケーションは、角度データの複数のインスタンスにより示された体肢角度の変化に基づき、人間工学的な人体模型の運動を表している(オペレーション204)。プロセスは、次いで、コンピュータ支援設計アプリケーションから角度指定を受け取ることができ、角度指定は、少なくとも1つの3次元平面における体肢の角度に対応している(オペレーション206)。プロセスは、次いで、受け取った角度指定に従って1組の空間座標を角度データに変換することができ、角度データは、体肢の位置決めを示している(オペレーション208)。その後、プロセスは終了することができる。図2aで示すプロセスは、変えることができる。例えば、例示的な実施形態では、動作検知入力デバイスは、深度カメラとすることができる。例示的な実施形態では、深度カメラは、少なくともジェスチャおよび音声コマンドにより制御することができる。例示的な実施形態では、コンピュータは、動作検知入力デバイスをコンピュータ支援設計アプリケーションと統合する複数のアルゴリズムを実行することができ、アルゴリズムは、全身の追跡および人体模型の制御を可能にする。
例示的な実施形態では、アルゴリズムは、人間工学的な人体模型および開発環境の少なくとも一方を制御するために、動作検知入力デバイスにより収集された座標を、コンピュータ支援設計アプリケーションにより使用される座標形式へと変換することができる。例示的な実施形態では、アルゴリズムは、動作検知入力デバイスにより使用されるデータ形式と、コンピュータ支援設計アプリケーションにより使用されるデータ形式との間の不適合性を解決することができる。
図2bは、例示的な実施形態により構造モデルを位置決めするための方法を示す流れ図である。図2bで示す方法210は、図1のシステム100を用いて実施することができる。方法210もまた、図35のプロセッサユニット3504などのプロセッサにより実施することができる。方法210は、図1、および図3から図34で示されたプロセスの変形形態とすることができる。図2bで示されたオペレーションは、「プロセス」により実施されるものとして述べられているが、オペレーションは、本明細書の他で述べるように、少なくとも1つの有形のプロセッサにより、または1つまたは複数の物理的なデバイスを用いることにより実施される。「プロセス」という用語はまた、非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ命令を含む。
方法210は、プロセスが、人体モデルの運動中に、骨格関節の位置決めを表す3次元のx、y、およびz座標を受け取ると開始することができ、x、y、およびz座標は、動作検知入力デバイスにより取り込まれる(オペレーション212)。プロセスは、次いで、少なくとも1つの3次元平面で、体肢角度を示す自由度を指定する情報を受け取ることができる(オペレーション214)。プロセスは、次いで、自由度、ならびにx、y、およびz座標に基づいて少なくとも1つの体肢角度を求めることができ、求められた体肢角度は、人間工学的な人体模型の方向付けを指定する(オペレーション216)。プロセスは、次いで、体肢の運動を表すのに使用するために、少なくとも1つの体肢角度をコンピュータ支援設計アプリケーションに提供することができる(オペレーション218)。
図3は、例示的な実施形態により構造モデルを位置決めするための装置のブロック図である。図3のコンポーネントはシステム300で提供され、また図1およびシステム100で示されかつ関連して本明細書で述べられたものに相当または対応することができる。コンピュータ310は、図1で示されたデータ送信サーバ110に対応することができる。サーバコンポーネント322は、図1で示されたサーバコンポーネント122に対応することができる。コンピュータ支援設計システム330は、図1で示されたコンピュータ支援設計システム130に対応することができる。検知デバイス340は、図1で示された検知デバイス140に対応することができる。コンピュータ支援設計システム130が、図1ではデータ送信サーバ110とは別個のコンポーネントとして示されているが、一実施形態では、コンピュータ支援設計システム130の一部または全体が、データ送信サーバ110上で実行することができる。
図4は、例示的な実施形態により構造モデルを位置決めするための方法を示す流れ図である。方法400に関して図4で示されたアクションおよびイベントは、システム100およびシステム300にそれぞれ関して図1および図3で示されたコンポーネントに関連する、ならび図2で示す方法200に関して述べられたオペレーションに関連するアクションおよびイベントに対応することができる。
図4で示されたオペレーションは、「プロセス」により実施されるものとして述べられているが、オペレーションは、本明細書の他で述べるように、少なくとも1つの有形のプロセッサにより、または1つまたは複数の物理的デバイスを用いることにより実施される。「プロセス」という用語はまた、非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ命令を含む。
方法400は、プロセスが、テキストデータまたは骨格データを読み取ったときに開始することができる(オペレーション402)。プロセスは、次いで、データがテキストを含むかどうかを判定する(オペレーション404)。データがテキストを含んでいることに応じて(オペレーション404に対する「はい」応答)、プロセスは、テキストが「ジェスチャ」であるかどうかの次の判定を行う(オペレーション406)。あるいは、データがテキストを含まない場合(オペレーション404に対する「いいえ」応答)、プロセスはさらに、データが「ジェスチャモード」にあるかどうかの次の判定を行う(オペレーション408)。
オペレーション404に戻ると、テキストが「ジェスチャ」である場合、プロセスは、テキストがジェスチャであるかどうか次の判定を行う(オペレーション406)。ジェスチャではない場合、他の音声コマンドが処理される(オペレーション416)。プロセスは、その後に終了することができる。
オペレーション406で、「はい」であった場合、ジェスチャモードに切り替えられ(オペレーション410)、次いで、プロセスは、ジェスチャモードがオンかどうかを判定する(オペレーション422)。「はい」の場合、オーバーレイアイコンが活動化される(オペレーション426)。「いいえ」の場合、デスクトップ上のオーバーレイアイコンは、非活動化される(オペレーション428)。
オペレーション408に戻ると、プロセスは、データが「ジェスチャモード」にあるかどうか次の判定を行う。「はい」の場合、プロセスは、右手の位置に基づいて画面カーソルを更新する(オペレーション412)。プロセスは、次いで、カーソルがアイコンの上にあるかどうかを判定する(オペレーション418)。「いいえ」の場合、プロセスは、オペレーション412に戻る。「はい」の場合、プロセスは、アイコンに関連付けられた機能を実行する(オペレーション430)。その後、プロセスは終了することができる。
オペレーション408に戻ると、「いいえ」の場合、プロセスは、各骨格セグメントに対する自由度の角度を計算する(オペレーション414)。プロセスは、次いで、対象セグメントが左腕であるか、それとも右腕であるかを判定する(オペレーション420)。「いいえ」の場合、プロセスは、人体模型セグメントの自由度を更新し(オペレーション432)、コンピュータ支援設計システム130により提供されるシーンを再度描画する(オペレーション434)。その後、プロセスは終了することができる。
オペレーション420で「はい」の場合、プロセスは、事前に計算された腕ベクトルテーブルから腕の角度を調べる(オペレーション424)。プロセスは、次いで、人体模型セグメントの自由度を更新し(オペレーション432)、コンピュータ支援設計システム130により提供されるシーンを再描画する。(オペレーション434)。その後、プロセスは終了することができる。
図5は、例示的な実施形態により構造モデルを位置決めするための装置のブロック図である。図5のコンポーネントは、システム500で提供され、図1およびシステム100に関連して本明細書で示し、かつ述べたものに相当または対応することができる。図5のコンポーネントはまた、図3およびシステム300で提供されたものに対応することができる。図5で示すシステム500は、上記で述べたこれらのシステムの特定の、かつ非限定的な例である。
例えば、サーバコンポーネント522は、システム100のサーバコンポーネント122に対応することができる。クライアントコンポーネント534は、システム100のクライアントコンポーネント134に対応することができる。コマンドコンポーネント536は、システム100のコマンドコンポーネント136に対応することができる。対話コンポーネント538は、システム100の対話コンポーネント138に対応することができる。図5で示す実施形態では、クライアントコンポーネント534および対話コンポーネント538は、コマンドコンポーネント536のサブコンポーネントである。コンピュータ支援設計システム530は、システム100のコンピュータ支援設計システム130に対応することができる。検知デバイス540は、システム100の検知デバイス140に対応することができる。オペレーティングシステム560およびマイクロフォン570は、それぞれ、データ送信サーバ110上で実行できるコンピュータオペレーティングシステム、および話された音および他の音を受け取るためのデバイスである。実施形態では、オペレーティングシステム560は、Microsoft Corporation(マイクロソフト社)から市販のWINDOWS(登録商標)である。WINDOWS(登録商標)は、Microsoft Corporationの登録商標である。
図5で示す例示の実施形態は、様々な例示的な実施形態を実施できる態様に対する物理的、またはアーキテクチャ上の限定を示唆することを意味するものではない。例示されたものに加えて、かつ/または代えて他のコンポーネントを使用することもできる。いくつかのコンポーネントは、いくつかの例示的な実施形態では不要になりうる。さらに、いくつかの機能的なコンポーネントを示すためにブロックが提示されている。これらのブロックの1つまたは複数のものは、異なる例示的な実施形態において実施される場合、組み合わせる、かつ/または異なるブロックへと分割することができる。
図6は、例示的な実施形態により体肢角度を表すための3次元平面を示す図である。さらに、図1を考慮し、かつその参照番号を用いると、例示の実施形態は、検知デバイス140により生成された骨格点データを、コンピュータ支援設計システム130およびその関連するアプリケーションプログラミングインターフェースで必要な角度データへと変換するアルゴリズムを提供する。人体模型150の体肢152、体肢154、体肢156、および体肢158のそれぞれに対して、コンピュータ支援設計システム130は、自由度と呼ばれる2つまたは3つの角度指定を規定する。自由度は、X軸602、Y軸604、およびZ軸606を含む直交座標系600など、直交座標系の3つの主平面の1つにおける体肢角度に対応する。3つの主平面は、XY平面608、YZ平面610、ZX平面612とすることができる。しかし、他の平面を主平面として使用することもできる。例示の実施形態は、骨格点データから人体模型150の方向付けを指定するために、これらの体肢角度の1つまたは複数のものを計算するアルゴリズムを提供する。
図7および図8は、図6のさらなる説明を行うために使用することができる。図7は、例示的な実施形態によりヒトの体肢を位置決めするためのZX座標700を示す図である。図8は、例示的な実施形態によりヒトの体肢を位置決めするためのZY座標800を示す図である。ZX平面704における屈曲/伸展の自由度に対する30度の角度指定702が図7で示されている。YZ平面804における外転/内転の自由度に対する45度の角度指定802が図8で示されている。
図9は、例示的な実施形態による人体モデルに対する動作検知デバイスのための座標を示す図である。図9は、人体に関する検知デバイス140の座標系900を示している。座標系900では、X軸902、Y軸904、およびZ軸906が示されている。
図10は、例示的な実施形態により動作検知デバイスから受け取った座標系および点を示す図である。図11は、例示的な実施形態により人間工学的な人体模型に対する座標系およびセグメントを示す図である。検知デバイス140により取得され、処理される骨格は、20点からなり、図10で示す系1000でラベル付けされている。すなわち、位置_頭1002、肩_右1004、肩_中心1006、肩_左1008、肘_右1010、肘_左1012、位置_脊柱1014、手首_右1016、手首_左1018、股関節_右1020、股関節_中心1022、股関節_左1024、手_右1026、手_左1028、膝_右1030、膝_左1032、足首_右1034、足首_左1036、足_右1038、および足_左1040である。股関節_中心点1022は、空間における骨格位置の原点を示す。コンピュータ支援設計システム130は、骨格点の間のセグメント(または体肢152、体肢154、体肢156、および体肢158もしくは骨)の角度に基づいて、人体模型150の方向付けを指定する。頭1042、腕R1044、腕L1046、腰1048、前腕R1050、前腕L1052、手R1054、手L1056、大腿R1058、大腿L1060、下腿R1062、下腿L1064、足R1066、および足L1068とラベル付けされた14個のセグメントがある。検知デバイス140の座標系、点、およびセグメントが、図10で示されている。図10はまた、X軸1070、Y軸1072、およびZ軸1074を示している。
図11は、同様に、人体の要素を示している。図11で示す構成要素は、図10で示す構成要素に割り当てられている。頭1142、腕R1144、腕L1146、腰1148、前腕R1150、前腕L1152、手R1154、手L1156、大腿R1158、大腿L1160、下腿R1162、下腿L1164、足R1166、および足L1168とラベル付けされた、系1100を構成する14個のセグメントがある。検知デバイス140の座標系、点、およびセグメントが図11で示されている。図11はまた、X軸1170、Y軸1172、およびZ軸1174を示している。
図12、図13、図14、および図15は、例示的な実施形態によりヒトの体肢を位置決めするための座標を示す図である。これらの図で示す人体模型は、図1の人体模型150とすることができる。図12で示す人体模型1200、図13で示す人体模型1300、図14で示す人体模型1400、および図15で示す人体模型1500は、図12、図13、図14、および図15で示すように、人体模型150に向かったとき、右手座標系により定義することができる。人体模型150のデフォルトの方向付けは、腕および下腿を真っ直ぐ下ろした、直立した垂直状態とすることができる。人体模型150の幾何形状は、ミリメートルで測定することができるが、他の長さの単位を使用することもできる。図12はまた、Y軸1202およびZ軸1204を示している。図13はまた、X軸1302およびZ軸1304を示している。図14はまた、X軸1402およびZ軸1404を示している。図15はまた、X軸1502およびY軸1504を示している。
本明細書で提供されるアルゴリズムは、検知デバイス140の座標系をコンピュータ支援設計システム130の座標系に変換する座標変換を規定する。座標は、コンピュータ支援設計システム130に対する標準長さを提供するために、メートルからミリメートルなど、1つの測定単位から他の単位へと変換することができる。例示的な変換は、次のようになる。
図16は、例示的な実施形態により画面カーソル位置を表示することに関して、手の位置を追跡するための座標を示す図表1600である。図16は、右手のジェスチャモード追跡を行うための画面座標計算を示している。ジェスチャモードでは、骨格の右手位置が、コンピュータディスプレイ上のカーソル位置を制御するために使用される。右手の骨格点は、事前にコンピュータ支援設計システム130の座標空間に変換されている。カーソル位置は、ピクセル単位で2次元座標により表される。
ジェスチャモードで追跡しながら、アルゴリズムは、処理された最後の右手位置を有する変数(P)を維持する。新しい手の位置(C)が取得されたとき、前の位置からの位置の差分もしくは変化(D)が計算される。
D=C−P
P=C
差分ベクトル(D)1602は、YZ平面1604上に垂直に投影されている(すなわち、X座標は無視する)。2次元の差分ベクトルは、次いで、メートルからピクセル単位に変換される。この変換は、まず、メートルからインチに変換し、次いで、1インチ当たりの表示ピクセル数を乗算することにより実施することができる。画面カーソル位置は、次いで、その現在位置の値から、差分ベクトルを減算することにより更新される。画面の座標軸は、YZ平面軸の反対方向にあるので、減算することが必要である。
図17は、例示的な実施形態により体肢角度を表すベクトルの図表1700である。図17は、どのようにして体肢角度が、セグメントを1つまたは複数の主平面上に投影することにより計算されるかを示している。体肢セグメントは、2点、すなわち、基点および端点により規定される。体肢152の方向は、図17で示されるように、端点−基点により決まるベクトルである。投影は正射影であり、平面に垂直である。
図18は、例示的な実施形態により体肢角度を表すベクトルの解析を提供するグラフである。図18は、投影されたベクトルを表す。線セグメント(端部’−基部’)の投影されたベクトルは、U軸1806およびV軸1808に対して、それぞれ、平行な成分u1802およびv1804を有する。投影された線の傾斜角は、標準のライブラリ関数atan2(v,u)を使用して計算され、引数として三角形の対辺および隣接辺を取る。
正規化に関して、例えば、前腕および下腿セグメントの角度は、腕および大腿セグメントの方向付けにそれぞれ依存している。本明細書で教示されるアルゴリズムにより行われる手法は、腕および大腿セグメントを正規化することであり、したがって、セグメントはZ方向に位置合わせされる。前腕および下腿の対応する角度は、変換された位置から計算される。腰は、垂直もしくは直立させることができる。上体セグメントの正規化は、現在の使用に対しては必要ではない可能性があるが、本明細書で提供されるアルゴリズムは、このような変換も組み込むことができる。
図19、図20、図21、および図22は、例示的な実施形態による処理を受け入れる、平面および軸上で人体模型のセグメントに対してコンピュータ支援設計アプリケーションにより指定された角度を規定するテーブルである。図19、図20、図21、および図22で示されたテーブルは、処理される適用可能な平面および軸のそれぞれで、人体模型150のセグメントに対してコンピュータ支援設計システム130により指定された正の角度を規定している。投影されたセグメントの開始点は原点で示される。論議のために、すべての従属するセグメントは、その正規化された位置へと変換されていると仮定する。図19におけるベクトル成分i1902、j1904、およびk1906は、指示された平面上に投影されたセグメントベクトルを表す。ベクトル成分i1902、j1904、およびk1906は、前に述べたatan2関数に渡される符号値である。図20、図21、および図22におけるベクトル成分は、図19で示された対応する成分に割り当てられている。
図23は、例示的な実施形態により関連する体肢のベクトルの正規化を示すグラフを示している。前腕および下腿セグメント角度は、腕および大腿セグメントの方向付けにそれぞれ依存する。本明細書で提供されるアルゴリズムは、腕および大腿セグメントを正規化し、したがって、セグメントはZ方向に位置合わせされる。前腕および下腿の対応する角度は、変換された位置から計算される。腰は垂直または直立である。上体セグメントの正規化は、現在の使用には必要ではない可能性があるが、本明細書で提供されるアルゴリズムは、必要に応じてこの変換を組み込むこともできる。図23は、大腿が、XZ平面2304でZ軸2302と位置合わせされた右大腿および下腿のベクトルを示す。(h)は股関節点2306であり、(k)は膝点2308、かつ(a)は足首点2310である。ダッシュ点は、変換された位置を示す。
図24は、例示的な実施形態により関連する体肢のベクトルの正規化を示すグラフを示す。股関節から、変換された膝(k’)点2402への変換された大腿ベクトルは、ZX平面と位置合わせされるように、X軸に関してYZ平面2404内で回転される。
図25は、例示的な実施形態により関連する体肢のベクトルの正規化を示すグラフを示している。股関節(h)2502から膝(k)2504点へのベクトルは、YZ平面2508へと、Y軸に関してZX平面2506内で回転される。
図26は、例示的な実施形態により関連する体肢のベクトルの正規化を示すグラフを表す。変換された膝(k’)点2602から変換された足首(a’)点2604への大腿ベクトルは、ZX平面と位置合わせされるように、X軸に関してYZ平面2606内で回転される。この角度は、正のYZ平面2606回転とは反対であるために反転している。
図27は、例示的な実施形態により関連する体肢のベクトルの正規化を示すグラフを示している。肩(s)2702点から肘(e)2704点への腕ベクトルは、YZ平面2708へと、Y軸に関してZX平面2706で回転される。
図28は、例示的な実施形態により関連する体肢のベクトルの正規化を示すグラフを示している。肩から、変換された肘(e’)点2802への変換された腕ベクトルは、ZX平面2806と位置合わせされるように、X軸に関してYZ平面2804内で回転される。
図29は、例示的な実施形態により関連する体肢ベクトルの正規化を示すグラフを示している。変換された肘(e’)点2902から、変換された手首(w’)点2904への変換された腕ベクトルと、X軸2906との間の角度が計算される(X軸と位置合せされるように、Z軸に関してXY平面2908内で回転された場合)。
図30は、例示的な実施形態により関連する体肢のベクトルの正規化を示すグラフを示している。肩(s)3002から肘(e)点3004への腕ベクトルは、YZ平面へと、Y軸に関してZX平面3006内で回転される。
図31は、例示的な実施形態により関連する体肢のベクトルの正規化を示すグラフを示している。肩から、変換された肘(e’)点3102への変換された腕ベクトルは、ZX平面と位置合わせされるように、X軸に関してYZ平面3104内で回転される。この角度は、正のYZ平面回転とは反対であるため反転している。
図32は、例示的な実施形態により関連する体肢のベクトルの正規化を示すグラフを示している。変換された肘(e’)点3202から、変換された手首(w’)点3204への変換された腕ベクトルと、X軸との間の角度が計算される(X軸と位置合わせされるように、Z軸に関してXY平面3206内で回転された場合)。この負の角度は、左腕の内旋/外旋を計算するために使用される。XZおよびYZ平面におけるコンピュータ支援設計システム130の腕の角度の事前に計算されたテーブルは、正規化された腕ベクトルに関連付けることができる。このテーブルの見出し語は、<θ、φ、i、j、k>の形をしており、θはZX角、φはYZ角、およびi、j、kは、正規化された腕ベクトル成分である。角度に対する範囲は、コンピュータ支援設計システム130により課せられた制限である。角度増分は1度である。左腕のベクトルは、j成分を反転させることにより、右腕のベクトルから求めることができるので、テーブルは、右腕に対して計算する必要があるだけである。コンピュータ支援設計システム130に対するアプリケーションプログラミングインターフェースは、体肢152、体肢154、体肢156、および体肢158のうちの少なくとも1つのものの指定された自由度に対する姿勢角度を設定する関数SetValueと、指定された自由度で、体肢の正規化されたベクトルを返す関数GetDirectionInGlobalとを提供する。
図33は、例示的な実施形態によるサンプル的な参照テーブルである。参照は、骨格腕セグメントベクトルを計算し、次いで、参照テーブルを通して反復し、かつ腕ベクトルと事前に計算されたベクトルとのドット積を計算することにより行われる。ベクトルが同方向である場合、ドット積は正である。腕ベクトルと事前に計算されたベクトルが正確に一致している場合、ドット積は1になる。ベクトルが直交する場合、ドット積はゼロになる。ベクトルが反対方向にある場合、ドット積は負になる。これらの場合については、例示的な実施形態による体肢のベクトルを示すグラフを示している図34で示されている。
最適な一致は、最大のドット積値になりうる(すなわち、1に最も近い)。最適な一致の関連するθおよびφ角度は、人体模型150の腕の姿勢を直接設定するために使用される。本明細書で提供されるアルゴリズムは、参照テーブルのセグメントベクトルと、ZX平面およびYZ平面に対する関連する自由度の角度を記憶するデータ構造を規定する。参照テーブルのファイルコンテンツは、コマンドが呼び出されたとき、データ構造中にロードされる。
骨格セグメントベクトル(xdir)、および望ましい自由度(ZX平面に対してdof=0、またはYZ平面に対して1)を与えると、本明細書で提供されるアルゴリズムは、データ構造を通して反復し、かつ骨格腕ベクトルと事前に計算されたベクトルのドット積を計算する。アルゴリズムは、最適な角度を求めるために見出される最大ドット積値を追跡することができる。
図35を次に参照すると、データ処理システムの例が、例示的な実施形態により示されている。図35におけるデータ処理システム3500は、図1のシステム100など、あるいは本明細書で開示された任意の他のモジュールもしくはシステム、またはプロセスなど、例示的な実施形態を実施するために使用できるデータ処理システムの例である。この説明用の例では、データ処理システム3500は、通信ファブリック3502を含み、通信ファブリック3502は、プロセッサユニット3504、メモリ3506、恒久的なストレージ3508、通信ユニット3510、入力/出力(I/O)ユニット3512、およびディスプレイ3514の間の通信を提供する。
プロセッサユニット3504は、メモリ3506にロードされうるソフトウェアに対する命令を実行するように働く。プロセッサユニット3504は、個々の実装形態に応じて、いくつかのプロセッサ、マルチプロセッサコア、または何らかの他のタイプのプロセッサとすることができる。「いくつかの(a number)」は、ある項目に対して本明細書で使用される場合、1つまたは複数の項目を意味する。さらに、プロセッサユニット3504は、主プロセッサが、単一のチップ上に第2のプロセッサと共に存在するいくつかの異種プロセッサシステムを用いて実装することができる。他の説明用の例として、プロセッサユニット3504は、同じタイプの複数のプロセッサを含む対称的なマルチプロセッサシステムとすることができる。
メモリ3506および恒久的なストレージ3508は、記憶デバイス3516の例である。記憶デバイスは、例えば、限定することなく、データ、プログラムコードなどの情報を機能的な形で、かつ/または他の適切な情報を一時的に、かつ/または永続的に記憶できるハードウェアの任意の部分である。記憶デバイス3516はまた、これらの例において、コンピュータ可読記憶デバイスと呼ぶこともできる。これらの例で、メモリ3506は、例えば、ランダムアクセスメモリ、または任意の他の適切な揮発性もしくは不揮発性記憶デバイスとすることができる。恒久的なストレージ3508は、個々の実装形態に応じて、様々な形態を取ることができる。
例えば、恒久的なストレージ3508は、1つまたは複数のコンポーネントまたはデバイスを含むことができる。例えば、恒久的なストレージ3508は、ハードドライブ、フラッシュメモリ、書換え形光ディスク、書換え形磁気テープ、または上記の何らかの組合せとすることができる。恒久的なストレージ3508により使用される媒体はまた、取外し可能にすることができる。例えば、取外し可能なハードドライブを、恒久的なストレージ3508に対して使用することができる。
これらの例で、通信ユニット3510は、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例では、通信ユニット3510は、ネットワークインターフェースカードである。通信ユニット3510は、物理的通信リンクと無線通信リンクのいずれか、または両方を使用することにより通信を行うことができる。
入力/出力(I/O)ユニット3512により、データ処理システム3500に接続できる他のデバイスと、データの入力および出力を行うことが可能になる。例えば、入力/出力(I/O)ユニット3512は、キーボード、マウス、および/または何らかの他の適切な入力デバイスを介してユーザ入力に対する接続を提供することができる。さらに、入力/出力(I/O)ユニット3512は、プリンタに出力を送ることができる。ディスプレイ3514は、ユーザに情報を表示するための機構を提供する。
オペレーティングシステムに対する命令、アプリケーション、および/またはプログラムは、記憶デバイス3516に位置することができ、記憶デバイス3516は、通信ファブリック3502を介してプロセッサユニット3504と通信状態にある。これらの説明用の例では、命令は、恒久的なストレージ3508上で機能的な形態で存在する。これらの命令は、プロセッサユニット3504で実行するためにメモリ3506にロードすることができる。様々な実施形態のプロセスは、メモリ3506など、メモリに位置することのできるコンピュータで実施される命令を用いて、プロセッサユニット3504により実施することができる。
これらの命令は、プロセッサユニット3504におけるプロセッサにより読み取られ、かつ実行できるプログラムコード、コンピュータで使用可能なプログラムコード、またはコンピュータ可読のプログラムコードと呼ばれる。様々な実施形態におけるプログラムコードは、メモリ3506または恒久的なストレージ3508など、様々な物理的な、またはコンピュータ可読の記憶媒体上で実施することができる。
プログラムコード3518は、選択的に取外し可能なコンピュータ可読媒体3520上に機能的な形態で位置しており、プロセッサユニット3504で実行するために、データ処理システム3500にロードされる、または転送されうる。プログラムコード3518およびコンピュータ可読媒体3520は、これらの例で、コンピュータプログラム製品3522を形成する。一例では、コンピュータ可読媒体3520は、コンピュータ可読記憶媒体3524、またはコンピュータ可読信号媒体3526とすることができる。コンピュータ可読記憶媒体3524は、例えば、恒久的なストレージ3508の一部であるハードドライブなどの記憶デバイスへと転送するために、恒久的なストレージ3508の一部であるドライブまたは他のデバイスの中に挿入または配置される、例えば、光もしくは磁気ディスクを含むことができる。コンピュータ可読記憶媒体3524はまた、データ処理システム3500に接続されるハードドライブ、サムドライブ、またはフラッシュメモリなど、恒久的なストレージの形態を取ることができる。いくつかの例では、コンピュータ可読記憶媒体3524は、データ処理システム3500から取外し可能ではないこともありうる。
代替的に、コンピュータ可読信号媒体3526を用いて、プログラムコード3518をデータ処理システム3500へと転送することができる。コンピュータ可読信号媒体3526は、例えば、プログラムコード3518を含む伝播されるデータ信号とすることができる。例えば、コンピュータ可読信号媒体3526は、電磁信号、光信号、および/または任意の他の適切なタイプの信号とすることができる。これらの信号は、無線通信リンク、光ファイバケーブル、同軸ケーブル、ワイヤ、および/または任意の他の適切なタイプの通信リンクなど、通信リンクを介して送信することができる。いいかえると、通信リンクおよび/または接続は、説明用の例において、物理的なものまたは無線とすることができる。
いくつかの例示的な実施形態では、プログラムコード3518は、データ処理システム3500内で使用するために、コンピュータ可読信号媒体3526を通り、他のデバイスまたはデータ処理システムからネットワークを介して、恒久的なストレージ3508にダウンロードすることができる。例えば、サーバデータ処理システムにおけるコンピュータ可読記憶媒体に記憶されたプログラムコードは、ネットワークを介して、サーバからデータ処理システム3500にダウンロードすることができる。プログラムコード3518を提供するデータ処理システムは、サーバコンピュータ、クライアントコンピュータ、またはプログラムコード3518を記憶し、かつ送信できる何らかの他のデバイスとすることができる。
データ処理システム3500に関して例示された様々なコンポーネントは、様々な実施形態を実施できる態様に対するアーキテクチャ上の限定を与えることを意味するものではない。様々な例示的な実施形態は、データ処理システム3500に関して例示したものに加えて、またはそれに代えるコンポーネントを含むデータ処理システムで実施することができる。図35で示す他のコンポーネントは、示された説明用の例から変えることができる。様々な実施形態は、プログラムコードを動作させることのできる任意のハードウェアデバイスまたはシステムを用いて実施することができる。一例として、データ処理システムは、非有機的なコンポーネントと統合した有機的コンポーネントを含むことができる、かつ/またはヒトを除く完全に有機的コンポーネントから構成することができる。例えば、記憶デバイスは、有機半導体から構成することができる。
他の例示的な例では、プロセッサユニット3504は、特定の用途のために制作された、または構成された回路を有するハードウェアユニットの形態を取ることができる。このタイプのハードウェアは、オペレーションを実施するように構成するために、プログラムコードを記憶デバイスからメモリにロードする必要なく、オペレーションを実施することができる。
例えば、プロセッサユニット3504が、ハードウェアユニットの形態を取る場合、プロセッサユニット3504は、回路システム、ASIC(特定用途向け集積回路)、プログラム可能な論理デバイス、またはいくつかのオペレーションを実施するように構成された何らかの他の適切なタイプのハードウェアとすることができる。プログラム可能な論理デバイスを用いる場合、デバイスは、いくつかのオペレーションを実施するように構成される。デバイスは、いくつかのオペレーションを実施するように後で再構成する、または恒久的に構成することができる。プログラム可能な論理デバイスの例は、例えば、プログラム可能な論理アレイ、プログラム可能なアレイロジック、フィールドプログラマブル論理アレイ、書換え可能ゲートアレイ、および他の適切なハードウェアデバイスを含む。このタイプの実装形態では、様々な実施形態に対するプロセスがハードウェアユニットで実施されるため、プログラムコード3518を除外することができる。
さらに他の説明用の例では、プロセッサユニット3504は、コンピュータおよびハードウェアユニットで見出されるプロセッサの組合せを用いて実施することができる。プロセッサユニット3504は、プログラムコード3518を動作させるように構成された、いくつかのハードウェアユニットおよびいくつかのプロセッサを有することができる。この示された例の場合、いくつかのプロセスを、いくつかのハードウェアユニットで実施することができ、他のプロセスを、いくつかのプロセッサで実施することができる。
他の例として、データ処理システム3500における記憶デバイスは、データを記憶できる任意のハードウェア装置である。メモリ3506、恒久的なストレージ3508、およびコンピュータ可読媒体3520は、有形な形態の記憶デバイスの例である。
他の例では、通信ファブリック3502を実装するためにバスシステムを使用することができ、バスシステムは、システムバスまたは入力/出力バスなど、1つまたは複数のバスから構成することができる。当然であるが、バスシステムは、バスシステムに接続された様々なコンポーネントもしくはデバイス間で、データ転送を提供する任意の適切なタイプのアーキテクチャを用いて実装することができる。さらに、通信ユニットは、モデムまたはネットワークアダプタなど、データを送信および受信するために使用される1つまたは複数のデバイスを含むことができる。さらに、メモリは、例えば、通信ファブリック3502に存在しうるインターフェースおよびメモリコントローラハブで見出されるものなど、メモリ3506、またはキャッシュとすることができる。
データ処理システム3500はまた、連想メモリ3528を含むことができる。連想メモリ3528は、通信ファブリック3502と通信することができる。連想メモリ3528はまた、記憶デバイス3516と通信することができるが、あるいはいくつかの例示的な実施形態では、記憶デバイス3516の一部と見なすこともできる。1つの連想メモリ3528が示されているが、さらなる連想メモリが存在することもありうる。
本明細書で述べたいくつかの特定の、非限定的な実施形態では、例示的な実施形態は、MICROSOFT(登録商標)から市販のWINDOWS(登録商標)およびKINECT(登録商標)ソフトウェアを用いて、OpenNI(登録商標)オープンソースプラットフォームを用いることのできるPRIMESENSE(登録商標)から市販の製品を用いて、KICKSTART,INC.(登録商標)から市販のDUO(登録商標)検知ソリューションを用いて、または他の製品を用いて実施することができる。しかし、例示的な実施形態で使用される骨格データならびに他のデータを取得するために、他の方法を使用することができる。したがって、例示的な実施形態は、上記で述べた製品またはソリューションに関して述べられた特定の実装形態に限定されることはなく、図1、図2a、および図2bに関して述べた汎用のシステム、方法、およびデバイスを使用することができる。同様に、例示的な実施形態は、本明細書で述べたいずれの特定の実装形態にも限定されない。例示的な実施形態は、Dassault Systems S.A.(登録商標)から市販のCATIA/DELMIA(登録商標)ソフトウェア、SIEMENS AG(登録商標)から市販のNX(登録商標)もしくはJACK AND PROCESS SIMULATE HUMAN(登録商標)製品、PTC,INC.(登録商標)から市販のPro/Engineer(登録商標)もしくはCreo(登録商標)、またはAUTODESK,INC.(登録商標)から市販のAUTOCAD(登録商標)、あるいは他の製品を用いて実施することができる。したがって、特に特許請求しない限り、特許請求される本発明は、これらの特定の実施形態に限定されるものと読むべきではない。そうではあるが、特に特許請求されない限り、特許請求される本発明は、これらの特定の実施形態を含むものとして読むことができる。
検知デバイス140および他のコンポーネントは、多くの様々な製造者から利用可能な技術を使用することができる。検知デバイス140は、MICROSOFT(登録商標)から市販のKINECT(登録商標)ソフトウェアとすることができるが、上記で述べたように、OpenNI(登録商標)オープンソースプラットフォームを用いることのできるPRIMESENSE(登録商標)からの製品、またはKICKSTART,INC.(登録商標)からのDUO(登録商標)検知ソリューションを使用することもできる。構造化光撮像技術に基づく他のソリューションまたは製品を使用することができる。検知デバイス140を提供するために使用できる構造化光イメージャの他のこのような供給者は、MESA IMAGING AG(登録商標)、OMEK INTERACTIVE,LTD.(登録商標)、SOFTKINETIC INTERNATIONAL SA/NV(登録商標)、PMDTECHNOLOGIES GMBH(登録商標)、およびPANASONIC(登録商標)を含む。構造化光イメージャのさらなる供給者は、LOGITECH INTERNATIONAL SA(登録商標)およびNAM TAI ELECTRONICS,INC.(登録商標)、EYETOY(登録商標)の製造者を含む。
構造化光撮像技術は、検知デバイス140を用いることができるが、本明細書の実施形態はまた、検知デバイス140と共に使用するために、他の検知技術を提供する。例えば、飛行時間(time of flight)技術を使用することができるが、その場合、オブジェクトまたは微粒子、あるいは音響波、電磁波、または他の波が、媒体を通る距離を移動するのに要した時間量が測定される。本明細書で述べられる例示的な実施形態で使用できる飛行時間技術を用いる製品は、PANASONIC CORPORATION(登録商標)から市販のD−IMAGER(登録商標)、SOFTKINETIC INTERNATIONAL SA/NV(登録商標)から市販のDEPTHSENSE(登録商標)製品、およびCANESTA(登録商標)により提供される相補的な金属酸化膜半導体センサを使用するFOTONIC(登録商標)から市販の製品を含む。飛行時間技術に基づくこのような他の製品は、PMDTECHNOLOGIES GMBH(登録商標)から市販のPMD[VISION](登録商標)、SIEMENS AG(登録商標)により提供される技術を使用できるODOS IMAGING LIMITED(登録商標)から市販のREAL.IZ 2+3D(登録商標)、およびCENTRE SUISSE D’ELECTRONIQUE ET MICROTECHNIQUE,S.A.(登録商標)(CSEM)に関連するMESA IMAGING AG(登録商標)から市販のSWISSRANGER(登録商標)製品を含む。飛行時間技術に基づくさらなる製品は、IEE INTERNATIONAL ELECTRONICS & ENGINEERING S.A.(登録商標)から市販の3D−MLI SENSOR(登録商標)、STANLEY ELECTRIC CO.,LTD.(登録商標)から市販のTOFCAM STANLEY(登録商標)、およびTRIDICAM GMBH(登録商標)から市販の製品を含むことができる。したがって、本明細書で述べる特許請求される発明は、必ずしもいずれかの特定の例示的な実施形態に限定されない。さらに、上記で述べた例は、他の製品および他のタイプのソフトウェアを、例示的な実施形態と共に使用できるという意味において、非限定的なものである。
様々な例示的な実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェアとソフトウェアの要素を共に含む実施形態の形態を取ることができる。いくつかの実施形態は、これだけに限定されないが、例えば、ファームウェア、常駐するソフトウェア、およびマイクロコードなどの形態を含むソフトウェアで実施される。
さらに、様々な実施形態は、命令を実行するコンピュータ、または任意のデバイスもしくはシステムにより使用される、またはそれと共に使用されるプログラムコードを提供する、コンピュータで使用可能な媒体またはコンピュータ可読媒体からアクセスできるコンピュータプログラム製品の形態を取ることができる。本開示のために、コンピュータで使用可能媒体またはコンピュータ可読媒体は、概して、命令実行システム、装置、またはデバイスにより使用される、またはそれと共に使用されるプログラムを含み、記憶し、伝達し、伝播し、または移送することのできる任意の有形な装置とすることができる。
コンピュータで使用可能媒体またはコンピュータ可読媒体は、例えば、限定することなく、電子的、磁気的、光学的、電磁的、赤外線、または半導体のシステム、あるいは伝播媒体とすることができる。コンピュータ可読媒体の非限定的な例は、半導体もしくは固体メモリ、磁気テープ、取外し可能なコンピュータディスケット、RAM(ランダムアクセスメモリ)、ROM(読出し専用メモリ)、剛性のある磁気ディスク、および光ディスクを含む。光ディスクは、CD−ROM(コンパクトディスク−読出し専用メモリ)、CD−R/W(コンパクトディスク−読出し/書込み)、およびDVDを含むことができる。
さらに、コンピュータで使用可能媒体またはコンピュータ可読媒体は、コンピュータ可読または使用可能なプログラムコードを含むまたは記憶することができ、したがって、コンピュータ可読または使用可能なプログラムコードがコンピュータで実行されたとき、このコンピュータ可読または使用可能なプログラムコードの実行により、コンピュータに、通信リンクを介して他のコンピュータ可読または使用可能プログラムコードを送信させる。この通信リンクは、限定することなく、例えば、物理的なものまたは無線である媒体を使用することができる。
コンピュータ可読またはコンピュータ使用可能プログラムコードを記憶する、かつ/または実行するのに適したデータ処理システムは、システムバスなど、通信ファブリックを介してメモリ要素に直接的に、または間接的に結合された1つまたは複数のプロセッサを含むことになる。メモリ要素は、プログラムコードの実際の実行中に使用されるローカルメモリ、大容量ストレージ、およびキャッシュメモリを含むことができ、キャッシュメモリは、コードの実行中に大容量ストレージからコードを取り出すことのできる回数を減らすために、少なくともいくつかのコンピュータ可読またはコンピュータ使用可能プログラムコードの一時的な記憶を提供する。
入力/出力、すなわちI/Oデバイスは、直接的に、または介在するI/Oコントローラを介してシステムに結合することができる。これらのデバイスは、例えば、限定することなく、キーボード、タッチスクリーンディスプレイ、および位置指示デバイスを含むことができる。データ処理システムを、介在する専用ネットワーク、または公衆網を介して他のデータ処理システム、または遠隔のプリンタ、または記憶デバイスに結合できるようにするために、様々な通信アダプタをまた、システムに結合することができる。モデムおよびネットワークアダプタの非限定的な例は、現在利用可能なタイプの通信アダプタのうちのほんの数タイプに過ぎない。
さらに、本開示は、以下の項による実施形態を含む。
項1.構造モデルを位置決めし、かつその設計環境を制御するための装置であって、
プロセッサと、
プロセッサと通信するメモリ(3506)と、
プロセッサと通信する動作検知入力デバイスであり、オブジェクトの動作を追跡し、かつオブジェクト上に位置する少なくとも1つの点に対する空間座標データの組を生成するように構成された動作検知入力デバイスと、
メモリ(3506)に記憶されたアプリケーション(132)とを備え、
アプリケーション(132)がプロセッサにより実行されたとき、アプリケーション(132)が、
動作検知入力デバイスから少なくとも1つの点に対する空間座標データの第1の組を受け取り、かつ
空間座標データをコンピュータ支援設計システム(130)に送り、コンピュータ支援設計システム(130)が、オブジェクト上に位置する点の動きに基づき、角度データを計算してオブジェクトのモデルの設計を更新する
ように構成される、装置。
項2.オブジェクトが、人間工学的な人体模型(150)である、項1に記載の装置。
項3.オブジェクト上に位置する点が、人間工学的な人体模型(150)の体肢上の関節である、項2に記載の装置。
項4.アプリケーション(132)が、ある期間中に連続的に生成された空間座標の複数の観測結果を使用するように構成されており、複数の観測結果は、体肢の運動中に取り込まれたものである、項3に記載の装置。
項5.アプリケーション(132)が、空間座標データの第1の組から骨格点データを生成する、項3に記載の装置。
項6.アプリケーション(132)が、骨格点データから、人間工学的な人体模型の方向付けを指定するための体肢角度を計算する、項5に記載の装置。
項7.体肢角度が、3次元空間の3つの主平面のうちの1つにおける角度指定により示される、項6に記載の装置。
項8.角度指定が、コンピュータ支援設計システム(130)により規定される、項7に記載の装置。
項9.コンピュータ支援設計システム(130)が、アプリケーション(132)により計算された骨格点間のセグメントの角度に基づいて、人体模型(150)の方向付けを指定する、項6に記載の装置。
項10.人間工学的な人体模型(150)を位置決めし、かつ人体模型設計環境を制御するためのプロセッサで実施される方法であって、
コンピュータが、動作検知入力デバイスから1組の空間座標を受け取ること(202)であり、空間座標が、人体モデルの体肢の少なくとも1つの関節の位置を示していること、
コンピュータが、コンピュータ支援設計アプリケーション(132)に、1組の空間座標を送ること(204)であり、コンピュータ支援設計アプリケーション(132)が、角度データの複数のインスタンスにより示された体肢角度の変化に基づいて、人間工学的な人体模型(150)の運動を表すこと、
コンピュータが、コンピュータ支援設計アプリケーション(132)から角度指定を受け取ること(206)であり、角度指定が、少なくとも1つの3次元平面における体肢の角度に対応していること、および
コンピュータが、受け取った角度指定に従って、1組の空間座標を角度データに変換すること(208)であり、角度データが、体肢の位置決めを示していること
を含む方法。
項11.動作検知入力デバイスが深度カメラである、項10に記載の方法。
項12.深度カメラが、少なくともジェスチャおよび音声コマンドにより制御される、項11に記載の方法。
項13.コンピュータが、動作検知入力デバイスをコンピュータ支援設計アプリケーション(132)と統合する複数のアルゴリズムを実行し、アルゴリズムは、全身追跡、および人体模型(150)の制御を可能にする、項10に記載の方法。
項14.アルゴリズムが、人間工学的な人体模型(150)および開発環境の少なくとも一方を制御するために、動作検知入力デバイスにより収集された座標を、コンピュータ支援設計アプリケーション(132)により使用される座標形式へと変換する、項13に記載の方法。
項15.アルゴリズムが、動作検知入力デバイスにより使用されるデータ形式と、コンピュータ支援設計アプリケーション(132)により使用されるデータ形式との間の不適合性を解決する、項13に記載の方法。
項16.人間工学的な人体模型(150)を制御するために、動作検知入力デバイスを、コンピュータ支援設計アプリケーション(132)と統合するプロセッサで実施される方法が、
コンピュータが、人体モデルの運動中に、骨格関節の位置決めを表す3次元のx、y、およびz座標を受け取ること(212)であり、x、y、およびz座標が、動作検知入力デバイスにより取り込まれたものであること、
コンピュータが、少なくとも1つの3次元平面における体肢角度を示す自由度を指定する情報を受け取ること(214)、
コンピュータが、自由度ならびにx、y、およびz座標に基づいて、少なくとも1つの体肢角度を求めること(216)であり、求められた体肢角度が、人間工学的な人体模型(150)の方向付けを指定すること、および
コンピュータが、体肢の運動を表すのに使用するために、少なくとも1つの体肢角度をコンピュータ支援設計アプリケーション(132)に提供すること(218)
を含む方法。
項17.コンピュータが、人間工学的な人体模型(150)を、人体モデルで行われかつ動作検知入力デバイスにより取り込まれたものと同じ姿勢に、コンピュータ支援設計アプリケーション(132)によって少なくとも位置決めできるようにするために、動作検知入力デバイスを、コンピュータ支援設計アプリケーション(132)と統合する複数のアルゴリズムを実行する、項16に記載の方法。
項18.複数のアルゴリズムで動作検知入力デバイスをコンピュータ支援設計アプリケーション(132)と統合することにより、人体モデルを、音声制御により、コンピュータ支援設計アプリケーション(132)の環境に対してさらに回転できるようにする、項17に記載の方法。
項19.複数のアルゴリズムで動作検知入力デバイスをコンピュータ支援設計アプリケーション(132)と統合することにより、音声制御によって骨格追跡、人間工学的な人体模型(150)制御、およびコンピュータ支援設計アプリケーション(132)の環境の画面オーバーレイメニューの間を切り換えることをさらに可能にする、項17に記載の方法。
項20.複数のアルゴリズムで動作検知入力デバイスをコンピュータ支援設計アプリケーション(132)と統合することにより、音声コマンドおよび体の動作の組合せを使用して、コンピュータ支援設計アプリケーション(132)のワークベンチ環境で、パン、ズーム、および回転のうちの少なくとも1つを含む機能をさらに実施できるようにする、項17に記載の方法。
様々な例示的な実施形態の記述が、例示および説明の目的で示されてきているが、網羅的であること、または開示された形態の諸実施形態に限定されることを意図するものではない。当業者であれば、多くの変更形態および変形形態が明らかであろう。さらに、様々な例示的な実施形態は、他の例示的な実施形態と比較して、様々な特徴を提供することができる。選択された1つまたは複数の実施形態は、実施形態の原理、実際の用途を最もよく説明するために、かつ企図される特定の用途に適した様々な変更と共に、様々な実施形態に対する開示を当業者に理解できるようにするために、選択されかつ述べられている。
また、本願は以下に記載する態様を含む。
(態様1)
構造モデルを位置決めし、かつその設計環境を制御するための装置であって、
プロセッサと、
前記プロセッサと通信するメモリ(3506)と、
前記プロセッサと通信する動作検知入力デバイスであり、オブジェクトの動作を追跡し、かつ前記オブジェクト上に位置する少なくとも1つの点に対する空間座標データの組を生成するように構成された動作検知入力デバイスと、
前記メモリ(3506)に記憶されたアプリケーション(132)とを備え、
前記アプリケーション(132)が前記プロセッサにより実行されたとき、前記アプリケーション(132)が、
前記動作検知入力デバイスから前記少なくとも1つの点に対する空間座標データの第1の組を受け取り、かつ
空間座標データをコンピュータ支援設計システム(130)に送り、前記コンピュータ支援設計システム(130)が、前記オブジェクト上に位置する前記点の動きに基づき、角度データを計算して前記オブジェクトのモデルの設計を更新する
ように構成される、装置。
(態様2)
前記オブジェクトが、人間工学的な人体模型(150)である、態様1に記載の装置。
(態様3)
前記オブジェクト上に位置する前記点が、前記人間工学的な人体模型(150)の体肢上の関節である、態様2に記載の装置。
(態様4)
前記アプリケーション(132)が、ある期間中に連続的に生成された空間座標の複数の観測結果を使用するように構成されており、前記複数の観測結果は、前記体肢の運動中に取り込まれたものである、態様3に記載の装置。
(態様5)
前記アプリケーション(132)が、空間座標データの前記第1の組から骨格点データを生成する、態様3に記載の装置。
(態様6)
前記アプリケーション(132)が、前記骨格点データから、前記人間工学的な人体模型の方向付けを指定するための体肢角度を計算する、態様5に記載の装置。
(態様7)
前記体肢角度が、3次元空間の3つの主平面のうちの1つにおける角度指定により示される、態様6に記載の装置。
(態様8)
前記角度指定が、前記コンピュータ支援設計システム(130)により規定される、態様7に記載の装置。
(態様9)
前記コンピュータ支援設計システム(130)が、前記アプリケーション(132)により計算された骨格点間のセグメントの角度に基づいて、前記人体模型(150)の方向付けを指定する、態様6に記載の装置。
(態様10)
人間工学的な人体模型(150)を位置決めし、かつ人体模型設計環境を制御するためのプロセッサで実施される方法であって、
コンピュータが、動作検知入力デバイスから1組の空間座標を受け取ること(202)であり、前記空間座標が、人体モデルの体肢の少なくとも1つの関節の位置を示していること、
前記コンピュータが、コンピュータ支援設計アプリケーション(132)に、前記1組の空間座標を送ること(204)であり、前記コンピュータ支援設計アプリケーション(132)が、角度データの複数のインスタンスにより示された体肢角度の変化に基づいて、前記人間工学的な人体模型(150)の運動を表すこと、
前記コンピュータが、コンピュータ支援設計アプリケーション(132)から角度指定を受け取ること(206)であり、前記角度指定が、少なくとも1つの3次元平面における前記体肢の角度に対応していること、および
前記コンピュータが、前記受け取った角度指定に従って、前記1組の空間座標を角度データに変換すること(208)であり、前記角度データが、前記体肢の位置決めを示していること
を含む方法。
(態様11)
前記動作検知入力デバイスが深度カメラである、態様10に記載の方法。
(態様12)
前記深度カメラが、少なくともジェスチャおよび音声コマンドにより制御される、態様11に記載の方法。
(態様13)
前記コンピュータが、前記動作検知入力デバイスを前記コンピュータ支援設計アプリケーション(132)と統合する複数のアルゴリズムを実行し、前記アルゴリズムが、全身追跡、および人体模型(150)の制御を可能にする、態様10に記載の方法。
(態様14)
前記アルゴリズムが、前記人間工学的な人体模型(150)および開発環境の少なくとも一方を制御するために、前記動作検知入力デバイスにより収集された座標を、前記コンピュータ支援設計アプリケーション(132)により使用される座標形式へと変換する、態様13に記載の方法。
(態様15)
人間工学的な人体模型(150)を制御するために、動作検知入力デバイスをコンピュータ支援設計アプリケーション(132)と統合する前記方法が、
コンピュータが、人体モデルの運動中に、骨格関節の位置決めを表す3次元のx、y、およびz座標を受け取ること(212)であり、前記x、y、およびz座標が、前記動作検知入力デバイスにより取り込まれたものであること、
前記コンピュータが、前記少なくとも1つの3次元平面における体肢角度を示す自由度を指定する情報を受け取ること(214)、
前記コンピュータが、前記自由度ならびに前記x、y、およびz座標に基づいて、少なくとも1つの体肢角度を求めること(216)であり、前記求められた体肢角度が、前記人間工学的な人体模型(150)の方向付けを指定すること、および
前記コンピュータが、前記体肢の運動を表すのに使用するために、前記少なくとも1つの体肢角度を前記コンピュータ支援設計アプリケーション(132)に提供すること(218)
を含む、態様13に記載の方法。