【手続補正書】
【提出日】平成17年8月5日(2005.8.5)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】      明細書
【発明の名称】  ロボット制御方法及び該方法を適用したロボットコントローラ
【特許請求の範囲】
【請求項１】  運搬装置によって搬送される移動物体を追従して該移動物体に所定の動作を行うロボットの制御方法であって、
移動物体を検出するステップと、
その検出結果に基づいて該移動物体の運搬装置の座標系における検出位置を取得するステップと、
該移動物体の検出位置と運搬装置の動作量に基づいて移動物体の現在位置を運搬装置の座標系で逐次更新するステップと、
移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換するステップと、
変換した位置に基づいて移動物体を追従するためのロボットの追従軌道を生成するステップと、
実行するユーザプログラムの動作命令に含まれる指令位置データが運搬装置の座標系で記述されているのか否かを判断するステップと、
前記判断するステップにおいて指令位置データが運搬装置の座標系で記述されていると判断されたとき、動作命令の指令位置データで特定される位置で移動物体を追従するためのロボットの追従軌道を生成するステップと、
該追従軌道に沿ってロボットに追従を開始させるステップとを備えるロボット制御方法。
【請求項２】  前記運搬装置の座標系は、移動物体の移動方向に平行なＸ軸と、該Ｘ軸と共に運搬装置の搬送面を構成するＹ軸と、Ｘ軸及びＹ軸に直交するＺ軸で構成されることを特徴とする請求項１記載のロボット制御方法。
【請求項３】  運搬装置によって搬送される移動物体を追従して該移動物体に所定の動作を行うロボットの制御方法であって、
移動物体を検出するステップと、
その検出結果に基づいて該移動物体の運搬装置の座標系における検出位置を取得するステップと、
該移動物体の検出位置と運搬装置の動作量に基づいて移動物体の現在位置を運搬装置の座標系で逐次更新するステップと、
移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換するステップと、
変換した位置に基づいて移動物体を追従するためのロボットの追従軌道を生成するステップと、
動作命令に含まれる指令位置データが運搬装置の座標系で設定されている場合、該指令位置データで特定される位置で移動物体を追従する動作命令に従ってロボットに追従を開始させるステップと、
運搬装置の座標系で追従領域を設定するステップと、
追従領域座標と移動物体の現在位置とに基づいて移動物体が追従領域内にあるか否かを判断するステップと、
移動物体が追従領域内にあると判断した場合に、移動物体到達イベントを発行するステップと、
該移動物体到達イベントが発行されたときに、動作命令の指令位置データで特定される移動物体を追従する動作命令に従ってロボットに追従を開始させるステップとを備えるロボット制御方法。
【請求項４】  前記移動物体が追従領域内にあるか否かの判断を定期的に行うことを特徴とする請求項３記載のロボット制御方法。
【請求項５】  前記追従領域は、運搬装置の搬送面上で移動物体の移動方向に平行な２つの線と、これと直交する２つの線とで特定されることを特徴とする請求項４記載のロボット制御方法。
【請求項６】  ロボットが移動物体を追従するための追従軌道は、ロボットの手先が追従開始時における移動物体の位置に向かう方向の直接軌道に移動物体の移動する方向の追加軌道を加算することによって生成し、前記追加軌道は、移動物体の位置の変化を運搬装置の座標系からロボットの座標系に変換し、これを更に関節角度座標系に変換し、又前記直接軌道は、各々がロボット座標系及びコンベア座標系のロボット手先と移動物体の追従開始時位置を関節角度座標系に変換することにより求めることを特徴とする請求項５記載のロボット制御方法。
【請求項７】  移動物体が追従領域内にあるか否かを判断した際に、追従領域内にないと判断した場合には追従停止イベントを発行して、該追従停止イベントに対応する処理を開始することを特徴とする請求項６記載のロボット制御方法。
【請求項８】  前記追従停止イベントに対応する処理は、追加軌道の生成を停止する処理であることを特徴とする請求項７記載のロボット制御方法。
【請求項９】  指令位置データがロボットの座標系で設定された動作命令が与えられると、前記追加軌道の生成を停止して、前記指令位置データで指令された位置への直接軌道で追従軌道を生成することを特徴とする請求項６記載のロボット制御方法。
【請求項１０】  運搬装置によって搬送される移動物体を追従して該移動物体に所定の動作を行うロボットの制御方法であって、
移動物体を検出するステップと、
その検出結果に基づいて該移動物体の運搬装置の座標系における検出位置を取得するステップと、
該移動物体の検出位置と運搬装置の動作量に基づいて移動物体の現在位置を運搬装置の座標系で逐次更新するステップと、
移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換するステップと、
変換した位置に基づいて移動物体を追従するためのロボットの追従軌道を生成するステップとを備えており、
複数台の運搬装置を配置する場合には、運搬装置毎にそれぞれ運搬装置の座標系を設定することを特徴とするロボット制御方法。
【請求項１１】  運搬装置によって搬送される移動物体を追従して該移動物体に所定の動作を行うロボットの制御方法であって、
移動物体を検出するステップと、
その検出結果に基づいて該移動物体の運搬装置の座標系における検出位置を取得するステップと、
該移動物体の検出位置と運搬装置の動作量に基づいて移動物体の現在位置を運搬装置の座標系で逐次更新するステップと、
移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換するステップと、
変換した位置に基づいて移動物体を追従するためのロボットの追従軌道を生成するステップとを備えており、
複数台のロボットを配置する場合には、ロボット毎にそれぞれ運搬装置の座標系及び追従領域を設定することを特徴とするロボット制御方法。
【請求項１２】  前記運搬装置は直動コンベヤであることを特徴とする請求項１記載のロボット制御方法。
【請求項１３】  運搬装置によって搬送される移動物体を追従して該移動物体に所定の動作を行うロボットの制御方法であって、
移動物体を検出するステップと、
その検出結果に基づいて該移動物体の運搬装置の座標系における検出位置を取得するステップと、
該移動物体の検出位置と運搬装置の動作量に基づいて移動物体の現在位置を運搬装置の座標系で逐次更新するステップと、
移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換するステップと、
変換した位置に基づいて移動物体を追従するためのロボットの追従軌道を生成するステップとを備えており、
該運搬装置が円弧コンベヤ又はターンテーブルであり、前記運搬装置の座標系が、コンベヤの回転角度で示すＸ軸と、回転中心となる軸で成るＺ軸と、及び回転中心軸からの距離で示すＹ軸で構成されることを特徴とするロボット制御方法。
【請求項１４】  運搬装置によって搬送される移動物体に追従して該移動物体に所定の動作を行うロボットを制御するロボットコントローラであって、
移動物体の現在位置が格納される移動物体現在位置記憶部と、
移動物体を検出する検出部と、
該検出部の検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得し、該移動物体の検出位置と運搬装置の動作量とに基づいて移動物体の現在位置を算出し、算出した位置データで前記移動物体現在位置記憶部を更新する移動物体現在位置更新部と、
前記移動物体現在位置記憶部に格納されている移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換し、変換した位置に基づいて移動物体に追従するためのロボットの追従軌道を生成する軌道生成部とを備えており、
該運搬装置の座標系は、移動物体の移動方向に平行なＸ軸と、該Ｘ軸と共に運搬装置の搬送面を構成するＹ軸と、Ｘ軸及びＹ軸に直交するＺ軸で構成されることを特徴とするロボットコントローラ。
【請求項１５】  運搬装置によって搬送される移動物体に追従して該移動物体に所定の動作を行うロボットを制御するロボットコントローラであって、
移動物体の現在位置が格納される移動物体現在位置記憶部と、
移動物体を検出する検出部と、
該検出部の検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得し、該移動物体の検出位置と運搬装置の動作量とに基づいて移動物体の現在位置を算出し、算出した位置データで前記移動物体現在位置記憶部を更新する移動物体現在位置更新部と、
前記移動物体現在位置記憶部に格納されている移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換し、変換した位置に基づいて移動物体に追従するためのロボットの追従軌道を生成する軌道生成部と、
動作命令が記述されたユーザプログラムを実行し、動作命令の指令位置データが運搬装置の座標系で記述されているのか否かを判断するユーザプログラム実行部とを備えており、
前記ユーザプログラム実行部において該動作命令の指令位置データが運搬装置の座標系で記述されていると判断されたとき、前記軌道生成部が、指令位置データで特定される移動物体を追従するためのロボットの追従軌道を生成することを特徴とするロボットコントローラ。
【請求項１６】  運搬装置の座標系の座標で示される追従領域が格納される追従領域記憶部と、移動物体が追従領域内にあるか否かを前記現在位置記憶部に格納された移動物体の現在位置と前記追従領域記憶部に格納された追従領域とに基づいて判断し、領域内にあると判断した場合には移動物体到達イベントを発行し、領域内にないと判断した場合には追従停止イベントを発行するイベント検出部とを更に備え、前記軌道生成部は、移動物体到達イベントが発行されたときに、ロボットが動作命令の指令位置データで特定される移動物体を追従するための追従軌道を生成することを特徴とする請求項１５記載のロボットコントローラ。
【請求項１７】  前記イベント検出部は、移動物体が領域内にあるか否かの判断を定期的に行うことを特徴とする請求項１６記載のロボットコントローラ。
【請求項１８】  前記追従領域は、運搬装置の搬送面上で移動物体の移動方向に平行な２つの線と、これと直交する２つの線とで特定される領域であることを特徴とする請求項１６記載のロボットコントローラ。
【請求項１９】  前記軌道生成部は、ロボットが前記移動物体に追従する追従軌道を、ロボットの手先が追従開始時における移動物体の位置に向かう方向の直接軌道に、移動物体の移動方向の追加軌道を加算することによって生成し、前記追加軌道は、移動物体の位置の変化を運搬装置の座標系からロボット座標系に変換し、これを更に関節角度座標系に変換し、又前記直接軌道は、各々がロボット座標系及びコンベア座標系のロボットの手先と移動物体の追従開始時位置を関節角度座標系に変換することにより求めることを特徴とする請求項１６記載のロボットコントローラ。
【請求項２０】  前記ユーザプログラム実行部は、イベント検出部から追従停止イベントが発行されると、該追従停止イベントに対応する処理の実行を開始することを特徴とする請求項１９記載のロボットコントローラ。
【請求項２１】  前記追従停止イベントに対応する処理は、追加軌道の生成を停止する処理であることを特徴とする請求項２０記載のロボットコントローラ。
【請求項２２】  前記軌道生成部は、ユーザプログラム実行部において動作命令の指令位置データがロボットの座標系であると判断された場合、前記追加軌道の生成を停止して、前記指令位置データで指令された位置への直接軌道で追従軌道を生成することを特徴とする請求項１９記載のロボットコントローラ。
【請求項２３】  運搬装置によって搬送される移動物体に追従して該移動物体に所定の動作を行うロボットを制御するロボットコントローラであって、
移動物体の現在位置が格納される移動物体現在位置記憶部と、
移動物体を検出する検出部と、
該検出部の検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得し、該移動物体の検出位置と運搬装置の動作量とに基づいて移動物体の現在位置を算出し、算出した位置データで前記移動物体現在位置記憶部を更新する移動物体現在位置更新部と、
前記移動物体現在位置記憶部に格納されている移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換し、変換した位置に基づいて移動物体に追従するためのロボットの追従軌道を生成する軌道生成部とを備えており、
複数台の運搬装置を配置する場合には、運搬装置毎にそれぞれ運搬装置の座標系を設定することを特徴とするロボットコントローラ。
【請求項２４】  運搬装置によって搬送される移動物体に追従して該移動物体に所定の動作を行うロボットを制御するロボットコントローラであって、
移動物体の現在位置が格納される移動物体現在位置記憶部と、
移動物体を検出する検出部と、
該検出部の検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得し、該移動物体の検出位置と運搬装置の動作量とに基づいて移動物体の現在位置を算出し、算出した位置データで前記移動物体現在位置記憶部を更新する移動物体現在位置更新部と、
前記移動物体現在位置記憶部に格納されている移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換し、変換した位置に基づいて移動物体に追従するためのロボットの追従軌道を生成する軌道生成部とを備えており、
複数台のロボットを配置する場合には、ロボット毎にそれぞれ運搬装置の座標系及び追従領域を設定することを特徴とするロボットコントローラ。
【請求項２５】  前記運搬装置は直動コンベヤであることを特徴とする請求項１４記載のロボットコントローラ。
【請求項２６】  運搬装置によって搬送される移動物体に追従して該移動物体に所定の動作を行うロボットを制御するロボットコントローラであって、
移動物体の現在位置が格納される移動物体現在位置記憶部と、
移動物体を検出する検出部と、
該検出部の検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得し、該移動物体の検出位置と運搬装置の動作量とに基づいて移動物体の現在位置を算出し、算出した位置データで前記移動物体現在位置記憶部を更新する移動物体現在位置更新部と、
前記移動物体現在位置記憶部に格納されている移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換し、変換した位置に基づいて移動物体に追従するためのロボットの追従軌道を生成する軌道生成部とを備えており、
該運搬装置が円弧コンベヤ又はターンテーブルであり、前記運搬装置の座標系が、コンベヤの回転角度で示すＸ軸と、回転中心となる軸で成るＺ軸と、及び回転中心軸からの距離で示すＹ軸で構成されることを特徴とするロボットコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンベヤ等によって搬送される移動物体を追跡し、該移動物体に対して所定の動作を行うロボットの制御方法及びその方法を適用したロボットコントローラに関する。
【０００２】
【従来の技術】
従来、この種の移動物体（以下、ワークという）を追従するコンベヤトラッキングでは、ワークがロボットの可動範囲に到達したことを近接スイッチ等の外部センサで検出し、その検出信号に基づいてロボット手先の追従を開始させ、ワークに到達したときにそのワークに対して作業を行うように構成している。このような従来のコンベヤトラッキングでは、コンベヤ上に載置された自動車の車体の溶接を行うアプリケーションを主としており、このため、コンベヤが低速で移動し、同時に処理するワーク数が少ない（大抵は１）ことを想定してシステムが構成されている。
【０００３】
【発明が解決しようとする課題】
ところが、近年ではコンベヤトラッキングに望まれるアプリケーションも多種に渡っており、コンベヤ上をある程度の速度をもって流れる複数のワークに対して作業を行わせたいという要望が発生してきた。しかしながら、上述のようにワーク数が少ないことを想定して構成されたシステムでは、この種のアプリケーションの実現は困難であった。
【０００４】
例えば、ワークの現在位置を更新するに際し、ワーク数に比例した計算量が必要となることから、仮にロボットがコンベヤに対して平行ではなく傾いて設置されていた場合、コンベアの動作量に対してその傾いた角度の三角関数演算を行なって現在位置を算出する必要があるため、ロボット座標系（ロボットの設置ベースを原点とするＺ軸を垂直軸とする直交座標系（Ｘ，Ｙ，Ｚ）とする。）においてＸ座標値及びＹ座標値の両方について演算が必要となり、その演算量は多大なものとなる。このため、同時に処理できるワーク数に制限があったり、多数のワークを処理するための高速なＣＰＵが必要となる等の問題が生じていた。
【０００５】
ところで、このようなコンベア上のワークをロボットに追従させるための動作プログラムにおいては、ロボット手先の目標位置をロボット座標系で設定するようにしており、このためコンベヤを基準とした位置指定（例えばワーク中心から上流側に５ｍｍの位置や、コンベヤの幅方向に１０ｍｍ上部側の位置等の指定）が困難で、プログラム記述が複雑化していた。
【０００６】
ところで、最近では、カメラによってワークを検出するようにしたシステムが登場しているが、この種のシステムは、カメラによってワークの位置や向きなども検出できることから、複数のワークがコンベヤ上に散在しているような場合にも適用可能なシステムとして期待されている。しかしながらこの種のシステムにおいても、上述のワーク現在位置の更新にあたっての計算量の問題については依然解決されていない。
【０００７】
また、これらの従来のシステムにおいては、ワークがロボットの動作範囲に到達したか、また動作範囲から逸脱していないか等をチェックするための処理をユーザにプログラミングさせるようにしており、このため、ユーザプログラム中にワークの現在位置が動作範囲にあるか否かを監視する処理ループを記述する必要があった。次の図はそのユーザプログラムの具体的一例を示している。
【０００８】
図２０はユーザプログラムの具体的一例を示す図、図２１は図２０のユーザプログラムに対応した処理フローである。なお、両図において対応する処理部分には同一のステップ番号を示している。
このユーザプログラムにおいては、まずワークがロボットの可動範囲内にあるのか否かを処理ループ（ＤＯ・・ＬＯＯＰ）によってチェックし（Ｓ１０１）、可動範囲内にあれば追従軌道を生成してロボットをワークに追従させ（Ｓ１０２）、この追従軌道の生成をワークの現在位置が可動範囲を超えるか否かを処理ループ（ＲＥＰＥＡＴ・・ＵＮＴＩＬ）でチェックしながら（Ｓ１０３）、ワークのハンドリングが終了するまで繰り返し行い（Ｓ１０４）、途中、ロボットが可動範囲を超えた場合には追従動作を停止させ、エラー処理を行わせるようにしている（Ｓ１０５）。
【０００９】
このように、従来技術においては、ワークがロボットの動作範囲（ハンドリング領域）に到達したか否かをユーザプログラムに基づいてチェックするようにしているため、そのプログラム作成においてユーザの負担を強いるものとなっており、またプログラムが複雑化してプログラムの可読性を低下させていた。
【００１０】
また、ロボットが追従動作を行っている最中に何らかの原因でプログラムが停止してしまった場合には、ロボット動作範囲内の他の装置に衝突してしまったり、ロボット動作範囲を超えて動作を行おうとしてエラーとなるなどの不具合が発生する可能性があった。
【００１１】
また、カメラやロボット等の複数の装置を制御するロボットコントローラにおいては、ワークの位置取得に係るプログラムやロボットの動作プログラム等、複数のプログラムを並列処理して高速に実行できるマルチタスク機能が備えられている。ところが、ワークの到達や逸脱等、所定の間隔でチェックすれば十分な処理であっても、処理ループで実行されるために過剰に処理され、これにより他のプログラムの実行速度を低下させてしまい、マルチタスク機能の利点がいかされずロボットコントローラ全体の性能低下を招いていた。
【００１２】
また、従来のハンドリングシステムは直動コンベヤを対象としたものが多く、ターンテーブルや円弧コンベヤ等、ワークの移動経路が曲線状になるコンベヤに対しての追従制御が困難であった。この課題を解消するものとして、特開昭６０−２２１８０５号公報に記載されたものがあるが、この技術においても、ワークの現在位置の演算に係る演算量の問題については解決されていない。
【００１３】
本発明は、このような点に鑑みなされたもので、コンベヤの移動に伴うワークの現在位置の演算処理に際し、ワークの移動経路によらず演算量の低減を図ることを可能にすると共に、移動物体に対する動作の記述の容易化及び直感的な教示を可能にするロボット制御方法及び該方法を適用したロボットコントローラを提供することを第１の目的とする。
【００１４】
また、本発明は上記第１の目的に加え、ロボットのハンドリング領域（追従領域）を設定し、その追従領域とワークとの位置関係をチェックする機能を提供することで容易なプログラム記述及び処理速度の向上を図ることが可能なロボット制御方法及び該方法を適用したロボットコントローラを提供することを第２の目的とする。
【００１５】
【課題を解決するための手段】
（１）本発明に係るロボット制御方法は、運搬装置によって搬送される移動物体を追従して移動物体に所定の動作を行うロボットの制御方法であって、移動物体を検出するステップと、その検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得するステップと、移動物体の検出位置と運搬装置の動作量に基づいて移動物体の現在位置を運搬装置の座標系で逐次更新するステップと、移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換するステップと、変換した位置に基づいて移動物体を追従するためのロボットの追従軌道を生成するステップと、実行するユーザプログラムの動作命令に含まれる指令位置データが運搬装置の座標系で記述されているのか否かを判断するステップと、判断するステップにおいて指令位置データが運搬装置の座標系で記述されていると判断されたとき、動作命令の指令位置データで特定される位置で移動物体を追従するためのロボットの追従軌道を生成するステップと、追従軌道に沿ってロボットに追従を開始させるステップとを備えたものである。
【００１６】
（２）本発明に係るロボット制御方法は、運搬装置の座標系が、移動物体の移動方向に平行なＸ軸と、Ｘ軸と共に運搬装置の搬送面を構成するＹ軸と、Ｘ軸及びＹ軸に直交するＺ軸で構成されるものである。
【００１７】
（３）本発明に係るロボットの制御方法は、運搬装置によって搬送される移動物体を追従して移動物体に所定の動作を行うロボットの制御方法であって、移動物体を検出するステップと、その検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得するステップと、移動物体の検出位置と運搬装置の動作量に基づいて移動物体の現在位置を運搬装置の座標系で逐次更新するステップと、移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換するステップと、変換した位置に基づいて移動物体を追従するためのロボットの追従軌道を生成するステップと、動作命令に含まれる指令位置データが運搬装置の座標系で設定されている場合、指令位置データで特定される位置で移動物体を追従する動作命令に従ってロボットに追従を開始させるステップと、運搬装置の座標系で追従領域を設定するステップと、追従領域座標と移動物体の現在位置とに基づいて移動物体が追従領域内にあるか否かを判断するステップと、移動物体が追従領域内にあると判断した場合に、移動物体到達イベントを発行するステップと、移動物体到達イベントが発行されたときに、動作命令の指令位置データで特定される移動物体を追従する動作命令に従ってロボットに追従を開始させるステップとを備えたものである。
【００１８】
（４）本発明に係るロボット制御方法は、移動物体が追従領域内にあるか否かの判断を定期的に行うものである。
【００１９】
（５）本発明に係るロボット制御方法は、追従領域は、運搬装置の搬送面上で移動物体の移動方向に平行な２つの線と、これと直交する２つの線とで特定されるものである。
【００２０】
（６）本発明に係るロボット制御方法は、ロボットが移動物体を追従するための追従軌道は、ロボットの手先が追従開始時における移動物体の位置に向かう方向の直接軌道に移動物体の移動する方向の追加軌道を加算することによって生成し、追加軌道は、移動物体の位置の変化を運搬装置の座標系からロボットの座標系に変換し、これを更に関節角度座標系に変換し、又直接軌道は、各々がロボット座標系及びコンベア座標系のロボット手先と移動物体の追従開始時位置を関節角度座標系に変換することにより求めるものである。
【００２１】
（７）本発明に係るロボット制御方法は、移動物体が追従領域内にあるか否かを判断した際に、追従領域内にないと判断した場合には追従停止イベントを発行して、追従停止イベントに対応する処理を開始するものである。
【００２２】
（８）本発明に係るロボット制御方法は、追従停止イベントに対応する処理が、追加軌道の生成を停止する処理であるものである。
【００２３】
（９）本発明に係るロボット制御方法は、指令位置データがロボットの座標系で設定された動作命令が与えられると、追加軌道の生成を停止して、指令位置データで指令された位置への直接軌道で追従軌道を生成するものである。
【００２４】
（１０）本発明に係るロボット制御方法は、運搬装置によって搬送される移動物体を追従して移動物体に所定の動作を行うロボットの制御方法であって、移動物体を検出するステップと、その検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得するステップと、移動物体の検出位置と運搬装置の動作量に基づいて移動物体の現在位置を運搬装置の座標系で逐次更新するステップと、移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換するステップと、変換した位置に基づいて移動物体を追従するためのロボットの追従軌道を生成するステップとを備えており、複数台の運搬装置を配置する場合には、運搬装置毎にそれぞれ運搬装置の座標系を設定するものである。
【００２５】
（１１）本発明に係るロボット制御方法は、運搬装置によって搬送される移動物体を追従して移動物体に所定の動作を行うロボットの制御方法であって、移動物体を検出するステップと、その検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得するステップと、移動物体の検出位置と運搬装置の動作量に基づいて移動物体の現在位置を運搬装置の座標系で逐次更新するステップと、移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換するステップと、変換した位置に基づいて移動物体を追従するためのロボットの追従軌道を生成するステップとを備えており、複数台のロボットを配置する場合には、ロボット毎にそれぞれ運搬装置の座標系及び追従領域を設定するものである。
【００２６】
（１２）本発明に係るロボット制御方法は、運搬装置が直動コンベヤであるものである。
【００２７】
（１３）本発明に係るロボット制御方法は、運搬装置によって搬送される移動物体を追従して移動物体に所定の動作を行うロボットの制御方法であって、移動物体を検出するステップと、その検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得するステップと、移動物体の検出位置と運搬装置の動作量に基づいて移動物体の現在位置を運搬装置の座標系で逐次更新するステップと、移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換するステップと、変換した位置に基づいて移動物体を追従するためのロボットの追従軌道を生成するステップとを備えており、運搬装置が円弧コンベヤ又はターンテーブルであり、運搬装置の座標系が、コンベヤの回転角度で示すＸ軸と、回転中心となる軸で成るＺ軸と、及び回転中心軸からの距離で示すＹ軸で構成されるものである。
【００２８】
（１４）本発明に係るロボットコントローラは、運搬装置によって搬送される移動物体に追従して移動物体に所定の動作を行うロボットを制御するロボットコントローラであって、移動物体の現在位置が格納される移動物体現在位置記憶部と、移動物体を検出する検出部と、検出部の検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得し、移動物体の検出位置と運搬装置の動作量とに基づいて移動物体の現在位置を算出し、算出した位置データで移動物体現在位置記憶部を更新する移動物体現在位置更新部と、移動物体現在位置記憶部に格納されている移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換し、変換した位置に基づいて移動物体に追従するためのロボットの追従軌道を生成する軌道生成部とを備えており、運搬装置の座標系は、移動物体の移動方向に平行なＸ軸と、Ｘ軸と共に運搬装置の搬送面を構成するＹ軸と、Ｘ軸及びＹ軸に直交するＺ軸で構成されるものである。
【００２９】
（１５）本発明に係るロボットコントローラは、運搬装置によって搬送される移動物体に追従して移動物体に所定の動作を行うロボットを制御するロボットコントローラであって、移動物体の現在位置が格納される移動物体現在位置記憶部と、移動物体を検出する検出部と、検出部の検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得し、移動物体の検出位置と運搬装置の動作量とに基づいて移動物体の現在位置を算出し、算出した位置データで移動物体現在位置記憶部を更新する移動物体現在位置更新部と、移動物体現在位置記憶部に格納されている移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換し、変換した位置に基づいて移動物体に追従するためのロボットの追従軌道を生成する軌道生成部と、動作命令が記述されたユーザプログラムを実行し、動作命令の指令位置データが運搬装置の座標系で記述されているのか否かを判断するユーザプログラム実行部とを備えており、ユーザプログラム実行部において動作命令の指令位置データが運搬装置の座標系で記述されていると判断されたとき、軌道生成部が、指令位置データで特定される移動物体を追従するためのロボットの追従軌道を生成するものである。
【００３０】
（１６）本発明に係るロボットコントローラは、運搬装置の座標系の座標で示される追従領域が格納される追従領域記憶部と、移動物体が追従領域内にあるか否かを現在位置記憶部に格納された移動物体の現在位置と追従領域記憶部に格納された追従領域とに基づいて判断し、領域内にあると判断した場合には移動物体到達イベントを発行し、領域内にないと判断した場合には追従停止イベントを発行するイベント検出部とを更に備え、軌道生成部は、移動物体到達イベントが発行されたときに、ロボットが動作命令の指令位置データで特定される移動物体を追従するための追従軌道を生成するものである。
【００３１】
（１７）本発明に係るロボットコントローラは、イベント検出部が、移動物体が領域内にあるか否かの判断を定期的に行うものである。
【００３２】
（１８）本発明に係るロボットコントローラは、追従領域は、運搬装置の搬送面上で移動物体の移動方向に平行な２つの線と、これと直交する２つの線とで特定される領域であるものである。
【００３３】
（１９）本発明に係るロボットコントローラは、軌道生成部は、ロボットが移動物体に追従する追従軌道を、ロボットの手先が追従開始時における移動物体の位置に向かう方向の直接軌道に、移動物体の移動方向の追加軌道を加算することによって生成し、追加軌道は、移動物体の位置の変化を運搬装置の座標系からロボット座標系に変換し、これを更に関節角度座標系に変換し、又直接軌道は、各々がロボット座標系及びコンベア座標系のロボットの手先と移動物体の追従開始時位置を関節角度座標系に変換することにより求めるものである。
【００３４】
（２０）本発明に係るロボットコントローラは、ユーザプログラム実行部が、イベント検出部から追従停止イベントが発行されると、追従停止イベントに対応する処理の実行を開始するものである。
【００３５】
（２１）本発明に係るロボットコントローラは、追従停止イベントに対応する処理が、追加軌道の生成を停止する処理であるものである。
【００３６】
（２２）本発明に係るロボットコントローラは、軌道生成部が、ユーザプログラム実行部において動作命令の指令位置データがロボットの座標系であると判断された場合、追加軌道の生成を停止して、指令位置データで指令された位置への直接軌道で追従軌道を生成するものである。
【００３７】
（２３）本発明に係るロボットコントローラは、運搬装置によって搬送される移動物体に追従して移動物体に所定の動作を行うロボットを制御するロボットコントローラであって、移動物体の現在位置が格納される移動物体現在位置記憶部と、移動物体を検出する検出部と、検出部の検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得し、移動物体の検出位置と運搬装置の動作量とに基づいて移動物体の現在位置を算出し、算出した位置データで移動物体現在位置記憶部を更新する移動物体現在位置更新部と、移動物体現在位置記憶部に格納されている移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換し、変換した位置に基づいて移動物体に追従するためのロボットの追従軌道を生成する軌道生成部とを備えており、複数台の運搬装置を配置する場合には、運搬装置毎にそれぞれ運搬装置の座標系を設定するものである。
【００３８】
（２４）本発明に係るロボットコントローラは、運搬装置によって搬送される移動物体に追従して移動物体に所定の動作を行うロボットを制御するロボットコントローラであって、移動物体の現在位置が格納される移動物体現在位置記憶部と、移動物体を検出する検出部と、検出部の検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得し、移動物体の検出位置と運搬装置の動作量とに基づいて移動物体の現在位置を算出し、算出した位置データで移動物体現在位置記憶部を更新する移動物体現在位置更新部と、移動物体現在位置記憶部に格納されている移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換し、変換した位置に基づいて移動物体に追従するためのロボットの追従軌道を生成する軌道生成部とを備えており、複数台のロボットを配置する場合には、ロボット毎にそれぞれ運搬装置の座標系及び追従領域を設定するものである。
【００３９】
（２５）本発明に係るロボットコントローラは、運搬装置が直動コンベヤであるものである。
【００４０】
（２６）本発明に係るロボットコントローラは、運搬装置によって搬送される移動物体に追従して移動物体に所定の動作を行うロボットを制御するロボットコントローラであって、移動物体の現在位置が格納される移動物体現在位置記憶部と、移動物体を検出する検出部と、検出部の検出結果に基づいて移動物体の運搬装置の座標系における検出位置を取得し、移動物体の検出位置と運搬装置の動作量とに基づいて移動物体の現在位置を算出し、算出した位置データで移動物体現在位置記憶部を更新する移動物体現在位置更新部と、移動物体現在位置記憶部に格納されている移動物体の現在位置を運搬装置の座標系からロボットの座標系に変換し、変換した位置に基づいて移動物体に追従するためのロボットの追従軌道を生成する軌道生成部とを備えており、運搬装置が円弧コンベヤ又はターンテーブルであり、運搬装置の座標系が、コンベヤの回転角度で示すＸ軸と、回転中心となる軸で成るＺ軸と、及び回転中心軸からの距離で示すＹ軸で構成されるものである。
【００４１】
上記（１）によれば、運搬装置の座標系で移動物体の位置を更新することにより、ロボットの座標系で更新する場合に比べてその更新に係る演算が容易となり、また、移動物体に対する所定の動作を記述する際に、運搬装置の座標系を基準とした簡単かつ直感的な位置指定が可能でプログラム記述が容易となる。
【００４２】
上記（２）及び（１４）によれば、運搬装置の座標系のＸ軸が移動物体の移動方向に平行に構成されているので、移動物体の位置はＸ座標値のみが変化する。このため、移動物体の位置はＸ座標値のみ更新すればよく、ロボット座標で更新する場合に比べて演算量を低減することが可能となる。
【００４３】
上記（１５）によれば、追従開始の指示を行わなくても運搬装置の座標系における指令位置データの動作命令を与えるだけでロボットに追従動作を開始させることが可能となるので、ユーザは運搬装置の動作を意識することなくプログラム記述が可能となる。
【００４４】
上記（３）、（４）、（５）、（１６）、（１７）、（１８）によれば、運搬装置の座標系で予め追従領域を設定しておき、移動物体が追従領域内にあるか否かを追従領域座標と移動物体の現在位置とに基づき判断して、追従領域内にある場合には、移動物体到達イベントを発行し、移動物体到達イベントが発行されたとき、与えられた動作命令の指令位置データで特定される移動物体を追従する処理を開始するようにしたので、従来のようにユーザプログラム内で移動物体の位置を監視して処理ループを記述する必要がなくなり、プログラムの可読性の向上が図れると共に、処理速度を向上させることが可能となる。
【００４５】
上記（６）及び（１９）によれば、移動物体の現在位置と所定周期前の移動物体の位置に基づき追従方向の軌道を生成しているので、運搬装置の速度ムラを補償した軌道を生成することが可能となる。
【００４６】
上記（７）及び（２０）によれば、追従領域内にないと判断した場合に、追従停止イベントを発行して、その追従停止イベントに対応する処理を開始するので、例えばロボットが追従動作を行ったまま自分の動作範囲外にまで動作しようとしてエラーとなる等の不具合を回避するための動作プログラムを簡単に作成することが可能となる。即ち、ユーザは追従停止イベントに対応する処理として上記不具合回避動作を記述すれば良い。
【００４７】
上記（８）及び（２１）によれば、追従停止イベントが発行されたとき、追従方向の軌道の生成が停止されるので、ロボットが追従領域を逸脱して追従を続けることによる不具合を自動的且つ確実に防止することが可能となる。
【００４８】
上記（９）及び（２２）によれば、指令位置データがロボットの座標系で設定された動作命令が与えられたとき、追従方向の軌道の生成を停止して、指令位置への軌道が生成されるので、ユーザは目標位置（指令位置）が運搬装置外であれば、ロボットの座標系で指令位置データを記述することにより、自動的に追従動作を停止させてロボットを指令位置へ移動させる動作を実現することが可能となり、ロボットの現在の状態（追従中であるか否か）や運搬装置の動作を意識することなくプログラムを作成することが可能となる。
【００４９】
上記（１０）及び（２３）によれば、複数台の運搬装置を配置する場合には、運搬装置毎にそれぞれ運搬装置の座標系を設定するようにしたので、対応する座標系で指令位置データを設定した動作命令を記述することにより、一方の運搬装置から他方の運搬装置へ移動物体を移載するような作業も簡単にプログラムすることが可能となる。
【００５０】
上記（１０）及び（２４）によれば、複数台のロボットを配置する場合には、各ロボット毎にそれぞれ運搬装置の座標系及び追従領域を設定することにより、１台の運搬装置に複数台のロボットを配置することが可能となる。
【００５１】
上記（１２）、（１３）、（２５）及び（２６）によれば、運搬装置が直動コンベヤ、円弧コンベヤ、ターンテーブルの何れであっても、以上に説明した効果を奏することが可能となる。
【００５２】
【発明の実施の形態】
実施の形態１．
図１は本発明の実施の形態１のロボットコントローラを適用したハンドリングシステムの機能ブロック図、図２は本発明の実施の形態１のソフトウェア構成を示す図、図３は本発明の実施の形態１のハンドリングシステムの概略構成図である。
図において、１は運搬装置としてのコンベヤ、２はコンベヤ１上を流れるワークを検出する検出部であるカメラ、３はコンベヤ１に取り付けられ、コンベヤ１の動作量を検出するためのエンコーダ、４はロボットで、これらコンベヤ１、カメラ２、エンコーダ３及びロボット４がロボットコントローラ５に接続されてハンドリングシステムが構成されている。
【００５３】
ロボットコントローラ５は、ユーザプログラムを記憶するユーザプログラム記憶部１１、該ユーザプログラム記憶部１１に記憶されたユーザプログラムを実行するユーザプログラム実行部１２、カメラ２により認識されたワークの現在位置が格納されるワーク現在位置記憶部１３、該ワーク現在位置記憶部１３のワークの現在位置をコンベヤ１の動作量に基づいて更新するワーク現在位置更新部１４、追従領域が設定される追従領域記憶部１５、作業ポイント（ロボット手先）の軌道（各関節の角度）を生成し、これをモータ指令値（パルス）に変換して後述のモータ制御部１８に出力する軌道生成部１６、追従領域に対するワークの事象（イベント）を検出するイベント検出部１７、軌道生成部１６からのモータ指令値に従って各関節のモータ４ａを制御するモータ制御部１８を備えた構成となっている。軌道生成部１６及びイベント検出部１７は外部タイマなどのハードウェアや後述のオペレーティングシステム（ＯＳ）により所定のサンプリングタイム毎に起動される。
【００５４】
また、ロボットコントローラ５のソフトウェア構成は、図２に示すようにユーザプログラムと、ロボットコントローラ５を制御し、イベント機能やマルチタスク機能等を有するオペレーティングシステム（ＯＳ）と、ロボット４やコンベヤ１の位置検出等を行う制御プログラムとを備えた構成となっている。
【００５５】
ここで、図１の各構成部の詳細な説明に先だって、本ロボットコントローラ５において導入するコンベヤ座標系（運搬装置の座標系）について説明する。
図４はコンベヤ座標系の説明図である。
コンベヤ座標系は、ワークの移動方向に平行なＸ軸と、このＸ軸と共に作業平面（コンベヤ１の搬送面）を構成する方向のＹ軸（直動コンベヤの場合、Ｘ軸に直交）と、Ｘ軸及びＹ軸に直交する方向のＺ軸で構成される座標系として定義され、ロボット座標系と一意に変換可能となっている。なお、このコンベヤ座標系の原点は、ある時点でのワークの位置でもよいし、任意の位置に設定してもよい。また、ロボット座標系はロボット４の設置ベースを原点とする直交座標系である。
【００５６】
コンベヤ座標系における位置とロボット座標系における位置をユーザプログラム中に記述する場合には、以下のように記述する。
ロボット座標系の位置データ：ＰR = x,y,z,u,v,w
コンベア座標系の位置データ：Ｐc = xc,yc,zc,uc,vc,wc/CNV
【００５７】
ここで、x,y,z及びxc,yc,zcはそれぞれ各座標軸成分の位置を表し、u,v,w及びuc,vc,wcはその位置での姿勢を表す成分である。また、座標値列の最後に「/CNV」と修飾することによりコンベヤ座標であることを示すようにしている。
【００５８】
なお、上述したようにコンベア座標系はロボット座標系と一意に変換可能であり、互いの変換式は変換行列Ｔを用いて以下のようになっている。
【００５９】
(x,y,z,u,v,w,1) = T・(xc,yc,zc,uc,vc,wc,1)
(xc,yc,zc,uc,vc,wc,1) = T-1・(x,y,z,u,v,w,1)
【００６０】
このようなコンベヤ座標系の導入により、コンベヤ動作に伴うワーク位置はＸ座標値のみが変化する。このようにワークの現在位置をコンベヤ座標系で演算することによりＹ座標値及びＺ座標値の演算が省略でき、コンベヤ上を非常に多くのワークが流れる場合にも、ロボットコントローラ５に多大な負荷をかけることなく処理が可能となる。
【００６１】
図５は各座標系の階層構造を示す図である。
ロボット座標系、関節角度座標系、モータパルス座標系は従来から利用されている座標系であり、ここで新たに導入するコンベヤ座標系を加えた各座標系は図５に示すような階層構造を成している。これらの各座標系は互いに座標変換可能となっており、ロボット４に対する指令値は、何れの座標系で指令された場合においても、順次その下層に位置する座標系に変換され、最終的にはモータパルス座標系を基準としたパルスに変換されてモータ制御部１８に出力されるようになっている。
【００６２】
次に示す命令文は各座標系での動作命令ＧＯの記述形式の一例を示している。  ユーザは、ロボット手先の目標位置がコンベヤ１上の場合（例えば移動中のワークを指定する場合）にはコンベヤ座標系における位置データＰc を用いて動作命令を記述し、コンベヤ１外（例えばロボット脇に設置されたテーブル上）の場合には、ロボット座標系における位置データＰR を用いて動作命令を記述する。
コンベヤ座標系で指令    ：ＧＯ  xc,yc,zc,uc,vc,wc/CNV
ロボット座標系で指令    ：ＧＯ  x,y,z,u,v,w
関節角度座標系で指令    ：ＧＯ  ＪＡ(J1,J2,J3,J4,J5,J6)
モータパルス座標系で指令：ＧＯ  ＰＵＬＳＥ(p1,p2,p3,p4,p5,p6)
【００６３】
なお、関節角度座標系のJ1〜J6は関節角度、モータパルス座標系のp1〜p6はパルス数で、ロボットの各関節毎に指定される。なお、コンベヤ座標系においては位置データＰcで指定する以外に、例えばコンベヤ１上のワークの現在位置を示す変数「workpos」を用いて「ＧＯ  workpos」と記述することも可能である。
【００６４】
ここで、図１の説明に戻る。
カメラ２は、コンベヤ１上のワークを撮影しており、ワーク現在位置更新部１４はその撮影画像からコンベヤ座標系におけるワークの位置を求めてその位置データをワーク現在位置記憶部１３に格納する。この動作をワークの登録と位置づける。一方、エンコーダ３からはコンベヤパルスが出力されており、ワーク現在位置更新部１４はそのコンベヤパルスに基づいてコンベヤ動作によるワークの移動量を算出し、ワーク現在位置記憶部１３の位置データを逐次更新している。このワークの移動量は、撮影時のコンベアパルス数と現在のコンベアパルス数との差を求め、このパルス数の差と、予め設定された１コンベヤパルスあたりのコンベヤ座標系上での変化量との積を取ることにより求められる。ワーク現在位置更新部１４は、このようにして算出したワークの移動量を、撮影時に算出された座標値に加算することによってコンベア座標におけるワーク現在位置を求め、ワーク現在位置記憶部１３を更新する。ここで、Ｙ座標及びＺ座標については変化が無いため、ワーク現在位置更新部１４はＹ座標、Ｚ座標についての演算は省略し、Ｘ座標のみの演算を行う。
【００６５】
図６は図１の追従領域記憶部に設定される追従領域の説明図である。なお、図に示す座標系はコンベヤ座標系である（Ｚ軸は図示せず）。
この追従領域とはロボット４が追従動作を行う領域であり、ロボット４の動作範囲等を考慮してユーザによりコンベヤ座標系の座標値（追従領域座標）を以て設定される。すなわち、図６のハッチングで示す領域を指定する場合、ａ（ｘａ，ｙａ，０）、ｂ（ｘｂ，ｙｂ，０）の２点の追従領域座標を追従領域設定値として追従領域記憶部１５に設定する。
【００６６】
図７は図１のイベント検出部の動作フローである。
イベント検出部１７は、サンプリング間隔で呼び出されると、まず、ワーク現在位置記憶部１３を参照してワークが登録されているか否かをチェックし（Ｓ１）、登録されている場合、ワーク現在位置と追従領域記憶部１５の追従領域設定値とに基づいてワークが追従領域内にあるか否かをチェックする（Ｓ２）。ワークが追従領域内にある場合には、ワーク到達イベントを発行し（Ｓ３）、ワークが追従領域内になく、現在ロボット４が追従中であれば（Ｓ４）、追従停止イベントを発行して（Ｓ５）、処理を終了する。
【００６７】
図８は図１のユーザプログラム実行部の動作フローを示す図である。
ユーザプログラム実行部１２は、ユーザプログラムに記述された命令文を１行読み込み（Ｓ１１）、読み込んだ命令が動作命令であるか否かを判断し（Ｓ１２）、動作命令でないと判断した場合には、その命令に基づく処理を行い（Ｓ１３）、動作命令であると判断した場合には、動作命令の指令位置データがコンベヤ座標系かロボット座標系かをチェックして（Ｓ１４）、コンベヤ座標系であればフラグ(flag)を１に設定し（Ｓ１５）、ロボット座標系であればフラグ(flag)を０に設定して（Ｓ１６）、動作命令の登録を行う（Ｓ１７）。この動作命令の登録とは、軌道生成部１６での軌道生成処理に必要なデータを算出し、その算出データを軌道生成部１６に登録する動作を行うものであり、後で詳述する。
【００６８】
ユーザプログラム実行部１２は動作命令の登録後、軌道生成部１６からの動作命令終了通知の受信待ち状態となる（Ｓ１８）。即ち、動作命令で指令された位置へロボット手先が到達するのを待ち、その到達が軌道生成部１６からの動作命令終了通知によって通知されると、ここで処理した命令がプログラムの最後かどうかを判断し（Ｓ１９）、最後でなければステップＳ１１に戻ってプログラムが終了するまで以上の処理を繰り返し行う。
【００６９】
ここで、動作命令の登録処理について説明する。
この処理は、ロボット手先を現在位置から動作命令における指令位置（すなわち追従動作開始時のワーク位置）に移動させるのに要する関節角度移動量ΔＪと、ロボット手先を現在位置から指令位置に移動させるのに要する時間Ｔとを算出して軌道生成部１６に登録する処理を行うものである。
【００７０】
ここで、関節角度移動量ΔＪは、ロボット４の現在の関節角度と、ロボット手先が指令位置に位置したときの関節角度との差分をとることにより求められる。図９はワークの位置と、ロボット４の関節角度との関係説明図である。図９においてロボットの現在位置をＰ０，指令位置をコンベヤ１上の位置Ｐ１とすると（なお、Ｐ０はロボット座標、Ｐ１はコンベヤ座標とする）、この場合の関節角度移動量ΔＪは、ワーク現在位置Ｐ１をロボット座標系に変換し、更に関節座標系に変換して求めた関節角度座標Ｊ１と、同様にロボット４の現在位置Ｐ０を関節角度座標系に変換して求めた関節角度座標Ｊ０とを用いて次式で算出される。
【００７１】
ΔＪ＝Ｊ１−Ｊ０
【００７２】
また、時間Ｔであるが、これは各関節のモータ制約等により予め設定された計算方法によって算出する。そして、このようにして算出した関節角度移動量ΔＪ及び時間Ｔを動作命令として軌道生成部１６に登録する。
【００７３】
図１０は図１の軌道生成部の動作フローを示す図である。
軌道生成部１６は、サンプリング間隔で呼び出されると、まず動作命令が登録されているか否かをチェックし（Ｓ２１）、登録されている場合、即ちロボット４の動作が指示されている場合には、その動作を実現するための軌道を生成する。その軌道生成として、まずロボット手先を現在位置から動作命令の指令位置に移動させるための指令位置方向（追従動作開始時におけるワーク位置に向かう方向）の軌道である関節角度ＪS（ｔ）を計算する（Ｓ２２）。この関節角度ＪS（ｔ） は上述のΔＪ、Ｔを用いた次式により算出される。
【００７４】
Ｊs（ｔ） ＝Ｊ0 ＋ΔＪ・（ｔ−ｔ0）／Ｔ    （ｔ0≦ｔ≦ｔ0＋Ｔ）
【００７５】
ここで、Ｊ0 はロボット４の現在位置Ｐ０での関節角度、ｔ0 は追従開始時の時刻である。
【００７６】
次いで、軌道生成終了か否かを時刻ｔに基づいて判断し（Ｓ２３）、現時刻ｔがｔ0 ＋Ｔ以内であれば軌道生成終了ではないと判断して、続いて指令位置がコンベヤ座標、ロボット座標の何れで与えられているかをフラグに基づいてチェックし（Ｓ２５）、フラグが１の場合にはコンベヤ座標と判断して追従方向の軌道、即ちコンベヤ動作を考慮した追従動作分の関節角度移動量ΔＪt（ｔ） を算出する（Ｓ２６）。
【００７７】
ここで、追従動作分の関節角度移動量ΔＪt（ｔ） の算出方法について上述の図９を参照しながら説明する。
図９において、時刻ｔでのコンベヤ座標におけるワーク位置をＰt (ｔ)、このワークの１サンプリング前の位置をＰt (ｔ−１)とする。追従動作分の関節角度移動量ΔＪt（ｔ）は、１サンプルにおける関節角度の差分であり、位置Ｐt(ｔ)及びＰt (ｔ−１)をそれぞれコンベヤ座標系からロボット座標系に変換し、更に関節角度座標系に変換して取得した関節角度Ｊt (ｔ)及びＪt (ｔ−１)に基づいて次式で算出される。
【００７８】
ΔＪt（ｔ）＝Ｊt(ｔ−１)−Ｊt(ｔ)
【００７９】
この関節角度移動量ΔＪt （ｔ）は次のサンプルにおける追従方向のロボット４の軌道として利用され、これによりコンベヤ１の動作量（コンベヤ１の速度）を考慮した目標軌道が生成されることになる。
【００８０】
軌道生成部１６は、以上に算出した指令位置方向の関節角度Ｊs （ｔ）と追従方向の関節角度移動量ΔＪt （ｔ）を各関節の成分毎に加算することによりサンプリングタイム毎の目標軌道である目標関節角度Ｊ（ｔ）を計算する（Ｓ２７）。すなわち、次式で求められる。
【００８１】
Ｊ（ｔ）＝Ｊs（ｔ）＋ΔＪt（ｔ）
【００８２】
そして、軌道生成部１６は関節角度Ｊ（ｔ）をモータパルス座標に変換してモータ制御部１８に出力する（Ｓ２７）。一方、ステップＳ２５においてロボット座標系であると判断した場合には、ステップＳ２６の処理は行わずにステップＳ２７の処理に移行する。すなわち、この関節角度移動量ΔＪt （ｔ）の演算を省略することによって追従動作が停止され、指令位置に向かう軌道のみが生成されることになる。このように、軌道生成部１６は、指令位置の座標系に応じた軌道を逐次生成し、その目標関節角度をパルス座標に変換して出力する処理をサンプリングタイム周期で繰り返し行うように構成されている。
【００８３】
なお、ステップＳ２３において時刻ｔ0 ＋Ｔを経過し、ワークのハンドリングが終了している場合には、軌道生成終了と判断して動作命令終了をユーザプログラム実行部に通知する（Ｓ２４）。時刻ｔ0 ＋Ｔが経過しても追従停止が指示されない限り、追従方向の軌道ΔＪｔ（ｔ）の生成は続けられ、ロボット４は追従動作を継続する。ここで、例えば追従動作を行ったままワークが追従領域から逸脱したような場合には、イベント検出部１７から追従停止イベントが発行されるので、この追従停止イベントの発行を待って追従動作を停止させるプログラムを作成することにより、追従方向の軌道の生成が停止され、追従領域を超えて追従動作を行ってしまうといったエラーを防止することが可能となる。
【００８４】
このように構成することにより、ユーザは、ロボット手先にコンベヤ１上のワークを追従させる場合には、ワークの位置をコンベヤ座標系で指定することにより（例えばワークの現在位置を示す関数workpos で指定）、ロボット４に自動的に追従動作を開始させることが可能となり、また、コンベヤ１上のワークをハンドリング後、そのワークを例えばロボット脇のテーブル上に整列させたい場合には、テーブル上の目標位置をロボット座標系で指定することにより、自動的に追従動作を停止して、指定された目標位置へロボット手先を移動させる動作を行わせることが可能となる。従って、ユーザはコンベヤ１の動作を意識することなく、止まっているワークに対する処理を作成するように容易にプログラムを作成することが可能となる。次の図は、そのユーザプログラムの一例を示している。
【００８５】
図１１は本発明の実施の形態のユーザプログラムの一例を示す図、図１２は図１１のタスク１及びタスク２の処理フローチャートで、両図において対応する処理部分には同一のステップ番号を示している。
このプログラムは、メインタスク(FUNTCION MAIN) において、他のファンクションの実行を指示する命令（ＸＱＴ）により１行目においてタスク１を、２行目においてタスク２を起動させている。タスク１においては、ワークの到達を待ち（Ｓ３１）、イベント検出部１７からワーク到達イベントが発行され、ワークが到達したことを認識すると、ロボットにそのワークを追従させ（Ｓ３２）、ハンドリングが終了すると（Ｓ３３）、位置Ｐ２（ロボット座標系における位置）にロボット手先を移動させる（Ｓ３４）処理を行うものである。また、タスク２においては、１行目において追従停止イベントを待ち（Ｓ４１）、イベント検出部１７から追従停止イベントが発行され、すなわちワークが追従領域から逸脱した場合、２行目においてタスク１を停止させ（Ｓ４２）、３行目において追従動作を停止させ（Ｓ４３）、４行目においてエラー処理を行う（Ｓ４４）ようにしたものである。
【００８６】
次に本実施の形態１の動作を説明する。なお、ここでは、図１１に示したユーザプログラムを実行するものとし、ロボット４が手先位置Ｐ０（図３参照）からコンベヤ１上を流れるワーク（動作指令が発行された時点でのワーク位置をＰ１：図３参照）の追従を開始してハンドリングし、ロボット４脇のテーブル上のパレット（位置Ｐ２：図３参照）に載置する場合を考える。
ユーザは予め追従領域を追従領域記憶部１５に設定しておき、その後、カメラ２でのワークの認識を行うプログラムを実行する。これによりカメラ２は撮像を開始し、その画像からワークの位置が求められてワーク現在位置記憶部１３に記憶され、ワーク現在位置更新部１４によってワーク現在位置記憶部１３に逐次更新されている。この更新処理にあたっては、コンベヤ座標系での位置の演算が行われており、上述したように演算量は従来に比べて格段に少なくなっている。また、イベント検出部１７は、ワークの現在位置を追従領域記憶部１５の追従領域設定値とをサンプリングタイム毎にチェックし、ワークが追従領域に到達してから追従領域から逸脱するまでの間、ワーク到達イベントを繰り返し発行し、逸脱すると、今度は追従停止イベントを発行する。
以上の処理は、ユーザによりロボット動作プログラムが開始されていない間にもワークの認識に係るプログラムの実行によって開始されるもので、ロボット動作とは無関係にロボットコントローラ５側で行われている処理である。
【００８７】
ここで、ユーザが例えば図１１に示したユーザプログラム（ロボット動作プログラム）を実行すると、ユーザプログラム実行部１２は、タスク１及びタスク２を起動させる。そして、タスク１においては１行目においてワークの到達を待ち、そして、イベント検出部１７からワーク到達イベントが発行されると、ユーザプログラム実行部は次の命令に移行する。２行目は動作命令で、且つその位置データはコンベヤ１上の現在のワーク位置を指定する変数workpos であるので、ユーザプログラム実行部１２はフラグを１に設定し、上述した関節角度移動量ΔＪ、時間Ｔを算出して軌道生成部１６に動作命令の登録を行い、軌道生成部１６からの動作命令終了通知待ち状態となる。
【００８８】
軌道生成部１６は、登録されている動作命令に従う軌道の生成を行うが、ここでは指令位置がコンベヤ座標系で与えられているので、関節角度ＪS （ｔ）及び追従動作分の関節角度移動量ΔＪt （ｔ）を計算しこれらを加算した目標軌道を生成し、その関節角度Ｊ（ｔ）をモータパルス座標に変換して出力する。モータ制御部１８は、軌道生成部１６から出力されたパルスに従ってロボット４の各関節を制御する。軌道生成部１６はこの軌道の生成を各サンプリングタイム毎に繰り返し行い、ハンドリングが終了すると、ユーザプログラム実行部に動作命令終了通知を発行する。
【００８９】
ユーザプログラム実行部１２は、軌道生成部１６からの動作命令終了通知を受信すると、次の命令に移行する。３行目においても動作命令であり、ここでは、ロボット座標系での位置Ｐ２であるため、ユーザプログラム実行部１２は、フラグを０に設定すると共に関節角度移動量ΔＪ及び時間Ｔを演算して動作命令の登録を行う。軌道生成部１６は、ここで登録された動作命令に従って関節角度Ｊs （ｔ）を算出し、ここでは追従動作分の関節角度移動量の計算は省略して前記関節角度Ｊs （ｔ）をそのまま目標関節角度Ｊ（ｔ）とし、モータパルス座標に変換して出力する。これにより、ロボット４はワークをハンドリング後も継続していた追従動作を停止しての位置Ｐ２への移動を行う。
【００９０】
一方、タスク２においては、１行目において追従停止イベント待ち状態にあり、イベント検出部１７から追従停止イベントが発行された場合、２行目においてタスク１を停止させ、３行目において追従動作を停止させるようになっている。
【００９１】
以上に説明したように、本実施の形態１によれば、コンベヤ座標系を定義することにより、ワークの現在位置の演算に係る演算量を低減でき、ロボットコントローラ５の負荷を軽減することができる。
【００９２】
また、コンベヤ座標系の位置データ（例えばコンベヤ座標系の位置データを示す変数又は座標系修飾「/CNV」を付与した位置データ）への動作命令を実行するだけで自動的に追従動作を開始し、逆にロボット座標系の位置データへの動作命令が実行されたときは、自動的に追従動作を停止するようにしているので、ユーザはコンベヤ１の動作を意識することなく、止まっているワークに対する処理を作成するように容易にプログラムすることが可能である。
【００９３】
また、コンベヤ座標系に対して追従領域を設定し、その追従領域へのワークの到達や追従領域からの逸脱をロボットコントローラ５側で（イベント検出部１７で）検出してイベントとして発行するようにしたので、ユーザプログラムで検出するようにした従来の方法に比べてロボットコントローラ５の負荷を軽くでき、処理速度の低下が防止されて処理性能を向上させることが可能となる。また、ユーザはユーザプログラムにおいて処理ループを記述する必要がなくなり、イベント検出部１７からのイベントの発行を待つ命令を記述するだけで良いため、プログラム記述が非常に楽になる。
【００９４】
また、そのプログラムは、図１１に示したユーザプログラムの具体例に示されているように、各イベント毎にそのイベントが発生したときに実行させる処理をモジュール化することが可能となり、図２０に示した従来のユーザプログラムと比較して明らかなようにプログラムの可読性が非常に向上している。
【００９５】
また、イベントの検出はソフトウェアで実現しているので、追従領域の変更等に対してもその追従領域設定値を変更するだけでよく、柔軟に対応することが可能となる。
【００９６】
また、ワークが追従領域内にないと判断した場合には追従停止イベントが発行されるので、ユーザは追従停止イベントに対応する処理として追従方向の軌道の生成を停止させるようにすれば、ロボットが追従領域を逸脱して追従動作を続ける等の不具合を確実に防止することが可能となる。また、ユーザはロボットが追従動作を行ったまま自分の動作範囲外にまで動作しようとしてエラーとなる等の不具合の回避動作プログラムを簡単に作成することが可能となる。また、ユーザプログラムによらず追従停止イベントが発行されたとき追従方向の軌道の生成を自動的に停止することも可能で、この場合、自動的且つ確実に上記のような不具合を防止することが可能となる。
【００９７】
また、コンベヤ座標系は、コンベヤ１の移動方向に平行なＸ軸、コンベヤ１の幅方向にＹ軸を有するように設定したので、コンベヤ１上のティーチングで、上流側に数ｍｍ、コンベヤ１の幅方向に数ｍｍといったようなティーチングが容易に行えるようになる。
【００９８】
また、軌道の生成において、指令位置へのロボット４の軌道にコンベヤ１の動作量に係る追従方向の軌道を加算して目標軌道を生成しているので、コンベヤ１の速度ムラを補償した軌道が生成され、ワークを正確にハンドリングすることが可能となる。
【００９９】
実施の形態２．
図１３は本発明の実施の形態２のハンドリングシステムを示す概略図である。
本実施の形態２は、図３に示したカメラ２に代えてワーク（パレット２３）の到着を検出する検出部であるセンサ２１を備えたシステムである。
このように構成したハンドリングシステムは、例えばコンベヤ１上のワーク（パレット２３）がコンベア１の幅方向について整列されているような場合に構成されるシステムで、このシステムにおいて、例えばテーブル上のワーク２２を縦横３つずつに等間隔に内部を仕切られたパレット２３に移載する作業を行う場合、ユーザプログラムにおいてロボット手先の移動先としてパレット２３内の各部屋を指定することになるが、この場合、コンベヤ座標系の導入により例えば図１４に示すようにパレット１１の左上端の部屋のコンベヤ座標系における位置Ａ（ｘＡ，ｙＡ，０）をワーク現在位置として登録しておくことにより、例えばＢ点を指定する場合にはＢ（ｘＡ＋Δｘ，ｙＡ−Δｙ，０）のように登録された現在位置からのオフセット（相対位置）によってその位置を指定することが可能となる。このようにコンベア座標系の導入によってコンベヤ１上を移動するワークに対する作業を簡単に記述することが可能となる。また、図１３に示したハンドリングシステムは他に例えばパレット上に２種の部品が交互に並んでいて、それをコンベヤ１上で一体に組み立てるといった作業にも適用可能であり、この場合も上記実施の形態１とほぼ同様の作用及び効果が得られる。
【０１００】
実施の形態３．
図１５は、本発明の実施の形態３のハンドリングシステムの概略図、図１６は本実施の形態におけるコンベヤ座標系及び追従領域の説明図である。
本実施の形態３は、図１におけるコンベヤ１をターンテーブル（円弧コンベヤも含む）３１に替えたシステムであり、このようなターンテーブル３１を利用する場合、コンベヤ座標系は図１６に示すようにワークの回転方向（ターンテーブルの円周方向）にＸ軸、回転中心を通る半径方向にＹ軸を設定し、各座標値を（回転角度（゜），半径（ｍｍ），高さ（ｍｍ））で指定する。また、追従領域を図のハッチングで示す領域に設定する場合、追従領域設定値はａ（ｘａ，ｙａ，０）、ｂ（ｘｂ，ｙｂ，０）となる。
【０１０１】
このようなターンテーブル３１の場合においても、ワークの現在位置はｘ座標値のみを更新すれば良く、実施の形態１及び実施の形態２とほぼ同様の作用及び効果を得ることが可能となる。
【０１０２】
実施の形態４．
図１７は本発明の実施の形態４を示すハンドリングシステムの概略図である。
このハンドリングシステムは、１台のコンベヤに対して複数のロボットを設置するもので、この場合、ロボット毎にコンベヤ座標系及び追従領域を設定する。  このシステムは例えば複数のワークが高速で流れており、ロボット４で取り損ねたワークをロボット４３でハンドリングしたり、異なる２種のワークが混ざって流れている場合に、一方のワークをロボット４で、他方のワークをロボット４３でハンドリングしたりといった作業を行うものであり、このようなハンドリングシステムにおいても、本発明を適用することにより、上記実施の形態１及び実施の形態２とほぼ同じ作用及び効果を得ることが可能となる。
【０１０３】
実施の形態５．
図１８は本発明の実施の形態５を示すハンドリングシステムの概略図ある。このシステムは、複数のコンベヤに対して１台のロボットを設置するもので、この場合、コンベヤ毎にコンベヤ座標系を定義することにより、例えばコンベヤ１からコンベヤ１ａにワークを移載する作業等も簡単にプログラム可能となる。
【０１０４】
なお、コンベヤ座標系には、上記したもの以外に、例えば図１９に示すような（１）斜行座標系、（２）それ以外の座標系も考えられる。これらの場合の追従領域は、図１９のハッチングで示された領域であり、追従領域設定値は図６に示した直交座標系と同様に、対角上の２点の座標値ａ（ｘａ，ｙａ，０）、ｂ（ｘｂ，ｙｂ，０）となる。
【図面の簡単な説明】
【図１】
本発明の実施の形態１のロボットコントローラを適用したシステムの機能ブロック図である。
【図２】
本発明の実施の形態１のソフトウェア構成を示す図である。
【図３】
本発明の実施の形態１のシステムの概略構成図である。
【図４】
コンベヤ座標系の説明図である。
【図５】
各座標系の階層構造を示す図である。
【図６】
追従領域の説明図である。
【図７】
図１のイベント検出部の動作フローを示す図である。
【図８】
図１のユーザプログラム実行部の動作フローを示す図である。
【図９】
本発明の実施の形態１における位置関係の説明図である。
【図１０】
図１の軌道生成部の動作フローを示す図である。
【図１１】
本発明の実施の形態のユーザプログラムの一例を示す図である。
【図１２】
図１１のタスク１及びタスク２の処理フローを示す図である。
【図１３】
本発明の実施の形態２のハンドリングシステムの概略図である。
【図１４】
図１３の実施の形態２おけるワークの位置関係の説明図である。
【図１５】
本発明の実施の形態３のハンドリングシステムの概略図である。
【図１６】
図１５の実施の形態３におけるコンベヤ座標系及び追従領域の説明図である。
【図１７】
本発明の実施の形態４のハンドリングシステムの概略図である。
【図１８】
本発明の実施の形態５のハンドリングシステムの概略図である。
【図１９】
コンベヤ座標系及び追従領域の他の例を示す図である。
【図２０】
従来のユーザプログラムの具体的一例を示す図である。
【図２１】
図２０の処理フローを示す図である。
【符号の説明】
１  コンベヤ
２  カメラ
４  ロボット
５  ロボットコントローラ
１２  ユーザプログラム実行部
１３  ワーク現在位置記憶部
１４  ワーク現在位置更新部
１５  追従領域記憶部
１６  軌道生成部
１７  イベント検出部
２１  センサ
３１  ターンテーブル