(57)【要約】【課題】ロボットの動作の信頼性を確保しつつ、シミュレータの計算負荷を低減しながら、ロボットの軌道計算を開始してからロボットの動作を開始するまでの時間を短縮して、ロボットによる物品の生産性を向上させる。【解決手段】制御装置２００は、軌道データを、始点から終点に向かって順次計算し、計算が完了した部分軌道データから、逐次、シミュレータ３００に送信する。シミュレータ３００は、逐次、制御装置２００から受信した部分軌道データに従って、仮想ロボットを動作させる動作シミュレーションを行い、該動作シミュレーションの結果、ロボット１００を停止させる場合に停止信号を制御装置２００に送信する。制御装置２００は、シミュレータ３００の計算よりも遅れてロボット１００の動作を開始させる。制御装置２００は、停止信号をシミュレータ３００から受信したときはロボット１００の動作を停止させる。【選択図】図１
2016221659.tif 000002
【特許請求の範囲】
【請求項１】
ロボットと、
軌道データに従って前記ロボットの動作を制御する制御装置と、
前記ロボットに対応する仮想ロボット及び前記ロボットの周囲にある物体に対応する仮想物体を、仮想空間内に配置し、前記仮想ロボットの動作をシミュレーションするシミュレータと、を備え、
前記制御装置は、前記軌道データを、始点から終点に向かって順次計算し、計算が完了した部分軌道データから、逐次、前記シミュレータに送信し、
前記シミュレータは、逐次、前記制御装置から受信した前記部分軌道データに従って、前記仮想ロボットを動作させる動作シミュレーションを行い、該動作シミュレーションの結果、前記ロボットを停止させる場合に停止信号を前記制御装置に送信し、
前記制御装置は、前記シミュレータが最初の前記部分軌道データの前記動作シミュレーションが完了した後であって、最後の前記部分軌道データの前記動作シミュレーションが完了する前に、前記ロボットの動作を開始させ、前記停止信号を前記シミュレータから受信したときは前記ロボットの動作を停止させることを特徴とするロボットシステム。
【請求項２】
前記シミュレータは、前記動作シミュレーションの結果、前記ロボットの動作を許可する許可信号及び前記停止信号のいずれかを割り込み信号として前記制御装置に送信し、
前記制御装置は、前記許可信号を受信してから前記ロボットの動作を開始させることを特徴とする請求項１に記載のロボットシステム。
【請求項３】
前記シミュレータは、前記動作シミュレーションにより、前記仮想ロボットが前記仮想物体と干渉したか否かを判断し、前記割り込み信号として、干渉していないと判断した場合は前記許可信号、干渉したと判断した場合は前記停止信号を、前記制御装置に送信することを特徴とする請求項２に記載のロボットシステム。
【請求項４】
前記シミュレータは、前記割り込み信号を、一定の時間間隔で前記制御装置に送信することを特徴とする請求項２又は３に記載のロボットシステム。
【請求項５】
前記制御装置は、最初の前記部分軌道データを送信してから一定時間が経過してから前記ロボットの動作を開始させることを特徴とする請求項１に記載のロボットシステム。
【請求項６】
前記ロボットは、ロボットアームと、前記ロボットアームに取り付けられたロボットハンドと、を有し、
前記ロボットハンドにより把持する把持対象物を撮像する撮像装置を更に備え、
前記制御装置は、前記撮像装置により撮像された撮像画像から、前記把持対象物の位置及び姿勢を計算し、前記把持対象物の位置及び姿勢に応じて、前記ロボットハンドが前記把持対象物に向かう前記軌道データを計算することを特徴とする請求項１乃至５のいずれか１項に記載のロボットシステム。
【請求項７】
ロボットと、軌道データに従って前記ロボットの動作を制御する制御装置と、前記ロボットに対応する仮想ロボット及び前記ロボットの周囲にある物体に対応する仮想物体を、仮想空間内に配置し、前記仮想ロボットの動作をシミュレーションするシミュレータと、を備えたロボットシステムの制御方法であって、
前記制御装置が、前記軌道データを、始点から終点に向かって順次計算し、計算が完了した部分軌道データから、逐次、前記シミュレータに送信する軌道計算工程と、
前記シミュレータが、逐次、前記制御装置から受信した前記部分軌道データに従って、前記仮想ロボットを動作させる動作シミュレーションを行い、該動作シミュレーションの結果、前記ロボットを停止させる場合に停止信号を前記制御装置に送信するシミュレーション工程と、
前記制御装置が、前記シミュレータが最初の前記部分軌道データの前記動作シミュレーションが完了した後であって、最後の前記部分軌道データの前記動作シミュレーションが完了する前に、前記ロボットの動作を開始させ、前記停止信号を前記シミュレータから受信したときは前記ロボットの動作を停止させるロボット制御工程と、を備えたことを特徴とするロボットシステムの制御方法。
【請求項８】
前記シミュレーション工程では、前記シミュレータが、前記動作シミュレーションの結果、前記ロボットの動作を許可する許可信号及び前記停止信号のいずれかを割り込み信号として前記制御装置に送信し、
前記ロボット制御工程では、前記制御装置が、前記許可信号を受信してから前記ロボットの動作を開始させることを特徴とする請求項７に記載のロボットシステムの制御方法。
【請求項９】
前記シミュレーション工程では、前記シミュレータが、前記動作シミュレーションにより、前記仮想ロボットが前記仮想物体と干渉したか否かを判断し、前記割り込み信号として、干渉していないと判断した場合は前記許可信号、干渉したと判断した場合は前記停止信号を、前記制御装置に送信することを特徴とする請求項８に記載のロボットシステムの制御方法。
【請求項１０】
前記シミュレーション工程では、前記シミュレータが、前記割り込み信号を、一定の時間間隔で前記制御装置に送信することを特徴とする請求項８又は９に記載のロボットシステムの制御方法。
【請求項１１】
前記ロボット制御工程では、前記制御装置が、最初の前記部分軌道データを送信してから一定時間が経過してから前記ロボットの動作を開始させることを特徴とする請求項７に記載のロボットシステムの制御方法。
【請求項１２】
前記ロボットは、ロボットアームと、前記ロボットアームに取り付けられたロボットハンドと、を有し、
前記ロボットシステムは、前記ロボットハンドにより把持する把持対象物を撮像する撮像装置を更に備え、
前記軌道計算工程では、前記制御装置が、前記撮像装置により撮像された撮像画像から、前記把持対象物の位置及び姿勢を計算し、前記把持対象物の位置及び姿勢に応じて、前記ロボットハンドが前記把持対象物に向かう前記軌道データを計算することを特徴とする請求項７乃至１１のいずれか１項に記載のロボットシステムの制御方法。
【請求項１３】
コンピュータに、請求項７乃至１２のいずれか１項に記載のロボットシステムの制御方法の各工程を実行させるためのプログラム。
【請求項１４】
請求項１３に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１５】
前記制御装置が、請求項７乃至１２のいずれか１項に記載のロボットシステムの制御方法により計算された前記軌道データに従って前記ロボットを動作させて物品を製造する物品の製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置とシミュレータとを有するロボットシステム、ロボットシステムの制御方法、プログラム、記録媒体及び物品の製造方法に関する。
【背景技術】
【０００２】
産業用ロボットを用いた組立部品の生産において、オフラインシミュレータと呼ばれる、ワークステーションまたはパーソナルコンピュータ等のコンピュータでロボットの動作を模するソフトウェアが多数開発され、使用されている。ここで、オフラインとは、ロボットに関連する装置（通常はロボットコントローラなどのロボットを制御する装置を指す）が、実際のロボットに接続していない状態を指す用語である。逆に、産業用ロボットにおけるオンラインとは、ロボットコントローラがロボットと接続された状態を指す用語である。
【０００３】
したがって、ロボットにおけるオフラインシミュレータとは、実際のロボットを直接操作することなく、シミュレーションができるような装置（例えば、シミュレーションを行うソフトウェアを導入したコンピュータ）を指す。シミュレーションは、ロボットに限らず、実際の物理装置を用いずに、その物理装置に近い現象の再現を仮想空間において実現するために用いられる。したがって、ロボットにおけるシミュレータも、通常のシミュレーションの用途と同様に、オフラインシミュレータの形態を取る。逆に、ロボットの教示作業（ロボットコントローラに動作点を記憶させる作業）において、実際にロボットを動作させながら教示を行うことは、オンライン教示と称することが多い。このように、産業用ロボットにおいては、実際のロボットを用いる場合と用いない場合を明確に区分して作業を行う。この違いをオンライン、オフラインという用語で表現する。
【０００４】
オフラインシミュレータは、主にロボット又はロボット周辺の物体に不可逆な物理的損害を与えるような事象を検証するためによく用いられる。その最も代表的な事象の例が、ロボットが他の物体と接触する「干渉」である。
【０００５】
ロボットがロボット周辺の物体と干渉すると、ロボット又は物体が損傷する可能性があるため、ロボットがロボット周辺の物体と干渉しないようにロボットを動作させなければならない。このため、オフラインシミュレーションは、干渉を起こさないようなロボットの動作を実際のロボットを動作させる前に予め検討する確認作業において、非常に有用である。なお、オフラインシミュレータを使わずに、実際のロボットを用いて干渉確認を行うこともある。この場合は、実際のロボットをいつでも人間が停止できるような十分に遅い速度で動作させながら、干渉確認を行う。
【０００６】
しかしながら、ロボットの動作のシミュレーションを行うためには、ロボットの動作を演算するためのプログラムを、ロボットコントローラとは別に、シミュレータに用意する必要があった。
【０００７】
これに対し、ロボットコントローラが、ロボットの軌道を計算してその計算結果をシミュレータに送り、シミュレータが、仮想ロボットを動作させて、その動作結果を表示装置に表示させるものが提案されている（特許文献１）。シミュレーションの結果、ロボットの動作が許容されるものであれば、ロボットコントローラにて、軌道データに従って実際にロボットを動作させることとなる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第３７４２４９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、軌道計算及びシミュレーションには、さまざまな演算処理が必要であり、多大な演算時間を必要とする。したがって、これら軌道計算及びシミュレーションの演算時間を大幅に短縮するのは難しい。従来技術では、軌道計算の終了後にシミュレーションを行い、シミュレーションの終了後にロボットを動作させていた。したがって、軌道計算を開始してからロボットを動作させるまでに多大な時間を費やしており、ロボットによる物品の生産性が低いものであった。
【００１０】
本発明は、ロボットの動作の信頼性を確保しつつ、シミュレータの計算負荷を低減しながら、ロボットの軌道計算を開始してからロボットの動作を開始するまでの時間を短縮して、ロボットによる物品の生産性を向上させることを目的とする。
【課題を解決するための手段】
【００１１】
本発明のロボットシステムは、ロボットと、軌道データに従って前記ロボットの動作を制御する制御装置と、前記ロボットに対応する仮想ロボット及び前記ロボットの周囲にある物体に対応する仮想物体を、仮想空間内に配置し、前記仮想ロボットの動作をシミュレーションするシミュレータと、を備え、前記制御装置は、前記軌道データを、始点から終点に向かって順次計算し、計算が完了した部分軌道データから、逐次、前記シミュレータに送信し、前記シミュレータは、逐次、前記制御装置から受信した前記部分軌道データに従って、前記仮想ロボットを動作させる動作シミュレーションを行い、該動作シミュレーションの結果、前記ロボットを停止させる場合に停止信号を前記制御装置に送信し、前記制御装置は、前記シミュレータが最初の前記部分軌道データの前記動作シミュレーションが完了した後であって、最後の前記部分軌道データの前記動作シミュレーションが完了する前に、前記ロボットの動作を開始させ、前記停止信号を前記シミュレータから受信したときは前記ロボットの動作を停止させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、制御装置がロボットの軌道を計算するので、シミュレータの計算負荷が低減する。また、制御装置は、軌道全体の計算が終了するのを待たずに、部分軌道データをシミュレータに送信した後、ロボットを部分軌道データに従って動作させるので、ロボットの軌道計算を開始してからロボットの動作を開始するまでの時間を短縮することができる。これにより、ロボットによる物品の生産性が向上する。また、制御装置は、停止信号を受信したときにはロボットの動作を停止させるが、シミュレータによる動作シミュレーションに対して実際のロボットの動作のタイミングを遅らせている。したがって、制御装置は、停止信号を受信した際に事前にロボットの動作を停止させることができるので、ロボットの動作の信頼性が確保される。
【図面の簡単な説明】
【００１３】
【図１】第１実施形態に係るロボットシステムを示す概略図である。
【図２】第１実施形態に係るロボットシステムの制御系を示すブロック図である。
【図３】第１実施形態に係るロボットシステムを示す機能ブロック図である。
【図４】第１実施形態に係る制御装置による軌道計算工程を示すフローチャートである。
【図５】第１実施形態に係るシミュレータによるシミュレーション工程を示すフローチャートである。
【図６】第１実施形態に係る制御装置によるロボット制御工程を示すフローチャートである。
【図７】第１実施形態に係るロボットシステムの制御装置、シミュレータおよびロボットの動作の一例を示すタイムチャートである。
【図８】第２実施形態に係るロボットシステムの制御装置、シミュレータおよびロボットの動作の一例を示すタイムチャートである。
【図９】第３実施形態に係るロボットシステムを示す概略図である。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１５】
［第１実施形態］
図１は、本発明の第１実施形態に係るロボットシステムを示す概略図である。ロボットシステム５００は、ロボット１００と、制御装置（ロボットコントローラ）２００と、シミュレータ３００と、入力装置３５０と、表示装置３６０と、ロボット操作端末４００と、を備えている。
【００１６】
ロボット１００は、垂直多関節のロボットアーム１０１と、エンドエフェクタとしてのロボットハンド１０２と、を有している。ロボットアーム１０１の基端は、架台１６０の上面に固定されている。ロボットアーム１０１は、複数のリンクが複数の関節で旋回又は回転可能に連結されている。ロボットアーム１０１の基端が固定端であり、ロボットアーム１０１の先端が自由端である。ロボットハンド１０２は、ロボットアーム１０１の先端に取り付けられている。ロボットアーム１０１の各関節を駆動することにより、ロボットハンド１０２の位置及び姿勢を変更することができる。
【００１７】
ロボットハンド１０２は、複数のフィンガーを有し、複数のフィンガーを閉動作させることにより、部品Ｗ１又は部品Ｗ２を把持することができ、複数のフィンガーを開動作させることにより、部品Ｗ１又は部品Ｗ２を把持解放することができる。ロボット１００により部品Ｗ１を別の部品Ｗ２に嵌合する嵌合作業を行い、物品（組立品）を製造することができる。
【００１８】
制御装置２００は、コンピュータで構成され、ロボット１００、即ちロボットアーム１０１及びロボットハンド１０２と信号線及び電力線で接続可能に構成されている。制御装置２００は、信号線及び電力線でロボット１００に接続された際に、ロボット１００の動作を制御する。具体的には、制御装置２００は、軌道データを計算し、算出した軌道データに従ってロボット１００の動作を制御する。
【００１９】
シミュレータ３００は、ワークステーション等の汎用のコンピュータで構成され、制御装置２００に接続可能に構成され、制御装置２００に接続された際に、制御装置２００と通信を行うよう構成されている。シミュレータ３００は、ロボット１００に対応する仮想ロボットやロボット１００の周囲にある物体（例えば、ツールや他のロボット等）に対応する仮想物体を、仮想空間内に配置し、仮想ロボットの動作をシミュレーションするものである。
【００２０】
入力装置３５０は、キーボード等で構成され、シミュレータ３００に接続可能に構成されている。入力装置３５０は、シミュレータ３００に接続された際に、操作者の操作入力を受け、操作者の操作に応じた入力信号をシミュレータ３００に出力する。シミュレータ３００は、入力信号に応じて各種処理を実行する。
【００２１】
表示装置３６０は、液晶モニタ等で構成され、シミュレータ３００に接続可能に構成されている。表示装置３６０は、シミュレータ３００に接続された際に、シミュレータ３００の制御の下、画像を表示する。
【００２２】
ロボット操作端末４００は、制御装置２００に接続可能に構成され、制御装置２００に接続された際に、ロボットアーム１０１やロボットハンド１０２を駆動制御する指令や教示点のデータを制御装置２００に送信可能に構成されている。
【００２３】
図２は、本発明の第１実施形態に係るロボットシステムの制御系を示すブロック図である。制御装置２００は、コンピュータで構成されており、演算部（制御部）としてのＣＰＵ（Central  Processing  Unit）２０１を備えている。また、制御装置２００は、記憶部として、ＲＯＭ（Read  Only  Memory）２０２、ＲＡＭ（Random  Access  Memory）２０３、ＨＤＤ（Hard  Disk  Drive）２０４を備えている。また、制御装置２００は、各種のインタフェース２１１〜２１４を備えている。シミュレータ３００は、コンピュータで構成されており、演算部としてのＣＰＵ３０１を備えている。また、シミュレータ３００は、記憶部として、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４を備えている。また、シミュレータ３００は、記録ディスクドライブ３０５及び各種のインタフェース３１１〜３１３を備えている。
【００２４】
ここで、ロボットアーム１０１は、関節を駆動する駆動源であるモータ１２０と、制御装置２００からの指令に応じてモータ１２０に電流を供給する駆動制御装置１３０と、を有している。モータ１２０及び駆動制御装置１３０は、各関節に対応して設けられている。例えば、ロボットアーム１０１は、６つ関節を有する場合、６つのモータ１２０と、６つの駆動制御装置１３０とを有する。
【００２５】
また、ロボットハンド１０２は、複数のフィンガーを駆動する駆動源であるモータ１４０と、制御装置２００からの指令に応じてモータ１４０に電流を供給する駆動制御装置１５０と、を有している。
【００２６】
駆動制御装置１３０，１５０は、プリント回路板で構成されている。駆動制御装置１３０，１５０は、ＣＰＵ、記憶部としてのＥＥＰＲＯＭ及びモータ駆動回路等を備えている。駆動制御装置１３０，１５０のＣＰＵが制御装置２００からの指令に基づいて電流指令を生成し、モータ駆動回路が電流指令に応じたＰＷＭ波形の電圧をモータ１２０，１４０に出力することで、モータ１２０，１４０に電流を供給する。
【００２７】
ＣＰＵ２０１には、ＲＯＭ２０２、ＲＡＭ２０３、ＨＤＤ２０４及びインタフェース２１１〜２１４が、バス２１０を介して接続されている。ＲＯＭ２０２には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ２０３は、ＣＰＵ２０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００２８】
ＨＤＤ２０４は、ＣＰＵ２０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ２０１に、後述する演算処理を実行させるためのプログラム２２０を記録するものである。ＣＰＵ２０１は、ＨＤＤ２０４に記録（格納）されたプログラム２２０に基づいてロボットシステムの制御方法の各工程を実行する。なお、制御装置２００には、書き換え可能な不揮発性メモリや外付けＨＤＤ等の不図示の外部記憶装置が接続されていてもよい。インタフェース２１２には、ロボットアーム１０１（駆動制御装置１３０）が接続されている。インタフェース２１３には、ロボットハンド１０２（駆動制御装置１５０）が接続されている。
【００２９】
ロボット操作端末４００は、いわゆるティーチングペンダントであり、インタフェース２１４に接続されている。ロボット操作端末４００は、ロボット１００を教示する教示点のデータやロボットプログラム等を操作者が入力操作することにより、ＨＤＤ２０４に格納（設定）させることができる。ＣＰＵ２０１は、ＨＤＤ２０４に設定（格納）された教示点のデータやロボットプログラムを読み出し、これらデータに基づいて、ロボット１００の軌道データを計算することができる。
【００３０】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４及びインタフェース３１１〜３１３が、バス３１０を介して接続されている。ＲＯＭ３０２には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００３１】
ＨＤＤ３０４は、ＣＰＵ３０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ３０１に、後述する演算処理を実行させるためのプログラム３２０を記録するものである。ＣＰＵ３０１は、ＨＤＤ３０４に記録（格納）されたプログラム３２０に基づいてロボットシステムの制御方法の各工程を実行する。なお、シミュレータ３００には、書き換え可能な不揮発性メモリや外付けＨＤＤ等の不図示の外部記憶装置が接続されていてもよい。
【００３２】
シミュレータ３００のインタフェース３１１と制御装置２００のインタフェース２１１とがケーブル等で接続されており、シミュレータ３００（ＣＰＵ３０１）と制御装置２００（ＣＰＵ２０１）とが互いに通信（信号の送受信）が可能となっている。インタフェース３１２には、入力装置３５０が接続されている。インタフェース３１３には、表示装置３６０が接続されている。
【００３３】
なお、第１実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ２０４，３０４であり、ＨＤＤ２０４，３０４にプログラム２２０，３２０が格納される場合について説明するが、これに限定するものではない。プログラム２２０，３２０は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラム２２０，３２０を供給するための記録媒体としては、図２に示す記録ディスク３２１、不図示の外部記憶装置等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性メモリ、ＲＯＭ等を用いることができる。図２では、記録ディスク３２１から読み出されたプログラム３２０，２２０が、ＨＤＤ３０４，２０４にＣＰＵ３０１，２０１が実行可能な状態で格納されている。
【００３４】
図３は、本発明の第１実施形態に係るロボットシステムを示す機能ブロック図である。図３において、制御装置２００及びシミュレータ３００については、ＣＰＵ２０１，３０１がプログラム２２０，３２０を実行することにより機能するブロックを図示している。具体的に説明すると、制御装置２００のＣＰＵ２０１は、プログラム２２０を実行することにより、ロボット動作信号受信部２３１、ロボットプログラム読出部２３２、ロボット軌道計算部２３３及びロボット軌道送信部２３４として機能する。更に、ＣＰＵ２０１は、時間差計算部２３５、信号処理部２３６、動作判断部２３７及びサーボ制御部２３８として機能する。また、シミュレータ３００のＣＰＵ３０１は、プログラム３２０を実行することにより、シミュレーション動作部３３１、異常動作検出部３３２及び信号送信部３３３として機能する。ロボット操作端末４００は、ロボット動作信号送信部４０１を有する。
【００３５】
操作者は、ロボット操作端末４００において、ロボット１００による生産を開始する操作をする。ここで、開始対象となるロボット１００の動作は、ロボット１００の複数の動作が一連に続いたものを想定している。すなわち、この場合の用途として、ロボット１００の動作を逐次確認するような動作（通称手動動作）ではなく、一連の動作を連続して実行するような動作（通称自動動作）を想定する。物品（組立品）を生産する際には、ロボット１００を自動動作で動作させる。この操作により、ロボット操作端末４００のロボット動作信号送信部４０１がロボット１００の動作を開始させる信号を、制御装置２００に送信する。
【００３６】
制御装置２００のロボット動作信号受信部２３１は、ロボット操作端末４００のロボット動作信号送信部４０１からの信号を検知する。ロボット動作信号受信部２３１が信号を検知した場合、ロボットプログラム読出部２３２は、ロボットプログラム（教示点データを含む）を読み出し、ロボット軌道計算部２３３は、ロボット１００（具体的にはロボットアーム１０１）の軌道データを計算する。つまり、ロボット軌道計算部２３３は、ロボット１００の軌道データを、始点の教示点から終点の教示点に向かって順次計算する。ロボットプログラムに一連の複数の動作が記述されている場合には、各動作の軌道データを計算することになるが、一連の動作のうち最初の動作の軌道データから順次計算する。
【００３７】
ロボット軌道送信部２３４は、ロボット軌道計算部２３３がある１つの動作に対応する軌道データを計算中に、軌道計算が完了した分の軌道データ（部分軌道データ）から、逐次、シミュレータ３００に送信する。部分軌道データとは、計算完了して未送信の軌道データのことである。
【００３８】
この部分軌道データを受信したシミュレータ３００のシミュレーション動作部３３１は、受信した部分軌道データに従って、逐次、仮想ロボットを動作させる動作シミュレーションを行う。また、シミュレーション動作部３３１は、動作シミュレーション結果を示す仮想ロボットの動作画像を、表示装置３６０に表示させる。これにより、操作者は、視覚的にシミュレーション結果を把握できる。
【００３９】
異常動作検出部３３２は、この動作シミュレーションの結果に基づき、仮想ロボットを停止させる必要があるかどうか、すなわち仮想ロボットが仮想物体に干渉するかどうかを判断する。信号送信部３３３は、一定の時間間隔Ｄ１で、割り込み信号、具体的にはロボット１００の動作を停止させる停止信号又はロボット１００の動作を許可する許可信号を、制御装置２００に送信する。
【００４０】
一方、制御装置２００の時間差計算部２３５は、シミュレータ３００に最初の部分軌道データを送信してから一定時間Ｄ０が経過したかを計算する。一定時間Ｄ０は、任意に設定可能であるが、例えば時間間隔Ｄ１と同じに設定されている。
【００４１】
また、制御装置２００の信号処理部２３６は、受信した割り込み信号が、停止信号であるかどうか、即ち停止信号か許可信号かを判定する。
【００４２】
動作判断部２３７は、時間差計算部２３５にて計時した時間が一定時間Ｄ０を経過した後、信号処理部２３６の判定結果に応じて、ロボット１００の動作の可否を判断し、サーボ制御部２３８に判断命令を出す。この判断命令は、許可信号の場合は動作命令、停止信号の場合は停止命令である。
【００４３】
サーボ制御部２３８は、動作判断部２３７の判断命令を受けて、ロボットアーム１０１に動作または停止の指令を送信する。ロボットアーム１０１の駆動制御装置１３０は、制御装置２００からの動作または停止の指令をうけて、ロボットアーム１０１を動作または停止させる。
【００４４】
つまり、制御装置２００は、軌道データの計算途中に、計算が完了した部分軌道データからロボット１００を動作させるという、軌道データの計算とロボット１００の動作とを並行して実施する。
【００４５】
その際に、計算したばかりの部分軌道データは、未チェックであるため、制御装置２００は、シミュレータ３００にロボット１００の干渉確認を行わせるべく、計算が完了した部分軌道データを、逐次、シミュレータ３００に送信する。つまり、制御装置２００及びシミュレータ３００により、軌道データの計算、動作シミュレーション及びロボット１００の動作を並行して実施する。
【００４６】
そして、もしシミュレータ３００がシミュレーションで干渉を検知したら、ロボット１００が周囲の物体に干渉する前に、ロボット１００の動作を停止させる必要がある。そのため、制御装置２００は、シミュレータ３００が最初の部分軌道データの動作シミュレーションが完了した後であって、最後の部分軌道データの動作シミュレーションが完了する前に、ロボット１００の動作を開始させるものである。つまり、シミュレータ３００によるシミュレーションを、ロボット１００の動作に先行して行わせるものである。
【００４７】
このときのロボット１００の動作は、干渉確認の動作ではなく、実際に物品（組立品）の製造を行う動作（前述した自動動作）である。つまり、制御装置２００は、計算した軌道データに従ってロボット１００を動作させて、部品Ｗ１を部品Ｗ２に組付ける等、実際に物品（組立品）を製造する。
【００４８】
以下、ロボットシステムの制御方法（物品の製造方法）について詳細に説明する。図４は、本発明の第１実施形態に係る制御装置による軌道計算処理（軌道計算工程）を示すフローチャートである。図５は、本発明の第１実施形態に係るシミュレータによるシミュレーション処理（シミュレーション工程）を示すフローチャートである。図６は、本発明の第１実施形態に係る制御装置によるロボット制御処理（ロボット制御工程）を示すフローチャートである。
【００４９】
まず、図４の軌道計算処理のフローチャートについて説明する。制御装置２００は、軌道データを、始点の教示点から終点の教示点に向かって順次計算し、計算が完了した部分軌道データから、逐次、シミュレータ３００に送信する（ＳＴ１）。制御装置２００は、軌道データの計算が完了したか否かを判断し（ＳＴ２）、完了していれば（ＳＴ２：Ｙｅｓ）そのまま終了し、完了していない場合（ＳＴ２：Ｎｏ）、停止信号を受信したか否かを判断する（ＳＴ３）。制御装置２００は、シミュレータ３００から送信された停止信号を受信した場合は（ＳＴ３：Ｙｅｓ）、軌道データの計算途中であっても、計算を終了し、停止信号を受信していない場合は（ＳＴ３：Ｎｏ）、ステップＳＴ１の処理に戻る。
【００５０】
次に、図５のシミュレーション処理のフローチャートについて説明する。シミュレータ３００は、制御装置２００にて送信された部分軌道データを受信したか否かを判断し（ＳＴ１１）、受信した場合（ＳＴ１１：Ｙｅｓ）、逐次、受信した部分軌道データに従って、仮想ロボットを動作させる動作シミュレーションを行う（ＳＴ１２）。
【００５１】
シミュレータ３００は、この動作シミュレーションにより、仮想ロボットが仮想物体に干渉するか否かを判断する（ＳＴ１３）。
【００５２】
シミュレータ３００は、この判断の結果、干渉していないと判断した場合は（ＳＴ１３：Ｎｏ）許可信号を（ＳＴ１４）、干渉したと判断した場合は（ＳＴ１３：Ｙｅｓ）停止信号を、割り込み信号として制御装置２００に送信する（ＳＴ１５）。このように、シミュレータ３００は、動作シミュレーションの結果、ロボット１００の動作を許可する許可信号及び停止信号のいずれかを、割り込み信号として制御装置２００に送信する。
【００５３】
シミュレータ３００は、シミュレーションを継続するか否かを判断し（ＳＴ１６）、継続すると判断した場合は（ＳＴ１６：Ｙｅｓ）ステップＳＴ１１の処理に戻り、継続しないと判断した場合は（ＳＴ１６：Ｎｏ）シミュレーションを終了する。具体的に説明すると、シミュレータ３００は、停止信号を送信した場合、又は全ての軌道データのシミュレーションを完了した場合は、シミュレーションを継続しないと判断し、それ以外はシミュレーションを継続すると判断する。シミュレータ３００は、停止信号を送信してシミュレーションを終了した場合には、その旨を示す画像を表示装置３６０に表示させる。これにより、操作者は、教示点を変更する必要があることを判断できる。
【００５４】
シミュレータ３００は、ステップＳＴ１１〜ＳＴ１６のルーチンにより、割り込み信号を、一定の時間間隔Ｄ１で制御装置２００に送信し、送信する割り込み信号が停止信号となった後は、割り込み信号の送信を停止する。このように、シミュレータ３００は、仮想ロボットが仮想物体に干渉したときは、ロボット１００を停止させる場合として停止信号を制御装置２００に送信する。
【００５５】
次に、図６のロボット制御処理のフローチャートについて説明する。制御装置２００は、シミュレータ３００に最初に部分軌道データを送信してから予め設定された一定時間Ｄ０が経過したか否かを判断する（ＳＴ２１）。
【００５６】
制御装置２００は、一定時間Ｄ０が経過した後（ＳＴ２１：Ｙｅｓ）、割り込み信号を受信しているかどうかを判断する（ＳＴ２２）。制御装置２００は、未だシミュレータ３００からの割り込み信号を受信していない場合は、割り込み信号を受信するまで待機する。
【００５７】
一定時間Ｄ０は、シミュレータ３００の演算処理能力、制御装置２００の信号処理能力に依存する。よって一定時間Ｄ０は、シミュレータ３００の演算処理能力及び制御装置２００の信号処理能力に応じ、シミュレータ３００が干渉を検知して停止信号を送信した際にロボット１００を停止させるまでにロボット１００が干渉しない時間に設定されている。この一定時間Ｄ０は、時間間隔Ｄ１以上、シミュレータ３００が軌道データについてシミュレーションを終える時間よりも短い時間の範囲内で、任意に設定可能である。第１実施形態では、一定時間Ｄ０は、シミュレータ３００の割り込み信号の時間間隔Ｄ１と同じに設定されている。
【００５８】
次に、制御装置２００は、割り込み信号を受信している場合、最近（直近）の割り込み信号について、割り込み信号が許可信号か否かを判断する（ＳＴ２３）。例えば、割り込み信号を１つ受信していた場合は、最近の割り込み信号はその割り込み信号となるが、割り込み信号を２つ以上受信していた場合は、これら受信した割り込み信号のうち最後に受信した割り込み信号が最近の割り込み信号となる。制御装置２００は、割り込み信号が許可信号でなければ（ＳＴ２３：Ｎｏ）、即ち停止信号であれば、そのまま処理を終了する。制御装置２００は、割り込み信号が許可信号であれば（ＳＴ２３：Ｙｅｓ）、ロボット１００の動作を開始させる（ＳＴ２４）。
【００５９】
これにより、制御装置２００は、シミュレータ３００が最初の部分軌道データの動作シミュレーションが完了した後であって、最後の部分軌道データの動作シミュレーションが完了する前に、ロボット１００の動作を開始させることとなる。
【００６０】
次に、制御装置２００は、ロボット１００を動作させながら、次の割り込み信号を待ち受ける（ＳＴ２５）。そして、制御装置２００は、次の割り込み信号を受信したとき、受信した割り込み信号が停止信号であるかどうか、即ち停止信号か許可信号かを判定する（ＳＴ２６）。
【００６１】
制御装置２００は、シミュレータ３００から受信した割り込み信号が許可信号のときは（ＳＴ２６：Ｎｏ）、ステップＳＴ２５に戻る。制御装置２００は、割り込み信号が停止信号のときは（ＳＴ２６：Ｙｅｓ）、ロボット１００の動作を停止させ（ＳＴ２７）、ロボット制御処理を終了する。
【００６２】
シミュレータ３００により軌道データの最初から最後に亘って干渉が確認されなかったら、制御装置２００は、ロボット１００の動作により１つの物品（組立品）を製造したことになる。なお、次回からは、教示点を変更しない限り、同じ軌道データに従ってロボット１００を動作させるので、２つ目以降の物品の製造については、シミュレータ３００によるシミュレーションは行わなくてもよい。つまり、第１実施形態では、教示点を変更したとき等、最初の１回のみシミュレータ３００でシミュレーションをすればよい。
【００６３】
以上の動作を、具体例を挙げて説明する。以下の例においては、予め教示作業が終了し、動作確認が完了しているロボットシステム５００において、一部の教示点のみを変更し、動作確認するような事例を想定する。
【００６４】
図７は、本発明の第１実施形態に係るロボットシステムの制御装置２００、シミュレータ３００およびロボット１００の動作の一例を示すタイムチャートである。図７の例では、計算される軌道データは３つあり、３つの軌道データの算出タイミングをＢ１１，Ｂ１２，Ｂ１３とする。各軌道データは、１単位のロボット動作に対応し、少なくとも始点となる教示点と終点となる教示点とを用いて生成される。１単位のロボットの動作とは、ある始点からある終点までの動作として定義されるので、その１つの動作を指す。各軌道データにおいて、Ｂ１１，Ｂ１２，Ｂ１３において破線で区切られた区間で部分軌道データが生成される。
【００６５】
制御装置２００は、部分軌道データの計算が終えたら、シミュレータ３００に送信するが、制御装置２００が部分軌道データを送信してからシミュレータ３００が部分軌道データに基づきシミュレーションを行うまでに遅延時間ＤＳ（＝Ｔ１−Ｔ０）が発生する。
【００６６】
図７中、各軌道データに対応する動作シミュレーションの計算時間をＳＢ１１，ＳＢ１２，ＳＢ１３とする。また、図７中、各軌道データに対応するロボット１００の動作時間をＲＢ１１，ＲＢ１２，ＲＢ１３とする。
【００６７】
制御装置２００は、シミュレータ３００が最初の部分軌道データの動作シミュレーションが完了した後であって、最後の部分軌道データの動作シミュレーションが完了する前に、ロボット１００の動作を開始させる。図７の例では、時刻Ｔ２と時刻Ｔ６の間の時刻Ｔ３でロボット１００の動作を開始させている。
【００６８】
また、制御装置２００は、シミュレータ３００が最初の部分軌道データの動作シミュレーションが完了した後であって、次の部分軌道データの動作シミュレーションが完了する前に、ロボット１００の動作を開始させるのが好ましい。図７の例では、時刻Ｔ２と時刻Ｔ４の間の時刻Ｔ３でロボット１００の動作を開始させている。
【００６９】
シミュレータ３００は、一定の時間間隔Ｄ１で制御装置２００に向けて割り込み信号Ｓ１を送信する。時間間隔Ｄ１は、操作者が任意に設定することが可能な時間である。時間間隔Ｄ１は、図７においてＤ１＝Ｔ４−Ｔ２＝Ｔ５−Ｔ４となる。この時間間隔Ｄ１は、例えば前述した一定時間Ｄ０と同じ時間に設定されている。
【００７０】
なお、一定時間Ｄ０を時間間隔Ｄ１と同じ時間に設定することで、ロボット１００は、制御装置２００が部分軌道データを最初に送信したタイミングから一定時間Ｄ０以上遅延して動作することとなる。
【００７１】
時間間隔Ｄ１は任意に設定することができるが、以下に述べる条件を成立させるのに十分な値を設定する必要がある。割り込み信号Ｓ１がシミュレータ３００から制御装置２００に送信され、制御装置２００にて割り込み信号Ｓ１を受信し、割り込み信号Ｓ１が停止信号か許容信号かを判定して、ロボット１００の動作を停止又は継続させるまでに要する時間をＤ２とする。
【００７２】
つまり、シミュレータ３００が割り込み信号Ｓ１を送信してから遅延時間Ｄ２（＝Ｔ３−Ｔ２）のタイミングでロボット１００の動作を停止又は継続させることとなる。図３の機能ブロック図で考えた場合、時間Ｄ２は、シミュレータ３００が割り込み信号Ｓ１を送信してから制御装置２００の信号処理部２３６の処理を経て、動作判断部２３７にわたり、その動作判断からサーボ制御部２３８にわたるまでの時間ともいえる。
【００７３】
よって、第１実施形態では、Ｄ１＞Ｄ２の条件が成立するように時間間隔Ｄ１が設定されている。仮にＤ１＜Ｄ２となる場合を考えると、制御装置２００において、割り込み信号Ｓ１について処理が完了していないときに、次の割り込み信号Ｓ１を受信することになり、未処理の割り込み信号が累積し、割り込み信号Ｓ１の判断が遅延する。この遅延により、ロボット１００が物体に干渉する前にロボット１００を停止させることができない場合が生じることがある。
【００７４】
ここで、シミュレータ３００で干渉を検出した場合を考える。図７においては、３つ目の動作シミュレーションの実行中、即ち時間ＳＢ１３中に時刻Ｔ７においてシミュレータ３００が干渉を検知したとする。このとき、シミュレータ３００は、割り込み信号として停止信号Ｓ３を、制御装置２００に送信する。この割り込み信号Ｓ３を受けた制御装置２００は、遅延時間Ｄ２後、ロボット１００の動作を停止させる。このとき、かかった時間においてＳＢ１３＜ＲＢ１３となる。つまり、すべての時間ＳＢｎ（ｎは数字を表す）およびすべての時間ＲＢｎに対して、
ＳＢｎ≦ＲＢｎ
の関係が成立している。つまり、シミュレータ３００の演算時間がロボット１００の動作時間に比して短い場合は、演算処理が早く終わるので、ロボット１００が干渉する前に事前に停止させることができ特に問題はない。一方、シミュレータ３００の演算時間が長い場合は、ロボット１００が干渉する前に事前に停止するように、ロボット１００の動作時間をシミュレータ３００の演算速度に合わせて長くすればよい。これにより、ロボット１００がシミュレーションで発生したエラー箇所より少し前の動作段階で停止することになる。
【００７５】
また、割り込み信号の送信の時間間隔Ｄ１は、シミュレーションの時間ＳＢｎに対して、
ＳＢｎ＞Ｄ１
の条件も満たす必要がある。つまり、１つのロボット１００の動作に対して、シミュレーションの結果（即ち割り込み信号Ｓ１）を１回以上、シミュレータ３００が送信する必要がある。これは、シミュレータ３００での仮想ロボットの動作とほぼ並行な状態で、実際のロボット１００を動作させるという意図によるものである。
【００７６】
以上、第１実施形態によれば、制御装置２００がロボット１００の軌道を計算するので、シミュレータ３００の計算負荷が低減する。また、制御装置２００は、軌道全体の計算が終了するのを待たずに、部分軌道データをシミュレータ３００に送信した後、ロボット１００を部分軌道データに従って動作させる。したがって、ロボット１００の軌道計算を開始してからロボット１００の動作を開始するまでの時間を短縮することができる。これにより、ロボット１００による物品（組立品）の生産性が向上する。また、制御装置２００は、停止信号を受信したときにはロボット１００の動作を停止させるが、シミュレータ３００による動作シミュレーションに対して実際のロボット１００の動作のタイミングを遅らせている。したがって、制御装置２００は、停止信号を受信した際に事前にロボット１００の動作を停止させることができるので、ロボット１００の動作の信頼性が確保される。
【００７７】
また、第１実施形態では、シミュレータ３００は、割り込み信号として、停止信号と許可信号のいずれかを送信し、制御装置２００は、許可信号を受けて、許可された部分軌道データに基づき、ロボット１００を動作させている。そして、制御装置２００は、停止信号を受けて、ロボット１００の動作を停止させている。これにより、ロボット１００の動作の信頼性が更に向上する。
【００７８】
また、シミュレータ３００は、仮想ロボットの干渉確認を行い、干渉する場合には停止信号を制御装置２００に送信するので、実際のロボット１００がまわりの物体に干渉する前にロボット１００を停止させることができる。したがって、ロボット１００の動作の信頼性を確保できる。
【００７９】
［第２実施形態］
次に、本発明の第２実施形態に係るロボットシステムの制御方法について説明する。図８は、本発明の第２実施形態に係るロボットシステムの制御装置、シミュレータおよびロボットの動作の一例を示すタイムチャートである。なお、ロボットシステムの構成は、第１実施形態と同様であるため、説明を省略する。
【００８０】
第１実施形態では、シミュレータ３００が、割り込み信号として、許可信号及び停止信号のいずれかを送信する場合について説明したが、第２実施形態では、停止信号のみを送信する。即ち、シミュレータ３００は、許可信号を送信しない。
【００８１】
したがって、制御装置２００は、最初の部分軌道データを送信してから一定時間Ｄ０が経過してからロボット１００の動作を開始させる。そして、制御装置２００は、停止信号を受信したときにロボット１００の動作を停止させればよい。一定時間Ｄ０は、第１実施形態と同様、停止信号を受信してからロボット１００を停止させても、ロボット１００が干渉する前に停止するよう設定しておけばよい。
【００８２】
これにより、第２実施形態では、第１実施形態と同様の効果を奏する。即ち、ロボット１００の動作の信頼性を確保しつつ、シミュレータ３００の計算負荷を低減しながら、ロボット１００の軌道計算を開始してからロボット１００の動作を開始するまでの時間を短縮される。したがって、ロボット１００による物品（組立品）の生産性が向上する。
【００８３】
［第３実施形態］
次に、本発明の第３実施形態に係るロボットシステムについて説明する。図９は、本発明の第３実施形態に係るロボットシステムを示す概略図である。なお、第３実施形態のロボットシステムについて、第１実施形態のロボットシステムと同様の構成については、同一符号を付して説明を省略する。
【００８４】
ロボットシステム５００Ａは、ロボット１００、制御装置（ロボットコントローラ）２００、シミュレータ３００、入力装置３５０、表示装置３６０及びロボット操作端末４００のほか、撮像装置としてのカメラ６００を備えている。
【００８５】
カメラ６００は、ロボット１００のロボットハンド１０２により把持する把持対象物である部品Ｗ１を撮像するためのものであり、架台１６０に対して相対的に移動しないように不図示の枠体等に固定されている。
【００８６】
シミュレータ３００及び制御装置２００は、第１実施形態と同様の処理を行うが、図４のステップＳＴ１にて生成するロボットの軌道データが、第１実施形態と異なる。
【００８７】
即ち、制御装置２００は、図４のステップＳＴ１では、カメラ６００により撮像された撮像画像から、部品Ｗ１の位置及び姿勢を計算し、部品Ｗ１の位置及び姿勢に応じて、ロボットハンド１０２が部品Ｗ１に向かう軌道データを計算する。つまり、部品Ｗ２に組付ける部品Ｗ１の位置及び姿勢は、毎回異なるため、軌道データは、物品（組立品）を製造する毎に毎回計算することとなる。
【００８８】
このように、カメラ６００の画像データにより、１つの物品（組立品）を製造する毎に毎回軌道データを計算する場合には、シミュレータ３００は、毎回計算される軌道データに対して毎回シミュレーションを行う。
【００８９】
第３実施形態によれば、毎回変更される軌道データに対してシミュレーションを行う場合、軌道データの計算、シミュレーション及びロボット１００の動作を並行して行うことで、ロボット１００による物品（組立品）の生産性が向上する。
【００９０】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されない。
【００９１】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００９２】
また、上述の実施形態では、ロボットアーム１０１が垂直多関節のロボットアームの場合について説明したが、これに限定するものではない。ロボットアーム１０１が、例えば、水平多関節のロボットアーム、パラレルリンクのロボットアーム、直交ロボット等、種々のロボットアームであってもよい。
【００９３】
また、エンドエフェクタがロボットハンド１０２の場合について説明したがこれに限定するものではない。例えばエンドエフェクタが電動ドライバー等のツールであってもよい。
【００９４】
また、上述の実施形態では、制御装置２００及びシミュレータ３００がそれぞれ１つのＣＰＵを有している場合について説明したが、これに限定するものではなく、それぞれが複数のＣＰＵを有していてもよい。そして、各ＣＰＵに図３に示す各部として機能させてもよい。
【符号の説明】
【００９５】
１００…ロボット、２００…制御装置、３００…シミュレータ、５００…ロボットシステム
【図１】
2016221659.tif 000003
【図２】
2016221659.tif 000004
【図３】
2016221659.tif 000005
【図４】
2016221659.tif 000006
【図５】
2016221659.tif 000007
【図６】
2016221659.tif 000008
【図７】
2016221659.tif 000009
【図８】
2016221659.tif 000010
【図９】
2016221659.tif 000011