(57)【特許請求の範囲】
【請求項１】
ロボットを動作させるロボットコントローラーであって、
前記ロボットの駆動源における駆動量を取得する取得部を備え、
前記ロボットが把持するワークを撮像する撮像部の撮像領域内に設置されたセンサーにより、前記ワークを検知した場合、前記撮像部と前記取得部は、共通するトリガー信号を前記センサーから取得し、
前記撮像部に、前記トリガー信号によって前記ロボットが把持する前記ワークを撮像することを開始させ、
前記取得部は、前記トリガー信号によって前記駆動量の取得を開始する、
ことを特徴とするロボットコントローラー。
【請求項２】
前記ロボットにより前記ワークを所定位置に移動させる場合、
前記ワークが前記センサーを横切った時に前記撮像部が撮像した撮像画像を用いて、前記所定位置を補正する、
請求項１に記載のロボットコントローラー。
【請求項３】
前記所定位置と前記ロボットの駆動源の駆動量とを対応付けて記憶する記憶部を有する、
請求項２に記載のロボットコントローラー。
【請求項４】
請求項１ないし３のいずれか一項に記載のロボットコントローラーによって動作される、
ことを特徴とするロボット。
【請求項５】
請求項１ないし３のいずれか一項に記載のロボットコントローラーと、
前記ロボットコントローラーによって動作されるロボットと、を備える、
ことを特徴とするロボットシステム。
【請求項６】
前記ロボットは、エンドエフェクターを備え、
前記ロボットシステムは、前記撮像部をさらに備え、
前記撮像領域では、前記エンドエフェクターが前記ワークによって前記撮像部に対して光学的に遮蔽されている、
請求項５に記載のロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ロボットコントローラー、ロボット、及び、ロボットシステムに関する。
【背景技術】
【０００２】
従来から、例えば特許文献１に記載のように、ロボットが有するエンドエフェクターの位置やロボットのエンドエフェクターに把持されるワークの位置を画像に基づいて検出する方法が知られている。図５は、ワークを搬送する動作の途中で行われるロボットの位置検出及びワークの位置検出に上記方法を適用した例を示している。
【０００３】
図５に示されるように、ロボットの一つである水平多関節ロボット４０（以下ロボット４０）には、基台４１に連結された第１アーム４２を回動させる第１モーター４１ａと、第１アーム４２に連結された第２アーム４３を回動させる第２モーター４３ａとが内蔵されている。ロボット４０を構成する第１アーム４２及び第２アーム４３は、これら第１モーター４１ａ及び第２モーター４３ａの各々の駆動量に応じた位置へ移動する。これにより、ロボット４０は、スプライン４４の先端に連結されたエンドエフェクター４５によって載置台５１に載置されたワークＷを把持位置Ｐ１にて把持するとともに、把持位置Ｐ１からカメラ５２の直上である撮像位置Ｐ２へワークＷを搬送する。
【０００４】
ロボットコントローラー６０には、ロボットコントローラー６０に格納された動作プログラムを解釈して実行する制御部６１と、制御部６１が出力する制御信号に基づいて各駆動源に駆動信号を出力するモータードライバー６２とが搭載されている。また、ロボットコントローラー６０には、カメラ５２によって撮像された画像からエンドエフェクター４５又はワークＷの位置を算出する画像処理部６３が搭載されている。さらにまた、ロボットコントローラー６０には、ロボット４０の制御に必要とされる各種のデータを記憶する記憶部６４が搭載され、この記憶部６４には、把持位置Ｐ１の座標や撮像位置Ｐ２の座標を示す位置データ６４ａが格納されている。
【０００５】
そして、エンドエフェクター４５に対するワークＷの位置を検出する際には、まず、ワークＷの把持状態を検出するための動作プログラムが制御部６１によって解釈され、エンドエフェクター４５を現在位置から把持位置Ｐ１に移動するための各駆動源の駆動量が制御部６１によって計算される。次いで、制御部６１の計算結果に基づく駆動信号が、モータードライバー６２から第１モーター４１ａ及び第２モーター４３ａに出力される。これにより、エンドエフェクター４５は、把持位置Ｐ１に移動してワークＷを把持する。
【０００６】
続いて、エンドエフェクター４５を把持位置Ｐ１から撮像位置Ｐ２に移動するための各駆動源の駆動量が制御部６１によって計算され、制御部６１の計算結果に基づく駆動信号が、モータードライバー６２から第１モーター４１ａ及び第２モーター４３ａに出力される。これにより、エンドエフェクター４５がワークＷを把持したままの状態で、該エンドエフェクター４５が撮像位置Ｐ２にまで移動する。
【０００７】
そして、第１モーター４１ａのエンコーダー及び第２モーター４３ａのエンコーダーが出力する出力信号に基づいて、エンドエフェクター４５が撮像位置Ｐ２に到達したことを制御部６１が把握すると、制御部６１がカメラ５２を駆動するための制御信号を出力する。これにより、エンドエフェクター４５に把持された状態のワークＷがカメラ５２によって撮像され、画像を取得するための信号が制御部６１から出力されると、カメラ５２によって撮像された画像が、画像処理部６３に入力される。そして、画像処理部６３が画像からワークＷの位置を算出するとともに、この算出された結果と撮像位置Ｐ２の座標とに基づいて、エンドエフェクター４５に対するワークＷの位置を制御部６１が計算する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−２８６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、上述の方法では、エンドエフェクター４５に把持された状態のワークＷを撮像する際に、エンドエフェクター４５の動きを撮像位置Ｐ２で止めるようにしている。そして、エンドエフェクター４５の実際の位置を予め設定された撮像位置Ｐ２として取り扱うようにしている。
【００１０】
しかしながら、こうした方法では、ワークＷの把持状態を検出するための動作が行われるたびにロボット４０の動きが止められることになり、ワークＷを搬送する過程でこうした把持状態を検出するとなれば、自ずとワークＷの搬送効率が低下することになる。ちなみに、ワークＷの把持状態を検出する動作の他、エンドエフェクター４５の位置を他の動作の過程で検出する場合においても同様に、エンドエフェクター４５の動きを撮像位置Ｐ２で止める以上、結局のところ、ロボット４０が行うべき本来の処理の効率が低下することとなる。すなわち、上述の方法では、撮像画像から算出されるロボットの状態と各駆動源の駆動量とを対応付ける処理が、それ以外の処理の効率を低下させるものとなっている。
【００１１】
この発明は、上記実情に鑑みてなされたものであり、その目的は、ロボットが有する駆動源の駆動量と実際のロボットの状態とを画像に基づいて対応付ける処理の効率を高めることの可能なロボットコントローラー、ロボット、及びロボットシステムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明におけるロボットコントローラーは、ロボットを動作させるロボットコントローラーであって、前記ロボットの駆動源における駆動量を取得する取得部を備え、前記ロボットが把持するワークを撮像する撮像部の撮像領域内に設置されたセンサーにより、前記ワークを検知した場合、前記撮像部と前記取得部は、共通するトリガー信号を前記センサーから取得し、前記撮像部に、前記トリガー信号によって前記ロボットが把持する前記ワークを撮像することを開始させ、前記取得部は、前記トリガー信号によって前記駆動量の取得を開始することを要旨とする。
【００１５】
この発明は、前記ロボットにより前記ワークを所定位置に移動させる場合、前記ワークが前記センサーを横切った時に前記撮像部が撮像した撮像画像を用いて、前記所定位置を補正することが好ましい。
【００２１】
この発明は、前記所定位置と前記ロボットの駆動源の駆動量とを対応付けて記憶する記憶部を有することが好ましい。
本発明におけるロボットは、上記ロボットコントローラーによって動作されることを要旨とする。
本発明におけるロボットシステムは、上記ロボットコントローラーと、前記ロボットコントローラーによって動作されるロボットと、を備えることを要旨とする。
この発明において、前記ロボットは、エンドエフェクターを備え、前記ロボットシステムは、前記撮像部をさらに備え、前記撮像領域では、前記エンドエフェクターが前記ワークによって前記撮像部に対して光学的に遮蔽されていることが好ましい。
【図面の簡単な説明】
【００２７】
【図１】本発明のロボットシステムにおける一実施形態の概略構成を示す図。
【図２】同実施形態におけるトリガー信号生成時の撮像領域とエンドエフェクターに把持されたワークとの関係を示す図。
【図３】ロボットの位置検出処理の手順を示すフローチャート。
【図４】変形例におけるトリガー信号生成時の撮像領域とエンドエフェクターに把持されたワークとの関係を示す図。
【図５】従来のロボットシステムの概略構成を示す図。
【発明を実施するための形態】
【００２８】
本発明のロボットコントローラー、ロボット、及びロボットシステムの一実施形態について図１〜図３を参照して以下に説明する。
［ロボットシステム］
まず、ロボットシステムの概要について図１を参照して説明する。同図１に示されるように、水平多関節ロボット（以下、ロボット）１０の基台１１には、第１アーム１２が、鉛直方向に延びる第１回転軸１２ａを介して基台１１に対して水平方向に回動可能に連結されている。上記基台１１には、第１回転軸１２ａを回転させることで第１アーム１２を回動させる駆動源としての第１モーター１１ａが内蔵されている。また、基台１１には、第１モーター１１ａの駆動量である回転数を検出して出力する第１エンコーダー１１ｂが搭載されている。
【００２９】
第１アーム１２の先端には、第２アーム１３が、鉛直方向に延びる第２回転軸１２ｂを介して第１アーム１２に対して水平方向に回動可能に連結されている。第２アーム１３には、第２回転軸１２ｂを回転させることで第２アーム１３を回動させる駆動源としての第２モーター１３ａが搭載されている。また、第２アーム１３には、第２モーター１３ａの駆動量である回転数を検出して出力する第２エンコーダー１３ｂが搭載されている。
【００３０】
第２アーム１３の先端には、スプライン１４が、第２アーム１３を鉛直方向に貫通することで、該第２アーム１３に対する鉛直方向、つまり上下方向に移動可能に設けられている。第２アーム１３には、スプライン１４を回転させつつ上下方向に移動させる第３モーター１３ｃが搭載されている。スプライン１４の先端には、ロボット１０の搬送対象であるワークＷを把持するエンドエフェクター１５が連結されている。ワークＷは、例えば静止した載置台２１上において上記エンドエフェクター１５によるワークＷの把持が行われる位置となる把持位置Ｐ１に載置されている。
【００３１】
こうしたロボット１０においてワークＷの把持動作を行うときには、該動作の始点となる所定位置にあるエンドエフェクター１５が、第１モーター１１ａの回転による第１アーム１２の回動と、第２モーター１３ａの回転による第２アーム１３の回動とによって、例えば把持位置Ｐ１の直上に移動する。なお、このときの第１モーター１１ａの駆動量及び駆動方向と、第２モーター１３ａの駆動量及び駆動方向とは、上記始点と把持位置Ｐ１とを結ぶエンドエフェクター１５の軌道によって決まる。そして、エンドエフェクター１５が把持位置Ｐ１の直上に到達すると、上記第３モーター１３ｃが回転することで、スプライン１４が回転しつつワークＷに向かって降下する。スプライン１４の降下によって、該スプライン１４の先端に連結されたエンドエフェクター１５がワークＷを吸着可能な位置にまで降下すると、エンドエフェクター１５が、載置台２１上のワークＷに対して該ワークＷの把持を開始する。
【００３２】
次いで、スプライン１４が所定の位置、例えば載置台２１上の物品等に衝突しない位置にまで上昇すると、上記第１アーム１２と第２アーム１３とが再び回動することで、把持位置Ｐ１にあるエンドエフェクター１５が、ロボット１０の動作の終点である例えばワークＷの搬送位置の直上にまで移動する。そして、スプライン１４の降下によって搬送位置に到達したエンドエフェクター１５は、ワークＷの把持を解除することで該ワークＷを搬送位置に配置する。
【００３３】
一方、ロボット１０の周辺のうち、上記エンドエフェクター１５によって把持されたワークＷを撮像可能な位置には、撮像部としてのカメラ２２が配置されている。カメラ２２は、撮像対象であるワークＷをその直下から該カメラ２２の撮像領域に収められるように配置されている。つまり、カメラ２２は、エンドエフェクター１５の軌跡、例えばエンドエフェクター１５の移動における始点と終点とを結ぶ最短距離上等の撮像位置Ｐ２を撮像領域内に収められるように配置されている。そして、カメラ２２によって撮像された画像は、該カメラ２２の有する記憶部に一定期間記憶される。
【００３４】
カメラ２２の近傍には、指令出力部としての光学センサー２３が設置されている。光学センサー２３は、例えば半導体レーザー等の光を出力するデバイスから構成された投光部２３ａと、該投光部２３ａの出力した光を受光する例えば受光素子等のデバイスから構成された受光部２３ｂとを有している。投光部２３ａと受光部２３ｂとの間には、投光部２３ａから出力される検出光線２３ｃが、上記カメラ２２の撮像領域を横切るように形成されている。そして、受光部２３ｂは、投光部２３ａの出力する光を受け取ることができなかったときに、ワークＷの位置、例えばワークＷの重心の位置を検出するためのトリガー信号を出力する。
【００３５】
上述したロボット１０には、上記第１アーム１２、第２アーム１３、スプライン１４、及びエンドエフェクター１５等の動作を制御するロボットコントローラー３０が接続されている。ロボットコントローラー３０には、ロボットコントローラー３０に格納された動作プログラムを解釈して実行する制御部３３と、制御部３３が出力する制御信号に基づいて各駆動源に駆動信号を出力する図示されないモータードライバーとが搭載されている。制御部３３は、エンドエフェクター１５の移動する軌跡を計算するとともに、該軌跡に沿ってエンドエフェクター１５を移動させるための第１モーター１１ａの駆動量と第２モーター１３ａの駆動量とを計算する。そして、制御部３３は、計算結果に基づく駆動量で各駆動源を駆動するための駆動信号をモータードライバーに出力させる。
【００３６】
ロボットコントローラー３０には、各種信号の入力及び出力を行う取得部を構成する入出力部（以下Ｉ／Ｏ）３１が搭載されている。Ｉ／Ｏ３１には、第１モーター１１ａの回転数を示すデータが第１エンコーダー１１ｂから所定の検出周期で入力されるとともに、第２モーター１３ａの回転数を示すデータが第２エンコーダー１３ｂから同じく所定の検出周期で入力される。なお、上記第３モーター１３ｃの回転数を示すデータも図示しないエンコーダーから所定の検出周期で上記Ｉ／Ｏ３１に入力される。
【００３７】
上記カメラ２２とＩ／Ｏ３１には、上記エンドエフェクター１５に把持されたワークＷの一端が検出光線２３ｃを超えると、光学センサー２３の受光部２３ｂから共通のトリガー信号が入力される。カメラ２２は、このトリガー信号を受信することによって撮像を開始し、撮像領域２２ａ中に存在するワークＷを撮像する。また、Ｉ／Ｏ３１がこのトリガー信号を受信することによって、Ｉ／Ｏ３１にトリガー信号が入力されたことを制御部３３が把握する。次いで、制御部３３は、Ｉ／Ｏ３１を介して、第１モーター１１ａの回転数を示す最新のデータ、第２モーター１３ａの回転数を示す最新のデータ、及び第３モーター１３ｃの回転数を示す最新のデータをそれぞれ得る。そして、取得部を構成する制御部３３は、これら回転数を示す最新のデータを取得すると、該データに基づいて、エンドエフェクター１５の位置（ｘ２，ｙ２，ｚ２）を算出する。
【００３８】
ロボットコントローラー３０には、算出部としての画像処理部３２が搭載されている。画像処理部３２は、上記カメラ２２の撮像した画像に相当するデータを受信した後、この画像に関するデータに基づいてワークＷの重心の位置（ｘ１，ｙ１，ｚ１）を算出して制御部３３に出力する。そして、制御部３３は、ワークＷの重心の位置を取得すると、該ワークＷの重心の位置とエンドエフェクター１５の位置との差分に基づいて、今回の動作におけるエンドエフェクター１５の終点や次回の動作におけるエンドエフェクター１５の始点等を補正する。すなわち、制御部３３は、共通のトリガー信号によって取得されるワークＷの重心の位置とエンドエフェクター１５の位置とを用いて、ロボット１０の動作を補正する補正部としても機能する。
【００３９】
さらに、ロボットコントローラー３０には、ロボット１０の動作制御に関わるプログラムや各種データを記憶している記憶部３４が搭載されている。記憶部３４には、各アームの長さや各アームの連結先など、エンドエフェクター１５の目標位置に基づく軌道からロボット１０の姿勢を算出するためのロボットデータ３４ａが格納されている。また、記憶部３４には、各モーター１１ａ，１３ａに連結された減速機の減速比や各モーター１１ａ，１３ａの初期位置などを用いロボット１０の姿勢から各モーター１１ａ，１３ａの駆動量を算出するための関係式など、エンドエフェクター１５の目標位置と各モーター１１ａ，１３ａの駆動量とを対応付けた対応関係が格納されている。さらに、記憶部３４には、共通のトリガー信号によって得られたワークＷの重心の位置とエンドエフェクター１５の位置とを対応付けたデータである相関データ３４ｂが格納されている。さらにまた、記憶部３４には、ワークＷの外形線を示すデータやワークＷの外形線からワークＷの重心を算出するための算出式など、ワークＷの画像からワークＷの重心位置を算出するためのデータが格納されている。
【００４０】
なお、本実施形態においては、上記カメラ２２、光学センサー２３、及びロボットコントローラー３０によってロボット１０の位置検出装置が構成されている。
次に、上述した構成からなるロボットシステムの作用について、ロボットコントローラー３０がロボット１０の動作を制御する態様とともに説明する。
【００４１】
動作の始点となる所定位置にあるエンドエフェクター１５を把持位置Ｐ１に移動させるときには、まず、制御部３３は、第１エンコーダー１１ｂ及び第２エンコーダー１３ｂの各々から各モーター１１ａ，１３ａの回転数を示すデータを取得して、エンドエフェクター１５の現在位置を把握する。そして、制御部３３は、エンドエフェクター１５の現在位置と記憶部３４に記憶された目標位置である把持位置Ｐ１とを結ぶ軌道を計算するとともに、該軌道に沿ってエンドエフェクター１５を移動させるための各モーター１１ａ，１３ａの駆動量を算出する。その後、制御部３３は、第１モーター１１ａ及び第２モーター１３ａに対して、各々の駆動量に対応する駆動信号をモータードライバーに出力させる。これにより、第１アーム１２及び第２アームの移動によって、所定位置にあるエンドエフェクター１５が把持位置Ｐ１に向かって移動することになる。
【００４２】
ロボット１０のエンドエフェクター１５が把持位置Ｐ１の直上に到達すると、ロボットコントローラー３０は、スプライン１４を降下させることで、該スプライン１４の先端に連結されたエンドエフェクター１５が載置台２１に載置されたワークＷに近付くようにする。なおこのとき、制御部３３は、上記第２アーム１３に搭載された図示外の第３モーター用のエンコーダーから得られるスプライン１４の先端位置と、目標位置として記憶部３４に記憶された載置台２１の表面付近の位置までの差分からスプライン１４の降下量を算出する。そして、制御部３３は、降下量に応じた駆動信号をモータードライバーから第３モーター１３ｃに出力する。
【００４３】
次いで、ワークＷを把持したエンドエフェクター１５を把持位置Ｐ１から動作の終点となる搬送位置にまで移動させるときには、制御部３３は、載置台２１の表面付近にあるスプライン１４の先端を所定の位置、例えば載置台２１上の物品等に衝突しない位置にまで上昇させる。そのために、該スプライン１４の先端の現在位置と上記所定の位置との差分を算出する。そして、制御部３３は、該差分に応じた駆動信号をモータードライバーから第３モーター１３ｃに出力する。その後、制御部３３は、把持位置Ｐ１の直上にあるときのエンドエフェクター１５の現在位置と記憶部３４に記憶された搬送位置とを結ぶ軌道を計算するとともに、該軌道に沿ってエンドエフェクター１５を移動させるための各モーター１１ａ，１３ａの駆動量を算出する。なお、エンドエフェクター１５の現在位置は、上述のように第１エンコーダー１１ｂ及び第２エンコーダー１３ｂの出力信号に基づいて算出される。そして、制御部３３は、各モーター１１ａ，１３ａに対して、各々の駆動量に対応する駆動信号をモータードライバーに出力させる。
【００４４】
こうしてロボットコントローラー３０により動作の制御されたロボット１０は、上記把持位置Ｐ１から搬送位置へワークＷを搬送しているときに、エンドエフェクター１５にワークＷを把持した状態で上記カメラ２２の撮像領域を横切る。
【００４５】
［トリガー信号の生成方法］
次に、上記光学センサー２３によるトリガー信号の生成について図２を参照して説明する。図２に示されるように、上記カメラ２２の撮像領域２２ａは、上記ワークＷの全体を収めることが可能な大きさであって、例えば矩形平面状をなしている。上述のように、撮像領域２２ａは、エンドエフェクター１５に把持されたワークＷをその直下から収められるように上記カメラ２２が配置される。そのため、ロボット１０の移動中に、ワークＷを把持したエンドエフェクター１５が、撮像領域２２ａを横切ることになる。
【００４６】
撮像領域２２ａの近傍には、上記検出光線２３ｃが撮像領域２２ａを横切るように、光学センサー２３が配置される。つまり、光学センサー２３を構成する投光部２３ａと受光部２３ｂとが、撮像領域２２ａを挟んで対向するように配置されている。また、投光部２３ａと受光部２３ｂとは、ワークＷの端部のいずれが検出光線２３ｃを超えたとしても、ワークＷの端部が検出光線２３ｃを超えたときに該ワークＷの全体を撮像領域２２ａ内に収められる位置に配置される。
【００４７】
なお、撮像領域２２ａを横切るワークＷの面積は、エンドエフェクター１５の先端の全体を覆ってしまう大きさである。そのため、エンドエフェクター１５は、ワークＷによって上記カメラ２２に対して光学的に遮蔽されることになる。それゆえに、カメラ２２によって撮像された画像中には、ワークＷのみが写ることになる。
【００４８】
上記エンドエフェクター１５に把持されたワークＷがカメラ２２によって撮像されるときには、まず、該ワークＷが、把持位置Ｐ１から搬送位置に搬送される途中で、上記撮像領域２２ａ内に進入する。そして、ワークＷの一端が検出光線２３ｃを横切ると、投光部２３ａから出力された光がワークＷによって遮られることで、投光部２３ａの出力した光は、受光部２３ｂによって受光されなくなる。これにより、受光部２３ｂは、カメラ２２において撮像を開始させるためのトリガー信号であるとともに、ロボットコントローラー３０のＩ／Ｏ３１において第１エンコーダー１１ｂ及び第２エンコーダー１３ｂの各々からのデータの取得が開始されるためのトリガー信号を生成する。そして、受光部２３ｂは、カメラ２２とロボットコントローラー３０のＩ／Ｏ３１とに共通する一つのトリガー信号を出力する。次いで、カメラ２２における撮像と、ロボットコントローラー３０のＩ／Ｏ３１における上記信号の取得とが、共通のトリガー信号に基づいて開始される。これにより、Ｉ／Ｏ３１は、ワークＷの撮像時におけるエンドエフェクター１５の位置を取得することができる。
【００４９】
［ロボットの位置検出処理］
以下に、ロボット１０、特にロボット１０の有するエンドエフェクター１５の位置を検出するために、ロボットコントローラー３０、光学センサー２３、及びカメラ２２に跨って行われる処理の手順について図３を参照して説明する。
【００５０】
該処理においては、まず、ロボットコントローラー３０が、第１アーム１２と第２アーム１３とを動作させることにより、始点にあるロボット１０のエンドエフェクター１５を把持位置Ｐ１に移動させる。そして、エンドエフェクター１５が把持位置Ｐ１に移動すると、図３に示されるように、ロボットコントローラー３０は、エンドエフェクター１５にワークＷを把持させた後、ロボット１０による把持位置Ｐ１から搬送位置へのワークＷの搬送を開始させる（ステップＳ１）。
【００５１】
そして、ロボット１０の移動中に、ワークＷの一端がカメラ２２の撮像領域２２ａに進入して、光学センサー２３の検出光線２３ｃを横切ると、つまり、エンドエフェクター１５が撮像位置Ｐ２、あるいは撮像位置Ｐ２の近傍に到達すると、投光部２３ａの出力した光は、ワークＷに遮られることで受光部２３ｂにまで到達しなくなる。これにより、光学センサー２３は、エンドエフェクター１５に把持されたワークＷが、撮像位置Ｐ２に到達したことを検出する。こうして、光学センサー２３の受光部２３ｂは、光を受信できないことを契機に一つのトリガー信号を生成した後、該トリガー信号をロボットコントローラー３０のＩ／Ｏ３１とカメラ２２とに出力する（ステップＳ２）。
【００５２】
上記トリガー信号をＩ／Ｏ３１を介して受信した制御部３３は、第１エンコーダー１１ｂ及び第２エンコーダー１３ｂの各々から所定の検出周期毎に入力されるデータのうち、最新のデータをＩ／Ｏ３１を介して得る（ステップＳ３−１）。そして、ロボットコントローラー３０の制御部３３が、ステップＳ３−１にて取得した信号と、上記記憶部３４に記憶されたロボットデータ３４ａとに基づいてエンドエフェクター１５の位置を算出する。また、ロボットコントローラー３０の受信したトリガー信号と共通するトリガー信号を受信したカメラ２２は、シャッターを切ることによって撮像領域２２ａ内に収められたワークＷを撮像する（ステップＳ３−２）。
【００５３】
次いで、ロボットコントローラー３０は、カメラ２２に対して共通するトリガー信号によって開始した撮像によるデータを該ロボットコントローラー３０の画像処理部３２に対して出力するようにカメラ２２に要求する（ステップＳ４）。こうした要求を受信したカメラ２２は、画像処理部３２に対して上記撮像データを出力する（ステップＳ５）。画像処理部３２による撮像データの受信が完了すると、該画像処理部３２は、撮像データに基づいてワークＷの重心Ｗａの位置を算出する（ステップＳ６）。
【００５４】
ロボットコントローラー３０の制御部３３は、先に算出したエンドエフェクター１５の位置とワークＷの重心Ｗａの位置とを対応付けた相関データ３４ｂを生成する（ステップＳ７）。さらに、制御部３３は、上記ワークＷの重心Ｗａの位置とエンドエフェクター１５の位置との差分を算出した上で、該差分と上述した対応関係とに基づいてワークＷを搬送すべき目標位置を補正する（ステップＳ８）。
【００５５】
以上説明した上記実施形態によれば、以下に列挙する効果が得られるようになる。
（１）エンドエフェクター１５の位置を検出するためのトリガー信号によって、カメラ２２がエンドエフェクター１５の撮像を開始し、且つ、ロボットコントローラー３０のＩ／Ｏ３１が、第１モーター１１ａ及び第２モーター１３ａの駆動量の取得を開始するようにした。すなわち、カメラ２２とＩ／Ｏ３１とが、共通するトリガー信号で駆動されるようにした。それゆえに、移動中のロボット１０の把持するワークＷが撮像対象であっても、Ｉ／Ｏ３１に入力されるトリガー信号とカメラ２２に入力されるトリガー信号とが共通する以上、カメラ２２にて撮像された画像と、Ｉ／Ｏ３１にて取得された最新の駆動量とが、時間軸上において近いものとなる。それゆえに、移動中のロボット１０から得られる２つの情報、すなわち、画像から得られるロボット１０のエンドエフェクター１５の位置と該位置における第１モーター１１ａと第２モーター１３ａの駆動量とが、時間軸上で近いものとして互いに対応付けられることとなる。そして、このような対応付けが移動中のロボット１０に対して行われるため、エンドエフェクター１５の位置を検出するためにロボット１０が停止している期間やロボット１０が停止した後に再加速するための期間などを縮める、あるいは無くすことが可能である。したがって、ロボット１０が有する第１モーター１１ａ及び第２モーター１３ａの駆動量と実際のロボット１０の状態とを画像に基づいて対応付ける処理の効率を高めることが可能である。
【００５６】
（２）ロボット１０の把持するワークＷが検出光線２３ｃを超えたときに、カメラ２２とＩ／Ｏ３１とが駆動されるようにした。それゆえに、カメラ２２の撮像する画像とＩ／Ｏ３１の取得する駆動量とは、常に、ロボット１０の把持するワークＷが所定の位置に到達したときのものとなる。このような構成であれば、カメラ２２の撮像する画像が、上記トリガー信号の都度、互いに大きく異なるものとはなり難くなる。それゆえに、カメラ２２にて撮像された画像からワークＷの位置を算出する処理の態様を予め簡単な構成とすることが可能であり、また、このような画像の処理によって得られる結果の精度、すなわちワークＷの重心Ｗａの位置の精度を高めることが可能でもある。
【００５７】
（３）カメラ２２の撮像対象が撮像領域２２ａの検出光線２３ｃを超えたときに、カメラ２２とＩ／Ｏ３１とが駆動されるようにした。そのため、カメラ２２の撮像する画像にワークＷが含まれること、さらには、ワークＷの重心Ｗａの位置を算出することが可能な程度にワークＷが撮像されることをより確実なものとすることが可能である。したがって、画像の処理によって得られる結果の精度、すなわち撮像対象の位置の精度をさらに高めることが可能である。
【００５８】
（４）カメラ２２が撮像するワークＷの画像に基づいて、ワークＷの重心Ｗａの位置が算出される一方、Ｉ／Ｏ３１が取得する上記駆動量に基づいて、エンドエフェクター１５の位置が算出されるようにした。それゆえに、カメラ２２によってエンドエフェクター１５を撮像することが不可能な場合であっても、ワークＷの位置と該ワークＷを把持するエンドエフェクター１５の位置とを対応付けることが可能である。すなわち、カメラ２２によってエンドエフェクター１５の位置を検出することが不可能な場合であっても、エンドエフェクター１５とワークＷとの相対位置を把握することが可能である。その結果、エンドエフェクター１５とワークＷとの双方が撮像されるようにカメラ２２を配置するという煩わしさを軽減することが可能である。さらには、カメラ２２の撮像領域２２ａをワークＷに特化した位置に設計することが可能になるため、画像から算出されるワークＷの重心Ｗａの位置の精度を高めることが可能にもなる。
【００５９】
（５）ロボットコントローラー３０の記憶部３４が、ワークＷの目標位置、例えば把持位置Ｐ１や搬送位置と、第１モーター１１ａ及び第２モーター１３ａの駆動量とを対応付けて記憶するようにした。また、記憶部３４が記憶するエンドエフェクター１５の重心Ｗａの位置と駆動量との対応関係に基づいて上記目標位置と該目標位置に到達するための駆動量との対応関係を補正する補正部として機能する制御部３３を備えるようにした。これにより、ロボット１０が有する第１モーター１１ａ及び第２モーター１３ａの駆動量と実際のロボット１０の状態とを画像に基づいて対応付けるとともに、その対応関係に基づいて第１モーター１１ａ及び第２モーター１３ａの駆動量を補正することが可能である。
【００６０】
なお、上記実施形態は、以下のように適宜変更して実施することもできる。
・ワークＷは静止した載置台２１に限らず、例えばコンベアーのように時間の経過とともにワークＷの位置が移動するような場所に載置されるものであってもよい。
【００６１】
・撮像領域２２ａ内にワークＷの全体と該ワークＷに覆われたエンドエフェクター１５とが収まるように、カメラ２２の位置、撮像領域２２ａの大きさ、及び光学センサー２３の位置を設定するようにした。これに限らず、例えば図４に示されるように、カメラ２２の撮像時に、エンドエフェクター１５が撮像領域２２ａ内に収まっておらず、ワークＷの一部のみが撮像領域２２ａ内に収まるように、カメラ２２の位置、撮像領域２２ａの大きさ、及び光学センサー２３の位置を設定するようにしてもよい。この場合、ロボットコントローラー３０の記憶部３４に、ワークＷの形状に関する情報が予め記憶されていれば、カメラ２２によって撮像されたワークＷの一部分から、該ワークＷの重心Ｗａの位置を算出することが可能である。
【００６２】
・ワークＷの位置として、該ワークＷの重心Ｗａの位置を算出するようにしたが、重心Ｗａ以外の任意の位置を算出するようにしてもよい。
・ロボット１０は、水平多関節ロボットとして具現化したが、これ以外のロボット、例えば垂直多関節ロボットとして具現化するようにしてもよい。
【００６３】
・上記カメラ２２は、ワークＷを撮像することが可能であれば、ロボット１０に搭載するようにしてもよい。例えば、ワークを把持するエンドエフェクターの先端と基台と第１アームとの連結部分である第１間接とが位置ずれするようなロボットであれば、該ロボットの第１アームにカメラを搭載するようにしてもよい。
【００６４】
・カメラ２２の撮像対象は、ワークＷとエンドエフェクター１５との双方であってもよく、あるいはエンドエフェクター１５のみであってもよい。このうち、カメラ２２の撮像対象がワークＷとエンドエフェクター１５との双方である場合には、カメラ２２が撮像した画像からワークＷとエンドエフェクター１５との双方の位置を算出することが可能である。そのため、第１モーター１１ａの駆動量及び第２モーター１３ａの駆動量に基づくロボット１０又はエンドエフェクター１５の位置と、画像に基づくワークＷ及びエンドエフェクター１５の位置とを対応付けることが可能である。また、カメラ２２の撮像対象がエンドエフェクター１５である場合には、カメラ２２が撮像した画像に基づくエンドエフェクター１５の位置と、上記駆動量に基づくエンドエフェクター１５の位置とを対応付けることが可能である。
【００６５】
・光学センサー２３がエンドエフェクター１５の位置を検出する位置は、カメラ２２の撮像領域２２ａとは異なる位置であってもよい。要するに、撮像対象が撮像領域２２ａを移動することを検出可能な位置であればよく、例えばエンドエフェクター１５の軌道における上記撮像領域２２ａに対する前方位置であってもよい。このような構成であっても、エンドエフェクター１５が前方位置に到達すれば、該エンドエフェクター１５がその軌道に沿って移動する以上、該エンドエフェクター１５がいつ撮像領域２２ａ内を移動するかを概ね把握することは可能である。そして、光学センサー２３がエンドエフェクター１５の位置を検出した後、撮像対象が撮像領域２２ａ内に侵入するような所定の時間だけ、光学センサー２３がトリガー信号の出力を遅らせる構成であればよい。
【００６６】
・上記ロボットコントローラー３０では、ロボット１０の軌道を予め計算する軌道計算処理の結果に基づいて、撮像対象が撮像領域２２ａ内を移動するタイミングを推定するようにしてもよい。加えて、同ロボットコントローラー３０が、上記推定されたタイミングにてカメラ２２とＩ／Ｏ３１とに共通のトリガー信号を出力するという構成であってもよい。
【００６７】
・カメラ２２が撮像を開始する指令としてのトリガー信号を受けてから画像を撮像するまでの時間である撮像時間は、Ｉ／Ｏ３１が取得を開始する指令としてのトリガー信号を受けてから駆動量を取得するまでの時間である取得時間よりも大幅に長くなる場合がある。こうした場合には、カメラ２２にトリガー信号を入力するタイミングを取得部にトリガー信号を入力するタイミングよりも先行させるとともに、こうしたタイミングの差によって撮像時間と取得時間との差を補うことが好ましい。
【００６８】
・カメラ２２とＩ／Ｏ３１とに入力される共通のトリガー信号は、ロボットコントローラー３０の外部で生成されるトリガー信号に限らず、ロボットコントローラー３０の内部で生成される内部のトリガー信号であってもよい。要は、トリガー信号は、撮像対象が撮像領域２２ａ内に侵入するタイミングで生成される信号であればよい。
【符号の説明】
【００６９】
１０，４０…水平多関節ロボット（ロボット）、１１，４１…基台、１１ａ，４１ａ…第１モーター、１１ｂ…第１エンコーダー、１２，４２…第１アーム、１２ａ…第１回転軸、１２ｂ…第２回転軸、１３，４３…第２アーム、１３ａ，４３ａ…第２モーター、１３ｂ…第２エンコーダー、１３ｃ…第３モーター、１４，４４…スプライン、１５，４５…エンドエフェクター、２１，５１…載置台、２２，５２…カメラ、２２ａ…撮像領域、２３…光学センサー、２３ａ…投光部、２３ｂ…受光部、３０，６０…ロボットコントローラー、３１，６２…Ｉ／Ｏ、３２，６３…画像処理部、３３，６１…制御部、３４，６４…記憶部、３４ａ…ロボットデータ、３４ｂ…相関データ、６４ａ…撮像位置データ記憶部、Ｐ１…把持位置、Ｐ２…撮像位置、Ｗ…ワーク、Ｗａ…重心。
【図１】
0005849403.tif 000002
【図２】
0005849403.tif 000003
【図３】
0005849403.tif 000004
【図４】
0005849403.tif 000005
【図５】
0005849403.tif 000006