(57)【特許請求の範囲】
【請求項１】
経時的に供給される多数の対象物を搬送する搬送手段の走行量を検出する走行量検出手段と、
前記搬送手段によって搬送される対象物を認識する視覚センサと、
前記搬送手段の搬送経路の近傍に配置された複数のロボットと、
前記視覚センサによって認識された対象物毎に、当該対象物に対する作業を担当する作業担当ロボットの指定を、前記作業が当該対象物に対して実行される前に予め行ない、該指定の内容を記憶する作業担当ロボット予約手段と、
前記複数のロボットを制御するロボット制御手段とを備えた、複数のロボットにトラッキング動作を行なわせるための視覚センサ・ロボットシステムであって、
前記視覚センサは、
前記搬送経路上に視野を持つカメラ手段と、
前記カメラ手段に撮影を行なわせて前記対象物を含む画像を取得する画像取得手段と、
前記画像取得手段によって取得された画像を処理して前記対象物の位置に関する情報を取得する画像処理手段を備えており、
前記作業担当ロボット予約手段は、
前記視覚センサによって認識された対象物の内で前記作業担当ロボット予約手段による作業担当ロボットの指定が済んでいない対象物毎に、
前記画像処理手段によって得られる当該対象物の位置に関する情報と、前記作業担当ロボット予約手段によって記憶されている作業担当ロボットの指定内容に基づき、前記複数のロボットの中の少なくとも１つのロボットについて、該ロボットがトラッキング動作を含む作業が実行可能なロボットであるか否かを判断する判断手段を含み、
前記作業担当ロボット予約手段による作業担当ロボットの指定は、該判断手段による判断の結果に基づいて行われるようになっており、
前記ロボット制御手段は、
前記作業担当ロボット予約手段による作業担当ロボットの指定がなされた対象物毎に、前記作業担当ロボット予約手段によって当該対象物の作業担当ロボットに指定された作業担当ロボットに、前記走行量検出手段によって検出された前記搬送手段の走行量に基づくとともに、前記視覚センサによって取得された当該対象物の位置に関する情報を用いて補正されたトラッキング動作を含む作業を実行させる手段を備えている、
前記複数のロボットにトラッキング動作を行なわせるための視覚センサ・ロボットシステム。
【請求項２】
前記作業担当ロボット予約手段は、
作業担当ロボット指定内容に関する情報の書き込みと読み出しが可能な予約テーブルを含み、
前記判断手段は、
画像処理手段により取得される、前記作業担当ロボット予約手段による作業担当ロボットの指定が済んでいない対象物の位置に関する情報と、前記複数のロボットの各々について設定された動作範囲に関する情報に基づいて、当該対象物に対する作業について要求されるロボットの要動作期間を前記複数のロボットの内の少なくとも一つについて求める手段と、
前記要動作期間を表わす情報と前記予約テーブルに書き込まれている、前記動作予約が済んでいる対象物に対する作業担当ロボット指定内容に関する情報とを対照し、前記少なくとも一つのロボットについて指定の適否を判断し、該指定が適当であると判断された場合に、前記要動作期間を前記予約テーブルに書き込む手段を備え、
前記ロボット制御手段は、対象物に対するトラッキング動作を含む作業の完了時に、前記予約テーブルに書き込まれた当該対象物について、作業担当ロボットの指定内容をクリアする手段を備えている、請求項１に記載された複数のロボットにトラッキング動作を行なわせるための視覚センサ・ロボットシステム。
【請求項３】
前記作業担当ロボット予約手段は、
前記複数のロボットのいずれも作業担当ロボットに指定出来なかった場合に、エラー信号を出力する手段を備えている、請求項１または請求項２に記載された複数のロボットにトラッキング動作を行なわせるための視覚センサ・ロボットシステム。
【請求項４】
前記視覚センサは、更に、前記搬送手段が所定距離を走行したことを表わす検出出力が前記走行量検出手段から与えられる毎に前記画像取得と画像処理を実行する手段を備え、
前記所定距離は、前記搬送経路に沿った前記視野の長さから前記搬送経路に沿ったに前記対象物の長さを差し引いた距離を下回らず、且つ、ほぼ等しくなるように予め定められている、請求項１から請求項３のいずれか１項に記載された複数のロボットにトラッキング動作を行なわせるための視覚センサ・ロボットシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のロボットにトラッキング動作を行なわせるための視覚センサ・ロボットシステムに関し、更に詳しく言えば、ベルトコンベアのような搬送手段によって移動中の対象物（例えば、組立ワーク）の位置を視覚センサを用いて認識し、その結果に基づて補正されたトラッキング動作を複数のロボットに行なわせるようにした視覚センサ・ロボットシステムに関する。本発明は、特に、高い供給頻度でランダムにコンンベア搬送される多数の物品に対するトラッキング動作が要求されるアプリケーション（例えば、部品、食品等の物品のパッキング）に適用して有効なものである。
【０００２】
【従来の技術】
工場や流通センターの作業ラインにおいては、作業対象物となるワークがコンベアで次々と作業位置に搬送されて来るシステムが幅広く採用されている。このようなワーク（対象物）に対してロボットを用いて作業を実行する方式には、コンベアを間欠駆動する方式と連続駆動する方式とがあるが、作業効率の観点から後者の方法が用いられるケースが多くなっている。
【０００３】
コンベアで連続搬送されるワークに対する作業をロボットに行なわせる場合には、視覚センサとロボットを組み合わせたシステムが広く利用されている。視覚センサは、ロボットの作業位置（トラッキング範囲）の上流側でワークの画像を取得し、これを解析してワーク位置（必要に応じて、ワーク姿勢を含む。以下、同じ。）を求める。求められたワーク位置を表わすデータ（基準位置からのずれを表わすデータ）は、ロボットのトラッキング動作の補正に用いられる。
【０００４】
図１は、このような方式を採用した視覚センサ・ロボットシステムの概略を説明するための図である。
同図において、符号１はワーク供給源１００に接続された直線搬送コンベアを表わしており、その駆動軸は駆動部２に内蔵されたモータによって駆動される。この駆動軸乃至駆動モータの回転量はパルスコーダ３によってパルス列の形で出力される。符号４，４’は、ワークを検出するセンサであり、コンベア１上に載置されて搬送されて来るワークＷを検出位置５０で検出する。センサ４，４’には例えば光学式のものが使用される。
【０００５】
符号ＶＳは、画像処理装置２０とカメラ３０（例えば、ＣＣＤカメラ）から構成される視覚センサを表わしており、符号３１はカメラ３０の視野を表わしている。図中に破線で示したように、画像処理装置２０はロボットコントローラＲＣに内蔵された形態をとっている。ロボットコントローラＲＣは、ロボット制御部１０を有し、このロボット制御部１０は内蔵された画像処理装置２０からワークＷの位置・姿勢を表わす検出信号を得てロボットＲＢの制御に利用する。また、ロボットコントローラＲＣはセンサ４，４’並びにパルスコーダ３に接続されており、前者の検出信号はワークＷの到来の認識に利用され、後者の出力はワークＷの搬送位置乃至搬送量の認識に利用される。
【０００６】
今、ロボットＲＢの動作として、（１）ワークＷが予め設定されたトラッキング開始ライン６０に到達した時点から、Ｐ0 を初期位置とするトラッキング動作を開始し、（２）教示位置付近のＱ0 でワークＷと遭遇し、（３）ワークＷがトラッキング終了ライン７０（位置Ｑ1 ）に到達するまでにワークＷに対する把持作業を完了してコンベア１から離れ、（４）ワーク収納部２００上の収納位置Ｑ2 でワークＷを放し、（５）初期位置Ｐ0 へ戻る、という動作を考えると、この動作の実行手順は例えば次のようなものとなる。
【０００７】
コンベア１上に供給されたワークＷがセンサ４，４’による検出位置に到来すると、センサ４，４’から検出信号が出力され、その時点におけるパルスコーダ計数出力値Ｎs がロボットコントローラＲＣ内に記憶される。ワークＷが更に移動して予め教示された撮影位置（ラインＡの位置）に到来すると、カメラ３０による撮影が実行されてその画像が画像処理装置２０に取り込まれる。
【０００８】
カメラ３０による撮影のタイミングは、パルスコーダ計数出力値Ｎs からのインクリメンタル量を監視することで決定される。このインクリメンタル量は、スケールファクタαを媒介にして、センサ４，４’による検出位置から撮影位置（ラインＡの位置）までの距離を表わす量となっている。
【０００９】
取得された画像は、画像処理装置２０内で処理され、ワークＷの位置・姿勢を認識する。ワークＷの位置・姿勢の認識は、例えばワークＷ上の特徴点ａ，ｂ，ｃ，ｄなどの位置を認識し、予め準備作業時に作成された基準画像データと比較して基準位置からのずれ量を求め、結果を表わすデータをロボット制御部１０へ伝達することで達成される。
【００１０】
次に、パルスコーダ計数出力値ＮのＮs からのインクリメンタル量がワークＷのトラッキング開始位置（ライン６０）への到達を表わす値となったならば、トラッキング座標系Σtr（Ｏtr-ｘｙ）の移動を開始させ、その直後にトラッキング座標系上でロボットＲＢの移動（トラッキング動作）を開始させる。ここで、トラッキング座標系Σtrとはコンベアと等速度で同方向に移動するように設定された座標系のことで、その初期位置はベース座標系Σb よりも距離Ｌ0 だけ上流側に原点を持ち、且つ、そのｘ軸がベース座標系Σb のＸ軸とともに、コンベア１の走行方向と一致するように設定される。ここで、距離Ｌ0 は教示点Ｑ0 の位置とトラッキング開始ライン６０までの距離とされる。
【００１１】
ロボットＲＢの移動経路は、トラッキング座標系Σtr上で教示経路を実現する形で行なわれるが、補間計算周期で繰り返される移動目標位置の計算にあたっては、視覚センサＶＳで検出されたずれ量を補償するようにロボット位置（通常、姿勢も含む）の補正が行われる。
【００１２】
移動速度を適当な値に教示しておけば、ロボットＲＢはほぼ図１に符号９０で示したような曲線軌道に沿ってワークＷに接近し、トラッキング範囲内の適当な位置Ｑ0 でワークＷに追いつくことになる。なお、直線軌道８０は、仮にベース座標系Σb （Ｏb −ＸＹ）上でロボットＲＢを制御した場合の移動経路の例を表わしている。
【００１３】
ワークＷに追いついてからは、トラッキング範囲で把持作業を完了し、ライン７０上の位置Ｑ1 でトラッキング動作を終了し、コンベア１から離れ、ワーク収納部２００への収納位置Ｑ2 でワークＷを放し、初期位置Ｐ0 へ復帰する。
【００１４】
このようなシステムの一つの問題点は、図１中にワークＷ’，Ｗ”で例示したような短い間隔Ｄを含むランダムな間隔でワークが供給された場合、ロボットＲＢが１台しか配備されていないために、後続するワークＷ”に対するトラッキング動作の実行が困難になるということである。この問題を回避するために従来とられてきた方策には、次のようなものがある。
１．ランダムな間隔で供給されるワークをなんらかの整列手段を用いて整列（搬送方向あるいはそれに垂直な方向について）させた後、複数のロボットでこれを処理する方法。この方法を用いると、整列手段、その制御手段等が必要となり、システムを簡素化する上で好ましくない。
２．ランダムな間隔で供給されるワークを１台のロボットで可能な限り処理し、処理出来なかったワークを１台目のロボットの下流側で再検出し、これを１台目のロボットの下流側に配備した２台目以降のロボットで処理する方法。この方法を用いるとワークの再検出手段が必要となり、やはりシステムを簡素化する上で好ましくない。
【００１５】
ロボットの上流側でワークの位置を検出するための機構としては、上述した例のように、カメラ３０を備えた視覚センサＶＳとその上流側でワークを事前検出するセンサ４，４’を組み合わせたものの他に、これを改良し、カメラ３０の上流側での事前検出を不要（従って、センサ４，４’は不要。）としたシステムも提案されている。
【００１６】
この改良型のワーク位置検出方式は、ワークの供給頻度が高い場合に画像取得・処理を効率的に行えるという利点を有しているが、１台のロボットの処理能力を越えた頻度でワーク供給がなされた場合には、せき止め機構等の整列手段を用いたり、１台目のロボットの下流側でワークの再検出を行なわなければならないという点にかわりはない。
【００１７】
【発明が解決しようとする課題】
そこで本発明の目的は、上記従来技術の問題点を解決することにある。即ち、本発明は、コンベア上のランダムな位置に載置され、１台のロボットの処理能力を越える可能性があるランダムな間隔で供給される対象物に対して、ロボットのトラッキング動作を伴う作業を手際よく実行すことが出来る視覚センサ・ロボットシステムを提供することにある。
【００１８】
【課題を解決するための手段】
本発明は、視覚センサによる対象物の検出結果に基づいて対象物毎に、当該対象物に対する作業を担当するロボット（作業担当ロボット）の指定を行なう作業担当ロボット予約手段をシステムに組み入れ、ワーク毎に指定された作業担当ロボットに当該ワークに関する作業を実行させるようにすることで、上記技術課題を解決したものである。
【００１９】
本発明に従ったシステムで使用される視覚センサは、搬送経路上に視野を持つカメラ手段と、カメラ手段に撮影を行なわせて対象物を含む画像を取得する画像取得手段と、該画像取得手段によって取得された画像を処理して対象物の位置に関する情報を取得する画像処理手段を備える。
【００２０】
また、作業担当ロボット予約手段は、前記視覚センサによって認識された対象物の内で前記作業担当ロボット予約手段による作業担当ロボットの指定が済んでいない対象物毎に、前記画像処理手段によって得られる当該対象物の位置に関する情報と、前記作業担当ロボット予約手段によって記憶されている作業担当ロボットの指定内容に基づき、前記複数のロボットの中の少なくとも１つのロボットについて、該ロボットがトラッキング動作を含む作業が実行可能なロボットであるか否かを判断する判断手段を含み、前記作業担当ロボット予約手段による作業担当ロボットの指定は、該判断手段による判断の結果に基づいて行われるようになっている。
【００２１】
そして、ロボット制御手段は、前記作業担当ロボット予約手段による作業担当ロボットの指定がなされた対象物毎に、前記作業担当ロボット予約手段によって当該対象物の作業担当ロボットに指定された作業担当ロボットに、前記走行量検出手段によって検出された前記搬送手段の走行量に基づくとともに、前記視覚センサによって取得された当該対象物の位置に関する情報を用いて補正されたトラッキング動作を含む作業を実行させる手段を備えている。
【００２２】
好ましい実施形態において、ロボット予約手段は、作業担当ロボット指定内容に関する情報の書き込みと読み出しが可能な予約テーブルを含み、前記判断手段は、画像処理手段により取得される、前記作業担当ロボット予約手段による作業担当ロボットの指定が済んでいない対象物の位置に関する情報と、前記複数のロボットの各々について設定された動作範囲に関する情報に基づいて、当該対象物に対する作業について要求されるロボットの要動作期間を前記複数のロボットの内の少なくとも一つについて求める手段と、前記要動作期間を表わす情報と前記予約テーブルに書き込まれている、前記動作予約が済んでいる対象物に対する作業担当ロボット指定内容に関する情報とを対照し、前記少なくとも一つのロボットについて指定の適否を判断し、該指定が適当であると判断された場合に、前記要動作期間を前記予約テーブルに書き込む手段を備える。
その一方、ロボット制御手段は、対象物に対するトラッキング動作を含む作業の完了時に、前記予約テーブルに書き込まれた当該対象物について、作業担当ロボットの指定内容をクリアする手段を備えている。また、ロボット予約手段は、更に、複数のロボットのいずれも指定出来なかった場合にエラー信号を出力する手段を備えていることが好ましい。
【００２３】
また、視覚センサによる対象物の認識に関しては、搬送手段が所定距離を走行したことを表わす検出出力が走行量検出手段から与えられる毎に画像取得と画像処理を実行する手段を用いることが出来る。すべてのワークについて確実な認識を可能にするためには、カメラによる撮影間隔を表わす所定距離を、搬送経路に沿ったカメラ視野の長さから搬送経路に沿ったに対象物の長さを差し引いた距離を下回らず、且つ、ほぼ等しくなるように予め定めることが適当である。
【００２４】
【作用】
本発明の視覚センサ・ロボットシステムの最も重要な特徴は、視覚センサにより検出された対象物毎に作業担当ロボットの指定を行なう作業担当ロボット予約手段を導入したことにより、ワーク毎に指定される作業担当ロボットに当該ワークに関する作業を実行させることが可能になった点である。
【００２５】
視覚センサは、搬送経路上に視野を持つカメラ手段によって、対象物を含む画像を取得し、取得された画像を処理して対象物の位置に関する情報を取得する。
【００２６】
作業担当ロボット予約手段は、画像処理手段により取得された、作業担当ロボットの指定が済んでいない対象物の位置に関する情報と、作業担当ロボットの指定が済んでいる対象物に対するロボットの予約内容に関するに情報に基づいて、トラッキング動作を含む作業を実行可能なロボットを複数のロボットの中から選んで指定する。
【００２７】
そして、ロボット制御手段は、作業担当ロボットの指定がなされた対象物毎に、作業担当ロボット予約手段によって指定された作業担当ロボットに、走行量検出手段によって検出された前記搬送手段の走行量に基づくとともに、視覚センサによって取得された当該対象物の位置に関する情報を用いて補正されたトラッキング動作を含む作業を実行させる。
【００２８】
好ましい実施形態においては、各象物に対する作業担当ロボット指定内容に関する情報は予約テーブルに設定されたメモリ領域に書き込まれる。一方、視覚センサによって取得された、作業担当ロボットの指定が済んでいない対象物の位置に関する情報と複数のロボットの各々について設定された動作範囲に関する情報に基づいて、当該対象物に対する作業について要求されるロボットの要動作期間が複数のロボットの内の少なくとも一つについて求められる。
【００２９】
そして、要動作期間を表わす情報と、予約テーブルに書き込まれている作業担当ロボットの指定が済んでいる対象物に対するロボット指定内容に関する情報とが対照され、少なくとも一つのロボットについて予約の適否が判断される。該予約が適当であると判断された場合には、その要動作期間が予約テーブルに書き込まれる。
【００３０】
また、上記判断に基づいて指定された作業担当ロボットが所要の作業を完了した時点で、予約テーブルに書き込まれた当該対象物についての作業担当ロボットの指定内容はクリアされる。更に、システムに無理がある場合（例えば、対象物の供給頻度が過大である場合）に備えて、作業担当ロボット予約手段が複数のロボットのいずれも指定出来なかった場合にエラー信号を出力するようにしても良い。
【００３１】
視覚センサによる対象物の認識方式は、一般には任意であり、視覚センサのカメラによる撮影タイミング等を決定するために、視覚センサの上流側で対象物の事前検出を行なう方式（図１で説明した方式）を用いることが出来る。しかし、対象物の事前検出を行なわない方式を採用することも出来る。この方式を採用する場合には、搬送手段が所定距離を走行したことを表わす検出出力が走行量検出手段から与えられる毎に画像取得と画像処理が実行される。
【００３２】
その際、すべてのワークについて確実な認識を可能にするためには、カメラによる撮影間隔を表わす所定距離を、搬送経路に沿ったカメラ視野の長さから搬送経路に沿ったに対象物の長さを差し引いた距離を下回らず、且つ、ほぼ等しくなるように予め定めることが適当である。この方式を採用した視覚センサ・ロボットシステムは、対象物の事前検出を行なう手段が不要であり、また、対象物の供給頻度が高い場合に撮影と画像処理の回数を減らすことが出来る利点がある。
【００３３】
【発明の実施の形態】
図２は、本発明に係る視覚センサ・ロボットシステムの全体配置の概要を図１と同様の形式で表わしたもので、対応し合う要素の指示には適宜共通の符号を用いた。ここに示した本実施形態では、トラッキング動作を行なうロボットは２台（ＲＢ１，ＲＢ２）であり、また、ロボットのトラッキング動作のためのワーク位置検出について、前述の改良型の方式（視覚センサのカメラの撮影タイミングを定めるための事前検出は行なわず。）が採用されている。
【００３４】
同図に示されているように、多数のワークを経時的に供給するワーク供給源１００に接続された直線搬送コンベア１の駆動軸は、駆動部２に内蔵されたモータによって駆動される。この駆動軸あるいは駆動モータの回転量はパルスコーダ３によってパルス列の形で出力される。
【００３５】
符号ＶＳは、画像処理装置２０とカメラ３０（例えば、ＣＣＤカメラ）から構成される視覚センサを表わしており、符号３１はカメラ３０の視野を表わしている。図中に破線で示したように、画像処理装置２０はロボットコントローラＲＣに内蔵された形態をとっている。
【００３６】
ロボットコントローラＲＣは、２台のロボットＲＢ１，ＲＢ２のためのロボット制御部１０を有している。このロボット制御部１０は、内蔵された画像処理装置２０からワークＷ，Ｗ’，Ｗ”・・・の位置を表わすデータを得るとともに、パルスコーダ３の計数出力値Ｎを利用して、２台のロボットＲＢ１，ＲＢ２のいずれにトラッキング動作を行なわせるかの指定（予約）を行い、指定されたロボットのトラッキング動作を制御する。
【００３７】
図３は、ロボットコントローラＲＣの内部構成の概略を要部ブロック図で示したものである。同図において、ロボットコントローラＲＣに内蔵された画像処理装置２０はマイクロプロセッサからなるＣＰＵ（中央演算処理装置）２１を有しており、ＣＰＵ２１にはカメラインターフェイス２２、フレームメモリ（画像メモリ）２３、プログラムメモリ２４、画像処理プロセッサ２５、データメモリ２６、モニタインターフェイス２７がバスＢＳ”を介して各々接続されている。
【００３８】
カメラインターフェイス２２にはカメラ３０が接続されており、カメラインターフェイス２２を介して撮影指令が送られると、カメラ３０に設定された電子シャッタ機能（シャッタスピードは、例えば１０００分の１秒）により撮影が実行され、カメラインターフェイス２２を介して映像信号がグレイスケール信号の形でフレームメモリ２３に格納される。モニタインターフェイス２７にはモニタＣＲＴ４０が接続されており、カメラ３０が撮影中の画像、フレームメモリ２３に格納された過去の画像、画像処理プロセッサ２５による処理を受けた画像等が必要に応じて表示される。
【００３９】
フレームメモリ２３に格納されたワークＷの映像信号は、プログラムメモリ２４に格納された解析プログラムに従って画像処理プロセッサ２５を利用して解析され、ワークＷの位置が求められる。ここでは、ワークＷは図２中に符号ａ，ｂ，ｃ，ｄで示したように、４点の特徴点を有しているものとし、これら４点のすべてが検出された場合に、それに基づいてワークの姿勢が計算されるものとする。
【００４０】
データメモリ２６は、視覚センサシステムに関連した各種の設定値を格納する領域、ＣＰＵ２１が実行する各種処理に必要なデータの一時記憶に利用される領域の他に、求められたワークＷ，Ｗ’，Ｗ”・・・の位置を表わすデータ（各ワークの代表点ａ〜ｄのデータ）を後述する態様で格納する領域（ワークキュー）を含んでいる。
【００４１】
そして、ＣＰＵ２１はロボットコントローラＲＣ内部でバスＢＳを介して次に説明するロボット制御部１０のＣＰＵ１１にバス結合されている。これにより、視覚センサ２０全体は実質的にロボット制御部１０と一体の機器として構成される。即ち、本実施形態では、符号１０，２０を含む全体が視覚センサ内蔵型のロボットコントローラＲＣを構成している。
【００４２】
ロボット制御部１０は、バスＢＳを介して画像処理装置２０のＣＰＵ２１とバス結合されたＣＰＵ１１を有している。このＣＰＵ１１には、ＲＯＭ１２、ＲＡＭ１３、不揮発性メモリ１４、デジタルシグナルプロセッサ（ＤＳＰ）用データメモリ１７、デジタルシグナルプロセッサ（ＤＳＰ）１８が、各々バスＢＳ’を介して接続されている。ＲＯＭ１２には、システム全体を制御する為のプログラムが格納され、ＲＡＭ１３はＣＰＵ処理のためのデータの一時記憶に使用されるメモリである。
【００４３】
不揮発性メモリ１４には、各ロボットＲＢ１，ＲＢ２のための動作プログラム、座標系設定データ、その他各種設定パラメータ等の他に、後述する態様でロボットＲＢ１，ＲＢ２の予約（トラッキング動作の割り振り指定）を行うためのプログラムが格納される。
【００４４】
ＤＳＰ１８はパルスコーダ３の計数出力信号を処理する為のプロセッサで、ＤＳＰ用データメモリ１７はＤＳＰ１８による諸処理データや設定パラメータを格納するＤＳＰ専用のメモリである。ＤＳＰ１８は、ＣＰＵ１１の命令に従って、任意の時点においてパルスコーダ３の計数出力を検出し、ＤＳＰ用データメモリ１７の所定エリアに書き込む機能を有している。また、画像処理装置２０のＣＰＵ２１からも、ＣＰＵ１１を介してＤＰＳ用データメモリ１７にアクセス可能となっている。
【００４５】
更に、本実施形態におけるロボット制御部１０は、２台のロボットＲＢ１，ＲＢ２を制御するために、軸制御器以下について２系統でバスＢＳ’に接続されている。コンベア１の上流側のロボットＲＢ１については、軸制御器１５、サーボ回路１６を介して、ロボットＲＢ１の機構部に接続され、同下流側のロボットＲＢ２については、軸制御器１５’、サーボ回路１６’を介して、ロボットＲＢ２の機構部に接続されている。
【００４６】
以下、このような視覚センサ・ロボットシステムを用いてトラッキング動作を伴う作業を実行するための準備作業及び処理手順について説明する。なお、画像処理装置２０のプログラムメモリ２４、データメモリ２６及びロボット制御部１０内の各メモリには、予め必要な処理を実行する為のプログラム及び関連設定データが格納済みであるものとする。
【００４７】
また、トラッキングの動作手順は、ロボットＲＢ１，ＲＢ２の各々について、図１の関連説明で述べた動作と同様のものとする。即ち、上流側のロボットＲＢ１に関しては、
（１）ワークがトラッキング開始ライン６０に到達した時点から、Ｐ0 を初期位置とするトラッキング動作を開始し、
（２）教示位置付近の点Ｑ0 でワークと遭遇し、
（３）ワークがトラッキング終了ライン７０（位置Ｑ1 ）に到達するまでにワークに対する把持作業を完了し、
（４）コンベア１から側方に離隔してワーク収納部２００上の収納位置Ｑ2 でワークを放し、
（５）初期位置Ｐ0 へ戻る、という動作を考える。
【００４８】
同様に、下流側のロボットＲＢ２に関しては、
（１）ワークがトラッキング開始ライン６０' に到達した時点から、Ｐ0'を初期位置とするトラッキング動作を開始し、
（２）教示位置付近の点Ｑ0'でワークと遭遇し、
（３）ワークがトラッキング終了ライン７０' （位置Ｑ1'）に到達するまでにワークに対する把持作業を完了し、
（４）コンベア１から側方に離隔してワーク収納部２００' 上の収納位置Ｑ2'でワークを放し、
（５）初期位置Ｐ0'へ戻る、という動作を考える。
【００４９】
これら動作は、視覚センサＶＳによって位置を求めたワークの一つ一つのワークについて、ロボット制御部１０内で作業を担当するロボット（ＲＢ１あるいはＲＢ２）が予約された後に、予約内容に従って実行される。以下、システムを動作させるための準備作業からシステム動作時の処理までの概要を、順を追って説明する。
【００５０】
［準備作業］
（１）スケールファクタの決定
従来と同様の下記手順により、コンベア１の走行距離ｌとパルスコーダ３の計数出力（インクリメンタル量ΔＮ）との関係を表わすスケールファクタα＝ｌ／ΔＮを求める。
１．ロボットＲＢ１（またはＲＢ２）の動作範囲の位置にワークＷをセットし、その時のパルスコーダ３の計数出力Ｎ1 をロボット制御部１０のＤＳＰ用データメモリ１７に格納する。
２．ロボットＲＢ１（またはＲＢ２）を手動操作して、ワークＷ上の適当な定点にタッチし、その時のロボット位置（Ｘ1 ，Ｙ1  ，Ｚ1）をＤＳＰ用データメモリ１７に格納する。
【００５１】
３．コンベア１を適当な距離だけ走行させ、ロボットＲＢ１（またはＲＢ２）の動作範囲内の適当な位置にワークＷを停止させ、その時のパルスコーダ３の計数出力Ｎ2 をＤＳＰ用データメモリ１７に格納する。
４．ロボットＲＢ１（またはＲＢ２）を手動操作してワークＷ上の適当な定点にタッチし、その時のロボット位置（Ｘ2 ，Ｙ2 ，Ｚ2 ）をＤＳＰ用データメモリ１７に格納する。
【００５２】
５．ロボットコントローラＲＣに、α＝（Ｘ2 −Ｘ1 ）／（Ｎ2 −Ｎ1 ）の  計算を行わせてスケールファクタαを求め、ロボット制御部１０の不揮発性メモリ１４と画像処理装置２０のデータメモリ２６に格納する。
【００５３】
（２）センサ座標系Σs の設定
適当な手段により、視覚センサＶＳにセンサ座標系Σs を設定する。例えば、ベース座標系Σb 上の座標値が判っている位置に公知のキャリブレーション用治具を配置し、画像処理装置２０のプログラムメモリ２４に格納されたキャリブレーション用のプログラムを起動させ、カメラ３０の画素値データをセンサ座標系Σs のデータに換算する為のデータを画像処理装置２０のデータメモリ２６に格納する。また、その結果を利用して、センサ座標系Σs とロボットＲＢ１のベース座標系Σb 及びロボットＲＢ２のベース座標系Σb'の関係を表わすデータをロボット制御部１０の不揮発性メモリ１４に格納する。
【００５４】
（３）カメラ３０の視野３１内のコンベア１上にワークＷをセットし、その時点におけるパルスコーダ計数出力値Ｎvsをロボット制御部１０のＤＳＰ用データメモリ１７と画像処理装置２０のデータメモリ２６に格納する。また、カメラ３０による撮影を実行し、ワークＷの画像を基準画像として取り込み、フレームメモリ２３に格納する。
【００５５】
（４）コンベア１を走行させ、ロボットＲＢ１にトラッキング動作を開始させるに適した位置（ライン６０上）にワークＷが到達したら、コンベア１を停止させる。そして、その時点のパルスコーダ計数出力値Ｎ60と先に記憶したＮvsとの差（インクリメンタル量）ΔＮ60-vs ＝Ｎ60−Ｎvsを計算して、ＤＳＰ用データメモリ１７に格納する。
【００５６】
（５）コンベア１を再び更に走行させ、ロボットＲＢ１がワークＷに対する作業を開始するに適した位置にワークＷをもって来る。そして、その時点のパルスコーダ計数出力値Ｎtcと先に記憶したＮvsからΔＮtc-vs ＝Ｎtc−Ｎvsを計算して、ＤＳＰ用データメモリ１７に格納する。
【００５７】
（６）ロボットＲＢ１に把持作業の実行に必要な動作を教示する。ここでは、その詳細は省略する。
（７）コンベア１を再び更に走行させ、ロボットＲＢ１のトラッキング動作を終了させるに適した位置（ライン７０上）にワークＷをもって来て、コンベア１を停止させる。そして、その時点のパルスコーダ計数出力値Ｎ70と先に記憶したＮvsからΔＮ70-vs＝Ｎ70−Ｎvsを計算し、結果をＤＳＰ用データメモリ１７に格納する。
【００５８】
上記（４）〜（７）と同様の手続きはロボットＲＢ２についても下記（８）〜（１１）の手順で実行される。
（８）コンベア１を更に走行させ、ロボットＲＢ２にトラッキング動作を開始させるに適した位置（ライン６０' 上）にワークＷが到達したら、コンベア１を停止させる。そして、その時点のパルスコーダ計数出力値Ｎ60' と先に記憶したＮvsとの差（インクリメンタル量）ΔＮ60'-vs＝Ｎ60' −Ｎvsを計算し、ＤＳＰ用データメモリ１７に格納する。
【００５９】
（９）コンベア１を再び更に走行させ、ロボットＲＢ２がワークＷに対する作業を開始するに適した位置にワークＷをもって来る。そして、その時点のパルスコーダ計数出力値Ｎtc' と先に記憶したＮvsからΔＮtc'-vs＝Ｎtc' −Ｎvsを計算し、ＤＳＰ用データメモリ１７に格納する。
【００６０】
（１０）ロボットＲＢ２に把持作業の実行に必要な動作を教示する（詳細は省略）。
（１１）コンベア１を再び更に走行させ、ロボットＲＢ２のトラッキング動作を終了させるに適した位置（ライン７０' 上）にワークＷをもって来て、コンベア１を停止させる。そして、その時点のパルスコーダ計数出力値Ｎ70' と先に記憶したＮvsからΔＮ70'-vs＝Ｎ70' −Ｎvsを計算し、結果をＤＳＰ用データメモリ１７に格納する。
【００６１】
（１２）ロボットＲＢ１のためのトラッキング座標系Σtrの設定
ロボットＲＢ１とコンベア１の座標系の共有化を行なう為に、トラッキング座標系Σtrを次の条件で設定する。なお、ここではＸ軸がコンベアの走行方向と一致したベース座標系Σb が設定済みであるものとする。
即ち、トラッキング座標系Σtrはベース座標系Σb と同姿勢で設定され、トラッキング座標系Σtrが移動を開始するまでの原点位置（Ｘ0 ，Ｙ0 ，Ｚ0 ）は、
Ｘ0 ＝−Ｌ0
Ｙ0 ＝０
Ｚ0 ＝０
であり、
トラッキング座標系Σtr上での座標値（ｘ，ｙ，ｚ）とベース座標系Σb 上での座標値（Ｘ，Ｙ，Ｚ）の変換関係は、
ｘ＝Ｘ−Ｌ0
ｙ＝Ｙ
ｚ＝Ｚ
で表わされるものとする。但し、Ｌ0 は教示点Ｑ0 の位置とトラッキング開始ライン６０までの距離である。そこで、Ｌ0 の値を確定するために、既に求められたスケールファクタα、ΔＮ60-vs ，ΔＮtc-vs を用いて、
Ｌ0 ＝α（ΔＮtc-vs −ΔＮ60-vs ）
を計算し、トラッキング座標系Σtrを既述するパラメータとして、ロボット制御部１０の不揮発性メモリ１４に格納する。
【００６２】
トラッキング座標系Σtrをこのように設定することで、ロボットＲＢ１を初期位置にあるトラッキング座標系Σtr上で動作させた時、教示点Ｑ0 の位置をトラッキング開始ライン６０上の点Ｑtrとして認識する。
【００６３】
トラッキング座標系Σtrは、トラッキング動作開始指令を受けてコンベア１と等速でｘ軸方向（＝Ｘ軸方向）へ移動を開始する。トラッキング座標系Σtrの移動量は、後述するように、パルスコーダ計数出力値Ｎの変化量とスケールファクタαに基づいてリアルタイムに決定される。
【００６４】
ロボットＲＢ２についても同様にトラッキング座標系Σtr' の設定が下記のように実行される。
（１３）ロボットＲＢ１のためのトラッキング座標系Σtr' の設定
ロボットＲＢ２とコンベア１の座標系の共有化を行なう為に、トラッキング座標系Σtr' を次の条件で設定する。ロボットＲＢ１の場合と同じく、Ｘ軸がコンベアの走行方向と一致したベース座標系Σb'が設定済みであるものとする。即ち、トラッキング座標系Σtr' はベース座標系Σb'と同姿勢で設定され、トラッキング座標系Σtr' が移動を開始するまでの原点位置（Ｘ0'，Ｙ0'，Ｚ0'）は、
Ｘ0'＝−Ｌ0'
Ｙ0'＝０
Ｚ0'＝０
であり、
トラッキング座標系Σtr' 上での座標値（ｘ' ，ｙ' ，ｚ' ）とベース座標系Σb'上での座標値（Ｘ' ，Ｙ' ，Ｚ' ）の変換関係は、
ｘ' ＝Ｘ' −Ｌ0'
ｙ' ＝Ｙ'
ｚ' ＝Ｚ'
で表わされるものとする。但し、Ｌ0'は教示点Ｑ0'の位置とトラッキング開始ライン６０' までの距離である。そこで、Ｌ0'の値を確定するために、既に求められたスケールファクタα、ΔＮ60'-vs，ΔＮtc'-vsを用いて、
Ｌ0'＝α（ΔＮtc'-vs−ΔＮ60'-vs）
を計算し、トラッキング座標系Σtrを既述するパラメータとして、ロボット制御部１０の不揮発性メモリ１４に格納する。
【００６５】
トラッキング座標系Σtr' をこのように設定することで、ロボットＲＢ２を初期位置にあるトラッキング座標系Σtr' 上で動作させた時、教示点Ｑ0'の位置をトラッキング開始ライン６０' 上の点Ｑtr' として認識する。
【００６６】
ロボットＲＢ２のためのトラッキング座標系Σtr' は、ロボットＲＢ１のためのトラッキング座標系Σtrと同じく、トラッキング動作開始指令を受けてコンベア１と等速でｘ軸方向（＝Ｘ軸方向）へ移動を開始する。また、トラッキング座標系Σtr’の移動量は、パルスコーダ計数出力値Ｎの変化量とスケールファクタαに基づいてリアルタイムに決定される。
【００６７】
（１４）ロボットＲＢ１，ＲＢ２の担当を計画し、予約するためのスケジュールダイヤグラムの関連設定値や、ロボットＲＢ１，ＲＢ２の動作予約のための予約テーブルを構成するレジスタの設定を行なう（スケジュールダイヤグラム、予約テーブルの詳細は後述）。
（１５）その他、後述する処理でアクセスされるレジスタの設定、視野３１の長さ、撮影間隔を調節するパラメータ、エラー信号出力の基準値などの設定を行なう（ｗ，ｆ30，ε1 ，ε2 等）。
【００６８】
以上で、トラッキング実行の為の準備作業が完了する。次に、図４以下を参照図に加えて、トラッキングによる本作業実行時のＣＰＵ処理について説明する。処理は視覚センサＶＳ側の処理と、ロボット制御部１０側の処理に大別される。本実施形態では、ロボットＲＢ１とロボットＲＢ２のいずれかを指定する作業割り振りの処理は、ロボット制御部１０側で行なわれる。これら処理はタスク処理として並行的に実行される。先ず、図５に示した視覚センサＶＳ側の処理の概要を述べる。なお、以下の説明は次の（１）〜（３）の前提の下で行なう。
【００６９】
（１）ｗは視覚センサＶＳによる位置検出結果のデータ格納が完了し、且つ、作業担当ロボット（ＲＢ１／ＲＢ２）が未指定であるワークの数を表わす指標値であり、その初期値は当然ｗ＝０である。
（２）供給されるワークＷの姿勢にはばらつきがあり、図５に示したように、このばらつきを考慮してコンベア１の搬送方向に沿って測ったワークＷの長さの最大値をｓ0 とする。
（３）カメラ３０の視野３１はコンベア１の全幅をカバーし、また、ワークＷがコンベア１の幅方向にはみ出した状態で供給されることはないものとする。従って、ワーク像がコンベア１の幅方向にはみ出ることはない。
【００７０】
ロボット制御部１０と画像処理装置２０内で行なわれる処理は、ワーク供給源１００がコンベア１上へのワーク供給を開始したことを知らせる適当な外部信号を受けて、同時に開始される。画像処理装置２０のＣＰＵ２１は先ず撮影指令を出力し、カメラ３０による撮影を実行し、取得した画像をフレームメモリに格納するとともに（ステップＳ１）、画像取得時のパルスコーダ計数出力値Ｎ30をＤＳＰ用メモリ１７とデータメモリ２６に格納する（ステップＳ２）。
【００７１】
更に、ステップＳ１で取得した画像をプログラムメモリ２４に格納された解析プログラムを用いた解析を行い、先ず最下流のワークの検出を試みる（ステップＳ３）。最下流のワークの検出に成功（ａ，ｂ，ｃ，ｄ全点検出）しなかった場合には（ステップＳ４でノー）、ステップＳ５以下へ進み、次回撮影に備える態勢に入る。即ち、ステップＳ５では、パルスコーダ計数出力値Ｎを短周期で繰り返しチェックし、最新の画像取得時からのコンベア移動量α（Ｎ−Ｎ30）がｆ30−ε1 （ε1 ＞０）を越えるのを待つ（ステップＳ５）。
【００７２】
ここでε1 は、相前後して取得される２つの画像間に撮影漏れとなる領域が生じないようにするだけでなく、すべてのワークについていずれかの撮影機会においてａ，ｂ，ｃ，ｄの全点が検出されることを基本的に保証するための調整値である。従って、ε1 は上述したワーク最大長ｓ0 を下回らない条件で、ほぼ最小に定められる。
【００７３】
例えば、視野長１００．０ｃｍ、ｓ0 ＝５．０ｃｍとした時、ε1 ＝５．１ｃｍ〜６．０ｃｍとする。ε1 を必要以上に大きくすることは、二重撮影領域（相前後して撮影される画像に重なって含まれる領域）が大きくなり、効率上好ましくない。尚、一つのワークに対して相前後して撮影される画像から２回の検出が行なわれる可能性があるが、このような可能性に対しては、後述する二重検出データ破棄の処理によって対処する（後述、ステップＳ９〜Ｓ１１参照）。
【００７４】
ステップＳ５でイエスの判定が出されたならば、コンベア移動量α（Ｎ−Ｎ30）がｆ30−ε1 ＋ε2 を越えていないこと、及び処理終了信号が出力されていないことを確認した上で（ステップＳ６、Ｓ７）、ステップＳ１へ戻り、次回の撮影／画像取り込み、Ｎ30の記憶（ステップＳ２）、画像処理（ステップＳ３）を順次実行する。
【００７５】
ステップＳ５の判定式に含まれるε2 は、次回撮影にかかろうとする時点で既にコンベア移動量が過大となり、すべてのワークについていずれかの撮影機会においてａ，ｂ，ｃ，ｄの全点が検出されることを基本的に保証するための二重撮影領域を形成出来ない状態に至っていないかどうかを判定するための調整値で、本処理では０＜ε2 ≦ε1 −ｓ0 に設定される。但し、ε1 ＝ｓ0 とした場合には、ε2 ＝０となるので、このステップＳ６は不要になる。
【００７６】
このステップＳ６でイエスの判定が出力されるのは、コンベア速度が画像処理速度に比べて速すぎる場合、画像処理に異常に長い時間が費やされた場合などである。このようなケースは、システムが正常作動していないことを意味すると考えられるので、ステップＳ８へ進み、エラー信号を出力した上で処理を終了する。また、ステップＳ７でイエスの判定が出力されるのは、全ワークの撮影終了を表わす外部信号、ロボット側でエラー信号等が出力された場合などである。
【００７７】
ワークＷが次々と視野内３１に到達するようになると、ステップＳ４でイエスの判定が出力されるようになる。その場合には、ステップＳ９へ進み、位置検出の結果について、同一ワークの画像データの二重取得のチェックを行う。同一ワークの画像データの二重取得でないことが確認されたならば、検出結果を画像取得時のパルスコーダ計数出力値Ｎ30と対応付けて記憶し（ステップＳ１０）、レジスタ値ｗの値を１カウントアップする（ステップＳ１１）。
【００７８】
これに対して、同一ワークの画像データの二重取得と判断された場合には、検出結果のワークキューへの書込とレジスタ値ｗの１カウントアップを行なわず（検出データ破棄）、直接ステップＳ１２へ進む。
【００７９】
なお、二重書込データか否かのチェックは、今回のデータ（ａ，ｂ，ｃ，ｄの位置データと画像取得時のパルスコーダ計数出力値Ｎ30）と前回検出されてワークキューに書き込まれているデータ（ａ，ｂ，ｃ，ｄの位置データと画像取得時のパルスコーダ計数出力値Ｎ30）を比較することで達成される（後述するワークキューの構成を参照）。
【００８０】
もし、同一ワークの二重検出があれば、次の２つの条件が成立している筈である。
１．前回検出時のパルスコーダ計数出力値Ｎ30と今回検出時のパルスコーダ計数出力値Ｎ30の差が、撮影間隔１回分のインクリメンタル計数値とほぼ一致していること。ステップＳ５から、後者の値としては、（ｆ30−ε1 ）／αが採用出来る。
２．前回検出されたａ，ｂ，ｃ，ｄの各位置と今回検出されたａ，ｂ，ｃ，ｄの各位置との差が、いずれもγ×撮影間隔を表わすパルスコーダ計数出力値インクリメンタル量と一致していること。即ち、前回検出されたａ，ｂ，ｃ，ｄの各位置と今回検出されたａ，ｂ，ｃ，ｄの各位置との差が、γ×（ｆ30−ε1 ）／αとほぼ一致していること。ここで、γは、センサ座標系上の距離とパルスコーダ計数出力値の換算計数であり、事前に設定される。
【００８１】
そこで、今回と前回の検出データについてのＮ30の差に関する不等式、
｜Ｎ30（今回）−Ｎ30（前回）−（ｆ30−ε1 ）／α｜＜ε3
（但し、ε3 は小さな正の設定値）の成否をチェックし、
また、ａ，ｂ，ｃ，ｄの位置の少なくとも一つについて、γ×（ｆ30−ε1 ）／αとの差の絶対値に関する不等式、例えば、
｜ａの位置（今回）−ａの位置（前回）−γ（ｆ30−ε1 ）／α｜＜ε4
（但し、ε3 ，ε4 は小さな正の設定値）
の成否をチェックする。これらの結果から、同一ワークの二重検出の有無がチェック出来る。即ち、上記両不等式が同時成立した時のみ、同一ワークの二重検出がなされたと判断すれば良い。
【００８２】
さて、最下流のワークについての位置検出、二重検出チェック、記憶などが完了したら、同画像中の他のワーク画像の検出を試みる（ステップＳ１２）。検出に成功したら（ステップＳ１３でイエス）、ステップＳ９へ戻り、ステップＳ１０〜ステップＳ１３の処理を再度実行する。また、検出に成功しなかったら（ステップＳ１３でノー）、ステップＳ５以下へ進み、次回の撮影タイミングを待つ。ステップＳ５〜ステップＳ８の処理については既に述べた通りである。
【００８３】
以上説明した処理サイクル（ステップＳ１〜Ｓ１３）を処理終了まで繰り返すことで、システムが異常動作しない限り、すべてのワークについてａ，ｂ，ｃ，ｄの位置を表わすデータが順次取得される。図６は、これらデータを記憶するワークキューの形式を説明する図で、各コラムは左から順に、ライン番号、ロボット指定指標ｕ、ワークの代表点ａ〜ｄの検出位置の基準値（前述した基準画像から得た値）からの偏差（正負符号付のずれ量）で表わしたデータ、そのデータに対応した画像取得時のパルスコーダ計数出力値Ｎ30を表わしている。
【００８４】
ロボット指定指標ｕは、ロボット指定済み／未定を表わす指標で、ワークデータ書き込み時には０が書き込まれる。そして、後述するロボット指定のための読み出しが行なわれたならば、ｕ＝１に更新される。ワークデータの書込は、行番号（NO）が若い順に行なわれ最終まで書き込まれたならば、第１行に次のワークデータが上書きされる。
【００８５】
ここに記した例では、５個のワークデータが書込済みで（ｗ＝５）、各ワークの位置偏差データ（Δｘa1，Δｙa1，Δｘb1・・・・Δｘd5，Δｙd5）がＮ30の値とともに書き込まれている。また、第１行及び第２行のワークデータは、後述するロボット指定のために読出済みである。画像取得時のパルスコーダ計数出力値Ｎ30の数値はあくまで例示であるが、１行目と２行目、及び４行目と５行目のＮ30がそれぞれ一致しているのは、同一の撮影機会で得られた画像中の２つのワーク画像について位置検出がなされたことを意味している。
【００８６】
次に、ロボット制御部１０側で行なわれる処理の概要を説明する。ワーク供給開始を知らせる適当な外部信号を受けると、ロボット制御部１０のＣＰＵ１１はマルチタスク処理機能を用いて、ロボット予約処理と各ロボットのためのロボット動作処理を開始する。先ず、ロボット予約処理について、図７のフローチャートを用いて概略を説明する。なお、ステップＲ６，Ｒ７，Ｒ１０，Ｒ１１の処理については、概略説明の後で図８のスケジュールダイヤグラムを用いて補足説明する。
【００８７】
図７のフローチャートにおいて、処理が開始されると直ちにレジスタ値ｗ＝０か否かを短周期で繰り返しチェックする態勢に入る（ステップＲ１）。上述した撮影とそれに続く画像処理装置２０側の処理により、ワークの位置が検出されると、その結果が図６に示した形式で記憶されるとともに、指標値ｗがｗ≠０となる。
【００８８】
そこで、ｕ＝０（未読出）のデータの存在を確認した上で（ステップＲ２）、ｕ＝０のデータのうち最古に書き込まれたワーク１個分のデータを読み込む（ステップＲ３）。図６に記した例で言えば、第３行目のデータ［Δｘa3，Δｙa3・・・Δｙd3，3465］が読み込まれる。読み込みが完了したら、読み出された行のｕ値を０から１に更新する（ステップＲ４）。
【００８９】
次いで、読み出されたデータに基づいて、ロボットＲＢ１の要動作期間を計算する（ステップＲ５）。ロボットＲＢ１の要動作期間とは、もし当該ワークをロボットＲＢ１で処理するとした場合にロボットＲＢ１が使用される期間のことである。本実施形態では、コンベア１の搬送速度Ｖを既知の一定値と考え、要動作期間をパルスコーダ計数出力値Ｎの範囲として計算する（詳細後述）。
【００９０】
そして、ロボットＲＢ１用に設定された予約テーブル（詳細後述）にアクセスし、ステップＲ５で計算された要動作期間と予約内容を照合し、ロボットＲＢ１の予約の適否を判断する（ステップＲ６）。もし、予約が適当（可能）と判断したならば、ステップＲ５で計算された要動作期間をロボットＲＢ１用の予約テーブルに書き込む（ステッＲ７）。
【００９１】
次いで、処理終了の必要性（運転終了指令、エラー信号などで判断）を判断した上で（ステップＲ８）、最初のステップＲ１へ戻り、再度ステップＲ１以下の処理を実行する。
【００９２】
もし、ステップＲ６でロボットＲＢ１の予約が不適当（不可能と判断したならば、ステップＲ９へ進み、ステップＲ３で読み出されたデータに基づいて、ステップＲ５と同様に、ロボットＲＢ２の要動作期間を計算する。ロボットＲＢ２の要動作期間とは、もし当該ワークをロボットＲＢ２で処理するとした場合にロボットＲＢ２が使用される期間のことであり、その計算方法はロボットＲＢ１の場合と同様である（詳細後述）。
【００９３】
そして、ロボットＲＢ２の予約テーブル（詳細後述）にアクセスし、ステップＲ９で計算された要動作期間と予約内容を照合し、ロボットＲＢ２の予約の適否を判断する（ステップＲ１０）。もし、予約が適当（可能）と判断したならば、ステップＲ９で求めた要動作期間を予約テーブルに書き込む（ステッＲ１１）。ステップＲ１１からはステップＲ８へ進み、処理終了の必要性（運転終了指令、エラー信号などで判断）を判断した上で、最初のステップＲ１へ戻り、再度ステップＲ１以下の処理を実行する。
【００９４】
万一、ステップ１０でロボットＲＢ２の予約が不適当（不可能と判断された場合には、コンベア１の搬送速度、ワークの供給頻度などが本システムの処理能力を越えているか、あるいはシステムの誤動作など異常が発生しているとみなし、エラー信号を出力して（ステップＲ１２）、処理を終了する。そして、コンベア１の搬送速度やワークの供給頻度の修正、システムの誤動作の修復等、必要な処置をとる。
【００９５】
以上がロボット予約処理の概略であるが、ステップＲ６，Ｒ７，Ｒ１０，Ｒ１１の処理について、図８（スケジュールダイヤグラム）及び図１０（予約テーブル）を参照図に加えて補足説明する。図８のスケジュールダイヤグラムの横軸は時間経過を表わし、縦軸はコンベア１の搬送方向に沿った位置を表わしている。横軸、縦軸いずれも搬送コンベア１の搬送速度Ｖを既知の一定値（パルスコーダ３の計数出力の変化率とスケールファクタαから算定可能）として、パルスコーダ計数出力値Ｎを用いた目盛りでされる。
【００９６】
縦軸における点Ｂは、ロボットＲＢ１が無理なく動作を開始し得る限界位置を表わしており、図２に記したトラッキング範囲の開始ライン６０またはそのやや手前の位置に対応している。従って、ダイヤグラムの原点Ｏと点Ｂの距離を計数値で表わせば、Ｎ60−Ｎ30−δＮとなる。ここで、δＮはロボットＲＢ１の動作開始に余裕をもたせるために適当に設定される小さな計数値（δＮ≧０）である。
【００９７】
また、点ＣはロボットＲＢ１が無理なく１サイクル分の動作を完了（Ｐ0 へ復帰）し得る時点における計数値に対応している。ダイヤグラムの原点Ｏと点Ｃの距離を計数値で表わせば、Ｎ70−Ｎ30＋Ｎ200 となる。ここで、Ｎ200 はロボットＲＢ１が、トラッキング動作完了後（ライン７０の位置）を離れてから、ワークを収納部２００に収め、初期位置Ｐ0 に復帰するまでに要する時間内にパルスコーダ３のインクリメンタル計数値あるいはそれより若干大きな値（動作に余裕をもたせるため）として設定される量である。
【００９８】
同様に、縦軸における点Ｄは、ロボットＲＢ２が無理なく動作を開始し得る限界位置を表わしており、図２に記したトラッキング範囲の開始ライン６０' またはそのやや手前の位置に対応している。従って、ダイヤグラムの原点Ｏと点Ｄの距離を計数値で表わせば、Ｎ60' −Ｎ30−δＮ' となる。ここで、δＮ' はロボットＲＢ２の動作開始に余裕をもたせるために適当に設定される小さな計数値（δＮ' ≧０）である。
【００９９】
また、点ＥはロボットＲＢ２が無理なく１サイクル分の動作を完了（Ｐ0'へ復帰）し得る時点における計数値に対応している。ダイヤグラムの原点Ｏと点Ｅの距離を計数値で表わせば、Ｎ70' −Ｎ30＋ΔＮ200'となる。ここで、ΔＮ200'はロボットＲＢ２が、トラッキング動作完了後（ライン７０' の位置）を離れてから、ワークを収納部２００' に収め、初期位置Ｐ0'に復帰するまでに要する時間内にパルスコーダ３が計数する計数値あるいはそれより若干大きな値（動作に余裕をもたせるため）である。これらロボットＲＢ１とＲＢ２の要動作範囲を規定するデータ（点Ｂ，Ｃ，Ｄ，Ｅを表わす計数値）は、前述した準備作業の（１４）で実行される。
【０１００】
今、最初のワーク（Ｗ1 とする）の搬送経過をｇ1 で表わすと、ｇ1 は図示したような傾斜直線となる。横軸、縦軸のスケールを等しくとれば、その傾斜は４５度となる。ワークの搬送距離を撮影基準位置（図２のラインＡの位置）から測るものとすれば、直線ｇ1 が横軸と交わる点（計数値）ＮA1は、ワークＷ1 を代表する点（例えば、点ａ，ｂ，ｃ，ｄの位置から計算される重心位置）が、ラインＡを通過する時点（計数出力値）を表わしている。
【０１０１】
例えば、ワークＷ1 について検出されたワークデータが図６の第１行目に書き込まれている場合には、
ＮA1＝2565＋（Δxy1 ／α）
となる。ここで、αは設定済みのスケールファクタであり、Δxy1 はΔｘa1，Δｙa1，・・・Δｘd1，Δｙd1から計算されるワークＷ1 の重心位置の偏差である。もし、Δｘa1＝Δｙa1＝・・・＝Δｘd1＝Δｙd1＝０ならば（基準画像取得時と同じ位置で撮影）、Δxy1 ＝０，ＮA1＝2565となる。
【０１０２】
同様に、他の後続するワーク（Ｗ2 ，Ｗ3 とする）についてのワークデータが図６に示したワークキューに順次書き込まれれば、それらワークＷ2 ，Ｗ3 の搬送経過を表わすｇ2 ，ｇ3 について、横軸と交わる点（計数値）ＮA2，ＮA3を求めることが出来る。
【０１０３】
上記したことから、ステップＲ６の判断の手順は次のように行なわれる。
Ｒ６−１；ステップＲ３で読み出したワークデータからＮA を求める。ワークＷ1 については、ＮA1を求める。同様に、ワークＷ2 のワークデータが読み出された場合にはＮA2、ワークＷ3 のワークデータが読み出された場合にはＮA3を求める。
【０１０４】
Ｒ６−２；ＮA から、ロボットＲＢ１の要動作区間ＮB ＮC （ＮB とＮC ）を求める。上記した例で言えば、区間ＮB1ＮC1，ＮB2ＮC2あるいはＮB3ＮC3を求める。
【０１０５】
Ｒ６−３；当該ワークデータに関して求められたロボットＲＢ１の要動作期間が、予約期間に抵触するか否か予約テーブルにアクセスしてチェックする。ワークＷ1 が最初に検出されたワークであるならば、ワークテーブルはクリアされた初期状態のまま（無予約）である。よって、判断出力はイエスである。
【０１０６】
次のステップＲ７では、予約テーブル（ＲＢ１用）に区間ＮB1ＮC1のデータが書き込まれる。
【０１０７】
図１０には、各々予約期間が書き込まれた状態のＲＢ１用並びにＲＢ２用の予約テーブルを示した。各予約テーブルのコラムは、左から順に、ロボットの動作の完了（＝０）／未完了（＝１）を表わす指標、ワークデータ番号（図６のワークキューの行番号）、要動作区間の端点データＮB ，ＮC （ＲＢ１用）あるいはＮD ，ＮE を書き込むためのものである。
【０１０８】
書き込まれた数値はあくまで例示的なものであるが、次の予約内容を表わしている。
ロボットＲＢ１；ワークキュー番号１のワークについて、要動作期間［4051〜4551］が予約され、動作は未完了（第１コラム＝１）である。
ロボットＲＢ２；ワークキュー番号２のワークについて、要動作期間［4130〜4630］が予約され、動作は未完了（第１コラム＝１）である。
【０１０９】
ここで、ワークＷ2 がワークＷ1 の直後に供給された場合（図８における直線ｇ1 とｇ2 を参照）を考えると、ワークＷ2 に関するステップＲ６で、ＲＢ１用のワークテーブルにアクセスした時点では、上記予約データが書き込まれており、且つ、ワークＷ2 についてステップＲ５で計算される要動作期間と明らかに抵触する（図８において、直線ｇ2 が斜線領域を通過）。よって、ワークＷ2 に関するステップＲ６の判断出力はノーとなる。
【０１１０】
この場合は、図７のフローチャートに従いステップＲ９からＲ１０へ進む。ステップＲ９の判断の手順は、次のように実行される。
Ｒ９−１；既に求められているＮA から、ロボットＲＢ２の要動作区間ＮD ＮE （ＮD とＮE ）を求める。ここでは、ワークＷ2 について区間ＮB2ＮC2を求める。
【０１１１】
Ｒ９−２；ワークＷ2 について求めたロボットＲＢ２の要動作期間が、予約期間に抵触するか否か予約テーブルにアクセスしてチェックする。ワークＷ2 が２番目に検出されたワークであるならば、ＲＢ２用のワークテーブルはクリアされた初期状態のまま（無予約）である。よって、判断出力はイエスである。
【０１１２】
そこで、次のステップＲ１０では、予約テーブル（ＲＢ２用）に区間ＮD2ＮE2のデータが書き込まれる。図１０のＲＢ２用の予約テーブルは、この状態を例示している。また、図８のスケジュールダイヤグラム中で砂地模様で描示した区間は、このワークＷ2 について予約された期間を表わしている。
【０１１３】
同様の考察から、直線ｇ3 で表わされる３番目のワークＷ3 については、ステップＲ６の判断出力はイエスとなることが判る。何故ならば、直線ｇ3 は砂地模様の領域を通過しているが、斜線領域は通過していないからである。
【０１１４】
最後に、図９のフローチャートを参照して、ロボット動作の処理について説明する。なお、２台のロボットＲＢ１，ＲＢ２の動作は基本的に同じなので、ＲＢ２用の（）書きを用いて、両者のための処理をまとめて説明する。
【０１１５】
先ず、教示点Ｑ0 （またはＱ0'）の位置データを含む動作プログラムデータを読み込み（ステップＨ１）、予約テーブルを短周期で繰り返しチェックする態勢に入る（ステップＨ２）。上述した予約処理のステップＲ７で、ロボットＲＢ１あるいはロボットＲＢ２の予約期間が書き込まれると、ステップＨ２でイエスの判断出力が出され、ステップＨ３へ進む。
【０１１６】
ステップＨ３では、ワークキューにアクセスし、予約テーブルで指定されている番号（行）のワークデータを読み込む。前述の例で言えば、ワークＷ1 に関するデータ［Δｘa1，Δｙa1・・・Δｘc1，Δｙd1，2565］が読み込まれる。
【０１１７】
次いで、パルスコーダ計数出力値Ｎが、Ｎ＝ΔＮ60-vs （ロボットＲＢ２の場合には、ΔＮ60'-vs。以下、同様。）＋Ｎ30に到達するのを待つ態勢に入る（ステップＨ４）。上記ワークＷ1 の例ではＮ30＝2565である。
【０１１８】
Ｎ＝ΔＮ60-vs （ΔＮ60'-vs）＋Ｎ30というパルスコーダ計数出力値は、ワークがトラッキング開始ライン６０（または６０' ）の位置に到達したことの目安となる計数値である。もし、当該ワークの撮影位置が基準画像を得た時のワーク位置と一致していれば、この値はそのワークがトラッキング開始ライン６０（または６０' ）の位置に到達したことを正確に表わすことになる。
【０１１９】
ステップＨ４でイエスの判断出力が得られたならば、直ちにトラッキング座標系Σtr（または、）上でロボットＲＢ１（またはＲＢ２）の移動を開始させるとともに、トラッキング座標系Σtr（またはΣtr' ）の移動を開始させる（ステップＨ５）。ロボットＲＢ１用（ＲＢ２用）のトラッキング座標系Σtr（Σtr' ）の移動は、トラッキングΣtr（Σtr' ）の原点の位置［Ｘ0 ，Ｙ0 ，Ｚ0 ］（［Ｘ0'，Ｙ0'，Ｚ0'］）を次式で表わされた位置に存在するものとすることで達成される。ここで、Ｎはパルスコーダ計数出力値Ｎの現在値である。
トラッキングΣtrの移動位置；
Ｘ0 ＝−Ｌ0 ＋α｛Ｎ−（ΔＮ60-vs＋Ｎ30）｝
Ｙ0 ＝０
Ｚ0 ＝０
トラッキング座標系Σtrが移動中の座標値の変換式は、
ｘ＝Ｘ−Ｌ0 ＋α｛Ｎ−（ΔＮ60-vs＋Ｎ30）｝
ｙ＝Ｙ
ｚ＝Ｚ
となる。
【０１２０】
トラッキングΣtr' の移動位置；
Ｘ0' ＝−Ｌ0'＋α｛Ｎ−（ΔＮ60'-vs ＋Ｎ30）｝
Ｙ0'＝０
Ｚ0'＝０
トラッキング座標系Σtr' が移動中の座標値の変換式は、
ｘ' ＝Ｘ' −Ｌ0'＋α｛Ｎ−（ΔＮ60'-vs ＋Ｎ30）｝
ｙ' ＝Ｙ'
ｚ' ＝Ｚ'
となる。
【０１２１】
これにより、ロボットＲＢ１（またはＲＢ２）のトラッキング動作が開始される。即ち、ロボットＲＢ１（またはＲＢ２）は、トラッキング座標系Σtr（またはΣtr' ）上で教示点を目指して移動を開始する。但し、補間動作で作成される補間点の位置は、ステップＨ３で読み込んだデータ（基準位置とのずれ量）に基づいて補正される。
【０１２２】
移動開始時点における教示点位置は、トラッキング座標系Σtr（Σtr' ）の初期位置の設定法から考えて、図２中に符号Ｑtr（Ｑtr' ）で示したように、トラッキング開始ライン６０（６０' ）上にある。そして、トラッキング座標系Σtr（Σtr' ）の移動開始後には、この点Ｑtr（Ｑtr' ）をコンベア１の走行と同期移動させた点（より正確に言えば、それを視覚センサのデータで補正した位置）を目指すようにロボットＲＢ１（ＲＢ２）の移動が行なわれる。その結果、ロボットＲＢ１（ＲＢ２）は、符号９０，（９０' ）で示したような曲線軌道を描いて移動する。
【０１２３】
トラッキング範囲内でロボットＲＢ（ＲＢ２）がワークに追いついたことが確認されると（ステップＨ６の判断出力がイエス）、教示済みのワーク把持作業がトラッキング座標系Σtr（Σtr' ）上で実行される（ステップＨ７）。
【０１２４】
パルスコーダ計数出力値ＮがＮ＝ΔＮ70-vs（ΔＮ70'-vs ）＋Ｎ30に到達したならば（ステップＨ８の判断出力がイエス）、ロボットＲＢ１（ＲＢ２）のトラッキング座標系Σtr（Σtr' ）上での動作を終了させ、ワーク収納部２００（２００' ）上の教示点Ｑ2 （Ｑ2'）への移動を開始する（ステップＨ９）。
【０１２５】
教示点Ｑ2 （Ｑ2'）へ到達したら、ワークの把持を解除して、ワークをワーク収納部２００（２００' ）に収納する（ステップＨ１０）。そして、ロボットＲＢ１（ＲＢ２）をＱ2 （Ｑ2'）から初期位置Ｐ0 （Ｐ0'）へ移動させ（ステップＨ１１）、ロボットＲＢ１（ＲＢ２）用の予約テーブルの予約データをクリアする（ステップＨ１２）。例えば、ロボットＲＢ１がワークＷ1 の処理を完了した場合であれば、図１０に示したＲＢ１用の予約テーブルの各コラムに各々「０」を上書きする。
【０１２６】
以上で１つのワークに対するロボットＲＢ１（またはＲＢ２）の動作サイクルが完了する。そこで、システムの運転中止を要求する指令が出力されていない限り（ステップＨ１３の判断出力がノー）、ステップＨ１へ戻り、次の検出ワークに対する処理を開始する。以下の処理は、上述した通りであるから、繰り返し説明は省略する。
【０１２７】
以上、本発明をワークの把持・収納のアプリケーションに適用した実施形態について説明したが、本発明が搬送手段上で移動する対象に対するトラッキング動作を伴う他のアプリケーションについても用し得ることは明らかである。実施形態のシステム構成、データの処理・伝達方式についても、例えば次のような変形が可能である。
【０１２８】
（１）使用するロボットの台数；
ロボットの使用台数を３台以上とすることも可能である。図８に示したスケジュールダイヤグラムの考え方は、ロボットの使用台数が何台であっても適用出来る。例えば、３台目のロボットＲＢ３を使用する場合には、動作範囲ＢＣ，ＤＥの他に動作範囲ＦＧ、ロボットＲＢ３用の予約テーブルなどを新たに設定し、ロボットＲＢ３についての要動作期間を計算する処理、ロボットＲＢ３用の予約テーブルのチェック処理、書込処理、クリア処理等を追加すれば良い。
【０１２９】
（２）視覚センサ（画像処理装置）とロボット制御手段の分離；
視覚センサＶＳをロボットコントローラＲＣとは別構成とし、両者を共通のプロトコルで動作する通通インターフェイスを含む通信回線で結び、ワークデータ、指令データ等をやりとりする方式としても良い。
【０１３０】
（３）ロボットの予約処理を視覚センサ側で分担；
本実施形態では、ロボットの予約処理はロボット側で行なうようにしたが、これを視覚センサ側で行うようにしても良い。
【０１３１】
（４）ロボット制御手段の構成；
本実施形態では、２台のロボットを一つのロボット制御手段（ロボット制御部１０）で制御したが、ロボット毎に１台のロボットコントローラを使用しても良い。この場合には、１台の視覚センサ（画像処理装置）と各ロボットコントローラを通信回線で結ぶ方式とすることが好ましい。また、ロボットの予約処理を視覚センサ側で行い、その結果を必要に応じて各ロボットに伝えるうようにすることが好ましい。
【０１３２】
（５）視覚センサの検出方式の変更；
本実施形態では、ワークの供給頻度が高いケースに適合したワーク検出方式として、上流側でワークの事前検出を行なわない方式を採用したが、これを図１で説明した旧来方式（上流側でワークの事前検出を行なう方式）を採用することも出来る。旧来方式を採用した場合でも、ワークキューに書き込まれたワークデータと搬送手段の走行量を表わすデータを利用して行なわれるロボットの予約以降の処理に基本的な変更を要しないことはこれまでの説明から明らかであろう。
【０１３３】
【発明の効果】
本発明によれば、コンベア上のランダムな位置に載置され、ランダムな間隔で供給される対象物に対して、１台の視覚センサと複数台のロボットを組み合わせて用いることにより、トラッキング動作を伴う作業を合理的に分担して手際よく実行すことが出来る。
【図面の簡単な説明】
【図１】１台のロボットを備えた視覚センサ・ロボットシステムの概略を説明するための図である。
【図２】本発明の実施形態の全体配置を図１と類似した形式で示したものである。
【図３】実施形態で使用されるロボットコントローラＲＣの内部構成の概略を要部ブロック図で示したものである。
【図４】本発明の実施形態において、画像処理装置側で行なわれる処理内容の概略を記したフローチャートである。
【図５】供給ワークＷの最大長ｓ0 について説明する図である。
【図６】本発明の実施形態において、ワークの検出データを記憶するワークキューについて説明する図である。
【図７】本発明の実施形態におけるロボット予約処理について説明するフローチャートである。
【図８】ロボット予約処理の原理を説明するためのスケジュールダイヤグラムである。
【図９】本発明の実施形態におけるロボット動作のための処理について説明するフローチャートである。
【図１０】本発明の実施形態における２台のロボットのための予約テーブルを説明する図である。
【符号の説明】
１  コンベア
２  コンベア駆動部
３  パルスコーダ
４，４’  センサ（事前検出）
１０  ロボット制御部
１１  ＣＰＵ（ロボットコントローラ）
１２  ＲＯＭ
１３  ＲＡＭ
１４  不揮発性メモリ
１５，１５'   軸制御器
１６，１６'   サーボ回路
１７  デジタルシグナルプロセッサ（ＤＳＰ）用データメモリ
１８  デジタルシグナルプロセッサ（ＤＳＰ）
１９  センサインターフェイス
２０  画像処理装置
２１  ＣＰＵ（画像処理装置）
２２  カメラインターフェイス
２３  フレームメモリ
２４  プログラムメモリ
２５  画像処理プロセッサ
２６  データメモリ
２７  モニタインターフェイス
３０  カメラ
３１  視野
４０  モニタＣＲＴ
５０  検出位置ライン
６０，６０'   トラッキング開始ライン
７０，７０'   トラッキング終了ライン
８０  直線軌道
９０，９０'   曲線軌道
１００  ワーク供給源
２００，２００'   ワーク収納部
ＢＳ，ＢＳ’，ＢＳ”  バス
Ｐ0 ，Ｐ0'  ロボット初期位置
ＲＢ，ＲＢ１，ＲＢ２  ロボット
ＲＣ  ロボットコントローラ
ＶＳ  視覚センサ
Ｗ，Ｗ’，Ｗ”  ワーク
ａ，ｂ，ｃ，ｄ  ワークの特徴点
【図１】
0003834088.tif 000002
【図２】
0003834088.tif 000003
【図３】
0003834088.tif 000004
【図４】
0003834088.tif 000005
【図５】
0003834088.tif 000006
【図６】
0003834088.tif 000007
【図７】
0003834088.tif 000008
【図８】
0003834088.tif 000009
【図９】
0003834088.tif 000010
【図１０】
0003834088.tif 000011