(57)【特許請求の範囲】
【請求項１】
ロボットの位置を示す位置データがエンコーダーから入力される位置データ入力部と、
前記入力された位置データを取得してロボットの位置を算出する位置算出部とを備え、
前記位置算出部は、
１つのエンコーダーから前記位置データ入力部に入力された前記位置データを取得する所定の周期Ｔよりも短い周期Ｔｓで、前記ロボットの位置を検出するための指令を検出可能な指令検出部を備え、
前記指令検出部からの指令を受けて、
前記指令よりも前の第１のタイミングで取得した第１の位置データと、
前記指令よりも後の第２のタイミングで取得した第２の位置データと、
前記エンコーダーと前記位置データ入力部との通信に要する通信時間と
を用い、
前記指令が入力されたタイミングよりも前記通信時間だけ後のタイミングにおける位置を前記第１の位置データと前記第２の位置データとを用いた線形補間によって算出し、該算出結果を前記指令が入力されたときの前記ロボットの位置として出力する
ことを特徴とするロボット位置検出装置。
【請求項２】
前記位置算出部は、
前記所定の周期Ｔを１以上の整数ｎでｎ等分割した周期Ｔ／ｎごとに互いに異なるエンコーダーからの位置データを取得し、前記指令が入力されたときの前記ロボットの位置を前記エンコーダーごとに出力する
請求項１に記載のロボット位置検出装置。
【請求項３】
前記位置算出部は、
取得した前記位置データが正常か否かを判断するとともに、
前記指令を検出したときの直前における前記位置データが正常でないと判断される場合には、当該位置データの直前に取得した位置データを前記第１の位置データとして用いる
請求項１または２に記載のロボット位置検出装置。
【請求項４】
前記位置算出部は、
前記指令を検出したときの直後における前記位置データが正常でないと判断される場合には、当該位置データの直後に取得した位置データを前記第２の位置データとして用いる
請求項３に記載のロボット位置検出装置。
【請求項５】
ワークを搬送するロボットと、
前記ロボットの位置を示す位置データを出力するエンコーダーと、
前記ロボットの位置を検出するための指令を出力する指令出力部と、
前記位置データと前記指令とが入力され、前記指令が入力されたときの前記ロボットの位置を前記位置データに基づいて検出するロボット位置検出部と
を備えるロボットシステムであって、
前記ロボット位置検出部が請求項１〜４のいずれか一項に記載のロボット位置検出装置である
ことを特徴とするロボットシステム。
【請求項６】
予め定められた撮像範囲を前記指令出力部からの指令が入力されたタイミングで撮像することにより、目標位置へ移動中の前記ロボットが搬送しているワークを含む画像を取得するカメラと、
前記カメラが取得した画像に基づいて前記ワークの位置を取得するワーク位置取得部と、
前記ワーク位置取得部が取得した前記ワークの位置と、前記ロボット位置検出部が検出した前記ロボットの位置とに基づいて、前記目標位置を補正する目標位置補正部と
をさらに備えた
請求項５に記載のロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ロボットの位置を検出するロボット位置検出装置、及び該ロボット位置認識装置を備えたロボットシステムに関する。
【背景技術】
【０００２】
従来から、ワークを把持するロボットの目標位置を補正する方法として、例えば特許文献１のような技術が知られている。特許文献１では、ワークを撮像する撮像装置の撮像範囲に、ロボットに把持されているワークと該ロボットに設けられた基準マークとが配置されるように撮像装置及びロボットをそれぞれ所定の位置に移動させる。そして、撮像装置によって撮像された画像を画像処理することによって、基準マークに対するワークの中心座標や傾きなどを取得し、その取得した中心座標等に基づいてロボットの目標位置に関する位置補正量が算出されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４５３９６８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、特許文献１の方法では、ロボットの目標位置に関する位置補正量を確実に算出することが可能ではあるものの、位置補正量を算出するための画像を撮像する際にロボットを止めておく必要がある。位置補正量を算出するためとはいえロボットを所定の位置に止めておくことになれば、その止まっている時間の分だけ装置のスループットが低下することになる。こうしたスループットの低下を抑えるうえでは、ロボットを止めることなく移動中のワークを撮像してその撮像時におけるロボットの位置と撮像したワークの画像とに基づいてロボットの位置補正量を取得することが望ましい。
【０００５】
一方、ロボットの位置を示すエンコーダーからのデータは、通常、シリアル通信によってロボットコントローラーに入力される。そのため、該データが出力されたタイミングよりも、シリアル通信の通信周期及びデータ量等に応じたエンコーダーとロボットコントローラーとの通信時間だけ遅れたタイミングでロボットコントローラーに入力される。この際、上述したようにロボットが絶えず移動していることとなれば、エンコーダーに基づいて算出される位置と画像から得られる位置とが時間軸において互いに異なるものとなる。
【０００６】
本発明は上記実状を鑑みてなされたものであり、その目的は、移動中のロボットから検出される該ロボットの位置に対してその精度を高めることが可能なロボット位置検出装置及びロボットシステムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明のロボット位置検出装置は、ロボットの位置を示す位置データがエンコーダーから入力される位置データ入力部と、前記入力された位置データを取得してロボットの位置を算出する位置算出部とを備え、前記位置算出部は、１つのエンコーダーから前記位置データ入力部に入力された前記位置データを取得する所定の周期Ｔよりも短い周期Ｔｓで、前記ロボットの位置を検出するための指令を検出可能な指令検出部を備え、前記指令検出部からの指令を受けて、前記指令よりも前の第１のタイミングで取得した第１の位置データと、前記指令よりも後の第２のタイミングで取得した第２の位置データと、前記エンコーダーと前記位置データ入力部との通信に要する通信時間とを用い、前記指令が入力されたタイミングよりも前記通信時間だけ後のタイミングにおける位置を前記第１の位置データと前記第２の位置データとの線形補間によって算出し、該算出結果を前記指令が入力されたときの前記ロボットの位置として出力する。
【０００８】
このロボット位置検出装置によれば、指令の入力されたタイミングよりも、エンコーダーと位置データ入力部との通信に要する通信時間だけ後のタイミングに基づいて線形補間によりロボットの位置が出力されるため、線形補間に用いられる各データのタイミングが略等しい時間軸上でのタイミングになる。それゆえに、第１の位置データと第２の位置データとを用いる線形補間によって算出されるロボットの位置は、通信時間にてロボットの移動する移動量が補正されたものとなる。そのため、移動中のロボットの位置を精度よく検出することができる。
【００１０】
このロボット位置検出装置によれば、１つのエンコーダーから位置データが入力されるタイミングよりも指令を検出可能なタイミングの方が多くなる。その結果、指令が入力されたタイミングにより近い時期におけるロボットの位置を検出することができる。
【００１１】
このロボット位置検出装置において、前記位置算出部は、前記所定の周期Ｔを１以上の整数ｎでｎ等分割した周期Ｔ／ｎごとに互いに異なるエンコーダーからの位置データを取得し、前記指令が入力されたときの前記ロボットの位置を前記エンコーダーごとに出力する。
【００１２】
このロボット位置検出装置によれば、互いに異なるエンコーダーごとにロボットの位置が算出されることから、指令の入力時におけるロボットの位置をより高い精度で検出することができる。
【００１３】
このロボット位置検出装置において、前記位置算出部は、取得した前記位置データが正常か否かを判断するとともに、前記指令を検出したときの直前における前記位置データが正常でないと判断される場合には、当該位置データの直前に取得した位置データを前記第１の位置データとして用いる。
【００１４】
エンコーダーから入力される位置データは、電気的な信号であるため例えばノイズなどの影響を受けてしまう虞がある。こうした影響を受けた位置データを用いてロボットの位置を算出するとなれば、位置算出部によって算出されたロボットの位置に対する信頼性が低下してしまう。この点、上記構成のロボット位置検出装置によれば、位置算出部は、取得した位置データが正常か否かを判断するとともに指令を検出したときの直前における位置データが正常でないと判断される場合には、当該位置データの直前に取得した位置データを第１の位置データとして用いることから、正常な位置データを用いてロボットの位置が算出することができる。
【００１５】
このロボット位置検出装置において、前記位置算出部は、前記指令を検出したときの直後における前記位置データが正常でないと判断される場合には、当該位置データの直後に取得した位置データを前記第２の位置データとして用いる。
【００１６】
通常、第１のタイミングと第２のタイミングとが離れるほど、これらの間の位置における線形性が失われる。このロボット位置検出装置では、こうした線形補間を用いているために第１のタイミングと第２のタイミングとが時間的に離間しているほど、位置算出部によって算出されたロボットの位置と実際のロボットの位置とに大きな誤差が生じやすい。この点、上記構成によれば、例えば、位置データが入力されるタイミングであって指令を
検出した直後のタイミングを基準タイミングとするとき、第１のタイミングと第２のタイミングとが時間的に最も離間する場合であっても、第１の位置データは基準タイミングよりも２つ前のタイミングで入力された位置データであり、第２の位置データは基準タイミングよりも２つ後のタイミングで入力された位置データである。その結果、当該第１のタイミングよりも前に取得された位置データと当該第２のタイミングよりも後に取得された位置データとに基づいてロボットの位置が算出される場合に比べて、算出されるロボットの位置の精度を高めることができる。
【００１７】
本発明のロボットシステムは、ワークを搬送するロボットと、前記ロボットの位置を示す位置データを出力するエンコーダーと、前記ロボットの位置を検出するための指令を出力する指令出力部と、前記位置データと前記指令とが入力され、前記指令が入力されたときの前記ロボットの位置を前記位置データに基づいて検出するロボット位置検出部とを備えるロボットシステムであって、前記ロボット位置検出部が、前記ロボット位置検出部が上述したロボット位置検出装置である。
【００１８】
本発明のロボットシステムによれば、ロボットの移動中に指令出力部が指令を出力したとしても、該ロボットの位置を精度よく検出することができる。
このロボットシステムは、予め定められた撮像範囲を前記指令出力部からの指令が入力されたタイミングで撮像することにより、目標位置へ移動中の前記ロボットが搬送しているワークを含む画像を取得するカメラと、前記カメラが取得した画像に基づいて前記ワークの位置を取得するワーク位置取得部と、前記ワーク位置取得部が取得した前記ワークの位置と、前記ロボット位置検出部が検出した前記ロボットの位置とに基づいて、前記目標位置を補正する目標位置補正部とをさらに備えている。
【００１９】
このロボットシステムによれば、指令出力部からの指令が入力されたタイミングにおけるロボットの位置とワークの位置との相対位置に基づいて、ロボットの目標位置を補正することができる。上述したようにロボット位置検出部で検出されるロボットの位置は、ロボットを移動させながら検出されたものであって、なおかつその精度が高められたものである。すなわち、目標位置を補正するためにロボットを止める必要がなくなるとともに、ロボットの目標位置に対する補正量の精度も高めることができる。その結果、ロボットシステムのスループットの低下を抑えつつ、搬送すべき位置にワークを搬送することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施の形態にかかるロボットシステムの概略構成を示す斜視図。
【図２】ロボットの正面構造を示す正面図。
【図３】ロボットシステムのシステム構成を示す機能ブロック図。
【図４】各エンコーダーの位置データが取得されるタイミングを示すタイミングチャート。
【図５】データ処理部の記憶部が記憶するデータを示す図。
【図６】ロボットの位置を時間に対応付けた図であって、ロボットの位置を算出する算出過程を概念的に説明するための説明図。
【図７】ロボットの位置を算出する処理の手順を示すフローチャート。
【図８】ロボットの位置を算出する処理の手順を示すフローチャート。
【発明を実施するための形態】
【００２１】
以下、本発明にかかるロボット位置検出装置及びロボットシステムの一実施の形態について、図１〜図８を参照して説明する。まず、本発明にかかるロボットシステムの概略構成について図１及び図２を参照して説明する。
【００２２】
図１に示されるように、ロボットシステム１０には、ワークＷを搬送方向Ｃｖに沿って所定の搬送速度で搬送するコンベヤー１１の側方に、コンベヤー１１で搬送されるワークＷを選択的に把持して所定の作業を行う水平多関節型のロボット１２が配置されている。搬送方向Ｃｖにおけるロボット１２の上流側には、コンベヤー１１上を搬送されるワークＷを上方から撮像するカメラ１３が設置されている。このロボットシステム１０では、カメラ１３によって撮像された画像に基づいて作業対象となるワークＷが選択されるとともに、該画像とコンベヤー１１の搬送量を測定するエンコーダー１４とに基づいて、作業対象に選択されたワークＷの位置が把握される。作業対象に選択されたワークＷは、ロボット１２によって所定の高さまで上昇させられた状態で当該ロボット１２の可動範囲内に設置された作業台１５上における所定位置まで搬送される。
【００２３】
図２に示されるように、ロボット１２において、床面等に設置される基台２１の上端部には、垂直方向に沿う制御軸Ｃ１を中心にして基台２１に対して回動可能な基台軸２２が設けられている。基台軸２２は、基台２１内に設けられた第１モーター２３が正逆回転されることによって制御軸Ｃ１を中心にして回動する。
【００２４】
基台軸２２には、水平方向に延びる第１の水平アーム２４の基端部が連結固定されている。第１の水平アーム２４の先端部には、支持軸２５が連結固定されている。支持軸２５は、垂直方向に沿う制御軸Ｃ２を中心にして支持軸２５に対して回動可能に第２の水平アーム２６を支持している。
【００２５】
第２の水平アーム２６の基端部には、第２モーター２７が配設されている。第２の水平アーム２６は、第２モーター２７が正逆回転することによって当該第２モーター２７が支持軸２５から受ける反力によって、制御軸Ｃ２を中心にして第１の水平アーム２４に対して水平方向に回動する。
【００２６】
第２の水平アーム２６の先端部には、第２の水平アーム２６を貫通する上下回転軸２９が設けられている。上下回転軸２９は、第２の水平アーム２６に対して回転可能に、かつ、上下方向に移動可能に支持されている。また上下回転軸２９は、第２の水平アーム２６に備えられた昇降モーター３０が正逆回転されることによって垂直方向の制御軸Ｃ３に沿って昇降される。上下回転軸２９は、第２の水平アーム２６に備えられた回転モーター３１が正逆回転させることによって垂直方向に沿う自らの制御軸Ｃ４を中心にして正逆回転される。上下回転軸２９の作業部３２には、ツール、例えば被搬送物を把持するハンドや被加工物を加工するハンド等の取り付けが可能になっている。
【００２７】
また、作業台１５へと搬送されるワークＷの搬送経路には、検出ラインＦＬをワークＷが通過したことを検出する検出センサー３５が設けられている。検出センサー３５は、指向性や収束生の高いレーザー光からなる検出光ＬＢを水平方向に沿って出射する出射部３６と、出射部３６から出射された検出光ＬＢを受光する受光部３７とを備えている。出射部３６及び受光部３７は、ロボット１２の可動範囲を挟むように、且つコンベヤー１１から作業台１５に向かって搬送されるワークＷによって検出光ＬＢが一時的に遮断されるように設置されている。
【００２８】
検出センサー３５の下側には、検出センサー３５によるワークＷの検出と同時期に当該ワークＷを下方から撮像するカメラ３９が設置されている。このロボットシステム１０においては、このカメラ３９によって撮像された画像とその時のロボット１２の位置とに基づいてロボット１２に対するワークＷの相対位置が把握されて、予め定めた位置にワークＷが搬送されるようにロボット１２の目標位置が補正される。
【００２９】
次に、上述した構成のロボットシステム１０のシステム構成について図３〜図８を参照
して説明する。
図３に示されるように、上述したロボットシステム１０は、コントローラー５０によって統括制御される。コントローラー５０は、ロボット１２を駆動制御する制御装置であり、ロボット１２が目標位置に移動する位置決め動作を制御したり、コンベヤー１１上を移動しているワークＷにロボット１２が追従する追従動作を制御したりする。
【００３０】
コントローラー５０には予め、ロボット１２の構造や動作特性、可動範囲内の領域であってコンベヤー１１上のワークＷを追従可能な追従領域などを示すロボットデータが設定されている。また、コンベヤー１１とロボット１２の相対位置やコンベヤー１１とカメラ３９の相対位置、ロボット１２とカメラ３９の相対位置等を示す各種位置に関するデータ、及びワークの種類や形状を示すワークデータなどが設定されている。そして、これらロボットデータ、各種位置に関するデータ及びワークデータがロボット１２の駆動制御に用いられる。
【００３１】
コントローラー５０は、ユーザープログラムを記憶するユーザープログラム記憶部５１と、該ユーザープログラム記憶部５１に記憶されたユーザープログラムを実行するユーザープログラム実行部５２とを備えている。また、カメラ１３により認識されたワークＷの初期位置が格納されるワーク位置記憶部５３と、該ワーク位置記憶部５３のワークＷの現在位置をコンベヤー１１の移動量に基づいて算出させるワーク位置更新部５４とを備えている。さらに、作業部３２の軌道（各制御軸Ｃ１〜Ｃ４の関節角度）を生成し、これをモーター指令値（パルス）に変換して後述のモーター制御部５７に出力する指令値生成部５５とを備えている。またさらに、追従領域とワークＷの位置関係などから作業対象となるワークＷを検出する作業対象検出部５６と、指令値生成部５５からのモーター指令値に従って各制御軸Ｃ１〜Ｃ４のモーター２３，２７，３０，３１を制御するモーター制御部５７とを備えている。
【００３２】
ユーザープログラム記憶部５１のユーザープログラムは、作業対象のワークＷに追従するようにロボット１２の作業部３２を移動させるために必要な各種処理を実行するプログラムである。また、作業部３２が把持したワークＷを作業台１５の所定位置まで移動させるために必要な各種処理を実行するプログラムである。
【００３３】
ユーザープログラム実行部５２は、ユーザープログラムを実行する。ユーザープログラム実行部５２は、作業対象検出部５６の検出結果から作業対象として検出されたワークＷを作業対象として取り扱う。さらに、ユーザープログラム実行部５２は、選択されたワークＷにロボット１２を追従等させるために必要な情報を算出するとともに、ロボット１２を目標位置まで移動させるために必要な情報を算出して、それら算出したデータを指令値生成部５５に伝達する。
【００３４】
また、目標位置補正部としてのユーザープログラム実行部５２には、後述するワーク位置取得部５８から搬送中のワークＷの位置が入力されるとともに、位置算出部６０で算出された移動中のロボット１２の位置が入力される。ユーザープログラム実行部５２は、ワーク位置取得部５８から入力されたワークＷの位置と位置算出部６０から入力されたロボット１２の位置とに基づいてロボット１２の目標位置を補正するとともに、その補正した目標位置まで移動させるために必要な情報を算出し、その算出されたデータを指令値生成部５５に伝達する。
【００３５】
ワーク位置更新部５４は、カメラ１３が撮影したコンベヤー１１上のワークＷの撮影画像からワークＷの初期位置を求めてその初期位置の情報をワーク位置記憶部５３に格納する。一方、ワーク位置更新部５４は、エンコーダー１４から入力されるコンベヤーパルスの積算によるコンベヤーパルス数に基づいてコンベヤー１１によるワークＷの搬送量を算
出する。そして、ワークＷの撮影時（初期位置）のコンベヤーパルス数と現在のコンベヤーパルス数との差を求め、このパルス数の差と、予め設定された単位コンベヤーパルスあたりの搬送量との積によりワークＷの初期位置に対する搬送量を求める。ワーク位置更新部５４は、ワーク位置記憶部５３に記憶されている撮影時に算出されたワークＷの初期位置（Ｘ軸方向の座標）に、上述のようにして算出したワークＷの搬送量を加算することなどにより、コンベヤー１１上を搬送されているワークＷの現在位置を逐次計算できるようにしている。
【００３６】
作業対象検出部５６は、所定の実行周期で、ワークＷの現在位置と追従領域とを比較する。そして、ワークＷの現在位置が追従領域内に到達（進入）したとき当該ワークＷを作業対象として検出するとともに、ワークＷの現在位置が追従領域内に含まれなくなるとき当該ワークＷを作業対象外として検出する。そして、検出された結果をユーザープログラム実行部５２や指令値生成部５５に伝達する。
【００３７】
指令値生成部５５は、入力される各種データに基づいて、ロボット１２を目標位置まで移動させるための軌道を生成するとともに当該軌道をロボット１２が追従するための各制御軸Ｃ１〜Ｃ４の関節角度を計算する。指令値生成部５５は、ロボット１２を軌道に沿わせるための各制御軸Ｃ１〜Ｃ４の関節角度を目標関節角度としてモーター制御部５７に出力する。本実施形態においてモーター制御部５７は、１つのモーターを制御周期Ｔで制御するとともに各モーターを異なるタイミングで制御する。本実施形態のモーター制御部５７は、各モーター２３，２７，３０，３１を制御周期Ｔを制御軸数ｎ（ｎは１以上の整数であって、本実施形態ではｎ＝４）で除算した周期Ｔ／ｎで順次制御するとともに、指令値生成部５５から出力された各モーターの目標関節角度に応じた出力を周期Ｔ／ｎで順次出力する。すなわち、コントローラー５０は、制御対象となるモーターを周期Ｔ／ｎで第１モーター２３、第２モーター２７、昇降モーター３０、回転モーター３１の順で切り替えている。
【００３８】
さらに、コントローラー５０は、検出センサー３５によるワークＷの検出時における当該ワークＷの位置を取得するワーク位置取得部５８と、同検出時におけるロボット１２の位置を算出する位置算出部６０とを有している。
【００３９】
ワーク位置取得部５８は、検出ラインＦＬに到達したワークＷを下方から撮像するカメラ３９から入力される画像データを画像処理することによってワークＷの位置データを取得する。ワーク位置取得部５８は、上記画像処理によって、撮像範囲におけるワークＷの中心位置の座標値を求めてユーザープログラム実行部５２に出力する。
【００４０】
カメラ３９は、指令出力部としてのトリガー信号生成部５９に電気的に接続されており、該トリガー信号生成部５９から指令としてのトリガー信号が入力されると、その撮像範囲を撮像し、その撮像した画像の画像データをワーク位置取得部５８に出力する。
【００４１】
トリガー信号生成部５９は、検出センサー３５によってワークＷが検出されると、指令としてのトリガー信号を生成する。トリガー信号生成部５９は、その生成したトリガー信号をカメラ３９と、後述するトリガー信号入力部６１とに同時に出力する。
【００４２】
次に、ロボット位置検出装置及びロボット位置検出部としての位置算出部６０について詳しく説明する。
図３に示されるように、位置算出部６０は、指令検出部としてのトリガー信号入力部６１と、位置データ入力部６２と、データ処理部と６３を有している。
【００４３】
トリガー信号入力部６１には、トリガー信号生成部５９が出力したトリガー信号が入力
される。トリガー信号入力部６１は、トリガー信号の検出周期でトリガー信号の状態を検出し、データ処理部６３では、モーターの制御周期Ｔを制御軸数ｎ（本実施形態ではｎ＝４）で除算した検出周期Ｔｓ（＝Ｔ／ｎ）でトリガー信号入力部６１が検出したトリガー信号の状態を検出する。
【００４４】
位置データ入力部６２には、各モーター２３，２７，３０，３１の絶対位置に基づいて、各制御軸Ｃ１，Ｃ２，Ｃ３，Ｃ４の関節角度を検出する第１エンコーダー６４、第２エンコーダー６５、第３エンコーダー６６、第４エンコーダー６７が接続されている。各エンコーダー６４〜６７は、対応する関節角度をモーターの制御周期Ｔの半分の時間（＝Ｔ／２）であってエンコーダーと位置データ入力部６２との通信に要する通信時間Ｔｄ毎に検出し、その検出した関節角度を示す位置データを位置データ入力部６２に出力する。
【００４５】
また、位置データ入力部６２は、入力された位置データが正常であるか否かを判定する判定部６８を有している。そして、位置データ入力部６２は、各エンコーダー６４〜６７から入力された位置データに対し、該位置データに対する判定部６８の判定結果を対応付ける。
【００４６】
データ処理部６３は、位置データ入力部６２に入力された位置データと該位置データに対応付けられた判定結果とを取得する。なお、各々のエンコーダーに対応する位置データをデータ処理部６３が位置データ入力部６２から同時に取得するとなれば、各位置データに対応するようにデータ処理部６３を構成する必要があり、データ処理部６３の構成が複雑化してしまう虞がある。そこで、データ処理部６３には、周期Ｔ／ｎ毎にインクリメントされるカウンターであって、制御対象となる制御軸に応じたカウント値が示されるカウンターが内蔵されている。そして、図４に示されるように、データ処理部６３は、該カウンターのカウント値が示す制御軸と、位置データ入力部６２に入力された位置データに対応する制御軸とが整合するように、制御周期Ｔ毎に、各エンコーダー６４〜６７からの位置データを順次取得する。
【００４７】
なお、エンコーダーからの位置データが通信時間Ｔｄのシリアル通信によって位置データ入力部６２に入力される。そのため、データ処理部６３が取得する位置データは、該位置データを取得したタイミングよりも通信時間Ｔｄだけ前のタイミングでエンコーダーによって検出された位置を示す位置データである。
【００４８】
図５に示されるように、データ処理部６３は、制御軸Ｃ１における関節角度、制御軸Ｃ２における関節角度、制御軸Ｃ３における関節角度、制御軸Ｃ４における関節角度に関する各種データの記憶される領域が予め設けられた記憶部７０を有している。
【００４９】
本実施形態では、エンコーダーからの位置データが位置データ入力部６２に入力されるタイミングのうち、トリガー信号が検出された次のタイミングを当該エンコーダーにおける基準タイミングとしている。記憶部７０には、上記基準タイミングよりも前に取得された位置データである第１の位置が記憶される領域が制御軸Ｃ１〜Ｃ４毎に設けられている。第１の位置７３ａは、第１エンコーダー６４から入力された位置データである。第１の位置７３ｂは、第２エンコーダー６５から入力された位置データである。第１の位置７３ｃは、第３エンコーダー６６から入力された位置データである。第１の位置７３ｄは、第４エンコーダー６７から入力された位置データである。また、記憶部７０には、上記基準タイミングよりも後に取得された位置データである第２の位置が記憶される領域が制御軸Ｃ１〜Ｃ４毎に設けられている。第２の位置７４ａは、第１エンコーダー６４から入力された位置データである。第２の位置７４ｂは、第２エンコーダー６５から入力された位置データである。第２の位置７４ｃは、第３エンコーダー６６から入力された位置データである。第２の位置７４ｄは、第４エンコーダーから入力された位置データである。
【００５０】
また記憶部７０には、第１の位置を示す位置データに関して、当該位置データが正常であるか否かを示す第１のフラグを制御軸Ｃ１〜Ｃ４毎に記憶する領域が設けられている。第１のフラグ７５ａは、第１エンコーダー６４から入力される位置データに対応付けられている。第１のフラグ７５ｂは、第２エンコーダー６５から入力される位置データに対応付けられている。第１のフラグ７５ｃは、第３エンコーダー６６から入力される位置データに対応付けられている。第１のフラグ７５ｄは、第４エンコーダー６７から入力される位置データに対応付けられている。また記憶部７０には、第２の位置を示す位置データに関して、当該位置データが正常であるか否かを示す第２のフラグを制御軸Ｃ１〜Ｃ４毎に記憶する領域が設けられている。第２のフラグ７６ａは、第１エンコーダー６４から入力される位置データに対応付けられている。第２のフラグ７６ｂは、第２エンコーダー６５から入力される位置データに対応付けられている。第２のフラグ７６ｃは、第３エンコーダー６６に関する位置データに対応付けられている。第２のフラグ７６ｄは、第４エンコーダー６７から入力される位置データに対応付けられている。
【００５１】
そして、データ処理部６３は、位置データを取得するたびに、該位置データの正否を判断する。この際、上記基準タイミングよりも前のタイミングにて、位置データが正常であると判断すると、データ処理部６３は、該位置データを第１の位置として更新するとともに、第１のフラグを「０」に設定する。一方、上記基準タイミングよりも前のタイミングにて、位置データが異常であると判断すると、データ処理部６３は、第１の位置を更新することなく、第１のフラグを「１」に設定する。なお、データ処理部６３は、トリガー信号が検出されるまで上述した第１の位置の更新及び第１のフラグの設定を制御軸Ｃ１〜Ｃ４に対して順次実行する。そしてデータ処理部６３は、トリガー信号が検出されると、該検出時における各第１の位置及び第１のフラグを第１のタイミングデータ７７として記憶部７０の所定領域に保存する。
【００５２】
また、上記基準タイミングの直後のタイミングにて、位置データが正常であると判断すると、データ処理部６３は、該位置データを第２の位置として更新するとともに、第２のフラグを「０」に設定する。一方、上記基準タイミングの直後のタイミングにて、位置データが異常であると判断すると、データ処理部６３は、該位置データを第２の位置として更新することなく、第２のフラグを「１」に設定する。そしてデータ処理部６３は、上記直後のタイミングの次のタイミングにおける位置データを取得して、当該位置データが正常であるか否かに関わらず、当該位置データを第２の位置として更新する。そしてデータ処理部６３は、全ての第２の位置が更新されると、各第２の位置及び第２のフラグを第２のタイミングデータ７８として記憶部７０の所定領域に保存する。
【００５３】
また、記憶部７０には、トリガー信号が検出されたか否かを示す検出フラグ７９を記憶する領域が設けられている。データ処理部６３は、トリガー信号が検出されると検出フラグ７９を「１」に設定するとともに、算出したロボット１２の位置をユーザープログラム実行部５２に出力すると検出フラグ７９を「０」に設定する。
【００５４】
また、図５に示されるように、記憶部７０には、トリガー信号の検出時に制御対象であった制御軸を示すデータである制御軸データ８０が記憶される領域が設けられている。データ処理部６３は、内蔵されたカウンターのカウント値に基づいて、トリガー信号の検出時における制御軸を示すデータを制御軸データ８０に保存する。そして、トリガー信号が検出されるたびに、データ処理部６３は、上記第１のタイミングデータ７７、第２のタイミングデータ７８、制御軸データ８０に基づいて、トリガー信号の検出時における各制御軸Ｃ１〜Ｃ４の関節角度を算出しロボット１２の位置を検出する。
【００５５】
次に、位置算出部６０によるロボット１２の位置の算出方法について図６を参照して説
明する。なお、図６においては、第１のタイミングにおける関節角度である第１の位置をＰａ、第２のタイミングにおける関節角度である第２の位置をＰｂ、トリガー信号の検出時における関節角度をＰ（ｋ）と表現する。また、本実施形態における通信時間Ｔｄは、モーターの制御周期Ｔの半分の時間（Ｔ／２）となっている。
【００５６】
データ処理部６３は、第２のタイミングデータ７８が保存されると、制御軸Ｃ１〜Ｃ４毎に、第１のフラグと第２のフラグとの組み合わせに基づいて、当該組み合わせに応じて予め設定された４つの算出式の中から１つの算出式を選択する。そして、その選択した算出式に第１の位置と、第２の位置と、制御軸データ８０に基づく定数ｋとを代入することにより、トリガー信号検出時における各制御軸Ｃ１〜Ｃ４の関節角度を求める。ここでいう定数ｋとは、算出対象となる制御軸とトリガー信号の検出時に制御対象となっている制御軸との関係に基づいて制御軸毎に決定される定数であって、周期Ｔ／ｎを基準単位として、トリガー信号が検出されたタイミングから基準タイミングまでの期間が「Ｔ／ｎ×ｋ」で示される定数である。
【００５７】
例えば、トリガー信号の検出時における制御対象が制御軸Ｃ１（第１モーター２３）であった場合、算出対象が制御軸Ｃ２（第２モーター２７）であれば、第２エンコーダー６５に関する基準タイミングよりも「周期Ｔ／ｎ」だけ前にトリガー信号が検出されているため定数ｋは「１」となる。また算出対象が制御軸Ｃ３（昇降モーター３０）であれば、第３エンコーダー６６の基準タイミングよりも「２×周期Ｔ／ｎ」だけ前にトリガー信号が検出されているため定数ｋは「２」となる。また算出対象が制御軸Ｃ４（回転モーター３１）であれば、基準タイミングよりも「３×周期Ｔ／ｎ」だけ前にトリガー信号が検出されているため定数ｋは「３」となる。また算出対象が制御軸Ｃ１（第１モーター２３）であれば、基準タイミングから制御周期Ｔだけ前にトリガー信号が検出されているため、定数ｋは「４」となる。
【００５８】
データ処理部６３は、算出対象となる制御軸の第１のフラグ及び第２のフラグがともに「０」である場合、すなわち第１のタイミングと基準タイミングとが「制御周期Ｔ」、基準タイミングと第２のタイミングとが「制御周期Ｔ」だけ離れている場合、下記に示す数式（１）を用いてトリガー信号検出時における該制御軸の関節角度を算出する。
【数１】
0005803155.tif 000002
【００５９】
またデータ処理部６３は、算出対象となる制御軸の第１のフラグが「０」、第２のフラグが「１」である場合、すなわち第１のタイミングと基準タイミングとが「制御周期Ｔ」、基準タイミングと第２のタイミングとが「２×制御周期Ｔ」だけ離れている場合、下記に示す数式（２）を用いてトリガー信号検出時における該制御軸の関節角度を算出する。
【数２】
0005803155.tif 000003
【００６０】
またデータ処理部６３は、算出対象となる制御軸の第１のフラグが「１」、第２のフラグが「０」である場合、すなわち第１のタイミングと基準タイミングとが「２×制御周期Ｔ」、基準タイミングと第２のタイミングとが「制御周期Ｔ」だけ離れている場合、下記に示す数式（３）を用いてトリガー信号検出時における該制御軸の関節角度を算出する。
【数３】
0005803155.tif 000004
【００６１】
またデータ処理部６３は、算出対象となる制御軸の第１のフラグ及び第２のフラグがともに「１」である場合、すなわち第１のタイミングと基準タイミングとが「２×制御周期Ｔ」、基準タイミングと第２のタイミングとが「２×制御周期Ｔ」だけ離れている場合、下記に示す数式（４）を用いてトリガー信号検出時における該制御軸の関節角度を算出する。
【数４】
0005803155.tif 000005
【００６２】
すなわち、上記数式（１）〜（４）では、第１のタイミングにおける位置データと第２のタイミングにおける位置データとを用いた線形補間によって、トリガー信号検出時における関節角度を算出している。また、その線形補間に基づく関節角度の変化率を用いて上記通信時間Ｔｄの期間における関節角度の変化量を算出している。そして、上記線形補間によって算出されるトリガー信号検出時の関節角度と上記通信時間Ｔｄの期間における関節角度の変化量とを加算することによって、トリガー信号検出時における実際の関節角度を求めている。
【００６３】
詳述すると、図６に示されるように、関節角度Ｐａは、実際には、第１のタイミングよりも通信時間Ｔｄだけ前の時刻における関節角度である。また関節角度Ｐｂも、実際には、第２のタイミングよりも通信時間Ｔｄだけ前の時刻における関節角度である。そのため、上記線形補間によって示される直線８１は、第１のタイミングから第２のタイミングまでの期間よりも通信時間Ｔｄだけ前の期間における関節角度を示している。すなわち、直線８１を通信時間Ｔｄの分だけ平行移動させた直線８２が、第１のタイミング及び第２の
タイミングによって取得された関節角度と、該関節角度が具現化されている実際のタイミングとの関係を示している。そのため、これら直線８２と直線８１との差が上記関節角度の変化率にて通信時間Ｔｄの分だけ関節角度が変化した量であることから、直線８１で示される関節角度に対して上記関節角度の変化量を加算することによって、トリガー信号検出時における実際の関節角度が算出される。言い換えれば、第１のタイミングにおける位置データと第２のタイミングにおける位置データとを用いた線形補間によって示される直線８１において、トリガー信号検出時よりも通信時間Ｔｄだけ後のタイミングにおける関節角度を、トリガー信号検出時における実際の関節角度として算出している。
【００６４】
次に、上述した構成のデータ処理部６３において、ロボットの位置を算出する際の処理の手順について図７及び図８を参照して説明する。なお、この処理は、繰り返し実行されている。
【００６５】
図７に示されるように、まず、内蔵されたカウンターのカウント値が示す制御軸に関し、判定部６８の判定結果が対応付けられた位置データが、第１のタイミングの位置データとして取得される（ステップＳ１０）。次いで、上記ステップＳ１０において取得した位置データに基づいて、該位置データが正常であるか否かの判断がなされる（ステップＳ１１）。
【００６６】
上記ステップＳ１１において位置データが正常であると判断された場合（ステップＳ１１：ＹＥＳ）、第１のフラグが「０」に設定されるとともに第１の位置が当該位置データに更新されて（ステップＳ１２）、次のステップＳ１４に移行する。一方、ステップＳ１１において位置データが異常であると判断された場合（ステップＳ１１：ＮＯ）、第１のフラグが「１」に設定されるとともに第１の位置が更新されることなく（ステップＳ１３）、次のステップＳ１４に移行する。
【００６７】
次のステップＳ１４では、トリガー信号入力部６１を介して、今回の検出タイミングでトリガー信号が検出されたか否かが判断される。
上記ステップＳ１４においてトリガー信号が検出されなかった場合（ステップＳ１４：ＮＯ）、再びステップＳ１０に移行して、カウンターのカウント値によって次に示される制御軸に関する第１のタイミングの位置データが位置データ入力部６２を介して取得される。すなわち、ステップＳ１４においてトリガー信号が検出されるまで、第１の位置の更新及び第１のフラグの設定が制御軸Ｃ１〜Ｃ４に対して順次実行される。
【００６８】
上記ステップＳ１４においてトリガー信号が検出された場合（ステップＳ１４：ＹＥＳ）、検出フラグ７９が「１」に設定されるとともに（ステップＳ１５）、カウンターのカウント値に基づいて、トリガー信号検出時における制御軸を示すデータが制御軸データ８０に保存される（ステップＳ１６）。また、トリガー信号検出時に記憶されている各第１の位置及び第１のフラグの状態を示すデータが第１のタイミングデータ７７として記憶部７０の所定領域に保存される（ステップＳ１７）。
【００６９】
次いで、基準タイミングにおける各制御軸Ｃ１〜Ｃ４の位置データが順次取得される（ステップＳ１８）。続けて、基準タイミング直後のタイミングにおける各制御軸の位置データが第２のタイミングの位置データとして順次取得される（ステップＳ１９）。
【００７０】
次のステップＳ２０においては、基準タイミング直後のタイミングで取得された位置データに基づいて、該位置データが正常であるか否かの判断がなされる。上記ステップＳ２０において、取得された位置データが正常であると判断された制御軸に関しては、第２のフラグが「０」に設定されたうえで（ステップＳ２１）、取得した位置データに第２の位置が更新される（ステップＳ２４）。
【００７１】
一方、上記ステップＳ２０において、取得された位置データが異常であると判断された制御軸に関しては、第２のフラグが「１」に設定される（ステップＳ２２）。そして、次のタイミングにおける位置データが第２のタイミングの位置データとして取得され（ステップＳ２３）、第２のフラグの状態が「１」に維持されたまま、その取得した位置データに第２の位置が更新される（ステップＳ２４）。
【００７２】
次に、図８に示されるように、制御軸Ｃ１〜Ｃ４に関して第２の位置の更新が全て終了すると、各第２の位置及び第２のフラグの状態を示すデータが第２のタイミングデータ７８として、記憶部７０の所定領域に保存される（ステップＳ２５）。
【００７３】
第２のタイミングデータ７８が保存されると、各制御軸Ｃ１〜Ｃ４に関する第１及び第２のフラグの状態が確認される（ステップＳ２６）。そして第１及び第２のフラグに応じて算出式が選択される。すなわち、第１のフラグと第２のフラグとがともに「０」である制御軸に関しては（ステップＳ２７：ＹＥＳ、ステップＳ２８：ＹＥＳ）、上記数式（１）が選択される（ステップＳ３０）。また第１のフラグが「０」であり（ステップＳ２７：ＹＥＳ）、且つ第２のフラグが「１」である（ステップＳ２８：ＮＯ）制御軸には、数式（２）が選択される（ステップＳ３１）。また第１のフラグが「１」であり（ステップＳ２７：ＮＯ）、且つ第２のフラグが「０」である（ステップＳ２８：ＹＥＳ）制御軸には、数式（３）が選択される（ステップＳ３２）。また第１のフラグが「１」であり（ステップＳ２７：ＮＯ）、且つ第２のフラグが「１」である（ステップＳ２８：ＮＯ）制御軸には、数式（４）が選択される（ステップＳ３３）。
【００７４】
各制御軸Ｃ１〜Ｃ４に対して算出式が選択されると、第１の位置、第２の位置、制御軸データ８０に基づく定数ｋが、選択された各数式に代入される（ステップＳ３４）。これにより、各制御軸Ｃ１〜Ｃ４の関節角度によって示されるロボット１２の位置が算出される（ステップＳ３５）。そして、算出されたロボット１２の位置をユーザープログラム実行部５２に出力すること（ステップＳ３６）によって、検出フラグ７９が「０」に設定されたうえで一連の処理を一旦終了させる。
【００７５】
次に、上述した構成のロボットシステム１０の作用について説明する。
上述した構成のロボットシステム１０では、コンベヤー１１によって搬送されるワークＷがロボット１２によって選択的に把持される。そして、該ワークＷを作業台１５上における所定位置まで搬送している際に検出センサー３５によってワークＷが検出される。すなわちロボット１２を該ロボット１２の目標位置まで移動させている際に、ワークＷが検出センサー３５によって検出される。ワークＷが検出されると、カメラ３９によって撮像された画像データに基づいて、ワーク検出時におけるワークＷの位置が取得される。また位置算出部６０によって、ワーク検出時の前後におけるロボット１２の位置に基づき該検出時におけるロボット１２の実際の位置が算出される。そして、これらワークＷの位置とロボット１２の実際の位置とに基づいて、ロボット１２の目標位置が補正される。
【００７６】
以上説明したように、本実施の形態に係るロボットシステム１０によれば、以下に列挙する効果を得ることができる。
（１）上記実施形態の位置算出部６０では、各制御軸に関し、第１のタイミングにおける位置データ、第２のタイミングにおける位置データを用いた線形補間によって取得されるトリガー信号検出時の関節角度に対して、その線形補間に基づく関節角度の変化率を用いて算出される、通信時間Ｔｄにおける関節角度の変化量を加算することにより、トリガー信号検出時における実際の関節角度を求めている。言い換えれば、第１のタイミングにおける位置データ、第２のタイミングにおける位置データを用いた線形補間によって取得される関節角度に関し、トリガー信号検出時よりも通信時間Ｔｄだけ後のタイミングにお
ける関節角度を、トリガー信号検出時における実際の関節角度として算出している。こうした構成によれば、ロボット１２が移動中であっても、トリガー信号検出時における各制御軸Ｃ１〜Ｃ４の関節角度を精度よく検出することができる。つまり、移動中のロボット１２の位置を精度よく検出することができる。
【００７７】
（２）位置算出部６０のデータ処理部６３は、制御軸Ｃ１の関節角度に関する位置データ、制御軸Ｃ２の関節角度に関する位置データ、制御軸Ｃ３の関節角度に関する位置データ、制御軸Ｃ４の関節角度に関する位置データがそれぞれ異なるタイミングで取得する。そして位置算出部６０は、各制御軸Ｃ１〜Ｃ４に対してトリガー信号検出時における実際の関節角度を算出する。その結果、制御軸Ｃ１の関節角度、制御軸Ｃ２の関節角度、制御軸Ｃ３の関節角度、制御軸Ｃ４の関節角度がそれぞれ算出されることから、トリガー信号の検出時におけるロボットの実際の位置をより高い精度で検出することができる。
【００７８】
（３）位置算出部６０は、位置データ入力部６２に入力された位置データが正常であるか否かを判断し、その判断に応じて選択された算出式を用いて各制御軸Ｃ１〜Ｃ４の関節角度を算出している。これにより、例えばノイズなど位置データの伝送に関わる不具合の影響を受けた位置データによって、ロボット１２の位置が検出されることを抑えることができる。その結果、位置算出部６０で検出されるロボット１２の位置に関し、その精度を高めることができる。
【００７９】
（４）ここで、ロボットシステムにおいては、通常、位置データが異常であると判断する機会が連続することは非常に希であって、例えば、位置データ入力部６２とエンコーダーとを接続するケーブルやエンコーダーそのものに不具合が生じている場合である。そのため、例えば位置データ入力部６２に異常な位置データが同一のエンコーダーから連続して入力された場合などに特別な処理を実行するとなれば、その処理を実行するための新たな構成が別途必要となり、位置算出部６０の構成が複雑になってしまう虞がある。この点、上記実施形態では、同一のエンコーダーから出力される位置データであって連続する２つの位置データのうち、少なくとも一方が正常なデータであることを前提に構成されている。その結果、位置算出部６０をより簡易な構成とすることができる。
【００８０】
（５）また、線形補間を用いてロボット１２の位置を算出しているため、第１のタイミングと第２のタイミングとが時間的に離間しているほど、算出されるロボット１２の位置と、実際のロボット１２の位置とに大きな誤差が生じやすくなる。この点、上記位置算出部６０では、第１のタイミングと第２のタイミングとが時間的に最も離間する場合であっても、第１の位置データは基準タイミングよりも２つ前のタイミングで入力された位置データであり、第２の位置データは基準タイミングよりも２つ後のタイミングで入力された位置データである。その結果、当該第１のタイミングよりも前に取得された位置データと当該第２のタイミングよりも後に取得された位置データとに基づいてロボット１２の位置が算出される場合に比べて、算出されるロボット１２の位置の精度を高めることができる。
【００８１】
（６）上記実施形態では、通信時間Ｔｄをモーターの制御周期Ｔの半分の時間とするとともに、各エンコーダーからの位置データをデータ処理部６３が取得する周期をモーターの制御周期Ｔとした。ここで、各エンコーダーの出力周期が通信時間Ｔｄよりも小さい場合、第２のタイミングが基準タイミングから通信時間Ｔｄだけ経過したタイミングよりも前のタイミングになってしまう場合がある。こうした場合、図６に示した直線８１を通信時間Ｔｄだけ平行移動させた直線８２を第１のタイミングから基準タイミングまでの全期間に対応させることができなくなり、基準タイミングの直前におけるロボット１２の位置が算出できなくなる虞がある。この点、上記実施形態では、各エンコーダーからの位置データをデータ処理部６３が取得する周期が通信時間Ｔｄよりも大きい制御周期Ｔであるこ
とから、図６において直線８１を通信時間Ｔｄだけ平行移動させた直線８２を第１のタイミングから基準タイミングまでの全期間に対応させることが可能である。その結果、トリガー信号検出時におけるロボット１２の位置を確実に算出することができる。
【００８２】
（７）ロボットシステム１０においては、ワークＷを移動させながらロボット１２の目標位置を補正することができる。すなわち、目標位置の補正量を取得するためにロボット１２を止める必要がない。その結果、ロボットシステム１０のスループットが低下することを抑えることができる。
【００８３】
（８）しかも、トリガー信号検出時におけるロボット１２の実際の位置に基づいてロボット１２の目標位置が補正される。これにより、ワークＷを高い精度の下で作業台１５の所定位置に配置することができる。
【００８４】
なお、上記実施の形態は、以下のように適宜変更して実施することも可能である。
・上記実施形態のように、位置算出部６０は、ロボットを移動させながら該ロボットの位置を検出するロボットシステムに適用することが可能である。
【００８５】
・上述したように、ロボットシステムにおいては、位置データが異常であると判断する機会が連続することは非常に希であるため、上記実施形態の位置算出部６０は、同一のエンコーダーから連続して取得される２つの位置データのうち、少なくとも一方が正常な位置データであることを前提として構成されている。ただし、これを変更して、異常である位置データが連続して入力されることを想定して位置算出部６０を構成してもよい。
【００８６】
例えば、データ処理部６３に、第１のタイミングにおける位置データと第２のタイミングにおける位置データとに関し、位置データの異常が連続する回数をカウントするカウンターを制御軸Ｃ１〜Ｃ４毎に設ける。そして、データ処理部６３は、第１のタイミングにおける位置データとして、正常な位置データが取得されるまで前回取得された正常な位置データを記憶する。また、データ処理部６３は、第２のタイミングにおける位置データとして、基準タイミングよりも後のタイミングではじめて正常なデータが取得されたときに第２の位置を更新する。こうした構成の下では、第１のタイミングから基準タイミングまでの期間、及び基準タイミングから第２のタイミングまでの期間を上記各カウンターのカウント値に基づいて求める。そして、それら求めた期間、第１のタイミングにおける正常な位置データ、第２のタイミングにおける正常な位置データに基づいて線形補間し、トリガー信号検出時におけるロボット１２の位置を算出するとよい。
【００８７】
また、上記構成であれば、カウンターのカウント値に基づいて、異常な位置データを連続して取得した場合には、算出されるロボット１２の位置の精度が低いものとして、一連の処理を終了させることもできる。また、異常な位置データが連続して取得されたことをユーザーに通知することにより、ロボット１２のメンテナンスを促すこともできる。
【００８８】
・上記実施形態の位置算出部６０において、基準タイミングの直前あるいは直後のタイミングで取得された位置データが異常であると判断された場合、トリガー信号検出時におけるロボット１２の位置を算出しない構成であってもよい。
【００８９】
・上記実施形態の位置算出部６０は、検出対象が互いに異なるエンコーダーから入力される位置データに基づいて、制御軸Ｃ１〜Ｃ４の関節角度の各々を算出している。これに限らず、上記実施形態であれば、例えば、制御軸Ｃ１の関節角度及び制御軸Ｃ２の関節角度のみを算出するようにしてもよい。こうした構成によれば、ロボット１２の目標位置のうち、Ｘ軸方向及びＹ軸方向に関わる関節角度が補正されることから、例えば円盤状のワークなど、ワークを配置するときにその向きが重要視されない場合に位置算出部６０に対
する負荷を低減することができる。
【００９０】
・上記実施形態のトリガー信号入力部６１は、モーターの制御周期Ｔを制御軸数ｎ（ｎは１以上の整数であって本実施形態ではｎ＝４）で除算した検出周期Ｔｓ（＝Ｔ／ｎ）で、上記トリガー信号を検出可能に構成されている。これに限らず、トリガー信号入力部６１は、上記周期Ｔ／ｎよりも短い周期でトリガー信号を検出可能に構成されていてもよい。こうした構成であれば、検出センサー３５によってワークＷが検出された時刻と、データ処理部６３によってトリガー信号が検出された時刻との差を小さくすることが可能であることから、トリガー信号検出時におけるロボット１２の位置をさらに高い精度で算出することができる。また、上記周期Ｔ／ｎよりも長い周期でトリガー信号が検出可能に構成されていてもよい。この構成では、上述した構成よりも、検出センサー３５によってワークＷが検出された時刻とデータ処理部６３によってトリガー信号が検出された時刻との差が大きくなってしまい、算出されるロボット１２の位置の精度が低下してしまう。とはいえ、通信時間Ｔｄを考慮した線形補間によってロボット１２の位置が算出されることから、エンコーダーからの位置データのみでロボット１２の位置が検出される構成よりも、実際の位置に近い位置を得ることができる。
【００９１】
・上記実施形態の位置算出部６０は、エンコーダーから入力される位置データが正常であるか否かを判断したうえでトリガー信号検出時における各関節角度を算出している。これに限らず、位置算出部６０は、例えば位置データの信頼性が十分に担保されるのであれば、位置データが正常であるか否かを判断することなく、各関節角度を算出してもよい。こうした構成によれば、位置データ入力部６２の判定部６８を割愛することが可能であることから、位置算出部６０の構成をより簡易なものとすることができる。
【００９２】
・上記実施形態の位置算出部６０は、トリガー信号が検出されることを契機として、該トリガー信号検出時におけるロボット１２の位置を算出した。これに限らず、位置算出部６０は、例えば搬送するワークＷを把持したことを契機として計時を開始するタイマーを設けることによって、該ワークＷを把持してから所定時間経過後におけるロボット１２の位置を検出するようにしてもよい。すなわち、ロボットの位置を検出するための指令は、位置算出部６０の外部から入力されることに限らず、予め定めた制御プログラムに基づいて、位置算出部６０の内部で生成される構成であってもよい。
【００９３】
・上記実施形態では、トリガー信号の入力に基づく基準タイミングとして、該トリガー信号が検出された直後のタイミングを基準タイミングとした。これに限らず、基準タイミングは、トリガー信号の検出によって規定されるタイミングであればよく、例えばトリガー信号の検出時を基準タイミングとしてもよい。
【００９４】
・上記実施形態では、ロボット位置検出装置としての位置算出部６０を、４つの制御軸を有する水平多関節型のロボット１２を備えたロボットシステム１０に具体化した。これに限らず、ロボット位置検出装置は、ワークＷを搬送するロボットを備えたロボットシステムに具体化することが可能であり、例えば６つの制御軸を有する多関節ロボットを備えたロボットシステムに具体化してもよい。
【符号の説明】
【００９５】
Ｔ…制御周期、Ｗ…ワーク、Ｃ１，Ｃ２，Ｃ３，Ｃ４…制御軸、ＦＬ…検出ライン、ＬＢ…検出光、Ｐａ，Ｐｂ…関節角度、Ｔｄ…通信時間、Ｔｓ…検出周期、１０…ロボットシステム、１１…コンベヤー、１２…ロボット、１３…カメラ、１４…エンコーダー、１５…作業台、２１…基台、２２…基台軸、２３…第１モーター、２４…第１の水平アーム、２５…支持軸、２６…第２の水平アーム、２７…第２モーター、２９…上下回転軸、３０…昇降モーター、３１…回転モーター、３２…作業部、３５…検出センサー、３６…出
射部、３７…受光部、３９…カメラ、５０…コントローラー、５１…ユーザープログラム記憶部、５２…ユーザープログラム実行部、５３…ワーク位置記憶部、５４…ワーク位置更新部、５５…指令値生成部、５６…作業対象検出部、５７…モーター制御部、５８…ワーク位置取得部、５９…トリガー信号生成部、６０…位置算出部、６１…トリガー信号入力部、６２…位置データ入力部、６３…データ処理部、６４…第１エンコーダー、６５…第２エンコーダー、６６…第３エンコーダー、６７…第４エンコーダー、６８…判定部、７０…記憶部、７３ａ，７３ｂ，７３ｃ，７３ｄ…第１の位置、７４ａ，７４ｂ，７４ｃ，７４ｄ…第２の位置、７５ａ，７５ｂ，７５ｃ，７５ｄ…第１のフラグ、７６ａ，７６ｂ，７６ｃ，７６ｄ…第２のフラグ、７７…第１のタイミングデータ、７８…第２のタイミングデータ、７９…検出フラグ、８０…制御軸データ、８１，８２…直線。
【図１】
0005803155.tif 000006
【図２】
0005803155.tif 000007
【図３】
0005803155.tif 000008
【図４】
0005803155.tif 000009
【図５】
0005803155.tif 000010
【図６】
0005803155.tif 000011
【図７】
0005803155.tif 000012
【図８】
0005803155.tif 000013