(57)【特許請求の範囲】
【請求項１】
ロボットを使用した組み立てセルにおけるロボットが行う独立した作業を単位とした作業ブロックを実行順に接続して工程フローを作成し、工程フローからロボットプログラムを生成するロボットプログラミング装置であって、
停止ブロック検出手段で検出された停止ブロックと、表示手段に表示した前記停止ブロックを考慮した外部入力に従って実行ブロック指定手段から得られる停止状態から実行する実行ブロックとの位置情報とハンド状態とセンサ状態をそれぞれ比較して、前記停止ブロックの停止状態を起点として前記実行ブロックを実行するための一時実行プログラムおよび一時実行作業指示を生成し、前記表示手段に前記一時実行作業指示を表示すると共に、入出力手段から前記一時実行プログラムを出力する工程再構築手段を備えたことを特徴とするロボットプログラミング装置。
【請求項２】
ロボットを使用した組み立てセルにおけるロボットが行う独立した作業を単位とした作業ブロックを実行順に接続して工程フローを作成し、工程フローからロボットプログラムを生成する編集手段を備えたロボットプログラミング装置であって、
工程再構築手段、実行ブロック指定手段、停止ブロック検出手段、表示手段及び入出力手段をさらに備え、
前記編集手段は、それぞれロボットプログラム、動作開始前と終了後のそれぞれの初期位置とハンド状態とセンサ状態を含む作業ブロックを定義して前記工程フローを作成し、
前記停止ブロック検出手段は、ロボット制御またはシミュレーション時の動作停止時に、前記入出力手段を介して外部からのロボット停止状態、ハンド状態、センサ状態を検出して前記工程再構築手段に送り、
前記工程再構築手段は、前記ロボット停止状態を前記編集手段に送り停止ブロックを求めさせ、前記停止ブロック、ロボット停止状態、ハンド状態、センサ状態を前記表示手段に表示させ、前記停止ブロックと、前記表示手段の表示を考慮した外部入力に従って前記実行ブロック指定手段から得られる停止状態から実行する実行ブロックとの位置情報とハンド状態とセンサ状態をそれぞれ比較して、前記停止ブロックの停止状態を起点として前記実行ブロックを実行するための一時実行プログラムおよび一時実行作業指示を生成し、前記表示手段に前記一時実行作業指示を表示すると共に、前記入出力手段から前記一時実行プログラムを出力する、
ことを特徴とするロボットプログラミング装置。
【請求項３】
複数のロボットから構成される組み立てセルにおいて、ロボット間で同期が設定されている場合に、
ロボットの同期動作時の待避位置を指定する待避位置指定手段をさらに備え、
前記編集手段は、前記作業ブロックと、ロボット間で同期を設定する前記待避位置を含む同期ブロックと、を定義して前記工程フローを作成し、
前記停止ブロック検出手段は、ロボット制御またはシミュレーション時の動作停止時に、ロボット毎に前記入出力手段を介して外部からのロボット停止状態、ハンド状態、センサ状態を検出して前記工程再構築手段に送り、
前記工程再構築手段は、各ロボットに関して、前記ロボット停止状態を前記編集手段に送りに停止ブロックを求めさせ、前記停止ブロック、ロボット停止状態、ハンド状態、センサ状態を前記表示手段に表示させ、前記停止ブロックと、前記表示手段の表示を考慮した外部入力に従って前記実行ブロック指定手段から得られる停止状態から実行する実行ブロックとの位置情報とハンド状態とセンサ状態をそれぞれ比較して、前記停止ブロックの停止状態を起点として前記実行ブロックを実行するための一時実行プログラムおよび一時実行作業指示をロボット毎に同期区間単位で生成し、前記表示手段に前記一時実行作業指示を表示すると共に、前記入出力手段から前記一時実行プログラムを出力する、
ことを特徴とする請求項２に記載のロボットプログラミング装置。
【請求項４】
前記工程再構築手段がさらに、実行ブロックを指定しないロボットのための待避プログラムおよび待避作業指示をロボット毎に同期区間単位で生成し、前記表示手段に前記一時実行作業指示と共に前記待避作業指示を表示し、前記入出力手段から前記一時実行プログラムと共に前記待避プログラムを出力することを特徴とする請求項３に記載のロボットプログラミング装置。
【請求項５】
エラーの発生またはイベントの発生によりロボットプログラムが停止した際に復帰させる場合に、前記実行ブロック指定手段から復帰時に再実行する実行ブロックが得られ、前記工程再構築手段が復帰のための前記各プログラムおよび作業指示を生成することを特徴とする請求項２から４までのいずれか１項に記載のロボットプログラミング装置。
【請求項６】
組み立てセルの立ち上げにおいて、動作を確認するために特定の工程の動作を複数回繰り返す場合に、前記実行ブロック指定手段から前記特定の工程の動作の実行ブロックが得られ、前記工程再構築手段が前記特定の工程の動作のための前記各プログラムおよび作業指示を生成することを特徴とする請求項２から４までのいずれか１項に記載のロボットプログラミング装置。
【請求項７】
ロボットを使用した組み立てセルにおけるロボットが行う独立した作業を単位とした作業ブロックを実行順に接続して工程フローを作成し、工程フローからロボットプログラムを生成するロボットプログラミング方法において、
検出された停止ブロックと、表示手段に表示した前記停止ブロックを考慮した外部入力に従って得られる停止状態から実行する実行ブロックとの位置情報とハンド状態とセンサ状態をそれぞれ比較して、前記停止ブロックの停止状態を起点として前記実行ブロックを実行するための一時実行プログラムおよび一時実行作業指示を生成し、前記表示手段に前記一時実行作業指示を表示すると共に、入出力手段から前記一時実行プログラムを出力することを特徴とするロボットプログラミング方法。
【請求項８】
ロボットを使用した組み立てセルにおけるロボットが行う独立した作業を単位とした作業ブロックを実行順に接続して工程フローを作成し、工程フローからロボットプログラムを生成するロボットプログラミング方法であって、
それぞれロボットプログラム、動作開始前と終了後のそれぞれの初期位置とハンド状態とセンサ状態を含む作業ブロックを定義して前記工程フローを作成する工程と、
ロボット制御またはシミュレーション時の動作停止時に、入出力手段を介して外部からのロボット停止状態、ハンド状態、センサ状態を検出する工程と、
前記ロボット停止状態から停止ブロックを求める工程と、
前記停止ブロック、ロボット停止状態、ハンド状態、センサ状態を表示手段に表示させる工程と、
前記停止ブロックと、前記表示手段の表示を考慮した外部入力に従って得られる停止状態から実行する実行ブロックとの位置情報とハンド状態とセンサ状態をそれぞれ比較して、前記停止ブロックの停止状態を起点として前記実行ブロックを実行するための一時実行プログラムおよび一時実行作業指示を生成する工程と、
前記表示手段に前記一時実行作業指示を表示する工程と、
前記入出力手段から前記一時実行プログラムを出力する工程と、
を備えたことを特徴とするロボットプログラミング方法。
【請求項９】
複数のロボットから構成される組み立てセルにおいて、ロボット間で同期が設定されている場合に、
ロボットの同期動作時の待避位置を指定する工程をさらに備え、
前記工程フローを作成する工程で、前記作業ブロックと、ロボット間で同期を設定する前記待避位置を含む同期ブロックと、を定義して工程フローを作成し、
前記ロボット停止状態、ハンド状態、センサ状態を検出する工程で、ロボット制御またはシミュレーション時の動作停止時に、ロボット毎に前記入出力手段を介して外部からのロボット停止状態、ハンド状態、センサ状態を検出し、
前記停止ブロックを求める工程と前記停止ブロック、前記ロボット停止状態、ハンド状態、センサ状態を表示させる工程を各ロボットに関して行い、
前記一時実行プログラムおよび一時実行作業指示を生成する工程で、一時実行プログラムおよび一時実行作業指示をロボット毎に同期区間単位で生成し、
前記一時実行作業指示を表示する工程および一時実行プログラムを出力する工程で、各ロボットに関してそれぞれ前記一時実行作業指示の表示、前記一時実行プログラムの出力を行う、
ことを特徴とする請求項８に記載のロボットプログラミング方法。
【請求項１０】
前記一時実行プログラムおよび一時実行作業指示を生成する工程で、実行ブロックを指定しないロボットのための待避プログラムおよび待避作業指示をロボット毎に同期区間単位でさらに生成し、
前記一時実行作業指示を表示する工程で、前記表示手段に前記待避作業指示を前記一時実行作業指示と共に表示し、
前記一時実行プログラムを出力する工程で、前記入出力手段から前記待避プログラムを前記一時実行作業指示と共に出力する、
ことを特徴とする請求項９に記載のロボットプログラミング方法。
【請求項１１】
エラーの発生またはイベントの発生によりロボットプログラムが停止した際に復帰させる場合に、復帰時に再実行する実行ブロックを得て、復帰のための前記各プログラムおよび作業指示を生成することを特徴とする請求項８から１０までのいずれか１項に記載のロボットプログラミング方法。
【請求項１２】
組み立てセルの立ち上げにおいて、動作を確認するために特定の工程の動作を複数回繰り返す場合に、前記特定の工程の動作の実行ブロックを得て、前記特定の工程の動作のための前記各プログラムおよび作業指示を生成することを特徴とする請求項８から１０までのいずれか１項に記載のロボットプログラミング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ロボットを使用した組立てセルを構築する際のロボットのためのロボットプログラミング装置およびその方法に関する。
【背景技術】
【０００２】
ロボットを用いた組み立てセルでは、組み付け時の部品の僅かなズレなどでエラーが発生してシステムが停止することがある。このような停止状態から復帰する場合に、従来ではティーチングボックスを用いて手作業でロボットを動かして復帰を行うか、ロボットプログラムの中に復帰処理を作り込んでいた。
【０００３】
また、ロボットを用いた組み立て作業では、部品を組み付ける際に、単純な１方向の差し込みだけではなく、斜め方向から差し込み押しつける、といったような３次元的な動作を伴う処理がある。このため、組み付け動作の確認において、繰り返しロボットを動作させて複数の視点からロボットの動きを確認していた。この繰り返し動作のために、従来ではティーチングボックスを用いて手作業でロボットを動かして、指定した終了工程から指定した開始工程への復帰を行うか、ロボットプログラムの中に繰り返し動作させるための専用の処理を作り込んでいた。
【０００４】
このように、組み立てセルではエラー発生による停止だけでなく、立ち上げ作業における動作確認でも、停止位置から指定した動作再開位置への復帰処理に手作業、もしくはプログラムの作り込みが必要であった。
【０００５】
一方、制御プログラムの開発において、プログラムの作成にかかる工数を削減するために、ブロックまたはアイコンを接続するなどして制御プログラムを作成する手法が存在する。このようなブロックを組み合わせるプログラミング手法は、正常実行のフローを作成するのに適しているが、エラー発生時、繰り返し動作時などの復帰処理を記述するには多数の接続線が必要となり、可読性が悪くなる。可読性を向上するために、復帰処理、繰り返し動作処理を個々のブロック内のプログラムに埋め込むことになり、プログラムサイズが大きくなっていた。
【０００６】
このように、ロボットを用いた組み立てセルにブロックを組み合わせるプログラミング手法を使用する場合、停止状態から所定の再開状態への復帰処理を効率よく作成する必要があった。この問題を解決するため、自動復帰の技術が存在する。
【０００７】
下記特許文献１では、ねじ締め作業において作業をステップ分けし、ステップごとに実行可能状態を記憶し、動作開始状態へ段階的に復帰する際に、各ステップの実行可能状態を満足することをセンサ入力および干渉チェックなどで確認してから運転を再開していた。
【０００８】
また、下記特許文献２では、障害発生時にエラーコードから再開すべき工程を判断し、作業者の操作を誘導し、物品供給装置の動作再開信号に基づいて運転を再開していた。
【０００９】
また、下記特許文献３では、ロボットを用いた自動組み立てセルのオフラインプログラミングにおいて、停止時に安全位置の指定と周辺機器のレイアウト情報からロボットの軌跡を決定し、安全に待機位置に移動させていた。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平５−６１５２３号公報
【特許文献２】特開平７−１６４２８５号公報
【特許文献３】特開２００６−０１２０７４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上記特許文献１では、非常停止などによりロボットが停止した場合に、順に前のステップに戻る。この方法はねじ締めのような単純作業では有効であるが、組み立て作業では既に組み付けられた部品を取り外すことは困難であり、単純にステップを逆順に戻り再開する方法では対応できない。このため、途中まで組み立てたワークを排除することなく作業を再開するために、固定的に工程を実行するのではなく、再実行する工程を選択できるようにする必要がある。
【００１２】
また特許文献２では、停止した状況に応じて再開位置を決定するが、再開位置からは通常の処理を再度実行する。このため、前記と同様に途中まで組み立てたワークを排除することなく作業を再開するために、固定的に工程を実行するのではなく、再実行する工程を選択できるようにする必要がある。
【００１３】
また特許文献３では、ロボットを所定の安全位置に待避するだけであり、複数台のロボットを用いたセルで指定したロボットの工程を再実行するにあたり、他のロボットを所定の待避位置に動かしたりする必要があった。
【００１４】
この発明は、上記の課題を解決するためになされたものであり、広義には、ロボットの任意の停止状態から所望の動作を実行させる際に、工程を選択できるようにプログラミングを行うことでプログラムサイズを小さくすることを可能にしたロボットプログラミング装置および方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
この発明は、ロボットを使用した組み立てセルにおけるロボットが行う独立した作業を単位とした作業ブロックを実行順に接続して工程フローを作成し、工程フローからロボットプログラムを生成するロボットプログラミング装置であって、停止ブロック検出手段で検出された停止ブロックと、表示手段に表示した前記停止ブロックを考慮した外部入力に従って実行ブロック指定手段から得られる停止状態から実行する実行ブロックとの位置情報とハンド状態とセンサ状態をそれぞれ比較して、前記停止ブロックの停止状態を起点として前記実行ブロックを実行するための一時実行プログラムおよび一時実行作業指示を生成し、前記表示手段に前記一時実行作業指示を表示すると共に、入出力手段から前記一時実行プログラムを出力する工程再構築手段を備えたことを特徴とするロボットプログラミング装置およびその方法にある。
【発明の効果】
【００１６】
この発明では、ロボットの任意の停止状態から所望の動作を実行させる際に、工程を選択できるようにプログラミングを行うことで、プログラムサイズを小さくすることを可能となる。
【図面の簡単な説明】
【００１７】
【図１】この発明によるロボットプログラミング装置を含むロボットシステムの構成を示す図である。
【図２】この発明による組み立てセル対応のロボット、ハンド、部品、ワーク、部品供給台の構成を示す図である。
【図３】この発明によるロボットプログラミング装置の構成を示す図である。
【図４】この発明における工程フローの記述例を示す図である。
【図５】この発明における作業ブロックと同期ブロックの一例を示す図である。
【図６】この発明の実施の形態１によるプログラム作成・教示部、特に工程再構築手段の動作を示すフローチャートである。
【図７】この発明の実施の形態２によるプログラム作成・教示部、特に工程再構築手段の動作を示すフローチャートである。
【発明を実施するための形態】
【００１８】
この発明では、作業ブロックに初期位置、ハンド状態(種類、把持状態)、センサ状態の情報を持たせ、これらの作業ブロックを接続して工程フローを作成する。ロボット動作時またはシミュレーション動作時に、エラーの発生もしくはイベントの発生によりロボットプログラムが停止した場合に、停止した作業ブロックおよび停止状態を検出して、作業者が再実行する工程を指定することで、停止したブロックと再実行するブロックの情報を比較して復帰用のロボットプログラムを自動生成する。また、復帰処理に伴う作業者への作業指示を生成する。
また、複数台のロボットから構成させる組み立てセルで、ロボット間の同期を定義し、同期区間内でそれぞれのロボットが干渉しない場合、同期区間毎に前記復帰処理のロボットプログラムと復帰作業指示を自動生成する。これらの自動生成したロボットプログラムおよび作業指示を順に実行することで、複数台のロボットから構成される組み立てセルにおいて、干渉が起きない復帰用のロボットプログラムを生成できる。
また、前記の手段を繰り返し実行に使用することで、組み立てセルの立ち上げ時に特定の工程の動作を繰り返し実行して動きを確認する場合に使用できる。
【００１９】
従来はエラー等によって停止した後、必要な工程を再実行するために復帰用のプログラムを作成して制御プログラム中に埋め込んでいたので、制御プログラムサイズが大きくなっていた。この発明では作業ブロックの情報を比較して復帰プログラムおよび復帰作業指示を自動的に生成できるため、制御プログラムのサイズが小さくなる。
また、従来はセルの特定の工程の動作を繰り返し確認する場合、毎回、最初から全ての工程を実行して確認していた。この発明では作業ブロックを指定するだけで特定の工程のみ繰り返し実行ができるため、セル立ち上げの時間を短縮できる。
また、従来は組み立てセルを構成する複数台のロボットの復帰プログラムをロボット間の同期を考慮して作成していたため、プログラムサイズが大きくなっていた。この発明では作業ブロックの情報を比較して複数台分の復帰プログラムおよび復帰作業指示を自動的に生成できるため、制御プログラムのサイズが小さくなる。
また、従来はセルの特定のロボットの特定の工程の動作を繰り返し確認する場合、確認に関係ない他のロボットを手動で待避位置に移動しておく必要があった。この発明では動作を確認する作業ブロックを指定するだけで特定のロボットの特定の工程のみ繰り返し実行を行う間、動作確認に関係ないロボットを自動的に待避位置に移動できるため、セル立ち上げの時間を短縮できる。
【００２０】
以下、この発明によるロボットプログラミング装置および方法を各実施の形態に従って図面を用いて説明する。なお、各実施の形態において、同一もしくは相当部分は同一符号で示し、重複する説明は省略する。
【００２１】
実施の形態１．
最初にこの発明のロボットプログラミング装置のシステム構成と、ロボットの基本的な動作を説明する。
【００２２】
図１はこの発明によるロボットプログラミング装置を含むロボットシステムの構成を示す図である。ロボット１は、ロボット制御装置２で実行されるロボットプログラムに従って動作する。ロボット制御装置２は、ロボットを制御し動作させるロボット制御部２１、ロボットプログラムを実行するプログラム実行部２２、ロボットを動作させるプログラムや位置データ等を記憶するプログラム・データ記憶部２３、ロボットプログラミング装置３と通信するための通信部２４、から構成される。ロボットプログラミング装置３は、ロボットプログラムの作成および位置データ等の教示を行うプログラム作成・教示部３１、プログラムやデータを表示する表示部３２、ロボット制御装置２と通信する通信部３３、作業者等が入力を行う入力部３４から構成される。作業者は、ロボットプログラミング装置３を用いてロボットプログラムを作成、記憶させる。
【００２３】
図２はこの発明による組み立てセル対応のロボット、ハンド、部品、ワーク、部品供給台の構成を示す図である。ロボット１は、ハンド１１を交換可能である。ハンド１１は、ロボットが部品を把持するためのものであり、複数種類存在する。部品１２は、組み立てる製品の構成要素であり、複数種類存在する。部品１２はハンド１１によって把持される。ハンド１１は、ハンドの種類ごとに把持可能な部品の種類が決まっている。ワーク１３は、組み立ての作業対象物である。最終的に、全ての部品１２をワーク１３に組み付けることで製品の組み立てが行われる。作業台１４は、部品を組み付けるワーク１３を保持する台である。部品供給台１５は、部品１２を供給する台である。部品供給台１５は、部品１２を自動的に供給する装置のようなものであってもよい。なお、ロボット１の各箇所にはセンサ(図示省略)が設けられ、ロボット１の位置、姿勢、他の装置との干渉を検出する。
【００２４】
最初に図２を使用して基本的な組み立て動作を以下に説明する。まず、ロボット１は、所定の種類のハンド１１を装着する。次に、部品供給台１５から部品１２を把持し、ワーク１３へ順番に組み付ける。ここで、ワーク１３は、組み付けのために、ロボット１によって位置の移動や回転などを行ってもよい。また、部品供給台１５からワーク１３へ部品１２を組み付けるロボット１が複数台あり、別々に動作させることも可能である。
【００２５】
次に、この発明で扱うロボットプログラムについて説明する。ロボットプログラムはテキストによって記述される。以下は、ロボットプログラムの例である。
【００２６】
1 P00 = (100,100,0,0,0,0)
2 P01 = (100,100,10,0,0,0)
3 MOVE P01 部品台上部へ移動
4 HOPEN
5 DELEY 0.5
6 MOVE P00
7 HCLOSE 部品を把持する
8 DELEY 0.5
9 MOVE P01
10 WAIT IN(10)==1
11 P10 = (200,200,0,0,0,0)
12 P11 = (200,200,10,0,0,0)
13 MOVE P11 作業台上部へ移動
14 MOVE P10
15 HOPEN 部品を離す
16 DELEY 0.5
17 MOVE P11
18 END
【００２７】
１行目のP00は座標を格納できる変数であり、ここでは、変数P00に座標値(100,100,0,0,0,0)を格納している。また、３行目のMOVE命令は、ロボット１のハンド１１先端を指定した座標に動かす命令である。また、４行目のHOPEN命令は、ハンド１１を開く命令である。また、５行目のDELAY命令は指定した秒数(ここでは0.5秒)を待つ命令である。また、７行目のHCLOSE命令は、ハンド１１を閉じる命令である。また、１０行目のWAIT命令は、外部ポートの値が所定の値となるまで停止する命令である。ここでは、入力ポート(INポート)の10番が”1”になるまで待つことを示している。また、１８行目のEND命令はプログラムの終了を示す命令である。
【００２８】
このプログラムの動作を説明する。まず、３行目から５行目で部品供給台１５の上に移動し、ハンド１１を開く。次に、６行目から８行目で部品の把持位置に移動し、ハンド１１を閉じて部品を把持する。次に、９行目で部品供給台１５の上に移動する。次に、１０行目で入力ポートの１０番が１になるまで待つ(実行可能指示待ち)。次に、１３行目から１７行目で作業台１４の上に移動し、部品１２を垂直に降ろしてワーク１３へ挿入し、ハンド１１を開いて作業台１４の上に待避する。
【００２９】
次に、この発明によるロボットプログラミング装置(オフラインプログラミングシステム)の構成を説明する。図３はこの発明によるロボットプログラミング装置の構成を示す図であり、プログラム作成・教示部３１は記憶手段を設けたコンピュータで構成され、３１１〜３１５はプログラムに従って処理を行う機能ブロック、３１６〜３１８はメモリ等の記憶手段を示す。プログラム作成・教示部３１において、編集手段３１１は、作業ブロックを定義し、定義した作業ブロックデータを組み立て工程の流れ順に並べて工程フローを作成する。ここで、流れ順に並べる際に、例えばＧＵＩ(Graphical User Interface)を用いて作業ブロックの間を矢印で接続する。作成した工程フローは、工程フローデータ３１６として保存する。また、編集手段３１１は、作成した工程フローデータから、ロボット１で動作する制御プログラム(ロボットプログラム)を生成する。通常は、編集手段３１１が作成したロボットプログラムを通信部３３でロボット制御装置２にダウンロードして実行する。
【００３０】
ロボットがエラーや非常停止などの外部イベントによりプログラム実行中に停止した場合、停止ブロック検出手段３１５は、通信部３３を用いてロボット制御装置２と通信し、ロボットプログラムの停止箇所と、ロボットが停止した座標(Xs,Ys,Zs,As,Bs,Cs)(ロボット停止状態情報(位置情報)、または組み立てセルの停止状態情報)を取得する。また、停止ブロック検出手段３１５は、通信部３３を用いてロボット制御装置２と通信し、ロボットが停止したときのハンドの把持状態(On/Off)と種類(以上ハンド状態情報)と、ロボットに接続された各種センサの状態(On/Off)(以上センサ状態情報)を取得する。ここで、センサはOn/Offのみでなく、DA/DAデバイスなどの出力に見られるように数値であってもよい。次に、停止ブロック検出手段３１５は、工程再構築手段３１２に停止箇所と停止座標を通知する。また、停止ブロック検出手段３１５は、工程再構築手段３１２にハンドの把持状態、種類とセンサの状態を通知する。工程再構築手段３１２は、編集手段３１１にロボットプログラムの停止箇所を通知する。編集手段３１１は生成したロボットプログラムと工程フローデータ３１６から停止したブロックを判別する。次に、工程再構築手段３１２は、表示部３２に停止ブロックと停止座標、停止状態(ロボット停止状態情報、ハンド状態情報、センサ状態情報)を表示し、作業者に再実行するブロックの入力を促す。
【００３１】
実行ブロック指定手段３１３は、作業者が工程フロー中で再実行したいブロックを指定してその一覧を工程再構築手段３１２に通知する。ここでは例えば入力部３４から作業者が表示部３２に表示された情報を考慮して所望のブロックまたはブロック列を入力する。工程再構築手段３１２は、停止ブロック検出手段３１５が検出したロボット１の停止座標(Xs,Ys,Zs,As,Bs,Cs)と停止状態、すなわち停止ブロックの停止状態を起点とし、実行ブロック指定手段３１３によって設定された再実行したいブロックを順に実行する一時実行プログラム３１７を生成して例えば一次保存する。また、この一時実行プログラム３１７を動かすために作業者が行うべき作業の一覧として一時実行作業指示３１８を生成して例えば一次保存する。工程再構築手段３１２は、一時実行プログラム３１７を生成する際、ブロック間を繋いだり、初期位置に一度待避させたりするためにブロックを再実行したいブロック間に挿入したりする。またその際に必要な作業者が行う作業指示を一時実行作業指示３１８として生成する。これらについては図６で説明する。工程再構築手段３１２は、通信部３３を用いて、生成した一時実行プログラム３１７をロボット制御装置２にダウンロードする。工程再構築手段３１２は、表示部３２を用いて、一時実行作業指示３１８を表示し、作業者の準備作業を促す。最後に、工程再構築手段３１２は、通信部３３を通して、ロボット制御装置２に起動命令を送信する。これによって、ロボット１が所定の復帰処理を実行する。
【００３２】
また図４はこの発明における工程フローの記述例を示す。この工程フローは後述する実施の形態２で説明する２つのロボットの同期動作も含む。ロボット毎に工程のフローが記述される。この例ではロボットROBOT#1およびROBOT#2の工程フロー例を記述する。ROBOT#1は、まずＢ１１でハンド１１Ａを装着する。次にＢ１２でROBOT#2と同期した後、Ｂ１３でワーク#１３Ａを部品供給台１５より取り出す。次にＢ１４で作業台１４の近辺に移動する。次にＢ１５でワーク#１３Ａを組み付ける。次にＢ１６でROBOT#2と同期する。最後にＢ１７でハンド１１Ａを取り外して一連の動作を終了する。ROBOT#2は、まずＢ２１でハンド１１Ｂを装着する。次にＢ２２でROBOT#1と同期した後、Ｂ２３でワーク#１３Ｂを部品供給台１５より取り出す。次にＢ２４でROBOT#1がワーク１３Ａを組み付けるのを待ち、組み付け完了後に同期する。次にＢ２５で作業台１４の近辺に移動する。次にＢ２６でワーク#１３Ｂを組み付ける。最後にＢ２７でハンド１１Ｂを取り外して一連の動作を終了する。
【００３３】
ここで、ROBOT#1のSTARTからＢ１２の同期とROBOT#2のSTARTからＢ２２の同期までを１番目の同期区間と呼ぶ。同様に、Ｂ１２からＢ１６までとＢ２２からＢ２４までを２番目の同期区間と呼ぶ。同様に、Ｂ１６からＥＮＤまでとＢ２４からＥＮＤまでを３番目の同期区間と呼ぶ。このように、複数のロボットROBOT#1、ROBOT#2は同期区間毎に工程を分割することができる。また、これらの同期区間内ではそれぞれのロボットの動作範囲が干渉しない。この干渉チェックは事前に机上計算もしくはシミュレーションの動作確認により確認する。この確認は実機で行ってもよい。
【００３４】
図５はこの発明における作業ブロックと同期ブロックの一例を示す図である。図５の(ａ)は、この発明の実施の形態１による作業ブロックが持つデータ構造である。作業ブロック５００は、ブロックＩＤ５０１およびロボットプログラム５０２を持つ。工程フローにおいて特定の作業ブロックを指定するには、このブロックＩＤを使用する。また、ロボット制御装置２にダウンロードするプログラムを生成する際には作業ブロックのロボットプログラム５０２を工程フロー順につなげて生成する。
【００３５】
この発明では作業ブロック５００は、上記のブロックＩＤ５０１とロボットプログラム５０２に加え、協調ブロック５０３、ブロックの初期位置(位置情報)５０４、ハンド種類(ハンド情報)５０５、ハンド把持状態(ハンド情報)５０６、センサ状態(センサ情報)５０７を持つ。協調ブロック５０３は、セルを構成するロボットが複数台あったときに、２台以上のロボット間で協調動作する際に設定する。ブロックの初期位置５０４は、ロボットの姿勢(Xi,Yi,Zi,Ai,Bi,Ci)として表現される。初期位置５０４は、ブロック開始時点でのデフォルトの姿勢となる。また、終了時の待避位置としても使用可能である。ここで、ある任意の作業ブロックの初期位置(動作終了後)から他の作業ブロックの初期位置(動作開始前)へ移動しても、ロボットがワークや装置と衝突しない姿勢を設定しておく必要がある。ハンド種類５０５は、この作業ブロックを実行する際のハンドの種類を指定するものである。作業ブロック内部でハンドを交換するなど、初期状態のハンド種類の指定がない場合は、種類なし(None)となる。ハンド把持状態５０６は、作業ブロック開始時に部品を把持している前提か否かを指定するものである。把持状態はOn(閉)またはOff(開)またはNone(不定)の状態をとる。把持状態がOnまたはOffの場合、ハンド種類は設定されている必要がある。センサ状態５０７は、この作業ブロックを実行するにあたり、前提としてあるべきセンサ状態を指定するものである。これらの情報は、プログラム作成時に入力するが、シミュレーションまたは実際にロボットを動作させて実行状態をロボット制御装置から取得して格納してもよい。図５の(ｂ)については実施の形態２で説明する。
【００３６】
なお、ブロックの初期位置５０４、ハンド種類５０５、ハンド把持状態５０６、センサ状態５０７については該作業ブロックの動作開始前と終了後のそれぞれについて設定されていてもよい。
【００３７】
図６はこの発明の実施の形態１によるプログラム作成・教示部３１、特に工程再構築手段３１２の動作を示すフローチャートである。ロボットがエラー、非常停止などの外部イベントにより停止すると、最初に、ステップＳ１０１で停止ブロック検出手段３１５が、通信部３３を通してロボット制御装置２と通信し、ロボットプログラムの停止位置(箇所)、ロボット本体の停止座標(ロボット停止状態情報)、組み立てセルの停止状態(組み立てセル停止状態情報)を取得する。ここで、ハンドの種類、ハンドの把持有無、センサ状態も同時に取得する。次に、停止ブロック検出手段３１５は、ロボットプログラムの停止位置を工程再構築手段３１２を通して編集手段３１１に送り、編集手段３１１で停止した作業ブロックを特定する。
【００３８】
次に、ステップＳ１０２で実行ブロック指定手段３１３が、入力部３４からの作業者の入力によって復帰のために再度実行するブロックを取得する。
【００３９】
次に、ステップＳ１０３で工程再構築手段３１２は、停止ブロック検出手段３１５で検出された情報に基づいてロボットが部品を把持しているか否かを判定する。もし、部品を把持している場合、ステップＳ１０４で工程再構築手段３１２は、ハンドから部品を取り除く作業指示を生成し、一時実行作業指示３１８に追加する。
【００４０】
次に、ステップＳ１０５で工程再構築手段３１２は、停止ブロック検出手段３１５で検出された情報に基づいてロボットのセンサ状態と、実行ブロック指定手段３１３で作業者が指定した実行ブロックのうち最初の作業ブロックのセンサ状態との差を判別する。もし、センサ状態に差異があった場合、ステップＳ１０６で工程再構築手段３１２は、センサ状態ごとに作業ブロックに指定されたセンサ状態になるように作業指示を生成し、一時実行作業指示３１８に追加する。
【００４１】
次に、ステップＳ１１１の繰り返し処理で工程再構築手段３１２は、現在停止している作業ブロックを起点として実行ブロックを工程フロー順に接続する。ここでは、ステップＳ１１２からステップＳ１１６の処理を繰り返す。
【００４２】
まず、ステップＳ１１２で工程再構築手段３１２は、一つ前の作業ブロック(最初は起点である停止ブロック)と現在の対象作業ブロックのハンド種類を比較する。もし、ハンドが異なる場合、ステップＳ１１３で予め定義されているハンド交換のブロックを挿入する。このとき、既にハンドが装着済みの場合、まず既存のハンドを取り外し、次に指定されたハンドを装着する、２つの作業ブロックを挿入する。工程再構築手段３１２は、一時実行プログラム３１７へ挿入した作業ブロックのロボットプログラムを追加する。
【００４３】
次に、ステップＳ１１４で工程再構築手段３１２は、指定されたブロックが工程フロー上で接続されている否かを判別する。もし、工程フローが接続されていない場合、ステップＳ１１５で初期位置にいったん待避して移動するようにロボットのプログラムを生成する。これは、作業ブロック間でのロボットの移動により、ワークや装置との衝突を避けるためである。例えば、一つ前の作業ブロックの初期位置が(Xi1,Yi1,Zi1,Ai1,Bi1,Ci1)で、現在の対象の作業ブロックの初期位置が(Xi2,Yi2,Zi2,Ai2,Bi2,Ci2)である場合、生成されるプログラムは次のようになる。
【００４４】
MOVE (Xi1,Yi1,Zi1,Ai1,Bi1,Ci1)
MOVE (Xi2,Yi2,Zi2,Ai2,Bi2,Ci2)
【００４５】
この作業ブロックの初期位置から次の初期位置へ移動するプログラムは工程フロー順に実行ブロックに辿り着くまで複数行追加する。ステップＳ１１５では、工程再構築手段３１２は、一時実行プログラム３１７へこのロボットプログラムを追加する。
【００４６】
次に、ステップＳ１１６で工程再構築手段３１２は、一時実行プログラム３１７へ現在の対象の作業ブロックのロボットプログラムを追加する。
【００４７】
ステップＳ１１７で全てのブロックについての処理が完了したら、次に、ステップＳ１０７で工程再構築手段３１２は、表示部３２に一時実行作業指示３１８を表示し、作業者に操作を促す。
【００４８】
次に、ステップＳ１０８で工程再構築手段３１２は、通信部３３を通してロボット制御装置２に一時実行プログラム３１７をダウンロードし、通信部３３を通してロボット制御装置２にロボット１を起動させる。ロボット制御装置２は例えば、一時実行プログラムが完了した後、停止前の工程フローの実行に戻る。
【００４９】
以上のように、ロボットを用いた組み立てセルを工程フローに基づいて制御する場合、停止時からの復帰時に指定した工程のみ実行することができ、復帰のための専用プログラムを準備する必要がない。復帰のパターンが複数あった場合、複数種類のエラーに対して複数種類の復帰があると、処理の組み合わせが発生し、大きなプログラムを事前に作成しておく必要があるが、この発明では復帰プログラムを作成する必要が無く、プログラムサイズが小さい。また、復帰のパターンと処理について事前に考察する必要がなく、開発期間を短縮できる。
【００５０】
実施の形態２．
この発明の実施の形態２によるロボットプログラミング装置では、複数台のロボットから構成される組み立てセルの場合について説明する。ロボットプログラミング装置の構成は図３において待避位置指定手段３１４をさらに設けたものである。
【００５１】
複数台のロボットから構成される組み立てセルでは、ロボットに同期を設定する。待避位置指定手段３１４は、工程フローを作成した後、工程再構築手段３１２を通して、各ロボットのSTARTブロック、および同期ブロックに待避位置を指定する。これらの待避位置は、同じ同期区間の工程処理を各ロボットが行ったときに、互いに干渉しない位置に設定する。この設定は事前のシミュレーションなどを用いて自動に行ってもよい。
【００５２】
図５の(ｂ)は、この発明の実施の形態２による作業ブロックが持つデータ構造である。同期ブロック５１０は、待避位置５１１を含む。この待避位置(Xr,Yr,Zr,Ar,Br,Cr)は前記のように、同じ同期区間の工程処理を各ロボットが行ったときに、互いに干渉しない位置に設定する。また、この待避位置と各作業ブロックの初期位置の間で移動があった場合も、互いに干渉しないように設定する。
【００５３】
図７はこの発明の実施の形態２による複数台のロボットを定義したときのプログラム作成・教示部３１、特に工程再構築手段３１２の動作を示すフローチャートである。ロボットがエラー、非常停止などの外部イベントにより停止すると、最初に、ステップＳ２０１で停止ブロック検出手段３１５が、通信部３３を通してロボット制御装置２と通信し、ロボットプログラムの停止位置(箇所)、ロボット本体の停止座標、組み立てセルの停止状態を取得する。ここで、ハンドの種類、ハンドの把持有無、センサ状態も同時に取得する。次に、停止ブロック検出手段３１５は、ロボットプログラムの停止位置を工程再構築手段３１２を通して編集手段３１１に送り、編集手段３１１で停止した作業ブロックを特定する。
【００５４】
次に、ステップＳ２０２で実行ブロック指定手段３１３が、入力部３４からの作業者の入力によって復帰のために再度実行するブロックを取得する。
【００５５】
次に、ステップＳ２０３で工程再構築手段３１２は、組み立てセルを構成するすべてのロボットに対して、それぞれ作業指示を生成する。ここでは、ステップＳ２０４からステップＳ２０７の処理を繰り返す。
【００５６】
まず、ステップＳ２０４で工程再構築手段３１２は、停止ブロック検出手段３１５で検出された情報に基づいてロボットが部品を把持しているかを判定する。もし、部品を把持している場合、ステップＳ２０５で工程再構築手段３１２は、ハンドから部品を取り除く作業指示を生成し、一時実行作業指示３１８に追加する。
【００５７】
次に、ステップＳ２０６で工程再構築手段３１２は、停止ブロック検出手段３１５で検出された情報に基づいてロボットのセンサ状態と、実行ブロック指定手段３１３で作業者が指定した実行ブロックのうち最初の作業ブロックのセンサ状態との差を判別する。もし、センサ状態に差異があった場合、ステップＳ２０７で工程再構築手段３１２は、センサ状態ごとに作業ブロックに指定されたセンサ状態になるように作業指示を生成し、一時実行作業指示３１８に追加する。
【００５８】
以上の処理を全てのロボットに対して繰り返す。ステップＳ２０７ａで全てのロボットについての処理が完了したら、ステップＳ２１１で工程再構築手段３１２は、組み立てセルを構成するすべてのロボットに対して、それぞれロボットプログラムを生成する。ここでは、ステップＳ２１２からステップＳ２２０の処理を繰り返す。
【００５９】
まず、ステップＳ２１２で現在対象となっているロボットの実行ブロックに協調動作を行う他のロボットの作業ブロックである協調ブロックが設定されているかを確認する。もし、協調ブロックが設定されている場合、ステップＳ２１３でその協調ブロックである他のロボットの作業ブロックを実行ブロックとして追加する。
【００６０】
これは、特定のロボットの実行ブロックに協調ブロックが指定されている場合、例えば、一方のロボットがワークを裏側から抑え、もう一方のロボットが部品を表側から装着する、または、一方のロボットが部品を支え、もう一方のロボットが上から押し込むといったような協調処理を行うためである。この協調ブロックが指定されていると、他のロボットの協調ブロックも実行ブロックと見なし、ロボットプログラムを生成する。
【００６１】
次に、ステップＳ２１４の繰り返し処理で工程再構築手段３１２は、現在停止している作業ブロックを起点として実行ブロックを工程フロー順に接続する。ここでは、ステップＳ２１５からステップＳ２２０の処理を繰り返す。
【００６２】
次に、ステップＳ２１５の繰り返し処理で工程再構築手段３１２は、同期区間ごとにロボットプログラムを生成する。ここでは、ステップＳ２１６からステップＳ２２０の処理を繰り返す。
【００６３】
まず、ステップＳ２１６で工程再構築手段３１２は、一つ前の作業ブロック(最初は起点である停止ブロック)と現在の対象作業ブロックのハンド種類を比較する。もし、ハンドが異なる場合、ステップＳ２１７で予め定義されているハンド交換のブロックを挿入する。このとき、既にハンドが装着済みの場合、まず既存のハンドを取り外し、次に指定されたハンドを装着する、２つの作業ブロックを挿入する。工程再構築手段３１２は、一時実行プログラム３１７へ挿入した作業ブロックのロボットプログラムを追加する。
【００６４】
次に、ステップＳ２１８で工程再構築手段３１２は、指定されたブロックが工程フロー上で接続されているかを判別する。もし、工程フローが接続されていない場合、ステップＳ２１９で初期位置にいったん待避して移動するようにロボットのプログラムを生成する。これは、作業ブロック間でのロボットの移動により、ワークや装置との衝突を避けるためである。例えば、一つ前の作業ブロックの初期位置が(Xi1,Yi1,Zi1,Ai1,Bi1,Ci1)で、現在の対象の作業ブロックの初期位置が(Xi2,Yi2,Zi2,Ai2,Bi2,Ci2)である場合、生成されるプログラムは次のようになる。
【００６５】
MOVE (Xi1,Yi1,Zi1,Ai1,Bi1,Ci1)
MOVE (Xi2,Yi2,Zi2,Ai2,Bi2,Ci2)
【００６６】
この作業ブロックの初期位置から次の初期位置へ移動するプログラムは工程フロー順に実行ブロックに辿り着くまで複数行追加する。ステップＳ２１９では、工程再構築手段３１２は、一時実行プログラム３１７へこのロボットプログラムを追加する。
【００６７】
次に、ステップＳ２２０で工程再構築手段３１２は、一時実行プログラム３１７へ現在の対象の作業ブロックのロボットプログラムを追加する。
【００６８】
ここで、同期区間中に実行ブロックが一つも存在しないロボットは、同期ブロックに指定された待避位置(Xr,Yr,Zr,Ar,Br,Cr)に移動するため、待避位置に待避する次の命令を一時実行プログラム３１７に追加する。すなわち待避位置が指定された同期ブロック５１０を該ロボットに割り当てる。待避位置は待避位置指定手段３１４により指定される。
【００６９】
MOVE (Xr,Yr,Zr,Ar,Br,Cr )
【００７０】
もし、実行ブロックが存在しない同期区間が連続した場合、同期ごとに同期ブロックに指定された待避位置へ移動させる。
【００７１】
ステップＳ２２１で全ての同期区間についての処理が完了し、ステップＳ２２２で全ての実行ブロックについての処理が完了し、ステップＳ２２３で全てのロボットについての処理が完了したら、次に、ステップＳ２０８で工程再構築手段３１２は、表示部３２に一時実行作業指示３１８を表示し、作業者の操作を促す。また、実行ブロックを指定しないロボットがあれば待避作業指示も一時実行作業指示と共にロボット毎に同期区間単位で生成して併せて表示する。
【００７２】
次に、ステップＳ２０９で工程再構築手段３１２は、通信部３３を通してロボット制御装置２に一時実行プログラム３１７をダウンロードし、通信部３３を通してロボット制御装置２にロボット１を起動させる。ロボット制御装置は例えば、一時実行プログラムが完了した後、停止前の工程フローの実行に戻る。また、実行ブロックを指定しないロボットがあれば待避プログラムも一時実行プログラムと共に生成して併せてダウンロードする。
【００７３】
なお、ステップＳ２２２で全ての実行ブロックについて処理が完了する度に上記ステップＳ２０８、Ｓ２０９を実行するようにして、各ロボット毎に処理を行ってもよい。
【００７４】
以上のように、複数台のロボットから構成される組み立てセルにおいて、ロボット間の同期を持つ工程フローを定義した場合に、指定した実行ブロックのみを動かすプログラムを一時的に生成し、それらを実行することで、複数台のロボットから構成されるセルにおいて、停止した状態からの復帰プログラムを作成する必要が無く、プログラムサイズの削減ができる。また、開発期間の短縮も可能となる。
【００７５】
また、一時実行プログラムの機能を用いることで、組み立てセルの立ち上げ作業において、特定動作を繰り返して動作確認を行う場合、特定の工程のみを選択して実行できるため、デバッグ用のプログラムを作成する必要がなくなり、立ち上げ時間を大幅に短縮できる。
【００７６】
なおこの発明では上述のように、エラーの発生またはイベントの発生によりロボットプログラムが停止した際に復帰させる際に適用した場合、復帰時に再実行する実行ブロックが外部入力に従って得られ、復帰のためのプログラムおよび作業指示を生成し、また組み立てセルの立ち上げにおいて、動作を確認するために特定の工程の動作を複数回繰り返す際に適用した場合、特定の工程の動作の実行ブロックが外部入力に従って得られ、特定の工程の動作のためのプログラムおよび作業指示を生成するが、この発明はこれに限定されず、広義には、ロボットの任意の停止状態から所望の動作を実行させる際に、工程を選択できるようにプログラミングを行い、そのためのプログラムおよび作業指示を生成するものである。
【符号の説明】
【００７７】
１  ロボット、２  ロボット制御装置、３  ロボットプログラミング装置、１１  ハンド、１２  部品、１３  ワーク、１４  作業台、１５  部品供給台、２１  ロボット制御部、２２  プログラム実行部、２３  プログラム・データ記憶部、２４、３３  通信部、３１  プログラム作成・教示部、３２  表示部、３４  入力部、３１１  編集手段、３１２  工程再構築手段、３１３  実行ブロック指定手段、３１４  待避位置指定手段、３１５  停止ブロック検出手段、３１６  工程フローデータ、３１７  一時実行プログラム、３１８  一時実行作業指示、５００  作業ブロック、５０１  ブロックＩＤ、５０２  ロボットプログラム、５０３  協調ブロック、５０４  初期位置、５０５  ハンド種類、５０６  ハンド把持状態、５０７  センサ状態、５１０  同期ブロック、５１１  待避位置。
【図１】
0005602076.tif 000002
【図２】
0005602076.tif 000003
【図３】
0005602076.tif 000004
【図４】
0005602076.tif 000005
【図５】
0005602076.tif 000006
【図６】
0005602076.tif 000007
【図７】
0005602076.tif 000008