(57)【要約】【課題】専用のパーツフィーダーを用いる必要の無い技術を提供する。また、パーツフィーダーからパーツを拾い上げる作業の効率を向上できる技術を提供する。【解決手段】ロボットシステムは、パーツを収容するパーツ収容部と複数の振動アクチュエーターとを有するパーツフィーダーと、パーツ収容部からパーツを拾い上げるエンドエフェクターを有するロボットと、を備える。ロボットシステムの制御装置は、ロボット制御部と、パーツフィーダー制御部とを備える。パーツフィーダー制御部は、複数の振動アクチュエーターの制御パラメーターをそれぞれ含む複数の制御コマンドの中から１つ以上の制御コマンドを選択し、選択した制御コマンドをパーツフィーダーに送信することによって、制御コマンドに応じた動作をパーツフィーダーに行わせる。【選択図】図１
2018202599.tif 000002
【特許請求の範囲】
【請求項１】
パーツを収容するパーツ収容部と前記パーツ収容部を振動させる複数の振動アクチュエーターとを有するパーツフィーダーと、前記パーツ収容部からパーツを拾い上げるエンドエフェクターを有するロボットと、を備えるロボットシステムを制御する制御装置であって、
前記パーツフィーダーを制御するパーツフィーダー制御部と、
前記ロボットを制御するロボット制御部と、
を備え、
前記パーツフィーダー制御部は、前記複数の振動アクチュエーターの制御パラメーターをそれぞれ含む複数の制御コマンドの中から１つ以上の制御コマンドを選択し、選択した制御コマンドを前記パーツフィーダーに送信することによって、前記選択した制御コマンドに応じた動作を前記パーツフィーダーに行わせる、制御装置。
【請求項２】
請求項１に記載の制御装置であって、
前記複数の制御コマンドは、前記パーツ収容部内で集合している複数のパーツを分離するセパレーション動作を前記パーツフィーダーに実行させるためのセパレーションコマンドを含む、制御装置。
【請求項３】
請求項２に記載の制御装置であって、
前記複数の制御コマンドは、前記パーツ収容部内のパーツの姿勢を変更する姿勢変更動作を前記パーツフィーダーに実行させるための姿勢変更コマンドを含む、
制御装置。
【請求項４】
請求項３に記載の制御装置であって、
前記セパレーションコマンドと前記姿勢変更コマンドのそれぞれは、前記複数の振動アクチュエーターを振動させるコマンドであり、前記セパレーションコマンドでは、前記姿勢変更コマンドよりも前記振動アクチュエーターの振動継続期間が長く設定されている、制御装置。
【請求項５】
請求項１〜４のいずれか一項に記載の制御装置であって、
前記パーツ収容部内のパーツの画像を撮像するカメラで取得された画像を使用して、前記パーツ収容部内のパーツを認識する画像認識を実行する画像認識部を備え、
前記パーツフィーダー制御部は、前記画像認識の結果を用いて前記複数の制御コマンドの中から１つ以上の制御コマンドを選択して前記パーツフィーダーに送信する、制御装置。
【請求項６】
請求項５に記載の制御装置であって、
前記画像認識部は、前記パーツ収容部のパーツ収容領域を、パーツ補給装置からパーツの補給を受ける補給区画と、前記エンドエフェクターがパーツの拾い上げを行うピッキング区画と、を含む複数の区画に仮想的に区分し、
前記画像認識によって前記ピッキング区画にパーツが存在することが認識された場合には、前記ロボット制御部が、前記認識されたパーツを前記エンドエフェクターによって拾い上げるように前記ロボットを制御し、
前記画像認識によって前記ピッキング区画にパーツが存在しないことが認識された場合には、前記パーツフィーダー制御部が、前記ピッキング区画以外の区画から前記ピッキング区画にパーツを移動させるフィードコマンドを前記パーツフィーダーに送信する、制御装置。
【請求項７】
請求項６に記載の制御装置であって、
前記画像認識によって前記ピッキング区画に拾い上げ不可能なパーツのみが存在することが認識された場合には、前記パーツフィーダー制御部が、前記パーツの姿勢を変更させる姿勢変更コマンドを前記パーツフィーダーに送信する、制御装置。
【請求項８】
請求項６又は７に記載の制御装置であって、
前記複数の区画は、更に、前記補給区画と前記ピッキング区画の間に設けられた中間区画を含み、
前記フィードコマンドは、前記補給区画に存在するパーツを前記中間区画に移動させるとともに、前記中間区画に存在するパーツを前記ピッキング区画に移動させる動作を前記パーツフィーダーに実行させる、制御装置。
【請求項９】
請求項５に記載の制御装置であって、
前記パーツ収容部は、パーツ収容領域と、前記パーツ収容領域の外周に設けられた外周壁とを有し、前記パーツ収容領域の外周部分には、前記エンドエフェクターの把持機構と前記外周壁とが干渉する干渉領域が存在し、
前記パーツフィーダー制御部は、セパレーションコマンドによってパーツの分離を行った後に、前記干渉領域に存在するパーツを前記パーツ収容領域の内部に向けて移動させるセンタリングコマンドを前記パーツフィーダーに送信する、制御装置。
【請求項１０】
請求項９に記載の制御装置であって、
前記画像認識部は、
前記カメラで取得された画像において、各パーツの外縁の複数の箇所に、前記エンドエフェクターの把持機構がパーツを把持するために使用する付加領域を設定する設定処理と、
前記画像において、前記付加領域が他のパーツと重なっていないパーツを把持可能パーツとして認識する認識処理と、
を実行し、
前記ロボット制御部は、前記把持可能パーツを前記エンドエフェクターの前記把持機構で把持して拾い上げるように前記ロボットを制御する、制御装置。
【請求項１１】
請求項１０に記載の制御装置であって、
前記画像認識部は、
前記認識処理の後に、前記画像から前記把持可能パーツを消去することによって前記画像を更新する画像更新処理と、
前記更新された画像を用いて、前記認識処理と前記画像更新処理とを繰り返す処理と、
を実行するとともに、
前記認識処理と前記画像更新処理との繰り返しの際に個々のパーツが前記把持可能パーツとして認識された順番を登録し、
前記ロボット制御部は、前記順番に従って前記パーツを前記エンドエフェクターの前記把持機構で把持して拾い上げるように前記ロボットを制御する、制御装置。
【請求項１２】
請求項６〜８のいずれか一項に記載の制御装置であって、
前記エンドエフェクターは、第１ピックアップ機構と第２ピックアップ機構とを有し、
前記画像認識部は、
前記ピッキング区画内に存在するパーツのうちで、１つのパーツを前記第１ピックアップ機構で拾い上げ可能な第１のピックアップ可能パーツとして認識する処理と、
前記第１のピックアップ可能パーツを前記第１ピックアップ機構で保持した状態において前記第２ピックアップ機構で拾い上げ可能な第２のピックアップ可能パーツを認識する処理と、
を実行する、制御装置。
【請求項１３】
請求項１２に記載の制御装置であって、
前記画像認識部は、前記第２のピックアップ可能パーツを認識する処理において、前記第１のピックアップ可能パーツを前記第１ピックアップ機構で保持した状態において前記第２ピックアップ機構で拾い上げ可能となる１つ以上のパーツに対して、予め定められた計算方法に従ってピックアップコストをそれぞれ計算し、前記ピックアップコストに従って前記第２のピックアップ可能パーツを選択する、制御装置。
【請求項１４】
請求項１〜１３のいずれか一項に記載の制御装置であって、
前記制御パラメーターは、前記振動アクチュエーターに供給する振動信号の周波数と、前記振動信号の振幅と、振動継続時間と、を含む、制御装置。
【請求項１５】
請求項１４に記載の制御装置であって、
前記複数の振動アクチュエーターの制御パラメーターを予め記憶する不揮発性メモリーを有し、
前記不揮発性メモリーに記憶された前記制御パラメーターは、
（ａ）前記複数の振動アクチュエーターそれぞれの振動強度のバランスと、
（ｂ）前記パーツ収容部内に存在するパーツの動きを活発化させることが可能な前記振動信号の周波数と、
（ｃ）前記パーツ収容部内に存在するパーツが前記パーツ収容部の外部に飛び出すことを防止することが可能な前記振動信号の振幅と、
を含む、制御装置。
【請求項１６】
パーツを収容するパーツ収容部と前記パーツ収容部を振動させる複数の振動アクチュエーターとを有するパーツフィーダーと、
前記パーツ収容部からパーツを拾い上げるエンドエフェクターを有するロボットと、
前記パーツフィーダー及び前記ロボットに接続された請求項１〜１５のいずれか一項に記載の制御装置と、
を備えるロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーツ（部品）を取り扱うロボットシステムの制御に関するものである。
【背景技術】
【０００２】
特許文献１には、ロボットがパーツフィーダーからパーツ（部品）を拾い上げて組み立て作業を行う技術が開示されている。この従来技術では、旋回式のパーツフィーダー内のパーツをカメラで撮像し、画像処理によってパーツの有無と位置と姿勢を認識し、その認識結果に従ってロボットがパーツの把握及び組み付け作業を実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭６０−２００３８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、パーツの種類や形状に応じて専用のパーツフィーダーを用いなければならないという問題があった。また、通常のパーツフィーダーは単純な動作しか行えないため、パーツフィーダーからパーツを拾い上げる作業の効率を向上させることが困難な場合があるという問題があった。
【課題を解決するための手段】
【０００５】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態（aspect）として実現することが可能である。
【０００６】
（１）本発明の第１の形態によれば、パーツを収容するパーツ収容部と前記パーツ収容部を振動させる複数の振動アクチュエーターとを有するパーツフィーダーと、前記パーツ収容部からパーツを拾い上げるエンドエフェクターを有するロボットと、を備えるロボットシステムを制御する制御装置が提供される。この制御装置は、前記パーツフィーダーを制御するパーツフィーダー制御部と、前記ロボットを制御するロボット制御部と、を備える。前記パーツフィーダー制御部は、前記複数の振動アクチュエーターの制御パラメーターをそれぞれ含む複数の制御コマンドの中から１つ以上の制御コマンドを選択し、選択した制御コマンドを前記パーツフィーダーに送信することによって、前記選択した制御コマンドに応じた動作を前記パーツフィーダーに行わせる。
この制御装置によれば、振動アクチュエーターの制御パラメーターをそれぞれ含む複数の制御コマンドの中から１つ以上の制御コマンドを選択してパーツフィーダーに送信するので、パーツフィーダーの動作に適した制御パラメーターをパーツフィーダーに送信することができる。この結果、パーツの種類や形状に応じてパーツフィーダーを適切に動作させることが可能となる。或いは、パーツフィーダーからパーツを拾い上げる作業の効率を向上させることが可能となる。
【０００７】
（２）上記制御装置において、前記複数の制御コマンドは、前記パーツ収容部内で集合している複数のパーツを分離するセパレーション動作を前記パーツフィーダーに実行させるためのセパレーションコマンドを含むものとしてもよい。
この制御装置によれば、セパレーションコマンドを用いてパーツを互いに分離することにより、パーツフィーダーからパーツを拾い上げる作業の効率を向上させることが可能である。
【０００８】
（３）上記制御装置において、前記複数の制御コマンドは、前記複数の制御コマンドは、前記パーツ収容部内のパーツの姿勢を変更する姿勢変更動作を前記パーツフィーダーに実行させるための姿勢変更コマンドを含むものとしてもよい。
この制御装置によれば、姿勢変更コマンドを利用してパーツの姿勢を変更することにより、パーツを拾い上げる作業の効率を向上させることが可能である。
【０００９】
（４）上記制御装置において、前記セパレーションコマンドと前記姿勢変更コマンドのそれぞれは、前記複数の振動アクチュエーターを振動させるコマンドであり、前記セパレーションコマンドでは、前記姿勢変更コマンドよりも前記振動アクチュエーターの振動継続期間が長く設定されているものとしてもよい。
この制御装置によれば、セパレーションコマンドでは、姿勢変更コマンドよりも振動アクチュエーターの振動継続期間が長く設定されているので、パーツ同士をうまく分離することが可能である。
【００１０】
（５）上記制御装置は、前記パーツ収容部内のパーツの画像を撮像するカメラで取得された画像を使用して、前記パーツ収容部内のパーツを認識する画像認識を実行する画像認識部を備え、前記パーツフィーダー制御部は、前記画像認識の結果を用いて前記複数の制御コマンドの中から１つ以上の制御コマンドを選択して前記パーツフィーダーに送信するものとしてもよい。
この制御装置によれば、画像認識によってパーツ収容部内のパーツを認識するので、認識された結果に応じた制御コマンドをパーツフィーダーに送信して適切に動作させることが可能である。
【００１１】
（６）上記制御装置において、前記画像認識部は、前記パーツ収容部のパーツ収容領域を、パーツ補給装置からパーツの補給を受ける補給区画と、前記エンドエフェクターがパーツの拾い上げを行うピッキング区画と、を含む複数の区画に仮想的に区分し、前記画像認識によって前記ピッキング区画にパーツが存在することが認識された場合には、前記ロボット制御部が、前記認識されたパーツを前記エンドエフェクターによって拾い上げるように前記ロボットを制御し、前記画像認識によって前記ピッキング区画にパーツが存在しないことが認識された場合には、前記パーツフィーダー制御部が、前記ピッキング区画以外の区画から前記ピッキング区画にパーツを移動させるフィードコマンドを前記パーツフィーダーに送信するものとしてもよい。
この制御装置によれば、パーツ収容領域を、補給区画とピッキング区画とを含む複数の区画に仮想的に区分し、ピッキング区画からパーツを拾い上げるようにしたので、パーツを拾い上げる作業の効率を向上させることが可能である。また、画像認識によってピッキング区画にパーツが存在しないことが認識された場合にピッキング区画以外の区画からピッキング区画にパーツを移動させるので、ピッキング区画にパーツを適切に移動させることが可能となる。
【００１２】
（７）上記制御装置において、前記画像認識によって前記ピッキング区画に拾い上げ不可能なパーツのみが存在することが認識された場合には、前記パーツフィーダー制御部が、前記パーツの姿勢を変更させる姿勢変更コマンドを前記パーツフィーダーに送信するものとしてもよい。
この制御装置によれば、姿勢変更コマンドによって、パーツの姿勢を、拾い上げ不可能な姿勢から拾い上げ可能な姿勢に変更することが可能である。
【００１３】
（８）上記制御装置において、前記複数の区画は、更に、前記補給区画と前記ピッキング区画の間に設けられた中間区画を含み、前記フィードコマンドは、前記補給区画に存在するパーツを前記中間区画に移動させるとともに、前記中間区画に存在するパーツを前記ピッキング区画に移動させる動作を前記パーツフィーダーに実行させるものとしてもよい。
この制御装置によれば、フィードコマンドを用いて、補給区画、中間区画、ピッキング区画の順に、パーツを適切に移動させることが可能である。また、ピッキング区画におけるパーツの拾い上げ作業と、補給区画へのパーツの補給作業とを効率良く行うことが可能である。
【００１４】
（９）上記制御装置において、前記パーツ収容部は、パーツ収容領域と、前記パーツ収容領域の外周に設けられた外周壁とを有し、前記パーツ収容領域の外周部分には、前記エンドエフェクターの把持機構と前記外周壁とが干渉する干渉領域が存在し、前記パーツフィーダー制御部は、セパレーションコマンドによってパーツの分離を行った後に、前記干渉領域に存在するパーツを前記パーツ収容領域の内部に向けて移動させるセンタリングコマンドを前記パーツフィーダーに送信するものとしてもよい。
この制御装置によれば、エンドエフェクターの把持機構と外周壁との干渉を低減できるので、パーツの拾い上げ作業の効率を向上することが可能である。
【００１５】
（１０）上記制御装置において、前記画像認識部は、前記カメラで取得された画像において、各パーツの外縁の複数の箇所に、前記エンドエフェクターの把持機構がパーツを把持するために使用する付加領域を設定する設定処理と、前記画像において、前記付加領域が他のパーツと重なっていないパーツを把持可能パーツとして認識する認識処理と、を実行するものとしてもよい。また、前記ロボット制御部は、前記把持可能パーツを前記エンドエフェクターの前記把持機構で把持して拾い上げるように前記ロボットを制御するものとしてもよい。
この制御装置によれば、エンドエフェクターの把持機構がパーツを把持するために使用する付加領域を考慮して把持可能パーツを認識するので、把持機構で把持できないパーツを把持対象のパーツと認識することを防止することができ、パーツの拾い上げ作業の効率を向上させることが可能である。
【００１６】
（１１）上記制御装置において、前記画像認識部は、前記認識処理の後に、前記画像から前記把持可能パーツを消去することによって前記画像を更新する画像更新処理と、前記更新された画像を用いて、前記認識処理と前記画像更新処理とを繰り返す処理と、を実行するとともに、前記認識処理と前記画像更新処理との繰り返しの際に個々のパーツが前記把持可能パーツとして認識された順番を登録するものとしてもよい。また、前記ロボット制御部は、前記順番に従って前記パーツを前記エンドエフェクターの前記把持機構で把持して拾い上げるように前記ロボットを制御するものとしてもよい。
この制御装置によれば、認識処理と画像更新処理との繰り返しによって、より多数のパーツを把持可能パーツとして認識できるので、パーツの拾い上げ作業の効率を向上させることが可能である。
【００１７】
（１２）上記制御装置において、前記エンドエフェクターは、第１ピックアップ機構と第２ピックアップ機構とを有するものとしてもよい。このとき、前記画像認識部は、前記ピッキング区画内に存在するパーツのうちで、１つのパーツを前記第１ピックアップ機構で拾い上げ可能な第１のピックアップ可能パーツとして認識する処理と、前記第１のピックアップ可能パーツを前記第１ピックアップ機構で保持した状態において前記第２ピックアップ機構で拾い上げ可能な第２のピックアップ可能パーツを認識する処理と、を実行するものとしてもよい。
この制御装置によれば、２つのピックアップ機構を用いてパーツを拾い上げる作業の効率を向上させることが可能である。
【００１８】
（１３）上記制御装置において、前記画像認識部は、前記第２のピックアップ可能パーツを認識する処理において、前記第１のピックアップ可能パーツを前記第１ピックアップ機構で保持した状態において前記第２ピックアップ機構で拾い上げ可能となる１つ以上のパーツに対して、予め定められた計算方法に従ってピックアップコストをそれぞれ計算し、前記ピックアップコストに従って前記第２のピックアップ可能パーツを選択するものとしてもよい。
この制御装置によれば、第２ピックアップ機構でパーツを把持する効率を向上させることが可能である。
【００１９】
（１４）上記制御装置において、前記制御パラメーターは、前記振動アクチュエーターに供給する振動信号の周波数と、前記振動信号の振幅と、振動継続時間と、を含むものとしてもよい。
この制御装置によれば、振動信号の周波数と振幅と振動継続時間に従って、パーツの種類に適した動作をパーツフィーダーに行わせることができるので、パーツの拾い上げ作業の効率を向上させることが可能である。
【００２０】
（１５）上記制御装置は、前記複数の振動アクチュエーターの制御パラメーターを予め記憶する不揮発性メモリーを有し、前記不揮発性メモリーに記憶された前記制御パラメーターは、（ａ）前記複数の振動アクチュエーターそれぞれの振動強度のバランスと、（ｂ）前記パーツ収容部内に存在するパーツの動きを活発化させることが可能な前記振動信号の周波数と、（ｃ）前記パーツ収容部内に存在するパーツが前記パーツ収容部の外部に飛び出すことを防止することが可能な前記振動信号の振幅と、を含むものとしてもよい。
この制御装置によれば、適切な制御パラメーターを予め不揮発性メモリーに記憶しておくので、これらの制御パラメーターを用いてパーツフィーダーを効率的に動作させることができ、パーツの拾い上げ作業の効率を向上させることが可能である。
【００２１】
（１６）本発明の第２の形態は、パーツを収容するパーツ収容部と前記パーツ収容部を振動させる複数の振動アクチュエーターとを有するパーツフィーダーと；前記パーツ収容部からパーツを拾い上げるエンドエフェクターを有するロボットと；前記パーツフィーダー及び前記ロボットに接続された上記制御装置と；を備えるロボットシステムである。
このロボットシステムによっても、パーツの種類や形状に応じてパーツフィーダーを適切に動作させることが可能となる。或いは、パーツフィーダーからパーツを拾い上げる作業の効率を向上させることが可能となる。
【００２２】
本発明は、上記以外の種々の形態で実現することも可能である。例えば、制御装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した一時的でない記録媒体（non-transitory storage medium）等の形態で実現することができる。
【図面の簡単な説明】
【００２３】
【図１】第１実施形態におけるロボットシステムの概念図。
【図２】制御装置の機能を示すブロック図。
【図３】パーツ収容部の平面図。
【図４Ａ】フィードコマンドによるフィード動作を示す説明図。
【図４Ｂ】セパレーションコマンドによるセパレーション動作を示す説明図。
【図４Ｃ】フリップコマンドによるフリップ動作を示す説明図。
【図４Ｄ】センタリングコマンドによるセンタリング動作を示す説明図。
【図５Ａ】パーツ収容領域へのパーツの初回補給の様子を示す説明図。
【図５Ｂ】パーツのセンタリング動作の結果を示す説明図。
【図５Ｃ】パーツのセパレーション動作の結果を示す説明図。
【図５Ｄ】パーツの拾い上げの様子を示す説明図。
【図５Ｅ】パーツのフリップ動作の結果を示す説明図。
【図５Ｆ】パーツの拾い上げの様子を示す説明図。
【図５Ｇ】パーツのフィード動作の結果を示す説明図。
【図５Ｈ】パーツの拾い上げと補給の様子を示す説明図。
【図５Ｉ】パーツの拾い上げの様子を示す説明図。
【図５Ｊ】パーツのフィード動作の様子を示す説明図。
【図５Ｋ】パーツの拾い上げと補給の様子を示す説明図。
【図５Ｌ】パーツの拾い上げの様子を示す説明図。
【図６】第１実施形態におけるパーツフィーダー制御のフローチャート。
【図７】パーツ数とセパレーション時間の関係を示すグラフ。
【図８】第１実施形態におけるロボット制御のフローチャート。
【図９】第２実施形態におけるパーツフィーダー制御のフローチャート。
【図１０】第３実施形態におけるロボットシステムの概念図。
【図１１】第３実施形態におけるパーツフィーダー制御のフローチャート。
【図１２Ａ】パーツ収容領域の外周における干渉領域を示す説明図。
【図１２Ｂ】干渉領域回避のためのセンタリングコマンドの動作を示す説明図。
【図１３Ａ】把持用の付加領域を設けたパーツの画像認識処理の説明図。
【図１３Ｂ】把持可能パーツが消去されるように更新された画像の説明図。
【図１３Ｃ】更に更新された画像の説明図。
【図１３Ｄ】更に更新された画像の説明図。
【図１４Ａ】パーツ座標リストの説明図。
【図１４Ｂ】更新されたパーツ座標リストの説明図。
【図１４Ｃ】更に更新されたパーツ座標リストの説明図。
【図１５】第４実施形態におけるパーツフィーダー制御のフローチャート。
【図１６】バックフィード動作に適した状態を示す説明図。
【図１７】画像認識で得られるプラットフォーム状態の例を示す説明図。
【図１８】第５実施形態におけるロボットシステムの概念図。
【図１９】第５実施形態のエンドエフェクターの説明図。
【図２０Ａ】２つの把持機構で把持可能なパーツの認識処理の説明図。
【図２０Ｂ】２つの把持機構で把持可能なパーツの認識処理の説明図。
【図２０Ｃ】２つの把持機構で把持可能なパーツの認識処理の説明図。
【図２０Ｄ】２つの把持機構で把持可能なパーツの認識処理の説明図。
【図２１】パーツフィーダーの制御パラメーターの初期設定のフローチャート。
【図２２Ａ】パーツの動きを活発化させる振動周波数の説明図。
【図２２Ｂ】パーツをパーツ収容部から飛び出させない振動振幅の説明図。
【図２２Ｃ】検出パーツ数を増加させるフィーダー内パーツ個数の説明図。
【図２２Ｄ】シミュレーションによるパーツ個数の決定処理を示す説明図。
【図２２Ｅ】セパレーション動作の継続時間の説明図。
【発明を実施するための形態】
【００２４】
A. 第１実施形態
図１は、第１実施形態におけるロボットシステムの概念図である。このロボットシステムは、架台７００に設置されており、ロボット１００と、制御装置２００と、ティーチングペンダント３００と、パーツフィーダー４００と、ホッパー５００と、パーツトレイ６００とを備えている。ロボット１００は、架台７００の天板７１０の下に固定されている。パーツフィーダー４００と、ホッパー５００と、パーツトレイ６００は、架台７００のテーブル部７２０に載置されている。ロボット１００は、ティーチングプレイバック方式のロボットである。ロボット１００を用いた作業は、予め作成された教示データに従って実行される。このロボットシステムには、直交する３つの座標軸Ｘ，Ｙ，Ｚで規定されるシステム座標系Σｓが設定されている。図１の例では、Ｘ軸とＹ軸は水平方向であり、Ｚ軸は鉛直上方向である。教示データに含まれる教示点やエンドエフェクタの姿勢は、このシステム座標系Σｓの座標値と各軸回りの角度で表現される。
【００２５】
ロボット１００は、基台１２０と、アーム１３０とを備えている。アーム１３０は、４つの関節Ｊ１〜Ｊ４で順次接続されている。これらの関節Ｊ１〜Ｊ４のうち、３つの関節Ｊ１，Ｊ２，Ｊ４はねじり関節であり、１つの関節Ｊ３は並進関節である。本実施形態では４軸ロボットを例示しているが、１個以上の関節を有する任意のアーム機構を有するロボットを用いることが可能である。
【００２６】
アーム１３０の先端部であるアームエンド１３２には、エンドエフェクター１６０ａが装着されている。図１の例では、エンドエフェクター１６０ａは、パーツを真空吸着する吸着ノズル１６２を有する吸着ピックアップ機構である。アーム１３０には、更に、カメラ１８０が装着されている。このカメラ１８０は、エンドエフェクター１６０ａでパーツを拾い上げる際に、拾い上げるべきパーツを選択する際に使用される。但し、このカメラ１８０は省略可能である。
【００２７】
パーツフィーダー４００は、パーツを収容するパーツ収容部４１０と、パーツ収容部４１０を振動させる振動部４２０とを有する。架台７００の天板７１０の下には、パーツ収容部４１０内のパーツの画像を撮像するためのカメラ４３０が設置されている。
【００２８】
ホッパー５００は、パーツフィーダー４００にパーツを補給するパーツ補給装置である。本明細書において、「ホッパー」という語句は、漏斗形状を有する装置に限らず、パーツを補給する装置を示す用語として使用する。
【００２９】
パーツトレイ６００は、パーツを個別に収容するための多数の凹部を有するトレイである。本実施形態において、ロボット１００は、パーツフィーダー４００のパーツ収容部４１０の中からパーツを拾い上げて、パーツトレイ６００内の適切な位置に収納する作業を実行する。但し、ロボットシステムは、これ以外の他の作業を行う場合にも適用可能である。
【００３０】
制御装置２００は、プロセッサー２１０と、メインメモリー２２０と、不揮発性メモリー２３０と、表示制御部２４０と、表示部２５０と、Ｉ／Ｏインターフェース２６０とを有している。これらの各部は、バスを介して接続されている。プロセッサー２１０は、例えばマイクロプロセッサー又はプロセッサー回路である。制御装置２００は、Ｉ／Ｏインターフェース２６０を介して、ロボット１００と、ティーチングペンダント３００と、パーツフィーダー４００と、ホッパー５００とに接続される。制御装置２００は、更に、Ｉ／Ｏインターフェース２６０を介してカメラ１８０，４３０にも接続される。
【００３１】
制御装置２００の構成としては、図１に示した構成以外の種々の構成を採用することが可能である。例えば、プロセッサー２１０とメインメモリー２２０を図１の制御装置２００から削除し、この制御装置２００と通信可能に接続された他の装置にプロセッサー２１０とメインメモリー２２０を設けるようにしてもよい。この場合には、当該他の装置と制御装置２００とを合わせた装置全体が、ロボット１００の制御装置として機能する。他の実施形態では、制御装置２００は、２つ以上のプロセッサー２１０を有していてもよい。更に他の実施形態では、制御装置２００は、互いに通信可能に接続された複数の装置によって実現されていてもよい。これらの各種の実施形態において、制御装置２００は、１つ以上のプロセッサー２１０を備える装置又は装置群として構成される。
【００３２】
ティーチングペンダント３００は、人間の教示作業者がロボット１００の動作を教示する際に使用するロボット教示装置の一種である。ティーチングペンダント３００は、図示しないプロセッサーとメモリーとを有している。ティーチングペンダント３００を用いた教示により作成される教示データは、制御装置２００の不揮発性メモリー２３０に記憶される。
【００３３】
図２は、制御装置２００の機能を示すブロック図である。制御装置２００のプロセッサー２１０は、不揮発性メモリー２３０に予め記憶された各種のプログラム命令２３１を実行することにより、ロボット制御部２１１と、パーツフィーダー制御部２１２と、ホッパー制御部２１３と、画像認識部２１４と、制御パラメーター設定部２１５の機能をそれぞれ実現する。これらの各部２１１〜２１５の機能については後述する。パーツフィーダー４００は、制御部４２２と、複数の振動アクチュエーター４２４とを有している。複数の振動アクチュエーター４２４は、パーツ収容部４１０（図１）を振動させる振動子である。
【００３４】
不揮発性メモリー２３０は、プログラム命令２３１と教示データ２３５の他に、振動アクチュエーター４２４の制御パラメーター２３２及び制御コマンド２３３と、パーツ座標リスト２３４とを記憶する。制御パラメーター２３２と制御コマンド２３３とパーツ座標リスト２３４については後述する。ロボット制御部２１１とパーツフィーダー制御部２１２とホッパー制御部２１３は、教示データ２３５に従って各部の作業を制御する。
【００３５】
図３は、パーツ収容部４１０の平面図である。パーツ収容部４１０は、パーツ収容領域４１２と、パーツ収容領域４１２の外周に設されてＺ方向に延びる外周壁４１４とを有する。パーツ収容領域４１２は、平坦な略矩形状の領域である。この例では、Ｘ方向がパーツ収容領域４１２の長手方向であり、Ｙ方向がパーツ収容領域４１２の短手方向である。パーツを安定して収容するために、パーツ収容領域４１２の表面は水平に維持されることが好ましい。なお、パーツ収容領域４１２を「プラットフォーム」とも呼ぶ。パーツ収容領域４１２の下方には、複数の振動アクチュエーター４２４ａ〜４２４ｄが設置されている。振動アクチュエーター４２４ａ〜４２４ｄを示す白丸は、パーツ収容領域４１２の下にある振動アクチュエーター４２４ａ〜４２４ｄの平面的な位置を示している。実際には、これらの振動アクチュエーター４２４ａ〜４２４ｄは、パーツ収容領域４１２の下に視認できない状態で設置されている。ここでは、振動アクチュエーターの数は４であり、パーツ収容領域４１２の４つの隅に設置されている。但し、振動アクチュエーターの数は４つに限らず、任意数の振動アクチュエーターを設けるようにしてもよい。
【００３６】
複数の振動アクチュエーター４２４ａ〜４２４ｄの符号の末尾に付された小文字の「ａ」〜「ｄ」は、各振動アクチュエーターを区別するために付した追加的な符号である。エンドエフェクター１６０ａの符号の末尾の「ａ」も、他の実施形態で使用するエンドエフェクターと区別するために付した追加的な符号である。以下の説明において、このような追加的な符号が不要な場合には、「ａ」〜「ｄ」等を省略する。
【００３７】
パーツ収容領域４１２は、仮想的な３つの区画ＲＡ，ＲＢ，ＲＣに区分されている。隣接する区画の間の境界線は、パーツ収容領域４１２の短手方向（Ｙ方向）に平行に設定されることが好ましい。ピッキング区画ＲＡは、エンドエフェクター１６０ａがパーツの拾い上げを行う区画である。補給区画ＲＣは、ホッパー５００からパーツの補給を受ける区画である。中間区画ＲＢは、ピッキング区画ＲＡと補給区画ＲＣの間に設けられた区画である。これらの区画の幅（Ｘ方向の寸法）は、互いに等しく設定されていることが好ましい。具体的には、複数の区画ＲＡ〜ＲＣの幅の平均値を１００％としたときに、各区画の幅は１００％±１０％の範囲にあることが好ましい。
【００３８】
ピッキング区画ＲＡとしては、複数の区画ＲＡ〜ＲＣのうちでロボット１００の作業のタクトタイムが最も短い区画を選択することが好ましい。こうすれば、ロボット１００の作業効率を最も高くすることが可能である。なお、本実施形態において、「タクトタイム」は、ロボット１００が１つのパーツをパーツフィーダー４００から拾い上げてパーツトレイ６００内に収納する作業を複数回繰り返す場合に、１回の作業に要する時間である。通常は、複数の区画ＲＡ〜ＲＣのうちで、パーツトレイ６００に最も近い区画がピッキング区画ＲＡとして選択される。
【００３９】
なお、パーツ収容領域４１２に設ける区画の数は、３に限らず、２としても良く、４以上としても良い。或いは、パーツ収容領域４１２を複数の区画に区分しなくても良い。但し、パーツ収容領域４１２を複数の区画に区分すれば、ロボット１００の作業の効率を向上させることができる。なお、図３の例では複数の区画の境界線を短手方向（Ｘ方向）に平行に設定していたが、この代わりに、複数の区画の境界線を長手方向（Ｙ方向）に平行に設定してもよい。或いは、複数の区画の境界線として、短手方向（Ｘ方向）に平行な境界線と長手方向（Ｙ方向）に平行な境界線をそれぞれ設定してもよい。具体的には、例えば、複数の区画を２×２のチェッカーボード状に配置してもよい。
【００４０】
パーツフィーダー４００は、制御装置２００のパーツフィーダー制御部２１２から送信される各種の制御コマンドに応じて種々の動作を行うことが可能に構成されている。それぞれの制御コマンドは、例えば以下の制御パラメーターを含むものとして構成される。
（１）振動信号の周波数
（２）振動信号の振幅
（３）振動信号の位相
（４）振動継続時間
「振動信号」とは、パーツフィーダー４００の制御部４２２から個々の振動アクチュエーター４２４に与えられる信号であり、この振動信号に応じて個々の振動アクチュエーター４２４が振動する。
【００４１】
振動アクチュエーター４２４の制御パラメーターとしては、それぞれの動作に適した振動信号の波形も存在する。各制御コマンドによって選択される振動信号の波形は、例えば、パーツフィーダー４００の制御部４２２（図２）内の図示しない不揮発性メモリーに予め記憶されている。この場合に、制御部４２２は、制御装置２００から供給された制御コマンドに応じて振動信号の波形を選択する。但し、制御部４２２内に格納されている複数種類の振動信号の波形の中から１つの波形を選択するパラメーターを含む制御コマンドを、制御装置２００からパーツフィーダー４００の制御部４２２に送信するようにしてもよい。
【００４２】
以下では、代表的な制御コマンドとして、フィードコマンドと、セパレーションコマンドと、フリップコマンドと、センタリングコマンドを説明する。なお、振動アクチュエーター４２４の制御パラメーターを「振動パラメーター」とも呼ぶ。
【００４３】
図４Ａは、フィードコマンドによるフィード動作を示す説明図である。複数の振動アクチュエーター４２４ａ〜４２４ｄのうち、白丸の中に黒丸が追加されている振動アクチュエーターはこの動作において振動し、黒丸が追加されていない振動アクチュエーターは振動しない。これは後述する他の動作でも同様である。フィード動作では、パーツ収容領域４１２の長手方向（Ｘ方向）の右端にある２つの振動アクチュエーター４２４ｃ，４２４ｄが振動し、左端にある２つの振動アクチュエーター４２４ａ，４２４ｂは振動しない。また、動作する２つの振動アクチュエーター４２４ｃ，４２４ｄは、同じ位相で振動する。この結果、パーツ収容領域４１２内にあるパーツＰＰは、右から左に向かう方向（−Ｘ方向）に移動する。例えば、フィードコマンドを一回実行することにより、中間区画ＲＢに存在するパーツＰＰがピッキング区画ＲＡに移動し、補給区画ＲＣに存在するパーツＰＰが中間区画ＲＢに移動するようにパーツフィーダー４００を動作させることが可能である。
【００４４】
フィードコマンドに含まれる制御パラメーターは、例えば以下の通りである。
（１）振動信号の周波数：パーツＰＰの動きを活発化させることが可能な周波数（例えばパーツ収容領域４１２の共振周波数）。
（２）振動信号の振幅：パーツＰＰをパーツ収容領域４１２上を滑るように移動させることが可能な振幅。
（３）振動信号の位相：複数の振動アクチュエーター４２４で同位相。
（４）振動継続時間：パーツＰＰを１つの区画から隣の区画に移動させることが可能な時間。
【００４５】
図４Ｂは、セパレーションコマンドによるセパレーション動作を示す説明図である。セパレーション動作では、複数の振動アクチュエーター４２４ａ〜４２４ｄが同時に動作する。また、４つの振動アクチュエーター４２４ａ〜４２４ｄは、同じ位相で振動する。このセパレーション動作では、パーツ収容領域４１２内で集合している複数のパーツＰＰを分離することが可能である。このようなセパレーションコマンドを用いてパーツＰＰを互いに分離することにより、パーツフィーダー４００からパーツを拾い上げる作業の効率を向上させることが可能である。
【００４６】
セパレーションコマンドに含まれる制御パラメーターは、例えば以下の通りである。
（１）振動信号の周波数：パーツＰＰの動きを活発化させることが可能な
周波数（例えばパーツ収容領域４１２の共振周波数）。
（２）振動信号の振幅：パーツＰＰがパーツ収容領域４１２から外部に飛び出さない限度で可能な限り大きな振幅。
（３）振動信号の位相：複数の振動アクチュエーター４２４で同位相。
（４）振動継続時間：中間区画ＲＢに集合したパーツＰＰを複数の区画ＲＡ〜ＲＣにほぼ均一に分散させることが可能な時間。
【００４７】
図４Ｃは、フリップコマンドによるフリップ動作を示す説明図である。フリップ動作では、複数の振動アクチュエーター４２４ａ〜４２４ｄが同時に動作する。また、４つの振動アクチュエーター４２４ａ〜４２４ｄは、同じ位相で振動する。このフリップ動作では、パーツ収容領域４１２内のパーツＰＰを裏返すことが可能である。砂地模様のパーツＰＰｆは表向きのパーツであり、斜線のハッチングが付されたパーツＰＰｂは裏向きのパーツである。フリップ動作は、これらのパーツＰＰを裏返す動作である。
【００４８】
フリップコマンドに含まれる制御パラメーターは、例えば以下の通りである。
（１）振動信号の周波数：パーツＰＰの動きを活発化させることが可能な周波数（例えばパーツ収容領域４１２の共振周波数）。
（２）振動信号の振幅：パーツＰＰがパーツ収容領域４１２から外部に飛び出さない限度で可能な限り大きな振幅。
（３）振動信号の位相：複数の振動アクチュエーター４２４で同位相。
（４）振動継続時間：可能な限り短く、かつ、パーツＰＰが裏返る数が多くなる時間。
フリップコマンドでは、セパレーションコマンドよりも振動継続期間が短く設定されている。すなわち、セパレーションコマンドは、フリップコマンドよりも振動アクチュエーター４２４の振動継続期間が長く設定されている。
【００４９】
フリップコマンドに従って振動アクチュエーター４２４に供給される振動信号の波形は、パーツＰＰを裏返すことが可能な波形とすることが好ましい。
【００５０】
なお、フリップコマンドは、パーツＰＰの姿勢を変更する姿勢変更コマンドの一種である。フリップコマンド以外の姿勢変更コマンドとしては、例えば、パーツＰＰをパーツ収容領域４１２の表面上で回転させるローテーションコマンドを利用することができる。ローテーションコマンドによるローテーション動作では、パーツＰＰが鉛直方向（Ｚ方向）の回りに回転する。例えば、後述する他の実施形態のように、パーツＰＰを把持する把持機構を用いてパーツＰＰを拾い上げるときには、ローテーションコマンドのようなフリップコマンド以外の姿勢変更コマンドが有効な場合がある。姿勢変更コマンドを利用してパーツＰＰの姿勢を変更すれば、パーツＰＰを拾い上げる作業の効率を向上させることが可能である。
【００５１】
セパレーションコマンドと、フリップコマンド等の姿勢変更コマンドと、を利用すれば、パーツを拾い上げる作業の効率を向上させることが可能である。また、セパレーションコマンドでは、フリップコマンド等の姿勢変更コマンドよりも振動アクチュエーターの振動継続期間が長く設定されているので、パーツ同士をうまく分離することが可能である。
【００５２】
図４Ｄは、センタリングコマンドによるセンタリング動作を示す説明図である。センタリング動作では、複数の振動アクチュエーター４２４ａ〜４２４ｄが同時に動作する。図４Ｄのセンタリング動作は、パーツＰＰをパーツ収容領域４１２の長手方向（Ｘ方向）の中心に向けて移動させるので、Ｘ方向の一方の端部にある振動アクチュエーター４２４ａ，４２４ｂが、他方の端部にある振動アクチュエーター４２４ｃ，４２４ｃと１８０度異なる位相で振動する。他のセンタリング動作として、パーツＰＰをパーツ収容領域４１２の短手方向（Ｙ方向）の中心に向けて移動させる動作も可能である。このセンタリング動作では、Ｙ方向の一方の端部にある振動アクチュエーター４２４ａ，４２４ｃは、他方の端部にある振動アクチュエーター４２４ｂ，４２４ｃと１８０度異なる位相で振動する。
【００５３】
センタリングコマンドに含まれる制御パラメーターは、例えば以下の通りである。
（１）振動信号の周波数：パーツＰＰの動きを活発化させるのに適した周波数（例えばパーツ収容領域４１２の共振周波数）。
（２）振動信号の振幅：パーツＰＰがパーツ収容領域４１２から外部に飛び出さない限度で可能な限り大きな振幅。
（３）振動信号の位相：一方の端部にある振動アクチュエーター４２４と、他方の端部にある振動アクチュエーター４２４で逆位相。
（４）振動継続時間：センタリング動作の目的に適した時間。
「センタリング動作の目的」としては、例えば、（ａ）図４Ｂで説明したセパレーション動作の前処理としてパーツＰＰをパーツ収容領域４１２の中央に集合させること、及び、（ｂ）セパレーション動作の後でパーツ収容領域４１２の外周にある干渉領域（第３実施形態で説明する）に存在するパーツＰＰをパーツ収容領域４１２の内部に向けて移動させること、という２つ異なる目的を設定可能である。目的が異なるセンタリング動作の振動継続時間は、それぞれの目的に応じた適切な時間に設定される。
【００５４】
パーツフィーダー制御部２１２は、複数の振動アクチュエーター４２４の制御パラメーターをそれぞれ含む複数の制御コマンドの中から１つ以上の制御コマンドを選択し、選択した制御コマンドをパーツフィーダー４００に送信することによって、選択した制御コマンドに応じた動作をパーツフィーダー４００に行わせる。従って、パーツフィーダー４００の動作に適した制御パラメーターをパーツフィーダー４００に送信することができる。この結果、パーツＰＰの種類や形状に応じてパーツフィーダー４００を適切に動作させることが可能となる。或いは、パーツフィーダー４００からパーツＰＰを拾い上げる作業の効率を向上させることが可能となる。
【００５５】
各制御コマンドに適した制御パラメーターは、ロボット１００によるパーツＰＰの拾い上げ作業を実施する前に、制御パラメーター設定部２１５によって予め設定されて不揮発性メモリー２３０に格納される。このような制御パラメーターの初期設定については、パーツＰＰの拾い上げ作業に関する各種の実施形態の後に説明する。
【００５６】
図５Ａ〜図５Ｈは、ロボット１００によるパーツＰＰの拾い上げ作業において、パーツ収容領域４１２内をパーツが移動する様子を示す説明図である。図５Ａ〜図５Ｈでは、振動アクチュエーター４２４の図示は省略している。
【００５７】
図５Ａは、パーツＰＰがホッパー５００からパーツ収容領域４１２に初めて補給された初期状態を示している。ホッパー５００は、補給区画ＲＣ内に複数のパーツＰＰを補給する。砂地模様が付されたパーツＰＰは表向きのパーツであり、斜線のハッチングが付されたパーツＰＰは裏向きのパーツである。図５Ａの状態でセンタリング動作を行うと、図５Ｂに示すように、パーツＰＰがパーツ収容領域４１２の中央（すなわち中間区画ＲＢ）に集合する。そして、セパレーション動作を行うと、図５Ｃに示すように、パーツＰＰがパーツ収容領域４１２のほぼ全体に分散する。このように、セパレーション動作の前にセンタリング動作を行うことで、パーツＰＰをより均一に分布させることができるが、パーツＰＰの種類や数、投入方法や投入位置によっては、セパレーション動作のみでパーツＰＰを均一に分散させることができる場合がある。このような場合には、センタリング動作を省略してもよい。図５Ｃの状態において、通常は、各区画ＲＡ，ＲＢ，ＲＣ内に、表向きのパーツＰＰｆと裏向きのパーツＰＰｂとが存在する。本実施形態におけるロボット１００の作業は、表向きのパーツＰＰｆを拾い上げてパーツトレイ６００に収納する作業である。表向きパーツＰＰｆと裏向きパーツＰＰｂの検出は、カメラ４３０で取得された画像について、画像認識部２１４が画像認識処理を実行することによって行われる。
【００５８】
図５Ｄは、図５Ｃの状態から、ロボット１００がピッキング区画ＲＡ内に存在する表向きのパーツＰＰｆをすべて拾い上げた状態を示している。次にフリップ動作を行い、裏向きのパーツＰＰｂを表向きにすると図５Ｅの状態となる。なお、図５Ｅでは区画ＲＢ，ＲＣに存在するパーツＰＰは図５Ｄと同じ状態として図を簡略化しているが、実際にはこれらの区画ＲＢ，ＲＣのパーツＰＰもフリップ動作により裏返る。このフリップ動作によって表向きとなったパーツＰＰｆは、ロボット１００によってピッキング区画ＲＡから拾い上げられる。なお、パーツＰＰのフリップ動作と拾い上げ動作は、ピッキング区画ＲＡ内のすべてのパーツＰＰの拾い上げが完了するまで繰り返される。
【００５９】
図５Ｆは、ピッキング区画ＲＡ内のすべてのパーツＰＰの拾い上げが完了した状態を示している。次に、フィード動作を行い、パーツ収容領域４１２内のパーツＰＰをピッキング区画ＲＡの方向に移動させると、図５Ｇの状態となる。このフィード動作は、それぞれの区画ＲＢ，ＲＣからその隣の区画ＲＡ，ＲＢにパーツＰＰを移動させるように実行される。そして、ピッキング区画ＲＡ内に存在するパーツＰＰに関して、図５Ｃ〜図５Ｆで説明したパーツＰＰの拾い上げ動作とフリップ動作が行われ、ピッキング区画ＲＡ内のすべてのパーツＰＰが拾い上げられる。なお、図５Ｇの状態では、補給区画ＲＣにパーツＰＰが存在しないので、ピッキング区画ＲＡにおけるパーツＰＰの拾い上げ動作とフリップ動作に並行して、ホッパー５００から補給区画ＲＣにパーツＰＰを補給してもよい。
【００６０】
図５Ｈは、図５Ｇにおいてピッキング区画ＲＡ内にあった表向きのパーツＰＰｆの拾い上げが終了し、また、補給区画ＲＣにパーツＰＰが補給された状態を示している。図５Ｈの状態からパーツＰＰのフリップ動作と拾い上げ動作を必要に応じて繰り返すことにより、ピッキング区画ＲＡ内に存在するパーツＰＰをすべて拾い上げると、図５Ｉの状態となる。次に、フィード動作を行い、パーツ収容領域４１２内のパーツＰＰをピッキング区画ＲＡの方向に移動させると、図５Ｊの状態となる。そして、ピッキング区画ＲＡ内に存在するパーツＰＰに関して、図５Ｃ〜図５Ｆで説明したパーツＰＰの拾い上げ動作とフリップ動作が行われ、ピッキング区画ＲＡ内のすべてのパーツＰＰが拾い上げられる。なお、図５Ｊの状態では、図５Ｇの状態と同様に、補給区画ＲＣにパーツＰＰが存在しないので、ピッキング区画ＲＡにおけるパーツＰＰの拾い上げ動作とフリップ動作に並行して、ホッパー５００から補給区画ＲＣにパーツＰＰを補給してもよい。
【００６１】
図５Ｋは、図５Ｊにおいてピッキング区画ＲＡ内にあった表向きのパーツＰＰｆの拾い上げが終了し、また、補給区画ＲＣにパーツＰＰが補給された状態を示している。図５Ｋにおいて中間区画ＲＢに存在するパーツＰＰは、図５Ｉで補給区画ＲＣに補給されたパーツである。図５Ｉ及び図５Ｋでそれぞれ補給区画ＲＣに補給されるパーツＰＰの個数は、予め実験的に決定されて不揮発性メモリー２３０内に格納されている。本実施形態において、１回当たりの補給個数は、例えば、図５Ａにおける初回の補給個数の１／２の値に設定される。一般に、パーツ収容領域４１２がN412個（N412は２以上の整数）の区画に区分されている場合に、２回目以降の１回当たりの補給個数は、初回の補給個数の１／（N412−１）の値に設定されることが好ましい。
【００６２】
パーツＰＰの補給個数を一定値とする代わりに、パーツ収容領域４１２から拾い上げられたパーツＰＰの個数を補給個数として使用してもよい。具体的には、前回の補給時から今回の補給時までの間に拾い上げられたパーツＰＰの個数を補給個数としてもよい。こうすれば、補給後にパーツ収容領域４１２に存在するパーツＰＰの個数が一定となるので、拾い上げ作業の効率が向上する。
【００６３】
図５Ｋの状態からパーツＰＰのフリップ動作と拾い上げ動作を必要に応じて繰り返すことにより、ピッキング区画ＲＡ内に存在するパーツＰＰをすべて拾い上げると、図５Ｌの状態となる。図５Ｌ以降は、図５Ｂ〜図５Ｋで説明したものと同様の動作（すなわち、センタリング動作以降の各種の動作）が実行される。こうすることにより、パーツフィーダー４００内にパーツＰＰを適宜補給しながら、パーツＰＰの拾い上げ作業を実行できるので、パーツＰＰの拾い上げ作業を効率良く行うことができる。
【００６４】
図６は、第１実施形態におけるパーツフィーダー制御のフローチャートである。この制御は、特に断らない限り、パーツフィーダー制御部２１２によって実行される。また、図６の制御は、例えば一定時間毎に繰り返し実行される。
【００６５】
図６で使用されるパラメーターは以下の通りである。
nParts：ピッキング区画ＲＡ内での表向きパーツＰＰｆの検出個数。
nPartsBack：ピッキング区画ＲＡ内での裏向きパーツＰＰｂの検出個数。
syncLock：パーツフィーダー制御とロボット制御の同期制御パラメーター。syncLockがtrueの場合にはロボット１００の拾い上げ動作が禁止され、syncLockがfalseの場合にはロボット１００の拾い上げ動作が許可される。
nFeed：フィード動作のカウンター値。
N412：パーツ収容領域４１２の区画数。本実施形態ではN412＝３である。
【００６６】
ステップＳ１１０では、ピッキング区画ＲＡ内での表向きパーツＰＰｆの検出個数nPartsが１以上か否かが判断される。nPartsは、後述するステップＳ２４０で検出される値であり、初期値（デフォールト値）はゼロである。nPartsが１以上の場合には図６の処理を終了し、ロボット１００によるパーツＰＰの拾い上げ動作が実行される。ステップＳ１１０の判断が最初に実行されるときにはnPartsはゼロなので、ステップＳ１２０に進む。ステップＳ１２０では、同期制御パラメーターsyncLockがtrueに設定され、ロボット１００の拾い上げ動作が禁止される。
【００６７】
ステップＳ１３０では、ピッキング区画ＲＡ内での裏向きパーツＰＰｂの検出個数nPartsBackが１以上か否かが判断される。nPartsBackは、後述するステップＳ２５０で検出される値であり、初期値（デフォールト値）はゼロである。nPartsBackが１以上の場合にはステップＳ１４０においてフリップ動作が実行され、後述するステップＳ２４０に進む。換言すれば、画像認識によってピッキング区画ＲＡに拾い上げ不可能なパーツＰＰのみが存在することが認識された場合には、パーツＰＰを裏返すフリップ動作が実行される。ステップＳ１４０では、フリップ動作の代わりに他の種類の姿勢変更動作を行うようにしてもよい。この点については第３実施形態で説明する。なお、ステップＳ１３０の判断が最初に実行されるときにはnPartsBackはゼロであり、ステップＳ１８０に進む。
【００６８】
ステップＳ１８０では、フィード動作のカウンター値nFeedが１以上か否かが判断される。nFeedは、後述するステップＳ２３０で設定され、ステップＳ１６０で変更される値であり、初期値（デフォールト値）はゼロである。nFeedが１以上の場合には、後述するステップＳ１５０に進む。ステップＳ１８０の判断が最初に実行されるときにはnFeedはゼロであり、ステップＳ１９０に進む。
【００６９】
ステップＳ１９０では、ステップＳ１９０以降の処理が初めて実行されるか否かが判断される。初めての場合には、ステップＳ２００に進み、ホッパー５００からパーツフィーダー４００への初回のパーツ補給が実行される。このパーツ補給は、図５Ａで説明した動作であり、ホッパー制御部２１３がホッパー５００に制御コマンドを送信することによって実行される。ステップＳ１９０以降の処理が初めてでない場合には、ステップＳ２００をスキップして、ステップＳ２１０に進む。
【００７０】
ステップＳ２１０では図５Ｂで説明したセンタリング動作が実行され、ステップＳ２２０では図５Ｃで説明したセパレーション動作が実行される。ステップＳ２３０では、nFeedが（N412−１）に設定される。本実施形態ではN412＝３なので、nFeedは２となる。ステップＳ２３０の後は、後述するステップＳ２４０に進む。
【００７１】
ステップＳ１８０に戻り、nFeedが１以上の場合にはステップＳ１５０に進む。nFeedが１以上となるのは、前述した図５Ｆ及び図５Ｉの状態である。この場合には、ステップＳ１５０においてフィード動作が行われ、ステップＳ１６０においてnFeedが１つデクリメントされ、ステップＳ１７０においてパーツ補給が行われる。このパーツ補給は、図５Ｈ及び図５Ｋで説明した動作である。ステップＳ１７０の後は、ステップＳ２４０に進む。なお、ステップＳ１７０は、後述するステップＳ２６０でロボット１００の拾い上げ動作を許可した後に実行しても良い。
【００７２】
ステップＳ２４０では、ピッキング区画ＲＡ内での表向きパーツＰＰｆの個数nPartsが検出される。この検出処理は、カメラ４３０で撮像された画像を使用して、画像認識部２１４がピッキング区画ＲＡ内に存在するパーツＰＰを認識する画像認識を実行することによって行われる。この画像認識は、例えば、表向きパーツＰＰｆと裏向きパーツＰＰｂのテンプレート画像を予め不揮発性メモリー２３０内に格納しておき、カメラ４３０で撮像された画像に対してテンプレートマッチングを実行することによって実現可能である。表向きパーツＰＰｆが検出されると、その検出個数がnPartsの値として設定され、また、検出された表向きパーツＰＰｆの座標がパーツ座標リスト２３４（図２）に登録される。なお、表向きパーツＰＰｆの座標としては、例えば、システム座標系Σｓ（図１）の座標値が使用される。ステップＳ２５０では、ピッキング区画ＲＡ内での裏向きパーツＰＰｂの個数nPartsBackが検出される。この検出処理も、カメラ４３０で撮像された画像を使用して、画像認識部２１４がピッキング区画ＲＡ内に存在するパーツＰＰを認識する画像認識を実行することによって行われる。裏向きパーツＰＰｂが検出されると、その検出個数がnPartsBackの値として設定される。
【００７３】
ステップＳ２６０では、syncLockがfalseに設定され、ロボット１００の拾い上げ動作を許可して図６の処理を終了する。
【００７４】
なお、ステップＳ１９０において初回で無いと判断される場合は、ピックアップ区画ＲＡにおけるパーツの拾い上げ作業が完了した状態にあり、パーツ収容領域４１２内のパーツ個数が少ない状況にある。この場合には、ステップＳ２２０におけるセパレーション動作の時間（「セパレーション時間」と呼ぶ）を、初回にステップＳ２２０を実行する場合のセパレーション時間よりも短縮してもよい。
【００７５】
図７は、パーツ収容領域４１２内のパーツ数とセパレーション時間の関係を示すグラフＧ１，Ｇ２の例を示している。グラフＧ１，Ｇ２は、いずれもパーツ数が少ないほどセパレーション時間を短くする特性を示している。グラフＧ１は上に凸の曲線であり、グラフＧ２は階段状である。パーツ収容領域４１２内のパーツ数は、カメラ４３０（図１）を用いた画像認識処理によって取得可能である。このように、パーツ収容領域４１２内のパーツ数が少ないほどセパレーション時間を短く設定すれば、全体の作業時間を更に短縮できる。
【００７６】
図８は、第１実施形態におけるロボット制御のフローチャートである。この制御は、ロボット制御部２１１によって実行される。また、図８の制御は、例えば一定時間毎に繰り返し実行される。
【００７７】
ステップＳ３１０では、syncLockがtrue（動作禁止）から、false（動作許可）になるまで待機する。ステップＳ３２０では、ロボット１００による拾い上げの対象とするパーツＰＰの座標を、パーツ座標リスト２３４から１つ取り出す。ステップＳ３３０では、エンドエフェクター１６０を用いてパーツＰＰを１つ拾い上げる。ステップＳ３４０では、拾い上げたパーツＰＰを目的位置に移動させる。本実施形態では、目的位置は、パーツトレイ６００内の空き位置である。
【００７８】
図６及び図８で説明した処理手順は一例であり、任意に変更可能である。例えば、パーツＰＰに表裏の区別が無い場合には、図６のステップＳ１４０，Ｓ２５０は省略可能である。また、前述したように、ステップＳ１７０は、ステップＳ２６０の後に実行してもよい。
【００７９】
以上のように、図６の手順によるパーツフィーダー制御と図８の手順によるロボット制御を実行することにより、図５Ａ〜図５Ｌで説明したようにパーツフィーダー４００内にパーツＰＰを適宜補給しながら、パーツＰＰの拾い上げ作業を実行できる。この結果、パーツＰＰの拾い上げ作業を効率良く行うことができる。
【００８０】
なお、上述の説明では、パーツフィーダー制御部２１２は、画像認識部２１４による画像認識の結果を用いて、フリップ動作（ステップＳ１４０）や、フィード動作（ステップＳ１５０）、センタリング動作（ステップＳ２１０）、セパレーション動作（ステップＳ２２０）等の各種の動作をパーツフィーダー４００に行わせていたが、これ以外の動作をパーツフィーダー４００に行わせるようにしてもよい。この場合にも、パーツフィーダー制御部２１２は、カメラ４３０で取得されたパーツ収容部４１０内のパーツＰＰの画像に対する画像認識の結果を用いて、複数の制御コマンドの中から１つ以上の制御コマンドを選択してパーツフィーダーに送信することが好ましい。こうすれば、画像認識によってパーツ収容部４１０内のパーツを認識するので、認識された結果に応じた適切な制御コマンドをパーツフィーダー４００に送信して適切に動作させることが可能である。
【００８１】
B. 第２実施形態
図９は、第２実施形態におけるパーツフィーダー制御のフローチャートである。図６に示した第１実施形態のフローチャートとの違いは、ステップＳ１７０とステップＳ１９０が削除されている点だけであり、他のステップは図６と同一である。
【００８２】
この第２実施形態では、最初にステップＳ２００でパーツの補給が行われると、それらのパーツがすべて拾い上げられるまで新たなパーツが補給されず、パーツ収容領域４１２内のパーツがすべて拾い上げられ後にステップＳ２００において再度補給が実行される。この第２実施形態によっても、第１実施形態とほぼ同様の効果が得られる。
【００８３】
C. 第３実施形態
図１０は、第３実施形態におけるロボットシステムの概念図である。このロボットシステムは、エンドエフェクター１６０ｂを除いて第１実施形態（図１）のロボットシステムと同一である。エンドエフェクター１６０ｂは、把持機構１６４を用いてパーツを把持して拾い上げるグリッパーである。
【００８４】
図１１は、第３実施形態におけるパーツフィーダー制御のフローチャートである。図６に示した第１実施形態のフローチャートとの違いは、ステップＳ２２０とステップＳ２３０の間にステップＳ２２５が追加されている点だけであり、他のステップは図６と同一である。ステップＳ２２０のセパレーション動作が終了した状態では、パーツＰＰがパーツ収容領域４１２内にほぼ均一に分散した状態となる。
【００８５】
図１２Ａは、第３実施形態においてステップＳ２２０のセパレーション動作が終了した状態を示している。個々のパーツＰＰの周囲の３つの凹部は、エンドエフェクター１６０ｂの把持機構１６４によって把持される箇所を示している。但し、把持機構１６４としては、３点で把持する機構の代わりに、２点で把持する機構を使用してもよい。パーツ収容部４１０は、パーツ収容領域４１２の外周に設けられた外周壁４１４を有している。パーツ収容領域４１２の外周部分には、エンドエフェクター１６０ｂの把持機構１６４と外周壁４１４とが干渉する干渉領域Ｒｉｎｔが存在する。干渉領域Ｒｉｎｔに一部又は全部が重なるパーツＰＰは、把持機構１６４と外周壁４１４との物理的な干渉により把持できない可能性がある。そこで、ロボット１００によるパーツＰＰの拾い上げ作業を行う場合には、この干渉領域Ｒｉｎｔに一部又は全部が重なるパーツＰＰが存在しない状態とすることが好ましい。
【００８６】
図１１のステップＳ２２５では、パーツフィーダー制御部２１２がセンタリングコマンドをパーツフィーダー４００に送信してセンタリング動作を実行させる。図１２Ｂは、このセンタリング動作の結果を示しており、図１２Ａにおいて干渉領域Ｒｉｎｔに存在していたパーツＰＰがパーツ収容領域４１２の内部に向けて移動した結果、干渉領域Ｒｉｎｔにに一部又は全部が重なるパーツＰＰが存在しない状態となっている。このセンタリング動作は、図５Ｂで説明したステップＳ２１０におけるセンタリング動作に比べて、振動継続時間が短い値に設定されており、パーツＰＰの移動距離が短い。このようなセンタリング動作を行うようにすれば、エンドエフェクター１６０ｂの把持機構１６４と外周壁４１４との干渉を低減できるので、パーツＰＰの拾い上げ作業の効率を向上させることが可能である。
【００８７】
なお、第３実施形態では、把持機構１６４を用いてパーツＰＰの拾い上げを行うので、以下に説明するように、パーツＰＰの外縁の複数箇所に把持用の付加領域を設定して、パーツＰＰの検出（ステップ２４０の処理）を実行することが好ましい。
【００８８】
図１３Ａは、把持用の付加領域ＡＤを設けたパーツＰＰの画像認識処理の説明図である。ここでは図示の便宜上、ピッキング区画ＲＡのみを図１２Ｂの向きから９０度時計方向に回転した状態で描いており、また、パーツＰＰがすべて表向きであるものと仮定している。なお、干渉領域Ｒｉｎｔは図示を省略している。各パーツＰＰの外縁の３カ所の把持位置には、把持機構１６４が把持する際に必要となる領域が付加領域ＡＤとして点線で示されている。
【００８９】
図１１のステップＳ２４０では、画像認識部２１４は、カメラ４３０で取得された画像において、各パーツＰＰに付加領域ＡＤをそれぞれ設定する設定処理を実行する。また、画像認識部２１４は、各パーツＰＰに対して、パーツ番号を付与する。図１３Ａにおいて各パーツＰＰの中央に描かれた番号はこのパーツ番号を示している。画像認識部２１４は、更に、ピッキング区画ＲＡ内に存在するパーツＰＰのうちで、付加領域ＡＤが他のパーツＰＰと重なっていないパーツＰＰを把持可能パーツとして認識する認識処理を実行する。なお、このときの「他のパーツＰＰ」は、付加領域ＡＤの無い状態のパーツＰＰの外形を意味している。図１３Ａの例では、把持可能パーツは、パーツ番号が１〜５，７，８，１２，１５，１６，１８番の１１個のパーツＰＰである。画像認識部２１４は、把持可能パーツと認識したパーツＰＰをパーツ座標リスト２３４に登録する。
【００９０】
図１４Ａは、パーツ座標リスト２３４の一例を示している。ここでは、図１３Ａに対する画像認識処理によって把持可能パーツとして認識された１１個のパーツＰＰが登録されている。登録内容は、パーツ番号ｎと、その座標値（Ｘｎ，Ｙｎ）である。ロボット制御部２１１は、パーツ座標リスト２３４に登録された把持可能パーツを、エンドエフェクター１６０ｂの把持機構１６４で把持して拾い上げるようにロボット１００を制御する。こうすれば、把持に必要な付加領域ＡＤを考慮して把持可能パーツを認識するので、把持機構１６４で把持できないパーツＰＰを把持対象のパーツと認識することを防止することができ、パーツＰＰの拾い上げ作業の効率を向上させることが可能である。このような付加領域ＡＤを考慮した把持可能パーツの認識は、ピッキング区画ＲＡ内のパーツＰＰのみに対して行うようにしても良く、或いは、パーツ収容領域４１２の全体に対して行っても良い。但し、ピッキング区画ＲＡ内のパーツＰＰのみに対して付加領域ＡＤを考慮した把持可能パーツの認識を行うようにすれば、処理時間を短縮できる。
【００９１】
なお、画像認識部２１４は、図１３Ａにおける認識処理の後に、画像から把持可能パーツを消去することによって画像を更新する画像更新処理を実行するようにしてもよい。図１３Ｂは、こうして更新された画像を示している。この画像では、図１３Ａにおいて把持可能パーツとして認識された１１個のパーツＰＰは消去されており、図示の便宜上、それらの外形が破線で描かれている。画像認識部２１４は、この更新された画像を用いて、図１３Ａで説明した認識処理を再度実行する。図１３Ｂにおいて認識される把持可能パーツは、パーツ番号が６，９，１１，１３，１９番の５個のパーツＰＰである。画像認識部２１４は、再び把持可能パーツと認識したパーツＰＰをパーツ座標リスト２３４に追加登録する。
【００９２】
図１４Ｂは、図１３Ｂに対する画像認識処理によって把持可能パーツとして認識された５個のパーツＰＰが追加登録された状態を示している。画像認識部２１４は、図１３Ｂにおける認識処理の後に、画像から把持可能パーツを消去することによって画像を更新する画像更新処理を実行する。
【００９３】
図１３Ｃは、更新された画像を示している。この画像では、図１３Ｂにおいて把持可能パーツとして認識された５個のパーツＰＰは消去されている。この更新された画像に関しても、上述と同様に、認識処理と画像更新処理とが実行される。なお、図１３Ｃにおいて認識される把持可能パーツは、パーツ番号が１４番の１個のパーツＰＰである。画像認識部２１４は、把持可能パーツと認識したパーツＰＰをパーツ座標リスト２３４に追加登録する。図１４Ｃは、図１３Ｃに対する画像認識処理によって把持可能パーツとして認識された１個のパーツＰＰが追加登録された状態を示している。画像認識部２１４は、図１３Ｃにおける認識処理の後に、画像から把持可能パーツを消去することによって画像を更新する画像更新処理を実行する。図１３Ｄは、こうして更新された画像を示している。
【００９４】
図１３Ｂ〜図１３Ｄに即して説明したように、画像認識部２１４は、認識処理と画像更新処理とを繰り返すとともに、個々のパーツが把持可能パーツとして認識された順番をパーツ座標リスト２３４に登録することが好ましい。この後、ロボット制御部２１１は、パーツ座標リスト２３４に登録された順番に従って、ピッキング区画ＲＡ内のパーツＰＰを把持して拾い上げるようにロボット１００の制御を実行することができる。こうすれば、より多数のパーツＰＰを把持可能パーツとして認識できるので、パーツＰＰの拾い上げ作業の効率を向上させることが可能である。但し、図１３Ｂ〜図１３Ｄで説明した認識処理と画像更新処理の繰り返しを行わず、図１３Ａにおいて認識処理を１回のみ実行するようにしてもよい。
【００９５】
なお、第３実施形態では、図１１のステップＳ１４０において、フリップ動作の代わりに他の種類の姿勢変更動作を行うようにしてもよい。例えば、姿勢変更動作として、パーツＰＰをパーツ収容領域４１２の表面上で回転させるローテーション動作を行うようにしてもよい。こうすれば、把持機構１６４で把持できないパーツＰＰを回転させることによって、パーツＰＰを把持可能な姿勢に変更することができる。このローテーション動作も、拾い上げ不可能なパーツＰＰの姿勢を、拾い上げ可能なパーツＰＰに変更するという意味で、第１実施形態で使用したフリップ動作と共通している。このように、ステップＳ１４０は、一般に、画像認識によってピッキング区画ＲＡに拾い上げ不可能なパーツＰＰのみが存在することが認識された場合に、パーツＰＰの姿勢を変更する姿勢変更動作を実行するステップであると考えることが可能である。
【００９６】
D. 第４実施形態
図１５は、第４実施形態におけるパーツフィーダー制御のフローチャートである。図１１に示した第３実施形態のフローチャートとの違いは、ステップＳ１５０の後にステップＳ１５５が追加されている点だけであり、他のステップは図１１と同一である。ステップＳ１５５では、バックフィード動作が実行される。このバックフィード動作は、ステップＳ１５０で実行したフィード動作と逆方向にパーツを移動させる動作である。このバックフィード動作の時間は、ステップＳ１５０におけるフィード動作の時間よりも短いことが好ましい。
【００９７】
図１６は、バックフィード動作に適した状態を示す説明図である。この例では、ステップＳ１５０のフィード動作によって、パーツＰＰがロボット側の端部領域ＥＡ（ハッチングを付して示す）に偏存する状態となっている。このような状態では、ロボットによる拾い上げ作業に適さないパーツＰＰの割合が大きくなっているので、ホッパー側にバックフィードすることによって、拾い上げ作業に適した状態とすることが可能である。
【００９８】
なお、画像認識処理の結果を利用して、ステップＳ１５５におけるバックフィード動作の要否やバックフィード時間を判断するようにしてもよい。この判断は、例えば、次式に従って算出されるパーツの偏在率Ｒｕを用いて行うことが可能である。
Ｒｕ＝Ｓｐ／Ｓｅ        …（１）
ここで、Ｓｐは端部領域ＥＡ内におけるパーツＰＰの面積の合計、Ｓｅは端部領域ＥＡの面積である。例えば、パーツＰＰが黒い画像として認識される場合には、パーツ面積Ｓｐは端部領域ＥＡ内の黒画素の数として算出可能である。
【００９９】
端部領域ＥＡの幅Ｗｅａは、ピックアップ区画ＲＡの幅よりも小さく設定される。例えば、端部領域ＥＡの幅Ｗｅａを、パーツＰＰの幅の１倍〜２倍の範囲の値に設定することが好ましい。なお、図１６の例では、端部領域ＥＡはパーツ収容領域４１２の左側に設定されているが、端部領域ＥＡの位置は、フィード動作におけるパーツＰＰの移動方向に応じて設定される。すなわち、端部領域ＥＡは、パーツ収容領域４１２の４つの辺のうちで、フィード動作の方向の終端となる辺の近傍に設定されることが好ましい。
【０１００】
パーツの偏在率Ｒｕが予め定めされた閾値以上の場合には、図１６に示すようにパーツＰＰが偏在しているので、ステップＳ１５５におけるバックフィード動作を行うことが好ましい。また、バックフィード動作の時間を、偏在率Ｒｕに応じて決定するようにしてもよい。具体的には、偏在率Ｒｕが大きいほどバックフィード時間を長くすることが好ましい。
【０１０１】
なお、パーツの偏在率Ｒｕ以外の画像認識結果を利用して、様々な制御を実行するようにしてもよい。
【０１０２】
図１７は、画像認識で得られる種々のプラットホーム状態の例を示している。「プラットフォーム」とは、パーツ収容領域４１２を意味する。ここでは、以下の７つの状態が例示されている。
【０１０３】
＜状態１：ピック可能状態＞
プラットフォーム内にピックアップ可能な状態でパーツが分散している状態。
＜状態２：空状態＞
プラットフォーム内にパーツが１つも無い状態。
＜状態３：ピック位置偏在状態＞
プラットフォームの端部にパーツが偏在している状態。この状態３は、図１６で説明した状態に相当する。
＜状態４：パーツ残数過大状態＞
パーツの残数が適正数よりも２０％以上多い状態。
＜状態５：パーツ残数過小状態＞
パーツの残数が適正数よりも２０％以上少ない状態。
＜状態６：裏パーツ残数過大状態＞
裏パーツの数が適正数よりも１０％以上多い状態。
＜状態７：ピック可能パーツ無し状態＞
プラットフォーム内にパーツは存在するが、ピックアップすべきパーツが存在せず、他の種類のパーツのみが存在する状態。
【０１０４】
これらの状態は、様々な制御の実行や制御内容の調整に利用可能である。例えば、任意の時点で状態２や状態７が認識された場合には、図１５のステップＳ２００にジャンプして、パーツの補給を行うようにしてもよい。また、状態４又は状態５が認識された場合には、ステップＳ１７０における補給個数を、パーツの残数に応じて変更してもよい。このように、各種の画像認識結果に応じて制御内容を調整するようにすれば、更に作業効率を高めることが可能である。このような画像認識結果に応じた制御内容の調整は、他の実施形態にも適用可能である。また、ステップＳ１５０のフィード動作の後にステップＳ１５５のバックフィード動作を行う点も、他の実施形態に適用可能である。
【０１０５】
E. 第５実施形態
図１８は、第５実施形態におけるロボットシステムの概念図である。このロボットシステムは、エンドエフェクター１６０ｃを除いて第１実施形態（図１）及び第３実施形態（図１０）のロボットシステムと同一である。エンドエフェクター１６０ｃは、２つの把持機構１６４を用いて２個のパーツを把持して拾い上げることが可能なダブルハンドのグリッパーである。
【０１０６】
図１９は、エンドエフェクター１６０ｃの平面図である。このエンドエフェクター１６０ｃは、２つの把持機構１６４ａ，１６４ｂと、上下移動機構１６６ａ，１６６ｂとを有している。把持機構１６４ａ，１６４ｂは、この例では３点でパーツＰＰを把持するグリッパーである。上下移動機構１６６ａ，１６６ｂは、把持機構１６４ａ，１６４ｂを上下方向（Ｚ方向）にそれぞれ移動させて、２つの把持機構１６４ａ，１６４ｂの高さを変更することが可能である。なお、２つの上下移動機構１６６ａ，１６６ｂの一方を省略し、１つの上下移動機構を用いて２つの把持機構１６４ａ，１６４ｂの相対的な高さを変更するようにしてもよい。
【０１０７】
図２０Ａ〜図２０Ｄは、２つの把持機構１６４ａ，１６４ｂで把持可能なパーツＰＰの認識処理を示す説明図である。画像認識部２１４は、まず、第１把持機構１６４ａで把持可能なパーツＰＰ１を認識する（図２０Ａ）。このパーツＰＰ１を「第１の把持可能パーツＰＰ１」と呼ぶ。画像認識部２１４は、次に、第１把持機構１６４ａで第１の把持可能パーツＰＰ１を把持した状態で、第２把持機構１６４ｂの位置を認識する（図２０Ｂ）。この際、画像認識部２１４は、２つの把持機構１６４ａ，１６４ｂの水平方向の位置関係を利用して、第２把持機構１６４ｂの座標及び把持角度（Ｚ軸回りの角度）を算出する。そして、第２把持機構１６４ｂで把持可能なパーツＰＰ２を認識する（図２０Ｃ）。このパーツＰＰ２を「第２の把持可能パーツＰＰ２」と呼ぶ。このように、第１の把持可能パーツＰＰ１を第１把持機構１６４ａで把持した状態において、第２把持機構１６４ｂで把持可能な第２の把持可能パーツＰＰ２を認識する処理を実行すれば、２つの把持機構１６４ａ，１６４ｂを用いてパーツＰＰを拾い上げる作業の効率を向上させることが可能である。
【０１０８】
第２の把持可能パーツＰＰ２としては、第１の把持可能パーツＰＰ１を第１把持機構１６４ａで把持した状態において、第２把持機構１６４ｂで最も把持し易いパーツＰＰを選択することが好ましい。この選択は、例えば、ピックアップコストに応じて行うことが可能である。「ピックアップコスト」は、第１の把持可能パーツＰＰ１を第１把持機構１６４ａで把持した状態において、第２把持機構１６４ｂで把持可能となる１つ以上のパーツＰＰに対して、予め定められた計算方法に従って計算される。
【０１０９】
ピックアップコストの計算方法としては、例えば、以下のような種々のものが考えられる。
（１）ピックアップコストの計算方法１
第１の把持可能パーツＰＰ１を第１把持機構１６４ａで把持した状態（図２０Ａ）から、第２把持機構１６４ｂの近傍にある１つ以上のパーツＰＰについて、第２把持機構１６４ｂで把持するために要するロボット１００の軌跡を算出し、その軌跡の移動に要する時間をピックアップコストとする。
（２）ピックアップコストの計算方法２
第１の把持可能パーツＰＰ１を第１把持機構１６４ａで把持した状態（図２０Ａ）から、第２把持機構１６４ｂの近傍にある１つ以上のパーツＰＰについて、第２把持機構１６４ｂと各パーツＰＰの距離を算出し、その距離をピックアップコストとする。
（３）ピックアップコストの計算方法３
第１の把持可能パーツＰＰ１を第１把持機構１６４ａで把持した状態（図２０Ａ）から、第２把持機構１６４ｂの近傍にある１つ以上のパーツＰＰについて、第２把持機構１６４ｂで把持するために要するエンドエフェクター１６０ｃの回転角度（ねじり関節Ｊ４の回転角度）を算出し、その回転角度をピックアップコストとする。
【０１１０】
図２０Ｃに示した第２の把持可能パーツＰＰ２は、計算方法２で計算したピックアップコストが最小となるパーツである。図２０Ｄに示した第２の把持可能パーツＰＰ２は、計算方法３で計算したピックアップコストが最小となるパーツである。なお、本実施形態のパーツＰＰのように、パーツＰＰを把持するための位置がパーツＰＰの形状に応じて予め決まっている場合には、計算方法１（軌跡基準）又は計算方法３（回転角度基準）が適している。一方、第１実施形態のパーツＰＰように、エンドエフェクター１６０で拾い上げるための位置がパーツＰＰの形状に依存しない場合（例えば吸着ピックアップ機構を使用する場合）には、計算方法１（軌跡基準）又は計算方法２（距離基準）が適している。
【０１１１】
以上のように、第１の把持可能パーツＰＰ１を第１把持機構１６４ａで把持した状態において第２把持機構１６４ｂで把持可能となる１つ以上のパーツＰＰに対して予め定められた計算方法に従ってピックアップコストをそれぞれ計算し、そのピックアップコストに従って第２の把持可能パーツＰＰ２を選択するようにすれば、第２把持機構１６４ｂでパーツを把持する効率を向上させることが可能である。
【０１１２】
上述のような２つの把持可能パーツの選択は、把持機構１６４以外のピックアップ機構（例えば吸着ピックアップ機構）を２つ有するエンドエフェクタ−を備えたロボットにも適用可能である。この場合に、画像認識部２１４は、第１のピックアップ可能パーツＰＰ１を第１ピックアップ機構で保持した状態において、第２ピックアップ機構で拾い上げ可能となる第２のピックアップ可能パーツＰＰ２を認識する処理を実行する。こうすれば、第２ピックアップ機構でパーツを拾い上げる効率を向上させることが可能である。
【０１１３】
F. パーツフィーダーの制御パラメーターの初期設定
図２１は、パーツフィーダー４００の制御パラメーターの初期設定のフローチャートであり、図２２Ａ〜図２２Ｅは、図２１のステップＳ４２０〜Ｓ４５０の処理内容を示す説明図である。この処理は、前述したロボット１００によるパーツＰＰの拾い上げ作業を行う前に実行される。また、この処理は、カメラ４３０でパーツ収容領域４３０内のパーツＰＰの画像を取得し、その画像を制御パラメーター設定部２１５が解析することによって実行される。
【０１１４】
ステップＳ４１０では、複数の振動アクチュエーター４２４の振動強度のバランス調整が行われる。この調整は、パーツ収容領域４１２の傾きや、個々の振動アクチュエーター４２４の特性の差異を補償するために行われる。具体的には、例えば、パーツ収容領域４１２に複数のパーツＰＰを収容し、複数の振動アクチュエーター４２４を同位相で振動させて、個々のパーツＰＰの座標（ＸＹ座標）を取得する。そして、複数のパーツＰＰの座標が偏ること無く、かつ、それらの座標の平均値がパーツ収容領域４１２の中央に来るように、個々の振動アクチュエーター４２４に供給する振動信号の振幅を調整する。こうして調整された振動強度のバランスは、ステップＳ４２０以降も利用される。
【０１１５】
ステップＳ４２０では、パーツＰＰの動きを活発化させることが可能な周波数を検出する。この検出処理では、例えば、パーツ収容領域４１２に１つのパーツＰＰを収容し、所定個数の振動アクチュエーター４２４を振動させて、パーツＰＰの移動量を取得する。そして、パーツＰＰの移動量が最大となる振動信号の周波数を調整する。
【０１１６】
図２２Ａは、ステップＳ４２０における周波数とパーツ活性度（パーツＰＰの移動量）の関係の一例を示している。この例では、グラフのピークにおける周波数Ｆｃが、パーツの動きを活発化させることが可能な周波数として検出される。この周波数Ｆｃは、例えば、パーツ収容領域４１２の共振周波数に等しい値である。こうして決定された適切な周波数は、ステップＳ４３０以降も利用される。
【０１１７】
なお、ステップＳ４２０で使用する振動アクチュエーター４２４の数としては、１以上の任意の数を使用可能である。また、振動アクチュエーター４２４の使用個数と使用箇所の組み合わせ毎に、パーツの動きを活発化させることが可能な周波数を検出するようにしても良い。例えば、パーツフィーダー４００が４つの振動アクチュエーター４２４ａ〜４２４ｄを有しており、その内の１つ、２つ又は４つを使用する場合には、振動アクチュエーター４２４の使用個数と使用箇所の組み合わせの数は、最大で１１通りである。なお、２つ又は４つの振動アクチュエーター４２４を使用する場合には、それらの位相差の値（例えば０度と１８０度）毎にパーツの動きを活発化させることが可能な周波数を検出してもよい。このように、振動アクチュエーター４２４の使用個数と使用箇所の組み合わせ毎に適切な制御パラメーターを設定することが好ましい点は、後述する他の制御パラメーターも同様である。
【０１１８】
ステップＳ４３０では、パーツＰＰの飛び出しを防止することが可能な振幅を検出する。この振幅は、パーツＰＰがパーツ収容領域４１２から外部に飛び出さない限度で可能な限り大きな振幅である。この検出処理では、例えば、パーツ収容領域４１２に複数のパーツＰＰを収容し、複数の振動アクチュエーター４２４を振動させて、パーツＰＰがパーツ収容部４１０から外に飛び出すか否かをカメラ４３０の画像から判定する。この判定を、振動信号の振幅を徐々に増大してゆきながら行い、パーツＰＰの飛び出しが検出されない最大の振幅を求める。
【０１１９】
図２２Ｂは、ステップＳ４３０における振幅とパーツ活性度の関係の一例を示している。この例では、パーツＰＰの飛び出しが検出されない最大の振幅AmaxがパーツＰＰの飛び出しを防止ことが可能な振幅として検出される。こうして決定された適切な振幅は、ステップＳ４４０以降も利用される。
【０１２０】
ステップＳ４４０では、パーツフィーダー４００内の適切なパーツ個数を決定する。この処理では、例えば、パーツ収容領域４１２に多数のパーツＰＰを収容し、セパレーション動作（図４Ｂ）を行った後に、カメラ４３０で取得した画像を解析することによって、拾い上げ可能なパーツＰＰの個数を求める。拾い上げ可能な否かの判定は、パーツＰＰの裏表を無視して行うことが好ましい。この場合に、例えば、他のパーツＰＰと全く重なっていないパーツＰＰが拾い上げ可能と判定される。この処理を、パーツ収容領域４１２に収容するパーツＰＰの個数を順次変更した条件でそれぞれ実行し、拾い上げ可能なパーツ個数が最大となるときのパーツ個数をパーツフィーダー４００内の適切なパーツ個数として決定する。
【０１２１】
図２２Ｃは、ステップＳ４４０におけるパーツフィーダー４００内のパーツ個数と、拾い上げ可能として検出されたパーツ個数との関係の一例を示している。この例では、検出パーツ個数がピークとなるときのパーツフィーダー４００内のパーツ個数がパーツフィーダー４００内の適切なパーツ個数として決定される。こうして決定された適切なパーツ個数は、ステップＳ４５０以降も利用される。なお、第３〜第５実施形態のように、把持機構１６４を用いてパーツＰＰを保持する場合には、図２２Ｃに示すように、パーツＰＰの周囲に把持機構１６４による把持部分を考慮したウィンドウＰＷを設け、このウィンドウＰＷが他のパーツＰＰの外形と重ならないパーツＰＰを「拾い上げ可能なパーツＰＰ」として認識するようにしてもよい。或いは、ウィンドウＰＷの代わりに、第３実施形態で説明した付加領域ＡＤ（図１３Ａ）を使用するようにしてもよい。
【０１２２】
適切なパーツ個数は、実際にパーツをパーツフィーダー４００に投入する実験を行って決定する代わりに、シミュレーションを利用して決定することも可能である。
【０１２３】
図２２Ｄは、シミュレーションによるパーツ個数の決定処理を示す説明図である。この際、まず、カメラ４３０を用いて１個のパーツを撮像し、パーツ画像Ｍｐを切り出す。そして、切り出したパーツ画像Ｍｐを、パーツ収容領域４１２と等しい形状の領域Ｒ４１２内にランダムに配置した画像をシミュレーションにより作成する。そして、このシミュレーション画像を解析することによって、拾い上げ可能なパーツの個数を求める。この処理を、領域Ｒ４１２内のパーツ画像Ｍｐの個数を変更して複数回実行すれば、図２２Ｃと同様の特性をシミュレーションによって得ることができる。そして、検出パーツ個数がピークとなるときのパーツフィーダー４００内のパーツ個数を、パーツフィーダー４００内の適切なパーツ個数として決定することが可能である。このように、シミュレーションを利用して適切なパーツ個数を決定すれば、実験を行う手間を省略することができる。
【０１２４】
ステップＳ４５０では、セパレーションコマンドの制御パラメーターを調整する。この調整処理では、例えば、パーツ収容領域４１２に複数のパーツＰＰを収容し、セパレーションコマンドによるセパレーション動作（図４Ｂ）を行った後に、カメラ４３０で取得した画像を解析することによって、拾い上げ可能なパーツＰＰの個数を求める。拾い上げ可能な否かの判定は、パーツＰＰの裏表を無視して行うことが好ましい。パーツ収容領域４１２に収容するパーツＰＰの個数は、例えば、ステップＳ４４０で決定された適切なパーツ個数とすることが好ましい。この処理を、セパレーション動作の継続時間を順次変更した条件でそれぞれ実行し、拾い上げ可能なパーツ個数が十分に大きく、かつ、セパレーション動作の継続時間が過度に大きくない値を、セパレーション動作の継続時間として決定する。
【０１２５】
図２２Ｅは、ステップＳ４５０におけるセパレーション動作の継続時間と、拾い上げ可能として検出されたパーツ個数との関係の一例を示している。この例では、参考のために、パーツフィーダー４００内のパーツ個数が１３０個と６５個と３３個の３つの場合で得られた結果を示している。これらの例から理解できるように、拾い上げ可能なパーツＰＰの検出個数は、セパレーション動作の継続時間が長くなるほど増加するが、ある程度の継続時間に達するとそれ以降は飽和する。そこで、拾い上げ可能なパーツ個数が十分に大きく、かつ、過度に長くならない継続時間（図２２Ｅで白丸を付した時間）を、セパレーション動作の継続時間として決定することができる。なお、このセパレーション動作の継続時間は、例えば、拾い上げ可能なパーツ個数のピーク値に、予め定めた係数Ｋを乗じた値に達する時間として自動的に決定することが可能である。係数Ｋは、例えば１未満０．９以上の値とすることが好ましい。
【０１２６】
ステップＳ４６０では、干渉領域Ｒｉｎｔ回避のためのセンタリングコマンドの制御パラメーターを調整する。干渉領域Ｒｉｎｔは、第３実施形態において図１２Ａに即して説明したように、パーツ収容領域４１２の外周部分のうちで把持機構１６４と外周壁４１４とが干渉する領域である。この調整処理では、例えば、パーツ収容領域４１２に複数のパーツＰＰを収容し、セパレーション動作（図４Ｂ）を行った後に、干渉領域Ｒｉｎｔのためのセンタリング動作（図１１のステップＳ２２５，図１２Ｂ）を実行し、カメラ４３０で取得した画像を解析することによって、拾い上げ可能なパーツＰＰの個数を求める。拾い上げ可能な否かの判定は、パーツＰＰの裏表を無視して行うことが好ましい。パーツ収容領域４１２に収容するパーツＰＰの個数は、例えば、ステップＳ４４０で決定された適切なパーツ個数とすることが好ましい。この処理を、センタリング動作の継続時間を順次変更した条件でそれぞれ実行し、拾い上げ可能なパーツ個数が十分に大きく、かつ、過度に長くならない継続時間を、干渉領域回避用のセンタリング動作の継続時間として決定する。
【０１２７】
ステップＳ４７０では、フリップコマンドの制御パラメーターを調整する。この調整処理では、例えば、パーツ収容領域４１２に１つのパーツＰＰを収容し、フリップコマンドによるフリップ動作（図４Ｃ）を行った後に、カメラ４３０で取得した画像を解析することによって、パーツＰＰが裏返ったか否かを判定する。この処理を、フリップ動作の継続時間を順次変更した条件でそれぞれ実行し、パーツＰＰが裏返る確率が高く、かつ、過度に長くならない継続時間を、フリップ動作の継続時間として決定する。
【０１２８】
ステップＳ４８０では、フィードコマンドの制御パラメーターを調整する。この調整処理では、例えば、パーツ収容領域４１２に複数のパーツＰＰを収容し、フィードコマンドによるフィード動作（図４Ａ）を行った後に、カメラ４３０で取得した画像を解析することによって、パーツＰＰの移動量を求める。この処理を、フィード動作の継続時間を順次変更した条件でそれぞれ実行し、パーツＰＰの移動量が適切となる時間を、フィード動作の継続時間として決定する。或いは、パーツＰＰの移動速度[mm/sec]を求めることによってフィード動作の継続時間を決定するようにしてもよい。例えば、パーツ収容領域４１２に複数のパーツＰＰを収容し、フィードコマンドによるフィード動作（図４Ａ）を一定時間（例として１秒）行った後に、カメラ４３０で取得した画像を解析することによって、パーツＰＰの移動速度[mm/sec]を求めることができる。そして、移動させたい距離に、この移動速度を掛けることで、フィード動作の継続時間を決定することができる。
【０１２９】
ステップＳ４９０では、ホッパー５００によるパーツ補給条件を決定する。この処理では、例えば、ホッパー５００を一定時間動作させてパーツ収容領域４１２にパーツＰＰを補給し、カメラ４３０で取得した画像を解析することによって、補給されたパーツ個数を求める。この処理を、ホッパー５００の補給時間を順次変更した条件でそれぞれ実行し、パーツＰＰの補給個数が適切となる時間を、ホッパー５００の補給時間として決定する。なお、パーツＰＰの補給個数としては、図６のステップＳ２００における初回の補給個数と、ステップＳ１７０における２回目以降の補給個数の両方を決定することが好ましい。前述したように、パーツ収容領域４１２がN412個（N412は２以上の整数）の区画に区分されている場合には、２回目以降の補給個数は、初回の補給個数の１／（N412−１）の値に設定してもよい。或いは、パーツＰＰの供給速度[pcs/sec]を求めることによってパーツ補給条件を決定するようにしてもよい。例えば、ホッパー５００を一定時間（例として１秒）動作させてパーツ収容領域４１２にパーツＰＰを補給し、カメラ４３０で取得した画像を解析することによって、補給されたパーツ個数を求め、ホッパー５００によるパーツＰＰの供給速度[pcs/sec]を求める。そして、供給したいパーツ数をこの供給速度を除算することで、ホッパー５００の補給時間を求めることができる。
【０１３０】
以上のようにして設定された各種の制御パラメーターは、制御装置２００の不揮発性メモリー２３０（図２）に格納される。また、パーツフィーダー制御部２１２がパーツフィーダー４００に送信する制御コマンドは、このように設定された制御パラメーターのうちで、複数の振動アクチュエーター４２４に関する制御パラメーターを含むように構成される。換言すれば、パーツフィーダー制御部２１２は、複数の振動アクチュエーター４２４の制御パラメーターをそれぞれ含む複数の制御コマンドの中から１つ以上の制御コマンドを選択し、選択した制御コマンドをパーツフィーダー４００に送信することによって、選択した制御コマンドに応じた動作をパーツフィーダー４００に行わせる。こうすれば、パーツフィーダー４００の動作に適した制御パラメーターをパーツフィーダー４００に送信することができる。この結果、パーツＰＰの種類や形状に応じてパーツフィーダー４００を適切に動作させることが可能となる。或いは、パーツフィーダー４００からパーツＰＰを拾い上げる作業の効率を向上させることが可能となる。
【０１３１】
本発明は、上述の実施形態や実施例、変形例に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現することができる。例えば、発明の概要の欄に記載した各形態中の技術的特徴に対応する実施形態、実施例、変形例中の技術的特徴は、上述の課題の一部又は全部を解決するために、あるいは、上述の効果の一部又は全部を達成するために、適宜、差し替えや、組み合わせを行うことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除することが可能である。
【符号の説明】
【０１３２】
１００…ロボット、１２０…基台、１３０…アーム、１３２…アームエンド、１６０ａ〜１６０ｃ…エンドエフェクター、１６２…吸着ノズル、１６４ａ〜１６４ｂ…把持機構、１６６ａ〜１６６ｂ…上下移動機構、１８０…カメラ、２００…制御装置、２１０…プロセッサー、２１１…ロボット制御部、２１２…パーツフィーダー制御部、２１３…ホッパー制御部、２１４…画像認識部、２１５…制御パラメーター設定部、２２０…メインメモリー、２３０…不揮発性メモリー、２３１…プログラム命令、２３２…制御パラメーター、２３３…制御コマンド、２３４…パーツ座標リスト、２３５…教示データ、２４０…表示制御部、２５０…表示部、２６０…Ｉ／Ｏインターフェース、３００…ティーチングペンダント、４００…パーツフィーダー、４１０…パーツ収容部、４１２…パーツ収容領域、４１４…外周壁、４２０…振動部、４２２…制御部、４２４ａ〜４２４ｄ…振動アクチュエーター、４３０…カメラ、５００…ホッパー、６００…パーツトレイ、７００…架台、７１０…天板、７２０…テーブル部
【図１】
2018202599.tif 000003
【図２】
2018202599.tif 000004
【図３】
2018202599.tif 000005
【図４Ａ】
2018202599.tif 000006
【図４Ｂ】
2018202599.tif 000007
【図４Ｃ】
2018202599.tif 000008
【図４Ｄ】
2018202599.tif 000009
【図５Ａ】
2018202599.tif 000010
【図５Ｂ】
2018202599.tif 000011
【図５Ｃ】
2018202599.tif 000012
【図５Ｄ】
2018202599.tif 000013
【図５Ｅ】
2018202599.tif 000014
【図５Ｆ】
2018202599.tif 000015
【図５Ｇ】
2018202599.tif 000016
【図５Ｈ】
2018202599.tif 000017
【図５Ｉ】
2018202599.tif 000018
【図５Ｊ】
2018202599.tif 000019
【図５Ｋ】
2018202599.tif 000020
【図５Ｌ】
2018202599.tif 000021
【図６】
2018202599.tif 000022
【図７】
2018202599.tif 000023
【図８】
2018202599.tif 000024
【図９】
2018202599.tif 000025
【図１０】
2018202599.tif 000026
【図１１】
2018202599.tif 000027
【図１２Ａ】
2018202599.tif 000028
【図１２Ｂ】
2018202599.tif 000029
【図１３Ａ】
2018202599.tif 000030
【図１３Ｂ】
2018202599.tif 000031
【図１３Ｃ】
2018202599.tif 000032
【図１３Ｄ】
2018202599.tif 000033
【図１４Ａ】
2018202599.tif 000034
【図１４Ｂ】
2018202599.tif 000035
【図１４Ｃ】
2018202599.tif 000036
【図１５】
2018202599.tif 000037
【図１６】
2018202599.tif 000038
【図１７】
2018202599.tif 000039
【図１８】
2018202599.tif 000040
【図１９】
2018202599.tif 000041
【図２０Ａ】
2018202599.tif 000042
【図２０Ｂ】
2018202599.tif 000043
【図２０Ｃ】
2018202599.tif 000044
【図２０Ｄ】
2018202599.tif 000045
【図２１】
2018202599.tif 000046
【図２２Ａ】
2018202599.tif 000047
【図２２Ｂ】
2018202599.tif 000048
【図２２Ｃ】
2018202599.tif 000049
【図２２Ｄ】
2018202599.tif 000050
【図２２Ｅ】
2018202599.tif 000051