(57)【要約】【課題】従来、ロボットの教示に掛かる作業を簡単化することが求められている。【解決手段】ロボット教示装置１０は、ロボット１００の目標位置データを記憶する位置データ記憶部２８と、ロボット１００を目標位置に配置するための動作命令であって、目標位置データを含まない動作命令を記憶する動作命令記憶部２６と、動作命令が入力されたときのロボット１００の現在位置データを取得し、該現在位置データを目標位置データとして固有の識別子とともに位置データ記憶部２８に書き込む位置データ書き込み部３０とを備え、入力された動作命令に目標位置データの識別子を自動付加することで、ロボット１００に動作を教示する。【選択図】図２
2020055082.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの目標位置データを記憶する位置データ記憶部と、
前記ロボットを目標位置に配置するための動作命令であって、前記目標位置データを含まない動作命令を記憶する動作命令記憶部と、
前記動作命令が入力されたときの前記ロボットの現在位置データを取得し、該現在位置データを前記目標位置データとして固有の識別子とともに前記位置データ記憶部に書き込む位置データ書き込み部と、を備え、
入力された前記動作命令に前記目標位置データの前記識別子を自動付加することで、前記ロボットに動作を教示する、ロボット教示装置。
【請求項２】
前記位置データ書き込み部が新たに取得した前記現在位置データが、過去に前記位置データ記憶部に記憶された前記目標位置データと一致する場合、前記位置データ書き込み部は、新たな前記現在位置データを前記位置データ記憶部に書き込まず、
前記新たな現在位置データを取得したときの前記動作命令に、過去に記憶された前記目標位置データの前記識別子が自動付加される、請求項１に記載のロボット教示装置。
【請求項３】
前記位置データ書き込み部は、前記新たな現在位置データが、前記過去に記憶された目標位置データに対して予め定めた閾値の範囲内にある場合に、該新たな現在位置データを前記位置データ記憶部に書き込まない、請求項２に記載のロボット教示装置。
【請求項４】
前記新たな現在位置データが、過去に前記位置データ記憶部に記憶された複数の前記目標位置データと一致する場合、該複数の目標位置データのうちの１つを選択する入力を受け付ける入力装置をさらに備える、請求項２又は３に記載のロボット教示装置。
【請求項５】
互いに異なる３つの前記動作命令のうち、第１の前記動作命令と第２の前記動作命令とが教示された後に、該第１の動作命令と該第２の動作命令との間に第３の前記動作命令を追加する場合、前記位置データ書き込み部は、該第３の動作命令が入力されたときの前記現在位置データを取得する代わりに、該第１の動作命令で指令される第１の前記目標位置と該第２の動作命令で指令される第２の前記目標位置との中間位置の位置データを取得して、該中間位置の位置データを前記目標位置データとして固有の識別子とともに前記位置データ記憶部に書き込む、請求項１〜４のいずれか１項に記載のロボット教示装置。
【請求項６】
前記識別子が自動付加された前記動作命令を、前記目標位置データを含まない動作命令として前記動作命令記憶部に書き込む動作命令書き込み部をさらに備える、請求項１〜５のいずれか１項に記載のロボット教示装置。
【請求項７】
ロボットの目標位置データを含まない動作命令が入力されたときの前記ロボットの現在位置データを取得し、
前記現在位置データを前記目標位置データとして固有の識別子とともに記憶し、
入力された前記動作命令に前記目標位置データの前記識別子を自動付加することで、前記ロボットに動作を教示する、ロボット教示方法。
【請求項８】
ロボットの目標位置データを固有の識別子とともに記憶する位置データ記憶部と、
前記ロボットを目標位置に配置するための動作命令であって、前記目標位置データを含まない動作命令を記憶する動作命令記憶部と、
新たに入力された前記目標位置データが、過去に前記位置データ記憶部に記憶された前記目標位置データと一致する場合に、入力された前記動作命令に、過去に記憶された前記目標位置データの前記識別子を自動付加して、前記目標位置データを含まない動作命令として前記動作命令記憶部に書き込む動作命令書き込み部と、を備える、ロボット教示装置。
【請求項９】
ロボットを目標位置に配置するための動作命令であって、前記ロボットの目標位置データを含まない動作命令を記憶し、
新たに入力された前記目標位置データが、固有の識別子とともに過去に記憶された前記目標位置データと一致する場合に、入力された前記動作命令に、過去に記憶された前記目標位置データの前記識別子を自動付加して、前記目標位置データを含まない動作命令として記憶する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット教示装置、ロボット教示方法、及び動作命令を記憶する方法に関する。
【背景技術】
【０００２】
ロボットに所定の動作を教示するためのロボット教示装置が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１６７８８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来、ロボットの教示に掛かる作業を簡単化することが求められている。
【課題を解決するための手段】
【０００５】
本開示の一態様において、ロボット教示装置は、ロボットの目標位置データを記憶する位置データ記憶部と、ロボットを目標位置に配置するための動作命令であって、目標位置データを含まない動作命令を記憶する動作命令記憶部と、動作命令が入力されたときのロボットの現在位置データを取得し、該現在位置データを目標位置データとして固有の識別子とともに位置データ記憶部に書き込む位置データ書き込み部とを備え、入力された動作命令に目標位置データの識別子を自動付加することで、ロボットに動作を教示する。
【０００６】
本開示の他の態様において、ロボット教示方法は、ロボットの目標位置データを含まない動作命令が入力されたときのロボットの現在位置データを取得し、現在位置データを目標位置データとして固有の識別子とともに記憶し、入力された動作命令に目標位置データの識別子を自動付加することで、ロボットに動作を教示する。
【０００７】
本開示のさらに他の態様において、ロボット教示装置は、ロボットの目標位置データを固有の識別子とともに記憶する位置データ記憶部と、ロボットを目標位置に配置するための動作命令であって、目標位置データを含まない動作命令を記憶する動作命令記憶部と、新たに入力された目標位置データが、過去に位置データ記憶部に記憶された目標位置データと一致する場合に、入力された動作命令に、過去に記憶された目標位置データの識別子を自動付加して、目標位置データを含まない動作命令として動作命令記憶部に書き込む動作命令書き込み部とを備える。
【０００８】
本開示のさらに他の態様において、方法は、ロボットを目標位置に配置するための動作命令であって、ロボットの目標位置データを含まない動作命令を記憶し、新たに入力された目標位置データが、固有の識別子とともに過去に記憶された目標位置データと一致する場合に、入力された動作命令に、過去に記憶された目標位置データの識別子を自動付加して、目標位置データを含まない動作命令として記憶する。
【発明の効果】
【０００９】
本開示によれば、オペレータは、動作命令を入力する毎に、目標位置データの入力、及び識別子の動作命令への書き込みを行うことが不要となるので、ロボットに動作を教示するための作業工数を低減することができる。したがって、ロボットの教示に掛かる作業を簡単化することができる。
【図面の簡単な説明】
【００１０】
【図１】一実施形態に係るロボット教示装置を示す。
【図２】図１に示すロボット教示装置のブロック図である。
【図３】他の実施形態に係るロボット教示装置を示す。
【図４】図３に示すロボット教示装置のブロック図である。
【発明を実施するための形態】
【００１１】
以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。まず、図１及び図２を参照して、一実施形態に係るロボット教示装置１０について説明する。ロボット教示装置１０は、ロボット１００に動作を教示するための装置である。
【００１２】
ロボット１００は、垂直多関節ロボットであって、ロボットベース１０２、旋回胴１０４、ロボットアーム１０６、手首部１０８、及びエンドエフェクタ１１０を有する。ロボットベース１０２は、作業セルの床の上に固定されている。旋回胴１０４は、ロボットベース１０２に鉛直軸周りに旋回可能に設けられている。ロボットアーム１０６は、旋回胴１０４に回転可能に取り付けられた下腕部１１２と、該下腕部１１２の先端に回転可能に取り付けられた上腕部１１４とを有する。
【００１３】
手首部１０８は、上腕部１１４の先端に連結されている。エンドエフェクタ１１０は、手首部１０８に取り付けられ、手首部１０８は、エンドエフェクタ１１０を回転可能に支持する。エンドエフェクタ１１０は、ロボットハンド、溶接トーチ、又は塗料噴霧器等であって、ワークに対して所定の作業を行う。
【００１４】
ロボット１００は、複数のサーボモータ１１６（図２）を有する。これらサーボモータ１１６は、ロボット１００の各コンポーネント（ロボットベース１０２、旋回胴１０４、ロボットアーム１０６、手首部１０８）に内蔵され、これらコンポーネントを駆動軸周りに回転させる。
【００１５】
ロボット教示装置１０は、ロボット制御装置１２、及び教示デバイス１４を備える。ロボット制御装置１２は、プロセッサ１６及び記憶装置１８を有し、ロボット１００を制御する。プロセッサ１６は、ＣＰＵ又はＧＰＵ等であって、後述する各種処理を実行する。記憶装置１８は、ＲＯＭ及びＲＡＭ等を有し、各種データを記憶する。プロセッサ１６と記憶装置１８とは、バス２０を介して、互いに通信可能に接続されている。
【００１６】
ロボット１００には、ロボット座標系ＣＲが設定されている。本実施形態においては、ロボット座標系ＣＲは、その原点が、ロボットベース１０２に配置され、そのｚ軸が鉛直方向と平行であり、旋回胴１０４が該ｚ軸周りに旋回されるように、設定されている。
【００１７】
一方、ロボット１００の手先部（すなわち、エンドエフェクタ１１０）には、ツール座標系ＣＴが設定される。ツール座標系ＣＴは、ロボット座標系ＣＲにおけるエンドエフェクタ１１０の位置を規定する。なお、本稿において、「位置」とは、位置及び姿勢を意味することがある。
【００１８】
ロボット制御装置１２は、記憶装置１８に記憶された後述の動作命令に従って各サーボモータ１１６への指令を生成し、ロボット１００の各コンポーネントを動作させて、エンドエフェクタ１１０を複数の目標位置に順に配置する。これにより、ロボット１００は、該複数の目標位置によって規定される動作軌道に沿って移動する。
【００１９】
エンドエフェクタ１１０を１つの目標位置に配置するとき、ロボット制御装置１２は、まず、ツール座標系ＣＴをロボット座標系ＣＲにおいて設定する。そして、ロボット制御装置１２は、ロボット座標系ＣＲを基準としてロボット１００を動作させて、エンドエフェクタ１１０を、設定したツール座標系ＣＴによって規定される目標位置に配置する。こうして、エンドエフェクタ１１０は、ロボット座標系ＣＲにおける目標位置に配置される。
【００２０】
本実施形態においては、教示デバイス１４は、例えば手持ち式の教示ペンダントであって、プロセッサ（ＣＰＵ、ＧＰＵ等）、記憶装置（ＲＡＭ、ＲＯＭ等）、表示装置２２、及び入力装置２４を有する。表示装置２２は、例えばＬＣＤ又は有機ＥＬディスプレイ等であって、データを画像として表示する。入力装置２４は、例えば、複数の操作キーを有するキーボードであって、オペレータによる入力操作を受け付ける。
【００２１】
教示デバイス１４は、無線又は有線で、ロボット制御装置１２に通信可能に接続されている。オペレータは、教示デバイス１４の入力装置２４を操作することで、ロボット制御装置１２を介して、ロボット１００を任意の位置に配置させる（いわゆる、ジョグ動作する）ことができる。
【００２２】
また、オペレータは、教示デバイス１４の入力装置２４を操作することで、ロボット１００への動作命令を入力することができる。教示デバイス１４は、オペレータからのロボット１００への動作命令の入力を受け付けて、該動作命令の入力情報をロボット制御装置１２へ送る。
【００２３】
記憶装置１８は、ロボット１００を目標位置に配置するための動作命令を記憶する。すなわち、本実施形態においては、記憶装置１８は、動作命令を記憶する動作命令記憶部２６（図２）として機能する。以下の表１に、記憶装置１８が記憶する動作命令の例を示す。
【００２４】
【表１】
2020055082.tif 000003
【００２５】
表１の例においては、第１行目の「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［１］」という文字列を含む動作命令から、第ｎ行目の「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ］」という文字列を含む動作命令まで、計ｎ行の動作命令が記憶されている。
【００２６】
また、記憶装置１８は、ロボット１００の目標位置データを記憶する。すなわち、本実施形態においては、記憶装置１８は、目標位置データを記憶する位置データ記憶部２８（図２）として機能する。なお、記憶装置１８の１つのＲＯＭ（又はＲＡＭ）が、動作命令記憶部２６及び位置データ記憶部２８として機能してもよいし、又は、記憶装置１８の第１のＲＯＭ（又はＲＡＭ）が動作命令記憶部２６として機能する一方、記憶装置１８の第２のＲＯＭ（又はＲＡＭ）が位置データ記憶部２８として機能してもよい。下記の表２に、目標位置データのデータベースの例を示す。
【００２７】
【表２】
2020055082.tif 000004
【００２８】
表２に示す例においては、目標位置データとして、座標（Ｘ，Ｙ，Ｚ，Ｗ，Ｐ，Ｒ）が記憶されている。本実施形態においては、目標位置データ（Ｘ，Ｙ，Ｚ，Ｗ，Ｐ，Ｒ）は、エンドエフェクタ１１０を目標位置に配置するときにロボット座標系ＣＲに設定するツール座標系ＣＴの位置（原点及び各軸の方向）を定義する。
【００２９】
具体的には、座標Ｘは、ツール座標系ＣＴの原点のロボット座標系ＣＲにおけるｘ座標を示し、座標Ｙは、ツール座標系ＣＴの原点のロボット座標系ＣＲにおけるｙ座標を示し、座標Ｚは、ツール座標系ＣＴの原点のロボット座標系ＣＲにおけるｚ座標を示す。これら座標Ｘ、Ｙ及びＺによって、ツール座標系ＣＴ（すなわち、エンドエフェクタ１１０）のロボット座標系ＣＲにおける位置が規定される。
【００３０】
また、座標Ｗは、ツール座標系ＣＴの、基準座標系（例えば、ロボット座標系ＣＲ）のｘ軸周りの回転角度を示し、座標Ｐは、ツール座標系ＣＴの、基準座標系のｙ軸周りの回転角度を示し、座標Ｒは、ツール座標系ＣＴの、基準座標系のｚ軸周りの回転角度を示す。これら座標Ｗ、Ｐ及びＲによって、ツール座標系ＣＴ（すなわち、エンドエフェクタ１１０）の姿勢が規定される。
【００３１】
各々の目標位置データには、固有の識別子ＩＤが割り当てられている。表２に示す例においては、識別子ＩＤは、１からｍまでの数字として設定されている。例えば、ＩＤ＝ｍが割り当てられた第ｍの目標位置データは、座標（Ｘｍ，Ｙｍ，Ｚｍ，Ｗｍ，Ｐｍ，Ｒｍ）である。
【００３２】
このように、表２に示すデータベースには、第１の目標位置データ（Ｘ１，Ｙ１，Ｚ１，Ｗ１，Ｐ１，Ｒ１）から、第ｍの目標位置データ（Ｘｍ，Ｙｍ，Ｚｍ，Ｗｍ，Ｐｍ，Ｒｍ）まで、計ｍ個の目標位置データが、それぞれに固有の識別子によって識別可能となるように、格納されている。
【００３３】
ロボット１００を動作させるとき、ロボット制御装置１２は、表１に示す第１行〜第ｎ行の動作命令を順に読み出し、これら動作命令によって定義される動作をロボット１００に実行させる。例えば、「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ］」という第ｎ行目の動作命令は、エンドエフェクタ１１０を、ＩＤ＝ｍによって識別される第ｍの目標位置に配置させる動作を、ロボット１００に実行させる。
【００３４】
第ｎ行目の動作命令における「ＰＯＳＩＴＩＯＮ［ｍ］」は、第ｍの目標位置データの識別子ＩＤ＝ｍを引用する文字列である。ロボット制御装置１２は、この「ＰＯＳＩＴＩＯＮ［ｍ］」という文字列を読み出したとき、記憶装置１８（位置データ記憶部２８）に記憶された表２に示すデータベースを参照し、識別子ＩＤ＝ｍが付された第ｍの目標位置データ（Ｘｍ，Ｙｍ，Ｚｍ，Ｗｍ，Ｐｍ，Ｒｍ）を読み出す。
【００３５】
そして、ロボット制御装置１２は、第ｍの目標位置データ（Ｘｍ，Ｙｍ，Ｚｍ，Ｗｍ，Ｐｍ，Ｒｍ）によって定義される第ｍの目標位置にツール座標系ＣＴを設定し、ロボット１００を動作させて、エンドエフェクタ１１０を、設定したツール座標系ＣＴによって規定される第ｍの目標位置に配置する。このように、本実施形態においては、第ｎ行目の動作命令は、第ｍの目標位置データの識別子ＩＤ＝ｍを引用する文字列を含むものであって、第ｍの目標位置データ（Ｘｍ，Ｙｍ，Ｚｍ，Ｗｍ，Ｐｍ，Ｒｍ）を含んでいない。
【００３６】
次に、ロボット教示装置１０を用いてロボット１００を教示する方法について説明する。ロボット１００を教示するとき、オペレータは、まず、教示デバイス１４を操作してロボット１００をジョグ動作し、エンドエフェクタ１１０を、教示すべき目標位置に配置させる。
【００３７】
次いで、オペレータは、入力装置２４を操作して、ロボット１００に動作を教示するための動作命令を入力する。一例として、ロボット教示装置１０は、表示装置２２に、動作命令を入力するための動作教示ボタンを表示させる。この場合、オペレータは、入力装置２４を操作して、表示装置２２に表示された動作教示ボタンを画像上で操作し、動作命令を入力する。
【００３８】
他の例として、教示デバイス１４において、入力装置２４の１つ操作キーが、動作教示ボタンとして割り当てられてもよい。この場合、オペレータは、動作教示ボタンとしての入力装置２４を操作して、動作命令を入力する。教示デバイス１４のプロセッサは、入力装置２４を通して、オペレータからの動作命令の入力を受け付けて、該動作命令の入力情報をロボット制御装置１２へ送る。
【００３９】
ロボット制御装置１２のプロセッサ１６は、オペレータからの動作命令の入力を受け付けると、この時点でのロボット１００の現在位置データを取得する。具体的には、プロセッサ１６は、ロボット１００の現在位置データとして、この時点でのエンドエフェクタ１１０の座標（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）を取得する。なお、プロセッサ１６は、動作命令の入力を受け付けたときに、各サーボモータ１１６の回転角度を取得し、該回転角度に基づいて、エンドエフェクタ１１０の座標（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）を算出してもよい。
【００４０】
プロセッサ１６は、取得した現在位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）に固有の識別子：ｍ＋１を付与し、該現在位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）を、新たな目標位置データとして、記憶装置１８に書き込む。その結果、以下の表３に示すように、記憶装置１８に記憶されている目標位置データのデータベースに、識別子「ｍ＋１」が割り当てられた新たな目標位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）が追加される。
【００４１】
【表３】
2020055082.tif 000005
【００４２】
このように、本実施形態においては、プロセッサ１６は、動作命令が入力されたときのロボットの現在位置データを取得し、該現在位置データを目標位置データとして識別子とともに位置データ記憶部２８（すなわち、記憶装置１８）に書き込む位置データ書き込み部３０（図２）として機能する。
【００４３】
また、プロセッサ１６は、動作命令の入力を受け付けると、新たな目標位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）の識別子「ｍ＋１」を自動的に付加し、新たな動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ＋１］」として、記憶装置１８に自動的に書き込む。その結果、以下の表４に示すように、第ｎ＋１行目に、新たな動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ＋１］」が追加される。
【００４４】
【表４】
2020055082.tif 000006
【００４５】
このように、本実施形態においては、プロセッサ１６は、入力された動作命令を動作命令記憶部２６（すなわち、記憶装置１８）に書き込む動作命令書き込み部３２として機能する。こうして、新たな動作命令によって定義される動作（すなわち、エンドエフェクタ１１０を第ｍ＋１の目標位置に配置する動作）が、ロボット１００に教示される。
【００４６】
以上のように、本実施形態においては、プロセッサ１６（位置データ書き込み部３０）は、オペレータによって動作命令が入力されたときに、ロボット１００の現在位置データを取得し、新たな目標位置データとして、新たな識別子とともに位置データ記憶部２８に書き込んでいる。そして、プロセッサ１６は、入力された動作命令に、新たな識別子を自動付加することで動作を教示する。
【００４７】
この構成によれば、オペレータは、動作命令を入力する毎に、目標位置データの入力、及び識別子の動作命令への書き込みを行うことが不要となるので、ロボット１００に動作を教示するための作業工数を低減することができる。したがって、ロボット１００の教示に掛かる作業を簡単化することができる。
【００４８】
次に、ロボット教示装置１０の他の機能について説明する。上述のように、プロセッサ１６は、教示デバイス１４を介してオペレータからの動作命令の入力を受け付けると、位置データ書き込み部３０として機能して、この時点でのロボット１００の現在位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）を取得する。
【００４９】
そして、プロセッサ１６は、新たに取得した現在位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）が、過去に記憶装置１８（位置データ記憶部２８）に記憶された第１〜第ｍの目標位置データと一致するか否かを判定する。一例として、プロセッサ１６は、取得した現在位置データの座標Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，及びＲｍ＋１が、第１〜第ｍの目標位置データの各々の座標Ｘ，Ｙ，Ｚ，Ｗ，Ｐ，及びＲに対して予め定められた閾値の範囲内にあるか否かを判定する。
【００５０】
例えば、この閾値の範囲は、第１〜第ｍの目標位置データの各々の各座標Ｘ，Ｙ，Ｚ，Ｗ，Ｐ，及びＲの９５％〜１０５％の範囲（［Ｘ×０．９５，Ｘ×１．０５］，［Ｙ×０．９５，Ｙ×１．０５］，［Ｚ×０．９５，Ｚ×１．０５］，［Ｗ×０．９５，Ｗ×１．０５］，［Ｐ×０．９５，Ｐ×１．０５］，［Ｒ×０．９５，Ｒ×１．０５］）として、定められ得る。
【００５１】
プロセッサ１６は、取得した現在位置データの座標Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，及びＲｍ＋１が閾値の範囲内にあると判定した場合に、該現在位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）が、過去に記憶装置１８に記憶された目標位置データと一致するものと判定する。
【００５２】
なお、プロセッサ１６は、取得した現在位置データの座標Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，及びＲｍ＋１の少なくとも１つ（例えば、Ｘｍ＋１，Ｙｍ＋１，及びＺｍ＋１）が、第１〜第ｍの目標位置データの各々の座標Ｘ，Ｙ，Ｚ，Ｗ，Ｐ，及びＲの少なくとも１つ（例えば、Ｘ，Ｙ，及びＺ）に対して予め定められた閾値の範囲内にあるか否かを判定してもよい。
【００５３】
又は、プロセッサ１６は、取得した現在位置データの座標Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，及びＲｍ＋１の少なくとも１つ（例えば、Ｘｍ＋１，Ｙｍ＋１，及びＺｍ＋１）が、第１〜第ｍの目標位置データの各々の座標Ｘ，Ｙ，Ｚ，Ｗ，Ｐ，及びＲの少なくとも１つ（例えば、Ｘ，Ｙ，及びＺ）と完全一致した場合にのみ、該現在位置データが、過去に記憶された目標位置データと一致するものと判定してもよい。
【００５４】
他の例として、プロセッサ１６は、取得した現在位置データのロボット座標系ＣＲにおける位置（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１）と、過去に記憶装置１８に記憶された第１〜第ｍの目標位置データの各々のロボット座標系ＣＲにおける位置（Ｘ，Ｙ，Ｚ）との間の距離δ＝（（Ｘｍ＋１−Ｘ）２＋（Ｙｍ＋１−Ｙ）２＋（Ｚｍ＋１−Ｚ）２）１／２を算出する。
【００５５】
そして、プロセッサ１６は、算出した距離δが予め定められた閾値の範囲［０，δｔｈ］内にあるか否かを判定する。プロセッサ１６は、距離δが範囲［０，δｔｈ］にある（すなわち、０≦δ≦δｔｈ）と判定した場合に、取得した現在位置データが、過去に記憶装置１８に記憶された目標位置データと一致するものと判定する。
【００５６】
なお、プロセッサ１６は、距離δに加えて、取得した現在位置データの姿勢の座標（Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）と、過去に記憶装置１８に記憶された目標位置データの各々の姿勢の座標（Ｗ，Ｐ，Ｒ）との差φＷ＝Ｗｍ＋１−Ｗ、φＰ＝Ｐｍ＋１−Ｐ、φＲ＝Ｒｍ＋１−Ｒをさらに算出してもよい。
【００５７】
そして、プロセッサ１６は、差φＷ、φＰ、及びφＲが、それぞれに対して予め定められた範囲［０，φＷｔｈ］、［０，φＰｔｈ］、及び［０，φＲｔｈ］にあるか否かを判定してもよい。この場合において、プロセッサ１６は、距離δが範囲［０，δｔｈ］にあり、且つ、差φＷ、φＰ、及びφＲが範囲［０，φＷｔｈ］、［０，φＰｔｈ］、及び［０，φＲｔｈ］にあると判定した場合に、取得した現在位置データが、過去に記憶装置１８に記憶された目標位置データと一致するものと判定してもよい。
【００５８】
プロセッサ１６は、取得した現在位置データが、過去に記憶された目標位置データと一致しないと判定した場合、位置データ書き込み部３０として機能して、上述の実施形態と同様に、現在位置データを新たな識別子とともに記憶装置１８に書き込む。
【００５９】
一方、プロセッサ１６は、取得した現在位置データが、過去に記憶された目標位置データと一致すると判定した場合は、該現在位置データを記憶装置１８に書き込まずに、該現在位置データを取得したときの動作命令に、該過去に記憶された目標位置データの識別子を自動付加する。
【００６０】
例えば、プロセッサ１６が、取得した現在位置データが、過去に記憶装置１８に記憶された、表２のデータベース内の第３の目標位置データ（Ｘ３，Ｙ３，Ｚ３，Ｗ３，Ｐ３，Ｒ３）と一致すると判定したとする。この場合、プロセッサ１６は、入力された動作命令に、第３の目標位置データ（Ｘ３，Ｙ３，Ｚ３，Ｗ３，Ｐ３，Ｒ３）の識別子「３」を自動的に付加し、表４に示す動作命令の第ｎ＋１行目に、動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［３］」を追加するように、該動作命令を記憶装置１８に書き込む。
【００６１】
以上のように、本実施形態においては、プロセッサ１６は、取得した現在位置データが、過去に記憶装置１８に記憶された目標位置データと一致する場合、該現在位置データを記憶装置１８に書き込まない。この構成によれば、互いに実質一致する複数の目標位置データが記憶装置１８に重複して記憶されるのを防止し、既存の目標位置データを有効利用することができる。これにより、目標位置データを格納するデータベースのデータ量を抑えることができるので、使用する記憶装置１８の容量を削減することができる。
【００６２】
また、オペレータが視認可能となるように目標位置データのデータベースを表示部に表示させたときに、実質一致する目標位置データが複数表示されることを回避できるので、データベースのメンテナンス性を向上させることができる。また、目標位置を画像として表示部に表示させた場合に、不要な目標位置が省かれることから、該画像の視認性が向上する。
【００６３】
なお、記憶装置１８に記憶されていた目標位置データのうち、取得した現在位置データと一致すると判定されるものが、複数存在し得る。例えば、プロセッサ１６が、上述の距離δを算出した場合に、該距離δが範囲［０，δｔｈ］となる目標位置データが複数存在し得る。この場合、プロセッサ１６は、距離δがゼロに最も近い１つの目標位置データを選択し、該１つの目標位置データの識別子を、入力された動作命令に自動的に付加してもよい。
【００６４】
代替的には、プロセッサ１６は、距離δが範囲［０，δｔｈ］となる複数の目標位置データを、リスト形式の画像としてオペレータに提示してもよい。例えば、プロセッサ１６は、教示デバイス１４に指令を送り、該教示デバイス１４は、複数の目標位置データのリストを、表示装置２２に表示してもよい。
【００６５】
そして、オペレータは、入力装置２４を操作して、表示された複数の目標位置データの中から所望の目標位置データを選択する信号を入力し、プロセッサ１６は、該入力を受け付けて、オペレータによって選択された目標位置データの識別子を、入力された動作命令に自動的に付加してもよい。
【００６６】
又は、プロセッサ１６は、ロボット制御装置１２に設けられた表示装置（図示せず）に、複数の目標位置データのリストを表示してもよい。そして、オペレータは、ロボット制御装置１２に設けられた入力装置（例えば、キーボート等）を操作して、表示された複数の目標位置データの中から所望の目標位置データを選択する信号を入力し、プロセッサ１６は、オペレータによって選択された目標位置データの識別子を、入力された動作命令に自動的に付加してもよい。
【００６７】
次に、ロボット教示装置１０のさらに他の機能について説明する。以下、記憶装置１８に、表３に示す目標位置データのデータベースと、表４に示す動作命令とが記憶されており、オペレータが、教示デバイス１４を操作して、表４に示す第ｎ行目の動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ］」と、第ｎ＋１行目の動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ＋１］」との間の行に、新たな動作命令を追加した場合について説明する。
【００６８】
つまり、第ｎ行目の動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ］」と、第ｎ＋１行目の動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ＋１］」とは、該新たな動作命令の前に、既に教示された動作命令である。この場合において、プロセッサ１６は、該新たな動作命令が入力されたときにロボット１００の現在位置データを取得する代わりに、第ｎ行目の動作命令で指令される、識別子ＩＤ＝ｍの第ｍの目標位置データ（Ｘｍ，Ｙｍ，Ｚｍ，Ｗｍ，Ｐｍ，Ｒｍ）と、第ｎ＋１行目の動作命令で指令される、識別子ＩＤ＝ｍ＋１の第ｍ＋１の目標位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）との中間位置を算出する。
【００６９】
一例として、プロセッサ１６は、中間位置として、第ｍの目標位置データに含まれるロボット座標系ＣＲの座標（Ｘｍ，Ｙｍ，Ｚｍ）と、第ｍ＋１の目標位置データに含まれるロボット座標系ＣＲの座標（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１）との間の中点の座標（（Ｘｍ＋１−Ｘｍ）／２，（Ｙｍ＋１−Ｙｍ）／２，（Ｚｍ＋１−Ｚｍ）／２）を算出する。
【００７０】
一方、プロセッサ１６は、中間位置の姿勢を示す座標（Ｗ，Ｐ，Ｒ）に関しては、第ｍの目標位置データの姿勢の座標（Ｗｍ，Ｐｍ，Ｒｍ）を採用する。したがって、本例においては、プロセッサ１６は、中間位置の位置データ（（Ｘｍ＋１−Ｘｍ）／２，（Ｙｍ＋１−Ｙｍ）／２，（Ｚｍ＋１−Ｚｍ）／２，Ｗｍ，Ｐｍ，Ｒｍ）を算出する。
【００７１】
なお、プロセッサ１６は、中間位置の姿勢を示す座標（Ｗ，Ｐ，Ｒ）として、第ｍ＋１の目標位置データの座標（Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）を採用してもよい。この場合、プロセッサ１６は、中間位置の位置データ（（Ｘｍ＋１−Ｘｍ）／２，（Ｙｍ＋１−Ｙｍ）／２，（Ｚｍ＋１−Ｚｍ）／２，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）を算出する。
【００７２】
他の例として、プロセッサ１６は、中間位置として、上記の例で述べた２つの目標位置の中点の座標に加えて、第ｍの目標位置データによって規定される姿勢と、第ｍ＋１の目標位置データによって規定される姿勢との中間姿勢の座標をさらに算出してもよい。
【００７３】
具体的には、プロセッサ１６は、中間姿勢の座標（Ｗｍ＋（Ｗｍ＋１−Ｗｍ）／２，Ｐｍ＋（Ｐｍ＋１−Ｐｍ）／２、Ｒｍ＋（Ｒｍ＋１−Ｒｍ）／２）を算出する。したがって、この例においては、プロセッサ１６は、中間位置の位置データ（（Ｘｍ＋１−Ｘｍ）／２，（Ｙｍ＋１−Ｙｍ）／２，（Ｚｍ＋１−Ｚｍ）／２，Ｗｍ＋（Ｗｍ＋１−Ｗｍ）／２，Ｐｍ＋（Ｐｍ＋１−Ｐｍ）／２，Ｒｍ＋（Ｒｍ＋１−Ｒｍ）／２）を算出する。
【００７４】
プロセッサ１６は、このように取得した中間位置データを、新たな目標位置データ（Ｘｍ＋２，Ｙｍ＋２，Ｚｍ＋２，Ｗｍ＋２，Ｐｍ＋２，Ｒｍ＋２）として、固有の識別子ＩＤ＝ｍ＋２ともに、記憶装置１８（位置データ記憶部２８）に書き込む。その結果、以下の表５に示すように、目標位置データのデータベースに、識別子ＩＤ＝ｍ＋２が付された第ｍ＋２の目標位置データ（Ｘｍ＋２，Ｙｍ＋２，Ｚｍ＋２，Ｗｍ＋２，Ｐｍ＋２，Ｒｍ＋２）が追加される。
【００７５】
【表５】
2020055082.tif 000007
【００７６】
上述した一例によれば、Ｘｍ＋２＝（Ｘｍ＋１−Ｘｍ）／２、Ｙｍ＋２＝（Ｙｍ＋１−Ｙｍ）／２、Ｚｍ＋２＝（Ｚｍ＋１−Ｚｍ）／２、Ｗｍ＋２＝Ｗｍ（又はＷｍ＋１）、Ｐｍ＋２＝Ｐｍ（又はＰｍ＋１）、Ｒｍ＋２＝Ｒｍ（又はＲｍ＋１）である。また、上述した他の例によれば、Ｘｍ＋２＝（Ｘｍ＋１−Ｘｍ）／２、Ｙｍ＋２＝（Ｙｍ＋１−Ｙｍ）／２、Ｚｍ＋２＝（Ｚｍ＋１−Ｚｍ）／２、Ｗｍ＋２＝Ｗｍ＋（Ｗｍ＋１−Ｗｍ）／２、Ｐｍ＋２＝Ｐｍ＋（Ｐｍ＋１−Ｐｍ）／２、Ｒｍ＋２＝Ｒｍ＋（Ｒｍ＋１−Ｒｍ）／２である。
【００７７】
また、プロセッサ１６は、表４に示すデータベースにおいて、第ｎ行目の動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ］」と、第ｎ＋１行目の動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ＋１］」との間の行に挿入するように、動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ＋２］」を新たに記憶装置１８に書き込む。このとき、プロセッサ１６は、取得した第ｍ＋２の目標位置データの識別子「ｍ＋２」を、新たに書き込む動作命令に自動的に付加する。
【００７８】
その結果、以下の表６に示すように、新たな動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ＋２］」が、第ｎ＋１行目に追加される。このようにして、新たな動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ＋２］」によって定義される動作（すなわち、エンドエフェクタ１１０を第ｍ＋１の目標位置に配置する動作）が、ロボット１００に教示される。
【００７９】
【表６】
2020055082.tif 000008
【００８０】
以上のように、本実施形態においては、プロセッサ１６は、表４に示す第ｎ行目の動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ］」と、第ｎ＋１行目の動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ＋１］」との間に、新たな動作命令「ＭＯＶＥ  ＰＯＳＩＴＩＯＮ［ｍ＋２］」を追加したとき、第ｍの目標位置と第ｍ＋１の目標位置との中間位置の位置データを取得し、新たな第ｍ＋２の目標位置データ（Ｘｍ＋２，Ｙｍ＋２，Ｚｍ＋２，Ｗｍ＋２，Ｐｍ＋２，Ｒｍ＋２）として記憶装置１８に記憶している。
【００８１】
このように中間位置として算出された第ｍ＋２の目標位置は、第ｍの目標位置から第ｍ＋１の目標位置へ至るロボット１００の動作経路から大きく逸脱することがない。したがって、第ｍの目標位置→第ｍ＋２の目標位置→第ｍ＋１の目標位置へ移動させたときのロボット１００の動作の安全性を高めることができるとともに、オペレータが追加後の第ｍ＋２の目標位置を補正する作業を容易化できる。また、第ｍ＋２の目標位置が自動で記憶装置１８に書き込まれるので、教示に掛かる作業を低減することもできる。
【００８２】
なお、上述の教示デバイス１４は、教示ペンダントに限らず、例えば、デスクトップ型又はモバイル型（タブレット型、ノート型等）のＰＣであってもよい。また、上述の実施形態においては、記憶装置１８が、ロボット制御装置１２に内蔵され、ロボット制御装置１２のプロセッサ１６が、位置データ書き込み部３０及び動作命令書き込み部３２として機能する場合について述べた。しかしながら、これに限らず、記憶装置１８、位置データ書き込み部３０、及び動作命令書き込み部３２を備えるロボット教示装置が、ロボット制御装置とは別の装置として設けられてもよい。
【００８３】
このような実施形態を図３及び図４に示す。この実施形態においては、ロボット教示装置５０は、例えばモバイル型ＰＣであって、プロセッサ１６、記憶装置１８、表示装置２２、及び入力装置５４を備える。入力装置５４は、例えば、表示装置２２の画面上に設けられたタッチセンサであって、オペレータによる接触操作を受け付ける。プロセッサ１６、記憶装置１８、表示装置２２、及び入力装置５４は、バス２０を介して、通信可能に接続されている。
【００８４】
ロボット教示装置５０は、無線又は有線で、ロボット制御装置５２に接続されている。ロボット教示装置５０に内蔵された記憶装置１８は、上述の動作命令記憶部２６及び位置データ記憶部２８として機能する。また、ロボット教示装置５０に内蔵されたプロセッサ１６は、上述した位置データ書き込み部３０及び動作命令書き込み部３２として機能する。
【００８５】
以下、ロボット教示装置５０を用いてロボット１００を教示する方法について説明する。まず、オペレータは、入力装置５４を操作して、ロボット制御装置５２を介してロボット１００をジョグ動作させ、エンドエフェクタ１１０を、教示すべき目標位置に配置させる。
【００８６】
次いで、オペレータは、入力装置５４を操作して、ロボット１００の動作命令を入力する。ロボット教示装置５０のプロセッサ１６は、入力装置５４への動作命令の入力を受け付けると、位置データ書き込み部３０として機能して、ロボット制御装置５２を介して、この時点でのロボット１００の現在位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）を取得する。
【００８７】
次いで、プロセッサ１６は、取得した現在位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）が、過去に記憶装置１８に記憶されていた目標位置データと一致するか否かを判定する。プロセッサ１６は、取得した現在位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）が、過去に記憶された目標位置データと一致しないと判定した場合は、位置データ書き込み部３０として機能して、該現在位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）を、識別子ＩＤ＝ｍ＋１とともに、記憶装置１８に書き込む。
【００８８】
一方、プロセッサ１６は、取得した現在位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）が、過去に記憶された目標位置データと一致すると判定した場合は、該現在位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）を記憶装置１８に書き込まずに、該現在位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）が一致する目標位置データの識別子を、入力された動作命令に自動的に付加する。
【００８９】
また、オペレータが、入力装置５４を操作して、第ｎ行目の動作命令と第ｎ＋１行目の動作命令との間の行に、新たな動作命令を追加した場合は、ロボット教示装置５０のプロセッサ１６は、第ｍの目標位置と第ｍ＋１の目標位置との中間位置の位置データを取得し、新たな第ｍ＋２の目標位置データ（Ｘｍ＋２，Ｙｍ＋２，Ｚｍ＋２，Ｗｍ＋２，Ｐｍ＋２，Ｒｍ＋２）として、識別子「ｍ＋２」とともに記憶装置１８に書き込む。本実施形態によれば、上述のロボット教示装置１０と同様の効果を奏することができる。
【００９０】
なお、ロボット教示装置１０、５０において、オペレータが、入力装置２４、５４を操作して、目標位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）の各座標を手動で入力してもよい。この場合、プロセッサ１６は、入力された目標位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）が、過去に記憶装置１８に記憶された目標位置データと一致するか否かを判定する。
【００９１】
そして、プロセッサ１６は、入力された目標位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）が、過去に記憶された目標位置データと一致すると判定した場合は、該入力された目標位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）を記憶装置１８に書き込まない。そして、プロセッサ１６は、オペレータから入力を受け付けた動作命令に、入力された目標位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）と一致する、過去に記憶された目標位置データの識別子を自動付加し、記憶装置１８に書き込む。
【００９２】
一方、プロセッサ１６は、入力された目標位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）が、過去に記憶された目標位置データと一致しないと判定した場合は、位置データ書き込み部３０として機能して、該目標位置データ（Ｘｍ＋１，Ｙｍ＋１，Ｚｍ＋１，Ｗｍ＋１，Ｐｍ＋１，Ｒｍ＋１）を、識別子ＩＤ＝ｍ＋１とともに、記憶装置１８に書き込む。
【００９３】
なお、上述のロボット教示装置５０は、例えばデスクトップ型ＰＣであってもよい。また、目標位置データは、上述した座標（Ｘ，Ｙ，Ｚ，Ｗ，Ｐ，Ｒ）に限らず、例えば、各サーボモータの回転角度でもよい。また、識別子は、数字に限らず、如何なる文字又は記号であってもよい。
【００９４】
また、記憶装置１８は、ロボット制御装置１２又はロボット教示装置５０に内蔵されるのではなく、ロボット制御装置１２又はロボット教示装置５０の外部に設けられてもよい。例えば、記憶装置１８は、ロボット制御装置１２又はロボット教示装置５０に外付けされる外付けメモリ装置（ＥＥＰＲＯＭ等）であってもよいし、ロボット制御装置１２又はロボット教示装置５０にネットワークを介して接続された外部サーバに内蔵されてもよい。また、動作命令記憶部２６と位置データ記憶部２８の各々は、独立した１つの記憶装置から構成されてもよい。
【００９５】
また、複数のロボット１００が、ネットワークを介してロボット制御装置１２、５２に接続され、ロボット教示装置１０、５０は、これら複数のロボット１００に動作を教示するように構成されてもよい。この場合、複数のロボット１００の間で、目標位置データのデータベース、及び動作命令のデータを共有できる。また、ロボット１００は、垂直多関節ロボットに限らず、水平多関節型、パラレルリンク型等、如何なるタイプのロボットであってもよい。
【００９６】
以上、実施形態を通じて本開示を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。
【符号の説明】
【００９７】
１０，５０    ロボット教示装置
１２，５２    ロボット制御装置
１４    教示デバイス
１６    プロセッサ
１８    記憶装置
２６    動作命令記憶部
２８    位置データ記憶部
３０    位置データ書き込み部
３２    動作命令書き込み部
【図１】
2020055082.tif 000009
【図２】
2020055082.tif 000010
【図３】
2020055082.tif 000011
【図４】
2020055082.tif 000012