(57)【要約】【課題】ロボット動作プログラムの生成に利用可能なテンプレートを自動的に生成する。【解決手段】テンプレート生成部において、分割部は、複数のロボット動作プログラムを基準点で分割してファイル（分割プログラム）を生成する（Ｓ１２）。また、正規化部は、各ファイルに記述されているロボットの移動を方向を示す単位ベクトルで記述するとともにロボットの回転動作を回転軸で記述する処理（Ｓ１４）と、各ファイルの座標系を共通の座標系に変換する処理（Ｓ１６）と、を実行する。また、生成部は、基準点が共通する正規化したファイルから共通箇所を抽出してテンプレートを生成して出力する（Ｓ１８、Ｓ２０）。【選択図】図３
2019206054.tif 000002
【特許請求の範囲】
【請求項１】
基準点を経由して動作するロボットの位置と回転動作とを時系列に沿って並べた複数のロボット動作プログラムを基準点で分割して分割プログラムを生成する分割部と、
前記分割プログラムに記述されているロボットの移動を所定大きさの方向ベクトルで記述するとともに前記ロボットの回転動作を回転軸で記述する処理と、該分割プログラムの座標系を共通の座標系に変換する処理と、を実行して、前記分割プログラムを正規化する正規化部と、
前記基準点が共通する正規化した前記分割プログラムから共通箇所を抽出して、前記ロボット動作プログラムの生成に利用可能なテンプレートを生成する生成部と、
を備える情報処理装置。
【請求項２】
前記生成部は、前記基準点が共通する正規化した前記分割プログラムのうち、閾値個以上の分割プログラムにおいて共通する箇所を抽出する、ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記分割部は、前記基準点を終点とする分割プログラムと、前記基準点を始点とする分割プログラムと、を生成し、
前記生成部は、前記基準点を終点とする正規化した分割プログラムからは、時系列の逆順に沿って共通箇所を抽出し、前記基準点を始点とする正規化した分割プログラムからは、時系列順に沿って共通箇所を抽出する、ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記正規化部は、前記共通の座標系を異ならせて、前記分割プログラムを正規化する処理を複数回実行する、ことを特徴とする請求項１〜３のいずれか一項に記載の情報処理装置。
【請求項５】
前記所定大きさの方向ベクトルは、単位ベクトルであることを特徴とする請求項１〜４のいずれか一項に記載の情報処理装置。
【請求項６】
基準点を経由して動作するロボットの位置と回転動作とを時系列に沿って並べた複数のロボット動作プログラムを基準点で分割して分割プログラムを生成し、
前記分割プログラムに記述されているロボットの移動を所定大きさの方向ベクトルで記述するとともに前記ロボットの回転動作を回転軸で記述する処理と、該分割プログラムの座標系を共通の座標系に変換する処理と、を実行して、前記分割プログラムを正規化し、
前記基準点が共通する正規化した前記分割プログラムから共通箇所を抽出して、前記ロボット動作プログラムの生成に利用可能なテンプレートを生成する、
処理をコンピュータが実行することを特徴とするロボット動作プログラム生成補助方法。
【請求項７】
基準点を経由して動作するロボットの位置と回転動作とを時系列に沿って並べた複数のロボット動作プログラムを基準点で分割して分割プログラムを生成し、
前記分割プログラムに記述されているロボットの移動を所定大きさの方向ベクトルで記述するとともに前記ロボットの回転動作を回転軸で記述する処理と、該分割プログラムの座標系を共通の座標系に変換する処理と、を実行して、前記分割プログラムを正規化し、
前記基準点が共通する正規化した前記分割プログラムから共通箇所を抽出して、前記ロボット動作プログラムの生成に利用可能なテンプレートを生成する、
処理をコンピュータに実行させるためのロボット動作プログラム生成補助プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ロボット動作プログラム生成補助方法及びロボット動作プログラム生成補助プログラムに関する。
【背景技術】
【０００２】
従来、組立作業ロボットに製品組立作業を行わせるためには、ロボットにその作業を実施する動作（ロボット動作プログラム）を教示する必要がある。ロボット動作プログラムを生成する方法としては、例えば、３次元仮想空間でロボット動作プログラムを生成する方法が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１７−５２０４１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、３次元仮想空間でロボット動作プログラムを生成する場合、専門的な知識が必要な上に多大な工数がかかる。また、実際の製造現場では、生産変動へ対応するために頻繁に作業順序の組換えや作業環境が変化することから、１つ１つのロボット動作プログラムを容易に生成できるようにすることが好ましい。
【０００５】
１つの側面では、本発明は、ロボット動作プログラムの生成に利用可能なテンプレートを自動的に生成することが可能な処理情報処理装置、ロボット動作プログラム生成補助方法及びロボット動作プログラム生成補助プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの態様では、情報処理装置は、基準点を経由して動作するロボットの位置と回転動作とを時系列に沿って並べた複数のロボット動作プログラムを基準点で分割して分割プログラムを生成する分割部と、前記分割プログラムに記述されているロボットの移動を所定大きさの方向ベクトルで記述するとともに前記ロボットの回転動作を回転軸で記述する処理と、該分割プログラムの座標系を共通の座標系に変換する処理と、を実行して、前記分割プログラムを正規化する正規化部と、前記基準点が共通する正規化した前記分割プログラムから共通箇所を抽出して、前記ロボット動作プログラムの生成に利用可能なテンプレートを生成する生成部と、を備えている。
【発明の効果】
【０００７】
ロボット動作プログラムの生成に利用可能なテンプレートを自動的に生成することができる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態に係る情報処理装置のハードウェア構成を概略的に示す図である。
【図２】図１の情報処理装置の機能ブロック図である。
【図３】テンプレート生成部の一連の処理を示すフローチャートである。
【図４】図３のステップＳ１２の詳細処理を示すフローチャートである。
【図５】図３のステップＳ１４の詳細処理を示すフローチャートである。
【図６】図３のステップＳ１６の詳細処理を示すフローチャートである。
【図７】図３のステップＳ１８の詳細処理を示すフローチャートである。
【図８】図３のステップＳ２０の詳細処理を示すフローチャートである。
【図９】サンプル１〜４の動作イメージとロボットプログラムが示されている。
【図１０】ロボットプログラムから作成されるファイル（分割プログラム）を示す図である。
【図１１】図１０の各ファイルを方向を示す単位ベクトル及び回転軸に変換した状態を示す図である。
【図１２】図１１の各ファイルの座標系をグローバル座標系に変換した状態を示す図である。
【図１３】生成部の処理を説明するための図（その１）である。
【図１４】図１１の各ファイルの座標系を部品座標系に変換した状態を示す図である。
【図１５】生成部の処理を説明するための図（その２）である。
【図１６】図１１の各ファイルの座標系をロボット座標系に変換した状態を示す図である。
【図１７】生成部の処理を説明するための図（その３）である。
【図１８】図１１の各ファイルの座標系をツール座標系に変換した状態を示す図である。
【図１９】生成部の処理を説明するための図（その４）である。
【図２０】出力データ及びテンプレートを示す図である。
【発明を実施するための形態】
【０００９】
以下、情報処理装置の一実施形態について、図１〜図２０に基づいて詳細に説明する。本実施形態の情報処理装置は、組立作業ロボットを動作させるロボット動作プログラム（以下、ロボットプログラムと呼ぶ）を生成し、組立作業ロボットに対して生成したロボットプログラムを入力する装置である。
【００１０】
図１には、一実施形態に係る情報処理装置１０の構成が概略的に示されている。情報処理装置１０は、図１に示すように、ＣＰＵ（Central Processing Unit）１９０、ＲＯＭ（Read Only Memory）１９２、ＲＡＭ（Random Access Memory）１９４、記憶部（ここではＨＤＤ（Hard Disk Drive））１９６、ネットワークインタフェース１９７、表示部１９３、入力部１９５、及び可搬型記憶媒体用ドライブ１９９等を備えている。これら情報処理装置１０の構成各部は、バス１９８に接続されている。情報処理装置１０では、ＲＯＭ１９２あるいはＨＤＤ１９６に格納されているプログラム（ロボット動作プログラム生成補助プログラムを含む）、或いは可搬型記憶媒体用ドライブ１９９が可搬型記憶媒体１９１から読み取ったプログラム（ロボット動作プログラム生成補助プログラムを含む）をＣＰＵ１９０が実行することにより、図２に示す、各部の機能が実現される。なお、図２には、情報処理装置１０のＨＤＤ１９６等に格納されている各種ＤＢ（database）も図示されている。なお、図２の各部の機能は、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）等の集積回路により実現されてもよい。
【００１１】
図２は、情報処理装置１０のＣＰＵ１９０がプログラムを実行することにより実現される機能を示す機能ブロック図である。
【００１２】
図２に示すように、情報処理装置１０においては、ＣＰＵ１９０がプログラムを実行することにより、データ取得部２０、変数設定部２１、作業状態生成部２２、教示点導出部２４、ロボット動作生成部２６、及びテンプレート生成部２８、としての機能が実現されている。
【００１３】
データ取得部２０は、変数設定部２１や作業状態生成部２２、教示点導出部２４で利用する各種データ（組立作業順序ＤＢ３０に記憶されている順序データ、製品ＤＢ３２に記憶されている製品データ、設備ＤＢ３４に記憶されている組立設備データ、テンプレートＤＢ３６に記憶されているテンプレート等）を取得する。ここで、組立作業順序ＤＢ３０には、ロボットにより組立対象製品を組み立てる際の一連の組立作業の順序データが記憶されている。製品ＤＢ３２には、組立対象製品の製品データ、すなわち組立対象製品を形成する各部品の３次元（３Ｄ）データや組立対象製品の部品構成データ、が記憶されている。設備ＤＢ３４には、組立対象製品を組み立てる設備に関するデータである組立設備データが記憶されている。また、テンプレートＤＢ３６には、組立対象製品に係るロボットプログラムの生成に利用することが可能なテンプレートが記憶されている。テンプレートは、教示点に係る情報を変数で表したロボットプログラムのひな形である。テンプレートは作業分類（組立作業の属性）ごとに用意される。作業分類は、例えばピック（Pick）、プレース（Place）、運搬、撮像、貼り付け等である。
【００１４】
変数設定部２１は、ユーザからの入力に基づいて、テンプレートにおける各種変数を設定する。なお、ユーザからの入力は、入力部１９５を介して取得される。
【００１５】
作業状態生成部２２は、順序データと、製品データとに基づいて、一連の組立作業に含まれる一の組立作業の開始時における製品の組み立て状態を生成（再現）し、再現データを生成する。
【００１６】
教示点導出部２４は、一連の組立作業に含まれる一の組立作業ごとに、再現データに基づいて、一の組立作業に係る教示点を導出する。
【００１７】
ロボット動作生成部２６は、一連の組立作業ごとに、教示点導出部２４が導出した教示点に基づいて、一の組立作業に係る動作プログラムを生成する。ロボット動作生成部２６は、一連の組立作業に含まれる各組立作業に対して、動作プログラムを生成し、各動作プログラムを組み合わせることで、最終的なロボットプログラムを生成する。ロボット動作生成部２６は、最終的なロボットプログラムをネットワークインタフェース１９７を介してロボットに送信する。また、ロボット動作生成部２６は、最終的なロボットプログラムをロボットプログラムＤＢ３８に格納する。
【００１８】
テンプレート生成部２８は、ロボットプログラムＤＢ３８に格納されているロボットプログラムを用いてテンプレートを生成し、生成したテンプレートをテンプレートＤＢ３６に格納する。テンプレート生成部２８は、分割部１２８Ａ、正規化部１２８Ｂ、及び生成部１２８Ｃを有する。分割部１２８Ａは、複数のロボットプログラムを分割したファイル（分割プログラム）を生成する。正規化部１２８Ｂは、各ファイルを正規化する処理を実行する。生成部１２８Ｃは、正規化したファイルから共通箇所を抽出してテンプレートを生成して出力する。以下、テンプレート生成部２８（分割部１２８Ａ、正規化部１２８Ｂ、及び生成部１２８Ｃ）の処理について、図３〜図８のフローチャートに沿って、その他図面を適宜参照しつつ詳細に説明する。
【００１９】
（テンプレート生成部２８の処理）
図３は、分割部１２８Ａの一連の処理を示すフローチャートである。図３の処理では、まず、ステップＳ１０において、テンプレート生成部２８の分割部１２８Ａが、ロボットプログラムＤＢ３８からロボットプログラムを取得する。なお、分割部１２８Ａは、同一部品を扱うロボットプログラムをロボットプログラムＤＢ３８から取得する。ここで、ロボットプログラムは、教示点の座標値、回転動作、基準点（ピック、プレース、カメラ撮影位置、ハンド取り付け、ハンド取り外し等）を時系列に沿って並べたものである。
【００２０】
本実施形態では、一例として、図９に示す４つのサンプル（サンプル１〜４）のロボットプログラムが取得されたものとする。なお、図９には、各サンプルの動作イメージとロボットプログラムが示されている。例えば、サンプル１は、ロボットが−Ｚ方向に移動して、部品をピックして、＋Ｚ方向に移動し、Ｘ軸及びＺ軸方向を含む方向に移動した後、−Ｚ方向に移動して、部品をプレースし、＋Ｚ方向に移動するという動作を示すロボットプログラムである。なお、図９のＸＹＺ座標系はグローバル座標系である。また、サンプル２は、ロボットが−Ｙ方向に移動して、部品をピックして、＋Ｘ方向、＋Ｙ方向、＋Ｘ方向、−Ｙ方向、＋Ｘ方向に順に移動した後、部品をプレースして、＋Ｙ方向に移動するという動作を示すロボットプログラムである。サンプル３は、ピックとプレースの途中にカメラ撮影が含まれているロボットプログラムである。サンプル４は、ロボットが−Ｚ方向、＋Ｘ方向に移動して、部品をピックし、−Ｘ方向、＋Ｚ方向、Ｘ軸、Ｙ軸、Ｚ軸を含む方向、−Ｚ方向、＋Ｘ方向に順に移動した後、部品をプレースして、−Ｘ方向、＋Ｚ方向に移動するという動作を示すロボットプログラムである。なお、サンプル４では、ロボットが移動する途中に回転動作が適宜行われている。
【００２１】
図３に戻り、次のステップＳ１２では、分割部１２８Ａが、基準点間の教示点順序を基準点で分割し、方向ベクトルと回転軸の順序で表記する。このステップＳ１２では、分割部１２８Ａは、図４のフローチャートに沿った処理を実行する。
【００２２】
（ステップＳ１２の処理について）
図４の処理では、まず、ステップＳ３０において、分割部１２８Ａが、選択していないロボットプログラムを１つ選択する。ここでは、例えば、分割部１２８Ａは、図９のサンプル１のロボットプログラムを選択したものとする。
【００２３】
次いで、ステップＳ３２では、分割部１２８Ａが、選択できたか否かを判断する。このステップＳ３２の判断が肯定されると、ステップＳ３４に移行し、分割部１２８Ａは、バッファを空にする。
【００２４】
次いで、ステップＳ３６では、分割部１２８Ａが、選択したロボットプログラムを１行読み込む。図９のサンプル１の例では、教示点（１０，０，１５０）が読み込まれる。
【００２５】
次いで、ステップＳ３８では、分割部１２８Ａが、読み込む行がないか否かを判断する。このステップＳ３８の判断が否定されると、ステップＳ４０に移行し、分割部１２８Ａは、基準点を読み込んだか否かを判断する。ここでは、教示点を読み込んでいるため、判断が否定され、ステップＳ４２に移行する。
【００２６】
ステップＳ４２に移行すると、分割部１２８Ａは、読み込んだ教示点をバッファに追加する。その後は、分割部１２８Ａは、ステップＳ３６に戻る。ステップＳ３６に戻ると、分割部１２８Ａは、次の行（教示点（１０，０，５０））を読み込み、ステップＳ４２において、読み込んだ教示点をバッファに追加して、ステップＳ３６に戻る。
【００２７】
そして、分割部１２８Ａは、ステップＳ３６に戻って、次の行（Ｐｉｃｋ）を読み込む。この場合、次のステップＳ３８の判断が否定された後、ステップＳ４０の判断が肯定されるため、分割部１２８Ａは、ステップＳ４４に移行する。
【００２８】
ステップＳ４４に移行すると、分割部１２８Ａは、読み込んだ基準点がロボットプログラム内における最初の基準点であるか否かを判断する。本例では、最初の基準点であるため、ステップＳ４４の判断は肯定され、分割部１２８ＡはステップＳ５０に移行する。
【００２９】
ステップＳ５０に移行すると、分割部１２８Ａは、読み込んだ基準点の名前と読み込んだ基準点の前を示す（基準点を終点とする）ファイル（分割プログラム）を作成する。本例の場合、図１０のサンプル１の［１］で示すように、「＊＊＊→Ｐｉｃｋ」のファイルを作成する。
【００３０】
次いで、ステップＳ５２では、分割部１２８Ａが、バッファの内容をファイルに出力する。本例の場合、分割部１２８Ａは、図１０のサンプル１の「［１］＊＊＊→Ｐｉｃｋ」のファイルに、教示点（１０，０，１５０）、（１０，０，５０）を出力する。次いで、ステップＳ５４に移行すると、分割部１２８Ａは、バッファの最後の要素以外を削除する。すなわち、分割部１２８Ａは、バッファに教示点（１０，０，５０）のみを残すこととする。その後は、分割部１２８Ａは、ステップＳ３６に戻る。なお、ステップＳ５４に移行した際にバッファが空の場合には、分割部１２８Ａは、そのままステップＳ３６に戻る。
【００３１】
ステップＳ３６に戻ると、分割部１２８Ａは、ステップＳ３６〜Ｓ４２を繰り返すことで、バッファに教示点（１０，０，２００）、（９０，０，２３０）、（９０，０，８０）を追加する。そして、ステップＳ３６において、基準点Placeを読み込むと、ステップＳ４０の判断が肯定され、ステップＳ４４に移行する。この場合、読み込んだ基準点は最初の基準点ではないため、ステップＳ４４の判断は否定され、分割部１２８Ａは、ステップＳ４６に移行する。
【００３２】
ステップＳ４６に移行すると、分割部１２８Ａは、１つ前の基準点の名前と１つ前の基準点の後を示す（基準点を始点とするファイル）ファイルを作成する。本例の場合、分割部１２８Ａは、図１０のサンプル１の［２］で示すように、「Ｐｉｃｋ→＊＊＊」のファイルを作成する。
【００３３】
次いで、ステップＳ４８では、分割部１２８Ａが、バッファの内容をファイルに出力する。本例の場合、分割部１２８Ａは、図１０のサンプル１の「［２］Ｐｉｃｋ→＊＊＊」のファイルに、教示点（１０，０，５０）、（１０，０，２００）、（９０，０，２３０）、（９０，０，８０）を出力する。
【００３４】
次いで、ステップＳ５０では、分割部１２８Ａが、読み込んだ基準点の名前と読み込んだ基準点の前を示すファイルを作成する。本例の場合、図１０のサンプル１の［３］で示すように、「＊＊＊→Ｐｌａｃｅ」のファイルを作成する。
【００３５】
次いで、ステップＳ５２では、分割部１２８Ａが、バッファの内容をファイルに出力する。本例の場合、分割部１２８Ａは、図１０のサンプル１の「［３］＊＊＊→Ｐｌａｃｅ」のファイルに、教示点（１０，０，５０）、（１０，０，２００）、（９０，０，２３０）、（９０，０，８０）を出力する。次いで、ステップＳ５４に移行すると、分割部１２８Ａは、バッファの最後の要素以外を削除する。すなわち、分割部１２８Ａは、バッファに教示点（９０，０，８０）のみを残すこととする。その後は、分割部１２８Ａは、ステップＳ３６に戻る。
【００３６】
ステップＳ３６に戻ると、分割部１２８Ａは、ステップＳ３６〜Ｓ４２を実行することで、バッファに教示点（９０，０，１８０）を追加する。そして、ステップＳ３８において、読み込む行がないと判断され、ステップＳ５６に移行すると、分割部１２８Ａは、１回でも基準点を読み込んだか否かを判断する。このステップＳ５６の判断が否定された場合にはそのままステップＳ３０に戻るが、ステップＳ５６の判断が肯定された場合には、ステップＳ５８に移行する。
【００３７】
ステップＳ５８に移行すると、分割部１２８Ａは、１つ前の基準点の名前と１つ前の基準点の後を示すファイルを作成する。本例の場合、分割部１２８Ａは、図１０のサンプル１の［４］で示すように、「Ｐｌａｃｅ→＊＊＊」のファイルを作成する。次いで、ステップＳ６０では、分割部１２８Ａが、バッファの内容をファイルに出力する。本例の場合、分割部１２８Ａは、図１０のサンプル１の「［４］Ｐｌａｃｅ→＊＊＊」のファイルに、教示点（９０，０，８０）、（９０，０，１８０）を出力する。その後は、ステップＳ３０に戻る。
【００３８】
ステップＳ３０に戻ると、読み込んでいないロボットプログラムを読み込み、上述した処理を繰り返し実行する。これにより、図１０に示すように、サンプル２〜４それぞれに関するファイル（分割プログラム）が生成されるようになっている。
【００３９】
そして、読み込んでいないロボットプログラムがなくなり、ステップＳ３２の判断が否定されると、図４の全処理を終了する。この場合、テンプレート生成部２８は、図３のステップＳ１４に移行する。
【００４０】
図３に戻り、次のステップＳ１４では、テンプレート生成部２８の正規化部１２８Ｂが、分割プログラムを方向を示す単位ベクトルと回転軸で記述して正規化する。このステップＳ１４では、正規化部１２８Ｂは、図５のフローチャートに沿った処理を実行する。
【００４１】
（ステップＳ１４の処理について）
図５の処理では、まず、ステップＳ７０において、正規化部１２８Ｂが、選択していないファイル（図１０のサンプル１〜４に含まれるファイル（［１］、［２］、［３］、…）のいずれか）を１つ選択する。本例では、正規化部１２８Ｂは、図１０のサンプル１のファイル［１］を選択したものとする。次いで、ステップＳ７２では、正規化部１２８Ｂが、ファイルを選択できたか否かを判断する。このステップＳ７２の判断が肯定されると、ステップＳ７４に移行する。
【００４２】
ステップＳ７４に移行すると、正規化部１２８Ｂは、「prev」として選択したファイルの１行を読み込む。ここでは、正規化部１２８Ｂは、図１０のサンプル１のファイル［１］の教示点（１０，０，１５０）をprevとして読み込む。次いで、ステップＳ７６では、正規化部１２８Ｂが、「cur」として選択したファイルの１行（次の行）を読み込む。ここでは、正規化部１２８Ｂは、図１０のサンプル１のファイル［１］の教示点（１０，０，５０）をcurとして読み込む。
【００４３】
次いで、ステップＳ７８では、正規化部１２８Ｂが、読み込む行がないか否かを判断する。このステップＳ７８の判断が否定されると、正規化部１２８Ｂは、ステップＳ８０に移行する。
【００４４】
ステップＳ８０に移行すると、正規化部１２８Ｂは、回転情報を読み込んだか否かを判断する。このステップＳ８０の判断が否定されると、ステップＳ８２に移行し、正規化部１２８Ｂは、方向を示す単位ベクトル(cur-prev)／||cur-prev||を出力する。ここでは、図１１のサンプル１のファイル［１］に示すように(cur-prev)／||cur-prev||として、（０，０，−１）が出力される。すなわち、ステップＳ８２では、正規化部１２８Ｂは、ロボットの移動を大きさが１の方向ベクトルで記述していると言える。
【００４５】
次いで、ステップＳ８４では、正規化部１２８Ｂが、curをprevとする。すなわち、prevが（１０，０，５０）となる。その後は、ステップＳ７６に戻る。ステップＳ７６に戻ると、正規化部１２８Ｂは次の１行を読み込もうとするが、読み込む行がないため、ステップＳ７８の判断が肯定されて、ステップＳ７０に戻る。
【００４６】
ステップＳ７０に戻ると、正規化部１２８Ｂは、次のファイルとして、図１０のサンプル１のファイル［２］を選択する。その後は、正規化部１２８Ｂは、図１０のサンプル１のファイル［２］の各教示点から方向を示す単位ベクトルを算出し、図１１に示すように出力する。
【００４７】
その後も、各ファイルについて同様の処理を実行する。この処理において、例えば、図１０のサンプル４のファイル［１］の３行目に示すように、回転情報（−９０°回転（Ｙ軸））が読み込まれることがある。この場合、ステップＳ８０の判断が肯定されるので、正規化部１２８Ｂは、ステップＳ８６に移行する。ステップＳ８６では、正規化部１２８Ｂが、回転軸を出力する。上記例では、回転軸として「回転（Ｙ軸）」が出力されることになる（図１１のサンプル４のファイル［１］の２行目参照）。すなわち、ステップＳ８６では、正規化部１２８Ｂは、ロボットの回転動作を回転軸で記述していると言える。
【００４８】
以上の処理が実行され、すべてのファイルの選択が終了すると、ステップＳ７２の判断が否定されるので、正規化部１２８Ｂは図５の全処理を終了して、図３のステップＳ１６に移行する。
【００４９】
図３に戻り、次のステップＳ１６では、正規化部１２８Ｂが、座標系を変換する処理を実行する。このステップＳ１６では、正規化部１２８Ｂは、図６のフローチャートに沿った処理を実行する。
【００５０】
（ステップＳ１６の処理について）
図６の処理では、まず、ステップＳ１０２において、正規化部１２８Ｂが、座標系を１つ選択する。この場合、正規化部１２８Ｂは、例えば、グローバル座標系、部品ごとに設定されている部品座標系、ロボットに設定されているロボット座標系、ロボットが利用するツールに設定されているツール座標系などの座標系のいずれかを選択するものとする。なお、本例では、一例として、グローバル座標系が選択されたものとする。
【００５１】
次いで、ステップＳ１０４では、正規化部１２８Ｂが、選択できたか否かを判断する。このステップＳ１０４の判断が肯定されると、ステップＳ１０６に移行し、正規化部１２８Ｂは、グローバル座標系から選択した座標系（グローバル座標系）への変換行列を作成する。
【００５２】
次いで、ステップＳ１０８では、正規化部１２８Ｂが、読み込んでいないファイルを１つ読み込む。例えば、正規化部１２８Ｂは、図１１のサンプル１のファイル［１］を読み込んだものとする。
【００５３】
次いで、ステップＳ１１０では、正規化部１２８Ｂが、ファイルを読み込めたか否かを判断する。このステップＳ１１０の判断が肯定されると、正規化部１２８Ｂは、ステップＳ１１２に移行する。
【００５４】
ステップＳ１１２に移行すると、正規化部１２８Ｂは、読み込んだファイルの１行を読み込む。例えば、正規化部１２８Ｂは、図１１のサンプル１のファイル［１］の方向を示す単位ベクトル（０，０、−１）が選択されたものとする。次いで、ステップＳ１１４では、正規化部１２８Ｂが、読み込めたか否かを判断する。このステップＳ１１４の判断が肯定されると、ステップＳ１１８に移行し、正規化部１２８Ｂは、回転情報を読み込んだか否かを判断する。ここでの判断が否定された場合には、ステップＳ１２０に移行し、正規化部１２８Ｂは、変換行列を用いて、方向を示す単位ベクトルを変換し、出力する（図１２のサンプル１のファイル［１］参照）。
【００５５】
その後は、ステップＳ１１２に戻り、正規化部１２８Ｂは、次の１行を読み込むことになるが、ここでは、次の１行を読み込むことができないため、ステップＳ１１４の判断が否定されて、ステップＳ１０８に戻る。ステップＳ１０８に戻ると、正規化部１２８Ｂは、読み込んでいないファイル（例えば、サンプル１のファイル［２］）を選択する。その後は、正規化部１２８Ｂは、すべてのファイルに対する処理が終了するまで、ステップＳ１０８〜Ｓ１２０の処理を繰り返す。
【００５６】
ところで、ステップＳ１１２において読み込んだ情報が回転情報であった場合（図１１のサンプル４のファイル［１］の２行目参照）には、ステップＳ１１８の判断が肯定される。ステップＳ１１８の判断が肯定された場合には、ステップＳ１２２に移行し、正規化部１２８Ｂは、変換行列を用いて、回転軸を変換して出力する。
【００５７】
以上の処理を繰り返し、すべてのファイルの座標系を変換した場合には、ステップＳ１１０の判断が否定されるため、正規化部１２８Ｂは、ステップＳ１０２に戻る。ステップＳ１０２に戻った段階では、図１２に示すようなファイルが生成されるようになっている。ただし、図１２の例は、グローバル座標系をグローバル座標系に変換する処理であるため、図１１からの変更箇所はない。一方、例えば、ステップＳ１０２において部品座標系が選択され、以降の処理においてグローバル座標系から部品座標系への変換が行われた場合には、図１１のファイルが図１４に示すように変換されるようになっている。また、ステップＳ１０２においてロボット座標系が選択され、以降の処理においてグローバル座標系からロボット座標系への変換が行われた場合には、図１１のファイルが図１６に示すように変換されるようになっている。更に、ステップＳ１０２においてツール座標系が選択され、以降の処理においてグローバル座標系からツール座標系への変換が行われた場合には、図１１のファイルが図１８に示すように変換されるようになっている。
【００５８】
すべてのファイルの座標系の変換が終了すると、ステップＳ１０４の判断が否定される。この場合、テンプレート生成部２８は、図６の全処理を終了し、図３のステップＳ１８に移行する。なお、グローバル座標系をグローバル座標系に変換する処理については、ファイルに変更箇所が生じないため、図６の処理を省略してもよい。
【００５９】
図３に戻り、ステップＳ１８では、テンプレート生成部２８の生成部１２８Ｃが、方向ベクトルと回転軸の順序がすべてのロボットプログラムのうち閾値個以上一致する箇所を抽出する処理を実行する。具体的には、生成部１２８Ｃは、図７のフローチャートに沿った処理を実行する。
【００６０】
（ステップＳ１８の処理について）
図７の処理では、まず、ステップＳ１３０において、生成部１２８Ｃが、未抽出の同一名称のファイルを図１２の中から抽出する。例えば、生成部１２８Ｃは、名称が「＊＊＊→Ｐｉｃｋ」であるファイルを図１２の中からすべて抽出する。この場合、図１３において太実枠線で示すファイルが抽出されることになる。なお、図１３においては、図１２において同一名称のファイルが１つしか存在しないもの（名称「＊＊＊→camera」、「camera→＊＊＊」のファイル）は処理に用いないため、削除した状態で示している。
【００６１】
次いで、ステップＳ１３２では、生成部１２８Ｃが、ファイルを抽出できたか否かを判断する。このステップＳ１３２の判断が肯定されると、生成部１２８Ｃは、ステップＳ１３４に移行する。
【００６２】
ステップＳ１３４では、生成部１２８Ｃが、抽出したファイルが基準点の前を示すファイル（基準点を終点とするファイル）であるか否かを判断する。ここでの判断が肯定されると、ステップＳ１３６に移行し、生成部１２８Ｃは、抽出した各ファイルを下から順に（時系列の逆順に）１行読み込む。図１３の太実線枠で示すファイルにおいては、サンプル１の（０，０，−１）、サンプル２の（０，−１，０）、サンプル３の（０，０，−１）、サンプル４の（１，０，０）が読み込まれることになる。
【００６３】
次いで、ステップＳ１３８では、生成部１２８Ｃが、全てのファイルで読み込む行がないか否かを判断する。このステップＳ１３８の判断が否定されると、ステップＳ１４０に移行し、生成部１２８Ｃは、読み込んだ各行の内容が閾値個以上一致しているか否かを判断する。ここで、閾値が３であるとすると、読み込んだ情報は２つ一致するのみであり、閾値個以上一致していないため、ステップＳ１４０の判断は否定され、ステップＳ１３６に移行する。なお、閾値は、管理者等が決定してもよいし、サンプル数に応じて自動的に決定されるようになっていてもよい。その後、生成部１２８Ｃは、ステップＳ１３６〜Ｓ１４０を繰り返すが、図１３の太実線枠で示すファイルの例では、一度もステップＳ１４０の判断が肯定されずに、ステップＳ１３８の判断が肯定されることになる。ステップＳ１３８の判断が肯定されると、ステップＳ１３０に戻る。
【００６４】
ステップＳ１３０に戻ると、未抽出の同一名称のファイルを抽出する。例えば、生成部１２８Ｃは、名称が「Ｐｉｃｋ→＊＊＊」であるファイルを図１２の中からすべて抽出する。この場合、図１３において太破線枠で示すファイルが抽出されることになる。
【００６５】
次いで、ステップＳ１３２では、生成部１２８Ｃが、ファイルを抽出できたか否かを判断する。このステップＳ１３２の判断が肯定されると、生成部１２８Ｃは、ステップＳ１３４に移行する。
【００６６】
ステップＳ１３４では、生成部１２８Ｃが、抽出したファイルが基準点の前を示すファイルであるか否かを判断する。ここでの判断が否定されると、ステップＳ１４６に移行し、生成部１２８Ｃは、抽出した各ファイルを上から順に（時系列順に）１行読み込む。図１３の太破線枠で示すファイルにおいては、サンプル１の（０，０，１）、サンプル２の（１，０，０）、サンプル３の（０，０，１）、サンプル４の（−１，０，０）が読み込まれることになる。
【００６７】
次いで、ステップＳ１４８では、生成部１２８Ｃが、全てのファイルで読み込む行がないか否かを判断する。このステップＳ１４８の判断が否定されると、ステップＳ１５０に移行し、生成部１２８Ｃは、読み込んだ各行の内容が閾値個以上一致しているか否かを判断する。ここで、閾値が３であるとすると、読み込んだ情報は２つ一致するのみであり、閾値個以上一致していないため、ステップＳ１５０の判断は否定され、ステップＳ１４６に移行する。その後、生成部１２８Ｃは、ステップＳ１４６〜Ｓ１５０を繰り返すが、図１３の太破線枠で示すファイルの例では、一度もステップＳ１５０の判断が肯定されずに、ステップＳ１４８の判断が肯定されることになる。ステップＳ１４８の判断が肯定されると、ステップＳ１３０に戻る。
【００６８】
以降、図１３の各ファイルに対して、図７の処理を実行しても、ステップＳ１４０及びステップＳ１５０の判断が肯定されることはないため、何も出力されずに、図１４に示す部品座標系に変換されたファイルの処理に移行する。この場合、ステップＳ１３０では、生成部１２８Ｃは、図１４の太実線枠で示すファイル（名称「＊＊＊→ｐｉｃｋ」のファイル）を抽出するものとする。
【００６９】
次いで、ステップＳ１３２の判断が肯定されて、ステップＳ１３４に移行すると、生成部１２８Ｃは、抽出したファイルが基準点の前を示すファイルであるか否かを判断する。ここでの判断が肯定されると、ステップＳ１３６に移行し、生成部１２８Ｃは、抽出した各ファイルを下から順に１行読み込む。図１４の太実線枠で示すファイルにおいては、サンプル１の（０，０，−１）、サンプル２の（０，０，−１）、サンプル３の（０，０，−１）、サンプル４の（０，０，−１）が読み込まれることになる。
【００７０】
次いで、ステップＳ１３８の判断が否定されて、ステップＳ１４０に移行すると、生成部１２８Ｃは、読み込んだ各行の内容が閾値個以上一致しているか否かを判断する。ここで、閾値が３であるとすると、読み込んだ情報は４つ一致しているためステップＳ１４０の判断は肯定され、ステップＳ１４２に移行する。
【００７１】
ステップＳ１４２では、生成部１２８Ｃが、一致している行の情報を出力する。この場合、図１５の名称「＊＊＊→ｐｉｃｋ」のファイルにおいて下線を付して示す（０，０，−１）が出力されることになる。その後は、ステップＳ１３６〜Ｓ１４０を繰り返すが、他の情報が出力されることなく、ステップＳ１３８の判断が肯定されるため、生成部１２８Ｃは、ステップＳ１３０に戻る。
【００７２】
ステップＳ１３０に戻ると、未抽出の同一名称のファイルを抽出する。例えば、生成部１２８Ｃは、名称が「Ｐｉｃｋ→＊＊＊」であるファイルを図１４の中からすべて抽出する。この場合、図１４において太破線枠で示すファイルが抽出されることになる。
【００７３】
次いで、ステップＳ１３２の判断が肯定され、ステップＳ１３４に移行すると、生成部１２８Ｃは、抽出したファイルが基準点の前を示すファイルであるか否かを判断する。ここでの判断が否定されると、ステップＳ１４６に移行し、生成部１２８Ｃは、抽出した各ファイルを上から順に１行読み込む。図１４の太破線枠で示すファイルにおいては、サンプル１の（０，０，１）、サンプル２の（１，０，０）、サンプル３の（０，０，１）、サンプル４の（０，０，１）が読み込まれることになる。
【００７４】
次いで、ステップＳ１４８の判断が否定されると、ステップＳ１５０に移行し、生成部１２８Ｃは、読み込んだ各行の内容が閾値個以上一致しているか否かを判断する。ここで、閾値が３であるとすると、読み込んだ情報は３つ一致するため、ステップＳ１５０の判断が肯定され、ステップＳ１５２に移行する。
【００７５】
ステップＳ１５２では、生成部１２８Ｃが、一致している行の情報を出力する。この場合、図１５の名称「ｐｉｃｋ→＊＊＊」のファイルにおいて下線を付して示す（０，０，１）が出力されることになる。その後は、ステップＳ１４６〜Ｓ１５０を繰り返すが、他の情報が出力されることなく、ステップＳ１４８の判断が肯定されるため、生成部１２８Ｃは、ステップＳ１３０に戻る。
【００７６】
以下、図１４の各ファイルに対して同様の処理を実行することで、図１５において下線を付して示す情報が出力されるようになっている。
【００７７】
また、図１６に示すロボット座標系に変換されたファイルについても同様の処理を実行することで、図１７において下線を付して示す情報が出力されるようになっている。更に、図１８に示すツール座標系に変換されたファイルについても同様の処理を実行することで、図１９において下線を付して示す情報が出力されるようになっている。
【００７８】
以上の処理により、出力される情報（出力データ）は、図２０において符号５０で示されている情報となる。そして、すべてのファイルについての処理が終了し、ステップＳ１３２の判断が否定されると、図７の全処理を終了し、図３のステップＳ２０に移行する。
【００７９】
図３に戻り、ステップＳ２０では、生成部１２８Ｃが、抽出した教示点順序と座標系を基準点ごとにまとめ、テンプレート化して出力する処理を実行する。このステップＳ２０では、生成部１２８Ｃは、図８のフローチャートに沿った処理を実行する。
【００８０】
（ステップＳ２０の処理）
図８の処理では、まず、ステップＳ１７０において、生成部１２８Ｃが、図２０に示す出力データ５０のうち、同一の座標系で同一の基準点を持つ出力データ（前後１つずつ）を抽出する。ここでは、一例として、部品座標系の「＊＊＊→Ｐｉｃｋ」と、「Ｐｉｃｋ→＊＊＊」が抽出されたものとする。
【００８１】
次いで、ステップＳ１７２では、生成部１２８Ｃが、抽出できたか否かを判断する。このステップＳ１７２の判断が肯定されると、ステップＳ１７４に移行し、生成部１２８Ｃが、基準位置情報を出力する。本例では、図２０において矢印Ａで示す「基準位置：ピック位置」が出力される。
【００８２】
次いで、ステップＳ１７６では、生成部１２８Ｃが、前工程を座標系と併せて出力する。本例では、図２０において矢印Ｂで示す「［１］部品座標系，（０，０，−１）」が出力される。
【００８３】
次いで、ステップＳ１７８では、生成部１２８Ｃが、基準点の座標値を出力する。本例では、図２０において矢印Ｃで示す「［２］部品座標系，（０，０，０）」が出力される。
【００８４】
次いで、ステップＳ１８０では、生成部１２８Ｃが、基準点での動作を出力する。本例では、図２０において矢印Ｄで示す「［３］部品ピック」が出力される。
【００８５】
次いで、ステップＳ１８２では、生成部１２８Ｃが、後工程を座標系と併せて出力する。本例では、図２０において矢印Ｅで示す「［４］部品座標系，（０，０，１）」が出力される。これにより、生成部１２８Ｃは、図２０において矢印Ｆで示すテンプレートをテンプレートＤＢ３６に格納することができる。その後は、ステップＳ１７０に戻る。
【００８６】
ステップＳ１７０に戻ると、生成部１２８Ｃは、例えば、部品座標系の「＊＊＊→Ｐｌａｃｅ」と、「Ｐｌａｃｅ→＊＊＊」を抽出する。この場合、生成部１２８Ｃは、ステップＳ１７４〜Ｓ１８２を実行することで、図２０において矢印Ｇで示すテンプレートをテンプレートＤＢ３６に格納することができる。
【００８７】
その後は、生成部１２８Ｃは、ステップＳ１７２の判断が否定されるまで（ステップＳ１７０において出力データが抽出できなくなるまで）、ステップＳ１７０〜Ｓ１８２の処理を繰り返すことで、ロボット座標系、ツール座標系の出力データからもテンプレートを生成する。そして、生成部１２８Ｃは、生成したテンプレートをテンプレートＤＢ３６に格納する。
【００８８】
以上により、図３の処理が終了する。図３の処理が行われることで、ロボットプログラムＤＢ３８に格納されているロボットプログラムから、ロボットプログラムの生成に利用可能なテンプレートを自動的に生成することができる。
【００８９】
以上、詳細に説明したように、本実施形態によると、テンプレート生成部２８の分割部１２８Ａは、基準点を経由して動作するロボットの位置と回転動作とを時系列に沿って並べた複数のロボットプログラムを基準点で分割してファイル（分割プログラム）を生成する（Ｓ１２）。また、正規化部１２８Ｂは、各ファイルに記述されているロボットの移動を方向を示す単位ベクトルで記述するとともにロボットの回転動作を回転軸で記述する処理（Ｓ１４）と、各ファイルの座標系を共通の座標系に変換する処理（Ｓ１６）と、を実行する。また、生成部１２８Ｃは、基準点が共通する正規化したファイルから共通箇所を抽出してテンプレートを生成して出力する（Ｓ１８、Ｓ２０）。これにより、本実施形態では、ロボットプログラムを分割した後、正規化して、座標系を合わせた上で、同じ動きの部分を共通箇所として抽出することで、再利用性の高いテンプレートを自動的に生成することができる。
【００９０】
また、本実施形態では、生成部１２８Ｃは、基準点が共通する正規化したファイルのうち、閾値個以上のファイルにおいて共通する箇所を抽出する。これにより、わずかなファイルでのみ共通する箇所を抽出しないようにすることができる。したがって、この点からも再利用性の高いテンプレートを生成することが可能である。
【００９１】
また、本実施形態では、分割部１２８Ａは、基準点を終点とするファイル（基準点よりも前を示すファイル）と、基準点を始点とするファイル（基準点よりも後を示すファイル）と、を生成する。そして、生成部１２８Ｃは、基準点よりも前を示すファイルからは、時系列順の逆順に沿って（下から）共通箇所を抽出し、基準点よりも後を示すファイルからは、時系列順に沿って（上から）共通箇所を抽出する。これにより、本実施形態では、基準点を基準として、共通箇所を適切に抽出することができる。
【００９２】
また、本実施形態では、正規化部１２８Ｂは、各ファイルの座標系を複数の座標系に変換するため、座標系ごとに適切なテンプレートを生成することができる。
【００９３】
また、本実施形態では、正規化部１２８Ｂは、方向ベクトルを単位ベクトルに変換するため、生成されたテンプレートにおける変数の設定が容易となる。
【００９４】
なお、上記実施形態では、正規化部１２８Ｂは、方向ベクトルを単位ベクトル（大きさが１のベクトル）に変換する場合について説明したが、これに限られるものではない。すなわち、正規化部１２８Ｂは、方向ベクトルを予め定められた所定大きさのベクトルに変換することとしてもよい。
【００９５】
なお、上記実施形態では、ステップＳ１４、Ｓ１６の実行順を逆にしてもよい。
【００９６】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記憶媒体（ただし、搬送波は除く）に記録しておくことができる。
【００９７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ（Digital Versatile Disc）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）などの可搬型記憶媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００９８】
プログラムを実行するコンピュータは、例えば、可搬型記憶媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記憶媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００９９】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【０１００】
なお、以上の実施形態の説明に関して、更に以下の付記を開示する。
（付記１）  基準点を経由して動作するロボットの位置と回転動作とを時系列に沿って並べた複数のロボット動作プログラムを基準点で分割して分割プログラムを生成する分割部と、
前記分割プログラムに記述されているロボットの移動を所定大きさの方向ベクトルで記述するとともに前記ロボットの回転動作を回転軸で記述する処理と、該分割プログラムの座標系を共通の座標系に変換する処理と、を実行して、前記分割プログラムを正規化する正規化部と、
前記基準点が共通する正規化した前記分割プログラムから共通箇所を抽出して、前記ロボット動作プログラムの生成に利用可能なテンプレートを生成する生成部と、
を備える情報処理装置。
（付記２）  前記生成部は、前記基準点が共通する正規化した前記分割プログラムのうち、閾値個以上の分割プログラムにおいて共通する箇所を抽出する、ことを特徴とする付記１に記載の情報処理装置。
（付記３）  前記分割部は、前記基準点を終点とする分割プログラムと、前記基準点を始点とする分割プログラムと、を生成し、
前記生成部は、前記基準点を終点とする正規化した分割プログラムからは、時系列の逆順に沿って共通箇所を抽出し、前記基準点を始点とする正規化した分割プログラムからは、時系列順に沿って共通箇所を抽出する、ことを特徴とする付記１又は２に記載の情報処理装置。
（付記４）  前記正規化部は、前記共通の座標系を異ならせて、前記分割プログラムを正規化する処理を複数回実行する、ことを特徴とする付記１〜３のいずれかに記載の情報処理装置。
（付記５）  前記所定大きさの方向ベクトルは、単位ベクトルであることを特徴とする付記１〜４のいずれかに記載の情報処理装置。
（付記６）  基準点を経由して動作するロボットの位置と回転動作とを時系列に沿って並べた複数のロボット動作プログラムを基準点で分割して分割プログラムを生成し、
前記分割プログラムに記述されているロボットの移動を所定大きさの方向ベクトルで記述するとともに前記ロボットの回転動作を回転軸で記述する処理と、該分割プログラムの座標系を共通の座標系に変換する処理と、を実行して、前記分割プログラムを正規化し、
前記基準点が共通する正規化した前記分割プログラムから共通箇所を抽出して、前記ロボット動作プログラムの生成に利用可能なテンプレートを生成する、
処理をコンピュータが実行することを特徴とするロボット動作プログラム生成補助方法。
（付記７）  前記生成する処理では、前記基準点が共通する正規化した前記分割プログラムのうち、閾値個以上の分割プログラムにおいて共通する箇所を抽出する、ことを特徴とする付記６に記載のロボット動作プログラム生成補助方法。
（付記８）  前記分割する処理では、前記基準点を終点とする分割プログラムと、前記基準点を始点とする分割プログラムと、を生成し、
前記生成する処理では、前記基準点を終点とする正規化した分割プログラムからは、時系列の逆順に沿って共通箇所を抽出し、前記基準点を始点とする正規化した分割プログラムからは、時系列順に沿って共通箇所を抽出する、ことを特徴とする付記６又は７に記載のロボット動作プログラム生成補助方法。
（付記９）  前記正規化する処理では、前記共通の座標系を異ならせて、前記分割プログラムを正規化する処理を複数回実行する、ことを特徴とする付記６〜８のいずれかに記載のロボット動作プログラム生成補助方法。
（付記１０）  前記所定大きさの方向ベクトルは、単位ベクトルであることを特徴とする付記６〜９のいずれかに記載のロボット動作プログラム生成補助方法。
（付記１１）  基準点を経由して動作するロボットの位置と回転動作とを時系列に沿って並べた複数のロボット動作プログラムを基準点で分割して分割プログラムを生成し、
前記分割プログラムに記述されているロボットの移動を所定大きさの方向ベクトルで記述するとともに前記ロボットの回転動作を回転軸で記述する処理と、該分割プログラムの座標系を共通の座標系に変換する処理と、を実行して、前記分割プログラムを正規化し、
前記基準点が共通する正規化した前記分割プログラムから共通箇所を抽出して、前記ロボット動作プログラムの生成に利用可能なテンプレートを生成する、
処理をコンピュータに実行させるためのロボット動作プログラム生成補助プログラム。
【符号の説明】
【０１０１】
１０  情報処理装置
１２８Ａ  分割部
１２８Ｂ  正規化部
１２８Ｃ  生成部
【図１】
2019206054.tif 000003
【図２】
2019206054.tif 000004
【図３】
2019206054.tif 000005
【図４】
2019206054.tif 000006
【図５】
2019206054.tif 000007
【図６】
2019206054.tif 000008
【図７】
2019206054.tif 000009
【図８】
2019206054.tif 000010
【図９】
2019206054.tif 000011
【図１０】
2019206054.tif 000012
【図１１】
2019206054.tif 000013
【図１２】
2019206054.tif 000014
【図１３】
2019206054.tif 000015
【図１４】
2019206054.tif 000016
【図１５】
2019206054.tif 000017
【図１６】
2019206054.tif 000018
【図１７】
2019206054.tif 000019
【図１８】
2019206054.tif 000020
【図１９】
2019206054.tif 000021
【図２０】
2019206054.tif 000022