(57)【要約】【課題】ロボットが実行した作業を容易に把握することができる技術を提供する。【解決手段】ロボット作業管理システムは、ロボットに所定の作業に対応する動作が教示されることにより生成された、前記所定の作業に関する作業情報を含む動作プログラムを実行する処理部と、前記処理部により前記動作プログラムが実行され、前記ロボットが前記所定の作業に対応する動作を実行すると、前記所定の作業が実行されたことを示す作業実行情報が記憶される記憶部と、を備える。【選択図】図１２
2018180300.tif 000002
【特許請求の範囲】
【請求項１】
ロボットに所定の作業に対応する動作が教示されることにより生成された、前記所定の作業に関する作業情報を含む動作プログラムを実行する処理部と、
前記処理部により前記動作プログラムが実行され、前記ロボットが前記所定の作業に対応する動作を実行すると、前記所定の作業が実行されたことを示す作業実行情報が記憶される記憶部と、
を備えることを特徴とするロボット作業管理システム。
【請求項２】
請求項１に記載のロボット作業管理システムであって、
前記動作プログラムを生成するロボット教示部を更に備え、
前記ロボット教示部は、
予め登録された複数の作業から何れか一つの作業を前記所定の作業として利用者に選択させる選択部を含むこと、
を特徴とするロボット作業管理システム。
【請求項３】
請求項１または請求項２に記載のロボット作業管理システムであって、
前記所定の作業は、作業対象となるワークが不良品でない場合の第１の作業と、前記ワークが不良品である場合の第２の作業と、を含むこと、
を特徴とするロボット作業管理システム。
【請求項４】
請求項３に記載のロボット作業管理システムであって、
前記処理部は、
前記所定の作業が第１の作業であると、前記ワークを取る作業若しくは前記ワークを置く作業の少なくとも何れか一方の作業に関する作業情報を含む前記動作プログラムを実行し、前記所定の作業が前記第２の作業であると、前記ワークを捨てる作業に関する作業情報を含む前記動作プログラムを実行すること、
を特徴とするロボット作業管理システム。
【請求項５】
請求項１に記載のロボット作業管理システムであって、
前記動作プログラムを生成するロボット教示部を更に備え、
前記ロボット教示部は、
仮想空間における第１の位置に設けられたワークの所定の点を、第１の点として取得する第１取得部と、
前記仮想空間における第２の位置に設けられた前記ワークの所定の点を、第２の点として取得する第２取得部と、
前記第１及び第２の点に基づいて、前記仮想空間におけるロボットが、前記ワークを前記第１の位置から前記第２の位置に移動させる際の前記保持部の軌道を計算する計算部と、
を備えることを特徴とするロボット作業管理システム。
【請求項６】
請求項５に記載のロボット作業管理システムであって、
前記第２の位置に支持された前記ワークの前記第２の点から離れた第３の点を取得する第３取得部を更に備え、
前記計算部は、
前記第１〜第３の点に基づいて、前記ロボットが、前記ワークを前記第１の位置から前記第３の点を経由して前記第２の位置に移動させる際の前記保持部の軌道を計算すること、
を特徴とするロボット作業管理システム。
【請求項７】
請求項５または請求項６に記載のロボット作業管理システムであって、
前記第２の位置に支持された前記ワークの前記第２の点から離れた第４の点を取得する第４取得部を更に備え、
前記計算部は、
前記ロボットが、前記保持部を前記第４の点まで移動させる際の前記保持部の軌道を計算すること、
を特徴とするロボット作業管理システム。
【請求項８】
請求項５〜７の何れか一項に記載のロボット作業管理システムであって、
前記ロボットが前記保持部を移動させる際、前記ロボットのうち、前記保持部の動きを表示装置に表示させる表示制御部を更に備えること、
を特徴とするロボット作業管理システム。
【請求項９】
請求項２に記載のロボット作業管理システムであって、
前記ロボット教示部は、
前記所定の作業に対応する動作が教示される際に、前記ロボットが作業対象とするワークを識別するための識別情報が入力される入力部を更に備え、
前記ロボット教示部は、
前記作業情報と、前記識別情報とを含む前記動作プログラムを生成し、
前記記憶部には、
前記所定の作業に対応する動作が前記作業対象となる前記ワークに実行されると、前記識別情報および前記作業実行情報が記憶されること、
を特徴とするロボット作業管理システム。
【請求項１０】
請求項１〜９の何れか一項に記載のロボット作業管理システムであって、
前記記憶部には、
前記ロボットが前記所定の作業に対応する動作を実行した時刻を示す時刻情報が記憶されること、
を特徴とするロボット作業管理システム。
【請求項１１】
請求項１〜１０の何れか一項に記載のロボット作業管理システムであって、
前記記憶部には、
前記ロボットが前記所定の作業に対応する動作を実行した際の前記ロボットを動作させるモータに関する情報が記憶されること、
を特徴とするロボット作業管理システム。
【請求項１２】
請求項１１に記載のロボット作業管理システムであって、
前記モータに関する情報には、モータに流れる電流値が含まれること、
を特徴とするロボット作業管理システム。
【請求項１３】
請求項１〜１２の何れか一項に記載のロボット作業管理システムであって、
前記処理部は、
前記作業実行情報を表示部に表示すること、
を特徴とするロボット作業管理システム。
【請求項１４】
コンピュータに、
ロボットに所定の作業に対応する動作が教示されることにより生成された、前記所定の作業に関する作業情報を含む動作プログラムを実行する機能と、
前記動作プログラムが実行され、前記ロボットが前記所定の作業に対応する動作を実行すると、前記所定の作業が実行されたことを示す作業実行情報を記憶部に記憶させる機能と、
を実現させるロボット作業管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット作業管理システム、ロボット作業管理プログラムに関する。
【背景技術】
【０００２】
ロボットを工場のライン等で使用するためには、利用者は、ロボットに対して動きを教示（ティーチング）する必要がある。例えば、特許文献１には、作業対象物であるワークやロボットをコンピュータにより仮想空間上に配置し、ロボットの動作プログラムを作成する技術（ティーチング技術）が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４６２１６４１号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、一般に、ロボットのハンドやアームの軌道が似ている場合、作業の種類（例えば、ワークを配置する場合やワークを取る場合）等に関わらず、同様の動作プログラムが実行される。この時の動作プログラムは、ワークを配置する場合も、取る場合も、ロボットの動作開始点から作業点への移動として記述されている。このため、実行された動作プログラムを参照しても、ロボットがどのような作業を実行したかを直ちに特定することは困難であった。【０００５】
本発明は上記課題を鑑みてなされたものであり、ロボットが実行した作業を容易に把握することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決する本発明のロボット作業管理システムは、ロボットに所定の作業に対応する動作が教示されることにより生成された、前記所定の作業に関する作業情報を含む動作プログラムを実行する処理部と、前記処理部により前記動作プログラムが実行され、前記ロボットが前記所定の作業に対応する動作を実行すると、前記所定の作業が実行されたことを示す作業実行情報が記憶される記憶部と、を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、利用者は、ロボットが実行した作業を容易に把握することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】ロボット作業管理システム２００の構成を示す図である。
【図２】記憶装置２２に格納される情報の一例を示す図である。
【図３】仮想空間１００に配置されたブロックの一覧を示す図である。
【図４】仮想空間１００に配置されたブロックを示す図である。
【図５】設定画面６０を示す図である。
【図６】ＣＰＵ２０に実現される機能ブロックを示す図である。
【図７】「置く」動作が設定された設定画面６１の一例を示す図である。
【図８】動作プログラムが生成される際の処理の一例を示す図である。
【図９】「取る」動作が設定された設定画面６２の一例を示す図である。
【図１０】「捨てる」動作が設定された設定画面６３の一例を示す図である。
【図１１】記憶装置２７に格納される情報の一例を示す図である。
【図１２】動作プログラムが実行される際の処理の一例を示す図である。
【図１３】設定画面３００を示す図である。
【図１４】ＣＰＵ２０に実現される機能ブロックを示す図である。
【図１５】設定画面３００に各種情報が入力された際の一例を示す図である。
【図１６】ロボット教示装置１０が実行する処理の一例を示すフローチャートである。
【図１７】仮想空間１００におけるアプローチポイントＰ３の一例を示す図である。
【図１８】仮想空間１００におけるハンド５０の動作の一例を示す図である。
【発明を実施するための形態】
【０００９】
−−−ロボット作業管理システム２００の構成−−−
以下に本発明の実施形態について図面を用いて詳細に説明する。図１は、ロボット作業管理システム２００の構成を示す図である。ロボット作業管理システム２００は、ロボット教示装置１０及びアーム型ロボット１１を含んで構成され、アーム型ロボット１１の作業を管理する。
【００１０】
＜＜ロボット教示装置１０＞＞
ロボット教示装置１０（ロボット教示部）は、工場のラインに設置されたアーム型ロボット１１に対し動作を教示するための装置であり、ＣＰＵ（Central Processing Unit）２０、メモリ２１、記憶装置２２、入力装置２３、表示装置２４、及び通信装置２５を含んで構成される。
【００１１】
ＣＰＵ２０は、メモリ２１や記憶装置２２に格納されたプログラムを実行することにより、ロボット教示装置１０における様々機能を実現する。
【００１２】
メモリ２１は、例えばＲＡＭ（Random-Access Memory）等であり、プログラムやデータ等の一時的な記憶領域として用いられる。
【００１３】
記憶装置２２は、例えばハードディスク等の不揮発性の記憶手段領域であり、プログラム６００や様々なデータ７００が格納される。図２は、記憶装置２２に格納される情報を示す図である。同図に示すように、プログラム６００の中には、アーム型ロボット１１に対する教示を行う機能を実現するための教示プログラム６１０や、３次元ＣＡＤ（Computer Aided Design）機能を実現するためのＣＡＤプログラム６２０が含まれる。
【００１４】
また、データ７００には、アーム型ロボット１１の３次元モデルを示す３次元ＣＡＤデータＤａ、作業対象物であるワークの３次元モデルを示す３次元ＣＡＤデータＤｂ、ワークが載置される棚の３次元モデルを示す３次元ＣＡＤデータＤｃが含まれる。３次元ＣＡＤデータＤａは、アーム型ロボット１１のモデルが配置される仮想空間のワールド座標系、およびアーム型ロボット１１のモデルのローカル座標系の情報を含む。また、３次元ＣＡＤデータＤｂ，Ｄｃに関しても、３次元ＣＡＤデータＤａと同様である。ただし、本実施形態では、複数（ｎ個）のワークが用いられるため、記憶装置２２には、複数のワークのそれぞれに対応する３次元ＣＡＤデータＤｂ１〜３次元ＣＡＤデータＤｂｎが格納されている。
【００１５】
また、データ７００には、アーム型ロボット１１を動作させる動作プログラム７１０も含まれる。なお、ロボット教示装置１０は、３次元ＣＡＤデータを用いながら教示プログラム６１０を実行することにより、動作プログラム７１０を生成する。
【００１６】
入力装置２３は、例えばタッチパネルやキーボードであり、利用者の操作結果が入力を受け付ける装置である。
【００１７】
表示装置２４は、例えばディスプレイであり、各種情報や処理結果を表示する装置である。
【００１８】
通信装置２５は、ネットワークインターフェイスなどの通信手段であって、インターネットやＬＡＮ（Local Area Network）等の通信網（不図示）を介して外部のコンピュータやアーム型ロボット１１との間でデータの送受信を行う。
【００１９】
＜＜アーム型ロボット１１＞＞
アーム型ロボット１１は、６軸（ｘ軸、ｙ軸、ｚ軸、および各軸の回転方向θｘ、θｙ、θｚ）の多関節のロボットである。アーム型ロボット１１は、処理装置２６、記憶装置２７、および通信装置２８を含んで構成される。
【００２０】
処理装置２６（処理部）は、動作プログラム７１０等を実行することにより、アーム型ロボット１１の動作を制御する装置である。
【００２１】
記憶装置２７（記憶部）は、例えばハードディスク等の不揮発性の記憶手段領域であり、動作プログラム７１０を含む様々な情報が格納される。なお、処理装置２６および記憶装置２７の詳細については後述する。
【００２２】
通信装置２８は、ネットワークインターフェイスなどの通信手段であって、外部の各種装置やロボット教示装置１０との間でデータの送受信を行う。
【００２３】
−−−階層構造画面−−−
図３は、仮想空間においてアーム型ロボット１１等のモデルの配置を定めるために、利用者が参照・編集する階層構造画面の一例を示す図である。
【００２４】
画面３０は、ワールド座標系や各種構成の階層構造（ツリー構造）を示す画面であり、ＣＰＵ２０が、教示プログラム６１０を実行することにより表示装置２４に表示される。
【００２５】
画面３０では、最上位の階層に、ワールド座標系を示す「Ｗｏｒｌｄ」が設定されている。そして、ワールド座標系の下の階層には、アーム型ロボット１１のモデルを示す「Ｒｏｂｏｔ」と、ワークが載置される棚を示す「棚」が設定されている。このため、「Ｒｏｂｏｔ」および「棚」は、仮想空間において、ワールド座標系で定められた位置に配置される。
【００２６】
また、「Ｒｏｂｏｔ」の階層の下には、アーム型ロボット１１のハンドのモデルを示す「ＨＡＮＤ」が設定され、「ＨＡＮＤ」の階層の下には、ワークであるオルゴールＡ１を示す「ＯＧ  Ａ１」が設定されている。このため、「ＨＡＮＤ」は、「Ｒｏｂｏｔ」を基準とするローカル座標系で定められた位置に配置され、「ＯＧ  Ａ１」は、「ＨＡＮＤ」を基準とするローカル座標系で定められた位置に配置される。
【００２７】
また、「棚」の階層の下には、１０個のオルゴールＢ１〜Ｂ１０を示す「ＯＧ  Ｂ１」〜「ＯＧ  Ｂ１０」が設定されている。このため、「ＯＧ  Ｂ１」〜「ＯＧ  Ｂ１０」は、「棚」を基準とするローカル座標系で定められた位置に配置される。
【００２８】
なお、画面３０で示された階層構造では、ある階層の構成の位置が変更されると、その階層の下に配置された構成の位置も同様に変更される。例えば、３次元ＣＡＤデータＤｃの値が変更され、「棚」のワールド座標系における位置が変更されると、「棚」の下の階層に設けられた「ＯＧ  Ｂ１」〜「ＯＧ  Ｂ１０」のワールド座標系における位置も「棚」に伴って移動する。ただし、「ＯＧ  Ｂ１」〜「ＯＧ  Ｂ１０」のそれぞれの「棚」に対する位置は、「棚」を基準とするローカル座標系で定められている。したがって、「棚」のワールド座標系に対する位置が変更された場合であっても、「ＯＧ  Ｂ１」〜「ＯＧ  Ｂ１０」のそれぞれの「棚」に対する位置は変化しない。
【００２９】
−−−仮想空間−−−
図４は、画面３０に含まれる構成を反映した仮想空間１００を示す図である。仮想空間１００は、ＣＰＵ２０が、教示プログラム６１０を実行することにより表示装置２４に表示される。
【００３０】
仮想空間１００には、アーム型ロボット４０、オルゴールＡ１，Ｂ１〜Ｂ１０、棚４５が設けられている。
【００３１】
アーム型ロボット４０は、「Ｒｏｂｏｔ」（３次元ＣＡＤデータＤａ）に基づいて、表現されたモデルであり、ハンド（保持部）５０と、ハンド５０が取り付けられるアーム５１とを含む。なお、上述したように、仮想空間１００におけるアーム５１の位置は、ワールド座標系で定められた位置に配置され、ハンド５０の位置は、アーム５１を基準とするローカル座標系で定められた位置に配置される。
【００３２】
オルゴールＡ１は、「ＯＧ  Ａ１」（３次元ＣＡＤデータＤｂ１）に基づいて表現された、ワークを示すモデルである。仮想空間１００におけるオルゴールＡ１の位置は、ハンド５０を基準とするローカル座標系で定められた位置、ここでは、ハンド５０で把持（保持）される位置に配置される。すなわち、ワークを保持部により保持した状態である。また、ワークを保持部により保持していない状態とは、ハンド５０がワークを把持していない状態である。
【００３３】
オルゴールＢ１〜Ｂ１０は、「ＯＧ  Ｂ１」〜「ＯＧ  Ｂ１０」（３次元ＣＡＤデータＤｂ２〜Ｄｂ１１）に基づいて表現されたモデルである。仮想空間１００におけるオルゴールＢ１〜Ｂ１０の位置は、棚４５を基準とするローカル座標系で定められた位置に配置されている。例えば、ここでは、オルゴールＢ１〜Ｂ１０は、棚４５の上に２列で配置される。
【００３４】
棚４５は、「棚」（３次元ＣＡＤデータＤｃ）に基づいて表現されたモデルであり、ワールド座標系で定められた位置に配置される。
【００３５】
−−−設定画面−−−
図５は、アーム型ロボット１１を教示する際に表示装置２４に表示される設定画面６０の一例を示す図である。設定画面６０は、ＣＰＵ２０が、教示プログラム６１０を実行することにより表示装置２４に表示される。
【００３６】
設定画面６０は、関数名指定エリア７０、作業開始位置入力エリア７１、作業終了位置入力エリア７２を含んで構成される。
【００３７】
関数名指定エリア７０では、作成される動作プログラム７１０を示す「関数名」が指定される。関数名指定エリア７０は、作業種類指定エリア７０ａおよび関数名入力エリア７０ｂを含む。
【００３８】
作業種類指定エリア７０ａ（選択部）では、複数の作業から、アーム型ロボット１１に実行させる作業が、利用者により選択される。具体的には、作業種類指定エリア７０ａでは、置く（“place”）、取る（つかむ）（“pick up”）、捨てる（“dispose”）等の作業が選択可能である。
【００３９】
関数名入力エリア７０ｂ（入力部）には、利用者が指定する作業を示すファイル名が入力される。なお、本実施形態では、利用者は、ファイル名に、作業対象となるワークを識別するための情報（識別情報）として、ワークを示す情報（例えば、オルゴールＡ１「ＯＧ  Ａ１」）を含めることとする。
【００４０】
作業開始位置入力エリア７１では、アーム型ロボット４０のハンド５０の動作の作業開始位置に関する情報が入力される。なお、ハンド５０の動作の開始位置は、仮想空間１００におけるワーク若しくはハンド５０の位置、又は仮想空間１００のワールド座標系の位置で指定される。
【００４１】
作業終了位置入力エリア７２では、アーム型ロボット４０のハンド５０の動作の終了位置に関する情報が入力される。なお、ハンド５０の動作の終了位置は、仮想空間１００におけるワーク若しくはハンド５０の位置、又は仮想空間１００のワールド座標系の位置で指定される。
【００４２】
−−−ＣＰＵ２０に実現される機能ブロック−−−
図６は、ＣＰＵ２０が所定のプログラムを実行することによりＣＰＵ２０に実現される機能ブロックを示す図である。同図に示すように、ＣＰＵ２０は、第１取得部８０、第２取得部８１、計算部８２、動作プログラム生成部８３、及び送信部８４の機能ブロックを備える。
【００４３】
第１取得部８０は、作業開始位置入力エリア７１に入力されたワークを示す情報（３次元ＣＡＤデータ）に基づいて、ワークのＴＣＰ（所定の点）を教示点Ｐ１（第１の点）として取得する。
【００４４】
第２取得部８１は、作業終了位置入力エリア７２に入力されたワークを示す情報（３次元ＣＡＤデータ）に基づいて、ワークのＴＣＰを教示点Ｐ２（第２の点）として取得する。なお、ここでは、第１取得部８１および第２取得部８２が取得する点をワークのＴＣＰとしたが、例えば、ワークの重心を示す点であっても良い。
【００４５】
計算部８２は、教示点Ｐ１，Ｐ２に基づいて、ハンド５０を移動させる軌道の計算を行う。また、計算部８２は、計算結果を、記憶装置２２に格納する。
【００４６】
動作プログラム生成部８３は、計算部８２の計算結果に基づいて、実際のアーム型ロボット１１の各関節を動作させる動作プログラム７１０を生成する。また、動作プログラム生成部８３は、生成した動作プログラム７１０を記憶装置２２に格納する。なお、詳細は後述するが、動作プログラム７１０には、作業の種類を示す作業情報Ｉ１と、作業対象となるワークを識別するための識別情報Ｉ２とが含まれる。
【００４７】
送信部８４は、利用者からの指示に基づいて、動作プログラム７１０を、アーム型ロボット１１に送信する。
【００４８】
−−−動作プログラム７１０生成処理−−−
以下、ロボット教示装置１０が、動作プログラム７１０を生成する際の処理について説明する。
【００４９】
＜＜「置く」（“place”）作業＞＞
ここでは、アーム型ロボット４０が「オルゴール」を、「オルゴールＡ１」の位置から「オルゴールＢ９」の位置へ「置く」作業が教示され、生成される動作プログラム７１０ａについて説明する。
【００５０】
図７は、設定画面６０に対し各種情報が入力された状態の設定画面６１を示す図である。設定画面６１の作業種類指定エリア７０ａに示すように、作業としては、ワークを「置く」（“place”）作業が指定されている。また、ファイル名としては、「オルゴールＡ１」（「ＯＧ  Ａ１」）を含む名称“OG A1_to_shelf”が入力されている。また、作業開始位置入力エリア７１には、ハンド５０に把持された「オルゴールＡ１」（「ＯＧ  Ａ１」）が入力され、作業終了位置入力エリア７２には、棚４５に載置された「オルゴールＢ９」（「ＯＧ  Ｂ９」）が入力されている。なお、図３の仮想空間１００においては、「オルゴールＡ１」と、１０個の「オルゴールＢ１」〜「オルゴールＢ１０」が配置されているが、これらは、例えば「置く」作業を教示し、ハンド５０の軌道を計算するために配置されているものである。
【００５１】
図８は、ロボット教示装置１０が動作プログラム７１０ａを生成する際に実行する処理の一例を示すフローチャートである。
【００５２】
まず、第１取得部８０は、作業開始位置入力エリア７１に入力されたオルゴールＡ１の情報に基づいて、オルゴールＡ１のＴＣＰを教示点Ｐ１として取得する（Ｓ１００）。つぎに、第２取得部８１は、作業終了位置入力エリア７２に入力されたオルゴールＢ９の情報に基づいて、オルゴールＢ９のＴＣＰを教示点Ｐ２として取得する（Ｓ１０１）。そして、計算部８２は、教示点Ｐ１，Ｐ２に基づいて、ハンド５０を移動させる際のハンド５０の軌道を計算し、計算結果を記憶装置２２に格納する（Ｓ１０２）。また、動作プログラム生成部８３は、作業種類指定エリア７０ａで指定された作業の種類（例えば、「置く」）を示す情報を、作業情報Ｉ１として取得する（Ｓ１０３）。さらに、動作プログラム生成部８３は、例えば、ファイル名（“OG A1_to_shelf”）に基づいて、作業対象となるワークを識別するための識別情報Ｉ２を取得する（Ｓ１０４）。なお、ここでは、ファイル名のうち、オルゴールＡ１を示す情報（“OG A1”）が、識別情報Ｉ２となる。動作プログラム生成部８３は、計算結果に基づいて、実際のアーム型ロボット１１の各関節を動作させる動作プログラム７１０ａを生成し、記憶装置２２に格納する（Ｓ１０５）。なお、処理Ｓ１０５において、動作プログラム生成部８３は、作業情報Ｉ１および識別情報Ｉ２を含む動作プログラム７１０ａを生成する。
【００５３】
以下、「置く」（“place”）作業と同様に、「取る」（“pick up”）作業、および「捨てる」（“dispose”）作業のそれぞれが教示され、生成される動作プログラム７１０ｂ，７１０ｃについて説明する。
【００５４】
＜＜「取る」（“pick up”）作業＞＞
例えば「オルゴールＡ１」の位置に設けられたハンド５０が「オルゴールＢ５」を取得する際に生成される動作プログラム７１０ｂについて説明する。この際、図９に示す設定画面６２の作業種類指定エリア７０ａには、ワークを「取る」（“pick up”）作業が指定されており、ファイル名としては、「オルゴールＢ５」を含む名称“OG B5_from_shelf”が入力されている。また、作業開始位置入力エリア７１には、「オルゴールＡ１」が入力され、作業終了位置入力エリア７２には、「オルゴールＢ５」が入力されている。なお、ここでは、開始位置を「オルゴールＡ１」の位置としたが、例えば、仮想空間１００の任意の位置を座標（若しくは任意の位置に配置されたワーク）で指定しても良い。ロボット教示装置１０の各ブロックは、設定画面６２で設定された情報に基づいて、図８の処理Ｓ１００〜Ｓ１０５と同様の処理を実行する。この結果、「オルゴールＢ５」が取得される動作プログラム７１０ｂが生成され、記憶装置２２に格納されることになる。なお、動作プログラム７１０ｂには、「取る」作業を示す情報が作業情報Ｉ１として含まれるとともに、オルゴールＢ５を示す情報（“OG B5”）が識別情報Ｉ２として含まれる。
【００５５】
＜＜「捨てる」（“dispose”）作業＞＞
アーム型ロボット４０が、「オルゴールＡ１」の位置で把持される「オルゴール」を、所定の箱Ｘ（不図示）に廃棄する際に生成される動作プログラム７１０ｃについて説明する。この際、図１０に示す設定画面６３の作業種類指定エリア７０ａには、ワークを「捨てる」（“dispose”）作業が指定されており、ファイル名としては、「オルゴールＡ１」を含む名称“OG A1_to_box”が入力されている。また、作業開始位置入力エリア７１には、「オルゴールＡ１」が入力され、作業終了位置入力エリア７２には、箱Ｘ（「ＢＯＸ  Ｘ」）が入力されている。なお、ここでは、開始位置を「オルゴールＡ１」の位置としたが、例えば、仮想空間１００の任意の位置を座標（若しくは任意の位置に配置されたワーク）で指定しても良い。ロボット教示装置１０の各ブロックは、設定画面６３で設定された情報に基づいて、図８の処理Ｓ１００〜Ｓ１０５と同様の処理を実行する。なお、第２取得部８１は、箱Ｘの情報に基づいて、箱Ｘの所定の点（例えば、箱Ｘの開口に設けらた点）を教示点Ｐ２として取得する。この結果、「オルゴールＡ１」が捨てられる動作プログラム７１０ｃが生成され、記憶装置２２に格納されることになる。なお、動作プログラム７１０ｃには、「捨てる」作業を示す情報が作業情報Ｉ１として含まれるとともに、オルゴールＡ１を示す情報（“OG A1”）が識別情報Ｉ２として含まれる。また、記憶装置２２には、上述した、動作プログラム７１０ａ〜７１０ｃが格納されているが、例えば利用者の指示により、送信部８４は、動作プログラム７１０ａ〜７１０ｃをアーム型ロボット１１に送信する。
【００５６】
−−−アーム型ロボット１１の記憶装置２７に格納される情報−−−
図１１は、記憶装置２７に格納される情報を示す図である。記憶装置２７には、動作プログラム８００、作業実行データ９００が記憶される。
【００５７】
動作プログラム８００は、アーム型ロボット１１を実際に動作させるためのプログラムであり、メインプログラム８１０、およびサブプログラム８２０を含む。
【００５８】
メインプログラム８１０は、動作プログラム８００の主な処理を実行するプログラム（メインルーチン）である。
【００５９】
サブプログラム８２０は、メインプログラム８１０から呼び出され、所定の処理（例えば、「置く」、「捨てる」等）を実行するプログラム（サブルーチン）であり、ロボット教示装置１０で生成された動作プログラム７１０ａ〜７１０ｃを含む。なお、動作プログラム８００は、利用者が生成された動作プログラム７１０ａ〜７１０ｃを適宜用いて作成する。
【００６０】
作業実行データ９００（作業実行情報）は、動作プログラム７１０ａ〜７１０ｃの作業が実行されたことを示すデータである。なお、作業実行データ９００は、作業が実行された際の「時刻」を示す時刻データ９１０（時刻情報）、「作業の種類」（例えば、「置く」）を示す作業種類データ９２０、「作業対象」のワークを示す識別データ９３０（識別情報）を含む。
【００６１】
−−−動作プログラム７１０が実行された際の処理の一例−−−
図１２は、動作プログラム７１０が実行された際の処理の一例を示すフローチャートである。ここでは、処理装置２６がメインプログラム８１０を実行し、サブプログラム８２０として、「置く」（“place”）作業に関する動作プログラム７１０ａが呼び出されていることとする。
【００６２】
まず、処理装置２６は、呼び出された動作プログラム７１０ａを実行する（Ｓ２００）。そして、処理装置２６は、アーム型ロボット１１が動作プログラム７１０ａで規定された動作をするよう、アーム型ロボット１１の各関節を制御する（Ｓ２０１）。この結果、アーム型ロボット１１は「オルゴール」を、「オルゴールＡ１」の位置から「オルゴールＢ９」の位置へ移動し、棚の上に「置く」ことになる。また、処理装置２６は、時刻を計時するタイマー（不図示）を参照し、「置く」作業が実行された「時刻」を時刻データ９１０として取得し、記憶装置２７に格納する（Ｓ２０２）。そして、処理装置２６は、動作プログラム７１０ａの「置く」作業を示す作業情報Ｉ１を、「置く」作業が実行されたことを示す作業種類データ９２０として取得し、記憶装置２７に格納する（Ｓ２０３）。さらに、処理装置２６は、動作プログラム７１０ａの作業対象が「オルゴールＡ１」であることを示す識別情報Ｉ２を、識別データ９３０として取得し、記憶装置２７に格納する（Ｓ２０４）。処理Ｓ２０４が実行されると、サブプログラム８２０（動作プログラム７１０ａ）の処理は終了するため、処理装置２６は、メインプログラム８１０で規定された処理を実行することになる。
【００６３】
なお、ここでは、サブプログラム８２０として、「置く」作業に関する動作プログラム７１０ａが実行された際の処理を説明したが、他の作業（例えば、「捨てる」）の際も同様である。また、再度、「置く」作業のメインプログラム８１０で呼び出されると、動作プログラム７１０ａ（処理Ｓ２００〜Ｓ２０４）が実行され、新たな作業実行データ９００が処理装置２６に格納される。なお、記憶装置２７に格納された情報は、通信装置２８を介して外部の機器等とやり取りされる。したがって、利用者は、記憶装置２７に格納された作業実行データ９００を参照することにより、どのような作業が何時行われたか、さらに、作業対象や作業の回数を把握することができる。また、記憶装置２７に格納された作業実行データ９００には、作業が行われた時に、ロボットの軸・関節を動かすモータに、対する指令値が含まれてよい。また作業実行データ９００には、モータ駆動時の実効値が含まれてもよい。 なお、モータの指令値および実効値とは、モータの電流・電圧・トルクである。
【００６４】
−−−動作プログラム７１０生成処理の詳細−−−
ここで、動作プログラム７１０の生成処理の詳細の一例について説明する。
【００６５】
＜＜設定画面＞＞
図１３は、アーム型ロボット１１を教示する際に表示装置２４に表示される設定画面３００の一例を示す図である。
【００６６】
設定画面３００は、関数名指定エリア７０、作業開始位置入力エリア７１、作業終了位置入力エリア７２、アプローチポイント設定エリア７３、およびエスケープポイント設定エリア７４を含んで構成される。
【００６７】
関数名指定エリア７０では、作成される動作プログラム（サブルーチン）を示す「関数名」が指定される。関数名指定エリア７０は、作業種類指定エリア７０ａおよび関数名入力エリア７０ｂを含む。作業種類指定エリア７０ａでは、アーム型ロボット１１に実行させる作業が指定される。具体的には、作業種類指定エリア７０ａでは、置く（“place”）、取る（つかむ）（“pick up”）、捨てる（“dispose”）等の作業を選択可能である。関数名入力エリア７０ｂには、利用者が指定するファイル名（例えば、日付や整理番号）が入力される。
【００６８】
作業開始位置入力エリア７１（第１情報入力部）では、アーム型ロボット４０のハンド５０の動作の開始位置に設けられたワークを示す情報（第１情報）が入力される。なお、本実施形態では、利用者は、予め移動対象となるワークを、移動前の作業開始位置（第１の位置）に配置していることとする。
【００６９】
作業終了位置入力エリア７２（第２情報入力部）では、アーム型ロボット４０のハンド５０の動作の終了位置に設けられたワークを示す情報（第２情報）が入力される。なお、本実施形態では、利用者は、予め移動対象となるワークを、移動後の作業終了位置（第２の位置）に配置していることとする。
【００７０】
アプローチポイント設定エリア７３（第３情報入力部）では、ハンド５０の移動が開始してから終了するまでに、ハンド５０に把持されたワークが経由する点（アプローチポイント）が設定される。なお、詳細は後述するが、アプローチポイントは、ハンド５０に把持されたワークが障害物や他のワーク等に当たることを防ぐために設定される点である。アプローチポイント設定エリア７３は、作業ワーク指定エリア７３ａ、距離指定エリア７３ｂ、および方向指示エリア７３ｃを含む。なお、作業ワーク指定エリア７３ａ、距離指定エリア７３ｂ、および方向指示エリア７３ｃのそれぞれに入力される情報は、第３情報に相当する。
【００７１】
作業ワーク指定エリア７３ａには、ハンド５０の動作の終了位置に載置されたワークを示す情報が入力される。
【００７２】
距離指定エリア７３ｂには、作業ワーク指定エリア７３ａで選択されたワークからの距離ｄ１（第１の距離）が入力される。
【００７３】
方向指示エリア７３ｃには、作業ワーク指定エリア７３ａで選択されたワークの面（例えば、底面）に対して略垂直となる方向ｖ１が指示される。
【００７４】
エスケープポイント設定エリア７４（第４情報入力部）では、ハンド５０の移動が終了し、ハンド５０を元の位置等に戻す際にハンド５０のＴＣＰが通過する点（エスケープポイント）が設定される。なお、詳細は後述するが、エスケープポイントは、ワークが載置された後、ハンド５０が障害物や他のワーク等に当たることを防ぐために設定される点である。エスケープポイント設定エリア７４は、作業ワーク指定エリア７４ａ、距離指定エリア７４ｂ、および方向指示エリア７４ｃを含む。なお、作業ワーク指定エリア７４ａ、距離指定エリア７４ｂ、および方向指示エリア７４ｃのそれぞれに入力される情報は、第４情報に相当する。
【００７５】
作業ワーク指定エリア７４ａには、ハンド５０の動作の終了位置に載置されたワークを示す情報が入力される。なお、作業ワーク指定エリア７３ａ、７４ａには、ハンド５０の動作の終了位置に載置されたワークを示す情報以外が入力されても良い。
【００７６】
距離指定エリア７４ｂには、作業ワーク指定エリア７４ａで選択されたワークからの距離ｄ２（第２の距離）が入力される。
【００７７】
方向指示エリア７４ｃには、作業ワーク指定エリア７４ａで選択されたワークの面（例えば、底面）に対して略垂直となる方向ｖ２が指示される。なお、方向ｖ１，ｖ２は、ワークのモデルに含まれる、ワークのエッジ、ワークの法線ベクトル、ワークの中心軸等に基づいて定められる。
【００７８】
＜＜ＣＰＵ２０に実現される機能ブロック＞＞
図１４は、ＣＰＵ２０が所定の教示プログラムを実行することによりＣＰＵ２０に実現される機能ブロックを示す図である。同図に示すように、ＣＰＵ２０は、表示制御部４００、第１取得部４０１、第２取得部４０２、第３取得部４０３、第４取得部４０４、計算部４０５、動作プログラム生成部４０６、及び送信部４０７の機能ブロックを備える。
【００７９】
表示制御部４００は、入力装置２３からの指示やＣＰＵ２０で実行される教示プログラムの処理結果等に基づいて、表示装置２４に各種情報を表示する。例えば、表示制御部４００は、図３に示した仮想空間１００や図１３に示す設定画面３００を表示装置２４に表示する。また、表示制御部４００は、ワークを移動する際のハンド５０のアニメーションを表示装置２４に表示する。
【００８０】
第１取得部４０１は、作業開始位置入力エリア７１に入力されたワークを示す情報（３次元ＣＡＤデータ）に基づいて、ワークのＴＣＰ（所定の点）を教示点Ｐ１（第１の点）として取得する。
【００８１】
第２取得部４０２は、作業終了位置入力エリア７２に入力されたワークを示す情報（３次元ＣＡＤデータ）に基づいて、ワークのＴＣＰを教示点Ｐ２（第２の点）として取得する。なお、ここでは、第１取得部４０１および第２取得部４０２が取得する点をワークのＴＣＰとしたが、例えば、ワークの重心を示す点であっても良い。
【００８２】
第３取得部４０３は、アプローチポイント設定エリア７３に入力された情報に基づいて、ワークが移動される際に、ワークが経由するアプローチポイントＰ３（第３の点）を取得する。具体的には、第３取得部４０３は、作業ワーク指定エリア７３ａで選択されるワークを示す情報から、ワークのＴＣＰ（所定の点）を取得する。そして、第３取得部４０３は、ワークのＴＣＰを始点とし、指定された方向ｖ１に距離ｄ１だけ離間した点をアプローチポイントＰ３として取得する。
【００８３】
第４取得部４０４は、エスケープポイント設定エリア７４に入力された情報に基づいて、ハンド５０が移動される際に、ハンド５０が経由するエスケープポイントＰ４（第４の点）を取得する。具体的には、第４取得部４０４は、作業ワーク指定エリア７４ａで選択されるワークを示す情報から、ワークのＴＣＰを取得する。そして、第４取得部４０４は、ワークのＴＣＰを始点とし、指定された方向ｖ２に距離ｄ２だけ離間した点をエスケープポイントＰ４として取得する。なお、アプローチポイントＰ３、エスケープポイントＰ４を定める際の始点はワークのＴＣＰであるとしたが、例えばワークの重心を示す点等でも良い。
【００８４】
計算部４０５は、教示点Ｐ１，Ｐ２、アプローチポイントＰ３、エスケープポイントＰ４に基づいて、ハンド５０を移動させる軌道の計算を行う。また、計算部４０５は、計算結果を、記憶装置２２に格納する。
【００８５】
動作プログラム生成部４０６は、計算部４０５の計算結果に基づいて、実際のアーム型ロボット１１の各関節を動作させる動作プログラム７１０を生成する。また、動作プログラム生成部４０６は、生成した動作プログラム７１０を記憶装置２２に格納する。
【００８６】
送信部４０７は、利用者からの指示に基づいて、動作プログラム７１０を、アーム型ロボット１１の処理装置２６に送信する。この結果、アーム型ロボット１１は、計算結果に応じた動作をすることができる。
【００８７】
＜＜ロボット教示装置１０で実行される処理の一例＞＞
以下、ワークが移動される際にロボット教示装置１０が実行する一連の処理を、図面を適宜参照しつつ説明する。図１５は、設定画面３００に対し各種情報が入力された状態の設定画面３０１を示す図である。図１６は、ロボット教示装置１０が実行する処理の一例を示すフローチャートである。なお、ここでは、アーム型ロボット４０が「オルゴール」を、「オルゴールＡ１」の位置（第１の位置）から「オルゴールＢ９」の位置（第２の位置）へ移動させる際のハンド５０の軌道と、「オルゴール」が棚４５に載置された後のハンド５０の軌道と、が計算される場合を説明する。また、図３の仮想空間１００においては、「オルゴールＡ１」と、１０個の「オルゴールＢ１」〜「オルゴールＢ１０」が配置されているが、これらは「置く」作業を教示し、ハンド５０の軌道を計算するために配置されているものである。例えば「オルゴールＡ１」と、「オルゴールＢ１」とが選択されると、「オルゴールＡ１」の位置から、「オルゴールＢ１」の位置へ「オルゴール」を移動させる際のハンド５０の軌道が計算される。
【００８８】
設定画面３０１の作業種類指定エリア７０ａに示すように、作業としては、ワークを置く（“place”）作業が指定されており、作業を示すファイル名としては、“OG1_to_shelf”が入力されている。また、作業開始位置入力エリア７１には、ハンド５０に把持された「オルゴールＡ１」（「ＯＧ  Ａ１」）が入力され、作業終了位置入力エリア７２には、棚４５に載置された「オルゴールＢ９」（「ＯＧ  Ｂ９」）が入力されている。アプローチポイント設定エリア７３の作業ワーク指定エリア７３ａには、「オルゴールＢ９」が入力され、距離指定エリア７３ｂには、「２００」が入力され、方向指示エリア７３ｃには、オルゴールＢ９の「エッジ」が指定されている。エスケープポイント設定エリア７４の作業ワーク指定エリア７４ａには、「オルゴールＢ９」が入力され、距離指定エリア７４ｂには、「１００」が入力され、方向指示エリア７４ｃには、オルゴールＢ９の「エッジ」が指定されている。
【００８９】
まず、第１取得部４０１は、作業開始位置入力エリア７１に入力されたオルゴールＡ１の情報に基づいて、オルゴールＡ１のＴＣＰを教示点Ｐ１として取得する（Ｓ１０００）。つぎに、第２取得部４０２は、作業終了位置入力エリア７２に入力されたオルゴールＢ９の情報に基づいて、オルゴールＢ９のＴＣＰを教示点Ｐ２として取得する（Ｓ１００１）。
【００９０】
また、第３取得部４０３は、図１７に示すように、作業ワーク指定エリア７３ａで選択されるオルゴールＢ９のＴＣＰを始点とし、オルゴールＢ９のエッジの方向ｖ１で距離ｄ１「２００」ｍｍだけ離れた点を、アプローチポイントＰ３として取得する（Ｓ１００２）。なお、図１７においては、便宜上、棚４５の表面の一部と、オルゴールＢ９のみが描かれている。また、図１７では、ｘ軸方向は、棚４５のオルゴールが載置される面（以下、載置面）の長手方向、ｙ軸方向は、載置面においてｘ軸と直交する方向、ｚ軸方向は、載置面と垂直方向である。そして、オルゴールＢ９の底面は、図１７のｘｙ平面であり、指定されたオルゴールＢ９のエッジは、オルゴールＢ９の底面に対して垂直となっている。このため、エッジの方向ｖ１は、ｚ軸方向（＋ｚ方向）となる。
【００９１】
第４取得部４０４は、第３取得部４０３と同様に、作業ワーク指定エリア７４ａで選択されるオルゴールＢ９のＴＣＰを始点とし、オルゴールＢ９のエッジに基づく方向ｖ２（＋ｚ方向）から距離ｄ２「１００」ｍｍだけ離れた点を、エスケープポイントＰ４として取得する（Ｓ１００３）。なお、距離ｄ１，ｄ２は、例えば、オルゴールＢ９のｚ方向の高さよりも長い距離である。
【００９２】
計算部４０５は、教示点Ｐ１，Ｐ２、アプローチポイントＰ３、エスケープポイントＰ４に基づいて、ハンド５０を移動させる際のハンド５０の軌道を計算する（Ｓ１００４）。具体的には、まず、計算部４０５は、「オルゴール」を教示点Ｐ１からアプローチポイントＰ３まで移動させる際のハンド５０の軌道Ｏ１を計算する。また、計算部４０５は、「オルゴール」をアプローチポイントＰ３から教示点Ｐ２に移動させる際のハンド５０の軌道Ｏ２を計算する。さらに計算部４０５は、ハンド５０をエスケープポイントＰ４に移動させる軌道Ｏ３を計算する。なお、軌道Ｏ３が計算される際には、例えば、記憶装置２２に格納されたハンド５０のＴＣＰが用いられる。また、動作プログラム生成部４０６は、計算部４０５の計算結果に基づいて、実際のアーム型ロボット１１の各関節を動作させる動作プログラム７１０を生成し、記憶装置２２に格納する（Ｓ１００５）。なお、この際、計算結果も、記憶装置２２に格納される（Ｓ１００５）。また、表示制御部４００は、記憶装置２２に格納された動作プログラム７１０を取得し、仮想空間１００上のハンド５０が計算された軌道に沿って動くアニメーションを表示装置２４に表示させる（Ｓ１００６）。図１８は、アニメーションが表示されている際にハンド５０の動作の一例を示す図である。ハンド５０は、まず、軌道Ｏ１に沿って、ハンド５０に把持されたオルゴールのＴＣＰが、アプローチポイントＰ３に一致するよう移動する。つぎに、ハンド５０は、軌道Ｏ２に沿って、把持されたオルゴールのＴＣＰがＴＣＰ２に一致するよう移動する。そして、オルゴールが載置された後、ハンド５０は、軌道Ｏ３に沿って、ハンド５０のＴＣＰがエスケープポイントＰ４に一致するように移動する。なお、ハンド５０は、軌道Ｏ２，Ｏ３に沿って動くため、オルゴールが載置される位置（「オルゴールＢ９」の位置）の略垂直方向に沿って移動する。このため、ハンド５０がオルゴールを載置する際に、周囲の他のオルゴール（例えば、オルゴールＢ４）がある場合であっても、ハンド５０やハンド５０に把持されたオルゴールが他の障害物に当たることはない。また、ハンド５０の軌道は、オルゴールのＴＣＰに基づいて計算されている。このため、ハンド５０におけるオルゴールの位置によらず、オルゴールは所望の位置に精度良く置かれることになる。
【００９３】
＜＜まとめ（ロボット教示装置１０）＞＞
本実施形態では、利用者は、ワークを移動させる際に、ワークの移動開始位置と、終了位置を、作業開始位置入力エリア７１と、作業終了位置入力エリア７２で設定できる。したがって、利用者は、複雑な座標等を指定する必要がないため、利用者は容易にアーム型ロボット１１を教示できる。
【００９４】
また、本実施形態では、仮想空間１００に設けられたオルゴールの情報に基づいて、アプローチポイントＰ３が設定される。この結果、アプローチポイントＰ３の座標等を直接指定する場合と比較すると、利用者は、容易にアプローチポイントＰ３を設定できる。
【００９５】
また、本実施形態では、仮想空間１００に設けられたオルゴールの情報に基づいて、エスケープポイントＰ４が設定される。この結果、エスケープポイントＰ４の座標等を直接指定する場合と比較すると、利用者は、容易にエスケープポイントＰ４を設定できる。
【００９６】
なお、上記実施例は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【００９７】
本実施形態では、ハンド５０がワークである「オルゴール」を「把持」することを、保持した状態として説明したが、これに限られない。例えば、ハンド５０の代わりにワークを真空吸着することが可能な吸着パッドを用いても良い。このような場合、ワークは、吸着パッドにより「保持」されることになる。
【００９８】
本実施形態では、ワークは「オルゴール」であり、「オルゴール」が載置（支持）される支持部材は、棚４５であることとしたが、これに限られない。例えば、ワークが「カップ（容器）」であり、「カップ」は「カップホルダー」に収納（支持）されることとしても良い。また、「カップホルダー」は、「カップ」を収納する構成のみならず、「カップい」の外側の面の一部だけを支持する構成であっても良い。このような、「カップ」および「カップホルダー」が用いられる場合であっても、本実施形態と同様の効果を得ることができる。なお、例えば、ロボットが「カップ」を、傾いた「カップホルダー」に支持されるように移動する際には、傾いて支持された「カップ」の底面に基づいて、アプローチポイントＰ３、エスケープポイントＰ４が取得される。
【００９９】
また、ここでは、教示対象となるロボットが６軸の多関節のロボットであることとしたが、例えば、３軸のロボットであっても良い。また、ロボット教示装置１０は、教示対象となるロボットが６軸のロボットであっても、ワークを移動させる際に３軸の軌道のみを計算すれば良い場合、ＴＣＰ（教示点）の自由度を６から３に変更し、軌道を計算しても良い。このようにＴＣＰの自由度を低下させることにより、ＣＰＵ２０の負荷を軽減することができる  また、本実施形態では、アプローチポイントＰ３における指定された方向ｖ１は、ＴＣＰから、ワークの底面に対して略垂直となる方向であることとしたが、これに限られない。例えば、ワークの底面に対して略水平方向であっても良い。また、エスケープポイントＰ４における方向ｖ２も、ＴＣＰから、ワークの底面に対して略垂直となる方向であることとしたが、例えば、ワークの底面に対して略水平方向であっても良い。
【０１００】
例えば、図３では、ハンド５０がワークを保持している状態が示されているが、ハンド５０がワークを保持していない場合、表示制御部４００は、ワークを表示装置２４に表示しない。
【０１０１】
−−−まとめ（本実施形態）−−−
以上、本実施形態のロボット作業管理システム２００について説明した。処理装置２６が動作プログラム７１０ａを実行すると、アーム型ロボット１１は、動作プログラム７１０ａに基づく作業（「置く」作業）に対応する動作を実行する。そして、アーム型ロボット１１が「置く」作業を実行すると、処理装置２６は「置く」作業が実行されたこを示す作業実行データ９００を記憶装置２７に格納する（例えば、処理Ｓ２０２〜Ｓ２０４）。したがって、利用者は、記憶装置２７に格納された作業実行データ９００を参照することにより、どのような作業が行われたかを容易に把握することができる。
【０１０２】
また、利用者は、作業種類指定エリア７０ａで予め登録された複数の作業（置く（“place”）、取る（つかむ）（“pick up”）、捨てる（“dispose”））のうちから、何れか一つの作業を選択できる。そして、選択された作業が、作業情報Ｉ１として動作プログラム７２０に含まれる。このため、例えば、利用者が動作プログラムを記載等することなく、利用者が選択した作業が確実に動作プログラム７２０に反映される。したがって、利用者は容易に作業を設定できる。
【０１０３】
また、カメラ（不図示）からの情報により、処理装置２６は、例えば、処理Ｓ２００の前に、ワークが所定の形状であるか否か（ワークに傷があるか否か）、つまり、ワークが不良品であるか否かを判定しても良い。そして、処理装置２６は、ワークが不良品でない場合に、置く（“place”）若しくは取る（つかむ）（“pick up”）作業（第１の作業）を実行し、ワークが不良品の場合に、捨てる（“dispose”）作業（第２の作業）を実行しても良い。このため、利用者は、記憶装置２７に格納された作業実行データ９００を参照し、捨てる（“dispose”）作業が行われた回数から、ワークの不良品の個数を把握することができる。
【０１０４】
また、ロボット教示装置１０の計算部４０５は、オルゴールを移動する際のハンド５０の軌道を、移動前の位置にあるオルゴールＡ１のＴＣＰと、移動後の位置にあるオルゴールＢ９のＴＣＰと、に基づいて計算する（例えば、処理Ｓ１００４）。この際、ハンド５０のＴＣＰではなく、オルゴールのＴＣＰが用いられるため、ハンド５０に対するワークの位置の変化（例えば、ハンドの先端でワークを把持するか、ハンドの奥でワークを把持するか）等の影響が抑制される。この結果、アーム型ロボット１１は、計算部４０５の計算結果を用いることにより、ワークを精度良く所望の位置に移動することが可能となる。
【０１０５】
また、計算部４０５は、オルゴールが載置される際に、ハンド５０がオルゴールを保持部により保持した状態でアプローチポイントＰ３を経る軌道を計算する（例えば、処理Ｓ１００４）。例えば、オルゴールを載置する位置（例えば、オルゴールＢ９の位置）の周辺に他のオルゴール等が載置されていることがある。このような場合に、移動対象のオルゴールを目標とする位置に直接移動させると、移動対象のオルゴールが、他のオルゴールに当たることがある。本実施形態では、オルゴールＢ９のＴＣＰから垂直方向に定められたアプローチポイントＰ３を経由してオルゴールが載置される。したがって、計算部４０５は、目標位置の周辺に障害物がある場合であっても、移動対象のワークが障害物等に当たることを防ぐ軌道を計算できる。
【０１０６】
また、計算部４０５は、オルゴールを載置した後にハンド５０を移動させる軌道として、ハンド５０がオルゴールを保持していない状態で、エスケープポイントＰ４を経る軌道を計算する（例えば、処理Ｓ１００４）。例えば、載置されたオルゴールの位置（例えば、オルゴールＢ９の位置）の周辺に他のオルゴールが載置されていることがある。このような場合に、ハンド５０を設定された位置に直接移動させると、ハンド５０が、他のオルゴールに当たることがある。本実施形態では、オルゴールＢ９のＴＣＰから垂直方向に定められたエスケープポイントＰ４を経由してハンド５０を移動させる軌道が計算される。したがって、計算部４０５は、目標位置の周辺に障害物がある場合であっても、ハンド５０が障害物等に当たることを防ぐ軌道を計算できる。
【０１０７】
ワークを置く（“place”）作業時の計算部８５の軌道計算を説明したが、ワークを取る（つかむ）（“pick up”）作業時も同様である。すなわち、オルゴールをつかむ際に、ハンド５０はオルゴールを保持していない状態で、アプローチポイントＰ３を経る。そして、オルゴールをつかんだ後にハンド５０を移動させる軌道として、ハンド５０がオルゴールを保持している状態で、エスケープポイントＰ４を経る。
【０１０８】
また、表示制御部４００は、軌道に沿って動くハンド５０のアニメーションを表示装置２４に表示する。表示制御部４００は、アーム型ロボット４０全体のアニメーションを表示せず、ハンド５０のみのアニメーションを表示することから、ＣＰＵ２０への負荷は軽減される。
【０１０９】
また、アーム型ロボット１１が所定の作業（例えば「置く」作業）を実行すると、処理装置２６は「置く」作業で「作業対象」となったワークを示す識別データ９３０を記憶装置２７に格納する（処理Ｓ２０４）。このため、利用者は、記憶装置２７に格納された情報を参照することにより、何の作業が実行されたかのみならず、作業対象となったワークを容易に把握できる。
【０１１０】
また、アーム型ロボット１１が所定の作業（例えば「置く」作業）を実行すると、処理装置２６は「置く」作業が実行された時刻を示す時刻データ９１０を記憶装置２７に格納する（処理Ｓ２０２）。このため、利用者は、記憶装置２７に格納された情報を参照することにより、何の作業が何時行われたかを容易に把握できる。
【０１１１】
また、処理装置２６は動作プログラム７１０を実行した際、アーム型ロボット１１を動作させるモータに関する情報（例えばモータの電流値、電圧、トルク等の指令値や実効値）を取得し、記憶装置２７に作業実行データ９００として格納する。このため、利用者は、モータの詳細な状態を把握することができる。
【０１１２】
また、処理装置２６は、作業実行データ９００の内容を、アーム型ロボット１１の表示装置（不図示）若しくは、表示装置２４に表示しても良い。このような場合、利用者は、実行された作業を容易に把握できる。
【０１１３】
なお、上記実施例は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【０１１４】
例えば、ワークを取る（つかむ）（“pick up”）作業の際においても、本実施形態と同様の処理が実行される。例えば、ロボット教示装置１０は、ワークを取る場合においても、移動前の位置にあるオルゴールＡ１のＴＣＰと、移動後の位置にあるオルゴールＢ９のＴＣＰと、に基づいてハンド５０の軌道を計算する（例えば、処理Ｓ１０４）。ハンド５０がワークを取る際には、ハンド５０は実際にはワークを把持していない。しかしながら、ハンド５０が仮にワークを把持しているとして処理Ｓ１０４等で計算された軌道は、ワークを取る際の軌道と同様である。したがって、本実施形態では、ワークを取る際にも、作業開始位置に設けられた「ワーク」を、作業終了位置に設けられた「ワーク」に移動させる軌道として計算する。つまり、「ワーク」を作業開始位置（第１の位置）から作業終了位置（第２の位置）に移動させる際の軌道とは、実際に「ワーク」を移動させる際の軌道のみならず、ハンド５０が仮想的に「ワーク」を移動させる際の軌道（ワークを取る（つかむ）（“pick up”）際の軌道）も含む。
【０１１５】
例えば、処理装置２６は、作業が実行されたこを示す作業実行データ９００を記憶装置２７に格納することとしたが、これに限られない。例えば、処理装置２６は、作業実行データ９００の代わりに、作業情報Ｉ１を記憶装置２７に格納し、作業が実行されたことを示すこととしても良い。このような場合であっても、本実施形態と同様の効果を得ることができる。
【０１１６】
また、動作プログラム生成部８３は、ファイル名に基づいて識別情報Ｉ２を取得することとしたが、これに限られない。動作プログラム生成部８３は、作業が、置く（“place”）、または捨てる（“dispose”）の場合、作業開始位置入力エリア７１のワークの情報に基づいて、識別情報Ｉ２を取得しても良い。また、指定された作業が、取る（つかむ）（“pick up”）の場合、作業終了位置入力エリア７２のワークの情報に基づいて、識別情報Ｉ２を取得しても良い。
【０１１７】
また、アーム型ロボット１１の処理装置２６で各種処理が実行され、記憶装置２７に各種情報が格納されることとしたが、これに限られない。例えば、アーム型ロボット１１の外部のパソコン等のＣＰＵ（不図示）で各種処理が実行され、ＣＰＵ（処理部）がアクセスする不揮発性メモリ（記憶部）に各種情報が格納されることとしても良い。
【０１１８】
また、記憶装置２７は、必ずしもアーム型ロボット１１に含まれていなくてもよい。例えば、記憶装置２７はアーム型ロボット装置の外部に設けてもよい。この時、アーム型ロボット１１の処理装置２６で各種処理が実行され、通信装置２８がインターネット等の通信網を介して外部の記憶装置２７に送信される。そして、各種情報は外部の記憶装置２７に格納されていても良い。
【０１１９】
また、例えば、カメラ（不図示）からの情報により、処理装置２６がワークの個数を把握できる場合、処理装置２６は、棚に置かれたワークの個数と、棚への置く（“place”）作業の回数とを比較することにより、置く（“place”）作業の失敗回数を検出することができる。そして、処理装置２６は、そのような作業失敗回数を作業実行データ９００として、記憶装置２７に格納しても良い。この場合、利用者は、作業の回数のみならず、作業の失敗回数も把握できる。
【０１２０】
また、不良品か否かは、アーム５１がワークを持ち上げた際、処理装置２６党にワークの重さを計測させ、重さに基づいて処理装置２６に判定させても良い。なお、例えば、ワークの一部が欠けているような場合、ワークは所定の重さより軽くなるため、処理装置２６は、ワークが不良品であると判定できる。
【０１２１】
また、処理装置２６は、「不良品」であるとの判定結果と、「作業対象」となったワークを示す識別データ９３０とを対応させた情報を、記憶装置２７に格納しても良い。利用者が、このような情報を参照することにより、不良品のロット番号等を把握することが可能となり、不良品の解析が可能となる。
【０１２２】
また、ロボットの動作プログラミングをする際、座標値を扱うのは煩雑である。３ＤＣＡＤからは座標値も抽出することも可能であるが、煩雑であることに変わりない。また、この煩雑さは、機械技術者、ソフトウェア技術者などの異なる技術者が必要となる。そのためロボットを利用したオートメーションシステムを構築するために、膨大な時間を要する。本実施形態は、ロボットのオートメーションシステムを短時間で行うことができる。
【符号の説明】
【０１２３】
１０…ロボット教示装置、１１，４０…アーム型ロボット、２０…ＣＰＵ、２１…メモリ、２２…記憶装置、２３…入力装置、２４…表示装置、２５…通信装置、３０…画面、４５…棚、５０…ハンド、５１…アーム、６０〜６３…設定画面、７０…関数名指定エリア、７１…作業開始位置入力エリア、７２…作業終了位置入力エリア、７３…アプローチポイント設定エリア、７４…エスケープポイント設定エリア、８０…第１取得部、８１…第２取得部、８２…計算部、８３…動作プログラム生成部、８４…送信部、１００…仮想空間、２００…ロボット作業管理システム、４００…表示制御部、４０１…第１取得部、４０２…第２取得部、４０３…第３取得部、４０４…第４取得部、４０５…計算部、４０６…動作プログラム生成部、４０７…送信部、６００…プログラム、６１０…教示プログラム、６２０…ＣＡＤプログラム、７００…データ、８００…動作プログラム、８１０…メインプログラム、８２０…サブプログラム
【図１】
2018180300.tif 000003
【図２】
2018180300.tif 000004
【図３】
2018180300.tif 000005
【図４】
2018180300.tif 000006
【図５】
2018180300.tif 000007
【図６】
2018180300.tif 000008
【図７】
2018180300.tif 000009
【図８】
2018180300.tif 000010
【図９】
2018180300.tif 000011
【図１０】
2018180300.tif 000012
【図１１】
2018180300.tif 000013
【図１２】
2018180300.tif 000014
【図１３】
2018180300.tif 000015
【図１４】
2018180300.tif 000016
【図１５】
2018180300.tif 000017
【図１６】
2018180300.tif 000018
【図１７】
2018180300.tif 000019
【図１８】
2018180300.tif 000020
【国際調査報告】
2018180300.tif 000021
2018180300.tif 000022
2018180300.tif 000023