(57)【要約】【課題】ロボットの教示に要する時間を短縮する。【解決手段】ロボット２００１の複数の部分動作のうちいずれかが変更された場合に、ロボット制御装置３００は、シミュレーションにより、変更前の部分動作により仮想ロボットが通過する領域を含む第１の領域と、変更後の部分動作により仮想ロボットが通過する第２の領域とを求め、第１の領域と第２の領域とを比較する。ロボット制御装置３００は、その比較の結果、第１の領域が第２の領域を包含しない場合には、変更後の部分動作をロボット２００１に行わせることで、ロボット２００１が周囲の物体に干渉するかどうかを確認する。【選択図】図１
2019084648.tif 000002
【特許請求の範囲】
【請求項１】
ロボットに複数の部分動作からなる一連の動作を行わせる実動作と、前記ロボットに対応する仮想ロボットに仮想空間で前記一連の動作を行わせるシミュレーションとが実行可能な処理部を用いたロボット教示方法であって、
前記複数の部分動作のうちいずれかが変更された場合に、前記処理部は、変更前の部分動作により前記仮想ロボットが通過する領域を含む第１の領域と、変更後の部分動作により前記仮想ロボットが通過する第２の領域とを比較した結果、前記第１の領域が前記第２の領域を包含しない場合には、前記変更後の部分動作を前記ロボットに行わせる干渉確認工程を備える、
ことを特徴とするロボット教示方法。
【請求項２】
前記干渉確認工程において、前記第１の領域が前記第２の領域を包含しない場合、前記処理部が、表示部に警告を表示させ、入力部からの入力指示を受け付けた場合には、前記変更後の部分動作を前記ロボットに行わせる、
ことを特徴とする請求項１に記載のロボット教示方法。
【請求項３】
前記第１の領域は、前記変更前の部分動作により前記仮想ロボットが通過する領域である、
ことを特徴とする請求項１又は２に記載のロボット教示方法。
【請求項４】
前記第１の領域は、前記変更前の部分動作により前記仮想ロボットが通過する領域よりも拡張された領域である、
ことを特徴とする請求項１又は２に記載のロボット教示方法。
【請求項５】
前記処理部は、前記干渉確認工程において、前記変更後の部分動作のうち、前記第２の領域が前記第１の領域と重ならない部分の動作を前記ロボットに行わせる、
ことを特徴とする請求項１乃至４のいずれか１項に記載のロボット教示方法。
【請求項６】
前記処理部は、前記ロボットに行わせる複数の動作指令を取得し、前記複数の動作指令を、１つ以上の動作指令を含む複数の指令セットに分け、前記複数の指令セットに基づき、前記複数の部分動作に対応する複数の軌道データを生成し、
前記干渉確認工程において、
前記処理部は、変更された動作指令を含む指令セットに基づき、前記変更後の部分動作に対応する変更後の軌道データを生成し、
変更前の軌道データに従って前記仮想ロボットを仮想的に動作させたときの前記仮想ロボットの軌跡から前記第１の領域を求め、
前記変更後の軌道データに従って前記仮想ロボットを仮想的に動作させたときの前記仮想ロボットの軌跡から前記第２の領域を求める、
ことを特徴とする請求項１乃至５のいずれか１項に記載のロボット教示方法。
【請求項７】
前記干渉確認工程において、前記処理部は、前記変更後の軌道データに基づく速度よりも低速で、前記変更後の部分動作を前記ロボットに行わせる、
ことを特徴とする請求項６に記載のロボット教示方法。
【請求項８】
複数の前記ロボットの各々に個別に割り当てられた一連の動作を前記複数のロボットの各々に行わせることが可能であり、
前記複数のロボットの各々の一連の動作は、同じ時間帯で区切られた前記複数の部分動作からなる、
ことを特徴とする請求項１乃至７のいずれか１項に記載のロボット教示方法。
【請求項９】
前記干渉確認工程において、前記処理部は、前記変更後の部分動作を行わせるロボット以外のロボットを所定姿勢で停止させておく、
ことを特徴とする請求項８に記載のロボット教示方法。
【請求項１０】
前記所定姿勢は、前記変更後の部分動作を行わせるロボットに対応する仮想ロボットと、前記変更後の部分動作を行わせるロボット以外のロボットに対応する仮想ロボットとの距離が最小となる仮想姿勢に対応する実姿勢である、
ことを特徴とする請求項９に記載のロボット教示方法。
【請求項１１】
ロボットに複数の部分動作からなる一連の動作を行わせる実動作と、前記ロボットに対応する仮想ロボットに仮想空間において前記一連の動作を行わせるシミュレーションとが実行可能な処理部を備え、
前記複数の部分動作のうちいずれかが変更された場合に、前記処理部は、変更前の部分動作により前記仮想ロボットが通過する領域を含む第１の領域と、変更後の部分動作により前記仮想ロボットが通過する第２の領域とを比較した結果、前記第１の領域が前記第２の領域を包含しない場合には、前記変更後の部分動作を前記ロボットに行わせる、
ことを特徴とするロボット教示装置。
【請求項１２】
請求項１１に記載のロボット教示装置と、
前記ロボットと、を備える、
ことを特徴とするロボットシステム。
【請求項１３】
コンピュータに、請求項１乃至１０のいずれか１項に記載のロボット教示方法を実行させるためのプログラム。
【請求項１４】
請求項１３に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの動作変更に伴う処理に関する。
【背景技術】
【０００２】
工場の生産ラインにおける組み立て、搬送、塗布といった作業では産業用ロボットを用いて自動化が行われている。この種のロボットでは、生産能力の向上や省スペース化のために、複数のロボットを近接して配置し、共通の作業領域内で協調して作業を行う場合が多い。このような場合に、ロボットの教示を行う作業者は、各ロボットの動作（即ち軌道）、各ロボットを動作させるタイミング等を考慮して、各ロボットが干渉しないようにシミュレータなどで各ロボットの教示を行っている。そして実機においても、実際にロボットを動作させて、ロボットが他のロボットや構造物等の物体に干渉するかどうかを確認する干渉確認を行っている。
【０００３】
ロボットの教示が終了した後においても、例えばロボットの動作時間の短縮などを目的に、ロボットの動作の変更が度々行われている。そこで、従来は、ロボットの動作（軌道）を変更する度に、干渉確認を行うようにしていた。このような干渉確認の際に、例えば特許文献１では、ロボットが動作を開始する前のデフォルトの状態では、全ての作業領域の評価を、第１の評価にしておき、ロボットが通過した作業領域の評価を、第１の評価から第２の評価に変更するようにしている。そして、ロボットが第１の評価の作業領域を通過する場合には、低速でロボットを動作させ、ロボットが第２の評価の作業領域を通過する場合には、高速でロボットを動作させるようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５５４１０２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の方法では、ロボットの動作を変更する度に行う干渉確認に要する時間を短縮することはできるものの、依然としてロボットの教示に時間を要しており、更なる時間短縮が求められていた。
【０００６】
そこで、本発明は、ロボットの教示に要する時間を短縮することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のロボット教示方法は、ロボットに複数の部分動作からなる一連の動作を行わせる実動作と、前記ロボットに対応する仮想ロボットに仮想空間で前記一連の動作を行わせるシミュレーションとが実行可能な処理部を用いたロボット教示方法であって、前記複数の部分動作のうちいずれかが変更された場合に、前記処理部は、変更前の部分動作により前記仮想ロボットが通過する領域を含む第１の領域と、変更後の部分動作により前記仮想ロボットが通過する第２の領域とを比較した結果、前記第１の領域が前記第２の領域を包含しない場合には、前記変更後の部分動作を前記ロボットに行わせる干渉確認工程を備える、ことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ロボットの教示に要する時間を短縮することができる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係るロボットシステムを示す説明図である。
【図２】第１実施形態に係るロボットシステムの制御系を示すブロック図である。
【図３】第１実施形態におけるロボット制御装置によるシミュレーションの説明図である。
【図４】第１実施形態に係るロボット教示方法の各工程を示すフローチャートである。
【図５】（ａ）及び（ｂ）は、第１実施形態におけるロボットの軌道生成を説明するための図である。（ｃ）は、第１実施形態におけるロボット制御装置によるシミュレーションの説明図である。
【図６】（ａ）及び（ｂ）は、第１実施形態におけるロボットの軌道生成を説明するための図である。
【図７】（ａ）及び（ｂ）は、第１実施形態におけるロボット制御装置によるシミュレーションの説明図である。
【図８】第１実施形態に係るロボット教示方法における干渉確認の処理を示すフローチャートである。
【図９】第２実施形態におけるロボット制御装置によるシミュレーションの説明図である。
【図１０】第３実施形態に係るロボット教示方法における干渉確認の処理を示すフローチャートである。
【図１１】第３実施形態におけるロボット制御装置によるシミュレーションの説明図である。
【図１２】第４実施形態に係るロボット教示方法における干渉確認の処理を示すフローチャートである。
【図１３】第４実施形態におけるロボット制御装置によるシミュレーションの説明図である。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
［第１実施形態］
図１は、第１実施形態に係るロボットシステム１００を示す説明図である。ロボットシステム１００は、複数（第１実施形態では２つ）のロボット２００１，２００２と、ロボット２００１，２００２を制御する、ロボット教示装置の一例であるロボット制御システム３５０と、を備える。なお、ロボット２００１，２００２の周囲には、構造物等の障害物７００が存在する。
【００１１】
ロボット制御システム３５０は、処理部の一例であるロボット制御装置３００と、入力部の一例である入力装置４００と、表示部の一例である表示装置５００と、を備えている。入力装置４００は、例えばキーボード４０１、マウス４０２及び教示ペンダント４０３等で構成されており、作業者によりロボット制御装置３００へのデータ入力などを行う。教示ペンダント４０３は、作業者が操作するものであり、ロボット２００１，２００２やロボット制御装置３００の動作を指示するのに用いる。また、教示ペンダント４０３は、後述する干渉確認のための動作を開始させる釦４１０と、ロボット２００１，２００２に組立作業等の生産作業を開始させる釦４１１とを有する。なお、入力装置４００の構成は、これに限定するものではなく、例えばキーボード４０１、マウス４０２及び教示ペンダント４０３のうち、必要に応じていずれかを省略してもよいし、これらとは別の入力装置を用いてもよい。表示装置５００は、画像を表示するディスプレイである。
【００１２】
ロボット２００１とロボット２００２とは、異なる構成であってもよいが、略同一の構成であり、以下、ロボット２００１の構成について説明し、ロボット２００２の構成については説明を省略する。
【００１３】
ロボット２００１は、垂直多関節のロボットであり、ロボットアーム２５１と、ロボットアーム２５１の先端に取り付けられたエンドエフェクタの一例であるロボットハンド２５２と、を備えている。ロボットアーム２５１の基端は、台座に固定されている。ロボットハンド２５２は、部品やツール等のワークを把持するものである。
【００１４】
ロボットアーム２５１は、複数の関節、例えば６つの関節Ｊ１〜Ｊ６で連結された複数のリンク２１０〜２１６を有する。ロボットアーム２５１は、各関節Ｊ１〜Ｊ６を各関節軸まわりにそれぞれ回転駆動する複数のサーボモータ（不図示）を有している。各関節Ｊ１〜Ｊ６を回転駆動することで、ロボットアーム２５１の姿勢を変更することができる。ロボットアーム２５１の姿勢を変更することで、ロボット２００１の手先、即ちロボットアーム２５１の先端を、任意の位置及び姿勢に変更することができる。
【００１５】
ロボット２００１の手先の位置及び姿勢は、ロボットアーム２５１の基端、即ち台座を基準とするベース座標系で表現される。ロボット制御装置３００において、ロボット２００１の手先は、ＴＣＰ（tool  center  point）で定義される。ベース座標系におけるＴＣＰの位置及び姿勢を入力装置４００で指示することで、ロボット２００１の手先の位置及び姿勢を決めることができる。
【００１６】
次に、ロボット制御システム３５０におけるロボット制御装置３００について説明する。図２は、第１実施形態に係るロボットシステム１００の制御系を示すブロック図である。ロボット制御装置３００は、コンピュータで構成されている。ロボット制御装置３００は、ＣＰＵ（Central  Processing  Unit）３０１を備えている。また、ロボット制御装置３００は、ＲＯＭ（Read  Only  Memory）、ＲＡＭ（Random  Access  Memory）、ＨＤＤ（Hard  Disk  Drive）等で構成された記憶部３０２を備えている。また、ロボット制御装置３００は、記録ディスクドライブ３０３及び不図示の入出力インタフェースを備えている。ＣＰＵ３０１、記憶部３０２、記録ディスクドライブ３０３、及び入出力インタフェースは、互いに通信可能にバス３１０で接続されている。ＣＰＵ３０１は、記憶部３０２及び記録ディスクドライブ３０３を制御するとともに、入出力インタフェースに接続されたロボット２００１，２００２、入力装置４００及び表示装置５００を制御する。記録ディスクドライブ３０３は、記録ディスク３０４に記録された各種データやプログラム等を読み出すことができる。
【００１７】
記憶部３０２には、制御プログラム３１１、タスクプログラム３１２、ＣＡＤデータ３１３、軌道データ生成時の制約条件等のその他のデータが記憶されている。制御プログラム３１１は、ＣＰＵ３０１に、タスクプログラム３１２の解釈、ロボット２００１，２００２の軌道データの生成、シミュレーション、ロボット２００１，２００２の動作制御等、後述するロボット教示方法の各工程を行わせるプログラムである。制御プログラム３１１は、ユーザによる変更が容易にはできないようになっている。
【００１８】
タスクプログラム３１２は、例えばロボット言語で記述されたテキストファイルであり、ユーザにより変更が可能となっている。タスクプログラム３１２は、ロボット２００１，２００２に行わせる一連の動作を指令する複数の動作指令、複数の動作指令を区分けする箇所を示す区間データなどで構成される。
【００１９】
各動作指令は、例えば「Ｍｏｖ  Ｐ１  Ｐ２」などのロボット言語で記述される。この例の場合、ＴＣＰを教示点Ｐ１から教示点Ｐ２に直線移動させる動作指令である。ＣＰＵ３０１は、タスクプログラム３１２により動作指令として指定された教示点を結ぶＴＣＰの軌道データを、タスクプログラム３１２により動作指令として指定された補間方法（例えば、直線補間や円弧補間等）により生成する。軌道データは、例えば１［ｍｓ］などの所定時間毎に指令するＴＣＰの位置及び姿勢のデータ（又は各関節の角度のデータ）の集合であり、速度情報を含んでいることになる。ＣＡＤデータ３１３は、ロボット２００１，２００２の形状データ、障害物７００の形状データ等である。
【００２０】
なお、第１実施形態では、コンピュータ読み取り可能な記録媒体が記憶部３０２であり、記憶部３０２に制御プログラム３１１が格納される場合について説明するが、これに限定するものではない。制御プログラム３１１は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されてもよい。例えば、制御プログラム３１１をコンピュータに供給するための記録媒体として、図２に示す記録ディスク３０４を用いてもよい。
【００２１】
生産ラインに配置されたロボット２００１，２００２によって物品を製造する前に、ロボット２００１，２００２を教示する、即ちタスクプログラム３１２を作成する必要がある。教示方法は、種々存在する。例えばオフライン教示でタスクプログラム３１２を仮作成し、実機において各ロボット２００１，２００２を動作させ、各ロボット２００１，２００２が周囲の物体に干渉しないかどうかの干渉確認を行い、タスクプログラム３１２を修正する方法などがある。
【００２２】
なお、オフライン教示の際、各ロボット２００１，２００２に対応する各仮想ロボットや障害物７００に対応する仮想障害物を表示装置５００に３Ｄグラフィックス表示するのが好ましい。そして、作業者が表示装置５００を見ながら入力装置４００を用いてＣＰＵ３０１に指示を入力するようにして、教示を支援するのが好ましい。
【００２３】
干渉確認は、図１の例では、ロボット２００１とロボット２００２との間、ロボット２００１と障害物７００との間、ロボット２００２と障害物７００との間で行う必要がある。つまり、各ロボットにおいて、周辺に配置された物体との干渉確認を行う必要がある。ロボット２００１に対しては、ロボット２００２及び障害物７００が周囲に配置された物体であり、ロボット２００２に対しては、ロボット２００１及び障害物７００が周囲に配置された物体である。ロボット２００１，２００２が部品などのワークを把持している場合は、把持しているワークも含めて干渉確認を行う必要がある。
【００２４】
予め記憶部３０２に記憶されているタスクプログラム３１２は、教示によって既に作成された、教示完了後のものとする。したがって、変更前のタスクプログラム３１２に従ってロボット２００１，２００２を動作させた場合、各ロボット２００１，２００２は、周辺のいずれの物体にも干渉しない。ＣＰＵ３０１は、作業者により教示ペンダント４０３の釦４１１が操作されると、タスクプログラム３１２に基づき軌道データを生成し、軌道データに従って各ロボット２００１，２００２を動作させることで、生産作業を行って物品を製造する。
【００２５】
ところで、教示が完了した後であっても、ロボットの動作の一部、つまり作成されたタスクプログラム３１２に含まれる複数の動作指令のうちの一部を変更することがある。動作指令を変更した場合、ロボットの動作が変更されるので、各ロボット２００１，２００２が周辺の物体に干渉しないようにしなければならない。
【００２６】
第１実施形態では、ＣＰＵ３０１は、ロボット２００１，２００２の制御が可能に構成され、かつ、シミュレーションによるオフライン教示が可能に構成されている。即ち、ＣＰＵ３０１は、ロボット２００１，２００２に一連の動作を行わせる実動作が実行可能であり、かつ、仮想ロボットに一連の動作を行わせるシミュレーションが実行可能に構成されている。
【００２７】
図３は、第１実施形態におけるロボット制御装置３００によるシミュレーションの説明図である。図３には、仮想空間ＲＩに配置された仮想ロボット２００Ｉ１，２００Ｉ２及び仮想障害物７００Ｉが模式的に図示されている。仮想ロボット２００Ｉ１はロボット２００１と対応し、仮想ロボット２００Ｉ２はロボット２００２と対応し、仮想障害物７００Ｉは障害物７００と対応している。ＣＰＵ３０１は、ＣＡＤデータ３１３に基づいて、図３に示すように、仮想空間ＲＩ内に仮想ロボット２００Ｉ１，２００Ｉ２及び仮想障害物７００Ｉを配置する。なお、第１実施形態では、ＣＰＵ３０１は、仮想ロボット２００Ｉ１，２００Ｉ２及び仮想障害物７００Ｉを作業者に認識できるように、表示装置５００に３Ｄグラフィックスによって表示させる。図３には、仮想ロボット２００Ｉ１，２００Ｉ２を３軸のロボットで簡略化して図示している。
【００２８】
ロボットの動作を変更する場合として、ロボット２００１の動作を変更する場合を例に説明する。図４は、第１実施形態に係るロボット教示方法の各工程を示すフローチャートである。ＣＰＵ３０１は、各ロボット２００１，２００２の一連の動作に対応する複数の動作指令を記憶部３０２から読み込むと共に（Ｓ１０１）、各ロボット２００１，２００２の複数の動作指令を区切る区間を記憶部３０２から読み込む（Ｓ１０２）。なお、動作指令及び区間のデータは、タスクプログラム３１２に記述されているので、ステップＳ１０１，Ｓ１０２においては、タスクプログラム３１２を読み込むこととなる。
【００２９】
以下、ステップＳ１０１及びステップＳ１０２の処理について具体的に説明する。図５（ａ）は、第１実施形態におけるロボットの軌道生成を説明するための図である。ＣＰＵ３０１は、ステップＳ１０１において、ロボット２００１に行わせる複数の動作指令ＣＭＡ１，ＣＭＡ２，ＣＭＡ３，…、及びロボット２００２に行わせる複数の動作指令ＣＭＢ１，ＣＭＢ２，ＣＭＢ３，…を記憶部３０２から取得する。ＣＰＵ３０１は、ステップＳ１０２において、複数の動作指令ＣＭＡ１，ＣＭＡ２，ＣＭＡ３，…を、予め決められた区間Ｓ１，Ｓ２毎に１つ以上の動作指令を含む複数の指令セットＣＳＡ１，ＣＳＡ２に分ける。同様に、ＣＰＵ３０１は、ステップＳ１０２において、複数の動作指令ＣＭＢ１，ＣＭＢ２，ＣＭＢ３，・・・を、予め決められた区間Ｓ１，Ｓ２毎に１つ以上の動作指令を含む複数の指令セットＣＳＢ１，ＣＳＢ２に分ける。つまり、ＣＰＵ３０１は、図５（ａ）に示すように、同じ時間帯でロボット２００１，２００２を動作させる区間Ｓ１，Ｓ２毎に、複数の動作指令を複数の指令セットＣＳＡ１，ＣＳＡ２及び複数の指令セットＣＳＢ１，ＣＳＢ２に分ける。なお、タスクプログラム３１２において、複数の指令セットに分けた状態でこれら動作指令が記録されていてもよい。この場合、ＣＰＵ３０１は、複数の指令セットを記憶部３０２から読み込むことになる。
【００３０】
次に、ＣＰＵ３０１は、区間毎に各ロボット２００１，２００２の軌道データを生成する（Ｓ１０３）。図５（ｂ）は、第１実施形態におけるロボットの軌道生成を説明するための図である。ここで、図５（ｂ）に示すように、一連の動作ＭＡ、ＭＢに対応する一連の軌道データＴＡ，ＴＢの各々は、ロボット２００１，２００２の各々に個別に割り当てたものである。
【００３１】
ＣＰＵ３０１は、ステップＳ１０３において、複数の指令セットＣＳＡ１，ＣＳＡ２に基づき、ロボット２００１の一連の軌道データＴＡを区間Ｓ１，Ｓ２で区切った複数の軌道データＴＡ１，ＴＡ２を生成する。同様に、ＣＰＵ３０１は、指令セットＣＳＢ１，ＣＳＢ２に基づき、ロボット２００２の一連の軌道データＴＢを区間Ｓ１，Ｓ２で区切った複数の軌道データＴＢ１，ＴＢ２を生成する。つまり、ＣＰＵ３０１は、指令セットＣＳＡ１に基づき軌道データＴＡ１を生成し、指令セットＣＳＡ２に基づき軌道データＴＡ２を生成し、指令セットＣＳＢ１に基づき軌道データＴＢ１を生成し、指令セットＣＳＢ２に基づき軌道データＴＢ２を生成する。
【００３２】
このように、複数の動作指令ＣＭＡ１，ＣＭＡ２，ＣＭＡ３，…に基づく一連の軌道データＴＡは、複数の軌道データＴＡ１，ＴＡ２に分けられて生成される。同様に、複数の動作指令ＣＭＢ１，ＣＭＢ２，ＣＭＢ３，…に基づく一連の軌道データＴＢは、複数の軌道データＴＢ１，ＴＢ２に分けられて生成される。各軌道データＴＡ１，ＴＡ２，ＴＢ１，ＴＢ２は、記憶部３０２に記憶された、ロボットの各関節の回転速度や回転加速度などの制約条件を超えない範囲で算出される。
【００３３】
区間Ｓ１において、軌道データＴＡ１に従ってロボット２００１を動作させることで、ロボット２００１に部分動作ＭＡ１を行わせることができる。また、区間Ｓ１において、軌道データＴＢ１に従ってロボット２００２を動作させることで、ロボット２００２に部分動作ＭＢ１を行わせることができる。
【００３４】
同様に、区間Ｓ２において、軌道データＴＡ２に従ってロボット２００１を動作させることで、ロボット２００１に部分動作ＭＡ２を行わせることができる。また、区間Ｓ２において、軌道データＴＢ２に従ってロボット２００２を動作させることで、ロボット２００２に部分動作ＭＢ２を行わせることができる。
【００３５】
このように、第１実施形態では、ロボット２００１の一連の動作ＭＡは、複数の部分動作ＭＡ１，ＭＡ２からなり、ロボット２００１の一連の動作ＭＢは、複数の部分動作ＭＢ１，ＭＢ２からなる。
【００３６】
ここで、区間Ｓ１，Ｓ２は、タスクプログラム３１２において、各ロボット２００１，２００２の通過領域が物体に干渉しないように設定されている。つまり、ロボット２００１とロボット２００２、ロボット２００１と障害物７００、ロボット２００２と障害物７００が干渉しないように予め区切られている。区切る箇所の設定は、前に行った教示の際に作業者が行っている。各区間Ｓ１，Ｓ２において、各ロボット２００１，２００２が物体に干渉しないので、ロボット２００１，２００２同士を同期させる必要はない。即ち、ステップＳ１０３において、ロボット２００１，２００２間の同期を考慮する必要はなく、各ロボット２００１，２００２個別に軌道データＴＡ１，ＴＡ２及び軌道データＴＢ１，ＴＢ２を算出すればよい。
【００３７】
以上、ステップＳ１０１，Ｓ１０２，Ｓ１０３により、一連の動作ＭＡ，ＭＢに対応する一連の軌道データＴＡ，ＴＢを、複数の軌道データＴＡ１，ＴＡ２及び複数の軌道データＴＢ１，ＴＢ２に分けて生成する。なお、これら一連の軌道データＴＡ，ＴＢは、予め記憶部３０２に記憶されていてもよい。この場合、ＣＰＵ３０１は、記憶部３０２から一連の軌道データＴＡ，ＴＢを読み込むだけでよい。
【００３８】
次に、ＣＰＵ３０１は、シミュレーションにより、各軌道データＴＡ１，ＴＡ２に基づき、仮想ロボット２００Ｉ１が通過する領域をそれぞれ計算して生成する（Ｓ１０４）。同様に、ＣＰＵ３０１は、シミュレーションにより、各軌道データＴＢ１，ＴＢ２に基づき、仮想ロボット２００Ｉ２が通過する領域をそれぞれ計算して生成する（Ｓ１０４）。つまり、ステップＳ１０４の段階では、いずれの軌道データＴＡ１，ＴＡ２，ＴＢ１，ＴＢ２が変更されるのか不明である。このため、全ての軌道データＴＡ１，ＴＡ２，ＴＢ１，ＴＢ２に基づく仮想ロボット２００Ｉ１，２００Ｉ２の通過領域を、変更前の通過領域として求めておく。
【００３９】
以下、例えば図５（ａ）における動作指令ＣＭＡ３が変更されるものとして説明する。ステップＳ１０４では、変更前の軌道データＴＡ１に基づく仮想ロボット２００Ｉ１の通過領域を生成していることになる。図５（ｃ）は、第１実施形態におけるロボット制御装置３００によるシミュレーションの説明図である。図５（ｃ）には、変更前の軌道データＴＡ１に基づく仮想ロボット２００Ｉ１と、同じ区間Ｓ１の軌道データＴＢ１に基づく仮想ロボット２００Ｉ２の動作を模式的に図示している。ＣＰＵ３０１は、ステップＳ１０４において、変更前の軌道データＴＡ１に従って仮想ロボット２００Ｉ１を仮想的に動作させたときの仮想ロボット２００Ｉ１の軌跡から、仮想ロボット２００Ｉ１が通過した第１の領域である通過領域Ｒ１を求める。
【００４０】
具体的には、図５（ｃ）に示すように、軌道データＴＡ１の始点ＳＡから終点ＧＡまで仮想ロボット２００Ｉ１を仮想空間ＲＩにおいて仮想的に動作させ、空間掃引によって通過領域Ｒ１を生成する。仮想ロボット２００Ｉ１は、ロボット２００１の形状データを含むＣＡＤデータ３１３を用いてポリゴンの集合体で表現される。通過領域Ｒ１は、軌道データＴＡ１を用いて、ポリゴンの集合体を仮想空間ＲＩ内で動作させることで求められる。なお、移動体の通過領域を求める手法としては、例えば、Ｓｗｅｐｔ  Ｖｏｌｕｍｅ生成の手法や、通過領域を立方体や球体などの簡易な形状へ近似する手法などを用いることができる。
【００４１】
次に、ＣＰＵ３０１は、作業者の操作による入力装置４００からの入力指示に従って、動作指令を変更する（Ｓ１０５）。図６（ａ）は、第１実施形態におけるロボットの軌道生成を説明するための図である。ＣＰＵ３０１は、例えば動作指令ＣＭＡ３を、図６（ａ）に示すように、動作指令ＣＭＡ３Ａに変更する。これにより、指令セットＣＳＡ１は、指令セットＣＳＡ１Ａに変更される。
【００４２】
動作指令が変更された、即ちロボットの動作が変更された場合、ＣＰＵ３０１は、干渉確認工程の一例として、ステップＳ１０６〜Ｓ１０９の処理を実行する。以下、各ステップＳ１０６〜Ｓ１０９について具体的に説明する。ＣＰＵ３０１は、変更後の動作指令を含む指令セットに基づき、変更後の部分動作として変更後の軌道データを生成する（Ｓ１０６）。図６（ｂ）は、第１実施形態におけるロボットの軌道生成を説明するための図である。ＣＰＵ３０１は、動作指令ＣＭＡ３Ａを含む、区間Ｓ１における指令セットＣＳＡ１Ａに基づき、図６（ｂ）に示すように、変更後の軌道データＴＡ１Ａを生成する。変更後の軌道データＴＡ１Ａに従ってロボット２００１を動作させれば、変更後の部分動作ＭＡ１Ａとなる。これにより、ロボット２００１に対する一連の軌道データＴＡは、一連の軌道データＴＡＡに変更される。つまり、ロボット２００１の一連の動作ＭＡが、一連の動作ＭＡＡに変更される。
【００４３】
次にＣＰＵ３０１は、変更後の軌道データＴＡ１Ａに従って仮想空間ＲＩにおいて仮想ロボット２００Ｉ１を仮想的に動作させたときの仮想ロボット２００Ｉ１の軌跡から仮想ロボット２００Ｉ１が通過した第２の領域である通過領域Ｒ２を求める（Ｓ１０７）。
【００４４】
次にＣＰＵ３０１は、通過領域Ｒ１と通過領域Ｒ２とを比較する。具体的には、ＣＰＵ３０１は、通過領域Ｒ１が通過領域Ｒ２を包含するかしないかを判断する（Ｓ１０８）。図７（ａ）及び図７（ｂ）は、第１実施形態におけるロボット制御装置３００によるシミュレーションの説明図である。図７（ａ）には、通過領域Ｒ１が通過領域Ｒ２の全部を包含する場合を図示し、図７（ｂ）には、通過領域Ｒ１が通過領域Ｒ２の一部を包含しない場合を図示している。
【００４５】
ＣＰＵ３０１は、図７（ａ）に示すように、通過領域Ｒ１が通過領域Ｒ２の全てを包含する場合（Ｓ１０８：Ｙｅｓ）、干渉確認は行わず、そのまま教示を終了する。これにより、ロボット２００１，２００２を用いて物品の製造を行うことが可能となる。つまり、ＣＰＵ３０１は、教示ペンダント４０３の釦４１１の操作による入力指示を受け付け可能となり、入力指示を受け付けた際には、タスクプログラム３１２に従ってロボット２００１，２００２を動作させ、生産作業を行わせる。
【００４６】
ＣＰＵ３０１は、図７（ｂ）に示すように、通過領域Ｒ１が通過領域Ｒ２の一部を包含しない場合（Ｓ１０８：Ｎｏ）、ロボット２００１を動作させて、ロボット２００１が周囲の物体に干渉するかどうかを確認する干渉確認の処理を行う（Ｓ１０９）。この場合、通過領域Ｒ２には、通過領域Ｒ１と重ならない領域Ｒ１１，Ｒ１２が存在する。
【００４７】
以下、ステップＳ１０９の干渉確認の処理について具体的に説明する。図８は、第１実施形態に係るロボット教示方法における干渉確認の処理を示すフローチャートである。ＣＰＵ３０１は、図４のステップＳ１０８で通過領域Ｒ１が通過領域Ｒ２の一部を包含しないと判断した場合には（Ｓ１０８：Ｎｏ）、干渉確認が必要であることが作業者にわかる警告を示す画像を表示装置５００に表示させる（Ｓ１１１）。これにより、作業者は、表示装置５００を見ることで、干渉確認が必要であることがわかる。
【００４８】
ここで、第１実施形態では、干渉確認が必要な区間Ｓ１の軌道データＴＡ１Ａについて、干渉確認を実施しなければロボット２００１，２００２による生産作業を実施しないようになっている。具体的には、図１に示す教示ペンダント４０３の釦４１１は、生産作業開始の指示をロボット制御装置３００に入力する釦である。ロボット制御装置３００のＣＰＵ３０１は、釦４１１が操作されても、その入力指示を受け付けず、ロボット２００１，２００２による生産作業を実施しない。これにより、干渉確認の漏れをなくすことが可能となる。
【００４９】
ＣＰＵ３０１は、図１に示す教示ペンダント４０３の釦４１０が操作されたかどうかを判断する（Ｓ１１２）。即ち、ＣＰＵ３０１は、入力装置４００からの入力指示を受け付けたかどうかを判断する。ＣＰＵ３０１は、釦４１０が操作されなければ（Ｓ１１２：Ｎｏ）、そのまま待機する。ＣＰＵ３０１は、釦４１０が操作された場合、即ち入力装置４００からの入力指示を受け付けた場合（Ｓ１１２：Ｙｅｓ）、干渉確認のために実機のロボット２００１の動作を開始する（Ｓ１１３）。
【００５０】
具体的に説明すると、ＣＰＵ３０１は、ロボット２００１を変更後の軌道データＴＡ１Ａの始点ＳＡに動作させた後、変更後の軌道データＴＡ１Ａに従ってロボット２００１を実動作させる。即ち、ＣＰＵ３０１は、ロボット２００１に一連の動作ＭＡＡのうちの変更後の部分動作ＭＡ１Ａのみを行わせる。ここで、ＣＰＵ３０１は、干渉確認のために動作させるロボット以外のロボット２００２を、軌道データＴＢ１に含まれる教示点のうち、いずれかの点に移動させて、そのときの姿勢（所定姿勢）で停止させておく。つまり、ロボット２００２を所定姿勢に停止させた状態でロボット２００１を動作させる。
【００５１】
また、このとき、ＣＰＵ３０１は、変更後の軌道データＴＡ１Ａに基づく速度よりも低速で、変更後の部分動作ＭＡ１Ａをロボット２００１に行わせる。これにより、ロボット２００１が物体に干渉する（例えば物体に衝突や接触する）ときの衝撃力を低下させることができる。
【００５２】
なお、教示ペンダント４０３の釦４１０を例に説明したが、入力装置４００において作業者が操作可能なものであれば、これに限定するものではない。ＣＰＵ３０１は、作業者の操作により入力装置４００からの入力指示を受け付けてから、ロボット２００１の動作を開始すればよい。
【００５３】
また、表示装置５００に警告を示す画像を表示させ、入力装置４００からの入力指示を受け付けてから、ロボット２００１を動作させる場合について説明したが、これに限定するものではない。例えば、通過領域Ｒ１が通過領域Ｒ２の一部を包含していない場合（Ｓ１０８：Ｎｏ）には、入力装置４００からの入力指示がなくても、ロボット２００１を動作させるようにしてもよい。この場合、表示装置５００における警告の表示は、省略してもよい。
【００５４】
ＣＰＵ３０１は、ロボット２００１の動作を開始した後、ロボット２００１において干渉が発生したかどうかを判断する（Ｓ１１４）。ロボット２００１において干渉が発生したかどうかの判断は、センサ等を用いることで行うことができる。例えばロボット２００１に設けられた不図示の力センサや、ロボット２００１又はロボット２００１の近傍に設けられた不図示の視覚センサの検知結果に基づいて行うことが可能である。なお、作業者が目視により確認し、ロボット２００１において干渉が発生したときに作業者が入力装置４００を操作することで、干渉が発生したことをＣＰＵ３０１に通知してもよい。
【００５５】
ＣＰＵ３０１は、干渉が発生していなければ（Ｓ１１４：Ｎｏ）、ロボット２００１の部分動作ＭＡ１Ａが終了したかどうかを判断する（Ｓ１１５）。即ち、ＣＰＵ３０１は、ロボット２００１を軌道データＴＡ１Ａの終点ＧＡまで動作させたかどうかを判断する。ロボット２００１が終点ＧＡに到達していなければ、即ちロボット２００１の動作が終了していなければ（Ｓ１１５：Ｎｏ）、ステップＳ１１４に戻って判断を繰り返す。
【００５６】
ＣＰＵ３０１は、ロボット２００１の動作が終了していれば（Ｓ１１５：Ｙｅｓ）、ロボット２００１において干渉は発生していないので、干渉していない旨を表示装置５００に表示させ（Ｓ１１６）、教示を終了する。これにより、作業者は、干渉しないことを認識することができる。また、ＣＰＵ３０１は、釦４１１の操作による入力指示を受け付け可能となる。
【００５７】
ＣＰＵ３０１は、干渉が発生した場合（Ｓ１１４：Ｙｅｓ）、直ちにロボット２００１を停止させ（Ｓ１１７）、干渉が発生した旨を表示装置５００に表示させる（Ｓ１１８）。これにより、作業者は、干渉が発生したことを認識することができる。そして、作業者が入力装置４００を操作して動作指令を変更した場合には、ＣＰＵ３０１は、図４のステップＳ１０５に戻り、同様の処理を繰り返す。以上、ロボット２００１において干渉が発生していない場合は、生産作業を再開することができる。
【００５８】
以上、第１実施形態によれば、通過領域Ｒ１が通過領域Ｒ２を包含する場合には、干渉確認が省略されるので、ロボット２００１，２００２の教示に要する時間を短縮することができる。また、通過領域Ｒ１が通過領域Ｒ２の一部でも包含しない場合には、ロボット２００１，２００２の干渉確認を行う。この場合も、変更した区間のみ干渉確認を行うので、干渉確認の作業を最小限にすることができ、ロボット２００１，２００２の教示に要する時間を短縮することができる。
【００５９】
［第２実施形態］
次に、第２実施形態に係るロボット教示方法及び装置について説明する。図９は、第２実施形態におけるロボット制御装置によるシミュレーションの説明図である。なお、第２実施形態におけるロボットシステムの構成は、上記第１実施形態と同様であり、説明を省略する。第２実施形態では、図４に示すステップＳ１０３の処理が第１実施形態と異なる。第２実施形態において、ステップＳ１０３以外のステップは、上記第１実施形態と同様であるため、説明を省略する。第１実施形態では、通過領域Ｒ１が、仮想ロボット２００Ｉ１が通過した領域であるのが好適であるとして説明したが、これに限定するものではない。通過領域Ｒ１は、仮想ロボット２００Ｉ１が通過した領域を含む領域であってもよい。即ち、通過領域Ｒ１は、仮想ロボット２００Ｉ１が通過した領域が半分以上を占めており、仮想ロボット２００Ｉ１が通過した領域よりもわずかに広い領域であってもよい。
【００６０】
図９では、図５（ｃ）と同様、変更前の部分動作ＭＡ１に対応する軌道データＴＡ１を例に図示している。図９中、領域Ｒ０は、仮想ロボット２００Ｉ１を軌道データＴＡ１に従って動作させたときに仮想ロボット２００Ｉ１が通過する領域である。第２実施形態では、通過領域Ｒ１は、領域Ｒ０よりも拡張された領域に設定される。
【００６１】
ロボット２００１（図１参照）において干渉する可能性が極めて低い場合には、入力装置４００による作業者の入力指示により、通過領域Ｒ１を領域Ｒ０よりも拡張することができる。例えば、図９に示すように、領域Ｒ０に対して、所定量Ｏだけポリゴンの垂直方向に領域を拡張して、通過領域Ｒ１として設定する。なお、図９では、一律に所定量Ｏだけ拡張する場合を例示したが、これに限定するものではなく、部分的に拡張してもよい。
【００６２】
［第３実施形態］
次に、第３実施形態に係るロボット教示方法及び装置について説明する。図１０は、第３実施形態に係るロボット教示方法における干渉確認の処理を示すフローチャートである。図１１は、第３実施形態におけるロボット制御装置によるシミュレーションの説明図である。なお、第３実施形態におけるロボットシステムの構成は、上記第１実施形態と同様であり、説明を省略する。第３実施形態では、図８に示すステップＳ１１２とステップＳ１１３との間に、ステップＳ３０１の処理を行うものである。
【００６３】
即ち、ＣＰＵ３０１は、ステップＳ３０１において、干渉確認が必要な一部の動作として、通過領域Ｒ２が通過領域Ｒ１と重ならない部分の領域Ｒ１１，Ｒ１２の動作を抽出する。そして、ＣＰＵ３０１は、次のステップＳ１１３において、変更後の部分動作ＭＡ１Ａ（図６（ｂ））のうち、通過領域Ｒ２が通過領域Ｒ１と重ならない部分の領域Ｒ１１，Ｒ１２の動作を、ロボット２００１に行わせる。具体的には、ＣＰＵ３０１は、ロボット２００１に領域Ｒ１１の動作を行わせた後、領域Ｒ１２の動作を行わせる。
【００６４】
このように、第３実施形態では、干渉確認において、変更後の部分動作ＭＡ１Ａ（図６（ｂ））のうち、領域Ｒ１１，Ｒ１２に対する一部の動作のみを行わせる。もちろん、領域Ｒ１１に対する軌道データの始点に移動させる動作も含んでいる。これにより、第１実施形態及び第２実施形態のように変更後の部分動作ＭＡ１Ａ（図６（ｂ））の全てをロボット２００１に行わせるよりも、干渉確認に要する時間を更に短縮することができ、もって教示に要する時間を更に短縮することができる。
【００６５】
なお、ステップＳ３０１の処理を行うタイミングは、図１０に示すステップＳ１１２とステップＳ１１３との間に限定するものではなく、ステップＳ１１３よりも前であれば、どのタイミングで行ってもよい。
【００６６】
［第４実施形態］
次に、第４実施形態に係るロボット教示方法及び装置について説明する。図１２は、第４実施形態に係るロボット教示方法における干渉確認の処理を示すフローチャートである。図１３は、第４実施形態におけるロボット制御装置によるシミュレーションの説明図である。なお、第４実施形態におけるロボットシステムの構成は、上記第１実施形態と同様であり、説明を省略する。第４実施形態では、図１０に示すステップＳ３０１とステップＳ１１３との間に、ステップＳ４０１の処理を行うものである。
【００６７】
即ち、ＣＰＵ３０１は、ステップＳ４０１において、変更後の軌道データＴＡ１Ｔが含まれる区間Ｓ１（図６（ｂ）参照）におけるロボット２００２に対する教示点を求める。具体的に説明すると、ＣＰＵ３０１は、仮想ロボット２００Ｉ１と仮想ロボット２００Ｉ２との距離が最小となるときの仮想ロボット２００Ｉ２の仮想姿勢に対応する教示点ＰＮを求める。
【００６８】
そして、ＣＰＵ３０１は、ステップＳ１１３において、ロボット２００２をステップＳ４０１で求めた教示点ＰＮに動作させ、そのときの姿勢（所定姿勢）で停止させる。これにより、ＣＰＵ３０１は、仮想ロボット２００Ｉ１と仮想ロボット２００Ｉ２との距離が最小となるときの仮想ロボット２００Ｉ２の仮想姿勢に対応する実姿勢にロボット２００２を動作させることになる。これにより、ロボット２００２は、干渉確認をするのに適した姿勢をとることができる。
【００６９】
このように、第４実施形態では、仮想ロボット２００Ｉ１，２００Ｉ２同士が最も近接する干渉確認用の教示点ＰＮを求め、この教示点ＰＮの位置にロボット２００２を停止させておく。これにより、ロボット２００１，２００２同士のクリアランスが狭く、干渉確認に適した状態を再現することが容易となる。
【００７０】
ここで、タスクプログラム３１２に記録されている教示点の位置にロボット２００２を所定姿勢に停止させることも考えられる。また、ロボット２００２を軌道データに従って動作させているときに作業者が目視しながら教示ペンダント４０３を用いてロボット２００２を所定姿勢に停止させることも考えられる。第４実施形態によれば、これらの方法と比べても、ロボット２００２を干渉確認に適した姿勢に容易に再現することができる。また、ＣＰＵ３０１が教示点ＰＮを自動で計算するので、作業者が目視しながら教示ペンダント４０３を用いてロボット２００２を停止させる場合に比べ、作業者の負担が大幅に減り、干渉確認に要する時間を短縮することができる。
【００７１】
なお、ステップＳ４０１の処理を行うタイミングは、図１２に示すステップＳ３０１とステップＳ１１３との間に限定するものではなく、ステップＳ１１３よりも前であれば、どのタイミングで行ってもよい。
【００７２】
なお第４実施形態では、仮想ロボット２００Ｉ１，２００Ｉ２同士が最も接近する教示点ＰＮを求める場合について説明したが、これに限定するものではない。例えば、仮想ロボット２００Ｉ１，２００Ｉ２同士の距離が閾値以下となる範囲の中から教示点を求めるようにしてもよい。
【００７３】
本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されない。
【００７４】
上述の実施形態では、ロボットが垂直多関節のロボットの場合について説明したが、これに限定するものではない。ロボットが、例えば、水平多関節のロボット、パラレルリンクのロボット、直交ロボット等、種々のロボットについて本発明は適用可能である。
【００７５】
また、上述の実施形態では、ロボット制御装置３００の１つのＣＰＵ３０１により、シミュレーションと実機の制御を行う場合について説明したが、これに限定するものではなく、複数のＣＰＵ（又はコア）で処理を分担して行ってもよい。例えば、ロボット制御装置３００が、シミュレーションを行うシミュレータと、実機を制御するコントローラとを有し、シミュレータとコントローラとの間で通信可能に接続されていてもよい。この場合、コントローラが軌道データを計算し、シミュレータが軌道データをコントローラから受け取って、通過領域Ｒ１，Ｒ２を計算し、通過領域Ｒ１と通過領域Ｒ２との比較を行ってもよい。そして、通過領域Ｒ１が通過領域Ｒ２を包含しない場合には、コントローラが、軌道データに従ってロボットを動作させればよい。
【００７６】
また、上述の実施形態では、複数のロボットとして、２つのロボットを例に説明したが、３つ以上のロボットの場合でも、同様の手順で干渉確認の要否を判断することができる。また、ロボットシステムが複数のロボットを備える場合に好適であるが、１つのロボットのみを備える場合であっても、本発明は適用可能である。
【００７７】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７８】
１００…ロボットシステム、２００１，２００２…ロボット、２００Ｉ１，２００Ｉ２…仮想ロボット、３００…ロボット制御装置（処理部）、３１１…制御プログラム（プログラム）、３５０…ロボット制御システム（ロボット教示装置）、４００…入力装置（入力部）、５００…表示装置（表示部）
【図１】
2019084648.tif 000003
【図２】
2019084648.tif 000004
【図３】
2019084648.tif 000005
【図４】
2019084648.tif 000006
【図５】
2019084648.tif 000007
【図６】
2019084648.tif 000008
【図７】
2019084648.tif 000009
【図８】
2019084648.tif 000010
【図９】
2019084648.tif 000011
【図１０】
2019084648.tif 000012
【図１１】
2019084648.tif 000013
【図１２】
2019084648.tif 000014
【図１３】
2019084648.tif 000015