(57)【特許請求の範囲】
【請求項１】
ロボットをプログラムする方法であって、
前記ロボットにより実行される移動が、ロボットプログラムで、予め定義された動作テンプレートにより設定され、
前記動作テンプレートが、複数の動作テンプレートを含むデータベースから選択され、
前記動作テンプレートが、１つまたは複数のパラメータ化可能な実行モジュールと少なくとも１つの学習モジュールとを備え、
前記１つまたは複数の実行モジュールが、前記ロボット移動または前記ロボット移動の部分移動を計画および／または実行するために使用され、
前記学習モジュールが、初期化プロセスで前記ロボットの構成を記録し、
前記１つまたは複数の実行モジュールのパラメータが、複数の制約を含み、
前記ロボット移動または前記ロボット移動の部分移動が、前記複数の制約に基づいて計画および／または実行され、
一の制約が、制約関数ｆと、制約領域Ｒとを含み、
前記制約関数ｆが、構成ｋを実数値のベクトル空間にマップし、
前記制約領域Ｒが、実数値の前記ベクトル空間のサブセットに対応し、ｆ（ｋ）がＲに位置するときに前記構成ｋの前記制約が満たされ、
前記学習モジュールが、記録された前記構成に基づいて前記１つまたは複数の実行モジュールのパラメータを計算する方法。
【請求項２】
前記制約関数ｆのタイプとして、
前記ロボットの関節、または前記ロボットのエンドエフェクタの角度、速度、および／または加速度、
座標系に対する前記ロボットの工具中心点の位置、および／または方向、
座標系に対する工具中心点で測定された速度、角速度、および／または捻り、
座標系に対する工具中心点で測定された力、トルク、および／または捩じり、
前記ロボットのエンドエフェクタのグリップ評価、
の１つまたは複数が使用されることを特徴とする、請求項１に記載の方法。
【請求項３】
前記制約領域Ｒに使用することができるタイプが、軸に平行な境界ボックス、配向された境界ボックス、円筒、円錐、球、凸包、論理和、論理積、および／または積形成を含むことを特徴とする、請求項１または請求項２に記載の方法。
【請求項４】
前記１つまたは複数の実行モジュールのパラメータが、前記制約として実行時制約を含み、
前記実行時制約が、時点間の予め定めることが可能な間隔について満たされる制約を定義する時間依存制約であることを特徴とする、請求項１乃至請求項３のいずれか一項に記載の方法。
【請求項５】
前記１つまたは複数の実行モジュールのパラメータが、前記制約として目標制約を含み、
前記目標制約が、時点間の予め定めることが可能な間隔の間隔上限について満たされる制約を定義する制約であることを特徴とする、請求項４のいずれか一項に記載の方法。
【請求項６】
前記１つまたは複数の実行モジュールが、前記ロボット移動または前記ロボット移動の部分移動を、前記実行時制約を観察し、目標制約を実現するために、制御アルゴリズムに準拠して適応させることを特徴とする、請求項５に記載の方法。
【請求項７】
前記ロボット移動または前記ロボット移動の部分移動が、前記目標制約が満たされたときに成功裏に終了することを特徴とする、請求項５または請求項６に記載の方法。
【請求項８】
前記動作テンプレートの前記実行モジュールのための動作経路が、前記制約に基づいて、計算されることを特徴とする、請求項１乃至請求項７のいずれか一項に記載の方法。
【請求項９】
前記１つまたは複数の実行モジュールが、対象システム、すなわちロボットコントローラに対してコンパイルすることによりマップされることを特徴とする、請求項１乃至請求項８のいずれか一項に記載の方法。
【請求項１０】
前記初期化プロセスで、記録される前記構成を、ユーザがさまざまなインターフェイスを利用することにより、生成することができることを特徴とする、請求項１乃至請求項９のいずれか一項に記載の方法。
【請求項１１】
ユーザとの対話が前記初期化プロセスで実行され、記録される前記構成を生成するために、質問および／または指示が前記ユーザに与えられることを特徴とする、請求項１乃至請求項１０のいずれか一項に記載の方法。
【請求項１２】
複数の実行モジュールが、各実行モジュールが原始演算子として設計され、または少なくとも１つの実行モジュールおよび／もしくは少なくとも１つの動作モジュールにより形成される態様で、階層的に構築されることを特徴とする、請求項１乃至請求項１１のいずれか一項に記載の方法。
【請求項１３】
ロボットをプログラムするシステムであって、
前記ロボットにより実行される移動が、ロボットプログラムで、予め定義された動作テンプレートにより設定され、
前記動作テンプレートが、複数の動作テンプレートを含むデータベースから選択することが可能であり、
前記動作テンプレートが、１つまたは複数のパラメータ化可能な実行モジュールと少なくとも１つの学習モジュールとを備え、
前記１つまたは複数の実行モジュールが、前記ロボット移動または前記ロボット移動の部分移動を計画および／または実行するために使用され、
前記学習モジュールが、初期化プロセスで前記ロボットの構成を記録し、
前記１つまたは複数の実行モジュールのパラメータが、複数の制約を含み、
前記ロボット移動または前記ロボット移動の部分移動が、前記複数の制約に基づいて計画および／または実行され、
一の制約が、制約関数ｆと、制約領域Ｒとを含み、
前記制約関数ｆが、構成ｋを実数値のベクトル空間にマップし、
前記制約領域Ｒが、実数値の前記ベクトル空間のサブセットに対応し、ｆ（ｋ）がＲに位置するときに前記構成ｋの前記制約が満たされ、
前記学習モジュールが、記録された前記構成に基づいて前記実行モジュールのパラメータを計算するシステム。
【請求項１４】
プログラムコードを格納した機械可読キャリアに格納され、請求項１乃至請求項１２のいずれか一項に記載されたロボットをプログラムする方法を提供および／または実行するプログラムコードを備えた、プログラムコードを格納した機械可読キャリア。
【請求項１５】
前記ロボットが、ロボットアームを備えていることを特徴とする、請求項１乃至請求項１２のいずれか一項に記載の方法、または、請求項１３に記載のシステム、または、請求項１４に記載のプログラムコードを格納した機械可読キャリア。
【請求項１６】
前記ロボットにより実行される移動が、ロボットプログラムで、予め定義された動作テンプレートにより設定されることを特徴とする請求項１乃至請求項１２のいずれか一項に記載の方法、または、請求項１３に記載のシステム、または、請求項１４に記載のプログラムコードを格納した機械可読キャリア。
【請求項１７】
前記初期化プロセスが、教示プロセスの形式であることを特徴とする請求項１乃至請求項１２のいずれか一項に記載の方法、または、請求項１３に記載のシステム、または、請求項１４に記載のプログラムコードを格納した機械可読キャリア。
【請求項１８】
前記学習モジュールが、機械学習方法を使用して計算された前記パラメータであることを特徴とする請求項１乃至請求項１２のいずれか一項に記載の方法、または、請求項１３に記載のシステム、または、請求項１４に記載のプログラムコードを格納した機械可読キャリア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット、詳細には、ロボットアームを含むロボットをプログラムする方法およびシステムに関する。
【背景技術】
【０００２】
説明されるタイプの方法およびシステムは、技術分野で長年にわたり知られている。
結果として、産業用ロボットをプログラムするためのプログラミング方法は、ティーチイン（ｔｅａｃｈ  ｉｎ）、プレイバック、センサベースのプログラミング、ＣＡＤ（コンピュータ支援設計）プログラミング、対話ベースまたはテキストによるプログラミングなど、多様なものが存在する。
【０００３】
従来のティーチインプログラミング方法では、ロボットは、さまざまな通過点（ｗａｙｐｏｉｎｔ）に手動で接近し、それらの通過点を保存することでプログラムされる。
この手続きのための工具は、ティーチパネルという、ロボットの状態およびロボットプログラムを表示することができるグラフィックディスプレイを備えたリモートコントローラである。
ユーザは、ロボットの第１関節上に定義された点である工具中心点（ＴＣＰ）を、ジョイスティック等で３つまたは６つの空間方向に向けて進めることで、ロボットを異なる点に移動する。
ユーザは、接近したさまざまな点の座標を保存し、この情報をロボットプログラムに統合する。
この場合、各通過点は、二点間移動、線形移動、円形移動等の移動命令の目標または中間点として定義される。
操作者は、次の命令で、速度、加速度、次の命令との調和等の追加の経路パラメータを手動で入力する。
ロボットプログラムの構造、すなわち、詳細には、個別の移動命令群は、リストから選択し、コンパイルすることができる。
【０００４】
従来のプレイバックプログラミング方法の場合、個別の点が保存されるだけでなく、ユーザは、ロボットアームを連続的な経路で移動して大量の通過点を保存することができる。
たとえば、この機能により、車両のフェンダーに沿った経路などの複雑な自由形状の経路を、容易にプログラムすることができる。
こうした経路は、ティーチインプログラミング方法の個別の移動命令でプログラムするのは困難である。
通常は、連続的なリードスルー（ｌｅａｄ−ｔｈｒｏｕｇｈ）は、ロボットのフランジにある力トルクセンサ（ＦＴＳ）を利用して実現される。
人間、より詳細には操作者は、ロボットを把持して力を加える。
力は、ＦＴＳにより測定され、ロボットコントローラに伝送される。
ロボットコントローラは、力を補償する移動を連続的に計算する。
この経路が、ロボットプログラムの１つまたは複数の移動命令に割り当てられる。
【０００５】
センサベースのプログラミング方法では、プレイバック方法に類似する態様で、連続的な経路が生成される。
ただし、この目的のために、追加のセンサが使用される。
たとえば、構成要素にレーザ線を投射し、このレーザ線をカメラシステムでキャプチャし、検出されたレーザ線をロボットの移動経路に変換する。
この場合、高い精度を実現することができる。
ロボットを直接移動する必要はない。
これは、大きなロボットの場合に有利な特徴である。
しかし、追加のハードウェアと、カメラおよびロボットの較正が必要である。
【０００６】
ロボットを現場で直接プログラムする上述したオンライン方法に対し、ＣＡＤプログラミング方法では、作業セル、ロボット、および、操作される構成要素の詳細なＣＡＤモデルを使用して、ロボットをシミュレーション環境でプログラムする。
この場合、通過点は、構成要素のＣＡＤモデルの表面等でのマウス操作を利用して判断される。
たとえば、ＣＡＤモデルのエッジに従って、または、蛇行等の特定のパターンに従って、完全なパスが表面で計算される。
点が、２点間移動、線形移動、または円形移動の命令にマップされ、ロボットプログラムに保存される。
ティーチインプログラミング方法に類似する態様で、追加の経路パラメータを指定することができる。
利点として、物体の表面に沿った経路を、最小限の労力で判断することができる。
これは、プログラミング操作時にロボットを使用することなく、ＣＡＤモデルを利用して経路を直接計算できるからである。
ただし、欠点として、実際の作業セルとシミュレーションとの間の較正、ＣＡＤモデルの準備、軽微な相違への適応が必要である。
【０００７】
上述したプログラミング方法の共通点は、さまざまな方法でグラフィカルに生成することができる通過点および通過点のシーケンス（経路）を利用してプログラミングすることである。
個別の通過点、詳細には、デカルト通過点の大きな欠点の１つは、軽微な差異が存在する場合に、障害物、特異性、および／またはアクセス性の欠如に起因して、それらの通過点に接近することができず、結果として、ロボットプログラムが失敗することである。
【０００８】
従来の対話ベースおよびテキストによるプログラミング方法では、完全なロボットプログラムが、テキストエディタまたはグラフィックキットを使用して作成される。
この場合、ロボットコントローラの全機能を利用することができる。
詳細には、ロボットの外部センサの分析を使用して、たとえば、操作される構成要素の視覚的位置確認または製作公差に起因するプロセス差異に対応することができる。
ロボットプログラミング言語での直接プログラミングでは、たとえば、ＦＵＫＡのＦＴＣｔｒｌやＡｄｅｐｔのＡｄｅｐｔＦｏｒｃｅを使用した力制御のような、現時点で上述した方法ではプログラムできない追加の移動命令を使用することができる。
たとえば、力を制御するために、フィードバック制御の空間方向、力／トルクの所望の値、および単純な終了制約を指定することができる。
これらの基本的な命令から、非常に複雑なロボットプログラムを作成することができる。
その場合、たとえば、円筒を孔に挿入する単純なタスクでも、複数の移動命令と多様な力コントローラにより構成される可能性がある。
典型的な組み立てタスクは、挿入、ねじ込み、引っ掛けなど、そのような多数のタスクに基づく。
よって、組み立てタスクの実装は、膨大な労力を伴う。
さらに、ロボットプログラミング言語、プロセス、およびロボットについての専門知識が必要であるという欠点もある。
【０００９】
もう１つの問題は、現時点で、業界における自動化の程度が、自動車分野においてすら、比較的低いということである。
ロボットアームを使用して自動化される用途の大半は、ロボットアームが、差異へのセンサベースの対応を使用せずに、厳密にプログラムされた動作経路に沿って移動するという事実により特徴付けられる。
結果として、溶接ガン等の工具は、堅固にプログラムされた動作経路上を移動する。
プロセスにおける差異は、各構成要素用の特別なグリッパや特別な高精度フィーダを通じた膨大な技術的努力および経費により、無視できるレベルまで軽減される。
このような方法によってのみ、必要に応じて、ティーチインまたはプレイバックを利用したプログラミング方法を適用して、固定動作経路を生成することができる。
これが経済的に実行できなければ、ほとんどの場合、従来の慣例では、複雑なプログラミング方法による自動化を省略する。
たとえば、このやり方の問題点は、以下の理由により、そうしたアプローチがすぐに限
界に達してしまうことである。
・本番運転が短い場合、頻繁な再プログラミングが必要となり、膨大な工学的労力が無駄になる。たとえば、週ごとに変化する装置の品質保証テスト（たとえば、洗濯機の長期テストなど）が必要となる可能性がある。
・組み立てタスクは、得てしてうまくいかず、よって、たとえば、構成要素の挿入時に
、力の相互作用が避けられない。そしてこれらの組み立てタスクは、グリップ、結合、接
触等の多数の異なるタスクで構成される。
・弾性のある構成要素は、形状に変動があり、これらの形状変動をプロセスで考慮しな
ければならない。たとえば、プラスチック部品をグリップまたは結合する際の弾性のある
金属薄板がこれに相当する。
・ねじ込み用のねじなど、視覚センサを利用して検出される物体は、常時異なる場所に
ある。そのため、ロボットの位置決めが柔軟でなければならない。
【００１０】
よって、現時点で、組み立て時や品質保証テスト時などの、固定動作経路でプログラムできないタスクは、ほとんどが人間の作業者によって実行される。
【発明の概要】
【００１１】
よって、本発明の目的は、明細書の導入部分で説明したタイプのロボットを、特に操作および／または組み立てプロセスのためのロボットの単純かつ堅牢なプログラミングが可能となる、プログラムする方法およびシステムを設計し、さらに発展させることである。
【００１２】
上述した工学的目的は、本発明によると、請求項１で定義される特徴を利用して実現される。
請求項１は、ロボット、特にロボットアームを備えるロボット、をプログラムする方法であって、ロボットにより実行される移動が、好ましくはロボットプログラムで、予め定義された動作テンプレートにより設定され、動作テンプレートが、複数の動作テンプレートを含むデータベースから選択され、動作テンプレートが、１つまたは複数のパラメータ化可能な実行モジュールと少なくとも１つの学習モジュールとを備え、１つまたは複数の実行モジュールが、ロボット移動またはロボット移動の部分移動を計画および／または実行するために使用され、学習モジュールが、初期化プロセスで、特に教示プロセスの形式で、ロボットの１つまたは複数の構成を記録し、学習モジュールが、記録された構成に基づいて、好ましくは機械学習方法を使用して、実行モジュールのパラメータを計算する方法を開示する。
【００１３】
さらに、上述した工学的目的は、請求項１５で定義される特徴を利用して実現される。
請求項１５は、ロボット、特にロボットアームを備えるロボット、をプログラムするシステムであって、ロボットにより実行される移動が、好ましくはロボットプログラムで、予め定義された動作テンプレートにより設定され、動作テンプレートが、複数の動作テンプレートを含むデータベースから選択することが可能であり、動作テンプレートが、１つまたは複数のパラメータ化可能な実行モジュールと、少なくとも１つの学習モジュールとを備え、１つまたは複数の実行モジュールが、ロボット移動またはロボット移動の部分移動を計画および／または実行するために使用され、学習モジュールが、初期化プロセスで、特に教示プロセスの形式で、ロボットの１つまたは複数の構成を記録し、学習モジュールが、記録された構成に基づいて、好ましくは機械学習方法を使用して、実行モジュールのパラメータを計算するシステムを開示する。
【００１４】
さらに、上述した工学的目的は、コンピュータプログラム製品に関連する請求項１６で開示される特徴を利用して実現される。
【００１５】
まず、物体の位置決めおよび形状の差異を許容するロボットプログラムの開発が、上述した工学的目的を実現するための対話ベースのテキストプログラミングに比べて大幅に簡素化され、また自動化のための上述した問題を解決し、場合によってはスループット、信頼性、品質等の関連する利点も達成される。
差異の許容をロボットプログラムに実装することで、たとえば、人間の操作者にとっても単純で標準化されたフィーダおよびグリッパシステムを利用して、技術的努力の全体量を大幅に軽減することが可能となり、自動化を経済的に実現することができる。
【００１６】
本発明によると、ロボット、特にロボットアームを備えるロボットをプログラムするために、ロボットにより実行される移動が、ロボットプログラムで、予め定義された動作テンプレートにより設定される。
動作テンプレートは、複数の動作テンプレートを含むデータベースから選択される。
本発明によると、動作テンプレートは、１つまたは複数のパラメータ化可能な実行モジュールと、少なくとも１つの学習モジュールとを備える。
１つまたは複数の実行モジュールは、ロボット移動またはロボット移動の部分移動を計画および／または実行するために使用される。
学習モジュールは、初期化プロセスで、たとえば、教示プロセスの形式で、ロボットの１つまたは複数の構成を記録する。
記録された構成に基づいて、学習モジュールは、ＲＡＮＳＡＣアルゴリズムや主成分分析などの機械学習方法を使用して、１つまたは複数の実行モジュールのパラメータを計算する。
【００１７】
従来のティーチインプログラミング方法およびプレイバックプログラミング方法の欠点は、通過点と経路のみを生成することができ、差異を許容するために、より詳細には補償するために、それらの通過点または経路を適応させる必要があるか否か、またはどのように適応させるべきかに関する情報を生成できないことである。
【００１８】
移動回廊を定義することにより動作経路の実行時の変動を考慮するアプローチに比べて、本発明の方法およびシステムは、動作経路の変動だけでなく、グリッパ位置および／または測定された力ならびにさまざまなプロセスステップの一時的な変化等に起因して生じる、さまざまな変動も考慮することができる。
【００１９】
結果として、本発明の方法、システム、および、コンピュータプログラム製品は、特に操作プロセスおよび／または組み立てプロセスのための、ロボットの単純かつ堅牢なプログラミングを可能にする。
【００２０】
有利な態様において、実行モジュールのパラメータは、制約を含み、ロボット移動またはロボット移動の部分移動は、制約に基づいて計画および／または実行される。
結果として、ロボット移動またはロボット移動の部分移動を可変的かつ動的に計画することができ、移動の任意の差異に関し、可能な限り堅牢かつ柔軟なロボット動作の実行を実装することが可能となる。
【００２１】
追加の有利な態様において、制約は、制約関数ｆと、制約領域Ｒとを含み、この場合、制約関数ｆは、構成ｋを実数値のベクトル空間にマップし、制約領域Ｒは、実数値のベクトル空間のサブセットに対応する。
構成ｋの制約は、ｆ（ｋ）がＲに位置するときに満たされる。
よって、さまざまな種類の制約を、洗練された方法で一貫して実装することができ、ロボットの経路および移動を効率的な方法で計画することが可能となる。
【００２２】
さらに、以下のタイプの１つまたは複数が、制約関数ｆのタイプとして使用される。
・ロボットの関節、またはロボットのエンドエフェクタ、特にグリッパ、の角度、速度、および／または加速度
・座標系に対するロボットの工具中心点の位置、方向、および／または場所
・座標系に対する工具中心点で測定された速度、角速度、および／または捻り（ｔｗｉｓｔ）
・座標系に対する工具中心点で測定された力、トルク、および／または捩じり（ｗｒｅｎｃｈ）
・あるＣＡＤモデルから別のＣＡＤモデルまでの衝突自由度、距離量、および／または距離ベクトル
・ロボットおよびＣＡＤモデルのエンドエフェクタ、特にグリッパ、のグリップ評価
【００２３】
よって、上記タイプのいずれかを使用することにより、または、１つもしくは複数の制約関数に対して複数の上記タイプを組み合わせることにより、ロボット移動の計画および実行における様々な種類の差異を可能な限り包括的に考慮し、補償することができる。
【００２４】
１つの実施形態では、制約領域Ｒに使用できるタイプは、軸に平行な立方体、配向された立方体、円筒、円錐、球、凸包、ＣＡＤモデル、論理和、論理積、および／または積形成を含む。
ＯＲｉｎｇ、ＡＮＤｉｎｇ、および積形成は、少なくとも２つの制約領域を単一の制約領域に組み合わせる。
よって、制約関数の用途およびタイプに応じて、関連する制約領域に適切なタイプを適切に適用することにより、適切な値の範囲を選択することができる。
【００２５】
実行モジュールのパラメータは、制約として実行時制約を含むことができ、この場合、実行時制約は、時点間の予め定めることが可能な間隔について満たされる制約を定義する時間依存制約である。
【００２６】
さらに、実行モジュールのパラメータは、制約として目標制約を含むことができ、この場合、各目標制約は、時点間の予め決定可能な間隔の間隔上限について満たされる制約を定義する制約である。
【００２７】
よって、制約ベースの移動記述の実行時制約および目標制約のセットで、操作プロセスまたは組み立てプロセスで発生する可能性がある許容可能な差異を、直接的に、モデル化することができる。
さらに、実行時制約および目標制約は、大きな差異を補償する方法についての情報を形成する。
これは、そのような情報を提供しない従来のプログラミング方法に対する著しい改善である。
【００２８】
１つの実施形態では、１つまたは複数の実行モジュールが、ロボット移動またはロボット移動の部分移動を、実行時制約が観察される態様で、制御アルゴリズムに準拠して適応させ、より詳細には、調整することができる。
さらに、ロボット移動またはロボット移動の部分移動は、目標制約が満たされたときに、成功裏に終了させることができる。
結果として、ロボットは、動作経路に対して指定されたすべての実行時制約および目標制約が満たされたときに、動作を成功裏に実行する。
ロボットは、実行時制約が観察される態様で、自らの動作を制御アルゴリズムに準拠して適応させる。
目標制約が満たされるとすぐに、動作が成功裏に終了する。
それ以外の場合、動作は、成功しない。
【００２９】
動作テンプレートの実行モジュールのための動作経路を、制約に基づいて、特に実行時制約および／または目標制約に基づいて、好ましくは経路計画アルゴリズムを使用して、計算することができる。
【００３０】
１つまたは複数の実行モジュールは、ロボットコントローラ等の対象システムに対してコンパイルすることにより、マップされる。
この目的のために、対応する制御のタイプ、計算された動作経路、ならびに実行時制約および目標制約に基づいて、実行可能なロボットコードを作成することができる。
作成されたロボットコードは、それぞれの対象システムで完全に独立して実行することができる。
【００３１】
さらに、初期化プロセスで、記録される構成を、ユーザがさまざまなインターフェイスを利用することにより、たとえば、ユーザがロボットを手動で案内することにより、３Ｄシミュレーション環境でマウスを対話操作することにより、および／または他の適切な制御手段を利用することにより、生成することが考えられる。
【００３２】
実施形態では、ユーザとの対話が初期化プロセスで実行され、この場合、記録される構成を生成するために、質問および／または指示がユーザに与えられる。
結果として、初期化プロセス時に、より詳細には教示プロセス時に、ユーザを効果的にサポートすることができる。
【００３３】
単純かつ効率的な構造化に関し、１つまたは複数の実行モジュールは、各実行モジュールが不可分の原始演算子として、すなわち、原始実行モジュールとして設計され、または１つもしくは複数の実行モジュールおよび／もしくは１つもしくは複数の動作モジュールにより形成される態様で、階層的に構築される。
よって、既に存在し、場合によってはパラメータ化された任意の動作テンプレートまたは実行モジュールを、効果的に再使用することができる。
【００３４】
本発明の方法は、ワークの位置決めおよびその形状における差異を許容するロボットプログラムの堅牢な設定を可能にし、業界で使用することができる。
【００３５】
そのようなロボットプログラムは、（対話ベースのテキストプログラミングと異なり）ロボットプログラミング言語の命令の形式では直接作成されず、代わりに、初期化プロセス、より詳細には教示プロセスで、予め定義された動作テンプレートのデータベースに基づいて作成することができる。
動作テンプレートは、ティーチインと同様に、特定のプロセスのための少数の構成に基づいて作成することができる。
【００３６】
動作テンプレートは、ロボットにより実行されたプロセスの任意の差異を検知し、オプションで補償する、実行可能規則を含むことが好ましい。
同時に、通過点の間の動作経路を生成するための、ティーチインで使用される補間方法を、（暗黙的に定義された）通過点領域の間の動作経路を生成することができる経路計画方法で補足することができる。
【００３７】
本発明の実施形態を参照しながら、以下に詳細に説明する。
なお、以下の記述は、好ましい実施形態について説明するものであり、これらの実施形態に限定されるわけではない。
【００３８】
教示プロセスは、特に初期化プロセスとして、以下のステップを含む。
１．動作テンプレートをデータベースからロボットプログラム（または空のロボットプ
ログラム）に追加する。たとえば、挿入、螺旋検索、前進と把持、接触などの動作テンプレートを追加する。動作テンプレートごとに、１セットの実行モジュールと、１つの学習モジュールとが存在し得る。各実行モジュールは、実行時制約および目標制約を含む、パラメータを備える。この場合、原始実行モジュールは、特定の制御アルゴリズムに対応し得り、混合型力／位置制御等の既知のコントローラ実装が展開される。学習モジュールは、教示された構成および／または対話ベース入力からパラメータを作成するために、機械学習方法を実装する。
２．学習モジュールが実行される。特に、ティーチインプログラミング方法の拡張として、実行時制約および目標制約の作成を含めることが考えられる。学習モジュールのタイプに応じて、学習モジュールは、具体的な構成を作成するために、ユーザに、より詳細には操作者に、質問を送信する（グラフィカルの場合はロボットコントローラ／外部ＰＣ上での３Ｄ視覚化、対話ベースの場合は２Ｄ視覚化）ことができる。その後、学習モジュールは、実行モジュールのパラメータを構成から計算する。ユーザは、さまざまなインターフェイスを使用して、実際のロボットを案内することにより、または、３Ｄシミュレーション環境でのマウスの対話操作により、これらの構成を作成する。たとえば、四角形の４つの角を定義する４つの構成で実際のロボットを移動するか、または、ユーザが対応する４つの点をＣＡＤモデルでマークする。構成は、ロボットアームに一体化されたセンサや、外部の力／トルクセンサ（ＦＴＳ）などを利用して記録される。
３．動作テンプレートの学習モジュールで機械学習方法が実装される。これらの機械学習方法は、記録された構成から実行モジュールのパラメータを計算する。これらのパラメータは、ロボットアームの位置、グリッパの位置、力／トルクの測定値、および／またはＣＡＤモデルの点を含む可能性がある。
４．パラメータに基づいて、好ましくは迅速探査無作為ツリー（ｒａｐｉｄｌｙ  ｅｘｐｌｏｒｉｎｇ  ｒａｎｄｏｍ  ｔｒｅｅ）アルゴリズム等の経路計画アルゴリズムを使用して、動作テンプレートの各実行モジュールの動作経路を計算することができる。このステップは、２つの通過点の間の線形接続等の連続的な経路が補間のタイプの選択に依存する通過点に基づいて生成されるティーチイン方法に似ている。本事例では、連続的な経路が、制約、特に実行時制約および目標制約、に基づいて、計画アルゴリズムを使用して生成される。
５．パラメータを有する実行モジュールを、コンパイル等を使用して、対象システム、すなわちロボットコントローラに、マップすることができる。この目的のために、実行可能なロボットコードが、各制御タイプ、計算された動作経路、ならびに実行時制約および目標制約に基づいて作成される。これで、ロボットコードを各対象システムで完全に実行することができる。代替の実装では、実行モジュール、特に原始実行モジュール、を、コンピュータ、より詳細にはＰＣベースのコントローラで、ロボットコードに変換することなく直接実行することができる。
【００３９】
従来のティーチイン方法またはプレイバック方法とは異なり、実行モジュールのパラメータは、通過点または動作経路である必要はなく、むしろ、実行時制約および目標制約を表し得る。
これらの制約は、以下のように統一的に定義することができる。
制約は、構成ｋを実数値のベクトル空間にマップする制約関数ｆ（ドイツ語：  Ｂｅｄｉｎｇｕｎｇｓｆｕｎｋｔｉｏｎ）と、実数値のベクトル空間のサブセットに対応する制約領域Ｒ（ドイツ語：  Ｂｅｄｉｎｇｕｎｇｓｒｅｇｉｏｎ）とからなる。
構成ｋの制約は、ｆ（ｋ）がＲに含まれる場合にのみ満たされる。
【００４０】
たとえば、以下のタイプを制約関数ｆに使用することができる。
・ロボットの関節、またはロボットのエンドエフェクタ、特にグリッパ、の角度、速度、および／または加速度
・座標系に対するロボットの工具中心点の位置、方向、および／または場所
・座標系に対する工具中心点で測定された速度、角速度、および／または捻り
・座標系に対する工具中心点で測定された力、トルク、および／または捩じり
・あるＣＡＤモデルから別のＣＡＤモデルまでの衝突自由度、距離量、および／または距離ベクトル
・ロボットおよびＣＡＤモデルのエンドエフェクタ、特にグリッパ、のグリップ評価
【００４１】
位置制約関数、方向制約関数、または場所制約関数（姿勢制約）に関し、制約関数ｆは、特定の（予め定義された）座標系Ｋに対する工具点（工具中心点ＴＣＰ）の現在の場所を、３次元ベクトル（位置制約、方向制約）または６次元ベクトル（場所制約）として構成する。
【００４２】
１つの実施形態の文脈において、位置の３次元ベクトルと、方向の３次元ベクトルとからなる場所制約関数の計算は、以下のように説明することができる。
位置制約および方向制約は、それぞれ３次元ベクトルのみで構成される。
【００４３】
ＨがＫに対するＴＣＰの場所を記述する同次変換行列である場合、６次元ベクトルは、Ｈの３次元変換と、Ｈの３次元縮尺回転軸（軸角度表現）とにより形成される。
Ｈの縮尺回転軸は、以下のようにして計算することができる。
１．Ｈの３×３の回転行列が、ｑｗを実数部とする４元数（ｑｘ，ｑｙ，ｑｚ，ｑｗ）に変換される。
２．回転角度ａ（ａｌｐｈａ）は２＊ａｃｏｓ（ｑｗ）である。
ａｃｏｓは、逆余弦（ａｒｃ  ｃｏｓｉｎｅ）関数である。
３．縮尺回転軸は、ａ＊１／ｓｉｎ（ａ）＊［ｑｘ  ｑｙ  ｑｚ］である。［ｑｘ  ｑｙ  ｑｚ］は、ｑｘ、ｑｙ、およびｑｚからなる３次元ベクトルである。
【００４４】
速度制約関数、角速度制約関数、および捻り制約関数は、類似する態様で計算することができる（捻り＝３次元速度ベクトルと３次元角速度ベクトルとからなる６次元ベクトル）。
ただし、この場合、特定の座標系Ｋに対するＴＣＰの３次元（変換）速度および３次元角速度は、速度ベクトルの変換規則に応じて変換され、制約関数の値として保存される。
【００４５】
また、力制約関数、トルク制約関数、および捩じり制約関数も、前のセクションで示した方法と同じように扱うことができる。
同時に、力、トルク、または力とトルクとの組み合わせ（捩じり）が計算される。
【００４６】
関節角度制約関数、関節速度制約関数、および、関節加速度制約関数は、ロボットシステムにおける現在の位置、速度、および、動作自由度の加速度のｎ次元ベクトルを直接表す。
【００４７】
衝突自由度制約関数は、周囲領域の３Ｄ  ＣＡＤモデルとロボットの３Ｄ  ＣＡＤモデルとの衝突、またはロボットとそれ自体との衝突がある場合に、値として１を出力するように実装することができる。
この衝突の計算は、３Ｄ  ＣＡＤモデルの三角形メッシュを交差させることにより計算することができる。
その場合、必要に応じて、標準ライブラリを使用することができる。
衝突がない場合、０が返される。
【００４８】
距離量制約関数は、ある３Ｄ  ＣＡＤモデルの第２の３Ｄ  ＣＡＤモデルからのユークリッド距離を、第２および第２の３Ｄモデルの２つの点に準拠する一対の点の間の距離として、相互間の考えられる最短距離により計算することが好ましい。
距離ベクトル制約関数は、同じ一対の点の第１の点から第２の点までの正規化されたベクトルを計算することが好ましい。
【００４９】
場所制約は、たとえば、次のように実現または実装される。
ここで、座標系Ｋが物体の重心で定義されると仮定する。
この場合、Ｋに対するＴＣＰの６次元ベクトルとして相対場所は、上述した式により、計算される。
Ｒは、中心点ベクトル［ｍ１  ｍ２  ｍ３  ｍ４  ｍ５  ｍ６］および差異ベクトル［ｅ１  ｅ２  ｅ３  ｅ４  ｅ５  ｅ６］として与えられる６次元立方体である。
この立方体は、すべてのベクトル［ｖ１  ｖ２  ｖ３  ｖ４  ｖ５  ｖ６］に準拠する。ここで、ｍｉ−  ｅｉ＜＝ｖｉ＜＝ｍｉ＋ｅｉである。
この制約は、工具中心点、さらにはロボットアーム位置も、把持される物体の上方等の特定の領域に位置していなければならないことを暗示する。
この場合、座標系Ｋは、物体の重心で定義される。
この場合、Ｒの考えられる値は、以下のようになる。
［ｍ１  ｍ２  ｍ３  ｍ４  ｍ５  ｍ６］＝［０  ０  ０．０５  １．５７０８  ０  ０］
および
［ｅ１  ｅ２  ｅ３  ｅ４  ｅ５  ｅ６］  ＝  ［０．０１  ０．０１  ０  ０  ０  ０］
【００５０】
この制約領域は、物体の重心の０．０５ｍ上方に、Ｘ軸を中心として約９０度、すなわち、１．５７０８ラジアン回転した方向をもって位置している。
この点からの許容可能な偏差は、Ｘ方向およびＹ方向で０．０１ｍである。
【００５１】
力制約（ドイツ語：Ｋｒａｆｔｂｅｄｉｎｇｕｎｇ）は、次のようにして実装することができる。
すなわち、ＦＴＳにより測定された力は、３次元ベクトル［ｆｘ  ｆｙ  ｆｚ］として示される。
制約領域Ｒは、半径がｒ、中心点ベクトルが［ｍ１  ｍ２  ｍ３］である３次元の球Ｒである。
力制約は、［ｆｘ  ｆｙ  ｆｚ］がＲに位置する場合のみ、すなわち、以下の場合にのみ満たされる。
ｎｏｒｍ（［ｆｘ−ｍ１  ｆｙ−ｍ２  ｆｚ−ｍ３］）＜＝ｒ
【００５２】
この場合、ｎｏｒｍは、ベクトルのユークリッドノルムである。
よって、力制約は、力の量がｒ以下である場合にのみ満たされる。
【００５３】
本発明の実施形態において、制約関数は、以下の計算の１つまたは複数を満たす必要があるか、または満たさなければならない。
ここで、ｋは構成であり、ｒはＲ（ｋ）の次元と等価の次元を有する実数値ベクトルである。
１．ｆ（ｋ）＝ｒ。すなわち、関数ｆは、構成ｋに適用することができる。これは、すべての関数ｆについて満たされる必要がある。
２．ｆ−１（ｒ，ｋ’）＝ｋ。すなわち、値ｒおよび基準構成ｋ’が与えられる場合、ｆ（ｋ）＝ｒを満たす構成ｋを計算することができる（計算Ｂ．１）。
３．ｆ（ｋ）をｒによりインクリメントすることができる。すなわち、構成ｋおよびベクトルｒが与えられる場合、ｆ（ｋ’）＝ｆ（ｆ−１（ｆ（ｋ）＋ｒ））となるように、すなわち、構成ｋが、Ｒにおける与えられたステップｒに対応する態様で修正されるように、構成ｋ’を計算することができる。
【００５４】
本発明の実施形態によると、制約領域は、値Ｒの実数値範囲を定義する。
この場合、Ｒは、以下の計算の１つまたは複数を許可する必要があるか、または、許可しなければならない。
ｒは、Ｒの次元と等価である次元を有する実数値ベクトルである。
１．ｒからＲまでの実数値距離ｄ＞＝０。ｄは、ｒがＲに含まれる場合は０であり、それ以外の場合はｒからＲの表面までの最小距離（計算Ｂ．２）。
２．ｒからＲの表面までの実数値距離。ｒがＲに含まれる場合、ｄは、ｒからＲの表面までの最小距離の負の値。それ以外の場合、ｄは、ｒからＲの表面までの最小距離。
３．ｅ＝０または１を含む。ｅは、ｒがＲに含まれる場合にのみ、１。この計算は、すべての制約領域により満たされなければならない。
４．Ｒの中心点ｍ。この計算は、すべての制約領域により満たされなければならない。
５．表面上の無作為点ｒ。無作為ベクトルｒは、ｒがＲの表面上に位置するように、計算することができる。
６．内部空間からの無作為点。無作為ベクトルｒは、ｒがＲに含まれるように、計算することができる（計算Ｂ．３）。
７．Ｒの任意の方向ｖでの延長の計算（計算Ｂ．４）。
【００５５】
この場合、使用可能なＲのタイプは、軸に平行な立方体（軸に平行な境界ボックス）、配向された立方体（配向された境界ボックス）、円筒、円錐、球、凸包、ＣＡＤモデル、ＯＲｉｎｇ、ＡＮＤｉｎｇ、および／またはタプル形成を含む。
【００５６】
結果として、制約ベースの移動記述の実行時制約および目標制約のセットで、組み立てプロセスなど、ロボットプログラムを実行する過程で発生する可能性がある許容可能な公差を直接モデル化することができる。
さらに、これらの制約は、大きな差異を補償する方法についての情報を表す。
これは、そのような情報を提供しない従来のプログラミング方法に対する著しい改善である。
【００５７】
大きな差異の考えられる補償について、以下にさらに詳しく説明する。
この場合、動作計画と制御が区別される。
【００５８】
動作計画において、目標は、制約ベースの移動記述を満たす動作経路を生成することである。
この場合、Ｂｅｒｅｎｓｏｎら著『Ｍａｎｉｐｕｌａｔｉｏｎ  Ｐｌａｎｎｉｎｇ  ｏｎ  Ｃｏｎｓｔｒａｉｎｔ  Ｍａｎｉｆｏｌｄｓ』、ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｒｏｂｏｔｉｃｓ  ａｎｄ  Ａｕｔｏｍａｔｉｏｎ（ＩＣＲＡ  ‘０９）、２００９年５月による制約ベース双方向迅速探査無作為ツリー（ＣＢｉＲＲＴ）アルゴリズムを、Ｓｔｉｌｍａｎ，Ｍ著『Ｔａｓｋ  ｃｏｎｓｔｒａｉｎｅｄ  ｍｏｔｉｏｎ  ｐｌａｎｎｉｎｇ  ｉｎ  ｒｏｂｏｔ  ｊｏｉｎｔ  ｓｐａｃｅ』、Ｉｎｔｅｌｌｉｇｅｎｔ  Ｒｏｂｏｔｓ  ａｎｄ  Ｓｙｓｔｅｍｓ、２００７年による無作為勾配降下（ＲＧＤ）投影法と組み合わせ、実行時制約および目標制約に適応させることができる。
その場合、経路計画アルゴリズムは、以下のステップを含む。
１．すべての目標制約が満たされる対象構成、すなわち、構成、を生成する。対象構成のセットは、通常は、２つ以上の要素を含むため、この場合の問題は、ロボットシステムが物体を置くことができる場所等からの許容偏差に関する。
２．開始構成から生成された対象構成までの区分的線形接続を検索する。このステップでは、開始構成から、いずれかの対象構成まで延びる動作経路が生成される。結果として、ロボットシステムは、実行時制約の形式で目標指向的な態様で与えられる差異内で、有効な動作経路を独立して生成することができる。
【００５９】
しかし、対象構成の計算および検索の基盤として、すべての制約が満たされるわけではない構成をすべての制約を満たす類似構成にマップする投影法を、最初に提供することが可能である。
このために、投影法として、無作為勾配降下（ＲＧＤ）を制約により実装することができる。
目標は、ｋ’の制約の特定のセットが満たされ、ｋ’が、ｋよりｄ＞０を超えて離れないように、構成ｋを構成ｋ’にマップすることである。
つまり、提案される投影法は、制約のセットが守られない構成ｋを、少なくとも制約が満たされるまで、修正することを可能にする。
これに関し、ＲＧＤアルゴリズムが、特別な距離関数と共に使用される。
【００６０】
構成がｋ、構成のセットがｂ１乃至ｂｎである場合、距離関数ｄｉｓｔ（）は、以下のように定義される。
１．各ｂｉについて、距離値ｄｉを計算する。ｆを制約関数、Ｒをｂｉの制約領域とする。Ｒが、距離計算（計算Ｂ．２を参照）をサポートする場合、ｄｉ＝ＭＡＸの最小であり、Ｒまでのｆ（ｋ）の距離である。Ｒが、距離計算をサポートしない場合、ｆ（ｋ）が、Ｒに含まれれば、ｄｉ＝０である。それ以外の場合、ｄｉ＝ＭＡＸである。ＭＡＸは、０より大きい定数であり、この場合は、１００，０００である。
２．すべての距離値ｄｉの最大ｄｍａｘを形成する。
３．構成ｋについての距離関数の値は、ｄｍａｘである。
【００６１】
ＲＧＤアルゴリズムは、無作為勾配降下を実行することにより、構成ｋを、すべての制約ｂｉが満たされる構成ｋ’に投影する。
その場合、以下のプロセスが実行される。
なお、ｅは、０より大きく（ｅ＞０）、ｋ’は、初期段階でｋと等価である（ｋ’＝ｋ）とする。
関数ｂｏｏｌ  ＲＧＤ（ｋ，ｂｉ，ｋ’）：
１．ＣＯＵＮＴＥＲ＝０と設定する。
２．ＣＯＵＮＴＥＲ＞ＭＡＸＩＭＵＭの場合、戻り値ｆａｌｓｅで終了する。
３．均一分布ｍの後、構成ｋの次元の方向ベクトルｓｉを作成する。構成ｋｉ＝ｋ’＋ｅ＊ｓｉと設定する。すべてのｋｉについて、ｖｉ＝ｄｉｓｔ（ｋｉ）を計算する。
４．すべてのｖｉの最小値（ａｒｇｍｉｎ関数）で引数ｊを判断する。
５．ｖｊ＝０の場合、ｋ’＝ｋｊと設定し、戻り値ｔｒｕｅで終了する。
６．ｖｊ＞＝ｄｉｓｔ（ｋ）の場合、ＣＯＵＮＴＥＲ＝ＣＯＵＮＴＥＲ＋１と設定し、２に進む。
７．ｎｏｒｍ（ｋ−ｋ’）＞ｄの場合、ＣＯＵＮＴＥＲ＝ＣＯＵＮＴＥＲ＋１と設定し、２に進む。
８．ｋ’＝ｋｊと設定する。
９．２に進む。
【００６２】
これで、対象構成を多段階プロセスで生成することができる。
ｂｉ＝（ｆｉ，Ｒｉ）が、制約関数ｆｉと制約領域Ｒｉとを有する目標制約であると仮定する。
１．ｆｊを反転させることができ（計算Ｂ．１を参照）、Ｒｊが無作為ベクトルの計算（計算Ｂ．３を参照）をサポートするように、制約ｂｊをｂｉから判断する。
２．すべてのｂｊを反復処理する。
ａ．計算Ｂ．３に基づいて、無作為値ｒｊをＲｊから計算する。
ｂ．ｋｊ＝ｆ−１（ｒｊ，ｋ）を計算する。
３．ＲＧＤ（ｋ，ｂｉ，ｋ’）がｔｒｕｅの場合、ｋ’を対象構成のセットに追加する。
【００６３】
開始構成ｋ０から対象構成のセットｋｊまでの区分的線形接続の検索に関し、ＣＢｉＲＲＴアルゴリズムを使用することができる。
ただし、ステップＣｏｎｓｔｒａｉｎＣｏｎｆｉｇ（ｋｏｌｄ，ｋｎｅｗ）を、ステップＲＧＤ（ｋｏｌｄ，ｂｉ（ｔ），ｋｎｅｗ）で置換する。
この場合、ｂｉ（ｔ）は、時点ｔにおける実行時制約であり、ｔは、計画プロセスと同じペースを保つためにインクリメントされる。
【００６４】
経路計画アルゴリズムの最終結果は、構成（ｔ１，ｋ１），  ．．．，（ｔｍ，ｋｍ）による時点のシーケンスである。
ここで、ｋ１は、開始構成に対応し、ｋｍは、対象構成のセットのうちのいずれかの対象構成に対応する。
この場合、ｋ１からｋ−１までの実行時制約が満たされる。
ｋｍの目標制約が、満たされる。
【００６５】
本発明の実施形態に応じて適切な制御を提供するために、位置および力の混合制御の制御アルゴリズムをさらに発展させて、実行時制約および目標制約に基づいてパラメータ化することができる。
この場合、実行時制約および目標制約の解釈は、以下のようになる。
１．実行時制約は、制御を使用して観察されなければならない
２．目標制約は、満たされた場合に、実行を中断する
【００６６】
本発明の実施形態では、制御アルゴリズムは、６つの次元ｘ、ｙ、ｚ、ｒｘ、ｒｙ、およびｒｚで実装される比例積分微分コントローラ（ＰＩＤコントローラ）として提供される。
混合型位置コントローラと力コントローラの大きな違いは、一般的に使用される選択規則を置換するエラー計算にある。
制御アルゴリズムは、位置、方向、場所、力、トルク、または、捩じりの制約関数により、実行時制約をサポートする。
これらの制約関数は、均一な構造を有し、特定の座標系Ｋに対するＴＣＰでの場所、または、捩じりに基づく。
【００６７】
ＰＩＤコントローラの更新ステップは、以下のように実装することができる。
１．すべての実行時制約を反復処理する。
２．現在の構成Ｋについて、現在の実行時制約の制約関数ｆの値ｆ（ｋ）を計算する。
３．ＰＩＤコントローラのエラー計算を、ｘ、ｙ、ｚ、ｒｘ、ｒｙ、およびｒｚの各次元について個別に実行する。
その際、各次元ｉで、以下の手順を実行する。
ａ．座標ｉにおけるｆ（ｋ）から領域中心点ｍまでの距離ｄを計算する。
ｂ．計算Ｂ．４に基づき、ｉにより与えられる方向での制約領域Ｒの延長ａｉを計
算する。同時に、たとえば、２Ｄ面の場合、延長が無限であることが明示的に
考えられる。
ｃ．量ｄｉがａｉ未満である場合、エラーｅｉを０に設定する。それ以外の場合、
エラーｅｉ＝ａｉ−ｄｉとする。
ｄ．ＰＩＤ更新をエラーｅｉに適用し、所望の値ｓｉを計算する。
４．制約関数の変換規則に基づいて、対象ベクトルｓ＝［ｓ１  ｓ２  ｓ３  ｓ４  ｓ５  ｓ６］をＴＣＰに変換する。
５．力、トルク、または捩じりの制約関数が与えられる場合、ばね力の原理に応じた特定のばね定数により、対象ベクトルを対象場所ベクトルに変換する。
６．すべての実行時制約の対象ベクトルおよび変換された対象場所ベクトルの合計を計算する。
７．計算された合計と相対的にロボットを移動する。
【００６８】
よって、ロボットは、位置制御、力制御、または位置および力の同時制御を、特定の次元ｉで、現在の実行時制約に応じて実行する。
【００６９】
現在の構成のすべての目標制約が満たされると、制御プロセスが終了する。
【００７０】
加えて、制御アルゴリズムを、関節角度空間および／またはデカルト空間での位置制御や力制御など、目標制約を使用するように容易に拡張することができる。
この場合、現在の構成ｋは、制御ループで計算される。
ｋのすべての目標制約が満たされると、制御プロセスは、成功裏に終了する。
【００７１】
本発明の実施形態によると、実行時制約および目標制約は、経路の計画および制御により動作経路を生成するためのパラメータ化を構成する。
これにより、許容可能な差異を明示的にモデル化することができ、よって堅牢性を向上させることができる。
実行時制約および目標制約を利用したプログラミングは、アルゴリズム的に複雑であるため、ロボット工学の専門家に限られた領域である。
したがって、実行モジュールを学習モジュールと組み合わせる動作テンプレートが、洗練された方法で使用される。
実行モジュールは、制約を利用して、特に、実行時制約および目標制約を利用して、パラメータ化することができる。
学習モジュールは、単純な機械学習アルゴリズムを使用して、少数の構成から実行時制約および目標制約を実行モジュールのパラメータとして生成することができる。
学習モジュール自体は、たとえば、いくつかの構成を利用して、それらの構成を生成するステップを操作者に案内するプロセスを表す。
結果として、従来は、終了条件または対象条件の長時間にわたる複雑なテキストプログラミングが求められたタスクのためのロボットプログラムを、専門家でなくても、容易に作成することができる。
【００７２】
ロボットの移動は、動作テンプレートを利用して記述される。
動作テンプレートは、１つまたは複数の実行モジュールと、学習モジュールとからなる。
各実行モジュールは、原始演算子（基本演算子）、すなわちそれ以上分割できないものであるか、または、複数の実行モジュール（マクロ演算子）からなる。
後者の場合、少なくとも２つのクラスの実行モジュールが存在する。
すなわち、コントローラ（ドイツ語：Ｒｅｇｌｅｒ）と、経路プランナ（動作プランナともいう）である。
経路プランナは、実行時制約および目標制約に基づいて動作経路を生成する。
コントローラは、記述された関節角度空間における位置コントローラ、デカルト空間における位置コントローラ、力コントローラ、または混合型位置／力コントローラのいずれかのタイプである。
コントローラ、より詳細には、閉ループコントローラは、動作経路の実行時に生成される実行時制約および目標制約を処理する。
【００７３】
実行モジュールは、実行時制約および／または目標制約のセットを利用してパラメータ化することができる。
動作テンプレートに格納される実行時制約および目標制約は、部分的にのみパラメータ化されることが好ましい。
各制約について、制約関数ｆのタイプだけでなく、制約領域Ｒのタイプも固定される。
制約関数のパラメータは、自由である。
よって、たとえば、場所制約の座標系Ｋや、ＴＣＰの場所が考えられる。
同様に、制約領域のパラメータ、すなわち、軸配向された立方体の中心点、方向、および延長なども、自由である。
自由パラメータは、学習モジュールを利用して計算される。
【００７４】
初期化プロセスまたは教示プロセスの一部としての、ユーザ、より詳細には操作者との対話に関する目標は、ユーザが実行モジュールの自由パラメータの計算のための意味論的に正しい構成を作成できるようにする、生成される構成の概略的な表現である。
たとえば、ユーザは、ＦＴＳでの力測定を可能にするために、物体との接触を確立しなければならない。
【００７５】
プレゼンテーションは概略的な形式で実行される。
これは、動作テンプレートが大まかに定義されており、物体、グリッパ、より詳細にはロボットの実際の外観から独立しているからである。
【００７６】
概略的表現は、複数の方法で実行することができる。
１．動作テンプレートの実行、および／または動作テンプレートで構成を生成するプロセスの実表現および／またはコンピュータアニメーション表現で、ビデオを提示する。後者の場合、個別のステップ、すなわち、生成される個別の構成は、たとえば、ビデオの一時停止により強調される。
２．対話システムを使用して、構成を生成するプロセスをステップごとにユーザに示し、ユーザが既に生成された構成に戻ってプロセスの一部を繰り返せるようにする。１に類似した態様で、生成される構成ごとに、生成される構成の視覚化を含む少なくとも１つの対話ボックスが表示される。
【００７７】
自由パラメータは、構成Ｔｉに基づいて、学習モジュールにより計算することができる。
この場合、制約領域のタイプと、制約関数とが与えられる。
【００７８】
Ｔ１乃至Ｔｎが、制約ｂ＝（ｆ，Ｒ）の自由パラメータを計算するための構成である場合、以下のようになる。
１．ｆ（Ｔ１），  ．．．ｆ（Ｔｎ）を計算する。
２．自由パラメータを持たない制約領域Ｒｐに数値を割り当てる品質関数ｇ（Ｒｐ）＞＝０を指定する。説明している作業では、ｇ（Ｒ）は、領域Ｒの体積および表面の重み付けされた合計である。
３．ＳｉｍｐｌｅｘアルゴリズムやＲｏｓｅｎｂｒｏｃｋアルゴリズムなどの非線形最適化方法を使用して、次の最適化問題を解決する。すなわち、ｇ（Ｒ）に関するＲｐが、最小となり、ｆ（Ｔｎ）から（Ｔ１）までがＲｐに含まれるような、自由パラメータＲの値を検索する。
【００７９】
好ましくはある程度までパラメータ化された動作テンプレートに対して、特定の学習モジュールを使用することで、少数の構成のみで実行時制約および目標制約を判断することが可能となる。
これにより、プログラミング時間を減らすと共に、プロセスの結果を確認することが可能となる。
このような機能は、堅牢な産業利用のために必須である。
【００８０】
テキストプログラミングや対話ベースのプログラミングと異なり、プログラマは、移動命令のパラメータを直接入力する必要はない。
代わりに、これらのパラメータは、先行する教示プロセスから自動的に計算される。
【００８１】
制御タイプおよび対象システムごとに、実行モジュールを実行可能ロボットコードに変換するコンパイル規則が存在する場合がある。
その際、目標制約の評価は、ロボットコードで直接モデル化される。
実行時制約は、コントローラのタイプに応じてシミュレートされる。
位置コントローラの場合、ロボットアームの場所または関節角度に影響する実行時制約のみが（たとえば、上述した方法により）調整される。
力コントローラの場合、測定されたＦＴＳ値に対する実行時制約が調整される。
混合型位置／力制御の場合、位置およびＦＴＳ値について実行時制約が考慮される。
同時に、制約領域Ｒが分析されて、力制御または位置制御される空間軸が判断される。
特定の空間軸におけるしきい値よりも大きい延長は、無限延長として評価される。
無限延長を有する空間軸は、位置制約で位置制御されず、力制約で力制御されない。
【００８２】
本発明の方法および／もしくはシステムならびに／またはそのさまざまな実施形態は、従来のティーチインを、差異を考慮する必要があるロボットプログラムを含むように拡大する。
結果として、実行可能プログラムは、ティーチインの場合のように移動命令を含むだけではなく、移動命令が実行時制約および目標制約を有する。
統合型制御アルゴリズムは、実行時制約を観察し、目標制約を実現するために、コントローラのタイプに応じてロボットの移動を変化させる。
よって、上述した実施形態により、これまで対話ベースのプログラミングまたはテキストプログラミングを利用して時間をかけて手動で作成しなければならなかった制御戦略を有するロボットプログラムを容易に作成することが可能となる。
【００８３】
よって、考えられるプロセスステップは、テンプレートに基づいて構成を教示するステップと、実行時制約および目標制約を計算するステップと、典型的な動作経路を計算するステップと、実行時制約および目標制約により制御プロセスにマップするステップと、コンパイルしてロボットコードを生成するステップとを含む。
【００８４】
上記は、プログラマが制御プロセスをプログラミング言語で開発し、そのパラメータを手元のタスクに応じて手動で定義する、対話ベースのプログラミング方法またはテキストプログラミング方法の類似するプロセスを置換する。
これらの方法では、プログラマは、対象制約および終了制約をプログラミング言語で作成してパラメータ化する。
開始ポーズおよび中間点は、ティーチインを利用して、ロボットで生成される。
【００８５】
これに対し、本発明の方法および／もしくはシステムならびに／またはその実施形態は、複雑なロボットプログラムを迅速に、かつ操作者の負担を減らして作成することを可能にする。
よって、これまで経済的または複雑さの理由で自動化されていなかった用途を自動化することが可能となる。
加えて、生成される部分的な解決策、すなわち、パラメータ化された動作テンプレートのセットは、容易に再使用することができる。
これは、個別の構成を学習モジュールで修正することにより、動作テンプレートを容易に適応させることができるからである。
【００８６】
具体的には、一般的な組み立てタスク等の定義されたタスクプロファイルの場合、プログラマは大量の移動命令のための対象条件および終了条件を、対話ベースまたはテキストのプログラミングインターフェイスで、時間をかけて手動で作成する必要はない。
実際、この手続きは、動作テンプレートのセットからロボットプログラムを単純かつ洗練された方法で作成し、各学習モジュールに少数の明確に定義された構成を教示することにより、置換される。
作成されたロボットプログラムは、対象条件および終了条件を実行時制約および目標制約の形式で自動的に含む。
よって、ティーチインまたはプレイバックと異なり、特定の通過点にアプローチする必要はない。
むしろ、条件が満たされれば、すなわち、たとえば、領域から通過点にアプローチすることが可能であれば、移動を成功裏に実行することができ、結果として、より柔軟な実行が可能となる。
加えて、差異を補償する方法に関する情報が、制約の形式で存在する。
よって、ロボットプログラムは、制約領域の延長に対応する差異に対する耐性を有する。
【００８７】
本発明の実施形態で使用する定義を、以下にいくつか示す。
【００８８】
経路計画の分野では、構成（ドイツ語：  Ｋｏｎｆｉｇｕｒａｔｉｏｎ）は、ロボットシステムの状態についての一意かつ明確な記述である。
よって、本件の場合、構成は、以下の情報を含むｎ次元の実数値ベクトルとして与えられる。
・ロボットシステムのすべての制御可能および制御不可能な自由度の値。
すなわち、６軸の産業用ロボットであれば、６つの関節角度値
・ロボットに搭載された工具のすべての制御可能および制御不可能な自由度の値。
すなわち、電気ジョーグリッパであれば、グリッパジョー位置の値
・ロボットに搭載されたセンサの記録されたセンサデータの値。
すなわち、６次元力トルクセンサの場合、空間方向ｘ、ｙ、ｚで測定された力の３つ
の値と、空間方向ｘ、ｙ、ｚで測定されたトルクの３つの値
・時点ｔの値
【００８９】
構成空間（ドイツ語：Ｋｏｎｆｉｇｕｒａｔｉｏｎｓｒａｕｍ）は、ロボットシステムを占有することができるすべての構成のセットである。
この場合、ロボットの自己衝突につながる制御可能な関節角度位置などの物理境界制約は、無視される。
構成がｎ個の座標で構成され、各座標がＬｉからＵｉまでの値を取り得る場合、構成空間は、次元がｎ、辺長がＵｉ−Ｌｉ、中心点が（Ｌｉ＋Ｕｉ）／２の超立方体として定義される。
【００９０】
動作経路（動作）は、０から１までの閉区間の各点に構成を割り当て、連続的である関数ｂとして指定することができる。
点０におけるｂの値は、開始構成である。
点１におけるｂの値は、対象構成である。
よって、動作経路は、構成空間における連続的な接続である。
【００９１】
制約（ドイツ語：Ｂｅｄｉｎｇｕｎｇ）は、構成ｋに値０または１を割り当てる関数ｇとして指定することができる。
制約ｇは、ｇ（ｋ）＝１である場合にのみ、構成ｋで満たされたことになる。
それ以外の場合、制約は、満たされていない。
【００９２】
実行時制約（ドイツ語：Ｗ▲ａｅ▼ｈｒｅｎｄｂｅｄｉｎｇｕｎｇ）は、時間依存制約として指定することができる。
すなわち、実行時制約は、各時点ｔに対する制約を定義する。
実行時制約は、動作経路の０以上１未満の点における値に適用される。
動作経路ｂの実行時制約ｇ（ｔ）は、０以上１未満のすべてのｔについてｇ（ｔ）（ｂ（ｔ））＝１である場合にのみ満たされる。
【００９３】
目標制約（ドイツ語：Ｚｉｅｌｂｅｄｉｎｇｕｎｇ）は、動作経路の点１における値に割り当てられる制約として指定することができる。
動作経路ｂの目標制約ｇは、ｇ（ｂ（１））＝１である場合にのみ満たされる。
【００９４】
制約ベースの移動記述（および制約ベースの動作表現）は、実行時制約のセットおよび目標制約のセットとして定義することができる。
動作経路は、動作経路のすべての実行時制約、および、すべての目標制約が満たされる場合に、制約ベースの移動記述を満たす。
【００９５】
実行時制約および目標制約を使用してロボット移動を実行する過程で、たとえば、動作計画および／または制御を使用して、動作経路を生成することができる。
動作計画の場合、動作経路は、ロボットでの実行の前に生成される。
制御の場合、動作経路は、実行時に制御アルゴリズムを利用して生成される。
その際、開始構成は、一定であり、移動の始まりに対応する。
対象構成は、常に現在の構成、すなわち、ロボットが現時点で存在する構成である。
結果として、制御アルゴリズムにより生成された経路は、着実に成長する。
ロボットは、動作経路に与えられた実行時制約および目標制約がすべて満たされる場合に、移動を成功裏に実行する。
ロボットは、実行時制約が観察される態様で、その移動を制御アルゴリズムに適応させる。
目標制約が満たされた直後に、移動は、成功裏に終了する。
それ以外の場合、実行は、成功しない。
【００９６】
本発明の方法で設計および発展させるための選択肢は、多様に存在する。
これについては、請求項１に従属する請求項を参照すると共に、本発明の他の好ましい実施形態についての以下の説明を図面と共に参照されたい。
本発明の実施形態について図面を参照しながら説明すると同時に、好ましい実施形態および発展についても全般的に説明する。
【図面の簡単な説明】
【００９７】
【図１】ロボットによりねじを予め定めることが可能なトルク以下で設定するために、人が手動でロボットプログラムを作成する方法を示す概略図である（従来技術）。
【図２】動作テンプレートの、特にコンパイルプロセス時の、階層構造が示された、本発明の方法またはシステムの実施形態を示す概略図である。
【図３】本発明の方法またはシステムの実施形態に係る、動作テンプレートの構造およびパラメータを示す概略図である。
【図４】本発明の方法またはシステムの実施形態に係るプログラミングプロセスを示す概略図である。
【図５】本発明の方法またはシステムの実施形態に係る、ティーチングにより、特に実行時制約および目標制約を利用して、ロボットプログラムをプログラムするための個別の構成要素を示す概略図である。
【図６】操作者により生成されるねじ込み操作の構成を記録するための、本発明の方法またはシステムの実施形態に係る初期化プロセス、より詳細には教示プロセスを示す概略図である。
【図７】操作者により生成されるねじ込み操作の構成を記録するための、本発明の方法またはシステムの実施形態に係る初期化プロセス、より詳細には教示プロセスを示す概略図である。
【図８】操作者により生成されるねじ込み操作の構成を記録するための、本発明の方法またはシステムの実施形態に係る初期化プロセス、より詳細には教示プロセスを示す概略図である。
【図９】操作者により生成されるねじ込み操作の構成を記録するための、本発明の方法またはシステムの実施形態に係る初期化プロセス、より詳細には教示プロセスを示す概略図である。
【図１０】操作者により生成されるねじ込み操作の構成を記録するための、本発明の方法またはシステムの実施形態に係る初期化プロセス、より詳細には教示プロセスを示す概略図である。
【図１１】本発明の方法またはシステムの実施形態の対象領域を示す概略図である。
【図１２】本発明の方法またはシステムの実施形態に応じて教育される、より詳細には記録される、構成を生成するための操作者に対するグラフィック命令の例である。
【図１３】本発明の方法またはシステムの実施形態に係る、初期化プロセス、より詳細には動作テンプレートのパラメータを生成するための学習モジュールを利用した教示プロセス  のイベントの順序を示す概略図である。
【発明を実施するための形態】
【００９８】
図１乃至図１２は、一般的な用途、すなわち、ねじを特定のトルク以下で、ワーク１３にねじ込むロボット７のプログラミングの例を示す。
【００９９】
図１は、ロボット７によりねじ１２を予め定めることが可能なトルク以下でねじ込むために、人が従来技術に応じて手動で作成するロボットプログラム１の概略図である。
具体的には、ロボットプログラム１は、図１によると、現時点で人が手動でプログラムまたは作成しなければならない態様で、上記タスクを実行する／行うことを目的とした指示またはロボット命令を含む。
ボックスは、パラメータを備えた個別のロボット命令である。
Ｐ１、Ｐ２、Ｐ３、およびＰ４は、プログラマにより、プログラムにパラメータとして手動で統合された教示点である。
ＳＥＮＳＯＲ［２］は、ロボットの力／トルクセンサのＺ値を読み取る。
ＳＥＮＳＯＲ［５］は、Ｚに関するトルクを読み取る。
ＯＵＴ［０］＝１または０は、ロボットのねじ回しを活性化または非活性化する。
【０１００】
図１に例示されたロボットプログラム１は、以下のプログラム命令ＰＡ１乃至ＰＡ１４を含む。
ＰＡ１：ねじの上の開始位置Ｐ１にすばやく移動する
ＰＡ２：ねじの２ｍｍ上方のＰ２にねじ回しを進める
ＰＡ３：Ｚ方向の測定された力値が２ニュートン未満
ＰＡ４：工具中心点に対してＺ方向で１ｍｍ移動する
ＰＡ５：ループの終了
ＰＡ６：ねじ回しを活性化する
ＰＡ７：現在の工具中心位置をＰ４に保存する
ＰＡ８：力制御を活性化し、Ｚ方向で５Ｎの調整を行う
ＰＡ９：位置変化が１ｃｍ未満であり、かつＺ軸について測定されたトルク値が１０
Ｎｍ未満
ＰＡ１０：１タイムステップ待機
ＰＡ１１：ループの終了
ＰＡ１２：トルク値が少なくとも１０Ｎｍである場合、ねじ込み成功
ＰＡ１３：ねじ回しを非活性化する
ＰＡ１４：締められたねじから位置Ｐ３に移動する
【０１０１】
図１によると、プログラマ、より詳細には、人は、プログラムの構造および「＜２」、「＜０．０１」、「＜１０」等の各パラメータを考慮または選択しなければならない。
教示パネルを使用すると、プログラマは、詳細には、Ｐ１乃至Ｐ４である中間点にアプローチし、それらをプログラムに挿入することができる。
プログラムの構造を定義し、さまざまな終了条件を定義するには、膨大な労力が求められる。
【０１０２】
図２は、コンパイルプロセス時の、動作テンプレート２（「ねじ込み」）の階層構造が示された、本発明の方法またはシステムの実施形態を示す概略図である。
よって、図２は、テキストプログラミングを行わずに、コンパイルプロセスでロボットプログラムのソースコードを動作テンプレートからステップごとに自動生成する方法を示している。
通常、生成されたソースコードは、人が記述／作成するものと正確には対応しない。
図２では、簡単にするために、この状況が前提とされている。
【０１０３】
図２の右側に示された動作テンプレート２は、複数の実行モジュール３で構成される。
各実行モジュール３は、動作テンプレートまたは１つもしくは複数の実行モジュール４（階層表現）を含むことができる。
この特徴により、サブルーチンを表現し、再使用することができる。
【０１０４】
最下位のレベルには、それ以上分解されない実行モジュールが存在する。
ここには、コントローラの入力／出力など、ロボットプログラムで命令が含まれている。
コンパイルプロセスに関連するものとして、使用される実行モジュールコントローラがある。
Ｔｙｐｅは、コントローラのタイプを表す。
詳細には、位置制御、力制御、または混合型位置／力制御である。
ＲｉおよびＧｉは、それぞれ実行時制約および目標制約である。
各タイプのコントローラは、実行時制約Ｒ１が観察され、目標制約Ｇｊが達成される態様で、実装される。
このレベルの実行モジュールおよび実行時制約ならびに目標制約のタイプのために、これらの制約を各対象ロボットコントローラ用の実行可能なロボットプログラムソースコードにマップする方法についての規則が保存される。
すべてのパラメータを計算した後、実行可能ソースコードを生成するために、これらの規則が適用される。
【０１０５】
図３は、本発明の方法またはシステムの実施形態に係る動作テンプレート２（「ねじ込み」）の構造およびパラメータを示す概略図である。
動作テンプレートは、実行モジュール３とこの実行モジュール３の順序に関する構造情報（図の接続部分の矢印を参照）と学習モジュール５とで構成される。
実行モジュール３は、追加の実行モジュール（または、動作テンプレート）を階層的に含むことができる。
【０１０６】
動作テンプレートのパラメータＴ１乃至Ｔ６は、可変の自由度を含み、または、備える構成であり、ロボットシステムの可変自由度（アームの位置、グリッパの位置等）、センサデータの可変自由度（力／トルクの測定値等）、および、ＣＡＤモデルでの基準点の可変自由度（３Ｄモデルでの接触点）のすべてを含むことが好ましい。
【０１０７】
実行モジュールの構造は、その実行モジュールから生成されるロボットプログラムソースコードの実行順序を反映し、実際の実行順序に対応する。
【０１０８】
学習モジュールは、その構造に応じて実行され、実行モジュールのパラメータ、すなわち、特に、実行時制約Ｒｉおよび目標制約Ｇｊを、構成Ｔ１乃至Ｔｎより計算する。
この文脈で、Ｂ．ｆは、制約Ｂの制約関数を示し、Ｂ．Ｒは、制約Ｂの制約領域を示す。
【０１０９】
この例では、動作テンプレート２（「ねじ込み」）は、図３に示された実施形態によると、実行モジュール３、すなわち、ＭｏｖｅＴｏＳｔａｔｅ、ＭｏｖｅＴｏＣｏｎｔａｃｔ、ＦａｓｔｅｎＳｃｒｅｗ、およびＤｅｐａｒｔで構成される。
一般に、実行モジュール３のパラメータは、実行時制約（Ｒｉ）および目標制約（Ｇｉ）である。
これらの実行時制約および目標制約は、学習モジュールの予め定義された関数を利用して、ステップごとに計算される。
【０１１０】
図３の実行モジュールＭｏｖｅＴｏＳｔａｔｅは、１つの目標制約Ｇ１のみを有する。
この目標制約は、関節角度制約タイプの制約関数ｆを有する。
すなわち、構成ｋについて、ｆ（ｋ）は、ロボットの関節角度値のすべてからなる実数値ベクトルである。
また、目標制約Ｇ１は、中心点がねじの上方の教示された構成Ｔ１に対応し、半径が０．０００１ＲＡＤ等のロボット関節位置センサの誤差に対応する、球タイプの制約領域Ｒを有する。
【０１１１】
内部的には、ＭｏｖｅＴｏＳｔａｔｅは、経路計画実行モジュール「Ｍｏｔｉｏｎ  Ｐｌａｎｎｅｒ」（図２を参照）と、コントローラ実行モジュール「Ｃｏｎｔｒｏｌｌｅｒ」とからなる。
経路計画実行モジュールは、定義された経路計画プロセスで、開始構成から、目標制約Ｇ１を満たす構成、すなわち、ロボット関節位置センサの誤差を除く教示された構成Ｔ１、までの動作経路Ｐ１を計算する。
次に、計算された動作経路が、位置コントローラタイプのコントローラで実行される。
ロボット関節位置センサにより測定された最後の構成が目標制約を満たす場合、動作経路の実行は成功である。
結果として、ロボットは、現在の構成から、ねじ回しがねじの上方に位置決めされた構成に移動する。
【０１１２】
実行モジュールＭｏｖｅＴｏＣｏｎｔａｃｔは、図３によると、実行時制約Ｒ１と、目標制約Ｇ２およびＧ３とを有する。
この実行モジュールは、１つの経路計画実行モジュールと２つの制御実行モジュールとからなる。
実行時制約Ｒ１は、ねじの上方の構成から、ねじ回しがねじと接触する構成への線形移動を記述する。
制約関数は、開始構成でのＴＣＰの位置に正確に対応する座標系に対してＴＣＰを制限する場所制約関数である。
制約領域は、初期化プロセスで教示された構成Ｔ１、Ｔ２、およびＴ３から計算された立方体である。
つまり、ねじの方向での延長は、長さの点で、ねじの上方の構成（Ｔ１）から、ねじと接触する構成（Ｔ２およびＴ３）までの経路に対応する。
これに直交する延長は、人がＴ１からＴ２およびＴ３までで教示した、線形移動からの逸脱に対応する。
Ｇ２は、Ｒ１と同じ制約関数を持つ場所制約であるが、制約領域は、異なる。
この制約領域は、最小限の延長を有する立方体であり、Ｔ２およびＴ３での制約関数の値を含む。
【０１１３】
実行時制約および目標制約による実行モジュールの均一で複雑なパラメータ化により、教示された構成からこれらのパラメータを生成するための均一な機械学習方法を提供することができる。
【０１１４】
動作テンプレート２の学習モジュール５の目標は、少数の構成から、実行モジュール３の実行時制約および目標制約の形式で与えられるパラメータを作成することである。
構成は、複数の直観的な入力チャネルを利用して生成することができるため、結果として、機能的に同等なロボットプログラム（終了条件およびコントローラを含む）を生成することができるテキストプログラミング方法よりも、はるかに単純なプログラミング方法が得られる。
従来の方法に対する利点は、比較的複雑なロボットプログラムを生成するのに必要な構成（または機械学習におけるトレーニング例）の数が最小限に抑えられることである。
これは、実行時制約および目標制約の自由パラメータを計算するための明示的な規則を、動作記述、特に動作テンプレートの記述、の早い段階で格納することにより実現される。
本事例では、これらの規則は、学習モジュール５で実行される個別のプロセスステップとして表される。
【０１１５】
プロセスステップのセットが学習モジュールで定義され、各プロセスステップは、図３のＴ１乃至Ｔ６のような構成のセットに基づいて、実行時制約または目標制約を計算する。
これらの実行時制約および目標制約は、実行モジュールへの入力として使用される。
【０１１６】
図３によると、実行モジュールＭｏｖｅＴｏＣｏｎｔａｃｔは、実行時制約Ｒ１、目標制約Ｇ２およびＧ３の３つのパラメータを有する。
Ｒ１は、円筒タイプの制約領域を有する場所制約である。
Ｒ１の自由パラメータ、すなわち、円筒の中心点の場所、円筒の高さ、および円筒の半径は、構成Ｔ１、Ｔ２、およびＴ３から計算される。
この目的のために、制約関数ｆがＴ１、Ｔ２、およびＴ３に適用され、Ｒ１．ｆ（Ｔ１）、Ｒ１．ｆ（Ｔ２）、Ｒ１．ｆ１（Ｔ３）となる。
同時に、適用される関数ｃｙｌｉｎｄｅｒ（Ａ１，Ａ２，Ａｎ）が、最適化アルゴリズムを使用して、ベクトルＡ１乃至Ａｎより制約領域の自由パラメータを計算する。
計算された円筒は、ＴＣＰが接触点までの過程で実行しなければならない移動に近似する。
【０１１７】
本発明の方法の実施形態のアプローチによると、ほとんどの構造は、動作テンプレートの実行モジュールを利用して生成される。
終了条件は、教示された構成より計算された実行時制約および目標制約を利用して、自動的に定義される。
【０１１８】
図４は、本発明の方法またはシステムの実施形態に係る一連のプログラミングプロセスを示す。
このプログラミングプロセスは、以下のサブステップＴＳ１乃至ＴＳ６を含む。
ＴＳ１：プログラム全体に動作テンプレートを挿入
ＴＳ２：学習モジュールを実行
ＴＳ３：主要な構成を生成するためにユーザに問い合わせる
ＴＳ４：実行時制約および目標制約を計算するための規則を実行
ＴＳ５：経路計画を実行して、実行時制約および目標制約に基づいて経路を計算
ＴＳ６：実行可能なロボットプログラムソースコードにコンパイル
【０１１９】
図５は、利用される構成要素を視覚化したものである。
操作者６は、ロボット７で、（ＣＡＤモデル上の点で）コンピュータ／ＰＣ８を利用して、構成を直接生成する。
ロボット７は、周辺領域を知覚するために（たとえば、力を知覚したり、視覚的に知覚したりするために）、１つまたは複数のセンサ９と、ねじ回し１０とを有する。
コンピュータ／ＰＣ８の支援により、ロボットコントローラ１１用のソースコードが作成される。
このソースコードは、当該ロボットコントローラ１１またはロボット７で実行することができる。
【０１２０】
図６、図７、図８、図９、および図１０は、操作者により生成された、図５に示す応用分野に係るねじ込みのためにロボット７をプログラムすることを目的とした構成Ｔ１乃至Ｔ６を視覚化したものである。
【０１２１】
図６は、プロセス、すなわち、初期化プロセス、より詳細には教示プロセス、の開始を示している。
この場合、作業操作を実行するために、ロボット７は、ねじ１２をセンサ９とねじ回し１０とを備えるロボット７によりワーク１３にねじ込むように、プログラムされる。
【０１２２】
図７によると、操作者は、ねじ回し１０をねじ１２の直上に接触しないように案内する。これにより、構成Ｔ１が記録される。
予め定義されたタイプの制約関数ｆ＝関節角度制約関数および制約関数Ｒ＝球を有する目標制約Ｇ１が、構成Ｔ１より計算される。
関数ｓｐｈｅｒｅは、品質条件に応じて、構成Ｔ１を包含する最適な球を計算する。
Ｇ１．Ｒ＝Ｓｐｈｅｒｅ（Ｇ１．ｆ（Ｔ１））
【０１２３】
目標制約Ｇ１は、ロボット７がこのアーム位置を正確にとることを暗示する。
【０１２４】
図８によると、操作者は、ロボット７を案内してねじ１２に接触させる。
操作者は、２つの冗長な構成Ｔ２およびＴ３を記録する。
これら２つの（場合によってはそれ以上の）構成は、ねじ１２と接触するための移動の過程における力の目標制約Ｇ３を計算するために使用される。
制約関数のタイプは、工具中心点ＴＣＰがねじ回し１０の端部に位置し、座標系が開始構成すなわちＴ２におけるＴＣＰの場所と正確に等価である力制約関数である。
制約領域のタイプは、立方体である。
【０１２５】
関数ｃｕｂｅは、Ｔ２およびＴ３についての制約関数の値、すなわち、ＴＣＰに変換される測定された力に基づいて、Ｇ３の制約領域を計算する。
Ｇ３．Ｒ＝Ｃｕｂｅ（Ｇ３．ｆ（Ｔ２），Ｇ３．ｆ（Ｔ３））
【０１２６】
加えて、移動の方向が、以前の構成Ｔ１およびＴ３の間の差異より計算され、実行時制約として格納される。
すなわち、ロボット７は、教示された方向に移動しなければならない。
【０１２７】
Ｔ１、Ｔ２、およびＴ３における制約関数の値について、関数ｃｙｌｉｎｄｅｒは、これらの値を制約する最適な円筒を計算する。
この場合、Ｒ１．ｆは、場所制約関数である。
Ｒ１．Ｒ＝Ｃｙｌｉｎｄｅｒ（Ｒ１．ｆ（Ｔ１），Ｒ１．ｆ（Ｔ２），Ｆ１．ｆ（Ｔ３））
【０１２８】
目標制約Ｇ２は、類似する態様で計算される。
ただし、制約領域のタイプは、立方体である。
Ｇ２．Ｒ＝Ｃｕｂｅ（Ｇ２．ｆ（Ｔ２），Ｇ２．ｆ（Ｔ３））
【０１２９】
Ｇ２は、接触点への移動を計算するために使用される。
実行時には、計算された移動が実行され、Ｇ３が満たされる場合に成功裏に終了する。
【０１３０】
図９によると、操作者は、ねじ回し１０を活性化し、ねじ１２をねじ込み、ねじ回し１０を停止する。
操作者は、このプロセスを反復し、２つの冗長な構成Ｔ４およびＴ５を、それぞれ移動の終わりで保存する。
【０１３１】
以前の構成Ｔ２と、新しい構成Ｔ４とが使用されて、ねじ１２の移動の実行時制約がＲ１に類似する態様で計算される。
Ｒ２．Ｒ＝Ｃｙｌｉｎｄｅｒ（Ｒ２．ｆ（Ｔ２），Ｒ２．ｆ（Ｔ４））
【０１３２】
すなわち、移動は、ねじ１２が操作者により示された移動を超えて移動した直後に終了する。
【０１３３】
加えて、ねじ回し１０がねじ１２に適用する力についての実行時制約が計算される。
このプロセスは、Ｇ３に類似する。
Ｒ３．Ｒ＝Ｃｕｂｅ（Ｒ３．ｆ（Ｔ４），Ｒ３．ｆ（Ｔ５））
【０１３４】
同じ構成が使用されて目標制約が計算される。
つまり、移動は、トルクが操作者により教示されたトルクの範囲内である場合に成功する。
計算は、Ｒ３に類似して実行されるが、トルク制約関数で実行される。
Ｇ４．Ｒ＝Ｃｕｂｅ（Ｇ４．ｆ（Ｔ４），Ｇ４．ｆ（Ｔ５））
【０１３５】
図１０によると、操作者は、ロボット７をねじ１２から構成Ｔ６に移動する。
以前の構成Ｔ５および構成Ｔ６を使用して、目標制約がＧ２に類似する態様で計算される。
Ｇ５．Ｒ＝Ｃｕｂｅ（Ｇ５．ｆ（Ｔ５），Ｇ５．ｆ（Ｔ６））
【０１３６】
つまり、ロボット７は、Ｔ５からＴ６までの距離に対応する、上方への相対的移動を実行する。
それにより、ロボット７は、ねじ１２から安全な距離だけ移動する。
【０１３７】
図１１は、本発明の方法またはシステムの実施形態の目的制約の力抑制関数の制約領域を示す概略図である。
【０１３８】
図１１は、構成Ｔ２およびＴ３に基づいて
Ｇ３．Ｒ＝Ｃｕｂｅ（Ｇ３．ｆ（Ｔ２），Ｇ３．ｆ（Ｔ３））
を計算するための図８の記録ステップに類似している。
構成Ｔ２およびＴ３において、ロボット７に関するすべての関連情報は、教示が行われるときに保存される。
よって、測定された力の値も保存される。
目標制約Ｇ３について、関数ｆおよび制約領域Ｒが、依然として判断する必要がある自由パラメータと共に学習モジュールに保存される。
この場合、ｆは、この例では、ねじ回し１０の端点である工具中心点（ＴＣＰ）で、基準座標系Ｆ１（本事例では、工具中心点と等価）に対する三次元ベクトル（ｆｘ  ｆｙ  ｆｚ）として測定された力として定義される、力制約関数である。
ｆの２つの値が、Ｔ２およびＴ３に対して、すなわち、ｆ（Ｔ２）およびｆ（Ｔ３）として計算される。
【０１３９】
この例では、制約領域Ｒは、球タイプの制約領域、すなわち、中心点Ｍと半径とを有する球である。
この球は、Ｔ２およびＴ３での制約関数の２つの値から、関数ｓｐｈｅｒｅ（）で計算される。
結果として、計算された半径は、ロボット７自体が制御プロセスで許容することができる、教示された力の値の平均値からの逸脱に正確に対応する。
よって、操作者は、適切な構成を利用して、実行の堅牢性を強化することができる。
【０１４０】
図１２は、本発明の方法またはシステムの実施形態に係る、教示より詳細には記録される構成を生成するための操作者またはユーザに対するグラフィック命令１４の例を示す。
この事例では、グラフィック命令の例が教示プロセスで操作者／ユーザに示される。
操作者は、（２Ｄまたは３Ｄの）類似する用途で教示より詳細には記録される構成の典型例を取得し、好ましくはステップごとに、初期化プロセスを案内される。
【０１４１】
図１３は、本発明の方法またはシステムの実施形態に係る、動作テンプレートのパラメータを生成するための学習モジュールを利用した初期化プロセス、より詳細には教示プロセス、のイベントの順序を示す概略図である。
図１３は、螺旋検索を実行する動作テンプレートのための学習モジュールのイベントの順序を表す。
目標は、グリップされた物体１５を孔１６に挿入することである。
孔１６の場所が正確にわかっていない場合、最初のステップは、孔１６を探すことである。
このために、螺旋検索の動作テンプレートが使用される。
螺旋検索で、物体１５を備えたロボット７は、孔１６が位置する平坦な表面１７に接触する。
この目的のために、既に説明した実行モジュールＭｏｖｅＴｏＣｏｎｔａｃｔが利用される。
接触後、ロボット７は、螺旋移動１８を実行し、その際に、表面に力を適用する。
螺旋移動が孔１６の上を通った場合、物体１５が孔１６に滑り込む。
目標制約により表される状態である、物体１５が孔１６に最小ミリメートルから最大ミリメートルの範囲で滑り込んだ直後に、移動が終了する。
ａ）操作者は、孔１６の周囲の領域を定義する４つの構成を連続して実演する。操作
者は、物体１５が孔１６に移動する領域を定義する他の３つの構成を実演する
（図１３ａを参照）。
ｂ）最初の４つの構成は、図２に類似した態様で、ＭｏｖｅＴｏＣｏｎｔａｃｔのた
めの１つの実行時制約と２つの目標制約とを生成するために使用される。立方体
タイプの制約領域を備える、生成された目標制約は、ステップごとの螺旋動作を
生成するために使用される（図１３ｂを参照）。たとえば、主成分分析を使用し
て、最大延長を有する２つの螺旋方向が計算される。アルキメデス螺旋等の螺旋
を生成するアルゴリズムを使用して、螺旋が生成され、２つの最大延長に収まる
ように拡大縮小される（図１３ｄを参照）。
ｃ）最後の３つの構成は、（図９に類似して）場所制約関数タイプの目標制約および
円筒タイプの制約領域を計算するために使用される。図１３Ｃを参照されたい。
ｄ）ロボット７は、螺旋上を移動し、図１３ｃの目標制約が満たされたとき、すなわ
ち、物体が孔に滑り込んだときに、移動を成功裏に停止する。
【０１４２】
本発明の方法およびシステムの他の実施形態については、反復を避けるため、明細書の概要部分および添付の特許請求の範囲を参照されたい。
【０１４３】
最後に、本発明の方法およびシステムの上述した実施形態は特許請求の範囲に記載された教示を明らかにするためにのみ使用され、当該教示を実施形態に限定するものではないことが明示的に指摘される。
【符号の説明】
【０１４４】
１  ・・・ロボットプログラム
２  ・・・動作テンプレート
３  ・・・実行モジュール
４  ・・・実行モジュール
５  ・・・学習モジュール
６  ・・・操作者
７  ・・・ロボット
８  ・・・コンピュータ
９  ・・・センサ
１０  ・・・ねじ回し
１１  ・・・ロボットコントローラ
１２  ・・・ねじ
１３  ・・・ワーク
１４  ・・・グラフィック命令
１５  ・・・物体
１６  ・・・孔
１７  ・・・表面
１８  ・・・螺旋移動
Ｍ  ・・・中心点
Ｆ１  ・・・基準座標系
ＰＡ１、ＰＡ１４  ・・・プログラム命令
ＴＳ１、ＴＳ６  ・・・サブステップ
【図１】
0006580602.tif 000002
【図２】
0006580602.tif 000003
【図３】
0006580602.tif 000004
【図４】
0006580602.tif 000005
【図５】
0006580602.tif 000006
【図６】
0006580602.tif 000007
【図７】
0006580602.tif 000008
【図８】
0006580602.tif 000009
【図９】
0006580602.tif 000010
【図１０】
0006580602.tif 000011
【図１１】
0006580602.tif 000012
【図１２】
0006580602.tif 000013
【図１３】
0006580602.tif 000014