(57)【要約】【課題】組み立て条件やワークの特性などに応じて、ロボットシステムの制御をフルまたはセミクローズ制御のいずれで行うかを選択し、ワークを把持するピッキング動作を最適かつ高速に制御できるようにする。【解決手段】対象物を把持するハンド１０２と、ハンド１０２を支持して移動するアーム（１００）を有するロボットシステムにおいて、減速機１１の入、出力側にそれぞれエンコーダ１０、１６が設けられ、アームの動作をエンコーダ１６の検出値に基づき制御するフルクローズ制御、またはエンコーダ１０の検出値に基づき制御するセミクローズ制御のいずれによって制御するかを決定する。把持対象の少なくとも位置およびサイズに係わる情報を認識し、フルクローズ制御計算４０４、セミクローズ制御計算４１１を行ない、アームの制御態様として、フルまたはセミクローズ制御からピッキング動作時間が短い方の制御態様を選択する。【選択図】図４
2015182145.tif 000002
【特許請求の範囲】
【請求項１】
対象物を把持するハンドと、前記ハンドを支持して移動するアームと、複数のアーム移動制御態様から選択した１のアーム移動制御態様によって前記アームの動作を制御する制御装置と、を有するロボットシステムの制御方法において、
前記制御装置が、前記ハンドにより把持される対象物の少なくとも位置およびサイズに係わる情報を認識する対象物認識工程と、
前記制御装置が、前記対象物認識工程で認識された前記対象物の位置まで前記ハンドを移動させるのに必要な前記アームの移動時間を前記複数のアーム移動制御態様ごとに取得するアーム移動時間計算工程と、
前記制御装置が、前記対象物認識工程で認識された前記対象物のサイズに基づき取得した前記対象物の把持に必要な前記ハンドの開量に基づき、前記ハンドにより前記対象物を把持する動作におけるハンド把持時間を前記複数のアーム移動制御態様ごとに取得するハンド把持時間計算工程と、
前記制御装置が、前記アーム移動時間計算工程および前記ハンド把持時間計算工程により前記複数のアーム移動制御態様ごとに取得した前記アームの移動時間および前記ハンド把持時間から、前記アームで前記ハンドを前記対象物の位置まで移動させ前記ハンドにより前記対象物を把持させるピッキング動作に必要なピッキング動作時間を前記複数のアーム移動制御態様ごとに取得するピッキング動作時間計算工程と、を備え、
前記制御装置は、前記アームの動作を制御するアーム移動制御態様として、前記複数のアーム移動制御態様から、前記ピッキング動作時間計算工程で前記複数のアーム移動制御態様ごとに取得したピッキング動作時間が短いアーム移動制御態様を選択することを特徴とするロボットシステムの制御方法。
【請求項２】
請求項１に記載のロボットシステムの制御方法において、前記ロボットシステムは、前記アームを減速機を介して駆動するモータと、前記減速機の入力側の駆動量を検出する第１のエンコーダと、前記減速機の出力側の駆動量を検出する第２のエンコーダと、を有し、前記複数のアーム移動制御態様は前記第１のエンコーダの出力に基づき前記アームが制御される第１のアーム移動制御態様と、前記第２のエンコーダの出力に基づき前記アームが制御される第２のアーム移動制御態様を含み、前記制御装置は、前記１または第２のアーム移動制御態様のうち、前記ピッキング動作時間計算工程において取得したピッキング動作時間が短い方を前記アーム移動制御態様として選択することを特徴とするロボットシステムの制御方法。
【請求項３】
請求項１に記載のロボットシステムの制御方法において、前記対象物認識工程は、前記対象物を撮影して得た画像に対する画像処理の結果に基づき前記対象物の位置を認識することを特徴とするロボットシステムの制御方法。
【請求項４】
請求項１に記載のロボットシステムの制御方法において、前記対象物認識工程は、予め記憶した前記対象物の位置情報に基づき前記対象物の位置を特定することを特徴とするロボットシステムの制御方法。
【請求項５】
請求項１に記載のロボットシステムの制御方法において、前記対象物認識工程は、前記対象物を撮影して得た画像に対する画像処理の結果に基づき前記対象物のサイズを認識することを特徴とするロボットシステムの制御方法。
【請求項６】
請求項１に記載のロボットシステムの制御方法において、前記対象物認識工程は、予め記憶した前記対象物のサイズに基づき前記対象物のサイズを特定することを特徴とするロボットシステムの制御方法。
【請求項７】
請求項４に記載のロボットシステムの制御方法において、前記対象物認識工程は、予め記憶した前記対象物の複数の異なる位置情報に基づき複数の異なる位置にある前記対象物の位置を特定することを特徴とするロボットシステムの制御方法。
【請求項８】
請求項１に記載のロボットシステムの制御方法において、前記ハンド把持時間計算工程は前記対象物を撮影して得た画像に対する画像処理の結果に基づき特定された前記対象物の種類に応じて得られたハンド把持速度に基づき前記対象物を把持する動作におけるハンド把持時間を取得することを特徴とするロボットシステムの制御方法。
【請求項９】
請求項１から８のいずれか１項に記載のロボットシステムの制御方法の各工程を前記制御装置に実行させるためのロボットシステムのプログラム。
【請求項１０】
請求項９に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１１】
対象物を把持するハンドと、前記ハンドを支持して移動するアームと、複数のアーム移動制御態様から選択した１のアーム移動制御態様によって前記アームの動作を制御する制御装置と、を有するロボットシステムにおいて、
前記制御装置は、
前記ハンドにより把持される対象物の少なくとも位置およびサイズに係わる情報を認識し、
認識した前記対象物の位置まで前記ハンドを移動させるのに必要な前記アームの移動時間を前記複数のアーム移動制御態様ごとに取得し、
認識した前記対象物のサイズに基づき取得した前記対象物の把持に必要な前記ハンドの開量に基づき、前記ハンドにより前記対象物を把持する動作におけるハンド把持時間を前記複数のアーム移動制御態様ごとに取得し、
前記複数のアーム移動制御態様ごとに取得した前記アームの移動時間および前記ハンド把持時間から、前記アームで前記ハンドを前記対象物の位置まで移動させ前記ハンドにより前記対象物を把持させるピッキング動作に必要なピッキング動作時間を前記複数のアーム移動制御態様ごとに取得し、
前記アームの動作を制御するアーム移動制御態様として、前記複数のアーム移動制御態様から、前記複数のアーム移動制御態様ごとに取得したピッキング動作時間が短いアーム移動制御態様を選択することを特徴とするロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の制御態様から１の制御態様をその移動制御態様として選択可能なアームと、前記アームにより移動されるハンドを備えたロボットシステムの制御方法、同ロボットシステムに関する。
【背景技術】
【０００２】
従来より、工場の生産ラインにおいて、作業の自動化、省人化を図るために、ロボットを用いた自動組立が利用されている。現在では、より複雑な動作を行うために、多関節ロボットアームを備えたロボットが実用化され、広く普及している。この種のロボットシステムでは、生産性向上のため、サイクルタイム（タクトタイム）の短縮を図るため、例えばワークをロボットハンドにより把持するピッキングの動作時間の短縮が求められている。
【０００３】
従来より、ピッキング動作時間を短縮するため、様々な技術が提案されている。例えば特許文献１には、３軸マニピュレータを用いたピッキング装置において、出庫棚から出荷箱までの一連の動作を連続で実行する制御が開示されている。この特許文献１では、各動作毎に各軸均一の停止位置決め精度を設定するのではなく、各動作に必要限求められる停止位置決め精度を設定することにより、ピッキングのサイクルタイムのアップを図っている。
【０００４】
また特許文献２では、ロボットアームの速度や位置決め精度を向上し、ロボットアームの振動を抑制するために、高精度位置決めモード、高速動作可能モード、のようなモード切替えを行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３１８６８９９号公報
【特許文献２】特開２０１１−１７６９１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１、２に記載の技術はいずれも、精度が厳密に必要とされる動作とそれほど精度が要求されない動作を判別して、ロボットの動作を制御することで作業時間短縮を図ることに主眼をおいている。一方、ロボットハンドにより対象物をピッキングするロボットシステムにおいては、次のような技術課題がある。
【０００７】
例えば、複雑な動作を行う多関節ロボットアームの精密組み付け作業では、ハンドでワークを把持する場合、ロボットアームの位置決めバラつきの影響を考慮し、ハンド開量は、ハンドで把持するワークに対し遊びを持たせる必要がある。しかし、この遊びを大きく取るとハンドの把持制御に要する時間が長くなる傾向がある。従って、ピッキング動作の所要時間のうち、ハンドの把持制御に関しては、ワークのサイズや要求される組み付け精度などによって定まるハンド開量を把持制御時間の長短に影響するパラメータとして考えることができる。
【０００８】
また、ピッキング動作には、例えばロボットアームによりロボットハンドをワークの取り出し位置まで移動させる動作も含まれる。従って、ピッキング動作の所要時間のうち、例えばロボットアームでロボットハンドを待機位置から取り出し位置までの移動させる距離を移動制御時間の長短に影響するパラメータとして考えることができる。
【０００９】
一方、ロボットの機構部、例えばロボットアームの関節は、波動歯車などを用いた減速機を介してＡＣやＤＣのサーボモータ、あるいはパルスモータなどのモータによって駆動される。この種の駆動機構の制御においては、モータや減速機の回転軸に設けられたエンコーダを用いて対象物の位置や姿勢を閉（クローズド）ループ制御する。このような閉ループ制御において、対象物の位置や姿勢に相当する実際値を検出するこれらエンコーダの出力を用いる場合、そのエンコーダが機構の位置のどのような位置に設けられているかによって、制御の特性が異なってくる。
【００１０】
一般に、駆動機構の入力側、例えばモータの駆動軸（あるいは減速機の入力軸）に設けたエンコーダを用いる閉ループ制御はセミクローズ（ド）制御と呼ばれている。また、駆動対象に近い側、例えば減速機の出力軸に設けたエンコーダを用いる閉ループ制御はフルクローズ（ド）制御などと呼ばれる。これらセミクローズ制御およびフルクローズ制御には、制御の速度や精度に関して、それぞれ概ね次のような特徴がある。
【００１１】
例えば、セミクローズ制御は、駆動精度はそれ程高くないが位置や姿勢の制御速度は高速であり、目標の位置（姿勢）付近でのハンチングなどの誤動作を生じない特徴がある。一方、フルクローズ制御は、駆動精度が高いかわりにセミクローズ制御ほど高い制御速度は得られない。また、目標の位置（姿勢）付近でのハンチングなどの誤動作の影響を回避するために様々な付加的な制御を行うなどの必要があり、この点でも高速な駆動制御を行なうのが難しい、といった特徴がある。
【００１２】
ここで、ピッキング動作時間を短縮する観点から、アーム移動制御態様として、フルクローズ制御またはセミクローズ制御のいずれを選択すべきかを考えると、一見、セミクローズ制御の方が有利であるように思われる。しかしながら、ピッキング動作全体を考えると、必ずしもフルクローズ制御よりもセミクローズ制御の方がピッキング動作の総所要時間が短くなる、とはいえない可能性がある。
【００１３】
例えば、要求されたピッキング動作においてロボットアームによるハンドの移動距離がごく小さい場合と、かなり大きい場合などが考えられる。そして、ハンドの開量も、対象物のサイズによって最小限度の大きさは決定できたとしても、上記のハンド開量に関する遊び量についてはワークが精密部品や壊れ易い部品であるか、などによって調節しなければならない可能性がある。また、ハンド開量については、それ以前のアーム移動がフルクローズ制御でセミクローズ制御のいずれで行われたかによって精度が異なるのであればそれに応じた遊び量（余裕）を取る必要が出てくる可能性がある。
【００１４】
以上のように、ピッキング動作の総所要時間の短縮に関して、フルクローズ制御、セミクローズ制御のいずれが適しているかは、組み立て条件やワークのサイズ、特性などを含んで決定されるピッキング動作の態様によって様々に変化し得る。例えば、ピッキング制御に要する総所要時間のうち、ロボットアームの移動制御時間とハンドの把持制御時間のいずれが大きな比重を持つかはピッキング動作の態様によって異なり、一概に予想できない。また、ロボットアームおよびロボットハンドの制御条件は相互に独立してはおらず、動作前に両者の動作時間を見積もるにしても、アームおよびハンドの動作時間を単純に独立して計算することは適切ではない。
【００１５】
本発明の課題は、組み立て条件やワークの特性などに応じて、ロボットシステムの制御をフルクローズ制御で行うかセミクローズ制御で行うかを選択し、ワークを把持するピッキング動作を最適かつ高速に制御できるようにすることにある。
【課題を解決するための手段】
【００１６】
上記課題を解決するため、本発明においては、対象物を把持するハンドと、前記ハンドを支持して移動するアームと、複数のアーム移動制御態様から選択した１のアーム移動制御態様によって前記アームの動作を制御する制御装置と、を有するロボットシステムの制御方法において、前記制御装置が、前記ハンドにより把持される対象物の少なくとも位置およびサイズに係わる情報を認識する対象物認識工程と、前記制御装置が、前記対象物認識工程で認識された前記対象物の位置まで前記ハンドを移動させるのに必要な前記アームの移動時間を前記複数のアーム移動制御態様ごとに取得するアーム移動時間計算工程と、前記制御装置が、前記対象物認識工程で認識された前記対象物のサイズに基づき取得した前記対象物の把持に必要な前記ハンドの開量に基づき、前記ハンドにより前記対象物を把持する動作におけるハンド把持時間を前記複数のアーム移動制御態様ごとに取得するハンド把持時間計算工程と、前記制御装置が、前記アーム移動時間計算工程、および前記ハンド把持時間計算工程により前記複数のアーム移動制御態様ごとに取得した前記アームの移動時間および前記ハンド把持時間から、前記アームで前記ハンドを前記対象物の位置まで移動させ前記ハンドにより前記対象物を把持させるピッキング動作に必要なピッキング動作時間を前記複数のアーム移動制御態様ごとに取得するピッキング動作時間計算工程と、を備え、前記制御装置は、前記アームの動作を制御するアーム移動制御態様として、前記複数のアーム移動制御態様から、前記ピッキング動作時間計算工程で前記複数のアーム移動制御態様ごとに取得したピッキング動作時間が短いアーム移動制御態様を選択する構成を採用した。
【００１７】
あるいは、対象物を把持するハンドと、前記ハンドを支持して移動するアームと、複数のアーム移動制御態様から選択した１のアーム移動制御態様によって前記アームの動作を制御する制御装置と、を有するロボットシステムにおいて、前記制御装置は、前記ハンドにより把持される対象物の少なくとも位置およびサイズに係わる情報を認識し、認識した前記対象物の位置まで前記ハンドを移動させるのに必要な前記アームの移動時間を前記複数のアーム移動制御態様ごとに取得し、認識した前記対象物のサイズに基づき取得した前記対象物の把持に必要な前記ハンドの開量に基づき、前記ハンドにより前記対象物を把持する動作におけるハンド把持時間を前記複数のアーム移動制御態様ごとに取得し、前記複数のアーム移動制御態様ごとに取得した前記アームの移動時間および前記ハンド把持時間から、前記アームで前記ハンドを前記対象物の位置まで移動させ前記ハンドにより前記対象物を把持させるピッキング動作に必要なピッキング動作時間を前記複数のアーム移動制御態様ごとに取得し、前記アームの動作を制御するアーム移動制御態様として、前記複数のアーム移動制御態様から、前記複数のアーム移動制御態様ごとに取得したピッキング動作時間が短いアーム移動制御態様を選択する構成を採用した。
【発明の効果】
【００１８】
上記構成によれば、アーム移動制御態様として、複数のアーム移動制御態様からピッキング動作時間が短いアーム移動制御態様を選択する。特に、複数のアーム移動制御態様ごとにアーム移動時間とハンド把持時間を加算してピッキング動作の所要時間を取得し、複数のアーム移動制御態様から所要時間が短い制御態様を選択する。このため、組み立て条件やワークの特性などに応じて、適切に複数のアーム移動制御態様から１のアーム移動制御態様を選択でき、ピッキング動作の所要時間を短縮することができる、という優れた効果がある。
【図面の簡単な説明】
【００１９】
【図１】本発明を採用したロボットシステムの概略構成を示した斜視図である。
【図２】図１のロボットシステムの駆動機構の構造例を示した断面図である。
【図３】本発明を採用したロボットシステムの第１実施例に係る制御系の構成を示したブロック図である。
【図４】本発明を採用したロボットシステムの第１実施例に係る制御系の機能を示した説明図である。
【図５】本発明を採用したロボットシステムの第１実施例に係る制御手順を示したフローチャート図である。
【図６】本発明を採用したロボットシステムの第２実施例に係る制御系の機能を示した説明図である。
【図７】本発明を採用したロボットシステムの第２実施例に係る制御手順を示したフローチャート図である。
【図８】本発明を採用したロボットシステムの第３実施例に係る制御系の機能を示した説明図である。
【図９】本発明を採用したロボットシステムの第３実施例に係る制御手順を示したフローチャート図である。
【図１０】本発明を採用したロボットシステムにおいて、ワークをトレーに設置した時の様子を示した説明図である。
【図１１】本発明を採用したロボットシステムの第４実施例に係る制御系の機能を示した説明図である。
【図１２】本発明を採用したロボットシステムの第４実施例に係る制御手順を示したフローチャート図である。
【図１３】本発明を採用したロボットシステムで用いられるワークおよびワーク供給台を示したもので、（ａ）は円錐台状のワーク供給台の構成例を示した説明図、（ｂ）は同ワーク供給台にリング状のワークを載置した状態を示した説明図である。
【図１４】本発明を採用したロボットシステムの第５実施例に係る制御系の機能を示した説明図である。
【図１５】本発明を採用したロボットシステムの第５実施例に係る制御手順を示したフローチャート図である。
【発明を実施するための形態】
【００２０】
以下、本発明を実施するに好適な実施の形態につき、添付図面に示した実施例を用いて詳細に説明する。
【実施例１】
【００２１】
図１は、本発明の第１実施例に係るロボット装置の概略構成を示す斜視図である。図１に示すロボット装置５００は、例えば機械や電子機器の組立などの作業を行う産業ロボット装置として構成されている。図１のロボット装置５００は、垂直六軸多関節型のロボットアーム１００と、ロボットアーム１００を制御する制御装置２００と、制御装置２００に接続されたティーチングペンダント３００と、カメラ３１０を備えている。
【００２２】
ロボットアーム１００は、作業台に固定されるベース部１０１に組み立てられている。ロボットアーム１００は、変位や力を伝達する複数のリンク１２１〜１２６と、これらのリンク１２１〜１２６を旋回又は回転可能に連結する複数の関節１１１〜１１６とともにロボットの本体部分であるロボット本体１００Ａを構成する。
【００２３】
ロボットアーム１００の先端のリンク１２６には、ハンド１０２（ロボットハンド）が連結されている。ハンド１０２は、組立作業などの操作の対象物としてワーク１０３を把持し、操作するためのエンドエフェクタ（ツール）である。
【００２４】
各関節１１１〜１１６は、減速機（後述する図２の１１）を介して回転駆動手段であるサーボモータ（図２の１）により駆動される。減速機（図２の１１）はサーボモータのトルクを増大させるためにサーボモータの出力を減速するためのものである。このようなロボットアームの関節に用いられる減速機（図２の１１）には、例えば小型軽量で減速比の大きい波動歯車減速機が好適である。
【００２５】
以下、各関節１１１〜１１６を代表して、関節１１２を例に説明する。図２は、図１に示す関節１１２の近傍のロボットアーム１００の断面を示している。図２に示すように、関節１１２には、サーボモータ１と、サーボモータ１の出力（回転角度）を減速する減速機１１とが設けられている。サーボモータ１は、例えばブラシレスＤＣサーボモータやＡＣサーボモータから構成される。
【００２６】
サーボモータ１の回転機構は、主に回転軸２とロータマグネット３から構成されている。また、サーボモータ１のモータハウジング４，５には、回転軸２を回転自在に支持する軸受６，７が設けられており、モータハウジング４には、ステータコイル８が取付けられている。サーボモータ１はモータカバー９に収容されている。
【００２７】
減速機１１の入力側、すなわちモータ１の回転軸２の一端部には、エンコーダ１０（第１のエンコーダ）が設けられている。このエンコーダ１０は例えば回転軸２の回転角度を検出するロータリエンコーダにより構成される。エンコーダ１０はサーボモータ１の回転軸２の回転に伴って、入力側パルス信号を生成し、図１の制御装置２００に出力する。このようにして、エンコーダ１０によって、減速機１１の入力側の駆動軸の駆動量を検出することができる。なお、必要に応じて、サーボモータ１とエンコーダ１０との間に、不図示のブレーキユニットを設けてもよい。このようなブレーキユニットを設ける主な目的は電源ＯＦＦ時のロボット本体１００Ａの姿勢の保持にある。
【００２８】
一方、サーボモータ１の回転軸２の他方の端部には減速比Ｎの減速機１１が取付けられている。波動歯車減速機を用いる場合、減速機１１は入力部であるウェブジェネレータ１２、サーキュラスプライン１３、フレックススプライン１４から構成される。動力伝達部として機能するフレックススプライン１４は、ウェブジェネレータ１２とサーキュラスプライン１３との間に配置される。
【００２９】
フレックススプライン１４は、リンク１２１に連結されており、減速機１１の減速比Ｎで減速される。減速機１１の出力部であるサーキュラスプライン１３は、関節１１２を駆動するリンク１２２に結合されている。一方、入力側のウェブジェネレータ１２は、サーボモータ１の回転軸２に結合されている。
【００３０】
以上の構成において、サーボモータ１の回転軸２とウェブジェネレータ１２との結合部が、減速機１１の入力軸、フレックススプライン１４とリンク１２１との結合部が減速機１１の出力軸として機能する。このような構成では、減速機１１の出力軸の回転角度が、実出力角度、すなわち関節１１２の角度となる。
【００３１】
リンク１２１とリンク１２２との間には、クロスローラベアリング１５が設けられており、リンク１２１とリンク１２２とは、クロスローラベアリング１５を介して回転自在に結合されている。以上の構成において、サーボモータ１の回転軸２の回転は、減速機１１を介して１／Ｎに減速され、リンク１２１とリンク１２２とが相対的に回転する。
【００３２】
減速機１１の出力側の駆動軸には、エンコーダ１６（第２のエンコーダ）が設けられ、関節１１２のリンク１２１とリンク１２２の相対的な回転角度を検出する。エンコーダ１６は、関節１１２の駆動に伴って出力側パルス信号を生成し、制御装置２００（図１）に出力する。すなわち、エンコーダ１６は、減速機１１の出力側の駆動軸の駆動量を検出することができる。エンコーダ１０とエンコーダ１６は、一般的なロータリエンコーダと同様に光学式あるいは磁気式ロータリエンコーダなどから構成することができる。
【００３３】
上記の図２では、ロボットアーム１００の関節１１２を例にサーボモータ１および減速機１１廻りの構造につき説明したが、他の関節１１１、１１３〜１１６についても上記と同様の構成が設けられる。本実施例では、ロボットアーム１００の関節１１１〜１１６はセミクローズ制御（第１のアーム移動制御態様）、またはフルクローズ制御（第２のアーム移動制御態様）のいずれかにより制御される。減速機１１の入力側（サーボモータ１の回転軸）に設けられたエンコーダ１０はセミクローズ制御で、また減速機１１の出力側に設けられたエンコーダ１６はフルクローズ制御で用いられる。
【００３４】
本実施例（あるいは後述の他の実施例も同様）では、ピッキング動作を行う場合、少なくともロボットアーム１００について、セミクローズ制御またはフルクローズ制御のいずれの制御態様で制御するか否かを決定する。
【００３５】
また、ハンド１０２の駆動機構は本実施例では詳細に図示しないが、ハンド１０２がサーボモータで駆動される場合には、図２と同等のモータおよび減速機を設けることができる。その場合、上記同様に減速機の入力側および出力側にセミクローズ制御、およびフルクローズ制御のためのエンコーダ１０とエンコーダ１６をそれぞれ設けることができる。このような構成においては、ハンド１０２についても、セミクローズ制御またはフルクローズ制御のいずれかの制御態様を選択する制御を行なう可能性がある。しかしながら、以下の実施例１〜５ではアームの移動制御に用いる制御態様として、セミクローズ制御またはフルクローズ制御のいずれを用いるのが有利（高速）かを選択する制御につき説明する。
【００３６】
図３は、ロボット装置５００の制御装置２００の構成を示すブロック図である。制御装置２００は、制御部としてのＣＰＵ２０１、ＲＯＭ２０２、ＲＡＭ２０３、記憶部としてのＨＤＤ２０４、記録ディスクドライブ２０５および各種のインタフェース２１０〜２１５を有する。
【００３７】
ＣＰＵ２０１には、ＲＯＭ２０２、ＲＡＭ２０３、ＨＤＤ２０４、記録ディスクドライブ２０５およびインタフェース２１０〜２１５が、バス２１６を介して接続されている。ＲＯＭ２０２には、ＢＩＯＳなどの基本プログラムが格納されている。ＲＡＭ２０３は、ＣＰＵ２０１の演算処理結果を一時的に記憶する記憶装置である。記録ディスクドライブ２０５にはティーチングペンダントから取得した教示データや、動作手順の動作プログラムを記憶する。
【００３８】
ＨＤＤ２０４は、ＣＰＵ２０１の演算処理結果である各種のデータなどを記憶する記憶部を構成するとともに、本ロボットシステムの制御装置であるＣＰＵ２０１に後述の各制御手順を実行させるためのプログラム３３０を記録する。ＣＰＵ２０１は、ＨＤＤ２０４に記録（格納）されたプログラム３３０に基づいて各種演算処理を実行する。記録ディスクドライブ２０５は、記録ディスク３３１に記録された各種データやプログラムなどを読み出すことができる。
【００３９】
インタフェース２１０には、カメラ３１０が接続されている。カメラ３１０は、ロボット操作の対象物としてのワーク１０３を撮影する。カメラ３１０で撮影された画像にパターンマッチングなどの画像処理を加えることにより、対象物認識を行うことができ、例えば、ワーク１０３の位置やサイズなどの情報を取得することができる。ＣＰＵ２０１は、インタフェース２１０およびバス２１６を介してカメラ３１０から撮影画像のデータ信号を入力することができる。
【００４０】
インタフェース２１１には、ティーチングペンダント３００が接続されている。ティーチングペンダント３００は、ディスプレイ、ファンクションキーなどのユーザーインターフェース手段を有し、ロボット本体１００Ａに実行させる動作を教示するのに用いられる。ティーチングペンダント３００は、ユーザの教示操作に応じて、例えばロボット本体１００Ａの各関節１１１〜１１６の目標関節角度が順次出力される。ＣＰＵ２０１は、この目標関節角度データをインタフェース２１１およびバス２１６を介して入力することができる。
【００４１】
インタフェース２１２には、ロボットアーム１００（あるいはさらにハンド１０２）の関節に設けられた各エンコーダが接続される。ここでは、ロボットアーム１００の関節（あるいはさらにハンド１０２）に設けられる全てのエンコーダを代表して、図２に示した減速機１１の入力側および出力側のエンコーダ１０，１６の参照符号を用いている。エンコーダ１０，１６からは駆動軸の角度を示すパルス信号が出力され、ＣＰＵ２０１は、インタフェース２１２およびバス２１６を介してエンコーダ１０，１６の出力値を入力することができる。
【００４２】
インタフェース２１３には、モニタ３０１が接続されており、このモニタ３０１によって設定状態や現在の動作状態を示す各種の画像や文字を表示することができる。また、インタフェース２１４には、書き換え可能な不揮発性メモリ（フラッシュメモリなど）や外付けＨＤＤなどの外部記憶装置３１２が接続される。
【００４３】
なお、本実施例ないし後述の実施例における制御手順（制御工程）を実施するためのＣＰＵ２０１（制御装置）のプログラムは上述のＨＤＤ２０４以外の記録媒体に格納してもよい。例えば、同プログラムは上記のＲＯＭ２０２になどに格納することができる他、光学ディスクや外付けＨＤＤなどの記録媒体に格納した状態で供給し、記録ディスクドライブ２０５、あるいは外部記憶装置３１２などを介してインストールすることができる。この種のプログラム供給用のコンピュータ読み取り可能な記録媒体としては上記の光学ディスクに限らず、フラッシュメモリのような半導体メモリデバイスなど、任意の記録媒体を用いることができる。
【００４４】
インタフェース２１５には、ロボット装置５００の各関節１１１〜１１６あるいはさらにハンド１０２などを駆動するサーボモータを制御するサーボ制御装置３１３が接続されている。サーボ制御装置３１３は各関節１１１〜１１６などを駆動するサーボモータを駆動するが、これらのサーボモータ廻りの構造は例えば図２に示したサーボモータ１と同等である。なお図２では、図２に示したサーボモータ１と同じ参照符号によりサーボモータを示している。
【００４５】
ＣＰＵ２０１は、サーボ制御装置３１３およびインタフェース２１５を介してロボット装置５００の各部のサーボモータを駆動制御することができる。例えば、上記のサーボモータ１の場合、サーボモータ１の回転軸２の回転角度の制御量を示す駆動指令のデータを所定時間間隔でバス２１６およびインタフェース２１５を介してサーボ制御装置３１３に出力する。この動作は他の関節のサーボモータでも同様である。これにより、ＣＰＵ２０１から入力を受けた駆動指令に基づき、サーボ制御装置３１３はサーボモータ１への電流の出力量を演算し、サーボモータ１へ電流を供給する。以上のようにして、ＣＰＵ２０１は、サーボ制御装置３１３を介して、制御対象の関節の角度が目標関節角度となるよう、その関節のサーボモータの駆動を制御することができる。
【００４６】
図４は、本発明の第１実施例に係るロボット装置の制御系の制御機能ないし制御工程をブロック表現で示したものである。図４に示した各制御機能ないし各制御工程は、図３のＣＰＵ２０１がプログラム３３０を実行することにより実現される。また、図４では、上で説明済みのハードウェアブロックには、同一の参照符号を付してある。以下、図４の各ブロック表現で示した制御機能ないし制御工程につき説明する。
【００４７】
図４において、カメラ３１０はピッキング動作において、ハンド１０２で把持するワーク付近の画像を撮影する。このワークの位置は、例えばピッキング動作においては、ロボットアーム１００によりハンド１０２を移動させる目標位置である。
【００４８】
ＣＰＵ２０１は、カメラ３１０で撮影された画像データに対してパターンマッチなどの画像処理（４０１）を行うことにより、ワーク位置を特定（４０２）することができる。
【００４９】
ピッキング動作において、ハンド１０２でワークを把持する際のハンド１０２の開量は、ワークのサイズから決定しなければならない。ワークのサイズはカメラ３１０で撮影した画像から求めてもよいが、本実施例では、ワークのサイズを取得、例えばワークのサイズを記録ディスク３３１などから読み込んで、そのワークサイズを記憶する（４０３）。
【００５０】
本実施例では、ＣＰＵ２０１は、ピッキング動作に先立って、フルクローズ制御計算（４０４）、およびセミクローズ制御計算（４１１）を行い、そのピッキング動作に要するピッキング動作時間を計算する。ここでは、フルクローズ制御、およびセミクローズ制御の各制御態様におけるアーム移動時間、およびハンド把持時間からピッキング動作時間を計算する。ピッキング動作は、ワークまでハンド１０２をロボットアーム１００で移動するアーム移動、およびハンド１０２でワークを把持する把持動作から成る。この場合、アーム移動時間は、先に特定したワークの位置（４０２）に基づき計算できる。また、ハンド把持時間は先に取得し記憶（４０３）したワークサイズから適切なハンド開量を求め、このハンド開量に基づき計算できる。このようにして、フルクローズ制御、およびセミクローズ制御の各制御態様ごとにアーム移動時間、およびハンド把持時間を計算し、各制御態様ごとのピッキング動作時間を計算することができる。
【００５１】
ここで、フルクローズ制御とは、減速機１１の出力軸の角度を検出するエンコーダ１６から得られる値を用いて、アームの位置決めを制御する制御態様である。一般に、フルクローズ制御は、減速機の捩れなどの機構系の誤差をキャンセルし、セミクローズ制御よりは比較的高精度な位置決めが可能である。また、フルクローズ制御では、制御系のループにある減速機の捩れなどの要因で制御系が振動的になり位置決めに時間がかかる傾向がある。すなわち、フルクローズ制御の場合、機構制御を行えるが、移動時間が長くなる傾向がある。
【００５２】
また、セミクローズ制御とは、サーボモータ１の入力軸の角度を検出するエンコーダ１０から得られる値を用いて、アームの位置決めを制御する制御態様である。一般に、セミクローズ制御は、減速機の捩れなどの機構系の誤差をキャンセルできないため、フルクローズ制御と比較すると、位置決め精度は低くなる。また、セミクローズ制御は制御系のループに減速機の捩れなどが無いので制御系としての振動は少なく、高速駆動が可能であり、位置決め精度は低くなるが、移動時間が短くて済む傾向がある。
【００５３】
さて、図４のフルクローズ制御計算（４０４）、およびセミクローズ制御計算（４１１）において、アーム移動量計算（４０５、４１２）を行う。このアーム移動量計算（４０５、４１２）では、アーム動作開始位置から、ワーク位置特定（４０２）で特定された目標位置までの移動量を各々の制御方法（制御態様）ごとに計算する。例えば、カメラ３１０の撮影倍率は既知であるから、ワーク位置特定（４０２）のための画像処理で得た位置情報に基づき、アーム動作開始位置からワークの位置までの距離を計算することができる。なお、カメラ３１０の撮影倍率などの定数条件は例えばＲＯＭ２０２やＲＡＭ２０３を参照することにより取得できるものとする。
【００５４】
本実施例では、ピッキング動作を制御するのに、フルクローズ制御またはセミクローズ制御のいずれの制御方式が適当かを選択するために、それぞれの所要時間を求めるべくフルクローズ制御計算（４０４）、およびセミクローズ制御計算（４１１）を行う。本実施例では、これらの計算（４０４、４１１）で得られた所要時間のうち、ピッキング動作の所要時間が短かい方の上記の２つの制御方式（制御態様）を選択する。
【００５５】
フルクローズ制御計算（４０４）、およびセミクローズ制御計算（４１１）では、まず、アーム速度計算（４０６、４１３）において、ワーク位置特定（４０２）により特定された目標位置までのロボットアーム１００の速度を各々の制御方法ごとに計算する。例えば、ロボットアーム１００の各関節の駆動機構のギア比、アーム各部の寸法などは既知であるから、アーム動作開始位置からワークの位置までの距離を計算することができる。ここでも、上記ギア比やアーム各部の寸法などの定数条件は例えばＲＯＭ２０２やＲＡＭ２０３を参照することにより取得できるものとする。
【００５６】
さらに、フルクローズ制御計算（４０４）、およびセミクローズ制御計算（４１１）において、アーム移動時間計算（４０７、４１４）では、要求されているピッキング動作におけるアーム移動時間を各々の制御方法ごとに計算する。すなわち、アーム移動量計算（４０５、４１２）、アーム速度計算（４０６、４１３）で求めたアーム移動量をアーム速度で除する演算によりアーム移動時間を求めることができる。
【００５７】
一方、フルクローズ制御計算（４０４）、およびセミクローズ制御計算（４１１）において、ハンド開量計算（４０８、４１５）では、ハンド１０２でワークを把持するのに必要なハンドの開量を各々の制御方法ごとに計算する。すなわち、ワーク位置特定（４０２）にて特定されたワークの位置、および記憶（４０３）したワークサイズに基づき、フルクローズ制御にした場合と、セミクローズ制御にした場合の、それぞれのハンドの開量を決定することができる。
【００５８】
ハンド開量は、ハンド１０２でワークを把持する動作を開始する際にハンド１０２の把持部（爪）を開いておく量である。このハンド開量の大きさは、例えば、システム全体で、あるいは少なともロボットアーム１００の移動制御にフルクローズ制御またはセミクローズ制御のいずれを採用するかにによって異なるものとなる。
【００５９】
例えば、ロボットアーム１００の位置決め精度は、制御方法の違いによって生じるアーム位置決めバラつきが影響し、アーム位置決めバラつきが小さいほど高精度となる。フルクローズ制御はアーム位置決め精度が高いため、ハンドの開量は少量で済む。逆に、セミクローズ制御はアームの位置決め精度が低いため、ハンドの開量は大きく見積る必要がある。フルクローズ制御計算（４０４）、およびセミクローズ制御計算（４１１）の各ハンド開量計算（４０８、４１５）では、それぞれの制御条件に応じて確実にワークを把持するのに必要なハンド開量をそれぞれ計算する。
【００６０】
さらに、フルクローズ制御計算（４０４）、およびセミクローズ制御計算（４１１）において、ハンド把持時間計算（４０９、４１６）では、ハンド把持時間を各々の制御方法ごとに計算する。すなわち、上記のハンド開量計算（４０８、４１５）より計算されたフルクローズ制御の場合と、セミクローズ制御の場合のそれぞれのハンド開量からそれぞれの制御方法における把持時間を計算することができる。
【００６１】
そして、フルクローズ制御計算（４０４）、およびセミクローズ制御計算（４１１）では、最後にピッキング動作時間計算（４１０、４１７）において、要求されたピッキング動作に要するピッキング動作時間を各々の制御方法ごとに計算することができる。ここでは、ハンド把持時間計算（４０９、４１６）で取得したハンド把持時間と、アーム移動時間計算部（４０７、４１４）で取得したアームの移動時間を合計することにより、ピッキング動作時間を各々の制御態様ごとに求めることができる。
【００６２】
本実施例では、以上のようにして求めたフルクローズ制御、および、セミクローズ制御でピッキング動作時間に基づき、これらいずれの制御方式を実際のピッキング動作で採用すべきかを選択（４１８）する。ここでは、制御方法選択（４１８）では、フルクローズ制御計算（４０４）と、セミクローズ制御計算部（４１１）で取得したそれぞれの制御方法におけるピッキング動作時間を比較し、短い時間となった方の制御方法を選択する。
【００６３】
そして、制御方法切替（４１９）では、制御方法選択（４１８）によって選択した制御方法（フルクローズ制御またはセミクローズ制御）に切り替える。制御方法切替（４１９）は、実際にはサーボ制御装置３１３に対して選択した制御方法（フルクローズ制御またはセミクローズ制御）のいずれを用いるかを指定することにより実現される。サーボ制御装置３１３は、制御方法切替部４１９で切り替えられた制御方法で動作指令をサーボモータ１に出力する。サーボモータ１は、サーボ制御装置３１３から受信した命令に基づき動作し、ロボットアーム１００の各関節（あるいはさらにハンド１０２）を制御する。
【００６４】
上述の通り、図２のサーボモータ１、エンコーダ１０、１６はロボットアーム１００の各関節に設けられたものを代表して示したものである。従って、本実施例では、ロボットアーム１００は、以上の制御によって選択されたフルクローズ制御またはセミクローズ制御のいずれかによって制御されることになる。
【００６５】
上述のように、エンコーダ１０は、サーボモータ１に取り付けられ、サーボモータ１の実動作状況を監視する。セミクローズ制御で駆動する際は、入力側のエンコーダ１０の出力値を監視して位置制御を行う。すなわち、セミクローズ制御ではロボット各部の位置姿勢の指令値（目標値）を監視しつつロボット各部が制御される。また、エンコーダ１６は、減速機１１の出力側に取り付けられ、減速機の動作状況を監視する。フルクローズ制御で駆動する際は、減速機１１の出力側のエンコーダ１６の出力値を監視して位置制御を行う。すなわち、フルクローズ制御ではロボット各部の位置姿勢の実際値を監視しつつロボット各部が制御されることになる。
【００６６】
図５は、上記の制御を実現すべく、制御装置たるＣＰＵ２０１が実行するプログラムの流れを示したフローチャートである。図５に示す各処理ステップは、ＣＰＵ２０１がプログラム３３０を読み出してプログラム３３０を実行することにより実現される。
【００６７】
ステップＳ１では、カメラ３１０により把持対象のワークを撮影する。ステップＳ２では、ステップＳ１で撮影された画像をＣＰＵ２０１がパターンマッチングなどの画像処理（４０１）を実行する。
【００６８】
ステップＳ３では、ＣＰＵ２０１はステップＳ２にて画像処理（４０１）結果に基づき、ワークの位置特定（４０２）を行い、ワークの位置、すなわちアーム移動目標位置を特定する。
【００６９】
ステップＳ４において、ＣＰＵ２０１はステップＳ３で得られたワークの目標位置に基づき、アーム移動量計算（４０５、４１２）を行い、アームの現在位置からの移動量Ａｌを計算する。
【００７０】
ステップＳ５において、ＣＰＵ２０１はアーム速度計算（４０６、４１３）を行い、フルクローズ制御とセミクローズ制御に制御方法を切り替えて、それぞれの制御方法におけるアーム移動速度を計算する。ここではフルクローズ制御にて制御した場合のアーム移動速度Ａｖｆ、セミクローズ制御にて制御した場合のアーム移動速度Ａｖｓを計算する。これらの移動速度は、フルおよびセミクローズ制御におけるクロック速度、減速機１１のギア比、アーム各部の寸法比などに基づいて計算することができる。
【００７１】
ステップＳ６において、ＣＰＵ２０１は、ステップＳ４で計算された移動量Ａｌに基づき、アーム移動時間計算（４０７、４１４）を行い、フルクローズ制御とセミクローズ制御に制御方法を切り替えて、それぞれの制御方法でのアーム移動時間を計算する。ここでは、フルクローズ制御にて制御した場合のアーム移動時間Ａｔｆと、セミクローズ制御にて制御した場合のアーム移動時間Ａｔｓを計算する。これらのアーム移動時間はステップＳ４で求めたアーム移動量ＡｌをステップＳ５で求めたアーム移動速度ＡｖｆまたはＡｖｓで除することにより取得できる。
【００７２】
さらに、ステップＳ７では、ＣＰＵ２０１は、記録ディスク３３１に記録されたワークサイズＷを、記録ディスクドライブ２０５によって読み出し、記憶（４０３）する。本実施形態では、画像処理によって得たワークの画像からではなく、あらかじめ定められたワークの種別などに応じて記録ディスクドライブ２０５に記録されているワークサイズＷを用いている。
【００７３】
ステップＳ８では、ＣＰＵ２０１は、ステップＳ５で読み出されたワークサイズＷに基づき、ハンド開量計算（４０８、４１５）を行い、フルクローズ制御とセミクローズ制御に制御方法を切り替えて、それぞれの制御方法でのハンド開量を計算する。ここでは、フルクローズ制御にて制御した場合のハンド開量Ｈｆ、セミクローズ制御にて制御した場合のハンド開量Ｈｓを計算する。ここで、ワークサイズバラつきをΔＷ、フルクローズ制御の場合のアーム位置決めバラつきをΔＡｆ、セミクローズの場合のアーム位置決めバラつきをΔＡｓとする。その場合、アームがフルクローズ制御の場合のハンド開量Ｈｆ、およびセミクローズ制御の場合のハンド開量Ｈｓを求める計算式は例えば以下の通りとなる。
Ｈｆ＝Ｗ＋ΔＡｆ＋ΔＷ  …（１）
Ｈｓ＝Ｗ＋ΔＡｓ＋ΔＷ  …（２）
【００７４】
すなわち、本実施例では、必要なハンド開量を定めるのに、それ迄のアーム移動がフルないしセミクローズ制御のいずれで行われるかによって、異なるアーム位置決めバラつきΔＡｆまたはΔＡｓを想定すべきである、との技術思想を採用している。また、ワークサイズＷは実測しておらず、記録ディスクドライブ２０５などから読み出しているため、あらかじめ想定されるワークサイズバラつきΔＷの分を必要なハンド開量に加算している。
【００７５】
続いてステップＳ９では、ＣＰＵ２０１は、ステップＳ８で計算されたフルクローズ制御のハンド開量Ｈｆとセミクローズ制御のハンド開量Ｈｓに基づきハンド把持時間計算（４０９、４１６）を行う。ここでは、フルクローズ制御のハンド把持時間Ｈｔｆと、セミクローズ制御のハンド把持時間Ｈｔｓを計算する。これらハンド把持時間ＨｔｆとＨｔｓは、上記のハンド開量Ｈｆ、Ｈｓと、ハンド１０２の駆動系に係る定数から計算することができる。ここで、ハンド１０２の駆動系に係る定数とは、ハンド１０２のサーボモータを制御するクロックの周波数、ハンド１０２の駆動系のギア比などである。
【００７６】
ステップＳ１０では、ＣＰＵ２０１は、ピッキング動作時間計算（４１０、４１７）を行い、フルクローズ制御のピッキング動作時間Ｐｔｆ、セミクローズ制御のピッキング動作時間Ｐｔｓを計算する。ここではステップＳ６で取得したフル、セミクローズ制御のアーム移動時間Ａｔｆ、アーム移動時間Ａｔｓに、ステップＳ９で取得したフルおよびセミクローズ制御のハンド把持時間Ｈｔｆ、ハンド把持時間Ｈｔｓにそれぞれ加算する演算を行う。フルクローズ制御のピッキング動作時間Ｐｔｆ、セミクローズ制御のピッキング動作時間Ｐｔｓは例えば次の計算式により取得することができる。
Ｐｔｆ＝Ａｔｆ＋Ｈｔｆ  …（３）
Ｐｔｓ＝Ａｔｓ＋Ｈｔｓ  …（４）
【００７７】
ステップＳ１１では、ＣＰＵ２０１は制御方法選択（４１８）を行う。すなわち、ステップＳ１０にて計算されたフルクローズ制御のピッキング動作時間Ｐｔｆと、セミクローズ制御のピッキング動作時間Ｐｔｓを比較する。そして、フルクローズ制御のピッキング動作時間Ｐｔｆの方が短い場合、制御方式としてフルクローズ制御を選択し、セミクローズ制御のピッキング動作時間Ｐｔｓの方が短い場合、制御方式としてセミクローズ制御を選択する。ただし、制御方式を自動的に選択する他、例えば上記のようにして計算したピッキング動作時間Ｐｔｆ、Ｐｔｓをティーチングペンダント３００に表示させるなどして、ユーザに最終選択操作を行わせるようにしてもよい。
【００７８】
ステップＳ１２において、ＣＰＵ２０１は、ステップＳ１１で選択したフルまたはセミクローズ制御のいずれかの制御方式をサーボ制御装置３１３に指定する。これにより、サーボ制御装置３１３は指定された制御方式に応じて、以後サーボモータ１（ないしロボットアーム１００各部のサーボモータ、あるいはさらにハンド１０２のサーボモータ）を制御し、ピッキング動作が行われる。
【００７９】
以上のように、本実施例によれば、ロボットアーム１００の移動量およびハンド１０２の開量に基づき、アーム移動時間、およびハンド把持時間を取得する。その場合、アーム移動時間、およびハンド把持時間は、ロボットアーム１００（あるいはさらにハンド１０２）をフルクローズ制御またはセミクローズ制御した場合についてそれぞれ取得する。そしてロボットアーム１００（あるいはさらにハンド１０２）の制御方式（制御態様）として、フルクローズ制御、セミクローズ制御のうちピッキング動作の所要時間が短かくて済む制御方式を選択でき、ピッキング動作を最適化でき、時間短縮が可能となる。
【００８０】
また、本実施例では、必要なハンド開量を定めるのに、それまでのアーム移動がフルないしセミクローズ制御のいずれで行われるかによって、異なるアーム位置決めバラつきΔＡｆまたはΔＡｓを想定すべきである、との技術思想を採用している。例えば、ワークまでの距離が小さくアーム移動時間がピッキング動作の所要時間中で小さいファクタであるような場合には、相対的にハンド把持時間が大きなファクタを占めるようになる。このようなケースでは、アーム位置に誤差が生じやすく大きなハンド開量を取らなければならないセミクローズ制御の方よりもフルクローズ制御の方が時間短縮には有利である場合があり得る。本実施例ではこのようなケースにも対応でき、フルまたはセミクローズ制御方式から確実にピッキング動作の所要時間の短い制御態様を選択することができる。
【００８１】
また、本実施例ではワークサイズＷを記録ディスクドライブ２０５などから読み出しているため、あらかじめ想定されるワークサイズバラつきΔＷの分を必要なハンド開量に加算する制御を行っている。本実施例では、これらの条件を加味した計算を行った上、ロボットアーム１００（あるいはさらにハンド１０２）の制御方式（制御態様）として、フルクローズ制御、セミクローズ制御のいずれか所要時間が短い制御態様を選択する。従って、本実施例ではよりきめ細かくピッキング動作を最適化でき、時間短縮が可能となる、という優れた効果がある。
【実施例２】
【００８２】
上記の実施例１では、ハンド開量を計算するのに、記録ディスクドライブ２０５などに予め記憶したワークサイズＷを用いている。これに対して、本実施例２では、ワークサイズはカメラ３１０で撮影した画像に対する画像処理を介して取得する例を示す。このようにワークサイズを画像処理を介して実測することにより、ワークサイズバラつき、ワーク位置バラつきを高精度に算出でき、ワーク毎に適切なハンド開量を設定することができ、さらなるピッキング動作時間の短縮を期待できる。
【００８３】
図６は、本実施例２に係るロボット装置の制御系の制御機能ないし制御工程を図４と同様の形式のブロック表現で示したものである。装置のハードウェア構成は上述の実施例１の図１〜図３に示したものと同様で、図６に示した各制御機能ないし各制御工程は、図３のＣＰＵ２０１がプログラム３３０を実行することにより実現される。なお、図６において上述の図４（実施例１）と同様の構成については、同一符号を付してその詳細な説明は省略するものとする。以下、図６の各ブロック表現で示した制御機能ないし制御工程につき説明する。
【００８４】
図６において、図４（実施例１）と異なるのは、ＣＰＵ２０１の画像処理（４０１）において、ワーク位置特定（４０２）とともにワークサイズ算出（４２１）を行なう点にある。このうちワーク位置特定（４０２）処理は実施例１と同様に行われる。ワークサイズ算出（４２１）では、カメラ３１０で取り込まれた画像に対する画像処理、たとえばパターンマッチングなどの処理を介して、カメラ３１０で撮影したワークのワークサイズを算出する。図６の他の制御機能（制御工程）ブロックの構成は図４と同様である。
【００８５】
図７は本実施例の制御を実現すべく、制御装置たるＣＰＵ２０１が実行するプログラムの流れを示したフローチャートである。図７に示す各処理ステップは、ＣＰＵ２０１がプログラム３３０（図３）を読み出してプログラム３３０を実行することにより実現される。
【００８６】
図７のステップＳ２１、Ｓ２２、Ｓ２３の動作は、図５（実施例１）のステップＳ１、Ｓ２、Ｓ３と同様で、カメラ３１０によるワーク撮影、画像処理（４０１）、ワーク位置特定（４０２）を行う。
【００８７】
図７のステップＳ２４において、ＣＰＵ２０１は、ステップＳ２２の画像処理（４０１）に基づきワークサイズ算出（４２１）を行い、ワークサイズＷを算出する。このワークサイズＷは、後述のハンド開量計算などで用いられるが、本実施例ではあらかじめ記憶した値ではなく、カメラ３１０の撮影画像に基づき実測された値である。
【００８８】
続くステップＳ２５、Ｓ２６、Ｓ２７の動作は、図５（実施例１）のステップＳ４、Ｓ５、Ｓ６と同様である。
【００８９】
ステップＳ２５において、ＣＰＵ２０１は、図５のステップＳ４と同様に、画像処理（４０１）から得たワークの目標位置に基づき、アーム移動量計算（４０５、４１２）を行い、アームの現在位置からの移動量Ａｌを計算する。
【００９０】
ステップＳ２６において、ＣＰＵ２０１は図５のステップＳ５と同様に、アーム速度計算（４０６、４１３）を行い、フルクローズ制御とセミクローズ制御に制御方法を切り替えて、それぞれの制御方法におけるアーム移動速度を計算する。ここではフルクローズ制御にて制御した場合のアーム移動速度Ａｖｆ、セミクローズ制御にて制御した場合のアーム移動速度Ａｖｓを計算する。
【００９１】
ステップＳ２７において、ＣＰＵ２０１は、図５のステップＳ６と同様に、ステップＳ４で計算された移動量Ａｌに基づき、アーム移動時間計算（４０７、４１４）を行う。ここでは、フルクローズ制御にて制御した場合のアーム移動時間Ａｔｆと、セミクローズ制御にて制御した場合のアーム移動時間Ａｔｓを計算する。
【００９２】
ステップＳ２８において、ＣＰＵ２０１は、ステップＳ２４で実測したワークサイズＷに基づき、ハンド開量計算（４０８、４１５）を行い、フルクローズ制御とセミクローズ制御に制御方法を切り替え、それぞれの制御方法でのハンド開量を計算する。ここではフルクローズ制御にて制御した場合のハンド開量Ｈｆ、セミクローズ制御にて制御した場合のハンド開量Ｈｓを計算する。本実施例では、カメラ３１０にて撮影した画像よりワークサイズＷを算出するため、ワークサイズバラつきΔＷはハンド開量に影響しないため計算に用いない。ここでフルクローズ制御の場合のアーム位置決めバラつきをΔＡｆ、セミクローズの場合のアーム位置決めバラつきをΔＡｓとする。その場合、フルクローズ制御の場合のハンド開量Ｈｆ、およびセミクローズ制御の場合のハンド開量Ｈｓを求める計算式は例えば以下のようになる。
Ｈｆ＝Ｗ＋ΔＡｆ  …（５）
Ｈｓ＝Ｗ＋ΔＡｓ  …（６）
【００９３】
図７のステップＳ２９〜Ｓ３２の動作は、上述の実施例１のステップＳ９〜Ｓ１２（図５）と同様である。
【００９４】
ステップＳ２９では、図５のステップＳ９と同様に、ＣＰＵ２０１はステップＳ２８で計算されたフルクローズ制御のハンド開量Ｈｆとセミクローズ制御のハンド開量Ｈｓに基づきハンド把持時間計算（４０９、４１６）を行い、ハンド把持時間を計算する。ここでは、フルクローズ制御のハンド把持時間Ｈｔｆと、セミクローズ制御のハンド把持時間Ｈｔｓを計算する。これらのハンド把持時間ＨｔｆとＨｔｓは、上記のハンド開量Ｈｆ、Ｈｓと、ハンド１０２の駆動系に係る上述の諸定数から計算することができる。
【００９５】
ステップＳ３０では、ＣＰＵ２０１は、図５のステップＳ１０と同様に、ピッキング動作時間計算（４１０、４１７）を行い、フルクローズ制御のピッキング動作時間Ｐｔｆ、セミクローズ制御のピッキング動作時間Ｐｔｓを計算する。ここではステップＳ２７で取得したフル、セミクローズ制御のアーム移動時間Ａｔｆ、アーム移動時間Ａｔｓに、ステップＳ２９で取得したフルおよびセミクローズ制御のハンド把持時間Ｈｔｆ、ハンド把持時間Ｈｔｓをそれぞれ加算する演算を行う。フルクローズ制御のピッキング動作時間Ｐｔｆ、およびセミクローズ制御のピッキング動作時間Ｐｔｓを取得する計算式は実施例１中の式（３）および式（４）（図７中にも記載）と同じである。
【００９６】
ステップＳ３１では、図５のステップＳ１１と同様に、ＣＰＵ２０１は制御方法選択（４１８）を行う。すなわち、ステップＳ３０で取得したフルクローズ制御のピッキング動作時間Ｐｔｆと、セミクローズ制御のピッキング動作時間Ｐｔｓを比較する。そして、フルクローズ制御のピッキング動作時間Ｐｔｆの方が短い場合、制御方式としてフルクローズ制御を選択し、セミクローズ制御のピッキング動作時間Ｐｔｓの方が短い場合、制御方式としてセミクローズ制御を選択する。
【００９７】
ステップＳ３２では、図５のステップＳ１２と同様に、ＣＰＵ２０１は、ステップＳ１１で選択したフルまたはセミクローズ制御のいずれかの制御方式をサーボ制御装置３１３に指定する。これにより、サーボ制御装置３１３は指定された制御方式に応じて、以後、サーボモータ１（ないしロボットアーム１００各部のサーボモータ）を制御し、ピッキング動作が行われる。
【００９８】
本実施例の基本的な作用効果は実施例１の最後で述べたものと同様であるため、ここではその記述を繰り返すのは省略するが、上述の実施例１の作用効果に加え、本実施例では次のような作用効果を期待できる。本実施例では、ワーク位置に加え、ワークサイズＷをカメラ３１０で撮影した画像に基づき実測するようにしているため、ワークサイズバラつきやワーク位置バラつきを高精度に算出し、その結果をハンドの開量および把持時間計算に反映させることができる。
【００９９】
すなわち、本実施例によれば、ワークに個体差がある場合でも、個々のワークに応じてワーク毎に適切なハンド開量を設定し、的確な把持が可能である。また、ピッキング動作時間の評価に係る把持時間計算をより正確に実現でき、ピッキング動作時間に基づき適切にフル、ないしセミクローズ制御を選択し、ピッキング動作の所要時間を短縮することができる。
【実施例３】
【０１００】
上述の実施例１および２では、ハンド１０２でワークを把持する時のハンド把持速度については考慮しておらず、その値は一定であることを前提として説明した。
【０１０１】
しかしながら、ロボット制御の分野では、ワークが壊れやすい、などの条件がある場合に、従来よりハンド把持速度を遅くしてワークの破損を防ぐことが行われており、このようにワークの特性によってハンド把持速度を変更しなければならない場合がある。本実施例３では、ワーク（の種類、特性）に応じてハンド把持速度を変える制御を行う場合のピッキング制御につき説明する。
【０１０２】
図８は、本実施例３に係るロボット装置の制御系の制御機能ないし制御工程を図４や図６と同様の形式のブロック表現で示したものである。装置のハードウェア構成は上述の実施例１の図１〜図３に示したものと同様で、図８に示した各制御機能ないし各制御工程は、図３のＣＰＵ２０１がプログラム３３０を実行することにより実現される。なお、図８において上述の図４（実施例１）ないし図６（実施例２）と同様の構成については、同一符号を付してその詳細な説明は省略するものとする。以下、図６の各ブロック表現で示した制御機能ないし制御工程につき説明する。
【０１０３】
図８に示したＣＰＵ２０１の画像処理（４０１）において、ワークサイズ算出（４２１）を行なうのは図６（実施例２）と同様であるが、本実施例ではさらにワーク種類特定（４３１）を行う。このワーク種類特定（４３１）では、例えばカメラ３１０から取り込んだ画像に対する画像処理に基づき、ワークの種類を特定する。ワークの種類は、パターンマッチングなどの処理によりワークの特徴部（例えば特徴的な形状、マークや刻印など）を画像認識することによって特定することができる。
【０１０４】
また、本実施例のＨＤＤ２０４（あるいは他の記憶手段）にはワークの種類に応じた適切なハンド把持速度を記憶（４３２）させておく。従って、ワーク種類特定（４３１）の処理で特定されたワークの種類から、例えば部品番号や型番によってインデックスされ、ＨＤＤ２０４に記憶されているハンド把持速度から、そのワークの種類に適した把持速度の条件を取得することができる。ＨＤＤ２０４から取得したワーク種類に応じた把持速度は、ハンド把持時間計算（後述のステップＳ５１）で用いられる。
【０１０５】
図９は、本実施例の制御を実現すべく、制御装置たるＣＰＵ２０１が実行するプログラムの流れを示したフローチャートである。図９に示す各処理ステップは、ＣＰＵ２０１がプログラム３３０（図３）を読み出してプログラム３３０を実行することにより実現される。
【０１０６】
図９のステップＳ４１、Ｓ４２、Ｓ４３の動作は、図５（実施例１）のステップＳ１、Ｓ２、Ｓ３と同様で、カメラ３１０によるワーク撮影、画像処理（４０１）、ワーク位置特定（４０２）を行う。
【０１０７】
続いてステップＳ４４において、ＣＰＵ２０１は、ステップＳ４２の画像処理（４０１）に基づきワークサイズ算出（４２１）を行い、ワークサイズＷを算出する。このワークサイズＷは、後述のハンド開量計算などで用いられるが、本実施例ではあらかじめ記憶した値ではなく、カメラ３１０の撮影画像に基づき実測された値である。
【０１０８】
図９のステップＳ４５では,ＣＰＵ２０１は、ワーク種類特定（４３１）を行う。ここでは、カメラ３１０から取り込んだ画像に対する画像処理に基づき、ワーク種類を特定する。特定したワーク種類は、例えば部品番号や型番（あるいはこれに類似の情報）など、下記の把持速度をＨＤＤ２０４中から検索できる形式で表現することができる。
【０１０９】
続いて、ステップＳ４６ではステップＳ４５で特定したワーク種類に基づき、ＨＤＤ２０４にワーク毎に記録されているハンド把持速度から特定したワークで用いるのに適切なハンド把持速度Ｈｖ’を読み込む。
【０１１０】
続くステップＳ４７、Ｓ４８、Ｓ４９の動作は、図５（実施例１）のステップＳ４、Ｓ５、Ｓ６と同様である。まず、ステップＳ４７において、図５のステップＳ４と同様に、ＣＰＵ２０１はステップＳ４３で得られたワークの目標位置に基づき、アーム移動量計算（４０５、４１２）を行い、アームの現在位置からの移動量Ａｌを計算する。
【０１１１】
続いてステップＳ４８において、ＣＰＵ２０１は、図５のステップＳ５と同様に、アーム速度計算（４０６、４１３）を行い、フルクローズ制御とセミクローズ制御に制御方法を切り替えて、それぞれの制御方法におけるアーム移動速度を計算する。ここではフルクローズ制御にて制御した場合のアーム移動速度Ａｖｆ、セミクローズ制御にて制御した場合のアーム移動速度Ａｖｓを計算する。これらの移動速度は、フルおよびセミクローズ制御におけるクロック速度、減速機１１のギア比、アーム各部の寸法比などに基づいて計算することができる。
【０１１２】
さらに、ステップＳ４９において、ＣＰＵ２０１は、図５のステップＳ６と同様に、ステップＳ４７で計算された移動量Ａｌに基づき、アーム移動時間計算（４０７、４１４）を行う。ここでは、フルクローズ制御、およびセミクローズ制御の各制御態様におけるアーム移動時間を計算する。ここでは、フルクローズ制御にて制御した場合のアーム移動時間Ａｔｆと、セミクローズ制御にて制御した場合のアーム移動時間Ａｔｓを計算する。これらのアーム移動時間は、ステップＳ４７で求めたアーム移動量ＡｌをステップＳ４８で求めたアーム移動速度ＡｖｆまたはＡｖｓで除することにより取得できる。
【０１１３】
ステップＳ５０〜Ｓ５４は、図７（実施例２）のステップＳ２８〜Ｓ３２と同様である。まず、ステップＳ５０では、ＣＰＵ２０１は、図７のステップＳ２８と同様に、ステップＳ４４で実測したワークサイズＷに基づき、ハンド開量計算（４０８、４１５）を行う。ここでは、フルクローズ制御にて制御した場合のハンド開量Ｈｆ、セミクローズ制御にて制御した場合のハンド開量Ｈｓを計算する。実施例２と同様に、本実施例でもカメラ３１０にて撮影した画像よりワークサイズＷを算出するため、ワークサイズバラつきΔＷはハンド開量に影響しないため計算に用いない。ここでフルクローズ制御の場合のアーム位置決めバラつきをΔＡｆ、セミクローズの場合のアーム位置決めバラつきをΔＡｓとする。その場合、フルクローズ制御の場合のハンド開量Ｈｆ、およびセミクローズ制御の場合のハンド開量Ｈｓを求める計算式は上述の式（５）および式（６）と同じである。
【０１１４】
ステップＳ５１では、図７のステップＳ２９と同様に、ＣＰＵ２０１はステップＳ５０で計算されたフルクローズ制御のハンド開量Ｈｆとセミクローズ制御のハンド開量Ｈｓに基づきハンド把持時間計算（４０９、４１６）を行い、ハンド把持時間を計算する。ここでは、フルクローズ制御のハンド把持時間Ｈｔｆと、セミクローズ制御のハンド把持時間Ｈｔｓを計算する。これらのハンド把持時間ＨｔｆとＨｔｓは、上記のハンド開量Ｈｆ、Ｈｓと、ハンド１０２の駆動系に係る上述の諸定数から計算することができる。
【０１１５】
なお、ハンド１０２に関してフルないしセミクローズ制御のいずれかを選択できる構成においては、フルないしセミクローズ制御態様のいずれを選択するかについては、実施例１、実施例２と同様にアームと同じ制御態様を選択するものとする。従って、ステップＳ５０の開量計算およびステップＳ５１の把持時間計算においては、ハンド１０２を制御するフルないしセミクローズ制御においてそれぞれ異なる計算条件を用いることができるのも同様である。
【０１１６】
ステップＳ５２では、ＣＰＵ２０１は、図７のステップＳ３０と同様に、ピッキング動作時間計算（４１０、４１７）を行い、フルクローズ制御のピッキング動作時間Ｐｔｆ、セミクローズ制御のピッキング動作時間Ｐｔｓを計算する。ここではステップＳ４９で取得したフル、セミクローズ制御のアーム移動時間Ａｔｆ、アーム移動時間Ａｔｓに、ステップＳ５１で取得したフルおよびセミクローズ制御のハンド把持時間Ｈｔｆ、ハンド把持時間Ｈｔｓをそれぞれ加算する演算を行う。フルクローズ制御のピッキング動作時間Ｐｔｆ、およびセミクローズ制御のピッキング動作時間Ｐｔｓを取得する計算式は実施例１中の式（３）および式（４）（図９中にも記載）と同じである。
【０１１７】
ステップＳ５３では、図７のステップＳ３１と同様に、ＣＰＵ２０１は制御方法選択（４１８）を行う。すなわち、ステップＳ５２で取得したフルクローズ制御のピッキング動作時間Ｐｔｆと、セミクローズ制御のピッキング動作時間Ｐｔｓを比較する。そして、フルクローズ制御のピッキング動作時間Ｐｔｆの方が短い場合、制御方式としてフルクローズ制御を選択し、セミクローズ制御のピッキング動作時間Ｐｔｓの方が短い場合、制御方式としてセミクローズ制御を選択する。
【０１１８】
ステップＳ５４では、図７のステップＳ３２と同様に、ＣＰＵ２０１は、ステップＳ５３で選択したフルまたはセミクローズ制御のいずれかの制御方式をサーボ制御装置３１３に指定する。これにより、サーボ制御装置３１３は指定された制御方式に応じて、以後、サーボモータ１（ないしロボットアーム１００各部のサーボモータ）を制御し、ピッキング動作が行われる。
【０１１９】
本実施例の基本的な作用効果は実施例１の最後で述べたものと同様である。また、ワークサイズＷをカメラ３１０で撮影した画像に基づき実測するようにしているため、ワークに個体差がある場合でも、個々のワークに応じてワーク毎に適切なハンド開量を設定し、的確な把持が可能な点は実施例２と同様である。また、ピッキング動作時間の評価に係る把持時間計算をより正確に実現でき、ピッキング動作時間に基づき適切にフル、ないしセミクローズ制御を選択し、ピッキング動作の所要時間を短縮することができる点も実施例２と同様である。
【０１２０】
さらに、本実施例では、ワーク種類をカメラ３１０で撮影した画像に基づき特定し、そのワーク種類に適したハンド把持速度を用いてハンド把持時間を計算するようにしている。このため、実際に操作されるワークに基づいてハンド把持時間を正確に計算し、ピッキング動作時間の評価を適切に行うことができ、アームを制御する制御態様としてフルまたはセミクローズ制御を適切に選択することができる。例えば、本実施例によれば、実際に操作されるワークに基づいてハンド把持速度が変更となってもアームを制御する制御態様としてフルまたはセミクローズ制御を適切に選択でき、ピッキング動作時間を短縮することができる。
【実施例４】
【０１２１】
上記実施例１〜３では、カメラ３１０によりワーク１０３を撮影し、画像処理に基づき少なくともワーク１０３の位置を特定してアーム移動距離／移動時間を計算していた。
【０１２２】
本実施例では、図１０に示すようにワーク１０３の位置が固定できる場所、例えば図１０中のトレー５０３などにワークを設置する場合を想定する。このようにトレー５０３の位置がある程度、正確に規制されている場合には、カメラ３１０による撮影は必ずしも必要なく、既知のトレー５０３の位置に基づきアーム移動距離／移動時間を計算することができる。以下、本実施例では上記のような構成におけるピッキング動作の制御につき説明する。
【０１２３】
図１０において、ワーク１０３をトレー５０３に載せて位置を固定する構成を採用する場合、例えば後述のハンド開量計算において下記のようなパラメータを考慮する必要がある。例えば、ワーク１０３は、トレー５０３上面の凹部に載置される場合、ワーク位置バラつきΔＸが発生するため、このバラつきを考慮してハンド開量を計算する必要がある。ここでトレーサイズ（上記凹部の幅）をＸとすると、ワーク位置バラつきΔＸの計算式は次のようになる。
ΔＸ＝Ｘ−（Ｗ＋ΔＷ）  …（７）
このワーク位置バラつきΔＸはトレー５０３各部の寸法などに応じて想定すべき最大の値である。
【０１２４】
図１１は、本実施例４に係るロボット装置の制御系の制御機能ないし制御工程を図４、図６、図８などと同様の形式のブロック表現で示したものである。装置のハードウェア構成は上述の実施例１の図１〜図３に示したものと同様である。ただし、本実施例では、制御系の構成に関しては、図３のカメラ３１０とそのインタフェース２０１は必ずしも必要なく、除去することが可能である。その他の本実施例に必要な制御系の構成は図３のものと同様でよい。
【０１２５】
図１１に示した各制御機能ないし各制御工程は、図３のＣＰＵ２０１がプログラム３３０を実行することにより実現される。なお、図１１において上述の図４（実施例１）、図６（実施例２）、図８（実施例３）などと同様の構成については、同一符号を付してその詳細な説明は省略するものとする。以下、図１１の各ブロック表現で示した制御機能ないし制御工程につき説明する。
【０１２６】
図１１に示すように、本実施例ではＨＤＤ２０４（あるいは他の記憶手段）にワーク位置を記憶（４４１）するようにしている。このワーク位置は、図１０のようなトレー５０３を用いる場合、トレー５０３の中心座標などの形式で記憶する。本実施例では、実施例１と同様に記録ディスク３３１などから読み込んだワークサイズＷも記憶（４０３）しておく。図１１の他の制御機能（制御工程）ブロックの構成は図４（あるいは図６、図８）と同様である。
【０１２７】
本実施例において、ＨＤＤ２０４に記憶（４４１）したワーク位置情報はロボットアーム１００の動作目標位置として用いられる。なお、図１０ではトレー５０３を１つしか図示していないが、例えば多数のトレーやパレットを用意してその上に載置（いわゆるパレタイズ）されたワークを順次取り扱うような動作を制御する場合も考えられる。その場合には、ピッキング動作を何回行ったかによって目標位置が変っていくので、ＨＤＤ２０４には複数の目標位置を記録しておき、ピッキング動作の回数に応じて順次、次の目標位置を読み出すようにしても以下の制御を行うことができる。
【０１２８】
図１２は本実施例の制御を実現すべく、制御装置たるＣＰＵ２０１が実行するプログラムの流れを示したフローチャートである。図１２に示す各処理ステップは、ＣＰＵ２０１がプログラム３３０（図３）を読み出してプログラム３３０を実行することにより実現される。
【０１２９】
図１２のステップＳ６１において、ＣＰＵ２０１（図３）は、ＨＤＤ２０４に記憶（４４１）されているワークの位置情報を読み込み、アーム動作の目標位置を特定する。このステップＳ６１は、図５（実施例１）のステップＳ１〜Ｓ３に相当するワーク位置（アーム目標位置）の特定処理である。また、ステップＳ６２では、ＣＰＵ２０１は図５のステップＳ７と同様に、ワークサイズＷを読み出し、記憶（４０３）する。
【０１３０】
図１２のステップＳ６３〜Ｓ６５は、例えば図５（実施例１）のステップＳ４、Ｓ５、Ｓ６と同様である。ただし、本実施例ではアーム目標位置は画像処理に基づき取得したものではなく、上記のようにトレー５０３の位置などを基準として記憶したものである。
【０１３１】
まず、ステップＳ６３において、ＣＰＵ２０１は、ステップＳ６１で取得したワークの目標位置に基づき、アーム移動量計算（４０５、４１２）を行い、アームの現在位置からの移動量Ａｌを計算する。
【０１３２】
ステップＳ６４において、ＣＰＵ２０１は図５のステップＳ５と同様に、アーム速度計算（４０６、４１３）を行う。ここではフルクローズ制御にて制御した場合のアーム移動速度Ａｖｆ、セミクローズ制御にて制御した場合のアーム移動速度Ａｖｓを計算する。
【０１３３】
ステップＳ６５において、ＣＰＵ２０１は、図５のステップＳ６と同様に、ステップＳ４で計算された移動量Ａｌに基づき、アーム移動時間計算（４０７、４１４）を行う。ここでは、フルクローズ制御でアーム移動を制御した場合のアーム移動時間Ａｔｆと、セミクローズ制御でアーム移動を制御した場合のアーム移動時間Ａｔｓを計算する。
【０１３４】
ステップＳ６６において、ＣＰＵ２０１は、ステップＳ６１で取得したワーク位置とステップＳ６２で取得したワークサイズＷに基づきハンド開量計算（４０８、４１５）を行い、それぞれの制御方法において必要なハンド開量を計算する。フルクローズ制御にて制御した場合のハンド開量Ｈｆ、セミクローズ制御にて制御した場合のハンド開量Ｈｓを計算する。ここでトレー５０３に設置した時のワーク位置バラつきを上記のΔＸ、フルクローズ制御の場合のアーム位置決めバラつきをΔＡｆ、セミクローズの場合のアーム位置決めバラつきをΔＡｓとする。その場合、フルクローズ制御の場合のハンド開量Ｈｆ、およびセミクローズ制御の場合のハンド開量Ｈｓを求める計算式は例えば以下のようになる。
Ｈｆ＝Ｗ＋ΔＡｆ＋ΔＸ  …（８）
Ｈｓ＝Ｗ＋ΔＡｓ＋ΔＸ  …（９）
【０１３５】
図１２のステップＳ６７〜Ｓ７０の処理は、図５（実施例１）のステップＳ９〜Ｓ１２、図７（実施例２）のステップＳ２９〜Ｓ３２、図９（実施例３）のステップＳ５１〜Ｓ５４と同等である。
【０１３６】
すなわち、ステップＳ６７ではステップＳ６６で取得したハンド開量からフルおよびセミクローズ制御におけるハンド把持時間Ｈｔｆ、Ｈｔｓをそれぞれ取得する。そして、ステップＳ６８では、フルクローズ制御のピッキング動作時間Ｐｔｆ、セミクローズ制御のピッキング動作時間Ｐｔｓを計算する。ステップＳ６８ではステップＳ６５で取得したフル、セミクローズ制御のアーム移動時間Ａｔｆ、アーム移動時間Ａｔｓに、ステップＳ６７で取得したフルおよびセミクローズ制御のハンド把持時間Ｈｔｆ、ハンド把持時間Ｈｔｓをそれぞれ加算する演算を行う。
【０１３７】
ステップＳ６９では、ステップＳ６８で取得したフルクローズ制御のピッキング動作時間Ｐｔｆと、セミクローズ制御のピッキング動作時間Ｐｔｓを比較する。そしてアームの制御方式として、フル、セミクローズ制御から短い方のピッキング動作時間を持つ制御方式を選択する。ステップＳ７０では、ステップＳ６９で選択したフルまたはセミクローズ制御のいずれかの制御方式をサーボ制御装置３１３に指定する。これにより、サーボ制御装置３１３は指定された制御方式に応じて、以後、サーボモータ１（ないしロボットアーム１００各部のサーボモータ）を制御し、ピッキング動作が行われる。
【０１３８】
本実施例の基本的な作用効果は実施例１の最後で述べたものと同様である。本実施例ではカメラ３１０によるワーク撮影、およびその画像処理が必要なく、その分ハードウェアコストを低減できるとともに、ピッキング動作に必要な総所要時間を短縮することができる。本実施例の制御全体の態様は、実施例１からカメラ３１０によるワーク撮影とその画像処理を除いたものにほぼ相当するため、実施例１よりもさらに高速なピッキング動作を実現することができる。
【０１３９】
また、本実施例によれば、複数の決まった位置にワークがパレタイズされているような状況にも対応できる。すなわち、記憶してあるワーク位置を読み出して利用することにより、例えば１つのピッキング動作ごとに変化していくアーム移動距離に応じて各ピッキング動作の総所要時間を評価することができる。このため、パレタイズ動作などにおいても各ピッキング動作ごとにフルまたはセミクローズ制御のいずれかの制御方式を適切に選択でき、高速なピッキングを実現することができる。
【実施例５】
【０１４０】
上記実施例４では、トレー５０３によってワーク１０３の位置を固定し、例えばトレー５０３中心などの基準位置を用いてアームの動作目標位置を特定していた。
【０１４１】
本実施例５では、ロボットの作業空間中の所定位置に図１３（ａ）に示すような円錐台状の供給台５０１を配置する構成を考える。寸法精度のコントロールが厳密に行える構成であれば供給台５０１は上から下まで同一直径の円筒形状であってもよいが、円錐台状の供給台は、水平面方向の載置位置の誤差を見込む必要はあるがピッキング動作をスムーズに行なえる可能性がある。本実施例ではこのような円錐台状の供給台５０１を考える。
【０１４２】
本実施例では、このような供給台５０１に図１３（ｂ）のように環（リング）状のワーク５０２、５０２…を積み重ねて載置し、ワーク５０２を順次上部からピックアップしていくピッキング動作を行う場合の制御を例示する。
【０１４３】
このような構成によりワーク５０２、５０２…を供給する場合、積み重ねて設置されている環状のワーク５０２の位置を予め記憶しておくことができる。これによりハンドで順次ワーク５０２、５０２…を順次把持し、取り出すピッキング動作において、ピックアップ動作の回数に応じてアーム移動量とハンド開量を計算することができる。
【０１４４】
なお、上述の実施例４までの構成では、アーム移動時間の評価では、アーム移動量は主に水平面内のアーム移動量のみを考慮していたが、本実施例のようなワーク供給方式ではアーム移動量は水平面内のみならず、垂直方向に関しても考慮する必要がある。従って、ワーク位置のバラつきを見込んでアーム移動量を定めるのであれば、水平面内のみならず、垂直方向に関するワーク位置のバラつきを考慮する必要がある。
【０１４５】
ここで、図１３（ａ）に示すような円錐台状の供給台５０１に図１３（ｂ）のように環状のワーク５０２を円錐台状の供給台５０１に載置する場合を考える。この場合、環状のワーク５０２は、内寸が全て同じだったとしても円錐台状の供給台５０１に積み重ねられる度に位置バラつきが発生する。
【０１４６】
従って、本実施例のように円錐台状の供給台５０１を用いる場合には、ワーク５０２載置される高さに応じて生じるバラつきを考慮してハンド開量を計算する必要がある。また、ワーク５０２を順次取り出すピッキング動作を繰り返すと、環状のワーク５０２を取り出す位置が下がっていくため、アーム移動量の変化も考慮する必要がある。
【０１４７】
なお、本実施例において、装置のハードウェアおよび制御系の構成は上述の実施例１の図１〜図３に示したものと同様である。ただし、制御系の構成では、図３のカメラ３１０とそのインタフェース２０１は用いないため除去することが可能である。その他の本実施例に必要な制御系の構成は図３のものと同様でよい。
【０１４８】
図１４は、本実施例５に係るロボット装置の制御系の制御機能ないし制御工程を上述の図４（実施例１）、図６（実施例２）、図８（実施例３）、図１１（実施例４）などと同様の形式のブロック表現で示したものである。図１４において上述の図４（実施例１）、図６（実施例２）、図８（実施例３）、図１１（実施例４）などと同様の構成については、同一符号を付してその詳細な説明は省略するものとする。以下、図１１の各ブロック表現で示した制御機能ないし制御工程につき説明する。
【０１４９】
本実施例５では、あらかじめＨＤＤ２０４などにワーク位置とワークサイズを記憶（４４１、４０３）しておく。このワーク位置とワークサイズは、ＲＡＭ２０３などに配置したカウンタなどにより計数されるピッキング動作回数カウント（４５１）によりインデックスできるよう記憶させておく。
【０１５０】
ＨＤＤ２０４などに配置されるメモリ領域にワーク位置を記憶（４４１）させる場合、例えば図１３（ｂ）のように積層配置されたワーク５０２、５０２…の位置情報、すなわちアームの動作目標位置を順次記憶させる。この位置情報は高さ（例えば図の上下に沿ったＺ軸）方向のアームの移動量を求めるのに用いられる。また、このようなワーク５０２、５０２…の位置情報は、例えばティーチングペンダント３００などを用いて実際に用いるワーク５０２、５０２…の形状、サイズに応じて入力し、ＨＤＤ２０４などに配置されるメモリ領域に記憶させることができる。
【０１５１】
このようなピッキング動作では、例えばピックアップの回数を重ねる度にアームの動作目標位置はその都度取り出されたワーク５０２の厚み分ずつ下方に下る。例えばＨＤＤ２０４などに配置されるメモリ領域には、このような高さ情報としてワーク位置を記憶（４４１）させ、ピッキング動作回数カウント（４５１）値に応じて順次取り出せるようにしておく。また、ワーク５０２、５０２…が全て同じ厚みであるなどの単純な作業では、ワーク位置の記憶（４４１）形式は、ワーク単体の高さ（厚み）と積層数を記録しておく、といったフォーマットであってもよい。
【０１５２】
また、供給台５０１が円錐台のように底部に向けて直径が大きくなる形状の場合、水平面（例えばＸＹ平面）方向に関しては上方に積載されたワークほど位置精度が低くなる。そして、ピッキング動作を重ね、取り出されるワークの位置が下がるに従い、ワークの位置精度が上がっていく。従って、供給台５０１の形状に応じて、高さ情報に応じた水平面方向のワーク位置のバラつきを水平面（ＸＹ平面）方向のアーム移動距離の計算に反映できるよう、ＨＤＤ２０４に記憶しておく。この場合には、高さ情報に基づきインデックスした水平面方向のワーク位置のバラつきを読み出すことができる。
【０１５３】
なお、ピッキング動作回数カウント（４５１）を行うカウンタはピッキング動作の回数をカウントし、その値は回数に応じたワーク位置情報をワーク位置記憶部４４１から読み込むために用いられる。また、供給台のワーク積み重ね可能数をカウント値の上限として保持し、上限値を超えたら０に戻るように制御することも考えられる。
【０１５４】
図１５は、は本実施例の制御を実現すべく、制御装置たるＣＰＵ２０１が実行するプログラムの流れを示したフローチャートである。図１５に示す各処理ステップは、ＣＰＵ２０１がプログラム３３０（図３）を読み出してプログラム３３０を実行することにより実現される。なお、図１５のフローチャートは、図１３のようなワーク供給構造において、ｎ個目のワーク（５０２）をピックアップする時の体裁で記述してある。
【０１５５】
図１５のステップＳ７１において、ＣＰＵ２０１は、ピッキング動作回数カウント（４５１）を行う。ここでは同機能のためにＲＡＭ２０３などの領域に配置されたカウンタに格納されている現在のピッキング動作回数に１を加算して、以下のピッキング処理の内容がｎ個目のワークに対するものに適したものとなるよう制御する。ステップＳ７１では、例えば初回なら０回目に１を足して１回目のピッキングであることを示す。ワークの個数などに応じて定まる上限値に到達している場合には、同カウンタをリセットして処理を終了する。なお、ピッキング動作回数カウント（４５１）に用いるカウンタの初期化や、処理すべきワークの総数などに応じて実行する終了処理については別途不図示のルーチンが用意されているものとする。
【０１５６】
ステップＳ７２において、ＣＰＵ２０１は、ＨＤＤ２０４に記憶されているワークの位置情報を読み込む。ここでは、上記ピッキング動作回数カウント（４５１）の現在の値に基づき、現在のピッキング動作回数に応じたアーム動作の目標位置を特定する。図１３（ｂ）のような載置状態においては、水平方向に関しては例えば供給台５０１の中心などの基準位置をアーム動作目標位置として取得する。また、本実施例では、垂直方向に関してはアーム動作目標位置は、ピッキング動作回数カウント（４５１）の現在の値、および別途記憶したワーク（５０２）の厚み情報などを用いて取得することができる。
【０１５７】
ステップＳ７３において、ＣＰＵ２０１は、ワークサイズＷを取得する。本実施例では、ワークサイズＷは記録ディスク３３１などにあらかじめ記録されているものとし、記録ディスクドライブ２０５から読み出した値を記憶（４０３）する。
【０１５８】
ステップＳ７４において、ＣＰＵ２０１は、アーム移動量計算（４０５、４１２）を行ないピッキング動作回数カウント（４５１）に基づき特定されるｎ回目のピッキングにおけるアーム移動量Ａｌｎを算出する。なお、このアーム移動量Ａｌｎは、厳密には水平方向の移動量と垂直方向の移動量の両方を含む複数のベクトル量などによって表現される。図１３（ｂ）のような載置状況においては、ワーク５０２は最上部のものを順次ピッキングして取り出していくため、ピッキング動作回数ｎが増加するたび移動量Ａｌｎのうち垂直方向の移動量の成分は順次増加していく。
【０１５９】
ステップＳ７５において、ＣＰＵ２０１は、アーム速度計算（４０６、４１３）を行う。ここではフルクローズ制御にて制御した場合のアーム移動速度Ａｖｆ、セミクローズ制御にて制御した場合のアーム移動速度Ａｖｓを計算する。
【０１６０】
ステップＳ７６において、ＣＰＵ２０１は、ステップＳ７４で計算されたｎ回目の移動量Ａｌｎに基づき、ＣＰＵ２０１がアーム移動時間計算部（４０７、４１４）を実行する。ここでは制御方法をフルクローズ制御、セミクローズ制御に切り替え、ｎ回目のそれぞれの制御方法でのアーム移動時間を計算する。ここでは、ｎ回目のフルクローズ制御にて制御におけるアーム移動時間Ａｔｆｎ、ｎ回目のセミクローズ制御におけるアーム移動時間Ａｔｓｎを計算する。これらアーム移動時間は、ステップＳ７４で求めたアーム移動量ＡｌｎをステップＳ７５で求めたアーム移動速度ＡｖｆまたはＡｖｓで除することにより取得できる。
【０１６１】
ステップＳ７７において、ＣＰＵ２０１は、ステップＳ７３で取得したワークサイズＷに基づき、ハンド開量計算（４０８、４１５）を行う。ｎ回目のフルクローズ制御およびセミクローズ制御におけるそれぞれの制御方法でのハンド開量を計算する。ここでは、ｎ回目のフルクローズ制御にて制御した場合のハンド開量Ｈｆｎ、ｎ回目のセミクローズ制御にて制御した場合のハンド開量Ｈｓｎを計算する。例えば、ｎ回目のワーク位置バラつきΔＸｎ、フルクローズ制御の場合のアーム位置決めバラつきΔＡｆ、セミクローズの場合のアーム位置決めバラつきΔＡｓとすると、上記ハンド開量Ｈｆｎおよびハンド開量Ｈｓｎを求める計算式は次のようになる。
Ｈｆｎ＝Ｗ＋ΔＡｆ＋ΔＸｎ  …（１０）
Ｈｓｎ＝Ｗ＋ΔＡｓ＋ΔＸｎ  …（１１）
【０１６２】
ステップＳ７８において、ＣＰＵ２０１は、ハンド把持時間計算（４０９、４１６）を行う。ここでは、ステップＳ７７で取得したハンド開量Ｈｆｎ、Ｈｓｎからｎ回目のフルクローズ制御のハンド把持時間Ｈｔｆｎ、ｎ回目のセミクローズ制御のハンド把持時間Ｈｔｓｎを計算する。
【０１６３】
続いてステップＳ７９において、ＣＰＵ２０１はピッキング動作時間計算（４１０、４１７）を行う。ここでは、ｎ回目のフルクローズ制御のピッキング動作時間Ｐｔｆｎ、ｎ回目のセミクローズ制御のピッキング動作時間Ｐｔｓｎを計算する。ここで、フルクローズ制御におけるピッキング動作時間ＰｔｆｎはステップＳ７６で求めたｎ回目のフルクローズ制御のアーム移動時間ＡtｆｎとステップＳ７８で求めたｎ回目のフルクローズ制御のハンド把持時間Ｈｔｆｎを加算して得る。また、セミクローズ制御におけるピッキング動作時間Ｐｔｓｎは、ステップＳ７６で求めたｎ回目のセミクローズ制御のアーム移動時間Ａtｓｎと、ステップＳ７８で求めたｎ回目のセミクローズ制御のハンド把持時間Ｈｔｓｎを加算して得る。計算式は次のようになる。
Ｐｔｆｎ＝Ａｔｆｎ＋Ｈｔｆｎ  …（１２）
Ｐｔｓｎ＝Ａｔｓｎ＋Ｈｔｓｎ  …（１３）
【０１６４】
ステップＳ８０において、ＣＰＵ２０１は制御方法選択（４１８）を行う。ここでは、ステップＳ７９にて計算されたｎ回目のフルクローズ制御のピッキング動作時間Ｐｔｆｎと、ｎ回目のセミクローズ制御のピッキング動作時間Ｐｔｓｎを比較する。そして、ｎ回目のフルクローズ制御のピッキング動作時間Ｐｔｆｎの方が短い場合はｎ回目の制御方法はフルクローズ制御を選択する。逆にｎ回目のセミクローズ制御のピッキング動作時間Ｐｔｓｎの方が短い場合、ｎ回目の制御方法はセミクローズ制御を選択する。
【０１６５】
ステップＳ８１では、ステップＳ８０で選択したフルまたはセミクローズ制御のいずれかの制御方式をサーボ制御装置３１３に指定する。これにより、サーボ制御装置３１３は指定された制御方式に応じて、以後、サーボモータ１（ないしロボットアーム１００各部のサーボモータ）を制御し、ピッキング動作が行われる。
【０１６６】
本実施例の基本的な作用効果は実施例１の最後で述べたものと同様である。さらに、本実施例は、複数回のピッキング動作を行い、例えば図１３に示したようなワーク供給方式によって、ワーク位置やハンド開量がピッキングごとに変化するような制御にも対応できる。本実施例では、毎回のピッキング動作ごとに変動しうるピッキング動作の総所要時間をそれぞれ評価して、所要時間短縮に有利なフルクローズ制御態様、またはセミクローズ制御態様をアーム移動制御態様として選択することができる。従って、本実施例によれば、例えば図１３（ｂ）のように複数、積層配置されたワークを順次ピッキングする動作においても、各々のピッキング動作で所要時間短縮に有利なフルまたはセミクローズ制御方式のいずれかを選択することができる。
【０１６７】
以上５つの実施例を示したが、いずれの実施例においても、アーム移動の制御態様として、フルクローズ制御とセミクローズ制御の二つの制御モードを選択することを考えた。すなわち、フルクローズ制御またはセミクローズ制御から、ピッキング動作の処理時間が短くて済む方のアーム移動制御態様を選択する。その場合、動作前に、フルクローズ制御とセミクローズ制御のそれぞれについて求めたアーム移動時間とハンド把持時間を加算してピッキング動作の所要時間を取得する。そして、アーム制御態様としてフルクローズ制御またはセミクローズ制御のいずれか所要時間が短いほうの制御方式を選択する。
【０１６８】
上記各実施例は、いずれも、ハンドの把持制御が開始される時点までのアームの制御態様として、フルクローズ制御、セミクローズ制御のいずれを用いたかによってそれぞれハンドの制御条件が異ったものになる、との知見に基づいている。
【０１６９】
例えば、アーム移動をセミクローズ制御で行った場合には、把持開始前に、フルクローズ制御でアームを移動した場合よりも大きなハンド開量が必要になる可能性がある。そして、例えば、アーム移動量が小さく、そのための制御時間がごく短かいようなケースでは、アーム移動をフルクローズ制御により行ない、これによってハンド開量を小さく取って結局、ピッキングの総所要時間を短縮できる可能性がある。
【０１７０】
上記各実施例において、上述のようにして要求されるピッキング動作の態様に応じ、アーム移動の制御態様として、フルクローズ制御とセミクローズ制御のいずれかを選択することにより、ピッキングの総所要時間を短縮することができる。
【０１７１】
なお、以上では、要求されるピッキング動作の態様に応じて、アーム移動の制御態様として、フルクローズ制御とセミクローズ制御のいずれかを選択することを考えた。しかしながら、サーボモータ制御においては、フルおよびセミクローズ制御の他に、いわゆるハイブリッド制御などと呼ばれるフルおよびセミクローズ制御を組合せた制御が知られている。例えば、アーム移動中はセミクローズ制御で制御し、アーム移動停止近傍でフルクローズ制御に切替えるような制御がハイブリッド制御と呼ばれることがある。また、減速機の入力および出力側の両方のエンコーダの出力を適当な態様で組み合わせてサーボ制御を行なう方式もハイブリッド制御、などと呼ばれる場合がある。従って、上述のフルクローズ制御とセミクローズ制御のみならず、サーボモータを制御する任意のモータ制御方式をアーム移動の制御態様の選択対象とすることができる。
【０１７２】
また、ハンドの把持制御、例えばハンド爪などの位置姿勢制御に用いる制御方式については、上記各実施例では実施例３において把持速度の「条件」を選択する点について述べただけで、例えばハンド爪のサーボ制御などの「方式」については考慮していない。
【０１７３】
例えば、ハンドの駆動機構に図２の構成に類似したサーボ制御機構が用いられているのであれば、ハンドの把持制御でもフルクローズ制御とセミクローズ制御の切り換えを行える可能性がある。このような構成においては、上述の実施例と同様の手法でハンドの把持制御でもフルクローズ制御またはセミクローズ制御のいずれかのサーボ制御態様を選択することが考えられる。その場合、フルクローズ制御、セミクローズ制御ごとのハンドの把持時間計算においては、当然ながら両者の制御方式における計算式を用いればよい。
【０１７４】
また、アームの移動制御方式およびハンドの把持制御方式としてフルクローズ制御、セミクローズ制御を選択可能である場合には、アームとハンドで独立して両者の制御方式におけるアーム移動時間およびハンド把持時間を評価する手法が考えられる。この場合には、フルおよびセミクローズ制御をアームとハンドで独立して選択することになる。しかしながら、この場合でもハンド開量などの把持制御条件がアーム移動の態様に依存して定まる点は同じであるから、上記各実施例と同様、ハンド開量などの条件はアーム移動制御に従属して決定すればよい。
【０１７５】
あるいは、上述の実施例と同様にアーム移動の制御方式として、フルないしセミクローズ制御を選択する制御を主とし、ハンドの把持制御方式はアーム移動の制御方式として選択したフルないしセミクローズ制御を選択するような制御も考えられる。
【０１７６】
また、ハンド把持の制御条件に関しては、実施例３で例示したハンド把持速度制御の他にハンド開閉用モータの電流値をフィードバックする電流制御モードなどをハンド把持の制御条件に含めてもよい。
【符号の説明】
【０１７７】
１…サーボモータ（回転モータ）、２…回転軸、１０、１６…エンコーダ、１１…減速機、１００Ａ…ロボット本体、１１１〜１１６…関節、２０１…ＣＰＵ（制御部）、３３０…プログラム、５００…ロボット装置
【図１】
2015182145.tif 000003
【図２】
2015182145.tif 000004
【図３】
2015182145.tif 000005
【図４】
2015182145.tif 000006
【図５】
2015182145.tif 000007
【図６】
2015182145.tif 000008
【図７】
2015182145.tif 000009
【図８】
2015182145.tif 000010
【図９】
2015182145.tif 000011
【図１０】
2015182145.tif 000012
【図１１】
2015182145.tif 000013
【図１２】
2015182145.tif 000014
【図１３】
2015182145.tif 000015
【図１４】
2015182145.tif 000016
【図１５】
2015182145.tif 000017