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