IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オートデスク,インコーポレイテッドの特許一覧

特許7257476生成されたロボットシミュレーションに基づくロボット制御のための技術
<>
  • 特許-生成されたロボットシミュレーションに基づくロボット制御のための技術 図1
  • 特許-生成されたロボットシミュレーションに基づくロボット制御のための技術 図2
  • 特許-生成されたロボットシミュレーションに基づくロボット制御のための技術 図3
  • 特許-生成されたロボットシミュレーションに基づくロボット制御のための技術 図4
  • 特許-生成されたロボットシミュレーションに基づくロボット制御のための技術 図5
  • 特許-生成されたロボットシミュレーションに基づくロボット制御のための技術 図6
  • 特許-生成されたロボットシミュレーションに基づくロボット制御のための技術 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-05
(45)【発行日】2023-04-13
(54)【発明の名称】生成されたロボットシミュレーションに基づくロボット制御のための技術
(51)【国際特許分類】
   B25J 9/00 20060101AFI20230406BHJP
【FI】
B25J9/00 Z
【請求項の数】 12
(21)【出願番号】P 2021160651
(22)【出願日】2021-09-30
(65)【公開番号】P2022064299
(43)【公開日】2022-04-25
【審査請求日】2021-09-30
(31)【優先権主張番号】63/091,082
(32)【優先日】2020-10-13
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/465,735
(32)【優先日】2021-09-02
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500280087
【氏名又は名称】オートデスク,インコーポレイテッド
(74)【代理人】
【識別番号】100078282
【弁理士】
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【弁理士】
【氏名又は名称】森下 夏樹
(72)【発明者】
【氏名】マチュー ジレ
(72)【発明者】
【氏名】フィクレト カレイ
(72)【発明者】
【氏名】フランク メスメル
【審査官】杉山 悟史
(56)【参考文献】
【文献】米国特許第09671777(US,B1)
【文献】国際公開第2019/025248(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 ~ 21/02
(57)【特許請求の範囲】
【請求項1】
ロボットを制御するためのコンピュータ実装方法であって、
少なくとも1つの操作を実行する前記ロボットの複数のシミュレーションを実行することであって、
前記複数のシミュレーションに含まれる各シミュレーションが、前記複数のシミュレーションに含まれる他の各シミュレーションと関連付けられたパラメータの値とは異なる前記パラメータの値と関連付けられており、
前記複数のシミュレーションに含まれる少なくとも1つのシミュレーションを実行することが、前記少なくとも1つのシミュレーション中にロボット問題に遭遇したことに応答して、前記ロボット問題を解決する最小移動量を決定することを含む、
ことと、
前記複数のシミュレーションを実行した後に、
前記複数のシミュレーションのうちの1つ以上のシミュレーションの1つ以上の結果ユーザーに表示することと、
前記ユーザーから、前記1つ以上のシミュレーションに含まれる第1のシミュレーションの選択を受け取ることと、
前記第1のシミュレーションに基づいて、前記ロボットを制御するためのコンピュータコードを生成することと
を含むコンピュータ実装方法。
【請求項2】
前記ロボット問題を解決することが、
軸の周りで少なくとも2つの方向で前記ロボットの頭部を回転させることと、
前記ロボット問題を解決する前記少なくとも2つの方向のどちらかでの最小回転角度を決定することと
を含む、請求項に記載の方法。
【請求項3】
前記ロボット問題が、前記ロボットの軸制限が超えられること、特異点が生じること、または衝突のうちの少なくとも1つに関する、請求項に記載の方法。
【請求項4】
前記1つ以上のシミュレーションの前記1つ以上の結果を前記ユーザーに提示することが、前記1つ以上の結果にフィルタを適用すること、及び前記1つ以上の結果のサブセットを前記ユーザーに表示することを含む、請求項1に記載の方法。
【請求項5】
前記1つ以上の結果に適用される前記フィルタのユーザー選択を受け取ることをさらに含む、請求項に記載の方法。
【請求項6】
前記ロボットが、ロボット定義を介して指定され、前記少なくとも1つの操作中に、前記ロボットの頭部が、点のリストによって指定されたツールパスをたどる、請求項1に記載の方法。
【請求項7】
前記複数のシミュレーションに含まれる各シミュレーション中に、
前記ロボットの少なくとも1つの軸の速度を計算することと、
前記ロボットの前記少なくとも1つの軸の前記速度が、前記ロボットの前記少なくとも1つの軸によって達成可能な最大速度を超えるかどうかを判断することと
をさらに含む、請求項1に記載の方法。
【請求項8】
前記複数のシミュレーションの各々の間の前記ロボットの1つ以上の軸の加速度または加加速度のうちの少なくとも1つを計算することをさらに含む、請求項1に記載の方法。
【請求項9】
前記ロボットまたは前記ロボットのコントローラのうちの少なくとも1つに前記コンピュータコードを送信することをさらに含む、請求項1に記載の方法。
【請求項10】
1つ以上の非一時的なコンピュータ可読記憶媒体であって、少なくとも1つのプロセッサによって実行されるときに、前記少なくとも1つのプロセッサに、ロボットを制御するためのステップを実行させる命令を含み、前記ステップが、
少なくとも1つの操作を実行する前記ロボットの複数のシミュレーションを実行することであって、
前記複数のシミュレーションに含まれる各シミュレーションが、前記複数のシミュレーションに含まれる他の各シミュレーションと関連付けられたパラメータの値とは異なる前記パラメータの値と関連付けられており、
前記複数のシミュレーションに含まれる少なくとも1つのシミュレーションを実行することが、前記少なくとも1つのシミュレーション中にロボット問題に遭遇したことに応答して、前記ロボット問題を解決する最小移動量を決定することを含む、
ことと、
前記複数のシミュレーションを実行した後に、
前記複数のシミュレーションのうちの1つ以上のシミュレーションの1つ以上の結果ユーザーに表示することと、
前記ユーザーから、前記1つ以上のシミュレーションに含まれる第1のシミュレーションの選択を受け取ることと、
前記第1のシミュレーションに基づいて、前記ロボットを制御するためのコンピュータコードを生成することと
を含む1つ以上の非一時的なコンピュータ可読記憶媒体。
【請求項11】
システムであって、
命令を格納する1つ以上のメモリと、
前記1つ以上のメモリに結合された1つ以上のプロセッサであって、前記命令を実行するときに、
少なくとも1つの操作を実行するロボットの複数のシミュレーションを実行することであって、
前記複数のシミュレーションに含まれる各シミュレーションが、前記複数のシミュレーションに含まれる他の各シミュレーションと関連付けられたパラメータの値とは異なる前記パラメータの値と関連付けられており、
前記複数のシミュレーションに含まれる少なくとも1つのシミュレーションを実行することが、前記少なくとも1つのシミュレーション中にロボット問題に遭遇したことに応答して、前記ロボット問題を解決する最小移動量を決定することを含む、
ことと、
前記複数のシミュレーションを実行した後に、
前記複数のシミュレーションのうちの1つ以上のシミュレーションの1つ以上の結果ユーザーに表示することと、
前記ユーザーから、前記1つ以上のシミュレーションに含まれる第1のシミュレーションの選択を受け取ることと、
前記第1のシミュレーションに基づいて前記ロボットを制御するためのコンピュータコードを生成することと
を行うように構成される、前記1つ以上のプロセッサと
を備えるシステム。
【請求項12】
前記ロボットと、
前記ロボットの少なくとも1つのコントローラであって、前記コンピュータコードに基づいて前記ロボットを制御するように構成されるなくとも1つのコントローラとをさらに備える、請求項11に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2020年10月13日に出願され、シリアル番号第63/091,082号を有する「TECHNIQUES FOR GENERATIVE ROBOT SIMULATION」と題する米国仮特許出願の優先権の利益を主張する。本関連出願の主題は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
本開示の実施形態は、一般に、コンピュータサイエンス及びロボット工学に関し、より詳細には、生成されたロボットシミュレーションに基づくロボット制御の技術に関する。
【0003】
関連技術の説明
ロボットは、多数の様々な業界で活動する企業により製造及び建設に幅広く使用されている。多くの場合、ロボットが実行する操作は、どのような問題にも遭遇することなく操作を実行できることを確認するために、最初にコンピュータでシミュレーションされる。比較的に一般的な問題の一例は、ロボットが実行する操作によって、ロボットが、ロボットの可動域を定義する軸制限を超えてしまうときである。比較的に一般的な問題の別の例は、ロボットが実行する操作が特異点を生じさせるときである。特異点は、ロボットの2つ以上の軸が同一線上に整列することであり、それによってロボットの予測不可能な動き及び速度が生じる可能性がある。
【0004】
ロボット操作をシミュレーションするための従来のソフトウェアは、通常、ユーザーが、ロボットの頭部の向きなど、シミュレーションで使用する様々なパラメータを手動で指定することを必要とする。それらのパラメータに基づいて、従来のソフトウェアは、関連するロボット操作のシミュレーションを生成し、シミュレーションの結果をユーザーに表示する。
【0005】
従来のシミュレーションソフトウェアの1つの欠点は、従来のソフトウェアは、通常、ロボット操作に対する異なるパラメータ値の影響を自動的にシミュレーションし、分析する機能を組み込んでいないことである。代わりに、試行錯誤の過程を通じてユーザーが選ぶパラメータ値を使用して、関連するロボット操作の複数のシミュレーションを反復して生成する必要がある。
【0006】
従来のシミュレーションソフトウェアの別の欠点は、従来のソフトウェアが、シミュレーション中に発生する可能性がある、軸制限を超えること、または特異点を生じさせることなどの問題のいずれも補正しないことである。代わりに、ユーザーは、そのような任意の問題を特定し、次に後続のシミュレーションで使用するための異なるパラメータ値を選択するためにシミュレーションを手動で分析する必要がある。ユーザーは問題を解決するパラメータ値を特定できるまで、ユーザーはこのプロセスを繰り返さなければならない。
【0007】
従来のシミュレーションソフトウェアのさらなる欠点は、従来のソフトウェアが、ロボットの軸によって達成可能な最大速度及び加速度など、物理的ロボットの能力について考慮に入れていないことである。結果として、ロボット操作のシミュレーションは、例えば、シミュレーションにより、ロボットが達成できない速度でまたは加速度で、ロボット軸を移動させることを要求されると、非現実的になる可能性がある。
【0008】
要約すると、従来のシミュレーションソフトウェアを使用してロボット操作をシミュレーションするプロセスは、通常、ロボット工学、及び従来のシミュレーションソフトウェアがどのようにして機能するのかの広範な知識を必要とする。さらに、手動で選択したパラメータ値を使用してロボット操作の多数のシミュレーションを実行する全体的なプロセスは、きわめて面倒かつ多大な時間を要する場合がある。
【0009】
上記が示すように、当該技術で必要とされることは、ロボット操作をシミュレーションするためのより効果的な技術である。
【発明の概要】
【課題を解決するための手段】
【0010】
本開示の一実施形態は、ロボットを制御するためのコンピュータ実装方法を説明する。方法は、少なくとも1つの操作を実行するロボットの複数のシミュレーションを実行することを含む。複数のシミュレーションに含まれる各シミュレーションは、複数のシミュレーションに含まれる他の各シミュレーションと関連付けられたパラメータの値とは異なる、パラメータの値と関連付けられている。方法は、複数のシミュレーションを実行した後に、複数のシミュレーションの1つ以上の結果の1つ以上をユーザーに表示すること、ユーザーから、1つ以上のシミュレーションに含まれる第1のシミュレーションの選択を受け取ること、及び第1のシミュレーションに基づいてロボットを制御するためのコンピュータコードを生成することをさらに含む。
【0011】
本開示の他の実施形態は、開示技術の1つ以上の態様を実行するための命令を含むコンピュータ可読媒体、及び開示技術の1つ以上の態様を実行するためのコンピューティングデバイスを含むが、これらに限定されるものではない。
【0012】
先行技術に比較した開示技術の少なくとも1つの技術的な優位点は、開示技術が、シミュレーションソフトウェアに組み込まれると、シミュレーションソフトウェアが、ユーザーが試行錯誤の過程を使用して異なるシミュレーションのパラメータ値を手動で選択することを必要とすることなく、ロボット操作の複数のシミュレーションを生成し、分析することが可能になることである。さらに、開示技術は、シミュレーションソフトウェアが、軸制限を超える、またはロボット操作の異なるシミュレーション中に発生する特異点を生じさせるなどの問題を自動的に解決することを可能にする。さらに、開示技術は、ロボット軸が達成できる最大速度及び加速度など、物理的ロボットの能力を考慮に入れている。したがって、開示技術によれば、先行技術の手法に比較して、シミュレーションを通じてロボット操作を最適化する可能性が高まる。これらの技術的な優位点は、ロボット操作をシミュレーションするための従来のソフトウェア及び手法に優る有形で有意義な技術的改善を表す。
【0013】
上記に列挙した本開示の特徴を詳細に理解することができるように、上記に簡略に要約した本開示のより具体的な説明は、そのいくつかを添付図面に示す実施形態を参照することによって行われ得る。しかしながら、添付図面が本開示の典型的な実施形態しか示しておらず、したがってその範囲を限定すると見なされるべきではなく、そのため本開示が他に同様の効果的な実施形態を認める場合があることに留意されたい。
(摘要)
生成されたロボットシミュレーションに基づいてロボットを制御するための技術が開示される。ロボットシミュレーションアプリケーションは、ロボットの形状を指定するロボット定義、ロボットの頭部が操作中にたどるツールパスを画定する点のリスト、及び操作を実行するロボットのシミュレーションの数を受け取るように構成される。シミュレーションアプリケーションは、次に、いくつかのシミュレーションを実行し、それらのシミュレーションの結果を表示し、それらのシミュレーションの1つのユーザー選択に基づいて物理的ロボットを制御するためのコードを生成する。各シミュレーション中、軸制限または特異点の問題などのロボット問題が発生した場合、次に、シミュレーションアプリケーションは、ツール軸の周りで両方の方向にロボット頭部を回転させ、ある場合、ロボット問題を解決するどちらかの方法での最小回転角度を決定することによって問題を解決しようと試みる。
【図面の簡単な説明】
【0014】
図1】様々な実施形態の1つ以上の態様を実装するように構成されたシステムの概念図である。
図2】様々な実施形態に係る、図1のシミュレーションアプリケーションのより詳細な図である。
図3】A~Bは、様々な実施形態に従って、ロボット操作をシミュレーションするときに発生する軸制限問題に対する例示的な解決策を示す。
図4】様々な実施形態に係る、図1のシミュレーションアプリケーション用の例示的なユーザーインタフェースを示す。
図5】様々な実施形態に係る、図4のユーザーインタフェースを介して表示された例示的なシミュレーション結果を示す。
図6】様々な実施形態に従って、ロボット操作の1つ以上のシミュレーションに基づいてロボットコードを生成するための方法ステップの流れ図である。
図7】様々な実施形態に従って、ロボット操作のシミュレーション中にロボット頭部の角度を変更するための方法ステップの流れ図である。
【発明を実施するための形態】
【0015】
以下の説明では、本開示のより完全な理解を提供するために多数の具体的な詳細が説明される。しかしながら、これらの具体的な詳細の1つ以上なしに本開示を実践し得ることは、当業者に明らかになる。
【0016】
システム概要
図1は、様々な実施形態の1つ以上の態様を実装するように構成されたシステム100の概念図である。図示するように、システム100は、中央演算処理装置(CPU)102、及びメモリブリッジ105を含む場合があるバスパスを介して通信するシステムメモリ104を含む。CPU102は、1つ以上の処理コアを含み、動作中、CPU102は、システム100のマスタプロセスであり、他のシステムコンポーネントの動作を制御し、調整する。システムメモリ104は、CPU102が使用するためのソフトウェアアプリケーション及びデータを格納する。CPU102は、ソフトウェアアプリケーション、及び任意選択でオペレーティングシステムを実行する。
【0017】
図示するように、システムメモリ104には、(本明細書で「シミュレーションアプリケーション130」とも呼ばれる)ロボットシミュレーションアプリケーション130、及びシミュレーションアプリケーション130がその上で実行するオペレーティングシステム132が格納されている。オペレーティングシステム132は、例えばLinux(登録商標)またはMicrosoft Windows(登録商標)であってよい。シミュレーションアプリケーション130は、ロボットの形状を指定するロボット定義、ロボットの頭部が操作中にたどるツールパスを画定する点のリスト、及び操作を実行するロボットのシミュレーションの数を受け取るように構成される。ロボット定義、点のリスト、及びシミュレーションの数を所与として、シミュレーションアプリケーション130は、図2図7と併せて以下により詳細に説明するように、いくつかのシミュレーションを実行し、それらのシミュレーションの結果を表示し、それらのシミュレーションの1つのユーザー選択に基づいて、物理的ロボットを制御するためのロボットコードを生成する。
【0018】
例えば、ノースブリッジチップであってよいメモリチップ105は、バスまたは他の通信経路(例えば、HyperTransportリンク)を介してI/O(入力/出力)ブリッジ107に接続される。例えば、サウスブリッジチップであってよいI/Oブリッジ107は、1つ以上のユーザー入力デバイス108(例えば、キーボード、マウス、ジョイスティック、デジタイザタブレット、タッチパッド、タッチスクリーン、静止カメラもしくはビデオカメラ、運動センサ、及び/またはマイク)からユーザー入力を受け取り、メモリブリッジ105を介して入力をCPU102に転送する。
【0019】
ディスプレイプロセッサ112は、バスまたは他の通信経路(例えば、PCI Express、Accelerated Graphics Port、またはHyperTransportリンク)を介してメモリブリッジ105に結合される。いくつかの実施形態では、ディスプレイプロセッサ112は、少なくとも1つのグラフィックスプロセッシングユニット(GPU)及びグラフィックスメモリを含むグラフィックスサブシステムである。グラフィックスメモリは、出力画像の各ピクセルのピクセルデータを格納するために使用されるディスプレイメモリ(例えば、フレームバッファ)を含む。グラフィックスメモリは、GPUと同じデバイスに統合される、別のデバイスとしてGPUと接続される、及び/またはシステムメモリ104内に実装される場合がある。
【0020】
ディスプレイプロセッサ112は、表示装置110(例えば、画面もしくは従来のCRT、プラズマ、OLED、SED、またはLCDベースのモニタまたはテレビ)にピクセルを定期的に配信する。さらに、ディスプレイプロセッサ112は、コンピュータによって生成された画像を写真フィルムに再生するように適合されたフィルムレコーダにピクセルを出力してもよい。ディスプレイプロセッサ112は、表示装置110にアナログ信号またはデジタル信号を提供できる。様々な実施形態では、本明細書に添付する付属書A~Jに説明する様々なグラフィカルユーザーインタフェースの1つ以上は、表示装置110を介して1人以上のユーザーに表示され、1人以上のユーザーは、それらの様々なグラフィカルユーザーインタフェースにデータを入力し、それらから視覚的な出力を受け取ることができる。
【0021】
また、システムディスク114は、I/Oブリッジ107に接続され、コンテンツならびにCPU102及びディスプレイプロセッサ112が使用するためのアプリケーション及びデータを格納するように構成され得る。システムディスク114は、アプリケーション及びデータに不揮発性記憶装置を提供し、固定式または取り外し可能なハードディスクドライブ、フラッシュメモリデバイス、及びCD-ROM、DVD-ROM、Blu-ray(登録商標)、HD-DVD、または他の磁気記憶装置、光学記憶装置、もしくはソリッドステート記憶装置を含み得る。
【0022】
スイッチ116は、I/Oブリッジ107と、ネットワークアダプタ118及び様々なアドインカード120と121などの他のコンポーネントとの間で接続を提供する。ネットワークアダプタ118は、システム100が、電子通信ネットワークを介して他のシステムと通信することを可能にし、ローカルエリアネットワーク及びインターネットなどの広域ネットワークを介した有線通信または無線通信を含み得る。
【0023】
また、USBまたは他のポート接続、フィルム記録装置などを含む他のコンポーネント(図示せず)も、I/Oブリッジ107に接続され得る。例えば、音声プロセッサは、CPU102、システムメモリ104、またはシステムディスク114によって提供された命令及び/またはデータからアナログまたはデジタルの音声出力を生成するために使用され得る。図1の様々なコンポーネントを相互接続する通信経路は、PCI(Peripheral Component Interconnect)、PCI Express(PCI-E)、AGP(Accelerated Graphics Pot)、HyperTransport、または任意の他のバスもしくはポイントツーポイント通信プロトコル(複数可)など、任意の適切なプロトコルを使用して実装され得、異なるデバイス間の接続は、当該技術で既知であるように、異なるプロトコルを使用し得る。
【0024】
いくつかの実施形態では、ディスプレイプロセッサ112は、例えばビデオ出力回路を含む、グラフィックス及びビデオ処理に最適化された回路を組み込み、グラフィックスプロセッシングユニット(GPU)を構成する。いくつかの他の実施形態では、ディスプレイプロセッサ112は、汎用処理に最適化された回路を組み込む。さらに他の実施形態では、ディスプレイプロセッサ112は、メモリブリッジ105、CPU102、及びI/Oブリッジ107などの1つ以上の他のシステム要素と統合されて、システムオンチップ(SoC)を形成し得る。さらなる実施形態では、ディスプレイプロセッサ112は省略され、CPU102によって実行されるソフトウェアがディスプレイプロセッサ112の機能を実行する。
【0025】
ピクセルデータは、CPU102から直接的にディスプレイプロセッサ112に提供される場合がある。本発明のいくつかの実施形態ではシーンを表す命令及び/またはデータは、ネットワークアダプタ118またはシステムディスク114を経由して、各々がシステム100に類似するサーバコンポーネントのレンダーファームまたはセットに提供される。レンダーファームは、提供された命令及び/またはデータを使用して、シーンの1つ以上のレンダリング画像を生成する。これらのレンダリング画像は、コンピュータ可読媒体にデジタル形式で格納され、任意選択で表示のためにシステム100に返され得る。同様に、ディスプレイプロセッサ112によって処理されたステレオ画像対は、表示のために他のシステムに出力される、システムディスク114に格納される、またはコンピュータ可読媒体にデジタル形式で格納される場合がある。
【0026】
代わりに、CPU102は、ディスプレイプロセッサ112に、所望の出力画像を定義するデータ及び/または命令を与え、ディスプレイプロセッサ112は、その出力画像からステレオ画像対間のオフセットを特徴付ける及び/または調整することを含む、1つ以上の出力画像のピクセルデータを生成する。所望の出力画像を定義するデータ及び/または命令は、システムメモリ104またはディスプレイプロセッサ112内のグラフィックスメモリに格納することができる。いくつかの実施形態では、ディスプレイプロセッサ112は、シーンのために形状、照明、シェーディング、テクスチャリング、動き、及びカメラのパラメータを定義する命令及びデータから、出力画像のピクセルデータを生成するための3Dレンダリング機能を含む。ディスプレイプロセッサ112は、シェーダプログラム、トーンマッピングプログラムなどを実行可能な1つ以上のプログラム可能な実行ユニットをさらに含む場合がある。
【0027】
さらに、他の実施形態では、CPU102またはディスプレイプロセッサ112は、データを処理し、プログラムコードを実行するように構成された、任意の技術的に実現可能な形の処理装置で置換され得る、またはそれによって補足され得る。そのような処理装置は、例えば、中央演算処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)などであろう。様々な実施形態では、本明細書に説明する操作及び/または機能のいずれも、CPU102、ディスプレイプロセッサ112、または1つ以上の他の処理装置、またはこれらの異なるプロセッサの任意の組み合わせによって実行することができる。
【0028】
CPU102、レンダーファーム、及び/またはディスプレイプロセッサ112は、提供されたデータ及び命令から1つ以上のレンダリング画像を作成するために、ラスタ化、スキャンラインレンダリングREYESもしくはマイクロポリゴンレンダリング、レイキャスティング、レイトレーシング、画像ベースのレンダリング技術、及び/またはこれらの及び当該技術で既知の任意の他のレンダリングもしくは画像処理技術の組み合わせを含む、当該技術で既知の任意の表面レンダリング技術または体積レンダリング技術を用いることができる。
【0029】
他の企図された実施形態では、システム100は、ロボットまたはロボットデバイスであってよく、CPU102及び/または他の処理ユニットもしくは処理装置、及びシステムメモリ104を含み得る。そのような実施形態では、システム100は、図1に示す他の要素を含む場合もあれば、含まない場合もある。システム100内のシステムメモリ104及び/または他のメモリユニットまたはメモリデバイスは、実行時に、システム100によって表されるロボットまたはロボットデバイスに、1つ以上の操作、ステップ、タスクなどを実行させる命令を含み得る。
【0030】
本明細書に示すシステムが例示的であること、及び変形形態及び修正形態が考えられることが理解される。ブリッジの数及び配置を含む接続トポロジは、所望されるように修正され得る。例えば、いくつかの実施形態では、システムメモリ104は、ブリッジを通じてよりむしろ直接的にCPU102に接続され、他のデバイスは、メモリブリッジ105及びCPU102を介してシステムメモリ104と通信する。他の代替トポロジでは、ディスプレイプロセッサ112は、メモリブリッジ105にではなく、I/Oブリッジ107に、または直接的にCPU102に接続される。さらに他の実施形態では、I/Oブリッジ107及びメモリブリッジ105は、単一のチップに統合される可能性がある。本明細書に示す特定のコンポーネントは、任意選択である。例えば、任意の数のアドインカードまたは周辺機器がサポートされる可能性がある。いくつかの実施形態では、スイッチ116は排除され、ネットワークアダプタ118及びアドインカード120、121は、I/Oブリッジ107に直接的に接続する。
【0031】
ロボットを制御するための生成ロボットシミュレーション
図2は、様々な実施形態に係る、図1のシミュレーションアプリケーション130のより詳細な図である。図示するように、シミュレーションアプリケーション130は、ロボットの形状を指定する(例えば、テキストファイルでの)ロボット定義202、ロボットの頭部が操作中にたどるツールパス209を定義する(例えば、ISOファイル内の)点のリスト204、及び操作を実行するロボットのシミュレーション206の数を入力として受け取る。フライス盤操作、塗装操作、接着操作、仕上げ操作、別の製造工程、及び/または他のロボットプロセスなど、任意の技術的に実現可能なタイプの操作をシミュレーションできる。
【0032】
ロボット定義202、点のリスト204、及びシミュレーションの数206を所与として、シミュレーションアプリケーション130は(本明細書では集合的にシミュレーション208と、及び個別にシミュレーション208と呼ばれる)シミュレーション208として示すいくつかのシミュレーションを実行する。いくつかの実施形態では、シミュレーション208は、ベース向きに対するロボットの頭部の向きの角度を定義するパラメータの異なる開始値を用いて実行される。ベース向きは、ロボットのルート(「ロボットベース」とも呼ばれることがある)から第1の点座標へのベクトルによって定義できる。ベース向きベクトルは「0°角度」として設定され、ロボットの頭部が向く可能性がある2つの方向での他の角度は、ベース向きベクトルの初期の向きに対して計算される。
【0033】
いくつかの実施形態では、軸制限の間であるロボット頭部の向きの許容角度の範囲をシミュレーションの数で除算して、各シミュレーションの開始値をインクリメントする角度を決定することができる。例えば、ロボット頭部が-120度と120度との間で移動することができ、25回のシミュレーションを実行する場合、次に、頭部向きパラメータの異なる開始値は、-120、-110、-100、...、100、110、120となるであろう。いくつかの他の実施形態では、シミュレーションの各々について開始値をインクリメントする角度は、所定の角度である場合がある。
【0034】
各シミュレーション208の間、ロボット定義202によって定義されたロボットは、点のリスト204によって指定されたツールパス209をたどり、ツール向きベクトル(例えば、以下により詳細に説明する図3Aのツール向きベクトル310)によって表すことができるロボット頭部の向きは、上述した異なる開始値の1つで開始する。いくつかの実施形態では、点のリスト204は、ロボット頭部がたどるツールパス209を定義する(x、y、z)座標、及び「ツール軸」とも呼ばれるロボットのツールの軸207を定義する(i、j、k)座標を含む。例えば、点のリスト204は、ISOファイルに指定できるであろう。本明細書では、おもに単一の点のリスト(例えば、点のリスト204)に関して説明しているが、いくつかの実施形態では、シミュレーションは、複数の点のリストに基づいて実行することもできる。例えば、連続シミュレーションを生成するために、点のリストを含む複数のISOファイルを使用できるであろう。別の例として、複数のISOファイルの点のリストを互いに連結し、シミュレーションを生成するために使用できるであろう。
【0035】
各シミュレーション中に、ロボットの可動域を定める軸制限を超えること、または特異点を生じさせることなど、1つ以上のロボットの問題が発生する場合がある。シミュレーション中、シミュレーションアプリケーション130は、任意のロボット問題が発生したかどうかを判断するために点のリスト204の各点でロボットを評価する。いくつかの実施形態では、シミュレーションアプリケーション130は、各点での頭部位置を所与としてロボットの関節位置を計算するためにインバースキネマティクス(IK)ソルバを用い、シミュレーションアプリケーション130は、次に、ロボットの可動域を定める軸制限が超えられるかどうか、及び/またはロボットの関節位置を所与として、2つ以上のロボット軸の同一線上での整列を伴う特異点が生じるかどうかを特定する。例えば、シミュレーションアプリケーション130は、様々な軸が対応する軸制限の範囲内にあるかどうかを判断するために、ロボットの関節位置をロボット定義202と比較できるであろう。別の例として、シミュレーションアプリケーション130は、特異点が生じたかどうかを判断するために、任意の関節が互いと整列しているかどうかを確認できるであろう。
【0036】
本明細書では参照例としておもに軸制限及び特異点の問題に関して説明しているが、いくつかの実施形態では、シミュレーションアプリケーション130は、任意の技術的に実現可能なロボット問題を決定及び解決することができる。例えば、いくつかの実施形態では、シミュレーションアプリケーション130は、ロボットの異なる部分の衝突、及び/またはロボットの他の物体との衝突を検出し、解決しようと試みることができる。
【0037】
点のリスト204の中の任意の点でロボット問題が発生する場合、次に、シミュレーションアプリケーション130は、ツール軸207の周りでロボット頭部を回転させることによってロボット問題を解決しようと試みる。いくつかの実施形態では、シミュレーションアプリケーション130は、ツール軸207の周りの両方の方向でロボット頭部を回転させ、もしあれば、ロボット問題を解決するどちらかの方向での最小回転角度を決定する。最小回転角度を使用することによって、より大きい回転角度を使用する場合よりも、ロボットの動きを滑らかにすることが可能である。いくつかの実施形態では、ロボット問題を解決するための最大回転角度は、ユーザーが指定する、デフォルトで設定する、または自動的に決定することができる。そのような場合、シミュレーションアプリケーション130は、ロボット問題が解決される、または最大回転角度に達するまで、ツール軸207の周りの両方の方向でロボット頭部を回転させる。次に、シミュレーションアプリケーション130は、もしあれば、ロボット問題を解決する最小角度を有するどちらかの方向での回転を決定する。そのような最小角度が存在しない場合(つまり、両方の方向で最大回転角度に達する場合)、次に、シミュレーションアプリケーション130は、ユーザーに対し、ロボット問題のために、操作のシミュレーションが無効であることを表示することができる。他方、ロボット問題を解決する最小角度が特定される場合、次にシミュレーションアプリケーション130は、ツール軸207の周りで最小角度、ロボット頭部を回転させ、点のリスト204の中の次の点でロボットを評価する。
【0038】
本明細書ではおもにツール軸207の周りでロボット頭部を回転させることに関して説明しているが、いくつかの実施形態では、ロボット問題を解決するロボット及び/または他の物体(複数可)の他の移動を決定することもできる。例えば、ロボットにとって外部である回転テーブルは、ロボット問題を解決するために必要な最小角度、軸の周りで回転されるであろう。別の例として、ロボットがレールに取り付けられる場合、次に、ロボットは、ロボット問題を解決する最小量、レールに沿って移動されるであろう。
【0039】
図3A図3Bは、様々な実施形態に従って、ロボット操作をシミュレーションするときに発生する軸制限問題に対する例示的な解決策を示す。図3Aに示すように、軸制限が超えられているために、ロボット300の頭部302は、ロボット300のアーム306と衝突している。軸制限問題を特定すると、シミュレーションアプリケーション130は、向きがツール向きベクトル310で表されるロボット頭部302を、ツール軸308の周りの両方の方向で回転させ、軸制限問題を解決するどちらかの方向での最小回転角度を決定する。ツール向きベクトル310は、X軸として示され、ツール軸308は、X軸に直交するZ軸である。
【0040】
図3Bに示すように、ロボット頭部302が特定の角度、回転すると、結果として軸制限問題は存在しなくなる。特定の角度は、図3Aと併せて上述した、軸制限問題を解決するためにツール軸308の周りのどちらかの方向でロボットヘッド302を回転できる最小角度である。軸制限問題が解決された後、ロボット300の頭部302は、ロボット300のアーム306と衝突しなくなる。
【0041】
図2に戻ると、いくつかのシミュレーショ206が実行され、可能であれば、ロボット問題が解決された後、シミュレーションアプリケーション130は、ユーザーにシミュレーションの結果を表示する。図4は、様々な実施形態に係る、図1のシミュレーションアプリケーション130用の例示的なユーザーインタフェース400を示す。図示するように、ユーザーインタフェース400は、テキスト入力フィールド402、404、406、408、及び410を含むグラフィカルユーザーインタフェース(GUI)であり、GUIを介して、ユーザーは、予測されるシミュレーションの数、特異点及び軸制限を回避するときにロボット頭部を回転させる最大角度、ロボット定義ファイル、ツールパスの点のリストを含むファイル、及びツールパス送り速度をそれぞれ指定することができる。ツールパス送り速度は、異なる点で変わる場合があるロボットのツールの移動速度を示す。ツールパス送り速度は、いくつかの他の実施態様では、点のリストを含むファイル(例えば、ISOファイル)に指定できる。テキスト入力フィールドは例示目的で示されているが、他の実施形態では、予想されるシミュレーションの数、ロボット頭部を回転させる最大角度、ロボット定義ファイル、点のリストを含むファイル、及び/またはツールパス送り速度は、ユーザーインタフェースを介した任意の技術的に実現可能な方法で、または別の方法で指定できる。ユーザーが予想されるシミュレーションの数、最大角度などを入力フィールド402、404、406、408、及び410に入力した後、ユーザーはボタン412を押して、シミュレーションの指定数、最大角度などに基づいて、ロボット操作のシミュレーションを開始することができる。
【0042】
図5は、様々な実施形態に係る、ユーザーインタフェース400を介して表示された例示的なシミュレーション結果502を示す。図示するように、シミュレーション結果502はシミュレーションのリストに表示され、列が、それらのシミュレーションが、未解決のロボット問題のために有効であるのか、それとも無効であるのか、シミュレーションの開始角度、シミュレーションのある時点でロボット問題を解決するために必要とされる角度変動、そのロボット軸と関連する達成可能な最大速度のパーセンテージとしてのロボット軸の1つの最高速度、ロボット軸の1つの最大速度、及びシミュレーションでの時点と関連する平均加加速度を示す。ユーザーインタフェース400はさらに、ユーザーが、シミュレーションの他の時点にスライダ504をドラッグし、異なる時点と関連する角度変動、最高速度などを確かめるためにシミュレーション(及び他のシミュレーション)を再生することを可能にする。
【0043】
説明するように、最高速度は、ある時点でのロボット軸の1つの最大速度の最高パーセンテージとしてユーザーインタフェース400に示される。いくつかの実施形態では、シミュレーションアプリケーション130は、様々な点での各軸の速度を計算し、計算した速度を、それらの軸の達成可能な最大速度と比較して、パーセンテージ値を決定する。シミュレーションアプリケーション130は、次に、ユーザーインタフェース400を介して、特定の点(最も好ましくない点)で軸の1つと関連付けられた最高パーセンテージ値を表示する。各ロボット軸の達成可能な最高速度は、一般に、ロボット及び実行されている操作に依存する場合がある。例えば、達成可能な最大速度は、切削操作中に切削されている異なる材料と関連付けられた、ツールパスに沿った異なる点では異なるであろう。いくつかの実施形態では、ロボット軸の達成可能な最大速度は、ツールパスに沿った異なる点についてロボット定義202に指定する、またはそれ以外の場合、シミュレーションアプリケーション130に入力することができる。最高速度パーセンテージがユーザーインタフェース400で100を超えていることによって示されるように、ロボット軸の1つ以上の達成可能な最大速度を、シミュレーション中のそれらのロボットが超える場合、次に、物理的ロボットは、それらの軸の達成可能な最大速度よりも速くロボット軸を移動することができないため、物理的ロボットはシミュレーションに従って操作を実行することはできない。代わりに、物理的ロボットは、その達成可能な最大速度でロボット軸を移動させ、結果として、実行されている操作にとって次善の条件が生じる可能性がある。
【0044】
ユーザーインタフェース400が示す加加速度は、それ自体がロボット軸の速度の導関数である加速度の導関数であり、加加速度は、加速度の瞬間的な変化を表す。一般的な事項として、加速度のより小さい変化と関連付けられたより小さい加加速度の方が、加速度のより大きい変化と関連付けられたより大きい加加速度よりも、より滑らかで好ましい。
【0045】
いくつかの実施形態では、ユーザーインタフェース(例えば、ユーザーインタフェース400)は、さらに、ユーザーが、表示されているシミュレーションのセットを、1つ以上の基準に従って最良である、及び/または有効であり、いずれの未解決のロボット問題とも関連付けられていないシミュレーションに制限する1つ以上のフィルタを設定することを可能にする。例えば、ユーザーは、それらのシミュレーション中のロボット軸の速度が、物理的ロボットによって達成可能な最大速度を超えないシミュレーションだけを表示するためにフィルタを設定できるであろう。別の例として、ユーザーは、加加速度が最小量の、所定数(例えば、5)のシミュレーションだけを表示するためにフィルタを設定できるであろう。さらに別の例として、ユーザーは、有効であり、いずれの未解決のロボット問題とも関連付けられていないシミュレーションだけを表示するためにフィルタを設定できるであろう。
【0046】
シミュレーション結果(またはそのフィルタリングされたサブセット)がユーザーに表示された後、ユーザーは、(例えば、シミュレーションのリスト502でシミュレーションをクリックすることによって)それらのシミュレーションの1つを選択できる。例えば、ユーザーは、有効であり、任意のロボット軸の達成可能な最大速度が超えられることを必要とせず、最小量の加加速度と関連付けられたシミュレーションを選択できるであろう。シミュレーションアプリケーション130は、次に、ユーザーが選択したシミュレーションに基づいて物理的ロボットを制御するためのロボットコードを生成する。異なるタイプのロボットを制御するために、異なるタイプのロボットコードを生成できることを理解されたい。さらに、ロボットコードは、いくつかの実施形態では、周知の技術を使用することを含む任意の技術的に実現可能な方法で生成できる。例えば、シミュレーションアプリケーション130は、点のリストの中のあらゆる点のロボット関節のリストを、ロボットが読み取ることができるロボットコードに変換するために後処理装置を使用できるであろう。
【0047】
図2に戻ると、ロボットコード212は、シミュレーションのユーザー選択に応えてシミュレーションアプリケーション130によって生成される。ロボットコード212は、次に、ユーザーが選択したシミュレーションに従ってロボットを移動させるために、物理的ロボットまたはロボットのコントローラに送信できる。
【0048】
図6は、様々な実施形態に従って、ロボット操作の1つ以上のシミュレーションに基づいてロボットコードを生成するための方法ステップの流れ図である。方法ステップは図1図2のシステムを参照して説明されているが、当業者は、任意の順序で方法ステップを実装するように構成されたいずれのシステムも本発明の範囲内に入ることを理解する。
【0049】
図示するように、方法600は、シミュレーションアプリケーション130が、ロボット定義、点のリスト、及び実行するロボット操作のシミュレーションの数を受け取るステップ602で始まる。説明するように、ロボット定義は、ロボットの形状を定義することができ、点のリストは、ロボットの頭部がロボット操作中にたどるツールパスを指定することができ、シミュレーションの数は、ユーザーが指定する、または別の方法で定義することができる(例えば、シミュレーションの数は、デフォルト数、所定数、または自動的に決定された数であるであろう)。ロボット操作は、フライス盤操作、塗装操作、接着操作、仕上げ操作、別の製造工程、及び/または任意の他のロボットプロセスなど、任意の技術的に実現可能な操作である場合がある。
【0050】
ステップ604で、シミュレーションアプリケーション130は、ロボット操作のシミュレーションの数に基づいてロボットの頭部の開始角度を選択する。説明するように、いくつかの実施形態では、軸制限の間であるロボット頭部の向きの許容角度の範囲をシミュレーションの数で除算して、各シミュレーションの開始角度をインクリメントする角度を決定することができる。いくつかの他の実施形態では、シミュレーションの各々について開始値をインクリメントする角度は、所定の角度である場合がある。
【0051】
ステップ606で、シミュレーションアプリケーション130は、ロボット頭部の角度に基づいて点のリストの中の点でロボットを評価する。説明するように、いくつかの実施形態では、ロボットを評価することは、点での頭部位置を所与として、ロボットの関節位置を計算するためにインバースキネマティクス(IK)ソルバを使用することを含む場合がある。
【0052】
ステップ608で、シミュレーションアプリケーション130は、ロボット問題が発生したかどうかを判断する。ロボット問題の例は、ステップ606で評価された、ロボットがロボット軸を超えること、ステップ606で評価されたロボットの2つ以上の軸が同一線上で整列する特異点が生じること、またはロボットのパーツの間、またはロボットと別の物体との間の衝突を含む。例えば、シミュレーションアプリケーション130は、特異点が生じたかどうかを判断するために、ロボットのいずれかの関節が互いと整列しているかどうかを確認できるであろう。別の例として、シミュレーションアプリケーション130は、様々な軸が対応する軸制限範囲内にあるかどうかを判断するために、ロボットの関節位置をロボット定義202と比較できるであろう。さらに別の例として、シミュレーションアプリケーション130は、ロボットのパーツ間、及びロボットと他のオブジェクトの間の衝突を検出できるであろう。
【0053】
ロボット問題が発生すると、次に方法600は、シミュレーションアプリケーション130が、可能であれば問題を解決するために、ロボット頭部の角度を変更するステップ610に進む。いくつかのでは、ロボット問題を解決するために、ロボット頭部の角度の変更に加えて、またはそれの代わりに、ロボット及び/または他の物体(複数可)の他の移動を決定できる。例えば、ロボットにとって外部である回転テーブルは、ロボット問題を解決するために必要な最小角度、軸の周りで回転されるであろう。別の例として、ロボットがレールに取り付けられる場合、次に、ロボットは、ロボット問題を解決する最小量、レールに沿って移動されるであろう。
【0054】
図7は、様々な実施形態に従って、ステップ610でロボット頭部の角度を変更するための方法ステップの流れ図である。方法ステップは、図1図2のシステムを参照して説明されているが、当業者は、任意の順序で方法ステップを実装するように構成されたいずれのシステムも本発明の範囲内に入ることを理解する。
【0055】
図示するように、ステップ702で、シミュレーションアプリケーション130は、第1の方向に一定量、ロボット頭部を回転させる。例えば、ロボット頭部は、一度に、1度または任意の他の一定の角度、ツール軸の周りで回転されるであろう。
【0056】
ステップ704で、シミュレーションアプリケーション130は、ロボット問題が、ステップ702での回転後に解決されたかどうかを判断する。ロボット問題を解決することは、軸制限(複数可)が超えられておらず、2つ以上のロボット軸が同一線上で整列する特異点が存在しないことを意味する。
【0057】
ロボット問題が解決していない場合、次に方法600は、シミュレーションアプリケーション130が、最大角度に達したかどうかを判断するステップ706に進む。いくつかの実施形態では、最大角度は、軸制限または特異点を回避するために、ロボット頭部のさらなる回転が行われない、ユーザーによって設定可能な角度である。他の実施形態では、最大角度は、事前に定義、または自動的に決定され得る。
【0058】
最大角度に達していない場合、次に、方法600は、シミュレーションアプリケーション130が、第1の方向で一定量、ロボット頭部を再び回転させるステップ702に戻る。
【0059】
一方、ステップ704でロボット問題が解決された場合、またはステップ706で最大角度に達した場合、次に、方法600は、シミュレーションアプリケーション130が、第1の方向とは反対である第2の方向で一定量、ツール軸の周りでロボット頭部を回転させるステップ708に進む。例えば、第1の方向が右回り方向である場合、次に第2の方向は左回り方向となり、その逆も同様であろう。いくつかの実施形態では、ロボット頭部が第2の方向で回転する一定量は、ロボット頭部がステップ704で第1の方向で回転する一定量と同じ量である。
【0060】
ステップ710で、シミュレーションアプリケーション130は、ロボット問題が解決されたかどうかを判断する。ステップ710は、上述のステップ704と同様である。
【0061】
ロボット問題が解決していない場合、次にステップ712で、シミュレーションアプリケーション130は、最大角度に達したかどうかを判断する。ステップ712は、上述のステップ706と同様であり、いくつかの実施形態で同じ最大角度を使用することができる。
【0062】
最大角度に到達していない場合、次に、方法600は、シミュレーションアプリケーション130が、第2の方向で一定量、ロボット頭部を再び回転させるステップ708に戻る。
【0063】
ステップ710でロボット問題が解決している場合、またはステップ712で最大角度に達している場合、次に、方法600は、シミュレーションアプリケーション130が、以前の角度、及びもしあれば、ロボット問題を解決する第1の方向及び第2の方向での最小回転角度に基づいて、ロボット頭部の角度を変更するステップ714に進む。最小角度を使用すると回転は最小限に抑えられ、これによってより大きい回転角度よりも滑らかな点の間での遷移を生じさせることができる。いくつかの実施形態では、ロボット頭部の角度は、ロボット頭部の角度を、ロボット問題を解決する最小角度を加えた以前の角度に設定することによって変更することができる。両方の回転方向で最大角度に達しているために最小角度が特定されない場合、次に、シミュレーションアプリケーションは、図5と併せて上述したユーザーインタフェース400などのユーザーインタフェースを介して、シミュレーションが有効ではないことを表示することができる。
【0064】
図6に戻ると、ロボット頭部の角度がステップ610で変更された後、またはシミュレーションアプリケーション130が、ステップ608でロボット問題が発生していないと判断した後、次に方法600は、シミュレーションアプリケーションが、点のリストの中にさらに多くの点があるかどうかを判断するステップ612に進む。点のリストの中にさらに多くの点がある場合、次に方法600は、シミュレーションアプリケーション130が、ロボット頭部の(変更された角度である場合がある)角度に基づいて、点のリストの中の次の点でロボットを評価するステップ606に戻る。
【0065】
点のリストの中にそれ以上点がない場合、次に方法600はステップ614に進む。ステップ614で、ロボット操作のさらに多くのシミュレーションが実行される場合、次に方法600は、シミュレーションアプリケーション130が、ロボット操作のシミュレーションの数に基づいて、ロボット頭部の次の開始角度を選択するステップ604に戻る。
【0066】
一方、ロボット操作のそれ以上のシミュレーションを実行しない場合、次に方法600は、シミュレーションアプリケーション130が、シミュレーション結果をユーザーに表示するステップ616に進む。いくつかの実施形態では、シミュレーション結果は、図5と併せて上述するユーザーインタフェース400など、グラフィカルユーザーインタフェースを介して表示できる。いくつかの実施形態では、表示された結果は、1つ以上のフィルタに基づいて決定されるシミュレーションのサブセット向けであってよい。説明するように、表示されたシミュレーションを、1つ以上の基準に従って最良である、及び/または有効であり、いずれの未解決のロボット問題とも関連していないシミュレーションに制限するために、フィルタを適用することができる。いくつかの実施形態では、シミュレーションアプリケーション130は、図5と併せて上述するように、シミュレーションが有効であるのか、それとも未解決のロボット問題に遭遇するのか、シミュレーションの開始角度、シミュレーションの様々な時点でロボット問題を解決するために必要とされる角度変動、シミュレーションの様々な時点でそのロボット軸の達成可能な最大速度のパーセンテージとしてのロボット軸の1つの最高速度、シミュレーションの様々な時点でのロボット軸の1つの最大速度、及び/またはシミュレーションの様々な時点と関連する平均加加速度も表示することができる。
【0067】
ステップ616で、シミュレーションアプリケーション130は、シミュレーションの1つの選択を受け取る。いくつかの実施形態では、シミュレーション結果を表示するために使用される同じユーザーインタフェースは、ユーザーがシミュレーションの1つを選択することも可能にする。
【0068】
ステップ618で、シミュレーションアプリケーション130は、選択したシミュレーションに基づいてロボットを制御するためのコードを生成する。コードは、市販されている後処理装置を含む周知の技術を使用することを含む、任意の技術的に実現可能な方法で生成することができる。いくつかの実施形態では、異なるタイプのロボットを制御するために異なるタイプのコードを生成することができる。
【0069】
要約すると、生成されたロボットシミュレーションに基づいてロボットを制御するための技術が開示されている。開示技術では、ロボットシミュレーションアプリケーションは、ロボットの形状を指定するロボット定義、ロボットの頭部が操作中にたどるツールパスを画定する点のリスト、及び操作を実行するロボットのシミュレーションの数を受け取るように構成される。ロボット定義、点のリスト、及びシミュレーションの数を所与として、シミュレーションアプリケーションは、いくつかのシミュレーションを実行し、それらのシミュレーションの結果を表示し、それらのシミュレーションの1つのユーザー選択に基づいて、物理的ロボットを制御するためのロボットコードを生成する。各シミュレーション中、軸制限または特異点の問題などのロボットロボット問題が発生した場合、次に、シミュレーションアプリケーションは、ツール軸の周りで両方の方向にロボット頭部を回転させ、ある場合、ロボット問題を解決するどちらかの方法での最小回転角度を決定することによって問題を解決しようと試みる。
【0070】
先行技術に比較した開示技術の少なくとも1つの技術的な優位点は、開示技術が、シミュレーションソフトウェアに組み込まれると、シミュレーションソフトウェアが、ユーザーが試行錯誤の過程を使用して異なるシミュレーションにパラメータ値を手動で選択することを必要とすることなく、ロボット操作の複数のシミュレーションを生成し、分析することが可能になる点である。さらに、開示技術は、シミュレーションソフトウェアが、軸制限を超える、またはロボット操作の異なるシミュレーション中に発生する特異点を生じさせるなどの問題を自動的に解決することを可能にする。さらに、開示技術は、ロボット軸が達成できる最大速度及び加速度など、物理的ロボットの能力を考慮に入れている。したがって、開示技術によれば、先行技術の手法に比較して、シミュレーションを通じてロボット操作を最適化する可能性が高まる。これらの技術的な優位点は、ロボット操作をシミュレーションするための従来のソフトウェア及び手法に優る有形で有意義な技術的改善を表す。
【0071】
1.いくつかの実施形態では、ロボットを制御するためのコンピュータ実装方法が、少なくとも1つの操作を実行する前記ロボットの複数のシミュレーションを実行することであって、前記複数のシミュレーションに含まれる各シミュレーションが、前記複数のシミュレーションに含まれる他の各シミュレーションと関連付けられたパラメータの値とは異なる前記パラメータの値と関連付けられる、前記実行することと、前記複数のシミュレーションを実行した後に、前記複数のシミュレーションの1つ以上の結果の1つ以上をユーザーに表示することと、前記ユーザーから、前記1つ以上のシミュレーションに含まれる第1のシミュレーションの選択を受け取ることと、前記第1のシミュレーションに基づいて前記ロボットを制御するためのコンピュータコードを生成することとを含む。
【0072】
2.前記複数のシミュレーションに含まれる少なくとも1つのシミュレーションを実行することが、前記少なくとも1つのシミュレーション中に発生したロボット問題を解決することを含む、条項1に記載の方法。
【0073】
3.前記ロボット問題を解決することが、軸の周りで少なくとも2つの方向で前記ロボットの頭部を回転させることと、前記ロボット問題を解決する前記少なくとも2つの方向のどちらかでの最小回転角度を決定することとを含む、条項1または2に記載の方法。
【0074】
4.前記ロボット問題が、前記ロボットの軸制限が超えられること、特異点が生じること、または衝突のうちの少なくとも1つに関する、条項1~3のいずれかに記載の方法。
【0075】
5.前記1つ以上のシミュレーションの前記1つ以上の結果を前記ユーザーに提示することが、前記1つ以上の結果にフィルタを適用すること、及び前記1つ以上の結果のサブセットを前記ユーザーに表示することを含む、条項1~4のいずれかに記載の方法。
【0076】
6.前記1つ以上の結果に適用される前記フィルタのユーザー選択を受け取ることをさらに含む、条項1~5のいずれかに記載の方法。
【0077】
7.前記ロボットが、ロボット定義を介して指定され、前記少なくとも1つの操作中に、前記ロボットの頭部が、点のリストによって指定されたツールパスをたどる、条項1~6のいずれかに記載の方法。
【0078】
8.前記複数のシミュレーションに含まれる各シミュレーション中に、前記ロボットの少なくとも1つの軸の速度を計算することと、前記ロボットの前記少なくとも1つの軸の前記速度が、前記ロボットの前記少なくとも1つの軸によって達成可能な最大速度を超えるかどうかを判断することとをさらに含む、条項1~7のいずれかに記載の方法。
【0079】
9.前記複数のシミュレーションの各々の間の前記ロボットの1つ以上の軸の加速度または加加速度のうちの少なくとも1つを計算することをさらに含む、条項1~8のいずれかに記載の方法。
【0080】
10.前記ロボットまたは前記ロボットのコントローラのうちの少なくとも1つに前記コンピュータコードを送信することをさらに含む、条項1~9のいずれかに記載の方法。
【0081】
11.いくつかの実施形態では、1つ以上の非一時的なコンピュータ可読記憶媒体が、少なくとも1つのプロセッサによって実行されるときに、前記少なくとも1つのプロセッサに、ロボットを制御するためのステップを実行させる命令を含み、前記ステップが、少なくとも1つの操作を実行する前記ロボットの複数のシミュレーションを実行することであって、前記複数のシミュレーションに含まれる各シミュレーションが、前記複数のシミュレーションに含まれる他の各シミュレーションと関連付けられたパラメータの値とは異なる前記パラメータの値と関連付けられる、前記実行することと、前記複数のシミュレーションを実行した後に、前記複数のシミュレーションの1つ以上の結果の1つ以上をユーザーに表示することと、前記ユーザーから、前記1つ以上のシミュレーションに含まれる第1のシミュレーションの選択を受け取ることと、前記第1のシミュレーションに基づいて前記ロボットを制御するためのコンピュータコードを生成することとを含む。
【0082】
12.前記複数のシミュレーションに含まれる少なくとも1つのシミュレーションを実行することが、前記少なくとも1つのシミュレーション中に発生するロボット問題を解決することを含む、条項11に記載の1つ以上の非一時的なコンピュータ可読記憶媒体。
【0083】
13.前記ロボット問題を解決することが、軸の周りで少なくとも2つの方向で前記ロボットの頭部を回転させることと、前記ロボット問題を解決する前記少なくとも2つの方向のどちらかでの最小回転角度を決定することとを含む、条項11または12に記載の1つ以上の非一時的なコンピュータ可読記憶媒体。
【0084】
14.前記ロボット問題が、前記ロボットの制限軸が超えられること、特異点が生じること、または衝突のうちの少なくとも1つに関する、条項11~13のいずれかに記載の1つ以上の非一時的なコンピュータ可読記憶媒体。
【0085】
15.前記1つ以上のシミュレーションの前記1つ以上の結果を前記ユーザーに提示することが、前記ユーザーが前記1つ以上のシミュレーションに含まれる前記第1のシミュレーションを選択することを可能にするグラフィカルユーザーインタフェースを介して前記1つ以上の結果を表示することを含む、条項11~14のいずれかに記載の1つ以上の非一時的なコンピュータ可読記憶媒体。
【0086】
16.前記命令が、前記少なくとも1つのプロセッサによって実行されるときに、前記少なくとも1つのプロセッサに、前記ロボットの少なくとも1つの軸の速度を計算することと、前記ロボットの前記少なくとも1つの軸の前記速度が前記ロボットの前記少なくとも1つの軸によって達成可能な最大速度を超えるかどうかを判断することとを含むステップをさらに実行させる、条項11~15のいずれかに記載の1つ以上の非一時的なコンピュータ可読記憶媒体。
【0087】
17.前記少なくとも1つの操作が、フライス盤操作、塗装操作、接着操作、仕上げ操作、または別のシミュレーションされたロボットプロセスのうちの少なくとも1つを含む、条項11~16のいずれかに記載の1つ以上の非一時的なコンピュータ可読記憶媒体。
【0088】
18.前記複数のシミュレーションの前記1つ以上の前記結果の1つ以上を表示することが、前記複数のシミュレーションの前記1つ以上に含まれる各シミュレーションが、任意の未解決のロボット問題と関連付けられているかどうかを表示することを含む、条項11~17のいずれかに記載の1つ以上の非一時的なコンピュータ可読記憶媒体。
【0089】
19.いくつかの実施形態では、システムは、命令を格納する1つ以上のメモリと、前記1つ以上のメモリに結合された1つ以上のプロセッサであって、前記命令を実行するときに、少なくとも1つの操作を実行するロボットの複数のシミュレーションを実行することであって、前記複数のシミュレーションに含まれる各シミュレーションが、前記複数のシミュレーションに含まれる他の各シミュレーションと関連付けられたパラメータの値とは異なる前記パラメータの値と関連付けられる、前記実行することと、前記複数のシミュレーションを実行した後に、前記複数のシミュレーションの1つ以上の結果の1つ以上をユーザーに表示することと、前記ユーザーから、前記1つ以上のシミュレーションに含まれる第1のシミュレーションの選択を受け取ることと、前記第1のシミュレーションに基づいて前記ロボットを制御するためのコンピュータコードを生成することとを行うように構成される前記1つ以上のプロセッサとを備える。
【0090】
20.前記ロボットと、前記ロボットの少なくとも1つのコントローラであって、前記コンピュータコードに基づいて前記ロボットを制御するように構成される、前記少なくとも1つのコントローラとをさらに備える、条項19に記載のシステム。
【0091】
様々な実施形態の説明は、例示のために提示されてきたが、包括的である、または開示する実施形態に対して限定されることを意図していない。多くの変更形態及び変形形態は、説明される実施形態の範囲及び趣旨から逸脱することなく当業者には明白である。
【0092】
本実施形態の態様は、システム、方法、またはコンピュータプログラム製品として具体化され得る。したがって、本開示の態様は、完全にハードウェア実施形態、完全にソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはすべて一般に本明細書で「モジュール」もしくは「システム」と呼ばれる場合があるソフトウェア態様及びハードウェア態様を組み合わせた実施形態の形態をとり得る。さらに、本開示の態様は、コンピュータ可読プログラムコードをそこに具現化した1つ以上のコンピュータ可読媒体(複数可)内で具現化されるコンピュータプログラム製品の形態をとってもよい。
【0093】
1つ以上のコンピュータ可読媒体(複数可)の任意の組み合わせを利用し得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってよい。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、もしくはデバイス、または上記の任意の適切な組み合わせであってよいが、これらに限定されるものではない。コンピュータ可読記憶媒体のより具体的な例(包括的ではないリスト)は、以下、つまり1つ以上のワイヤを有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的消去可能PROM(EEPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM)、光学記憶装置、磁気記憶装置、または上記の任意の適切な組み合わせを含むであろう。本書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによる使用のために、または命令実行システム、装置、もしくはデバイスと接続してプログラムを含むまたは格納することができる任意の有形媒体であってよい。
【0094】
本開示の態様は、本開示の実施形態に係る方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/またはブロック図を参照して上述されている。フローチャート図及び/またはブロック図の各ブロック、及びフローチャート図及び/またはブロック図のブロックの組み合わせは、コンピュータプログラム命令によって実施できることが理解される。これらのコンピュータプログラム命令は、機械を製造するために、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供され得る。命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行されるとき、フローチャート及び/またはブロック図の1つまたは複数のブロックに指定された機能/行為の実装を可能にする。そのようなプロセッサは、汎用プロセッサ、専用プロセッサ、アプリケーション特有プロセッサ、またはフィールドプログラマブルゲートアレイであってよいが、これに限定されるものではない。
【0095】
図のフローチャート及びブロック図は、本開示の様々な実施形態に係るシステム、方法、及びコンピュータプログラム製品の考えられる実施態様のアーキテクチャ、機能、及び動作を示す。この点で、フローチャートまたはブロック図の各ブロックは、規定された論理関数(複数可)を実装するための1つ以上の実行可能命令を含むモジュール、セグメント、またはコードの一部を表し得る。また、いくつかの代替実施態様では、ブロックで留意される機能は、図で留意される順序とは違う順序で起こり得ることを留意されたい。例えば、連続して示す2つのブロックは、実際に、実質的に同時に実行される場合もあれば、ブロックは、含まれる機能に応じて逆の順序で実行される場合もある。また、ブロック図及び/またはフローチャート図の各ブロック、及びブロック図及び/またはフローチャート図のブロックの組み合わせは、規定の機能もしくは行為、または特殊目的ハードウェア及びコンピュータ命令の組み合わせを実行する特殊目的ハードウェアベースのシステムによって実装できることに留意されたい。
【0096】
上記は本開示の実施形態を対象としているが、本開示の他の実施形態及びさらなる実施形態は、その基本的な範囲から逸脱することなく考案され得、その範囲は以下の特許請求の範囲によって決定される。
図1
図2
図3
図4
図5
図6
図7