(57)【要約】【課題】従来の教示プログラムの構築方法では、教示にかかる作業の効率化を図ることが困難である。【解決手段】ロボット３の動作を規定する複数の動作命令が保存されたライブラリー４１と、ロボット３に実施させる作業を、前記作業の流れに沿ってライブラリー４１から選択された複数の前記動作命令の配列によって規定する教示プログラムを保存する教示プログラム記憶部４５と、ライブラリー４１を更新するライブラリー更新部と、を含み、前記ライブラリー更新部は、前記教示プログラムによって規定される前記作業において、連続して並ぶ複数の前記動作命令を１つの命令群として、前記作業における前記命令群の発生頻度に応じて、前記命令群をライブラリー４１に追加する、ことを特徴とする教示装置。【選択図】図２
2013158887.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの動作を規定する複数の動作命令がライブラリーとして保存された命令保存部と、
前記ロボットに実施させる作業を、前記作業の流れに沿って前記ライブラリーから選択された複数の前記動作命令の配列によって規定する教示プログラムを保存する教示プログラム保存部と、
前記ライブラリーを更新するライブラリー更新部と、を含み、
前記ライブラリー更新部は、前記教示プログラムによって規定される前記作業において、連続して並ぶ複数の前記動作命令を１つの命令群として、前記作業における前記命令群の発生頻度に応じて、前記命令群を前記ライブラリーに追加する、
ことを特徴とする教示装置。
【請求項２】
前記ロボットの前記作業における前記動作の履歴を記録する履歴記録部と、
前記履歴記録部に記録された前記履歴から前記命令群の前記発生頻度を算出する頻度算出部と、を含み、
前記ライブラリー更新部は、前記頻度算出部によって算出された前記発生頻度に基づいて、前記命令群を前記ライブラリーに追加する、
ことを特徴とする請求項１に記載の教示装置。
【請求項３】
前記履歴記録部に記録された前記履歴から、複数の前記動作のうちで前記ロボットが失敗した前記動作を失敗動作として検出する失敗動作検出部を含み、
前記頻度算出部は、検出された前記失敗動作に対応する前記動作命令が含まれる前記命令群を、前記発生頻度の算出から除外する、
ことを特徴とする請求項２に記載の教示装置。
【請求項４】
ワークを把持するハンドと、
前記ハンドを変位させるアームと、
前記ハンド及び前記アームの駆動を制御する制御部と、
前記ハンド及び前記アームのそれぞれの動作を規定する複数の動作命令がライブラリーとして保存された命令保存部と、
前記ハンド及び前記アームに実施させる作業を、前記作業の流れに沿って前記ライブラリーから選択された複数の前記動作命令の配列によって規定する教示プログラムを保存する教示プログラム保存部と、
前記ライブラリーを更新するライブラリー更新部と、を含み、
前記ライブラリー更新部は、前記教示プログラムによって規定される前記作業において、連続して並ぶ複数の前記動作命令を１つの命令群として、前記作業における前記命令群の発生頻度に応じて、前記命令群を前記ライブラリーに追加する、
ことを特徴とするロボット。
【請求項５】
前記作業における前記ハンド及び前記アームのそれぞれの前記動作の履歴を記録する履歴記録部と、
前記履歴記録部に記録された前記履歴から前記命令群の前記発生頻度を算出する頻度算出部と、を含み、
前記ライブラリー更新部は、前記頻度算出部によって算出された前記発生頻度に基づいて、前記命令群を前記ライブラリーに追加する、
ことを特徴とする請求項４に記載のロボット。
【請求項６】
前記履歴記録部に記録された前記履歴から、複数の前記動作のうちで前記ハンド及び前記アームの少なくとも一方が失敗した前記動作を失敗動作として検出する失敗動作検出部を含み、
前記頻度算出部は、検出された前記失敗動作に対応する前記動作命令が含まれる前記命令群を、前記発生頻度の算出から除外する、
ことを特徴とする請求項５に記載のロボット。
【請求項７】
ワークを把持するハンドと、前記ハンドを変位させるアームと、前記ハンド及び前記アームの駆動を制御する制御部と、を有するロボットと、
前記ロボットの動作を規定する複数の動作命令がライブラリーとして保存された命令保存部と、
前記ロボットに実施させる作業を、前記作業の流れに沿って前記ライブラリーから選択された複数の前記動作命令の配列によって規定する教示プログラムを保存する教示プログラム保存部と、
前記ライブラリーを更新するライブラリー更新部と、を含み、
前記ライブラリー更新部は、前記教示プログラムによって規定される前記作業において、連続して並ぶ複数の前記動作命令を１つの命令群として、前記作業における前記命令群の発生頻度に応じて、前記命令群を前記ライブラリーに追加する、
ことを特徴とするロボット装置。
【請求項８】
前記ロボットの前記作業における前記動作の履歴を記録する履歴記録部と、
前記履歴記録部に記録された前記履歴から前記命令群の前記発生頻度を算出する頻度算出部と、を含み、
前記ライブラリー更新部は、前記頻度算出部によって算出された前記発生頻度に基づいて、前記命令群を前記ライブラリーに追加する、
ことを特徴とする請求項７に記載のロボット装置。
【請求項９】
前記履歴記録部に記録された前記履歴から、複数の前記動作のうちで前記ロボットが失敗した前記動作を失敗動作として検出する失敗動作検出部を含み、
前記頻度算出部は、検出された前記失敗動作に対応する前記動作命令が含まれる前記命令群を、前記発生頻度の算出から除外する、
ことを特徴とする請求項８に記載のロボット装置。
【請求項１０】
ロボットの動作を規定する複数の動作命令が保存されたライブラリーから選択した複数の前記動作命令を、前記ロボットに実施させる作業の流れに沿って配列することによって、前記ロボットに実施させる前記作業を規定する教示プログラムを作成するステップと、
前記教示プログラムによって規定される前記作業において、連続して並ぶ複数の前記動作命令を１つの命令群として、前記作業における前記命令群の発生頻度を算出するステップと、
前記作業における前記命令群の前記発生頻度に応じて、前記命令群を前記ライブラリーに追加するステップと、を含む、
ことを特徴とする教示方法。
【請求項１１】
前記発生頻度を算出するステップでは、前記ロボットの前記動作の履歴から前記命令群の前記発生頻度を算出する、
ことを特徴とする請求項１０に記載の教示方法。
【請求項１２】
前記履歴から、複数の前記動作のうちで前記ロボットが失敗した前記動作を失敗動作として検出するステップを含み、
前記発生頻度を算出するステップでは、検出された前記失敗動作に対応する前記動作命令が含まれる前記命令群を、前記発生頻度の算出から除外する、
ことを特徴とする請求項１１に記載の教示方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、教示装置、ロボット、ロボット装置、教示方法等に関する。
【背景技術】
【０００２】
従来から、教示された動作に従って動作するロボットが知られている。教示された動作を規定するプログラム（以下、教示プログラムと呼ぶ）を構築する方法としては、従来、記憶装置に記録されている複数の動作命令を種々に組み合わせることによって１つの教示プログラムを構築する方法が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１８１５２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記従来の教示プログラムの構築方法では、１つの教示プログラムを構成する複数の動作命令を動作命令ごとに１つずつ教示プログラムに登録することによって、１つの教示プログラムが構築される。教示プログラムの構築の過程において、動作命令を教示プログラムに登録する際には、動作命令ごとに、記憶装置に記録されている複数の動作命令の中から該当する動作命令を読み出して、読み出した動作命令を教示プログラムに登録する作業が行われる。
つまり、従来の教示プログラムの構築方法では、登録すべき動作命令ごとに、動作命令を１つずつ記憶装置から読み出す必要があるので、教示にかかる作業の効率化を図ることが困難であるという課題がある。
【課題を解決するための手段】
【０００５】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現され得る。
【０００６】
［適用例１］ロボットの動作を規定する複数の動作命令がライブラリーとして保存された命令保存部と、前記ロボットに実施させる作業を、前記作業の流れに沿って前記ライブラリーから選択された複数の前記動作命令の配列によって規定する教示プログラムを保存する教示プログラム保存部と、前記ライブラリーを更新するライブラリー更新部と、を含み、前記ライブラリー更新部は、前記教示プログラムによって規定される前記作業において、連続して並ぶ複数の前記動作命令を１つの命令群として、前記作業における前記命令群の発生頻度に応じて、前記命令群を前記ライブラリーに追加する、ことを特徴とする教示装置。
【０００７】
この適用例の教示装置は、ロボットに実施させる作業を規定する教示プログラムを保存する教示プログラム保存部を有している。教示プログラムは、ロボットの動作を規定する複数の動作命令の配列によって、ロボットに実施させる作業を規定する。つまり、ロボットに実施させる作業は、複数の動作の集合として規定される。複数の動作命令は、ライブラリーとして命令保存部に保存されている。教示プログラムでは、ロボットに実施させる作業の流れに沿ってライブラリーから選択された複数の動作命令が配列している。
この教示装置では、ライブラリー更新部によってライブラリーが更新される。ライブラリー更新部は、ロボットに実施させる作業における命令群の発生頻度に応じて、命令群をライブラリーに追加する。ここで、教示プログラムによって規定される作業において、連続して並ぶ複数の動作命令が１つの命令群である。この教示装置では、ライブラリーの更新によって、発生頻度に応じて命令群がライブラリーに追加されるので、ライブラリーに追加された命令群を新たな教示プログラムの構築に供することができる。これにより、新たな教示プログラムを構築するときに、ライブラリーに登録されている命令群を選択することができる。このため、命令群を構成する複数の動作命令のそれぞれを個別にライブラリーから選択する手間を簡略化することができる。この結果、教示にかかる作業を効率化しやすくすることができる。
【０００８】
［適用例２］上記の教示装置であって、前記ロボットの前記作業における前記動作の履歴を記録する履歴記録部と、前記履歴記録部に記録された前記履歴から前記命令群の前記発生頻度を算出する頻度算出部と、を含み、前記ライブラリー更新部は、前記頻度算出部によって算出された前記発生頻度に基づいて、前記命令群を前記ライブラリーに追加する、ことを特徴とする教示装置。
【０００９】
この適用例では、ロボットの作業における動作の履歴から算出した発生頻度に基づいて、命令群をライブラリーに追加するので、命令群の使用頻度に応じて命令群をライブラリーに追加することができる。
【００１０】
［適用例３］上記の教示装置であって、前記履歴記録部に記録された前記履歴から、複数の前記動作のうちで前記ロボットが失敗した前記動作を失敗動作として検出する失敗動作検出部を含み、前記頻度算出部は、検出された前記失敗動作に対応する前記動作命令が含まれる前記命令群を、前記発生頻度の算出から除外する、ことを特徴とする教示装置。
【００１１】
この適用例では、履歴から検出された失敗動作に対応する動作命令が含まれる命令群を発生頻度の算出から除外するので、ロボットの作業における動作の失敗を軽減できる教示プログラムを構築することができる。
【００１２】
［適用例４］ワークを把持するハンドと、前記ハンドを変位させるアームと、前記ハンド及び前記アームの駆動を制御する制御部と、前記ハンド及び前記アームのそれぞれの動作を規定する複数の動作命令がライブラリーとして保存された命令保存部と、前記ハンド及び前記アームに実施させる作業を、前記作業の流れに沿って前記ライブラリーから選択された複数の前記動作命令の配列によって規定する教示プログラムを保存する教示プログラム保存部と、前記ライブラリーを更新するライブラリー更新部と、を含み、前記ライブラリー更新部は、前記教示プログラムによって規定される前記作業において、連続して並ぶ複数の前記動作命令を１つの命令群として、前記作業における前記命令群の発生頻度に応じて、前記命令群を前記ライブラリーに追加する、ことを特徴とするロボット。
【００１３】
この適用例のロボットは、ハンド及びアームに実施させる作業を規定する教示プログラムを保存する教示プログラム保存部を有している。教示プログラムは、ハンド及びアームのそれぞれの動作を規定する複数の動作命令の配列によって、ハンド及びアームに実施させる作業を規定する。つまり、ハンド及びアームに実施させる作業は、複数の動作の集合として規定される。複数の動作命令は、ライブラリーとして命令保存部に保存されている。教示プログラムでは、ハンド及びアームに実施させる作業の流れに沿ってライブラリーから選択された複数の動作命令が配列している。
このロボットでは、ライブラリー更新部によってライブラリーが更新される。ライブラリー更新部は、ハンド及びアームに実施させる作業における命令群の発生頻度に応じて、命令群をライブラリーに追加する。ここで、教示プログラムによって規定される作業において、連続して並ぶ複数の動作命令が１つの命令群である。このロボットでは、ライブラリーの更新によって、発生頻度に応じて命令群がライブラリーに追加されるので、ライブラリーに追加された命令群を新たな教示プログラムの構築に供することができる。これにより、新たな教示プログラムを構築するときに、ライブラリーに登録されている命令群を選択することができる。このため、命令群を構成する複数の動作命令のそれぞれを個別にライブラリーから選択する手間を簡略化することができる。この結果、教示にかかる作業を効率化しやすくすることができる。
【００１４】
［適用例５］上記のロボットであって、前記作業における前記ハンド及び前記アームのそれぞれの前記動作の履歴を記録する履歴記録部と、前記履歴記録部に記録された前記履歴から前記命令群の前記発生頻度を算出する頻度算出部と、を含み、前記ライブラリー更新部は、前記頻度算出部によって算出された前記発生頻度に基づいて、前記命令群を前記ライブラリーに追加する、ことを特徴とするロボット。
【００１５】
この適用例では、作業におけるハンド及びアームのそれぞれの動作の履歴から算出した発生頻度に基づいて、命令群をライブラリーに追加するので、命令群の使用頻度に応じて命令群をライブラリーに追加することができる。
【００１６】
［適用例６］上記のロボットであって、前記履歴記録部に記録された前記履歴から、複数の前記動作のうちで前記ハンド及び前記アームの少なくとも一方が失敗した前記動作を失敗動作として検出する失敗動作検出部を含み、前記頻度算出部は、検出された前記失敗動作に対応する前記動作命令が含まれる前記命令群を、前記発生頻度の算出から除外する、ことを特徴とするロボット。
【００１７】
この適用例では、履歴から検出された失敗動作に対応する動作命令が含まれる命令群を発生頻度の算出から除外するので、ハンド及びアームの作業における動作の失敗を軽減できる教示プログラムを構築することができる。
【００１８】
［適用例７］ワークを把持するハンドと、前記ハンドを変位させるアームと、前記ハンド及び前記アームの駆動を制御する制御部と、を有するロボットと、前記ロボットの動作を規定する複数の動作命令がライブラリーとして保存された命令保存部と、前記ロボットに実施させる作業を、前記作業の流れに沿って前記ライブラリーから選択された複数の前記動作命令の配列によって規定する教示プログラムを保存する教示プログラム保存部と、前記ライブラリーを更新するライブラリー更新部と、を含み、前記ライブラリー更新部は、前記教示プログラムによって規定される前記作業において、連続して並ぶ複数の前記動作命令を１つの命令群として、前記作業における前記命令群の発生頻度に応じて、前記命令群を前記ライブラリーに追加する、ことを特徴とするロボット装置。
【００１９】
この適用例のロボット装置は、ロボットに実施させる作業を規定する教示プログラムを保存する教示プログラム保存部を有している。教示プログラムは、ロボットの動作を規定する複数の動作命令の配列によって、ロボットに実施させる作業を規定する。つまり、ロボットに実施させる作業は、複数の動作の集合として規定される。複数の動作命令は、ライブラリーとして命令保存部に保存されている。教示プログラムでは、ロボットに実施させる作業の流れに沿ってライブラリーから選択された複数の動作命令が配列している。
このロボット装置では、ライブラリー更新部によってライブラリーが更新される。ライブラリー更新部は、ロボットに実施させる作業における命令群の発生頻度に応じて、命令群をライブラリーに追加する。ここで、教示プログラムによって規定される作業において、連続して並ぶ複数の動作命令が１つの命令群である。このロボット装置では、ライブラリーの更新によって、発生頻度に応じて命令群がライブラリーに追加されるので、ライブラリーに追加された命令群を新たな教示プログラムの構築に供することができる。これにより、新たな教示プログラムを構築するときに、ライブラリーに登録されている命令群を選択することができる。このため、命令群を構成する複数の動作命令のそれぞれを個別にライブラリーから選択する手間を簡略化することができる。この結果、教示にかかる作業を効率化しやすくすることができる。
【００２０】
［適用例８］上記のロボット装置であって、前記ロボットの前記作業における前記動作の履歴を記録する履歴記録部と、前記履歴記録部に記録された前記履歴から前記命令群の前記発生頻度を算出する頻度算出部と、を含み、前記ライブラリー更新部は、前記頻度算出部によって算出された前記発生頻度に基づいて、前記命令群を前記ライブラリーに追加する、ことを特徴とするロボット装置。
【００２１】
この適用例では、ロボットの作業における動作の履歴から算出した発生頻度に基づいて、命令群をライブラリーに追加するので、命令群の使用頻度に応じて命令群をライブラリーに追加することができる。
【００２２】
［適用例９］上記のロボット装置であって、前記履歴記録部に記録された前記履歴から、複数の前記動作のうちで前記ロボットが失敗した前記動作を失敗動作として検出する失敗動作検出部を含み、前記頻度算出部は、検出された前記失敗動作に対応する前記動作命令が含まれる前記命令群を、前記発生頻度の算出から除外する、ことを特徴とするロボット装置。
【００２３】
この適用例では、履歴から検出された失敗動作に対応する動作命令が含まれる命令群を発生頻度の算出から除外するので、ロボットの作業における動作の失敗を軽減できる教示プログラムを構築することができる。
【００２４】
［適用例１０］ロボットの動作を規定する複数の動作命令が保存されたライブラリーから選択した複数の前記動作命令を、前記ロボットに実施させる作業の流れに沿って配列することによって、前記ロボットに実施させる前記作業を規定する教示プログラムを作成するステップと、前記教示プログラムによって規定される前記作業において、連続して並ぶ複数の前記動作命令を１つの命令群として、前記作業における前記命令群の発生頻度を算出するステップと、前記作業における前記命令群の前記発生頻度に応じて、前記命令群を前記ライブラリーに追加するステップと、を含む、ことを特徴とする教示方法。
【００２５】
この適用例の教示方法は、ロボットに実施させる作業を規定する教示プログラムを作成するステップを含む。教示プログラムは、ロボットの動作を規定する複数の動作命令の配列によって、ロボットに実施させる作業を規定する。つまり、ロボットに実施させる作業は、複数の動作の集合として規定される。複数の動作命令は、ライブラリーとして保存されている。教示プログラムを作成するステップでは、ライブラリーから選択した複数の動作命令を、ロボットに実施させる作業の流れに沿って配列することによって教示プログラムを作成する。
この教示方法は、ロボットに実施させる作業における命令群の発生頻度に応じて、命令群をライブラリーに追加するステップを含む。ここで、教示プログラムによって規定される作業において、連続して並ぶ複数の動作命令が１つの命令群である。この教示方法では、発生頻度に応じて命令群をライブラリーに追加するので、ライブラリーに追加した命令群を新たな教示プログラムの構築に供することができる。これにより、新たな教示プログラムを構築するときに、ライブラリーに登録されている命令群を選択することができる。このため、命令群を構成する複数の動作命令のそれぞれを個別にライブラリーから選択する手間を簡略化することができる。この結果、教示にかかる作業を効率化しやすくすることができる。
【００２６】
［適用例１１］上記の教示方法であって、前記発生頻度を算出するステップでは、前記ロボットの前記動作の履歴から前記命令群の前記発生頻度を算出する、ことを特徴とする教示方法。
【００２７】
この適用例では、ロボットの作業における動作の履歴から算出した発生頻度に基づいて、命令群をライブラリーに追加するので、命令群の使用頻度に応じて命令群をライブラリーに追加することができる。
【００２８】
［適用例１２］上記の教示方法であって、前記履歴から、複数の前記動作のうちで前記ロボットが失敗した前記動作を失敗動作として検出するステップを含み、前記発生頻度を算出するステップでは、検出された前記失敗動作に対応する前記動作命令が含まれる前記命令群を、前記発生頻度の算出から除外する、ことを特徴とする教示方法。
【００２９】
この適用例では、履歴から検出された失敗動作に対応する動作命令が含まれる命令群を発生頻度の算出から除外するので、ロボットの作業における動作の失敗を軽減することができる。
【図面の簡単な説明】
【００３０】
【図１】本実施形態におけるロボット装置の概略の構成を示す図。
【図２】本実施形態におけるロボット装置の概略の構成を示すブロック図。
【図３】本実施形態におけるワークの搬送の作業の流れを説明する図。
【図４】本実施形態におけるワークの搬送の作業の流れを説明する図。
【図５】本実施形態におけるワークの搬送の作業の流れを説明する図。
【図６】本実施形態における実行処理の流れを説明する図。
【図７】本実施形態における更新処理の流れを説明する図。
【図８】本実施形態における命令群の追加処理の流れを説明する図。
【図９】本実施形態におけるロボットの他の構成例を示す図。
【図１０】本実施形態におけるロボットの他の構成例を示すブロック図。
【発明を実施するための形態】
【００３１】
図面を参照しながら、実施形態について説明する。
本実施形態におけるロボット装置１は、図１に示すように、ロボット３と、ロボット制御装置５と、を有している。なお、本実施形態では、ロボット制御装置５に、入力装置７と、表示装置９と、が接続されている。ロボット３とロボット制御装置５とは、無線や有線で互いに通信する。ロボット３は、ロボット制御装置５からの指令に基づいて動作する。
【００３２】
ロボット３は、第１アーム１１と、第１ハンド１２と、第２アーム１３と、第２ハンド１４と、制御部１５と、を有している。第１アーム１１及び第２アーム１３は、それぞれ、腕部１７と、関節部１８と、を有している。また、ロボット３は、第１アーム１１、第１ハンド１２、第２アーム１３、及び第２ハンド１４のそれぞれを駆動するための動力を発生する種々の動力源や、動力源からの動力を伝達する動力伝達機構などを有している。
【００３３】
制御部１５は、第１アーム１１、第１ハンド１２、第２アーム１３、及び第２ハンド１４のそれぞれの駆動を個別に制御する。
ロボット３は、第１アーム１１、第１ハンド１２、第２アーム１３、及び第２ハンド１４のそれぞれの姿勢や位置を変化させることができる。また、ロボット３は、第１ハンド１２及び第２ハンド１４のそれぞれでワークＷを把持したり、把持したワークＷを移動させたり、把持したワークＷを放したりすることができる。このような姿勢や位置の変化、ワークＷの把持、ワークＷの移動、把持の解除などの動作は、ロボット制御装置５からの指令に基づいて行われる。
なお、以下において、第１アーム１１及び第１ハンド１２の組み合わせを第１アーム装置１９ａと呼び、第２アーム１３及び第２ハンド１４の組み合わせを第２アーム装置１９ｂと呼ぶ。
【００３４】
ロボット制御装置５は、概略の構成を示すブロック図である図２に示すように、制御部２１と、メモリー部２３と、データベース２５と、インターフェイス部２７と、を有している。メモリー部２３、データベース２５及びインターフェイス部２７は、バス２９を介して制御部２１に接続されている。
制御部２１は、ＣＰＵ（Central Processing Unit）などを含んだ構成を有しており、ロボット３の駆動を制御したり、各種の演算処理を実施する。
メモリー部２３は、ＲＡＭ（Random Access Memory）や、ＲＯＭ（Read Only Memory）などを含んでいる。メモリー部２３には、各種のデータを一時的に展開する領域であるデータ展開部３１が設定されている。データ展開部３１に展開されるデータとしては、例えば、ワークＷの搬送にかかる搬送処理等のプログラムデータなどが挙げられる。
【００３５】
データベース２５は、ライブラリー４１と、オブジェクトデータ記憶部４３と、教示プログラム記憶部４５と、履歴情報記憶部４７と、を含む。
ライブラリー４１には、ロボット３の動作を規定する種々の動作命令が保存されている。
オブジェクトデータ記憶部４３には、後述する種々のオブジェクトデータが保存される。
教示プログラム記憶部４５には、ロボット３に実行させる作業を規定する教示プログラムが保存される。
履歴情報記憶部４７には、ロボット３が実施した動作の履歴や、ロボット３が実施した動作の結果などが、履歴情報として時系列的に保存される。
インターフェイス部２７は、ロボット制御装置５と外部機器との間の通信を仲介する。
ロボット３の制御部１５、入力装置７、及び表示装置９は、それぞれ、インターフェイス部２７とバス２９とを介して制御部２１に接続されている。
【００３６】
ここで、教示プログラムについて説明する。ここでは、図３に示すように、第１アーム装置１９ａでワークＷを、位置Ｐ１から位置Ｐ２へ搬送する作業（以下、作業１と呼ぶ）を例に、説明する。教示プログラムの説明に先立ち、第１アーム装置１９ａによる作業の流れを説明する。
この作業１では、まず、図３（ａ）に示すように、第１アーム装置１９ａの第１ハンド１２を、ワークＷの初期位置である位置Ｐ１に移動させる。この「移動」という動作が、ロボット３に実施させる１番目の動作である。
次いで、図３（ｂ）に示すように、第１ハンド１２にワークＷを把持させる。この「把持」という動作が、ロボット３に実施させる２番目の動作である。
次いで、図３（ｃ）に示すように、第１ハンド１２を位置Ｐ２に移動させる。この「移動」という動作が、ロボット３に実施させる３番目の動作である。
次いで、図３（ｄ）に示すように、第１ハンド１２にワークＷの把持を解除させる。この「把持の解除」という動作が、ロボット３に実施させる４番目の動作である。
このように、作業１は、上記の１番目〜４番目までの４つの動作で構成される。
【００３７】
本実施形態では、ロボット３に対して「移動」という動作を規定する動作命令は、「Move to」と表記される。また、ロボット３に対して「把持」という動作を規定する動作命令は、「Grasp」と表記される。ロボット３に対して「把持の解除」という動作を規定する動作命令は、「Release」と表記される。なお、「Move to」、「Grasp」、「Release」などの動作命令は、図２に示すライブラリー４１に保存されている。
そして、教示プログラムは、作業の流れに沿って動作命令を並べた構成を有している。上記の作業１を規定する教示プログラム（以下、プログラムpgm1と呼ぶでは、表１に示すように、動作の順に、「Move to」、「Grasp」、「Move to」、「Release」という４つの動作命令が並んでいる。
【００３８】
【表１】
2013158887.tif 000003
【００３９】
上記の表１において、動作順序は、１番目〜４番目までの順序を示している。
また、動作対象は、第１アーム装置１９ａ及び第２アーム装置１９ｂのいずれかを指示するデータである。「Arm0」というのは、動作対象として第１アーム装置１９ａを指示する。他方で、動作対象として第２アーム装置１９ｂを指示する場合、動作対象として「Arm1」が記述される。
オブジェクトデータ番号は、図２に示すオブジェクトデータ記憶部４３に保存されている種々のオブジェクトデータのそれぞれに付与されている番号を指定するものである。ここで、オブジェクトデータは、表２に示すように、ワークＷに関する情報であるワーク情報や、位置に関する情報である位置情報などを示すデータである。
ワーク情報には、ワークＷの大きさや、重量、形状などを示す属性データと、ワークＷの初期位置を示す位置データとが、含まれている。
位置情報は、第１ハンド１２や第２ハンド１４の位置を指示する位置データである。
【００４０】
【表２】
2013158887.tif 000004
【００４１】
プログラムpgm1（表１）のオブジェクトデータ番号に番号を指定すると、指定された番号のオブジェクトデータが、オブジェクトデータ記憶部４３から参照される。
プログラムpgm1では、１番目の動作（動作１）として、「Arm0」に対して「Move to」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ１が参照される。オブジェクトデータ１には、ワークＷの初期位置（位置Ｐ１）を示す位置データが含まれている。このため、プログラムpgm1における動作１では、第１アーム装置１９ａの第１ハンド１２を、位置Ｐ１に移動させることを指示することができる。
次いで、プログラムpgm1の２番目の動作（動作２）として、「Arm0」に対して「Grasp」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ１が参照される。オブジェクトデータ１には、ワークＷの属性データが含まれている。このため、プログラムpgm1における動作２では、第１ハンド１２にワークＷを把持させることを指示することができる。
【００４２】
次いで、プログラムpgm1の３番目の動作（動作３）として、「Arm0」に対して「Move to」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ２が参照される。オブジェクトデータ２は、位置Ｐ２を指示する位置データ（表２）である。このため、プログラムpgm1における動作３では、第１ハンド１２を位置Ｐ２に移動させることを指示することができる。
次いで、プログラムpgm1の４番目の動作（動作４）として、「Arm0」に対して「Release」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ１が参照される。オブジェクトデータ１には、ワークＷの属性データが含まれている。このため、プログラムpgm1における動作４では、第１ハンド１２にワークＷの把持を解除させることを指示することができる。
上記により、本実施形態では、表１に示すプログラムpgm1に基づいて、第１アーム装置１９ａでワークＷを、位置Ｐ１から位置Ｐ２へ搬送することができる。
【００４３】
ところで、ワークＷを位置Ｐ１から位置Ｐ２へ搬送する作業としては、上記の作業１の他に、種々の作業が考えられる。例えば、図４に示すように、第２アーム装置１９ｂでワークＷを、位置Ｐ１から位置Ｐ２へ搬送する作業（以下、作業２と呼ぶ）も考えられる。また、図５に示すように、位置Ｐ３で第１アーム装置１９ａから第２アーム装置１９ｂにワークＷを中継してから、このワークＷを位置Ｐ２へ搬送する作業（以下、作業３と呼ぶ）も考えられる。
以下、作業２及び作業３のそれぞれについて、作業の流れと教示プログラムとを説明する。
【００４４】
作業２では、まず、図４（ａ）に示すように、第２アーム装置１９ｂの第２ハンド１４を、ワークＷの初期位置である位置Ｐ１に移動させる。この「移動」という動作が、ロボット３に実施させる１番目の動作（動作１）である。
次いで、図４（ｂ）に示すように、第２ハンド１４にワークＷを把持させる。この「把持」という動作が、ロボット３に実施させる２番目の動作（動作２）である。
次いで、図４（ｃ）に示すように、第２ハンド１４を位置Ｐ２に移動させる。この「移動」という動作が、ロボット３に実施させる３番目の動作（動作３）である。
次いで、図４（ｄ）に示すように、第２ハンド１４にワークＷの把持を解除させる。この「把持の解除」という動作が、ロボット３に実施させる４番目の動作（動作４）である。
このように、作業２は、上記の動作１〜動作４までの４つの動作で構成される。
作業２を規定する教示プログラム（以下、プログラムpgm2と呼ぶ）では、表３に示すように、動作の順に、「Move to」、「Grasp」、「Move to」、「Release」という４つの動作命令が並んでいる。
【００４５】
【表３】
2013158887.tif 000005
【００４６】
プログラムpgm2では、動作１として、「Arm1」に対して「Move to」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ１が参照される。オブジェクトデータ１には、ワークＷの初期位置（位置Ｐ１）を示す位置データが含まれている。このため、プログラムpgm2における動作１では、第２アーム装置１９ｂの第２ハンド１４を、位置Ｐ１に移動させることを指示することができる。
次いで、プログラムpgm2の動作２として、「Arm1」に対して「Grasp」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ１が参照される。オブジェクトデータ１には、ワークＷの属性データが含まれている。このため、プログラムpgm2における動作２では、第２ハンド１４にワークＷを把持させることを指示することができる。
【００４７】
次いで、プログラムpgm2の動作３として、「Arm1」に対して「Move to」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ２が参照される。オブジェクトデータ２は、位置Ｐ２を指示する位置データ（表２）である。このため、プログラムpgm2における動作３では、第２ハンド１４を位置Ｐ２に移動させることを指示することができる。
次いで、プログラムpgm2の動作４として、「Arm1」に対して「Release」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ１が参照される。オブジェクトデータ１には、ワークＷの属性データが含まれている。このため、プログラムpgm2における動作４では、第２ハンド１４にワークＷの把持を解除させることを指示することができる。
上記により、本実施形態では、表３に示すプログラムpgm2に基づいて、第２アーム装置１９ｂでワークＷを、位置Ｐ１から位置Ｐ２へ搬送することができる。
【００４８】
作業３では、まず、図５（ａ）に示すように、第１アーム装置１９ａの第１ハンド１２を、ワークＷの初期位置である位置Ｐ１に移動させる。この「移動」という動作が、ロボット３に実施させる１番目の動作（動作１）である。
次いで、図５（ｂ）に示すように、第１ハンド１２にワークＷを把持させる。この「把持」という動作が、ロボット３に実施させる２番目の動作（動作２）である。
次いで、図５（ｃ）に示すように、第１ハンド１２を位置Ｐ３に移動させる。この「移動」という動作が、ロボット３に実施させる３番目の動作（動作３）である。
次いで、図５（ｄ）に示すように、第２アーム装置１９ｂの第２ハンド１４を位置Ｐ３に移動させる。この「移動」という動作が、ロボット３に実施させる４番目の動作（動作４）である。
次いで、図５（ｅ）に示すように、第２ハンド１４にワークＷを把持させる。この「把持」という動作が、ロボット３に実施させる５番目の動作（動作５）である。
次いで、図５（ｆ）に示すように、第１ハンド１２にワークＷの把持を解除させる。この「把持の解除」という動作が、ロボット３に実施させる６番目の動作（動作６）である。これにより、ワークＷが第１アーム装置１９ａから第２アーム装置１９ｂに中継される。
次いで、図５（ｇ）に示すように、第２ハンド１４を位置Ｐ２に移動させる。この「移動」という動作が、ロボット３に実施させる７番目の動作（動作７）である。
次いで、図５（ｈ）に示すように、第２ハンド１４にワークＷの把持を解除させる。この「把持の解除」という動作が、ロボット３に実施させる８番目の動作（動作８）である。
このように、作業３は、上記の動作１〜動作８までの８つの動作で構成される。
作業３を規定する教示プログラム（以下、プログラムpgm3と呼ぶ）では、表４に示すように、動作の順に、「Move to」、「Grasp」、「Move to」、「Move to」、「Grasp」、「Release」、「Move to」、「Release」という８つの動作命令が並んでいる。
【００４９】
【表４】
2013158887.tif 000006
【００５０】
プログラムpgm3では、動作１として、「Arm0」に対して「Move to」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ１が参照される。オブジェクトデータ１には、ワークＷの初期位置（位置Ｐ１）を示す位置データが含まれている。このため、プログラムpgm3における動作１では、第１アーム装置１９ａの第１ハンド１２を、位置Ｐ１に移動させることを指示することができる。
次いで、プログラムpgm3の動作２として、「Arm0」に対して「Grasp」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ１が参照される。オブジェクトデータ１には、ワークＷの属性データが含まれている。このため、プログラムpgm3における動作２では、第１ハンド１２にワークＷを把持させることを指示することができる。
【００５１】
次いで、プログラムpgm3の動作３として、「Arm0」に対して「Move to」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ３が参照される。オブジェクトデータ３は、位置Ｐ３を指示する位置データ（表２）である。このため、プログラムpgm3における動作３では、第１ハンド１２を位置Ｐ３に移動させることを指示することができる。
次いで、プログラムpgm3の動作４として、「Arm1」に対して「Move to」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ３が参照される。オブジェクトデータ３は、位置Ｐ３を指示する位置データ（表２）である。このため、プログラムpgm3における動作４では、第２アーム装置１９ｂの第２ハンド１４を、位置Ｐ３に移動させることを指示することができる。
【００５２】
次いで、プログラムpgm3の動作５として、「Arm1」に対して「Grasp」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ１が参照される。オブジェクトデータ１には、ワークＷの属性データが含まれている。このため、プログラムpgm3における動作５では、第２ハンド１４にワークＷを把持させることを指示することができる。
次いで、プログラムpgm3の動作６として、「Arm0」に対して「Release」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ１が参照される。オブジェクトデータ１には、ワークＷの属性データが含まれている。このため、プログラムpgm3における動作６では、第１ハンド１２にワークＷの把持を解除させることを指示することができる。
【００５３】
次いで、プログラムpgm3の動作７として、「Arm1」に対して「Move to」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ２が参照される。オブジェクトデータ２は、位置Ｐ２を指示する位置データ（表２）である。このため、プログラムpgm3における動作７では、第２ハンド１４を位置Ｐ２に移動させることを指示することができる。
次いで、プログラムpgm3の動作８として、「Arm1」に対して「Release」という動作命令が指定されている。このとき、動作の目標としてオブジェクトデータ１が参照される。オブジェクトデータ１には、ワークＷの属性データが含まれている。このため、プログラムpgm3における動作８では、第２ハンド１４にワークＷの把持を解除させることを指示することができる。
上記により、本実施形態では、表４に示すプログラムpgm3に基づいて、位置Ｐ３で第１アーム装置１９ａから第２アーム装置１９ｂにワークＷを中継してから、このワークＷを位置Ｐ２へ搬送することができる。
【００５４】
プログラムpgm1や、プログラムpgm2、プログラムpgm3などの教示プログラムは、いずれも、人間の作業者によって構築される。教示プログラムを構築する作業は、教示（ティーチングとも呼ばれる）と呼ばれる。
作業者は、入力装置７（図２）を介して、ライブラリー４１に保存されている種々の動作命令の中から選択した動作命令を、ロボット３に実施させる作業の流れに沿って配列することによって、教示プログラムを作成する（教示プログラム作成ステップ）。なお、動作命令の選択は、ライブラリー４１に保存されている種々の動作命令の中から所望の動作命令を読み出すことによって行われる。
教示プログラム作成ステップには、オブジェクトデータを生成するステップ（オブジェクトデータ生成ステップ）が含まれる。つまり、教示プログラム作成ステップでは、作業者は、入力装置７（図２）を介して、オブジェクトデータの生成も行うことになる。
【００５５】
教示プログラムの実行は、図６に示す実行処理によって実行される。この実行処理は、作業者からの開始の指示に基づいて、制御部２１（図２）によって実施される。
この実行処理では、制御部２１は、まず、ステップＳ１において、教示プログラムの読み込みを行う。このとき、制御部２１は、作業者によって指定された教示プログラムを、教示プログラム記憶部４５から読み出す。読み出された教示プログラムは、データ展開部３１に展開される。
次いで、ステップＳ２において、制御部２１は、変数ｎの値をクリアする。変数ｎは、動作の順序をカウントするための変数である。
次いで、ステップＳ３において、制御部２１は、変数ｎの値をインクリメントする。
【００５６】
次いで、ステップＳ４において、制御部２１は、ｎ番目の動作（以下、動作ｎと呼ぶ）を解釈する。動作ｎの解釈とは、動作ｎにおける動作対象、動作命令、及びオブジェクトデータに基づいて、ロボット３に対する駆動指令を生成する作業である。ロボット３に対する駆動指令とは、第１アーム装置１９ａや第２アーム装置１９ｂのそれぞれにおける腕部１７、第１ハンド１２、及び第２ハンド１４の駆動を指示する指令である。つまり、動作ｎを達成するために、第１ハンド１２や、第２ハンド１４、腕部１７の単位まで駆動要素を細分化し、細分化した駆動要素ごとに駆動が指示される。これにより、駆動要素ごとに駆動が制御され、動作ｎが達成され得る。
【００５７】
次いで、ステップＳ５において、制御部２１は、駆動指令を、ロボット３の制御部１５（図２）に出力する。この駆動指令には、上述したように、第１ハンド１２や、第２ハンド１４、腕部１７の単位まで細分化された駆動要素ごとに駆動が指示される。これにより、駆動指令を受けた制御部１５は、駆動指令に基づいて、第１ハンド１２や、第２ハンド１４、腕部１７の駆動を制御する。この結果、動作ｎが実行される。
次いで、ステップＳ６において、制御部２１は、動作ｎの内容と動作ｎの実行結果とを履歴情報として履歴情報記憶部４７に保存する。
次いで、ステップＳ７において、制御部２１は、次の動作があるか否かを判定する。このとき、次の動作がある（Ｙｅｓ）と判定されると、処理がステップＳ３に移行する。他方で、次の動作がない（Ｎｏ）と判定されると、制御部２１は、実行処理を終了する。
【００５８】
履歴情報は、下記の表５に示すように、動作命令の単位で収集され、保存される。履歴情報は、時系列的に保存される。つまり、動作が実行された順に、動作の内容と動作の実行結果とが、履歴情報として保存される。実行結果としては、その動作が成功したか、又は失敗したかが記録される。
表５に示す例では、前述したプログラムpgm1、プログラムpgm2、及びプログラムpgm3を、この順に、それぞれについて１回ずつ実行したときの履歴情報の例が示されている。履歴情報のＮｏ．１〜４が、プログラムpgm1の実行についての履歴に対応している。履歴情報のＮｏ．５〜８が、プログラムpgm2の実行についての履歴に対応している。履歴情報のＮｏ．９〜１６が、プログラムpgm3の実行についての履歴に対応している。
【００５９】
【表５】
2013158887.tif 000007
【００６０】
本実施形態では、履歴情報に基づいて、ライブラリー４１の更新処理が行われる（更新ステップ）。この更新処理は、図７に示すように、ステップＳ２１と、ステップＳ２２と、を有している。
ステップＳ２１の頻度算出処理では、教示プログラムによって規定される作業において、連続して並ぶ複数の動作命令を１つの命令群として、種々の作業における命令群の発生頻度を算出する（頻度算出ステップ）。この頻度算出処理では、上述した履歴情報から、種々の作業における命令群の発生頻度を算出する。
ステップＳ２２の命令群の追加処理では、種々の作業における命令群の発生頻度に応じて、命令群をライブラリー４１に追加（保存）する（命令群追加ステップ）。
【００６１】
ステップＳ２１の頻度算出処理での頻度算出ステップにおいて、命令群の発生頻度を算出する方法について説明する。ここでは、上記の表５に示す履歴情報を例に、命令群の発生頻度を算出する方法について説明する。
まず、命令群の形成方法について説明する。
命令群の形成方法では、まず、履歴情報において履歴順に（時系列的に）連続する複数の動作命令を１組の命令群として、すべての命令群の組み合わせを抽出する（命令群抽出ステップ）。
【００６２】
例えば、上記の表５において、履歴番号が１から１６までの１６個の動作命令を、履歴番号順に連続する２つの動作命令ごとに組み分けすると、１５（１６−１）組の命令群が形成される。また、上記の表５において、１６個の動作命令を、履歴番号順に連続する３つの動作命令ごとに組み分けすると、１４（１６−２）組の命令群が形成される。同様に、上記の表５において、１６個の動作命令を、履歴番号順に連続する４つの動作命令ごとに組み分けすると、１３（１６−３）組の命令群が形成される。このようにして、１６個の動作命令を１組とする命令群まで抽出すると、合計で１２０組の命令群が形成される。
このことから、Ｎ（Ｎは、２以上の整数）個の動作命令では、形成され得る命令群の組数Ｃは、下記（１）式により算出される。
Ｃ＝Ｎ×（Ｎ−１）／２…（１）
【００６３】
次に、Ｃ組（表５の例では１２０組）の命令群のなかから、相互に同一の命令群の個数をカウントする（命令群カウントステップ）。同一の命令群であるか否かは、動作命令に付随する「動作対象」及び「オブジェクトデータ番号」も考慮して判定される。このとき、命令群ごとに、命令群を構成する動作命令に付随する「動作対象」及び「オブジェクトデータ番号」のそれぞれを変数に置換する（一般化ステップ）。以下において、「動作対象」及び「オブジェクトデータ番号」のそれぞれを変数に置換することを一般化すると表現する。
「動作対象」を置換する変数としては、「動作対象」の種類数に対応する個数の変数が準備される。また、「オブジェクトデータ番号」を置換する変数としては、「オブジェクトデータ番号」の種類数に対応する個数の変数が準備される。
【００６４】
表５の例では、「動作対象」が「Arm0」と「Arm1」との２種類なので、「動作対象」を置換する変数として、種類数に対応する個数である２つの変数が準備される。ここで、「動作対象」を置換する変数として、例えば、「Ａ」、「Ｂ」という変数を準備する。
また、表５の例では、「オブジェクトデータ番号」が「１」と「２」と「３」との３種類なので、「オブジェクトデータ番号」を置換する変数として、種類数に対応する個数である３つの変数が準備される。ここで、「オブジェクトデータ番号」を置換する変数として、例えば、「Ｄ」、「Ｅ」、「Ｆ」という変数を準備する。
【００６５】
そして、各命令群において、命令群の先頭の動作命令に付随する「動作対象」を変数「Ａ」に置換し、この動作命令に付随する「オブジェクトデータ番号」を変数「Ｄ」に置換する。以下において、命令群における先頭の動作命令に付随する「動作対象」を先頭の「動作対象」と呼ぶ。また、命令群における先頭の動作命令に付随する「オブジェクトデータ番号」を先頭の「オブジェクトデータ番号」と呼ぶ。
次に、この命令群の２番目の動作命令に付随する「動作対象」が先頭の「動作対象」と同一である場合に、この２番目の「動作対象」を、先頭の「動作対象」と同じ変数「Ａ」に置換する。他方で、２番目の「動作対象」が先頭の「動作対象」と異なる場合には、２番目の「動作対象」を、先頭の「動作対象」とは異なる変数「Ｂ」に置換する。３番目以降の「動作対象」がある場合には、すべての「動作対象」について上記を繰り返す。
【００６６】
次に、この命令群の２番目の動作命令に付随する「オブジェクトデータ番号」が先頭の「オブジェクトデータ番号」と同一である場合に、この２番目の「オブジェクトデータ番号」を、先頭の「オブジェクトデータ番号」と同じ変数「Ｄ」に置換する。他方で、２番目の「オブジェクトデータ番号」が先頭の「オブジェクトデータ番号」と異なる場合には、２番目の「オブジェクトデータ番号」を、先頭の「オブジェクトデータ番号」とは異なる変数「Ｅ」に置換する。３番目の「オブジェクトデータ番号」がある場合には、３番目の「オブジェクトデータ番号」を、変数「Ｄ」、変数「Ｅ」、変数「Ｆ」のいずれかに置換する。
【００６７】
このとき、３番目の「オブジェクトデータ番号」が先頭の「オブジェクトデータ番号」と同一である場合に、３番目の「オブジェクトデータ番号」を変数「Ｄ」に置換する。また、３番目の「オブジェクトデータ番号」が２番目の「オブジェクトデータ番号」と同一である場合に、３番目の「オブジェクトデータ番号」を変数「Ｅ」に置換する。そして、３番目の「オブジェクトデータ番号」が先頭の「オブジェクトデータ番号」、２番目の「オブジェクトデータ番号」のいずれとも異なる場合に、３番目の「オブジェクトデータ番号」を変数「Ｆ」に置換する。４番目以降の「オブジェクトデータ番号」がある場合には、すべての「オブジェクトデータ番号」について上記を繰り返す。
【００６８】
ここで、表５において、例えば、連続する「Move to」と「Grasp」との組み合わせに着目する。この組み合わせは、下記表６に示すように、履歴番号１及び２の組み合わせ、履歴番号５及び６の組み合わせ、履歴番号９及び１０の組み合わせ、及び履歴番号１２及び１３の組み合わせの４つとなる。なお、表６における履歴番号は、表５の履歴番号に対応している。
【００６９】
【表６】
2013158887.tif 000008
【００７０】
履歴番号１及び２の動作命令を、上記のルールに従って変数に置換すると、表６に示すＮｏ．１の命令群として一般化され得る。
また、履歴番号５及び６の動作命令を、上記のルールに従って変数に置換すると、表６に示すＮｏ．２の命令群として一般化され得る。
同様に、履歴番号９及び１０の動作命令を、上記のルールに従って変数に置換すると、表６に示すＮｏ．３の命令群として一般化され得る。
履歴番号１２及び１３の動作命令を、上記のルールに従って変数に置換すると、表６に示すＮｏ．４の命令群として一般化され得る。
Ｎｏ．１〜３の命令群は、相互に同一の命令群として一般化される。これに対して、Ｎｏ．４の命令群は、Ｎｏ．１〜３の命令群とは異なる命令群として一般化される。
【００７１】
これらのＮｏ．１〜４の命令群では、Ｎｏ．１〜３の命令群が同一の命令群として判定され、Ｎｏ．４の命令群がＮｏ．１〜３の命令群とは異なる命令群として判定される。
これにより、Ｎｏ．１の命令群と同一の命令群の個数は、Ｎｏ．１〜３の３個としてカウントされ得る。また、Ｎｏ．４の命令群と同一の命令群の個数は、Ｎｏ．４の１個としてカウントされ得る。
Ｃ組（表５の例では１２０組）の命令群のそれぞれを一般化してから同一の命令群の個数をカウントすることによって、下記表７に示す頻度テーブルとして、同一の命令群の発生個数を集計することができる。
【００７２】
【表７】
2013158887.tif 000009
【００７３】
そして、発生個数をＣの値（本例では１２０）で除算することによって、命令群の発生頻度が算出され得る。ただし、履歴情報において、実行結果が「失敗」している動作（以下、失敗動作と呼ぶ）を含む命令群は、発生頻度の算出から除外される。本例では、Ｎｏ．４の命令群の「Grasp」（履歴番号１３）の実行結果が「失敗」している、すなわち履歴番号１３の「把持」という動作が失敗動作であるので、Ｎｏ．４の命令群は、発生頻度の算出から除外されている。
図７に示すステップＳ２１の頻度算出処理では、頻度算出ステップにおいて、上記の頻度テーブルを作成する。なお、作成された頻度テーブルは、データ展開部３１に保存される。
【００７４】
ステップＳ２２の命令群の追加処理では、図８に示すように、制御部２１は、ステップＳ３１において、頻度テーブルを読み込みを行う。
次いで、ステップＳ３２において、制御部２１は、変数ｈの値をクリアする。変数ｈは、命令群の番号（Ｎｏ．）をカウントするための変数である。
次いで、ステップＳ３３において、制御部２１は、変数ｈの値をインクリメントする。
次いで、ステップＳ３４において、制御部２１は、番号（Ｎｏ．）ｈの命令群（以下、命令群ｈと呼ぶ）があるか否かを判定する。このとき、命令群ｈがある（Ｙｅｓ）と判定されると、処理がステップＳ３５に移行する。他方で、命令群ｈがない（Ｎｏ）と判定されると、処理がステップＳ３３に移行する。
【００７５】
次いで、ステップＳ３５において、制御部２１は、命令群ｈの発生頻度があるか否かを判定する。このとき、命令群ｈの発生頻度がある（Ｙｅｓ）と判定されると、処理がステップＳ３６に移行する。他方で、命令群ｈの発生頻度がない（Ｎｏ）と判定されると、処理がステップＳ４０に移行する。なお、命令群ｈの発生頻度がないというのは、頻度テーブルにおいて、失敗動作が含まれることによって発生頻度の算出から除外されたことを意味する。
次いで、ステップＳ３６において、制御部２１は、発生頻度が所定値Ｊ以上であるか否かを判定する。このとき、発生頻度が所定値Ｊ以上である（Ｙｅｓ）と判定されると、処理がステップＳ３７に移行する。他方で、発生頻度が所定値Ｊ未満である（Ｎｏ）と判定されると、処理がステップＳ４０に移行する。
次いで、ステップＳ３７において、制御部２１は、命令群ｈに付与する名称の入力を要求する。このとき、この要求は、表示装置９を介して作業者に報知される。
【００７６】
次いで、ステップＳ３８において、制御部２１は、名称の入力が完了したか否かを判定する。このとき、名称の入力が完了した（Ｙｅｓ）と判定されると、処理がステップＳ３９に移行する。他方で、名称の入力が完了していない（Ｎｏ）と判定されると、名称の入力が完了するまで処理を待機させる。
次いで、ステップＳ３９において、制御部２１は、命令群ｈを、この命令群ｈの名称とともに、ライブラリー４１に保存（追加）する。
次いで、ステップＳ４０において、制御部２１は、次の命令群があるか否かを判定する。このとき、次の命令群がある（Ｙｅｓ）と判定されると、処理がステップＳ３３に移行する。他方で、次の動作がない（Ｎｏ）と判定されると、制御部２１は、命令群の追加処理を終了する。
以上により、ライブラリー４１の更新処理が終了する。
【００７７】
本実施形態によれば、ライブラリー４１の更新処理の後に、新たな教示プログラムを構築する場合、作業者は、ライブラリー４１に登録されている命令群を選択することができる。つまり、ライブラリー４１の更新処理によってライブラリー４１に追加された命令群は、新たな教示プログラムの構築に供される。これにより、命令群を構成する複数の動作命令のそれぞれを個別にライブラリー４１から選択する手間を簡略化することができる。この結果、教示プログラムの構築（教示）にかかる作業を効率化しやすくすることができる。
なお、ライブラリー４１に追加される命令群では、「動作対象」や「オブジェクトデータ番号」が登録されていない。教示プログラムを構築する作業者は、教示プログラムを構築する都度、教示プログラムにおいて「動作対象」や「オブジェクトデータ番号」を登録（入力）する。これにより、ライブラリー４１における命令群の汎用性が高められている。
【００７８】
また、本実施形態では、履歴情報において、失敗動作を含む命令群は、発生頻度の算出から除外されるので、ロボット３の作業における動作の失敗を軽減できる教示プログラムを構築しやすくすることができる。
本実施形態において、ロボット制御装置５が教示装置に対応し、ライブラリー４１が命令保存部に対応し、教示プログラム記憶部４５が教示プログラム保存部に対応し、履歴情報記憶部４７が履歴記録部に対応している。また、ステップＳ２１の処理が頻度算出部に対応し、ステップＳ２２の処理がライブラリー更新部に対応し、ステップＳ２１及びステップＳ３５の処理が失敗動作検出部に対応している。
【００７９】
本実施形態では、ロボット３とロボット制御装置５とが互いに別体である構成が採用されている。しかしながら、ロボット３の構成は、これに限定されない。ロボット３の構成としては、例えば、図９に示すように、ロボット３がロボット制御装置５を有している構成も採用され得る。この構成例では、ロボット３は、図１０に示すように、ロボット制御装置５と、制御部１５と、第１アーム装置１９ａと、第２アーム装置１９ｂと、を有している。
ロボット３がロボット制御装置５を有している構成においても、ロボット３とロボット制御装置５とが互いに別体である構成（図１及び図２）と同様の効果が得られる。
【００８０】
また、本実施形態では、履歴情報に基づいて命令群の発生頻度を算出する方法が採用されている。しかしながら、発生頻度の算出方法は、これに限定されない。発生頻度の算出方法としては、例えば、教示プログラム記憶部４５に保存されている種々の教示プログラムに基づいて命令群の発生頻度を算出する方法も採用され得る。この場合、教示プログラムにおいて連続して並ぶ複数の動作命令を１組として命令群を形成する方法が考えられる。この方法によっても、種々の作業における命令群の発生頻度に応じて、命令群をライブラリー４１に追加（保存）することができる。
【符号の説明】
【００８１】
１…ロボット装置、３…ロボット、５…ロボット制御装置、７…入力装置、９…表示装置、１１…第１アーム、１２…第１ハンド、１３…第２アーム、１４…第２ハンド、１５…制御部、１７…腕部、１８…関節部、１９ａ…第１アーム装置、１９ｂ…第２アーム装置、２１…制御部、２３…メモリー部、２５…データベース、２７…インターフェイス部、２９…バス、３１…データ展開部、４１…ライブラリー、４３…オブジェクトデータ記憶部、４５…教示プログラム記憶部、４７…履歴情報記憶部、Ｗ…ワーク。
【図１】
2013158887.tif 000010
【図２】
2013158887.tif 000011
【図３】
2013158887.tif 000012
【図４】
2013158887.tif 000013
【図５】
2013158887.tif 000014
【図６】
2013158887.tif 000015
【図７】
2013158887.tif 000016
【図８】
2013158887.tif 000017
【図９】
2013158887.tif 000018
【図１０】
2013158887.tif 000019