(57)【要約】本発明の一態様は、コンピュータ支援設計アプリケーションにより生成されたモデルを用いて逆運動学的に定義されたオブジェクトについてリアルタイム閉ループパラメータ駆動型シミュレーションを生成するための方法及びシステムに関するものである。一実施形態では、カスタム設計逆運動学的装置がシミュレーションアプリケーションへインポートされ、該逆運動学的装置を定義するパラメータをユーザが対話的に修正する。【選択図】図１
2008544341.tif 000002
【特許請求の範囲】
【請求項１】
３次元（3D）モデルの開発方法であって、
3Dコンピュータ自動設計モデルから設計を捕捉し、
該設計を解析してその１つまたは２つ以上の運動部分を識別し、
該１つまたは２つ以上の運動部分について１つまたは２つ以上の逆運動学的関係を決定し、
該１つまたは２つ以上の逆運動学的関係を含む前記運動部分の特徴を格納する、
という各ステップを含む、3Dモデルの開発方法。
【請求項２】
前記3Dコンピュータ自動設計モデルがモデリングプログラムから提供される、請求項１に記載の方法。
【請求項３】
前記モデリングプログラムが、SolidWorks、Pro/ENGINEER、及びAutoCadのうちの１つ又は２つ以上を含む、請求項２に記載の方法。
【請求項４】
3Dコンピュータ自動設計モデルから.Xファイル形式のファイルを生成するステップを更に含む、請求項１に記載の方法。
【請求項５】
前記ファイルが、3Dオブジェクトを複数の階層レベルで記述するテキストを含む、請求項４に記載の方法。
【請求項６】
前記ファイルが、CADのエクスポート、ディジタルコンテンツコンバータ、ファイルエクスポート／変換ツール、及び3Dメッシュデータ抽出ユーティリティのうちの１つ又は２つ以上により生成される、請求項５に記載の方法。
【請求項７】
前記.Xファイルが、シミュレートすべき3Dコンピュータ自動設計モデルにおける複数のオブジェクトの各々毎に生成される、請求項４に記載の方法。
【請求項８】
前記3Dコンピュータ自動設計モデルが、１つ又は２つ以上の運動部分を含む、請求項１に記載の方法。
【請求項９】
前記１つ又は２つ以上の運動部分の１つ又は２つ以上の回動場所を決定するステップを更に含む、請求項８に記載の方法。
【請求項１０】
前記3Dコンピュータ自動設計モデルの２つ又は３つ以上の運動部分の間の少なくとも１つの関係を決定するステップを更に含む、請求項１に記載の方法。
【請求項１１】
前記２つ又は３つ以上の運動部分について少なくとも１つの逆運動学的関係を決定するステップを更に含む、請求項１０に記載の方法。
【請求項１２】
前記２つ又は３つ以上の運動部分のうちの少なくとも１つの一端の運動を決定するステップを更に含む、請求項１０に記載の方法。
【請求項１３】
前記運動部分のうちの少なくとも１つについて部分運動データが決定される、請求項１に記載の方法。
【請求項１４】
前記部分運動データを記述する.Xファイルが前記運動部分の各々毎に少なくとも１つ生成される、請求項１３に記載の方法。
【請求項１５】
シミュレーション方法であって、
コンピュータ自動設計を１つ又は２つ以上のオブジェクトを含むモデルへと変換し、その各オブジェクトが逆運動学的運動を含むものであり、
前記モデルの記述をネットワークを介して送信し、
該記述を受信するクライアント装置において該モデルをシミュレートし、
前記ネットワークを介して制御パケットを送信することにより前記モデルの少なくとも１つのオブジェクトを運動させる、
という各ステップを含む、シミュレーション方法。
【請求項１６】
.Xファイルからポリゴンデータを抽出し、及びコンピュータ自動設計モデルの分解能を維持する3Dメッシュを生成する、という各ステップを更に含む、請求項１５に記載の方法。
【請求項１７】
前記.Xファイルにポリゴンスキンが付与される、請求項１６に記載の方法。
【請求項１８】
前記ポリゴンスキンを除いた全ての3Dモデル情報が除去される、請求項１７に記載の方法。
【請求項１９】
前記コンピュータ自動設計モデルから所定のファイル形式を有するファイルが生成される、請求項１５に記載の方法。
【請求項２０】
前記ファイルが、パケットストリームを生成するパケット記述ファイルである、請求項１９に記載の方法。
【請求項２１】
前記パケットストリームが、コンピュータネットワークを介して3Dシミュレーションクライアントアプリケーションへ送信される、請求項２０に記載の方法。
【請求項２２】
前記パケット記述ファイルが各オブジェクト毎に生成される、請求項１９に記載の方法。
【請求項２３】
前記オブジェクトのうちの１つ又は２つ以上が複数のサブオブジェクトを有しており、その各サブオブジェクト毎にパケット記述ファイルを生成するステップを含む、請求項１９に記載の方法。
【請求項２４】
前記複数のサブオブジェクトのうちの１つが、オブジェクトのうち運動に関係する部分であり、該運動が部分的な運動又は並進運動であり、及び該運動が、ヨー、x運動、y運動、及びz運動のうちの１つ又は２つ以上を含む、請求項２３に記載の方法。
【請求項２５】
前記モデルのシミュレーションが、各オブジェクト毎にネットワークパケットを受信するステップを含む、請求項１５に記載の方法。
【請求項２６】
物理的なエンジンを用いてネットワークパケットを生成するステップを更に含む、請求項２５に記載の方法。
【請求項２７】
前記ネットワークパケットが、パケット記述ファイルにおける全パラメータについての情報を提供する、請求項２６に記載の方法。
【請求項２８】
前記パラメータが、ヨーに関するデータ、xに関するデータ、yに関するデータ、及びzに関するデータのうちの１つ又は２つ以上を含む、請求項２７に記載の方法。
【請求項２９】
前記記述の送信ステップが、前記クライアント装置上のクライアントアプリケーションへパケット記述ファイルを送信するステップを含む、請求項１５に記載の方法。
【請求項３０】
前記パケット記述ファイルが、実行時間中に送信されたネットワークパケットを解釈するために使用される、請求項２９に記載の方法。
【請求項３１】
前記クライアントアプリケーションが、リアルタイムでの3D制御及び表示を提供する、請求項２９に記載の方法。
【請求項３２】
前記モデルの運動を定義するために複数のネットワークパケットがネットワークを介して前記クライアントアプリケーションへ絶えず送信される、請求項３１に記載の方法。
【請求項３３】
シミュレーション方法であって、
１つ又は２つ以上のオブジェクトであってその各々がシステムの構成要素の現存する在庫に関連づけされた１つ又は２つ以上のオブジェクトを含む3Dモデルを表示するグラフィカルユーザインタフェイスを提供し、
前記１つ又は２つ以上のオブジェクトのうちの少なくとも１つの運動の特徴を示すネットワークパケットを受信し、
該受信したネットワークパケットを用いて前記１つ又は２つ以上のオブジェクトの運動をシミュレートする、
という各ステップを含む、シミュレーション方法。
【請求項３４】
リアルタイムフィードバックに基づいて前記モデルに運動データを適用するステップを更に含む、請求項３３に記載の方法。
【請求項３５】
運動のシミュレーションがリアルタイムシミュレーションを含む、請求項３３に記載の方法。
【請求項３６】
クロックタイミングのためにリードタイムスタンプカウンタ（RDTSC）が使用される、請求項３５に記載の方法。
【請求項３７】
前記3Dモデルへオブジェクトを追加するためのドラッグアンドドロップ機能を提供するステップを更に含む、請求項３３に記載の方法。
【請求項３８】
前記ユーザインタフェイスが、運動のリアルタイム制御及び表示を含む、請求項３３に記載の方法。
【請求項３９】
シミュレーションが、3D逆運動学的解をモデルに適用するステップを含む、請求項３３に記載の方法。
【請求項４０】
現存する在庫を自動的に発見するステップを更に含む、請求項３３に記載の方法。
【請求項４１】
前記モデルについて１つ又は２つ以上の逆運動学的運動を決定するステップを更に含む、請求項３３に記載の方法。
【請求項４２】
逆運動学的（IK）教授方法であって、
物理的なシステムの電子化モデルについて逆運動学をシミュレートし、
所定の出力で入力に応答するよう前記物理的なシステムの前記電子化モデルをトレーニングし、これによりトレーニング結果を提供し、
該トレーニング結果を前記物理的なシステムの前記電子化モデルに基づいて物理的な装置に適用する、
という各ステップを含む、逆運動学的（IK）教授方法。
【請求項４３】
シミュレーションが、全ての逆運動学的オブジェクトの表現を含むシミュレーションの解を生成するステップを含む、請求項４２に記載の方法。
【請求項４４】
前記シミュレーションの解における逆運動学的オブジェクトがユーザにより制御される、請求項４３に記載の方法。
【請求項４５】
ジョイスティック、マウス、キーボード、タッチパッド、及びスクロールボールのうちの１つ又は２つ以上を用いて逆運動学的オブジェクトがユーザにより制御される、請求項４４に記載の方法。
【請求項４６】
物理的な構築の前に物理的なシステムの視覚化を提供するステップを更に含む、請求項４２に記載の方法。
【請求項４７】
前記電子化モデル内の衝突検出を実行するステップを更に含む、請求項４２に記載の方法。
【請求項４８】
衝突を回避するように１つ又は２つ以上の逆運動学的パラメータが調節される、請求項４７に記載の方法。
【請求項４９】
対応する物理的な装置と共に用いるためのトレーニング結果のファイルを生成するステップを更に含む、請求項４２に記載の方法。
【請求項５０】
前記ファイルが、逆運動学的運動に関するデータ、衝突回避に関するデータ、及び他の逆運動学的装置との相互作用に関するデータのうちの１つ又は２つ以上を含む、請求項４９に記載の方法。
【請求項５１】
前記ファイルが、対応する物理的な装置についての手作業によるオブジェクトの教授に取って代わる、請求項４９に記載の方法。
【請求項５２】
ファイルデコーディング方法であって、
少なくとも１つの逆運動学的装置に関するパケット記述ファイルを受信して格納し、
該少なくとも１つの逆運動学的装置に関する運動パラメータ情報を有するネットワークパケットファイルストリームを受信し、
前記少なくとも１つの逆運動学的装置について前記ネットワークパケットストリームを前記格納されたパケット記述ファイルと照合し、
前記パケット記述ファイルを前記ネットワークパケットストリームに適用して前記少なくとも１つの逆運動学的装置のシミュレーションのための表示パラメータを取得し、
該シミュレーションを表示する、
という各ステップを含む、ファイルデコーディング方法。
【請求項５３】
コンピュータ実行可能コードを含むコンピュータプログラム製品であって、該コンピュータ実行可能コードが、１つ又は２つ以上のコンピュータ装置上で実行された際に、
3Dコンピュータ自動設計モデルから設計を捕捉し、
該設計を解析してその１つ又は２つ以上の運動部分を識別し、
該１つ又は２つ以上の運動部分について１つ又は２つ以上の逆運動学的関係を決定し、
該１つ又は２つ以上の逆運動学的関係を含む前記運動部分の特徴を格納する、
という各ステップを実行するものである、コンピュータプログラム製品
【請求項５４】
コンピュータ実行可能コードを含むコンピュータプログラム製品であって、該コンピュータ実行可能コードが、１つ又は２つ以上のコンピュータ装置上で実行された際に、
コンピュータ自動設計を１つ又は２つ以上のオブジェクトを含むモデルへと変換し、  その各オブジェクトが逆運動学的運動を含むものであり、
該モデルの記述をネットワークを介して送信し、
該記述を受信したクライアント装置において該モデルをシミュレートし、
前記ネットワークを介して制御パケットを送信することにより該モデルの少なくとも１つのオブジェクトを運動させる、
という各ステップを実行するものである、コンピュータプログラム製品。
【請求項５５】
コンピュータ自動設計を１つ又は２つ以上のオブジェクトを含むモデルへと変換するよう構成され、及びその各オブジェクトが逆運動学的運動を含む、第１のコンピュータと、
該第１のコンピュータと通信可能な関係で接続され、及び該第１のコンピュータから前記モデルの記述を受信して該モデルをシミュレートするよう構成された、第２のコンピュータとを含み、該第２のコンピュータが、前記第１のコンピュータから受信した制御パケットに応じて前記１つ又は２つ以上のオブジェクトのうちの少なくとも１つを運動させるものである、システム。
【請求項５６】
コンピュータ実行可能コードを含むコンピュータプログラム製品であって、該コンピュータ実行可能コードが、１つ又は２つ以上のコンピュータ装置上で実行された際に、
１つ又は２つ以上のオブジェクトであってその各々がシステムの構成要素の現存する在庫に関連づけされた１つ又は２つ以上のオブジェクトを含む3Dモデルを表示するグラフィカルユーザインタフェイスを提供し、
前記１つ又は２つ以上のオブジェクトのうちの少なくとも１つの運動の特徴を示すネットワークパケットを受信し、
該受信したネットワークパケットを用いて前記１つ又は２つ以上のオブジェクトの運動をシミュレートする、
という各ステップを実行するものである、コンピュータプログラム製品。
【請求項５７】
１つ又は２つ以上のオブジェクトであってその各々がシステムの構成要素の現存する在庫に関連づけされた１つ又は２つ以上のオブジェクトを含む3Dモデルをユーザインタフェイス内に表示するよう構成されたコンピュータを含む装置であって、該コンピュータが更に、前記１つ又は２つ以上のオブジェクトのうちの少なくとも１つの運動の特徴を示すネットワークパケットを受信し、及び該運動を前記ユーザインタフェイス内でシミュレートするよう構成されている、装置。
【請求項５８】
コンピュータ実行可能コードを含むコンピュータプログラム製品であって、該コンピュータ実行可能コードが、１つ又は２つ以上のコンピュータ装置上で実行された際に、
物理的なシステムの電子化モデルに関する逆運動学をシミュレートし、
所定の出力で入力に応答するよう前記物理的なシステムの電子化モデルをトレーニングし、これによりトレーニング結果を提供し、
該トレーニング結果を前記物理的なシステムの電子化モデルに基づいて物理的な装置に適用する、
という各ステップを実行する、コンピュータプログラム製品。
【請求項５９】
物理的なシステムの電子化モデルについて逆運動学をシミュレートするようプログラムされたコンピュータを含む装置であって、該電子モデルが入力に対して出力で応答するようトレーニングされ、これによりトレーニング結果が提供され、該トレーニング結果が、前記電子化モデルに基づいて物理的な装置と共に使用されるよう構成される、装置。
【請求項６０】
コンピュータ実行可能コードを含むコンピュータプログラム製品であって、該コンピュータ実行可能コードが、１つ又は２つ以上のコンピュータ装置上で実行された際に、
少なくとも１つの逆運動学的装置に関するパケット記述ファイルを受信して格納し、
該少なくとも１つの逆運動学的装置に関する運動パラメータ情報を有するネットワークパケットファイルストリームを受信し、
前記少なくとも１つの逆運動学的装置について前記ネットワークパケットストリームを前記格納されたパケット記述ファイルと照合し、
前記パケット記述ファイルを前記ネットワークパケットストリームに適用して前記少なくとも１つの逆運動学的装置のシミュレーションのための表示パラメータを取得し、
該シミュレーションを表示する、
という各ステップを実行するものである、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイム物理装置シミュレーションを生成するための方法及び装置に関し、特に、本発明の実施形態は、従来のコンピュータ支援設計アプリケーションにより生成されたモデルを用いて逆運動学的に定義されたオブジェクトについてのリアルタイム閉ループパラメータ駆動型シミュレーションに関するものである。
【背景技術】
【０００２】
物理装置（例えばロボットアーム）は一般に、所定の座標系において１点から別の１点へと移動する、複数の連結部、アーム、エンドエフェクタ、ベルト、及びリフタを含む。物理装置の一例として、単純なピックアンドプレースを行うことが可能なロボット、又はより複雑な組立用装置が挙げられる。直線的な運動で様々な位置へ移動することができる他の３次元（3D）装置とは異なり、物理装置は、同じ最終的な位置に到達するために複数の経路で移動することがそれぞれ可能である幾つかの回動可能な状態で接続された伸長部を有することが可能である。単純な例として、２つのアームを有するロボットは、オブジェクトを約90cm（3feet）移動させることができる。第１のアームを約30cm（1foot）移動させ、第２のアームを約60cm（2feet）移動させて、最終的な位置へ移動させることが可能である。しかし、２つのアームは、ほぼ無限の組み合わせの移動により、それら移動を合わせて約90cm（3feet）移動することが可能である、ということが理解されよう。該２つのアームは、不等長のものとすることが可能であり、それ故、それぞれ異なる運動の弧を有することが可能である。逆運動学方程式は、物理装置の様々な副部分の相互作用を定義し、最終的な位置に到達するために一定距離だけどの副部分を移動させるかに関する答えを提供するものである。
【０００３】
ロボット等の装置は、逆運動学的装置と呼ばれる。これは、それら装置の様々な副部分の運動の可能性を定義するために該装置が逆運動学方程式を必要とするからである。該装置の回動点及び線形移動に基づく逆運動学方程式により定義される逆運動学的装置の運動をシミュレートするために特殊なアプリケーションが必要とされる。
【０００４】
逆運動学的装置を含めて、3D装置のモデル化及びシミュレーションを行うシミュレーションアプリケーションが存在する。かかるアプリケーションは、ビルトインコンピュータ支援設計（CAD）アプリケーションを用いた逆運動学的装置の設計を可能とし、又はシミュレーションに利用することができる装置の標準的なライブラリを使用する。標準的なCADアプリケーションによるカスタム設計された装置を使用する場合には、シミュレーションアプリケーションにインポートするための特定の形式へエクスポートすることを一般に必要とする。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
多くの業界では、施設または製造ラインにおけ特定の状況に適するよう装置をカスタム設計し、及び装置のシミュレーションを生かすことを所望する。工業規格による装置は、特定の施設の要件を満たすための到達距離、大きさ、速度、又は精度を提供しない場合が多い。したがって、カスタム逆運動学的装置を閉ループパラメータ駆動型シミュレーションアプリケーションにインポートし、及び装置の運動だけでなく設計パラメータも対話的に調節するためのインタフェイスをユーザに提供する、アプリケーションの必要性が存在する。
【課題を解決するための手段】
【０００６】
本書で提供されるのは、標準的なコンピュータ支援設計（CAD）アプリケーションで生成された3Dオブジェクトに基づき逆運動学的装置のシミュレーションを提供するための方法及びシステムである。CADアプリケーションからの3Dオブジェクトは、その捕捉及び標準的なファイル形式へのエクスポートを行うことが可能である。運動プロファイルデータファイルを生成し、該運動プロファイルデータファイルをクライアントシミュレーションアプリケーションに転送することが可能である。
【０００７】
本発明の原理による方法又はシステムにおける第１ステップは、3DCADモデルから設計を捕捉することによる3Dモデルの開発である。該3Dモデルを解析して、オブジェクトの１つ又は２つ以上の運動する部分を識別し、及び１つ又は２つ以上の運動する副部分について１つ又は２つ以上の逆運動学的関係を決定することが可能である。逆運動学方程式は、装置のエンドエフェクタを移動させるためのアーム又はリンクといった複数の副部分を含むオブジェクトの運動を記述する。個々のアーム又はリンクは、装置のエンドエフェクタを所与の位置へ移動させるために、複数の運動で別個に移動することが可能である。逆運動学方程式は、所与の座標系における副部分の各々の運動を定義することが可能である。オブジェクトは、１つ又は２つ以上の逆運動学的関係を含む運動部分を特徴化したものを格納することができるファイル形式へとエクスポートすることが可能である。
【０００８】
SolidWorks、Pro/ENGINEER、AutoCad、又は3Dモデル開発を行うことができる他のあらゆるアプリケーションといった工業規格によるCADアプリケーションにより、3Dコンピュータ自動設計モデルを提供することが可能である。3Dコンピュータ支援設計モデルを使用して標準的な.Xファイル形式を生成することが可能である。.Xファイル形式は、複数の階層レベルで3Dオブジェクトを記述するテキストファイルとすることが可能である。実施形態によっては、.Xファイルは、ディジタルコンテンツコンバータによって、又はファイルエクスポート／変換ツールによって、CADアプリケーションからエクスポートすることにより生成することが可能である。.Xファイルは、シミュレーションで使用されることになる各3Dオブジェクト毎に生成することが可能である。.Xファイルが生成されると、該.Xファイルから不必要な細部を除去することができるメッシュデータ抽出ユーティリティを使用することが可能である。
【０００９】
回動場所が逆運動学的オブジェクトの運動を定義することができる場所といった、運動する部分について3Dモデルを識別することが可能である。複数の運動する部分の間の関係は、逆運動学的関係として定義することが可能である。別個に運動するよう定められている可能性のある個々のアーム又はリンクといった装置の各副部分の運動を定義することが可能である。.Xファイル形式は、回動軸の運動データの格納には適さない可能性があり、それ故、部分的な運動情報を必要とする各オブジェクト毎に、運動を記述する少なくとも１つの.Xファイルを生成することが可能である。
【００１０】
部分的な運動情報を定義することができる.Xファイルが生成されると、該.Xファイルを解析して、シミュレーションにとって望ましいオブジェクトについてのシェル記述のみを抽出することが可能である。この情報は、ユーザがシミュレーションにとって必要な情報のみを抽出することを可能にするカスタムパーサアプリケーションを使用して抽出することができる。
【００１１】
本プロセスにおける次のステップは、逆運動学的運動をそれぞれが含み得る１つ又は２つ以上のオブジェクトを含むことが可能な.Xファイルモデルを最適化するステップとすることができる。最適化された.Xファイルモデルを使用して、ネットワークを介して送信するのにより適したパケットストリームに関するテンプレートを生成することが可能である。パケットストリームは、逆運動学的オブジェクトの運動やオブジェクトの他の特徴を記述するためのデータを有することが可能である。送信されたパケットストリームは、該記述を受信するクライアントアプリケーションにおいてオブジェクトをシミュレートするために使用することが可能である。シミュレーションは、ネットワークを介してクライアントアプリケーションへパケットストリームを送信することにより少なくとも１つのオブジェクトの運動を示すことが可能である。
【００１２】
3Dモデルから生成された.Xファイルからポリゴンデータを抽出することが可能である。該ポリゴンデータについて3Dメッシュを生成して、.Xファイルモデルについてのシェルを生成することが可能である。該抽出されたポリゴンデータは、元の3D設計モデルの分解能を維持することが可能である。.Xファイルのポリゴンデータを最適化して、クライアントシミュレーションアプリケーションにおける改善された性能を提供することが可能である。ポリゴン最適化は、ポリゴンデシメーションを用いてメッシュシェルにおけるポリゴン数を最小限にすることが可能である。クライアントアプリケーションが表示する必要があるポリゴンが少ないほど、その表示をより滑らかに及びより速くリフレッシュすることが可能となる。更に、クライアントシミュレーションアプリケーションの表示速度を高めるために、属性／索引による順序づけも用いられる。ポリゴンスキンを手作業で又はソフトウェアにより自動的に.Xファイルに適用することが可能である。.Xファイルにポリゴンスキンが適用されると、ポリゴンスキンを除き全ての他の3Dモデル情報を棄却することが可能である。不必要なポリゴン情報は、手作業で又はソフトウェアにより自動的に棄却することが可能である。
【００１３】
.Xファイルモデルからパケット記述ファイルを生成することが可能である。該パケット記述ファイルは、テキストベースのものとすることが可能であり、運動オブジェクトの記述について単純な名前形式を使用することが可能である。パケット記述ファイルは、自動的に又は手作業で生成することが可能である。名前形式のパケット記述ファイルは、オブジェクトの各副部分毎の情報及び該副部分についての運動のタイプを含むことが可能である。パケット記述ファイルは、アーム、モータ、又はエンドエフェクタといった副部分を記述することが可能である。パケット記述ファイルは、3Dシミュレーションクライアントへ送信することができるパケットストリームを生成するために使用することが可能である。パケット記述ファイルの個数は、3Dシミュレーションクライアントのために定義された逆運動学的オブジェクトの個数に基づくものとすることが可能である。パケット記述ファイルと逆運動学的オブジェクトとの間の一対一の関係を維持することが可能である。部分的な運動又は並進運動をヨー、x,y,z又はその他の任意の適用可能な座標系として記述することが可能である。
【００１４】
ネットワークパケットデータは、逆運動学的オブジェクトの各々毎に自動的に生成することが可能なものであり、及びパケット記述ファイルの全てのパラメータについてデータを提供することが可能なものである。ネットワークパケットは、ヨー、x,y,z又はその他の任意の適用可能な座標といった、パケット記述ファイル内に記述されるパラメータのためのデータを提供することが可能である。物理エンジンは、ネットワークパケットのためのデータを生成することが可能である。該物理エンジンは、IKオブジェクト装置の能力に運動を制限することが可能である。該物理エンジンは、入力装置からの入力を受信することが可能である。該入力装置は、マウス、ジョイスティック、キーボード、タッチパッド、又は他のあらゆるタイプの入力装置とすることが可能である。
【００１５】
ネットワークパケットは、運動データを3Dシミュレーションクライアントへ提供することが可能である。ネットワークパケットデータは、UDP/IP、TCP/IP、.NETリモーティング、又はその他の任意のネットワークプロトコルといった、標準的なプロトコルを使用して送信することが可能である。ネットワークパケットデータストリームは、パケット記述ファイルを使用してデコードすることが可能である。
【００１６】
3Dシミュレーションクライアントは、受信したネットワークパケットデータストリームに基づいてオブジェクトを表示することが可能である。該クライアントは、パケット記述ファイルの情報をネットワークパケットデータストリームに適用することにより、該パケット記述ファイルに従って該ネットワークパケットデータストリームをデコードすることが可能である。3Dシミュレーションクライアントは、該ネットワークパケットデータストリームにより定義される逆運動学的オブジェクトを表示することが可能である。複数の送信されたネットワークパケットは、3Dシミュレーションクライアントにおいて各逆運動学的オブジェクトを記述することが可能である。ネットワークパケットは、3Dシミュレーションクライアントにおいてオブジェクトの運動を定義するためにネットワークを介して絶えず送信することが可能である。逆運動学的副部分の各々毎にネットワークパケット記述ファイル及びそれに関連するパケットストリームが存在することが可能であり、それらはシミュレーションにおける逆運動学による各運動を含むものである。
【００１７】
逆運動学的オブジェクトの完全なシミュレーションを生成するために、運動中の少なくとも１つのオブジェクトを表示するシミュレーショングラフィカルユーザインタフェイスを提供することが可能である。逆運動学的オブジェクトは、ドラッグアンドドロップ又は次元配置法によりシミュレーションに追加することが可能であり、及びシミュレーションにおけるあらゆる場所に配置することが可能である。シミュレーション中に配置するオブジェクトは、以前に受信したパケット記述ファイルに基づいてオブジェクトのリストから選択することが可能である。追加のオブジェクトは、パケット記述ファイルにより記述することができるシミュレーション準拠オブジェクトのライブラリからシミュレーションに追加することが可能である。ユーザは、オブジェクトのシミュレーションパラメータを対話的に調節してシミュレーション内のオブジェクトの運動を修正することが可能である。これは、他の逆運動学的オブジェクト又は非運動オブジェクト（容器、壁、天井、床、施設の構造体、製品、又はシミュレーション内の他のあらゆる非運動オブジェクト等）との衝突を回避するよう行うことが可能である。オブジェクトのパラメータは、「オンザフライ」で変更することが可能であり、新たな修正後のパラメータでシミュレーションを再実行することが可能である。シミュレーションのオブジェクトパラメータは、アーム長、モータ速度、エンコーダ分解能、エンドエフェクタのタイプ、加速、ｚ速度、スケーリングファクタ、又はオブジェクトに関する他のあらゆる適当なパラメータについて調節することが可能なものである。
【００１８】
オブジェクトライブラリは、特定の施設に関する利用可能な在庫オブジェクトを表すことができるシミュレーション準拠オブジェクトを含むことが可能である。該ライブラリのオブジェクトは、工業規格によるオブジェクト、又は以前に設計されて格納されたパケット記述ファイルにより記述された3Dモデルからなることが可能である。ネットワークを介して送信されたネットワークパケットストリームは、3Dシミュレーションクライアント内のライブラリシミュレーションオブジェクトの運動を記述することが可能である。
【００１９】
該ライブラリオブジェクトは、3DCADアプリケーションに由来する他の１つ又は２つ以上のライブラリオブジェクトを含む可能性のあるシミュレーションに追加することが可能である。3Dシミュレーションクライアントにおけるシミュレーションオブジェクトは、シミュレーション内のあらゆる場所にドラッグアンドドロップすることが可能である。
【００２０】
ネットワークパケットからの運動データは、リアルタイムクロックに基づいて適用することが可能である。ネットワークパケットは、入力装置（例えば、マウス、ジョイスティック、キーボード、タッチパッド、又は他のあらゆる入力装置）からの運動データで更新することが可能である。入力装置がオブジェクトの運動データを修正すると、コンピュータ環境のハードウェア及びソフトウェア能力によって決まる分解能を有し得るリアルタイムクロックに基づいて3Dシミュレーションクライアントへネットワークパケットを送信することが可能となる。読み出しタイムスタンプカウンタ（RDTSC）又はその他のクロックタイミング画定方法を使用することが可能である。ネットワークパケットストリームは、標準的な通信プロトコル（例えば、UDP/IP、TCP/IP、.NETリモーティング、又はその他の任意のネットワークプロトコル）を用いて3Dシミュレーションクライアントへ送信することが可能である。ネットワークパケットの使用は、シミュレーションに関する単一の制御ポイントについて共通のフレームワークを提供することを可能とする。
【００２１】
これらの技術を使用すると、リアルタイム且つスタンドアロンの逆運動学的解を3Dシミュレーションクライアント内で生成することが可能となる。該リアルタイムの解は、閉ループ且つリアルタイムのパラメータ駆動型の解とすることが可能である。
【００２２】
シミュレーションの解が生成されると、該解は、シミュレーションオブジェクトにより記述される装置の利用可能性の判定のための物理的な在庫に関連づけすることが可能となる。この関連づけは、解における各逆運動学的オブジェクト毎の実際の装置に対する自動発見照合を用いて物理的な在庫における装置とのパラメータの照合を行うことが可能である。
【００２３】
シミュレーションの解は、物理的なシステムをモデル化することが可能であり、及び所定の出力で入力に応答するよう該物理的なシステムに教授を与えるために使用することが可能である。該教授は、該物理的なシステムの電子化されたモデルに基づいて少なくとも１つの物理的な装置に適用することが可能である。
【００２４】
シミュレーションの解は、物理的な構築の前に施設の視覚化を提供することが可能である。シミュレーションの解は、物理的な装置に対する損傷の可能性を伴うことなく、衝突の検出を行うことを可能にする。最終的なシミュレーションの解情報は、3Dコンピュータ支援自動設計モデルを最終的な構成へと修正するために使用することが可能である。このプロセスは、ユーザの要求を全て満たすシミュレーションの解が生成されるまで、新たなシミュレーションについて生成された新たなファイルに繰り返し適用することが可能である。
【００２５】
シミュレーションの解において実行される教授に基づいて物理的な装置上のアプリケーションのためのファイルを生成することが可能である。該ファイルは、施設の物理的な装置の何れかについて3Dシミュレーションクライアントにより生成することが可能である。シミュレーションの解により生成された該ファイルは、衝突回避が既に処理されている可能性がある。システム検査における衝突その他の機械的な考慮事項といった考え得る設計上の示唆を露呈させる該ファイルに基づいてシステム設計上の考慮事項を再評価することが可能である。シミュレーションの解を使用した物理的な装置のファイルの生成は、施設内での手作業によるオブジェクトの教授に取って代わるものとなり得る。
【００２６】
一態様では、本書で開示する3Dモデル開発方法は、3Dコンピュータ自動設計モデルから設計を捕捉し、該設計を解析してその１つ又は２つ以上の運動部分を識別し、該１つ又は２つ以上の運動部分について１つ又は２つ以上の逆運動学的関係を決定し、該１つ又は２つ以上の逆運動学的関係を含む運動部分の特徴を格納する、という各ステップを含む。
【００２７】
3Dコンピュータ自動設計モデルは、モデリングプログラムから提供することが可能である。該モデリングプログラムは、SolidWorks、Pro/ENGINEER、及びAutoCadのうちの１つ又は２つ以上を含むことが可能である。本方法は更に、3Dコンピュータ自動設計モデルから.Xファイル形式のファイルを生成することを含むことが可能である。該ファイルは、3Dオブジェクトを複数の階層レベルで記述するテキストを含むことが可能である。該ファイルは、CADのエクスポート、ディジタルコンテンツコンバータ、ファイルエクスポート／変換ツール、及び3Dメッシュデータ抽出ユーティリティのうちの１つ又は２つ以上により生成することが可能である。.Xファイルは、シミュレートすべき3Dコンピュータ自動設計モデルにおける複数のオブジェクトの各々毎に生成することが可能である。3Dコンピュータ自動設計モデルは、１つ又は２つ以上の運動部分を含むことが可能である。本方法は、１つ又は２つ以上の運動部分の１つ又は２つ以上の回動場所を決定するステップを含むことが可能である。本方法は、3Dコンピュータ自動設計モデルの２つ又は３つ以上の運動部分の間の少なくとも１つの関係を決定するステップを含むことが可能である。本方法は、２つ又は３つ以上の運動部分について少なくとも１つの逆運動学的関係を決定するステップを含むことが可能である。本方法は、２つ又は３つ以上の運動部分のうちの少なくとも１つの一端の運動を決定するステップを含むことが可能である。前記運動部分のうちの少なくとも１つについて部分運動データを決定することが可能である。複数の運動部分の各々毎に前記部分運動データを記述する.Xファイルを少なくとも１つ生成することが可能である。
【００２８】
別の態様では、本書で開示するシミュレーション方法は、コンピュータ自動設計を１つ又は２つ以上のオブジェクトを含むモデルへと変換し、その各オブジェクトが逆運動学的運動を含むものであり、該モデルの記述をネットワークを介して送信し、該記述を受信したクライアント装置において該モデルをシミュレートし、ネットワークを介して制御パケットを送信することにより該モデルの少なくとも１つのオブジェクトを運動させる、という各ステップを含む。
【００２９】
本方法は、.Xファイルからポリゴンデータを抽出し、及びコンピュータ自動設計モデルの分解能を維持する3Dメッシュを生成する、という各ステップを含むことが可能である。該.Xファイルにポリゴンスキンを付与することが可能である。該ポリゴンスキンを除いた全ての3Dモデル情報は除去することが可能である。コンピュータ自動設計モデルから所定のファイル形式を有するファイルを生成することが可能である。該ファイルは、パケットストリームを生成するパケット記述ファイルとすることが可能である。該パケットストリームは、コンピュータネットワークを介して3Dシミュレーションクライアントアプリケーションへ送信することが可能である。パケット記述ファイルは各オブジェクト毎に生成することが可能である。複数のオブジェクトのうちの１つ又は２つ以上は、複数のサブオブジェクトを有することが可能であり、本方法は、その各サブオブジェクト毎にパケット記述ファイルを生成するステップを含むことが可能である。複数のサブオブジェクトのうちの１つは、オブジェクトのうち運動に関係する部分とすることが可能であり、該運動は部分的な運動又は並進運動であり、及び該運動は、ヨー、x運動、y運動、及びz運動のうちの１つ又は２つ以上を含む。モデルのシミュレーションは、各オブジェクト毎にネットワークパケットを受信するステップを含むことが可能である。本方法は、物理的なエンジンを用いてネットワークパケットを生成するステップを含むことが可能である。該ネットワークパケットは、パケット記述ファイル内の全パラメータについての情報を提供することが可能である。該パラメータは、ヨーに関するデータ、xに関するデータ、yに関するデータ、及びzに関するデータのうちの１つ又は２つ以上を含むことが可能である。前記記述の送信ステップは、クライアント装置上のクライアントアプリケーションへパケット記述ファイルを送信するステップを含むことが可能である。パケット記述ファイルは、実行時間中に送信されたネットワークパケットを解釈するために使用することが可能である。クライアントアプリケーションは、リアルタイムでの3D制御及び表示を提供することが可能である。モデルの運動を定義するために、複数のネットワークパケットをネットワークを介してクライアントアプリケーションへ絶えず送信することが可能である。
【００３０】
別の態様では、本書で開示するシミュレーション方法は、１つ又は２つ以上のオブジェクトであってその各々がシステムの構成要素の現存する在庫に関連づけされた１つ又は２つ以上のオブジェクトを含む3Dモデルを表示するグラフィカルユーザインタフェイスを提供し、前記１つ又は２つ以上のオブジェクトのうちの少なくとも１つの運動の特徴を示すネットワークパケットを受信し、及び該受信したネットワークパケットを用いて前記１つ又は２つ以上のオブジェクトの運動をシミュレートする、という各ステップを含む。
【００３１】
本方法は、リアルタイムフィードバックに基づいて運動データをモデルに適用するステップを含むことが可能である。運動のシミュレーションは、リアルタイムシミュレーションを含むことが可能である。クロックタイミングのためにリードタイムスタンプカウンタ（RDTSC）を使用することが可能である。本方法は、3Dモデルへオブジェクトを追加するためのドラッグアンドドロップ機能を提供するステップを含むことが可能である。ユーザインタフェイスは、運動のリアルタイム制御及び表示を含むことが可能である。シミュレーションは、3D逆運動学的解をモデルに適用するステップを含むことが可能である。本方法は、現存する在庫を自動的に発見するステップを含むことが可能である。本方法は、該モデルについて１つ又は２つ以上の逆運動学的運動を決定するステップを含むことが可能である。
【００３２】
別の態様では、本書で開示する逆運動学的（IK）教授は、物理的なシステムの電子化モデルについて逆運動学をシミュレートし、所定の出力で入力に応答するよう物理的なシステムの電子化モデルをトレーニングし、これによりトレーニング結果を提供し、及び該トレーニング結果を前記物理的なシステムの電子化モデルに基づいて物理的な装置に適用する、という各ステップを含む。
【００３３】
シミュレーションは、全ての逆運動学的オブジェクトの表現を含むシミュレーションの解を生成するステップを含むことが可能である。ユーザは、該シミュレーションの解において逆運動学的オブジェクトを制御することが可能である。ユーザは、ジョイスティック、マウス、キーボード、タッチパッド、及びスクロールボールのうちの１つ又は２つ以上を用いて逆運動学的オブジェクトを制御することが可能である。本方法は、物理的な構築の前に物理的なシステムの視覚化を提供するステップを含むことが可能である。本方法は、電子化モデル内の衝突検出を実行するステップを含むことが可能である。衝突を回避するように１つ又は２つ以上の逆運動学的パラメータを調節することが可能である。本方法は、対応する物理的な装置と共に用いるためのトレーニング結果のファイルを生成するステップを含むことが可能である。該ファイルは、逆運動学的運動に関するデータ、衝突回避に関するデータ、及び他の逆運動学的装置との相互作用に関するデータのうちの１つ又は２つ以上を含むことが可能である。該ファイルは、対応する物理的な装置についての手作業によるオブジェクトの教授に取って代わることが可能なものである。
【００３４】
別の態様では、本書で開示するファイルデコーディング方法は、少なくとも１つの逆運動学的装置に関するパケット記述ファイルを受信して格納し、該少なくとも１つの逆運動学的装置に関する運動パラメータ情報を有するネットワークパケットファイルストリームを受信し、前記少なくとも１つの逆運動学的装置について前記ネットワークパケットストリームを前記格納されたパケット記述ファイルと照合し、前記パケット記述ファイルを前記ネットワークパケットストリームに適用して前記少なくとも１つの逆運動学的装置のシミュレーションのための表示パラメータを取得し、該シミュレーションを表示する、という各ステップを含む。
【００３５】
別の態様では、本書で開示するコンピュータプログラム製品は、コンピュータ実行可能コードであって、１つ又は２つ以上のコンピュータ装置上で実行された際に、3Dコンピュータ自動設計モデルから設計を捕捉し、該設計を解析してその１つ又は２つ以上の運動部分を識別し、該１つ又は２つ以上の運動部分について１つ又は２つ以上の逆運動学的関係を決定し、該１つ又は２つ以上の逆運動学的関係を含む運動部分の特徴を格納する、という各ステップを実行する、コンピュータ実行可能コードを含むものである。
【００３６】
別の態様では、本書で開示するコンピュータプログラム製品は、コンピュータ実行可能コードであって、１つ又は２つ以上のコンピュータ装置上で実行された際に、コンピュータ自動設計を１つ又は２つ以上のオブジェクトを含むモデルへと変換し、その各オブジェクトが逆運動学的運動を含むものであり、該モデルの記述をネットワークを介して送信し、該記述を受信したクライアント装置において該モデルをシミュレートし、ネットワークを介して制御パケットを送信することにより該モデルの少なくとも１つのオブジェクトを運動させる、という各ステップを実行する、コンピュータ実行可能コードを含むものである。
【００３７】
別の態様では、本書で開示するシステムは、コンピュータ自動設計を１つ又は２つ以上のオブジェクトを含むモデルへと変換するよう構成され、及びその各オブジェクトが逆運動学的運動を含む、第１のコンピュータと、該第１のコンピュータと通信可能な関係で接続された第２のコンピュータであって、該第１のコンピュータから前記モデルの記述を受信して該モデルをシミュレートするよう構成された、第２のコンピュータとを含み、該第２のコンピュータが、前記第１のコンピュータから受信した制御パケットに応じて前記１つ又は２つ以上のオブジェクトのうちの少なくとも１つを運動させるものである。
【００３８】
別の態様では、本書で開示するコンピュータプログラム製品は、コンピュータ実行可能コードであって、１つ又は２つ以上のコンピュータ装置上で実行された際に、１つ又は２つ以上のオブジェクトであってその各々がシステムの構成要素の現存する在庫に関連づけされた１つ又は２つ以上のオブジェクトを含む3Dモデルを表示するグラフィカルユーザインタフェイスを提供し、前記１つ又は２つ以上のオブジェクトのうちの少なくとも１つの運動の特徴を示すネットワークパケットを受信し、及び該受信したネットワークパケットを用いて前記１つ又は２つ以上のオブジェクトの運動をシミュレートする、という各ステップを実行する、コンピュータ実行可能コードを含むものである。
【００３９】
別の態様では、本書で開示する装置は、１つ又は２つ以上のオブジェクトであってその各々がシステムの構成要素の現存する在庫に関連づけされた１つ又は２つ以上のオブジェクトを含む3Dモデルをユーザインタフェイス内に表示するよう構成されたコンピュータを含み、該コンピュータは更に、前記１つ又は２つ以上のオブジェクトのうちの少なくとも１つの運動の特徴を示すネットワークパケットを受信し、及び該運動を前記ユーザインタフェイス内でシミュレートするよう構成されている。
【００４０】
別の態様では、本書で開示するコンピュータプログラム製品は、コンピュータ実行可能コードであって、１つ又は２つ以上のコンピュータ装置上で実行された際に、物理的なシステムの電子化モデルに関する逆運動学をシミュレートし、所定の出力で入力に応答するよう前記物理的なシステムの電子化モデルをトレーニングし、これによりトレーニング結果を提供し、及び該トレーニング結果を前記物理的なシステムの電子化モデルに基づいて物理的な装置に適用する、という各ステップを実行する、コンピュータ実行可能コードを含むものである。
【００４１】
別の態様では、本書で開示する装置は、物理的なシステムの電子化モデルについて逆運動学をシミュレートするようプログラムされたコンピュータを含み、該電子モデルが入力に対して出力で応答するようトレーニングされ、これによりトレーニング結果が提供され、該トレーニング結果は、前記電子化モデルに基づいて物理的な装置と共に使用されるよう構成される。
【００４２】
別の態様では、本書で開示するコンピュータプログラム製品は、コンピュータ実行可能コードであって、１つ又は２つ以上のコンピュータ装置上で実行された際に、少なくとも１つの逆運動学的装置に関するパケット記述ファイルを受信して格納し、該少なくとも１つの逆運動学的装置に関する運動パラメータ情報を有するネットワークパケットファイルストリームを受信し、前記少なくとも１つの逆運動学的装置について前記ネットワークパケットストリームを前記格納されたパケット記述ファイルと照合し、前記パケット記述ファイルを前記ネットワークパケットストリームに適用して前記少なくとも１つの逆運動学的装置のシミュレーションのための表示パラメータを取得し、該シミュレーションを表示する、という各ステップを実行する、コンピュータ実行可能コードを含むものである。
【発明を実施するための最良の形態】
【００４３】
本発明は、図面を参照することにより理解されよう。
【００４４】
物理的な逆運動学的（IK）装置（例えば、ロボット装置、ロボット、ロボットアーム、関節アーム、多リンク装置）は、IK方程式により記述することができる運動を行うことができるあらゆる装置とすることが可能である。IK方程式は、装置の少なくとも１つの可動構成要素の配置を記述することができる座標系における数式である。IK方程式は、該可動構成要素の運動に基づいて該装置のエンドポイントの配置を予測するため、又は該エンドポイントの位置に基づいて前記可動構成要素の運動を予測するために、使用することが可能である。典型的な物理的なIK装置は、２つ以上の可動構成要素を有する可能性がある。例えば、２つの可動構成要素を有する物理的なIK装置は、該２つの可動構成要素が該構成要素のエンドポイントの結果的に得られる同一の運動を達成するためにほぼ無限数の個々の運動を有することが可能である、ということが理解されよう。３つ以上の可動構成要素又は不等長の可動構成要素を有する物理的なIK装置は、エンドポイントの位置決めの記述を一層複雑にするものとなる。物理的なIK装置は、材料を１つの場所から別の場所へ移動させるための単純な単一運動構成要素から、組み立てラインにおいて製品の保持及び組み立てを行うことが可能な複雑な多構成要素装置までを含み得るものである。
【００４５】
図１を参照すると、ロボットの典型的な一実施形態が示されている。ロボットは、過酷な環境での作業から単純なピックアンドプレース作業まで様々な目的で使用することが可能である。ロボットは、人間にとって有害となり得る作業を行うこと、又は物理的な装置によって行った方が良い退屈な作業を行うことが多い。ロボットは、人間が行っていた可能性のある作業を行うことが多いため、3D運動経路は、人間が用いていた可能性のある運動のタイプを反映したものとなることが多い。ロボットは、ユーザが制御手段100にアクセスして該ロボットが特定の経路で移動するよう命じることにより、正しい移動経路を「教授される」ことが多い。該制御手段100は、タスクとして反復することが可能な教授された経路をロボット装置に記録することが可能である。
【００４６】
ロボットの教授中に、ユーザは、固定されたオブジェクト、ワークピース、又は他のロボット装置との衝突の可能性を気にすることが多い。一領域で稼働するロボットが複数台存在する場合には、衝突又は干渉を回避すべくそれらの運動を互いに調整しなければならない。製造施設のレイアウトに関する責任を負う者は、ロボット装置がそれらの作業を正しく行うことが可能となるように施設の準備中にレイアウトの再配置を行う必要がある。
【００４７】
図１の典型的なロボットでは、ロボットは、制御手段100、基部102、アーム104,108,110、及びエンドエフェクタ112からなる１グループ全体と考えることが可能である。制御手段100は、様々なアーム104,108,110のモータを駆動するための電子機器を含むことが可能で亜rい、及び経路運動ファイルを記録するために必要なメモリを保持することが可能である。制御手段100は、アーム104,108,110及びエンドエフェクタ112の位置決めに資するような形状にすることが可能な基部102に接続することが可能である。該基部102は、アーム104,108,110の運動のための様々なモータのための場所を提供することが可能である。
【００４８】
ロボットは、部品又はツールの把持又は保持を行うことができるエンドエフェクタ112の適切な位置決めを可能にする複数のアーム104,108,110を有することが可能である。アーム104,108,110の数が増えると、該ロボットがその運動に関して一層高い自由度を有することが可能となる、ということが理解されよう。一実施形態では、１つのアーム104しか有さないロボットが、１つの場所から別の場所へオブジェクトを移動させるのに有用なものとなる。該１つのアーム104を昇降用モータと共に使用して、該アームを上下に移動させることも可能である。
【００４９】
第２のアーム108を追加すると、ロボットは、より遠くへ、おそらくはオブジェクトの周囲に、到達することが可能となる。第２のアーム108は、ロボットが、オブジェクトを１つの場所から別の場所へ移動させるだけでなく、１つの場所からオブジェクトを取り上げてそれを様々な距離だけ離れた別の場所へ移動させることも可能とする。
【００５０】
第３のアーム110を追加すると、ロボットは、オブジェクトの周囲、又はそれを越えた位置まで到達することが可能となる。組み合わせられたアーム104,108,110は、ロボットが、上方へ移動し、越えて移動し、及び下方へ移動してオブジェクトの反対側に到達することを可能にする。より多くのアームを追加するとロボットの能力が一層増すということが理解されよう。アームに加えて、ロボットは、垂直方向又は水平方向の運動を含むことも可能である。
【００５１】
アーム104,108,110の端部には、オブジェクトの移動又は把持を行うことができるエンドエフェクタ112が存在することが可能である。人間の手首のような更なる運動を行うことができる装置をエンドエフェクタ112が有していることは一般的なことであり、これによりワークピースに対するエンドエフェクタ112の最終的な細かい位置決めが可能となる。
【００５２】
アーム104,108,110及びエンドエフェクタ112の全ては互いに独立して動き、複雑な運動記述が生成されることになる。教授の制御を行う場合であっても、空間内の同じ位置に到達するための複数の進路で運動させるべき多くの部分が存在する。各アーム104,108,110が一意の揺動半径を有する場合には該アーム104,108,110は等しい長さのものでない可能性がある。一般に２〜５軸で動作する他の多くの機械と比べて、ロボットは、個々のアームを別個に運動させてエンドエフェクタを最終的な位置へ移動させることが可能である。共通の場所に到着させるための個々のアームの調整された運動は無数に存在するため、アームの運動の複雑な記述が結果的に生じることとなる。
【００５３】
逆運動学方程式は、一座標系における多アーム装置の運動を記述する。回動点に基づきロボットの各副部分を記述する一組の方程式を確立することが可能である。逆運動学方程式の変数に値を適用することにより、個々のアーム104,108,110を該アームにとって有利な増分で移動させることが可能である。このため、ロボットは、逆運動学的装置と称することが可能である。
【００５４】
図２は、本発明の原理による、既存の3Dコンピュータ支援設計モデルから3Dオブジェクトを捕捉する方法の高レベルフローチャートを示している。該3D設計モデルは、工業規格によるコンピュータ支援設計（CAD）アプリケーション（例えば、SolidWorks、Pro/ENGINEER、AutoCad、又は3Dモデル生成が可能な他のあらゆるCADアプリケーション）で生成されたものとすることが可能である。
【００５５】
CADアプリケーションの3Dオブジェクトは、逆運動学的オブジェクト、非運動固体オブジェクト、又はシミュレーションにおける制約事項を表現することができるシミュレーションアプリケーションに含めるために選択することが可能である（ステップ200）。CADアプリケーション、ディジタルコンテンツ生成ツール、又はファイルエクスポートツールを使用して、シミュレーションに含めるべき各3Dオブジェクトをエクスポートすることが可能である。
【００５６】
3Dオブジェクトは、標準的な.Xファイルへとエクスポートすることが可能である（ステップ204）。該.Xファイル形式は、シミュレーションクライアントで使用するためにテキストファイルとして3Dオブジェクトの記述を格納することが可能なものである。該.Xファイル形式は、3Dオブジェクトのあらゆる副部分を定義することができるパラメータ駆動型命名規則を有することが可能である。一実施形態では、ロボット装置の各アームは、その名前がつけられ、及び該名前に関連するパラメータであってクライアントアプリケーションに対して該ロボットアームを説明するパラメータを有する。該パラメータは、副部分にとって可能である運動のタイプを含むことが可能である（例えば、x、y、z、ヨー、又は他の適用可能な運動パラメータ）。パラメータ情報は、別個のパラメータファイルとして格納することが可能である。.Xファイル形式は、逆運動学的オブジェクトの運動を適切に記述しない可能性があり、それ故、逆運動学的オブジェクトは、運動の少なくとも１つの追加位置で3D設計モデルから捕捉する必要がある。次いで、２つの捕捉された.Xファイルとそれに関連するパラメータファイルを使用して運動に関する回動点を記述することが可能である。
【００５７】
3Dコンピュータ支援設計モデルを再検討して、オブジェクトが逆運動学を記述したオブジェクトであるか否かを判定することが可能である（ステップ202）。逆運動学的オブジェクトは、逆運動学方程式により記述される運動を行うことが可能なあらゆるオブジェクトとすることが可能である。逆運動学的オブジェクトは、シミュレーションクライアントへエクスポートする前に記録することが可能である。
【００５８】
CADの3Dオブジェクトから.Xファイルが生成されて（ステップ204）IKオブジェクトパラメータが定義されると（ステップ202）、それらを結合させて（ステップ208）IKオブジェクト記述ファイル210を生成することが可能である。.XファイルとIKオブジェクトパラメータとの結合（ステップ208）は、手作業で又はソフトウェアを用いて自動的に行うことが可能である。結果的に得られるIKオブジェクト記述ファイル210は、IKオブジェクトの個々の運動構成要素と、シミュレーションクライアントにおいてIKオブジェクトの運動を駆動することになるパラメータとについての、命名規則を含むことが可能である。例えば、IKオブジェクト記述ファイル210の一要素は、ロボットアームを記述するためのものとすることが可能である。該要素は、パラメータx,y,zを有する「アーム１」として記述することが可能である。該パラメータすなわちx,y,zは、運動軸であってそれに沿ってアーム１が運動することができる運動軸を記述することが可能である。IKオブジェクト記述ファイル210は、少なくとも１つの要素の記述を含むことが可能である。IKオブジェクト記述ファイル210全体は、IKオブジェクトの全ての運動構成要素の記述とそれに関連するパラメータを有することが可能である。次いでIKオブジェクト記述ファイルは、シミュレーションクライアントへ送信されて、シミュレーション中に実際のパラメータデータをデコードするために使用される。
【００５９】
図３を参照すると、本発明の原理による3Dモデルのエクスポート処理及びファイル改善処理の概要が符号300で示されている。3Dモデル302は、シミュレーションクライアントで使用するオブジェクトを完全に記述することができる工業規格によるCADアプリケーションから生成されたものとすることが可能である。シミュレーションで使用することになる各3Dオブジェクトは、CADエクスポートユーティリティ、ディジタルコンテンツ生成ツール、又はファイルエクスポートツール304を使用してエクスポートすることが可能である。これらのツールは、シミュレーションアプリケーションで使用される各オブジェクト毎に個々の.Xファイル308を生成するために使用することが可能である。.Xファイル形式は、一般にオブジェクトの運動データを格納できるものではなく、それ故、運動を記述するためにより多くの情報が必要となる可能性がある。シミュレーションアプリケーションにおける運動可能な3Dオブジェクトは、オブジェクトの運動を記述することができる少なくとも１つの追加のパラメータファイルを必要とする可能性がある。次いで、２つのパラメータファイルを使用してオブジェクトの回動点ひいてはオブジェクトの運動を定義することが可能となる。
【００６０】
データ抽出ユーティリティ310は、オブジェクトの3Dメッシュを表す必要なポリゴンデータのみを抽出するために使用することが可能である。3D設計モデルの元の分解能は、ポリゴンデータの抽出時に維持することが可能である。これにより、シミュレーションクライアントが複数のオブジェクトを同じスケールで表現することが可能となる。IKオブジェクト装置のシミュレーションの開発では、全てのオブジェクトを実際のIK装置とシミュレーションで使用される他のIKオブジェクト装置とに正しくスケーリングすることが非常に重要である。IKオブジェクト装置の正しいスケーリングは、シミュレーション結果が施設の物理的な構成に相関したものとなることを可能にする。
【００６１】
.Xファイルは、オブジェクトの3Dメッシュを表すポリゴンの数を最小限にするためにポリゴン最適化312を必要とする可能性がある。シミュレーションアプリケーションでは、速度及び運動の流動性は、各運動と共に再描画する必要があるポリゴンの数の関数となる。オブジェクトのメッシュを定義するために使用することができるポリゴンが少ないほど、シミュレーションアプリケーションは運動をより速く再描画することが可能となる。ポリゴン最適化ユーティリティ312は、ポリゴンデシメーションを使用してオブジェクトメッシュ内のポリゴンの数を最適化することが可能である。このプロセスは、多数の小さなメッシュポリゴンを組み合わせて、それよりも少数のより大きなポリゴンであって3Dオブジェクトの正確な表現を依然として提供することができるポリゴンにすることが可能である。属性／索引の再順序づけを使用してシミュレータの再描画及びリフレッシュ処理の速度を高めることも可能である。属性／索引の再順序づけは、シミュレーションクライアントにより表示されるポリゴンの順序についてオブジェクトファイルを最適化することが可能である。例えば、シミュレーションクライアントは、より大きなポリゴンを最初にレンダリングしてIKオブジェクトのより大きな部分を表現し、次いでより小さなポリゴンを充填すること、又はより小さなポリゴンを最初にレンダリングし、次いでIKオブジェクトのより大きなポリゴンをレンダリングすることが可能である。属性／索引の再順序づけは、IKオブジェクトのレンダリングに使用されるシミュレーションクライアントの関数となる。
【００６２】
.Xファイルの3Dメッシュを更に最適化するために、凸包生成ユーティリティ314を使用することが可能である。凸包生成314は、ポリゴン形状の最小数のシェルを定義するポイントの数を生成するプロセスである。予めポリゴンの最適化が行われたファイルについて凸包生成を実行することにより、3Dオブジェクトのメッシュスキンを正確に定義する最小3D形状を生成することが可能である。凸包生成314の第２のステップは、オブジェクトの全ての内部のモデルの細部を除去して3Dオブジェクトの外部スキンのみを残すこととすることが可能である。IKオブジェクトのシミュレーションでは、IKオブジェクトの外部メッシュ以外に更なるオブジェクト定義を有する必要がない場合がある。それ故、全ての内部のオブジェクト定義を最終的なファイル定義から棄却することが可能である。凸包生成は、手作業で又はソフトウェアを用いて自動的に完遂することが可能である。
【００６３】
この方法を用いると、シミュレーションで用いる各オブジェクトが抽出されて最適化される。各オブジェクトの.Xファイルは更に、シミュレーションクライアントを駆動するためにネットワークを介して送信されることになるファイル形式へと変換することが可能である。
【００６４】
図４を参照すると、本発明の原理によるパケット記述ファイル及びネットワークパケットの生成のフローチャートが示されている。シミュレーションにおけるオブジェクトについて.Xファイルが生成されると、オブジェクト属性を含むファイルパケットストリームをネットワークを介して送信することが可能となる。シミュレーションクライアントは、ネットワーク上の異なる場所に存在することが可能であり、及びシミュレーションのためにネットワークを介してオブジェクト情報を受信することが可能である。
【００６５】
シミュレーションクライアントへ情報を送信するために、.Xファイルをリファインしてパケット記述にすることが可能である。一実施形態では、ロボットオブジェクトの.Xファイルは、リンク、アーム、及びエンドエフェクタといった副部分の各々毎にパケット記述400として利用することができる属性を有することが可能である。パケット記述400は、オブジェクトの副部分を記述する同じ命名形式を用いることにより.Xファイルから生成することが可能である。オブジェクトの副部分と生成されるパケット記述400との間には一対一の関係が存在する可能性があり、それ故、オブジェクトの各副部分毎にパケット記述400が存在する可能性がある。パケット記述400は、副部分の特徴を記述したパラメータ駆動型のテキストベースファイルとすることが可能である。該副部分は、運動又は並進運動に伴う逆運動学的オブジェクトの一部とすることが可能である。パケット記述400は、ヨー、x、y、z、又はその他の適用可能な座標パラメータといった副部分の運動能力を記述することが可能である。パケット記述400は、ソフトウェアにより自動的に生成することが可能であり、又はユーザにより手作業で生成することが可能である。
【００６６】
オブジェクトの副部分についてパケット記述400が生成されると、該パケット記述400を解釈することができるシミュレーションクライアントへ該パケット記述400を送信することができる。該シミュレーションクライアントは、該パケット記述400を、該シミュレーションクライアントへ送ることが可能な運動データ及びその他の属性に関するデコーディングファイルとして使用することが可能である。
【００６７】
ネットワークパケット402は、パケット記述400と同じ命名規則を使用したオブジェクトの副部分に関する運動データを含むことが可能である。ネットワークパケット402は、ユーザからのリアルタイム入力に基づいて各副部分毎に自動的に生成することが可能である。運動は、入力装置（例えば、ジョイスティック、マウス、キーボード、タッチパッド、又はその他の任意の入力装置）により影響を与えることが可能である。一実施形態では、ネットワークパケットファイル402は、各副部分毎に運動データを含むことが可能であり、及び運動パラメータ（例えば、ヨー、x、y、z、又はその他の適用可能な座標パラメータ）に関してシミュレーションクライアントによりデコードすることが可能である。
【００６８】
ネットワークパケットデータ402は、標準的な通信プロトコル（例えば、UDP/IP、TCP/IP、.NETリモーティング、又は他の任意のネットワークプロトコル）を使用してシミュレーションクライアント404へ送信することが可能である。リアルタイム3D制御及び表示シミュレーションクライアント404は、該ネットワークパケットデータ402を受信することが可能である。3Dクライアント404は、以前に受信したパケット記述ファイル400に従って該ネットワークパケットデータ402をデコードすることが可能である。物理エンジンは、該ネットワークパケットデータ402を生成することが可能である。物理エンジンは、入力装置を介したユーザ入力により影響を与えることが可能である。物理エンジンは、IKオブジェクトの運動能力の範囲内にあるネットワークパケットデータのみを生成することが可能である。物理エンジンは、ユーザがIKオブジェクト装置を該IKオブジェクトの運動限界を超えて配置するのを防止することが可能である。このようにして、シミュレーションクライアントは、IKオブジェクト装置の能力内にある運動のみを表示すること、及び物理的なIKオブジェクト装置に対する正しい関連づけを可能にすることができる。
【００６９】
ネットワークパケット402は、パケット記述400を使用して3Dクライアントによりデコードすることが可能である（ステップ408）。デコードされたネットワークパケット402は、3Dクライアント404に対して各逆運動学的オブジェクトの運動を記述することが可能なものである。各運動学的オブジェクトの運動を定義するためにリアルタイムクロックを使用してネットワークパケット402をネットワークを介して絶えず送信することが可能である。シミュレーションクライアント404へ送信された各ネットワークパケット402毎に、副部分の運動を定義して表示することが可能である。
【００７０】
3Dクライアント404は、ネットワークパケットデータ402及びパケット記述ファイル400を使用して各オブジェクトの運動410を解釈することが可能である。解釈されたオブジェクトの運動は、グラフィックユーザインタフェイス（GUI）上に表示することが可能である。
【００７１】
図５を参照すると、本発明の原理による、3Dクライアント508に対するパケット記述ファイル300とネットワークパケットストリーム502の結合の概要が示されている。パケット記述ファイル300は、図３に示したように生成することが可能であり、標準的なネットワークプロトコルを使用して3Dクライアント508へ送信することが可能である。3Dクライアント508は、ネットワークを介して送信される運動データをデコードするためにパケット記述ファイル300を使用することが可能である。
【００７２】
ネットワークパケットストリーム502は、図４に示すように自動的に生成することが可能であり、及び3Dクライアント508へ送信することが可能である。ネットワークパケットストリーム502が生成されると、それをリアルタイムクロックを使用してネットワーク上へ送信することが可能となる。リードタイムスタンプカウンタ（RDTSC）又は等価クロック504を使用して、3Dクライアント508へのネットワークパケットストリーム502の送信のタイミングを管理することが可能である。リアルタイムクロック504を使用すると、3Dクライアント508へのタイミング分解能をコンピュータ環境のハードウェア及びソフトウェア能力により決定することが可能となる。
【００７３】
3Dクライアント508は、副部分の運動データを含むネットワークパケットストリーム502を副部分の運動記述を含むパケット記述ファイル300と結合させることが可能である。パケット記述ファイル300は、3Dクライアント508に対して副部分の表示パラメータを定義することが可能である。3Dクライアント508は、副オブジェクトの表示パラメータを修正するために、ネットワークパケットストリーム502のデータをパケット記述ファイル300のパラメータに適用することが可能である。結果として得られる修正されたパラメータは、副部分の運動として3Dクライアント508のGUI上に表示することが可能である。副部分の結合されシミュレートされた運動は、オブジェクト全体のシミュレーションを提供することが可能である。
【００７４】
図６を参照すると、既述のように3D設計モデルを3Dクライアントへ変換する方法の全体的な概要が示されている。3D設計モデル600は、SolidWorks、Pro/ENGINEER、AutoCad、又はモデル生成を行うことができる他のあらゆるCADアプリケーションといった工業規格によるCADアプリケーションを使用して生成することが可能である。
【００７５】
.Xファイル形式602は、CADエクスポートユーティリティ、ディジタルコンテンツ生成ツール、又はその他のエクスポートツールにより、3D設計モデル600から生成することが可能である。該,Xファイル602は、モデルの表面を記述するメッシュを単純化させるよう最適化することが可能である。該最適化は、ポリゴンデシメーション等の方法を使用して、オブジェクトのメッシュを記述するポリゴンの数を最小限にすることが可能である。属性／索引順序づけを使用して、3Dクライアント614の表示速度を向上させることも可能である。オブジェクトの表面メッシュを定義するポリゴンの数を更に削減することが可能な凸包生成を使用して更なるポリゴンの最適化を実行することが可能である。最終的な最適化が完了した後、.Xファイルモデル602は、除去された表面メッシュではなく、シミュレートすべきオブジェクトの外部表面のみを残した、全ての細部を有することが可能である。
【００７６】
.Xファイル602が最適化されると、シミュレーションで運動を表示するオブジェクトの各副部分毎にパケット記述ファイル604を生成することが可能である。一実施形態では、ロボットオブジェクトは、リンク、アーム、及びエンドエフェクタといった複数の副部分からなることが可能である。パケット記述ファイル604は、オブジェクトの副部分の定義のために.Xファイル602と同じ命名規則を使用することが可能である。パケット記述ファイル604は、オブジェクトのあらゆる副部分と、副オブジェクトが行うことができる運動のタイプ（例えば、ヨー、x、y、z、又は他の次元パラメータ）とを記述するパラメータ駆動型テキストファイルとすることが可能であり、
パケット記述ファイル604は、パケット記述ファイル604をオブジェクト及び副オブジェクトのシミュレーション表示へと変換することができる3Dクライアントアプリケーション608へ送信することが可能である。パケット記述ファイル604は、標準的なネットワークプロトコル（例えば、UDP/IP、TCP/IP、.NETリモーティング、又はその他の任意のネットワークプロトコル）を使用してネットワークを介して送信することが可能である。
【００７７】
ネットワークパケット610は、パケット記述ファイル604と同じ命名規則を使用して自動的に生成することが可能である。ネットワークパケット610は、定義されたパケット記述ファイル604を有する各副部分の運動を記述するデータを含むことが可能である。ネットワークパケットは、標準的なネットワークプロトコル（例えば、UDP/IP、TCP/IP、.NETリモーティング、又はその他の任意のネットワークプロトコル）を使用してネットワークを介して送信することが可能である。各副部分毎に生成されたネットワークパケット604が存在することが可能であり、該ネットワークパケット604はRDTSC又は等価クロック612に基づいて送信することが可能である。
【００７８】
クロック612に基づいて、ネットワークパケットは、オブジェクトのシミュレーションのために3Dクライアント614へ送信することが可能である。該3Dクライアント614は、以前に受信し格納されたパケット記述604を使用して、副部分の運動データを提供するネットワークパケット610をデコードすることが可能である。3Dクライアント614のGUIを使用して表示されたオブジェクトは、ネットワークパケット610のデータにより定義された通りに修正することが可能である。3Dクライアント614は、ネットワークパケット610のデータを使用してパケット記述ファイル604のパラメータを修正することが可能であり、それ故、運動をシミュレーションとして表示することが可能である。
【００７９】
図７を参照すると、本発明の原理による、オブジェクトのシミュレーション、シミュレーションの修正、及び物理装置に関する逆運動学的ファイルの出力を示すフローチャートが示されている。3Dクライアント614は、逆運動学的オブジェクト700のシミュレーションのために提供することが可能である。3Dクライアント614は、シミュレーションオブジェクトの定義のためにパケット記述ファイル604にアクセスすることが可能である。3Dクライアント614はまた、シミュレートされた運動を提供すべくシミュレーションオブジェクトの定義を修正するためにネットワークパケットを使用することが可能である。
【００８０】
オブジェクトは、格納されたパケット記述614ファイルとすることが可能な利用可能なオブジェクトを選択することにより、3Dクライアント614のGUI上に配置することが可能である。オブジェクトは、3Dクライアント614のGUI上の任意の位置にドラッグアンドドロップし又は次元配置することが可能である。複数のオブジェクトの表示のために複数のオブジェクトを3Dクライアント614のGUI上に配置することが可能である。一実施形態では、複数のオブジェクトは、ロボット装置が移動し又は材料若しくは製品について作業を提供することが可能な製造工場を表すことが可能である。
【００８１】
シミュレーションの一部として、シミュレーション可能なオブジェクトのライブラリをシミュレーションで使用するために利用することが可能である。これらのライブラリは、シミュレーションの他のオブジェクトと相互作用するよう該シミュレーション内にドラッグアンドドロップし又は次元配置することも可能である。一実施形態では、オブジェクトのライブラリは、工業規格による装置、又はシミュレートしている施設内で利用することができる装置を表すことが可能である。
【００８２】
図６に関して上述したように、ネットワークパケット610を3Dクライアント614へ送信することが可能であり、シミュレーションのオブジェクトはオブジェクトの運動を表示することが可能である。一実施形態では、オブジェクトは、製造工場のプロセスをシミュレートした運動を行うことが可能である。3Dクライアント614は、シミュレーションの複数のオブジェクト間の衝突702を検出することが可能である。3Dクライアント614は、シミュレーションにおける各オブジェクトにわたる制御を提供して、該オブジェクトの運動を制御することが可能である。ジョイスティック、マウス、キーボード、タッチパッド、又はその他の入力装置を使用してオブジェクトの運動を制御することが可能である。該入力装置を使用してシミュレーションにおける各オブジェクトの運動を修正することが可能である。シミュレーションにおける様々なオブジェクトの運動は、衝突を回避するように、又はシミュレートされるオブジェクトの所望の経路を提供するように、修正することが可能である。一実施形態では、オブジェクトの運動の修正を使用して、シミュレートされるロボットにその必要とされる運動を教えることが可能である。
【００８３】
シミュレーション700及び衝突702のシーケンス中に、衝突を回避するように又は一層良好なタスクを実行するようにオブジェクトを修正（ステップ704）しなければならないことを判定することが可能である。3Dクライアント614は、オブジェクト704を定義するパラメータのオンザフライでの修正を可能とすることができる。ユーザは、シミュレーションにおけるオブジェクトを修正のために選択して、一組のパラメータを修正することが可能である。修正することができるパラメータには、アームの長さ、モータの速度、エンコーダの分解能、エンドエフェクタのタイプ、加速度、ｚ速度、又は他の任意のスケーリングファクタが含まれる。オブジェクトのパラメータに対する各修正704毎に、シミュレーション700を再実行してオブジェクトの運動702を再検討することが可能である。この反復法は、必要とされるタスクを実行するシミュレーションが提供されるまで反復することが可能である。
【００８４】
シミュレーションが所望のタスクを実行していると、シミュレーションアプリケーションは、該シミュレーションで表される物理装置710に関する運動プロファイルデータファイル708を生成することができる。シミュレーションの運動プロファイルデータファイル708は、タスクを実行するために物理装置710に必要とされる運動の全てを定義することが可能である。一実施形態では、シミュレーションアプリケーションは、ロボットコントローラ100により使用することができる形式で該ファイルを生成することが可能である。シミュレーションで表される複数の物理装置710の全てについて運動プロファイルデータファイル708を生成することが可能である。運動プロファイルデータファイル708は、テープ、フロッピーディスク、CD、DVD、メモリスティック、又はコントローラ100により使用されるその他の記憶媒体といった、コントローラ100に適合する媒体に出力することが可能である。
【００８５】
シミュレーションからの運動ファイル708の生成、及び該運動ファイル708の物理装置710への適用により、物理装置710にプログラムを教える必要性をなくすことが可能である。この方法を用いると、ロボットの配設後にそれに教えなければならない場合よりも速く、ロボットラインを配設し動作させることが可能となる。このシミュレーション法は、ロボットの配設に先立ってその設備の検査を行い及びファイルを生成することを可能とし、それ故、配設コストを最小限にすることが可能となる。
【００８６】
シミュレーションの解は、それが生成されると、シミュレーションオブジェクトにより記述される装置の利用可能性を判定すべく物理的な在庫に関連づけすることが可能である。該関連づけは、自動的な発見を用いて物理的な在庫における装置に対してパラメータの照合を行うことが可能であり、該解における各逆運動学的オブジェクトが、在庫中から利用することができ又は購入することができる実際の装置に対して照合される。この自動的な発見を用いた照合は、既存の工業規格による装置のデータベースを使用して、装置が利用可能であるか否かを判定することが可能である。
【００８７】
図８を参照すると、本発明の原理によるシミュレーションアプリケーションのアーキテクチャの高レベルの概要図が示されている。該シミュレーションアプリケーションのアーキテクチャは、GUI800、3Dクライアントアプリケーション802、入力装置814、ロジックコントローラ804、データ記憶装置818、シミュレータ808、及びリアルタイムコントローラ810から構成することが可能である。
【００８８】
該ロジックコントローラ804は、ネットワークパケット610を受信すること、及び格納されているパケット記述ファイル604に運動データを適用することが可能である。該パケット記述ファイル604は、予め受信して記憶装置818に格納しておくことが可能である。該記憶装置818はまた、少なくとも１つの予め定義された逆運動学的オブジェクトをライブラリとして格納することが可能である。該ライブラリは、既述のように所定のオブジェクトをシミュレーション内に配置するために使用することが可能である。データは、XMLファイル、テーブル、リレーショナルデータベース、テキストファイル、又はデータを格納することができる他の任意のファイルとして、記憶装置818内に格納することが可能である。
【００８９】
ロジックコントローラ804は、シミュレートされるオブジェクトの運動を定義する逆運動学関数について物理エンジン808と情報をやり取りすることが可能である。物理エンジン808は、ロジックコントローラ804のために、逆運動学的オブジェクトの各副部分毎に逆運動学方程式を解くことが可能である。物理エンジン808は、方程式を解くためのタイミングをリアルタイムコントローラ810から受信することが可能であり、これにより、ロジックコントローラ804へ提供される方程式の解のタイミングが制御される。リアルタイムコントローラ810は、RDTSC又は等価クロックを使用して、コンピュータ環境のハードウェア及びソフトウェア能力によって決まるタイミング分解能を物理エンジン808へ提供することが可能である。ロジックコントローラ804は、同時にシミュレートされる複数のオブジェクトについてのシミュレーション計算を提供することが可能である。
【００９０】
ロジックコントローラ804が、データ記憶装置818、物理エンジン808、及びリアルタイムコントローラ810と連携してオブジェクトについてのシミュレーションインスタンスを生成すると、該ロジックコントローラ804は、3Dクライアントアプリケーション802へ情報を提供することが可能である。ロジックコントローラは、標準的なプロトコル（例えば、UDP/IP、TCP/IP、.NETリモーティング、又はその他の任意のプロトコル）を使用して3Dクライアントアプリケーション802へデータ812を送信することが可能である。
【００９１】
3Dクライアントアプリケーション802は、ロジックコントローラ804により提供される運動データの3D表現の生成に関する責務を負うことが可能である。3Dクライアントアプリケーション802は、GUI800のための3D運動データを生成するための3Dグラフィックエンジンを有することが可能である。該3Dクライアントアプリケーション802はまた、入力装置（例えば、ジョイスティック、マウス、キーボード、タッチパッド、又は他の任意の入力装置）からの入力を受信することができる運動コントローラを有することが可能である。ユーザは、入力装置814を使用して制御すべきオブジェクトを選択し、及び運動制御を提供することにより、シミュレートされるオブジェクトの運動を制御することが可能である。
【００９２】
3Dクライアントアプリケーション802のグラフィックエンジンは、シミュレーションのグラフィック情報をGUI800の3Dグラフィックウィンドウ820へ送信することが可能である。該3Dグラフィックウィンドウ820は、複数のオブジェクトの完全なシミュレーションのビューを提供することが可能である。該GUI800は、シミュレーションにおけるオブジェクト及び副部分を修正するための対話的な能力をユーザに提供することが可能である。
【００９３】
特定の好適な実施形態に関して本発明を説明してきたが、他の実施形態は当業者に理解されることになるものであることが理解されよう。
【図面の簡単な説明】
【００９４】
【図１】典型的なロボットを示している。
【図２】本発明の原理による.Xファイルの生成の高レベルフローチャートを示している。
【図３】本発明の原理による.Xフィル生成ロジックの概要を一層詳細に示している。
【図４】本発明の原理によるパケット記述ファイル及びネットワークパケットファイルの生成及び送信の高レベルフローチャートを示している。
【図５】本発明の原理によるパケット記述ファイル及びネットワークパケットファイルの送信の概略図を示している。
【図６】本発明の原理による必要なファイルの生成及び該ファイルのクライアントアプリケーションへの送信を示す高レベルの概略図である。
【図７】本発明の原理によるシミュレーション最適化及びファイル送信プロセスを示す高レベルフローチャートを示している。
【図８】本発明の原理によるアーキテクチャシミュレーションアプリケーションの高レベル概略図を示している。
【図１】
2008544341.tif 000003
【図２】
2008544341.tif 000004
【図３】
2008544341.tif 000005
【図４】
2008544341.tif 000006
【図５】
2008544341.tif 000007
【図６】
2008544341.tif 000008
【図７】
2008544341.tif 000009
【図８】
2008544341.tif 000010
【手続補正書】
【提出日】平成20年1月8日(2008.1.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１つまたは２つ以上の運動部分を有する装置の３次元（3D）モデルの開発のためのコンピュータにより実施される方法であって、
3Dコンピュータ自動設計モデルから設計を捕捉し、
該設計を解析してその１つまたは２つ以上の運動部分を識別し、
該１つまたは２つ以上の運動部分について１つまたは２つ以上の逆運動学的関係を決定し、
該１つまたは２つ以上の逆運動学的関係を含む前記運動部分の特徴を格納する、
という各ステップを含む、１つまたは２つ以上の運動部分を有する装置の3Dモデルの開発のためのコンピュータにより実施される方法。
【請求項２】
前記3Dコンピュータ自動設計モデルがモデリングプログラムから提供される、請求項１に記載の方法。
【請求項３】
前記モデリングプログラムが、SolidWorks、Pro/ENGINEER、及びAutoCadのうちの１つ又は２つ以上を含む、請求項２に記載の方法。
【請求項４】
3Dコンピュータ自動設計モデルから.Xファイル形式のファイルを生成するステップを更に含む、請求項１に記載の方法。
【請求項５】
前記ファイルが、3Dオブジェクトを複数の階層レベルで記述するテキストを含む、請求項４に記載の方法。
【請求項６】
前記ファイルが、CADのエクスポート、ディジタルコンテンツコンバータ、ファイルエクスポート／変換ツール、及び3Dメッシュデータ抽出ユーティリティのうちの１つ又は２つ以上により生成される、請求項５に記載の方法。
【請求項７】
前記.Xファイルが、シミュレートすべき3Dコンピュータ自動設計モデルにおける複数のオブジェクトの各々毎に生成される、請求項４に記載の方法。
【請求項８】
前記3Dコンピュータ自動設計モデルが、１つ又は２つ以上の運動部分を含む、請求項１に記載の方法。
【請求項９】
前記１つ又は２つ以上の運動部分の１つ又は２つ以上の回動場所を決定するステップを更に含む、請求項８に記載の方法。
【請求項１０】
前記3Dコンピュータ自動設計モデルの２つ又は３つ以上の運動部分の間の少なくとも１つの関係を決定するステップを更に含む、請求項１に記載の方法。
【請求項１１】
前記２つ又は３つ以上の運動部分について少なくとも１つの逆運動学的関係を決定するステップを更に含む、請求項１０に記載の方法。
【請求項１２】
前記２つ又は３つ以上の運動部分のうちの少なくとも１つの一端の運動を決定するステップを更に含む、請求項１０に記載の方法。
【請求項１３】
前記運動部分のうちの少なくとも１つについて部分運動データが決定される、請求項１に記載の方法。
【請求項１４】
前記部分運動データを記述する.Xファイルが前記運動部分の各々毎に少なくとも１つ生成される、請求項１３に記載の方法。
【請求項１５】
１つまたは２つ以上の運動部分を有する装置のシミュレーションのためのコンピュータにより実施される方法であって、
コンピュータ自動設計を１つ又は２つ以上のオブジェクトを含むモデルへと変換し、その各オブジェクトが逆運動学的運動を含むものであり、
前記モデルの記述をネットワークを介して送信し、
該記述を受信するクライアント装置において該モデルをシミュレートし、
前記ネットワークを介して制御パケットを送信することにより前記モデルの少なくとも１つのオブジェクトを運動させる、
という各ステップを含む、１つまたは２つ以上の運動部分を有する装置のシミュレーションのためのコンピュータにより実施される方法。
【請求項１６】
.Xファイルからポリゴンデータを抽出し、及びコンピュータ自動設計モデルの分解能を維持する3Dメッシュを生成する、という各ステップを更に含む、請求項１５に記載の方法。
【請求項１７】
前記.Xファイルにポリゴンスキンが付与される、請求項１６に記載の方法。
【請求項１８】
前記ポリゴンスキンを除いた全ての3Dモデル情報が除去される、請求項１７に記載の方法。
【請求項１９】
前記コンピュータ自動設計モデルから所定のファイル形式を有するファイルが生成される、請求項１５に記載の方法。
【請求項２０】
前記ファイルが、パケットストリームを生成するパケット記述ファイルである、請求項１９に記載の方法。
【請求項２１】
前記パケットストリームが、コンピュータネットワークを介して3Dシミュレーションクライアントアプリケーションへ送信される、請求項２０に記載の方法。
【請求項２２】
前記パケット記述ファイルが各オブジェクト毎に生成される、請求項１９に記載の方法。
【請求項２３】
前記オブジェクトのうちの１つ又は２つ以上が複数のサブオブジェクトを有しており、その各サブオブジェクト毎にパケット記述ファイルを生成するステップを含む、請求項１９に記載の方法。
【請求項２４】
前記複数のサブオブジェクトのうちの１つが、オブジェクトのうち運動に関係する部分であり、該運動が部分的な運動又は並進運動であり、及び該運動が、ヨー、x運動、y運動、及びz運動のうちの１つ又は２つ以上を含む、請求項２３に記載の方法。
【請求項２５】
前記モデルのシミュレーションが、各オブジェクト毎にネットワークパケットを受信するステップを含む、請求項１５に記載の方法。
【請求項２６】
物理的なエンジンを用いてネットワークパケットを生成するステップを更に含む、請求項２５に記載の方法。
【請求項２７】
前記ネットワークパケットが、パケット記述ファイルにおける全パラメータについての情報を提供する、請求項２６に記載の方法。
【請求項２８】
前記パラメータが、ヨーに関するデータ、xに関するデータ、yに関するデータ、及びzに関するデータのうちの１つ又は２つ以上を含む、請求項２７に記載の方法。
【請求項２９】
前記記述の送信ステップが、前記クライアント装置上のクライアントアプリケーションへパケット記述ファイルを送信するステップを含む、請求項１５に記載の方法。
【請求項３０】
前記パケット記述ファイルが、実行時間中に送信されたネットワークパケットを解釈するために使用される、請求項２９に記載の方法。
【請求項３１】
前記クライアントアプリケーションが、リアルタイムでの3D制御及び表示を提供する、請求項２９に記載の方法。
【請求項３２】
前記モデルの運動を定義するために複数のネットワークパケットがネットワークを介して前記クライアントアプリケーションへ絶えず送信される、請求項３１に記載の方法。
【請求項３３】
１つまたは２つ以上の運動部分を有する装置のシミュレーションのためのコンピュータにより実施される方法であって、
１つ又は２つ以上のオブジェクトであってその各々がシステムの構成要素の現存する在庫に関連づけされた１つ又は２つ以上のオブジェクトを含む3Dモデルを表示するグラフィカルユーザインタフェイスを提供し、
前記１つ又は２つ以上のオブジェクトのうちの少なくとも１つの運動の特徴を示すネットワークパケットを受信し、
該受信したネットワークパケットを用いて前記１つ又は２つ以上のオブジェクトの運動をシミュレートする、
という各ステップを含む、１つまたは２つ以上の運動部分を有する装置のシミュレーションのためのコンピュータにより実施される方法。
【請求項３４】
リアルタイムフィードバックに基づいて前記モデルに運動データを適用するステップを更に含む、請求項３３に記載の方法。
【請求項３５】
運動のシミュレーションがリアルタイムシミュレーションを含む、請求項３３に記載の方法。
【請求項３６】
クロックタイミングのためにリードタイムスタンプカウンタ（RDTSC）が使用される、請求項３５に記載の方法。
【請求項３７】
前記3Dモデルへオブジェクトを追加するためのドラッグアンドドロップ機能を提供するステップを更に含む、請求項３３に記載の方法。
【請求項３８】
前記ユーザインタフェイスが、運動のリアルタイム制御及び表示を含む、請求項３３に記載の方法。
【請求項３９】
シミュレーションが、3D逆運動学的解をモデルに適用するステップを含む、請求項３３に記載の方法。
【請求項４０】
現存する在庫を自動的に発見するステップを更に含む、請求項３３に記載の方法。
【請求項４１】
前記モデルについて１つ又は２つ以上の逆運動学的運動を決定するステップを更に含む、請求項３３に記載の方法。
【請求項４２】
１つまたは２つ以上の運動部分を有するロボット装置のシミュレーションベースの教授のためのコンピュータにより実施される方法であって、
物理的なシステムの電子化モデルについて逆運動学をシミュレートし、
所定の出力で入力に応答するよう前記物理的なシステムの前記電子化モデルをトレーニングし、これによりトレーニング結果を提供し、
該トレーニング結果を前記物理的なシステムの前記電子化モデルに基づいてロボット装置に適用する、
という各ステップを含む、１つまたは２つ以上の運動部分を有するロボット装置のシミュレーションベースの教授のためのコンピュータにより実施される方法。
【請求項４３】
シミュレーションが、全ての逆運動学的オブジェクトの表現を含むシミュレーションの解を生成するステップを含む、請求項４２に記載の方法。
【請求項４４】
前記シミュレーションの解における逆運動学的オブジェクトがユーザにより制御される、請求項４３に記載の方法。
【請求項４５】
ジョイスティック、マウス、キーボード、タッチパッド、及びスクロールボールのうちの１つ又は２つ以上を用いて逆運動学的オブジェクトがユーザにより制御される、請求項４４に記載の方法。
【請求項４６】
物理的な構築の前に物理的なシステムの視覚化を提供するステップを更に含む、請求項４２に記載の方法。
【請求項４７】
前記電子化モデル内の衝突検出を実行するステップを更に含む、請求項４２に記載の方法。
【請求項４８】
衝突を回避するように１つ又は２つ以上の逆運動学的パラメータが調節される、請求項４７に記載の方法。
【請求項４９】
対応する物理的な装置と共に用いるためのトレーニング結果のファイルを生成するステップを更に含む、請求項４２に記載の方法。
【請求項５０】
前記ファイルが、逆運動学的運動に関するデータ、衝突回避に関するデータ、及び他の逆運動学的装置との相互作用に関するデータのうちの１つ又は２つ以上を含む、請求項４９に記載の方法。
【請求項５１】
前記ファイルが、対応する物理的な装置についての手作業によるオブジェクトの教授に取って代わる、請求項４９に記載の方法。
【請求項５２】
１つまたは２つ以上の運動部分を有する装置のシミュレーションのためのコンピュータにより実施される方法であって、
少なくとも１つの逆運動学的装置に関するパケット記述ファイルを受信して格納し、
該少なくとも１つの逆運動学的装置に関する運動パラメータ情報を有するネットワークパケットファイルストリームを受信し、
前記少なくとも１つの逆運動学的装置について前記ネットワークパケットストリームを前記格納されたパケット記述ファイルと照合し、
前記パケット記述ファイルを前記ネットワークパケットストリームに適用して前記少なくとも１つの逆運動学的装置のシミュレーションのための表示パラメータを取得し、
該シミュレーションを表示する、
という各ステップを含む、１つまたは２つ以上の運動部分を有する装置のシミュレーションのためのコンピュータにより実施される方法。
【国際調査報告】
2008544341.tif 000011