本発明の第一実施形態について、図面を参照して説明する。
図1は、本発明の第一実施形態に係るロボットシステム10の概略構成の一例を示す図である。ロボットシステム10は、ロボット制御装置1と、ロボット2とを備える。
ロボット制御装置1は、ロボット2の全体を制御する。ロボット制御装置1は、例えば、ロボット2が備える撮像部Fによる撮像を制御する。そして、ロボット制御装置1は、撮像部Fで撮像された画像データを用いて部品Wの位置及び姿勢を特定し、当該特定した部品Wを把持するなどの目的の作業をロボット2に実行させるための制御命令を生成し、ロボット2に送る。このようにして、ロボット制御装置1は、ロボット2の動作を制御する。
ロボット2は、リンク21及びジョイント22を含むアームと、アームの先端部に設けられたハンド23と、アームの先端部とハンド23との間に設けられた力覚センサー24と、を含む可動部20を有する。ハンド23は、例えば、複数の指を備え、少なくとも2本の指で部品Wを把持することができる。力覚センサー24は、例えば、ハンド23に加えられた外力などを検出する。
なお、可動部20には、ジョイント22やハンド23等の各部を動作させるため、例えば、アクチュエーター(不図示)が備えられる。アクチュエーターは、例えば、サーボモーターやエンコーダーなどを備える。エンコーダーが出力するエンコーダー値は、例えば、ロボット制御装置1によるロボット2のフィードバック制御などに用いられる。
ロボット2は、ロボット制御装置1から与えられる制御命令に従って、各ジョイント22を連動させて駆動することにより、アームの先端部の位置を、所定の可動範囲内で、自在に移動させたり、自由な方向へ向けたりすることができる。また、ハンド23でワークなどを把持したり解放したりすることができる。なお、力覚センサー24の出力は、ロボット制御装置1に送られ、ロボット制御装置1によるロボット2のインピーダンス制御などに用いられる。
また、ロボット2には、カメラなどの撮像部F(第一撮像部F1、第二撮像部F2)が設けられている。撮像部Fは、ロボット制御装置1の制御により、ロボット2の外部環境(例えば、作業台3付近)を撮像して画像データを生成し、ロボット制御装置1に出力する。
本実施形態では、第一撮像部F1は、ロボット2の胴体部などに設けられており、ロボット2の動作により被写体までの距離を自由に変えることはできない。一方、第二撮像部F2は、可動部20に設けられており、可動部20の動作により位置及び姿勢を変え、被写体までの距離を変えることができる。以下では、第二撮像部F2は、第一撮像部F1よりも作業台3に近い位置で撮像を行うものとし、第二撮像部F2の撮像解像度は第一撮像部F1の撮像解像度よりも大きくなるものとする。
上記のロボットシステム10及びロボット2の構成は、本実施形態の特徴を説明するにあたって主要構成を説明したのであって、上記した構成例に限られない。また、一般的なロボットシステム及びロボットが備える構成を排除するものではない。例えば、ジョイントの数(「軸数」ともいう)やリンクの数を増減させてもよい。また、ジョイント、リンク、ハンド等の各種部材の形状、大きさ、配置、構造等も適宜変更してよい。また、撮像部の設置場所は、ロボット2の外部環境の撮像ができれば、限定されない。例えば、第一撮像部F1及び第二撮像部F2の少なくとも一方は、ロボット2とは別に設けられ、ロボット2又はロボット制御装置に接続されるようにしてもよい。また、例えば、ロボット制御装置1は、ロボット2に含まれていてもよい。
図2は、ロボット制御装置1の機能構成の一例を示す図である。
以下では、説明を分かり易くするため、ロボット2に実行させる目的の作業として、「部品Wを把持する」作業を例示する。そして、この目的の作業は、例えば下記のような動作工程により実現される。
(1)第一撮像部F1で撮像を行い、部品Wの位置及び姿勢を検出する。
(2)ハンド23の位置及び姿勢が、検出した部品Wの近くの目標位置及び目標姿勢となるように動かす。
(3)ハンド23を、所定量開く。
(4)ハンド23の位置及び姿勢が、部品Wを把持可能な目標位置及び目標姿勢となるように動かす。
(5)ハンド23を、所定量閉じて、部品Wを把持する。
ロボット制御装置1は、動作制御部100と、撮像制御部105と、画像処理部110と、動作予測部115と、検出誤差情報生成部120と、動作補正情報生成部125と、撮像条件情報記憶部140と、検出部品情報記憶部150と、検出誤差情報記憶部160と、動作補正情報記憶部170と、を有する。
動作制御部100は、可動部20の動作を制御する。例えば、動作制御部100は、画像処理部110により検出された部品Wの位置及び姿勢に基づいて、ハンド23により当該部品Wを把持する動作を実現するための軌道を計算する。軌道は、例えば、ハンド23をある位置及び姿勢から目標位置及び目標姿勢に動かす軌道である。また、動作制御部100は、計算した軌道を実現するためのパラメーター、例えば、各ジョイントの単位時間毎の回転角度や回転方向などを含む制御命令を生成する。また、動作制御部100は、部品Wを把持するためにハンド23の指を開閉させるパラメーターを、制御命令に含める。そして、生成した制御命令をロボット2に出力する。上記のような可動部20の動作の制御は、公知の技術により実現できるため詳細な説明を省略する。
また、動作制御部100は、例えば、第二撮像部F2による撮像を行う際に、第二撮像部F2と作業台3の距離などの撮像条件が満たされるように、可動部20の動作を制御する。
詳細は後述するが、本実施形態では、動作制御部100は、目的の作業を実現する動作をロボット2に実行させる制御命令を生成する際、動作予測部115により選択される補正情報に基づいて動作の内容を補正し、補正後の動作をロボット2に実行させる制御命令を生成する。
撮像制御部105は、後述する撮像条件情報テーブル1400に含まれる撮像条件に基づいて、第一撮像部F1及び第二撮像部F2を制御する。また、撮像制御部105は、第一撮像部F1及び第二撮像部F2で撮像された画像データ(以下、「撮像画像」ともいう。)を取得する。撮像制御部105は、「画像取得部」と呼ぶこともできる。
画像処理部110は、第一撮像部F1から出力される撮像画像を取得し、当該撮像画像を用いて部品Wの位置及び姿勢を検出する。また、第一撮像部F1の撮像画像から検出した部品Wについて、当該部品Wに対応する画像領域に含まれるピクセルのピクセル値と、当該部品Wの背景に対応する画像領域に含まれるピクセルのピクセル値との比(以下、「ピクセル値比」ともいう。)を算出する。このピクセル値比は、階調値の比であるので、例えば濃度、彩度、明度などの比とも言える。
また、画像処理部110は、第一撮像部F1の撮像画像に基づいて検出した部品Wの位置及び姿勢とピクセル値比とを、後述する検出部品情報テーブル1500に格納する。
また、画像処理部110は、第二撮像部F2から出力される撮像画像を取得し、当該撮像画像を用いて部品Wの位置及び姿勢を検出する。また、画像処理部110は、第二撮像部F2の撮像画像に基づいて検出した部品Wの位置及び姿勢を、後述する検出部品情報テーブル1500に格納する。
撮影画像からワークの位置及び姿勢を検出したり、ワークや背景の画像領域を特定したりする処理は、公知の技術により実現できるため詳細な説明を省略する。
動作予測部115は、第一撮像部F1により撮像された撮像画像から検出された部品Wに対する目的の作業を実現するロボット2の動作を、仮想空間でシミュレーションする。ロボット2の動作をシミュレーションする技術は公知の技術により実現できるため説明を省略する。
詳細は後述するが、本実施形態では、動作予測部115は、後述する動作補正情報テーブル1700から、第一撮像部F1の撮像画像から検出された部品Wのピクセル値比に関連付けられた、ロボット2の動作の補正内容を一以上取得する。そして、動作予測部115は、各補正内容について、目的の作業を実現するロボット2の動作に対して当該補正内容を適用した動作をシミュレーションするとともに、当該動作に掛かる予測動作時間を求める。また、動作予測部115は、最も動作時間が短い補正内容を選択する。すなわち、動作予測部115は、作業対象の部品Wのピクセル値比に応じて、ロボット2の動作を補正する補正内容を決定する。動作予測部115は、「補正情報取得部」、「動作時間算出部」と呼ぶこともできる。
検出誤差情報生成部120は、後述する撮像条件情報テーブル1400に基づいて、最も大きい撮像解像度を実現する撮像条件を特定する。また、検出誤差情報生成部120は、後述する検出部品情報テーブル1500に基づいて、第一撮像部F1の撮像画像から検出された部品Wそれぞれについて、先に特定した最も大きい撮像解像度を実現する撮像条件における位置及び姿勢を基準として、他の撮像条件における位置及び姿勢の誤差を求める。そして、各撮像条件における誤差を、第一撮像部F1の撮像画像から検出された部品Wのピクセル値比と関連付けて、後述する検出誤差情報テーブル1600に格納する。
上記のようにして、第一撮像部F1で撮像したときに検出される特定のピクセル値比を有する部品Wについて、各撮像条件で撮像したときに発生する位置及び姿勢の検出誤差を求めることができる。
動作補正情報生成部125は、後述する検出誤差情報テーブル1600に基づいて、第一撮像部F1で撮像したときに検出される特定のピクセル値比を有する部品Wについて、目的の作業を実現するロボット2の動作を補正する補正内容(補正を行うか否か、補正を行う場合の補正量など)を一以上決定する。また、動作補正情報生成部125は、各補正内容を、検出された部品Wのピクセル値比と関連付けて、後述する動作補正情報テーブル1700に格納する。
本実施形態では、補正内容には、補正要素が一以上含まれる。例えば、補正要素A1は、動作工程(1)において、さらに第二撮像部F2で撮像を行って、部品Wの位置及び姿勢を検出する補正である。補正要素A2は、動作工程(2)において、ハンド23の目標位置及び目標姿勢を、部品Wに対して所定量より近付ける補正である。このように所定量より近付ける補正を行ったときには、画像検出された部品Wの位置及び姿勢によっては部品Wとハンドとが意図しない接触が生じる場合があるが、本実施形態では後述のように接触力に応じて倣い動作を実現するインピーダンス制御を適用することで所望の動作を実現する。補正要素A3は、動作工程(3)において、ハンド23を開く量を増加させる補正である。補正要素A4は、動作工程(5)において、ハンド23を閉じる量を増加させる補正である。補正要素A5は、動作工程(5)において、ハンド23を閉じる際にインピーダンス制御を実行する補正である。もちろん、補正要素の内容は、上記の例に限られない。
撮像条件情報記憶部140には、撮像条件を特定する情報を含む撮像条件情報テーブル1400が格納される。図3は、撮像条件情報テーブル1400の一例を示す図である。撮像条件情報テーブル1400には、撮像条件の識別情報である撮像条件ID1401と、当該撮像条件の内容を示す撮像条件1402と、当該撮像条件を用いる撮像部Fの識別情報である撮像部ID1403とを関連付けた撮像条件情報が格納される。なお、以下では、各撮像条件情報を、例えば、撮像条件C0、撮像条件C1などと、対応する撮像条件IDにより特定することもある。
本実施形態では、説明を分かり易くするため、例えば撮像部Fと作業台3の間の距離を撮像条件とする。また、本実施形態では、撮像条件情報は、ロボット制御装置1が処理を実行するに当たって予め設定される。
検出部品情報記憶部150には、検出された部品の情報を含む検出部品情報テーブル1500が格納される。図4は、検出部品情報テーブル1500の一例を示す図である。検出部品情報テーブル1500には、部品Wの識別情報である部品ID1501と、当該部品Wを第一撮像部F1の撮像画像から検出したときの当該部品Wのピクセル値比1502と、当該部品Wの各撮像条件における位置及び姿勢を示す情報1503とを関連付けた検出部品情報が格納される。
本実施形態では、説明を分かり易くするため、例えば部品Wの位置情報のみを、位置及び姿勢を示す情報とする。また、説明を分かり易くするため、位置情報は、2次元のXY座標とする。
検出誤差情報記憶部160には、検出誤差を特定する情報を含む検出誤差情報テーブル1600が格納される。図5は、検出誤差情報テーブル1600の一例を示す図である。検出誤差情報テーブル1600には、検出された部品Wのピクセル値比1601と、当該部品Wの基準となる撮像条件における位置及び姿勢に対する他の撮像条件(基準となる撮像条件も含む)における位置及び姿勢の検出誤差を示す情報1602とを関連付けた検出誤差情報が格納される。
動作補正情報記憶部170には、補正内容を特定する情報を含む動作補正情報テーブル1700が格納される。図6は、動作補正情報テーブル1700の一例を示す図である。動作補正情報テーブル1700には、検出された部品Wのピクセル値比1701と、当該部品Wに対して目的の作業を実現するロボット2の動作を補正する一以上の補正内容1702とが関連付けられた動作補正情報が格納される。各補正内容1702には、当該補正内容に含まれる各補正要素(図の例では、A1〜A5)の設定値が格納される。本実施形態では、補正内容は、各撮像条件C0〜C3に対応して設定されるため、図の例では補正内容C0〜C3と表している。
上述したロボット制御装置1は、例えば、図7(コンピューター60の概略構成の一例を示す図である。)に示すような、CPU(Central Processing Unit)61と、メモリー62と、HDD(Hard Disk Drive)等の補助記憶装置63と、有線又は無線により通信ネットワークやロボット制御装置2に接続するための通信インターフェイス(I/F)64と、マウス、キーボード、タッチセンサーやタッチパネルなどの入力装置65と、液晶ディスプレイなどの表示装置66と、DVD(Digital Versatile Disk)などの持ち運び可能な記憶媒体に対する情報の読み書きを行うメディアI/F67と、を備えるコンピューター60で実現できる。
例えば、動作制御部100、撮像制御部105、画像処理部110、動作予測部115検出誤差情報生成部120、及び動作補正情報生成部125は、補助記憶装置63に記憶されている所定のプログラムをメモリー62にロードしてCPU61で実行することで実現可能である。撮像条件情報記憶部140、検出部品情報記憶部150、検出誤差情報記憶部160、及び動作補正情報記憶部170は、CPU61がメモリー62又は補助記憶装置63を利用することにより実現可能である。ロボット2との通信機能は、CPU61が通信I/F64を利用することで実現可能である。なお、上記の所定のプログラムは、例えば、メディアI/F67に接続された記憶媒体からインストールすることができる。
上記の機能構成は、ロボット制御装置1の構成を理解容易にするために、主な処理内容に応じて分類したものである。構成要素の分類の仕方や名称によって、本願発明が制限されることはない。ロボット制御装置1の構成は、処理内容に応じて、さらに多くの構成要素に分類することもできる。また、1つの構成要素がさらに多くの処理を実行するように分類することもできる。また、各構成要素の処理は、1つのハードウェアで実行されてもよいし、複数のハードウェアで実行されてもよい。
また、例えば、ロボット制御装置1の少なくとも一部の機能は、ロボット2に含まれ、ロボット2により実現されてもよい。また、例えば、ロボット2の少なくとも一部の機能は、ロボット制御装置1に含まれ、ロボット制御装置1により実現されてもよい。
次に、上記のロボット制御装置1により実現される処理について説明する。
図8は、検出誤差情報生成処理(その1)の一例を示すフロー図である。図9検出誤差情報生成処理(その2)の一例を示すフロー図である。
本フローが開始されると、撮像制御部105は、第一撮像部F1により作業台3の撮像を行う(ステップS100)。具体的には、撮像制御部105は、第一撮像部F1の撮像部IDをキーとして、撮像条件情報テーブル1400から撮像条件1402を取得する。そして、当該撮像条件1402に基づいて第一撮像部F1により撮像を行う。なお、本実施形態では、第一撮像部F1の位置及び向きは固定されているため、撮像条件を取得せずに撮像を行ってもよい。
それから、画像処理部110は、部品Wを検出する(ステップS105)。具体的には、画像処理部110は、ステップS100で撮像された撮像画像を取得し、当該撮像画像に基づいて、作業台3上の一以上の部品Wの位置及び姿勢を検出する。そして、検出した部品Wごとに、当該部品Wの部品ID1501と、ステップS100で用いた撮像条件における当該部品Wの位置及び姿勢を示す情報1503とを関連付けて、検出部品情報テーブル1500に格納する。
図10(部品Wと背景のピクセル値比の例を示す図)の例では、作業台3に、3つの部品W(W0、W1、W2)が配置されている。この場合、画像処理部110は、部品W0、部品W1、及び部品W2のそれぞれの位置及び姿勢を検出する。
図8の説明に戻る。それから、画像処理部110は、ステップS105で検出した全ての部品Wを処理対象として選択したか否かを判定する(ステップS110)。全ての部品Wを選択済みである場合(ステップS110:Y)、本フローの処理を終了する。
全ての部品Wを未選択である場合(ステップS110:N)、画像処理部110は、未選択の部品Wを一つ選択する(ステップS115)。
それから、画像処理部110は、部品Wと背景のピクセル値比を計算する(ステップS120)。具体的には、画像処理部110は、ステップS100で撮像された撮像画像を用いて、ステップS115で選択した部品Wに対応する画像領域に含まれるピクセルのピクセル値と、当該部品Wの背景に対応する画像領域に含まれるピクセルのピクセル値との比を求める。
ピクセル値比の計算方法の一例について、図10の例を参照しながら詳細に説明する。図中の「(***)」は、階調値(0〜255)を示している。本図では説明を分かり易くするため、作業台3の撮像画像には、図示するような各階調値の領域(破線で区切られた領域)が表れるものとする。また、作業台の3の撮像画像には、3つの部品W0、W1、W2が検出されている。
ここで、画像処理部110は、部品W0を選択したとすると、部品W0の画像領域に含まれる各ピクセルの階調値の平均値を算出し、この値を部品W0のピクセル値とする。また、当該部品W0の画像領域の周辺(例えば、部品W0の輪郭を抽出し、当該輪郭から所定範囲内のピクセル)の背景画像領域に含まれる各ピクセルの階調値の平均値を算出し、この値を背景のピクセル値とする。そして、このように算出した部品W0のピクセル値と部品W0の背景のピクセル値との比を算出する。
もちろん、上記のピクセル値比の計算方法は、一例であり、他の方法であってもよい。例えば、部品Wの画像領域のピクセル値には、代表ピクセル値(例えば、部品Wの画像領域内の最小値、最大値、部品Wの輪郭を構成するピクセルのピクセル値の平均値など)を用いてもよい。また、例えば、背景のピクセル値には、代表ピクセル値(例えば、部品Wの画像領域の周辺の背景画像領域の最小値、最大値など)を用いてもよい。
画像処理部110は、上記のようにステップS115で選択した部品Wについて計算したピクセル値比を、当該部品Wの部品ID1501に関連付けてピクセル値比1502として、検出部品情報テーブル1500に格納する。図10の例において、部品W0のピクセル値が(51)、背景のピクセル値が(128)の場合、ピクセル値比は、(1.00:2.51)となる。部品W1のピクセル値が(51)、背景のピクセル値が(192)の場合、ピクセル値比は、(1.00:3.76)となる。部品W2のピクセル値が(51)、背景のピクセル値が(180)の場合、ピクセル値比は、(1.00:3.53)となる。これらのピクセル値比が、図4の例に示すように、検出部品情報テーブル1500に格納される。
図8の説明に戻る。それから、撮像制御部105は、撮像条件情報テーブル1400に含まれる全ての第二撮像部F2の撮像条件を処理対象として選択したか否かを判定する(ステップS125)。全ての第二撮像部F2の撮像条件を選択済みである場合(ステップS125:Y)、処理をステップS145に進める。
全ての第二撮像部F2の撮像条件を未選択である場合(ステップS125:N)、撮像制御部105は、未選択の第二撮像部F2の撮像条件を一つ選択する(ステップS130)。具体的には、撮像制御部105は、第二撮像部F2の撮像部IDをキーとして、撮像条件情報テーブル1400から撮像条件1402を特定し、未選択の撮像条件を選択する。
それから、撮像制御部105は、選択した部品Wを第二撮像部F2により撮像を行う(ステップS135)。具体的には、撮像制御部105は、ステップS130で選択した撮像条件1402を撮像条件情報テーブル1400から取得する。そして、当該撮像条件1402に基づいて、ステップS115で選択された部品Wを、第二撮像部F2により撮像する。なお、動作制御部100は、撮像の前に、選択された部品WについてステップS105で検出された位置及び姿勢に基づいて、選択された撮像条件が示す第二撮像部F2と作業台3の距離で当該部品Wの撮像が行われるように、可動部20を動作させる。このようにして、撮像条件で指定された距離で、選択された部品Wの撮像が行われる。
それから、画像処理部110は、選択した部品Wを検出する(ステップS140)。具体的には、画像処理部110は、ステップS135で撮像された撮像画像を取得し、当該撮像画像に基づいて、ステップS115で選択された部品Wの位置及び姿勢を検出する。そして、検出した部品Wの位置及び姿勢を、当該部品Wの部品ID1501に関連付けて、ステップS130で選択した撮像条件における位置及び姿勢を示す情報1503として、検出部品情報テーブル1500に格納する。そして、画像処理部110は、処理をステップS125に戻す。
一方、全ての第二撮像部F2の撮像条件を選択済みである場合(ステップS125:Y)、検出誤差情報生成部120は、撮像条件情報テーブル1400を参照し、最も大きい撮像解像度を実現する撮像条件を選択する(ステップS145)。例えば、作業台3と撮像部Fとの距離が最も小さい撮像条件を、最も大きい撮像解像度を実現する撮像条件として特定する。図3の例では、撮像条件C1が最も大きい撮像解像度を実現する。
もちろん、距離に替えて又は距離に加えて他の撮像条件が設定されている場合は、所定の方法により最も大きい撮像解像度を実現する撮像条件を特定すればよい。
それから、検出誤差情報生成部120は、撮像条件情報テーブル1400に含まれる全ての撮像条件を処理対象として選択したか否かを判定する(ステップS150)。全ての撮像条件を選択済みである場合(ステップS150:Y)、処理をステップS110に戻す。
全ての撮像条件を未選択である場合(ステップS150:N)、検出誤差情報生成部120は、未選択の撮像条件を一つ選択する(ステップS155)。
それから、検出誤差情報生成部120は、最も大きい解像度の撮像条件と選択した撮像条件における選択した部品Wの検出誤差を計算する(ステップS160)。具体的には、検出誤差情報生成部120は、ステップS115で選択した部品Wの検出部品情報から、ステップS145で選択した撮像条件における位置及び姿勢を示す情報1503(「第一の情報」と呼ぶ。)を取得する。また、ステップS115で選択した部品Wの検出部品情報から、ステップS155で選択した撮像条件における位置及び姿勢を示す情報1503(「第二の情報」と呼ぶ。)を取得する。また、第一の情報と第二の情報の誤差を計算する。
ここで、検出誤差の計算方法の一例について、詳細に説明する。検出誤差は、例えば、第一の情報と第二の情報の対応する値の間の差分絶対値和の2分の1とすることができる。図4の例では、部品W0の第一の情報は、撮像条件C1における位置(170.00, 15.00)である。選択された撮像条件がC0であるとすると、部品W0の第二の情報は、位置(180.00, 19.00)である。これらの情報の差分絶対値和の2分の1は、7.00である。この値は、部品W0のピクセル値比(1.00:2.51)の撮像条件C0における検出誤差として検出誤差情報テーブル1600に格納される(図5参照)。
もちろん、上記の検出誤差の計算方法は、一例であり、検出誤差を計算できれば、他の方法であってもよい。
検出誤差情報生成部120は、ステップS115で選択した部品Wのピクセル値比が、検出誤差情報テーブル1600に格納されていない場合は、ピクセル値比1601として格納する。また、検出誤差情報生成部120は、上記のように計算した検出誤差を、ステップS115で選択した部品Wのピクセル値比1601に関連付けて、ステップS155で選択した撮像条件おける検出誤差を示す情報1602として、検出誤差情報テーブル1600に格納する。そして、処理をステップS150に戻す。
図11は、動作補正情報生成処理の一例を示すフロー図である。
本フローが開始されると、動作補正情報生成部125は、検出誤差情報テーブル1600に含まれる全てのピクセル値比1601を処理対象として選択したか否かを判定する(ステップS200)。全てのピクセル値比を選択済みである場合(ステップS200:Y)、本フローの処理を終了する。
全てのピクセル値比が未選択である場合(ステップS200:N)、動作補正情報生成部125は、未選択のピクセル値比を一つ選択し(ステップS205)、選択したピクセル値比に対応する検出誤差情報を、検出誤差情報テーブル1600から取得する(ステップS210)。
ここで、動作補正情報生成部125は、選択したピクセル値比1601をピクセル値比1701として設定した動作補正情報を生成し、動作補正情報テーブル1700に格納する。なお、ステップS220以降の処理で、各補正内容1702の補正要素の設定値が設定される。
それから、動作補正情報生成部125は、ステップS210で取得した検出誤差情報に含まれる全ての撮像条件を処理対象として選択したか否かを判定する(ステップS215)。全ての撮像条件を選択済みである場合(ステップS215:Y)、動作補正情報生成部125は、処理をステップS200に戻す。
全ての撮像条件を未選択である場合(ステップS215:N)、動作補正情報生成部125は、未選択の撮像条件を一つ選択し(ステップS220)、選択した撮像条件における検出誤差を、ステップS210で取得した検出誤差情報から取得する(ステップS225)。なお、本実施形態では、当該選択した撮像条件に対応して、補正内容1702を生成する。
それから、動作補正情報生成部125は、生成する補正内容の補正要素の全てを処理対象として選択したか否かを判定する(ステップS230)。本実施形態では、図6に示すように、5つの補正要素A1〜A5が処理対象である。全ての補正要素を選択済みである場合(ステップS230:Y)、動作補正情報生成部125は、処理をステップS215に戻す。
全ての補正要素を未選択である場合(ステップS230:N)、動作補正情報生成部125は、未選択の補正要素を一つ選択する(ステップS235)。
それから、動作補正情報生成部125は、ステップS235で選択した補正要素の設定値を決定し、設定する(ステップS240)。具体的には、動作補正情報生成部125は、ステップS205で選択したピクセル値比について、ステップS220で選択した撮像条件(補正内容に対応する)における、ステップS235で選択した補正要素の設定値を決定し、補正内容1702に設定する。そして、処理をステップS230に戻す。
図12〜図16を参照して、上記のステップS240の処理について詳細に説明する。動作補正情報生成部125は、選択した補正要素の種類に応じて、図12〜図16のいずれかの処理を実行する。
図12は、補正要素A1の設定処理の一例を示すフロー図である。上述のように、補正要素A1は、動作工程(1)において、さらに第二撮像部F2で撮像を行って、部品Wの位置及び姿勢を検出する補正である。
動作補正情報生成部125は、ステップS220で選択した撮像条件が、第二撮像部F2の撮像条件であるか否かを判定する(ステップS2400)。
選択した撮像条件が第二撮像部F2の撮像条件である場合(ステップS2400:Y)、動作補正情報生成部125は、動作工程(1)において第二撮像部F2による撮像及び部品Wの位置及び姿勢の検出がさらに実行されるように、補正要素A1の設定値を「ON」に設定する(ステップS2405)。そして、本フローの処理を終了する。
一方、選択した撮像条件が第二撮像部F2の撮像条件でない場合(ステップS2400:N)、動作補正情報生成部125は、補正要素A1の設定値を「OFF」に設定する(ステップS2410)。そして、本フローの処理を終了する。
図13は、補正要素A2の設定処理の一例を示すフロー図である。上述のように、補正要素A2は、動作工程(2)において、ハンド23の目標位置及び目標姿勢を、部品Wに対して所定量より近付ける補正である。このように所定量より近付ける補正を行ったときには、画像検出された部品Wの位置及び姿勢によっては部品Wとハンドとが意図しない接触が生じる場合があるが、本実施形態では意図しない接触により生じる接触力に応じて倣い動作を実現するインピーダンス制御を適用することで所望の動作を実現することとする。
動作補正情報生成部125は、ステップS220で選択した撮像条件における、ステップS225で取得した検出誤差が、所定値より大きいか否かを判定する(ステップS2420)。
検出誤差が所定値よりも大きい場合(ステップS2420:Y)、動作補正情報生成部125は、動作工程(2)においてハンド23の目標位置及び目標姿勢を部品Wに対して所定量より近付けるオフセット量を所定の計算式により決定し、補正要素A2の設定値として設定する(ステップS2425)。例えば、所定の計算式は、オフセット量を検出誤差が示す値に比例して大きくなるような式とすることができる。そして、本フローの処理を終了する。
一方、検出誤差が所定値以下である場合(ステップS2420:N)、動作補正情報生成部125は、オフセット量を「0」として、補正要素A2の設定値に設定する(ステップS2430)。後述のように、部品Wに対してハンド23の目標位置及び目標姿勢を所定量より近付ける補正を行わないときには、画像検出された部品Wとハンドとが意図しない接触は発生しないとして、本実施形態ではインピーダンス制御を適用しないとする。なお、この場合も、所定の計算式によりオフセット量を決定してもよい。そして、本フローの処理を終了する。
図14は、補正要素A3の設定処理の一例を示すフロー図である。上述のように、補正要素A3は、動作工程(3)において、ハンド23を開く量を増加させる補正である。
動作補正情報生成部125は、ステップS220で選択した撮像条件における、ステップS225で取得した検出誤差が、所定値より大きいか否かを判定する(ステップS2440)。
検出誤差が所定値よりも大きい場合(ステップS2440:Y)、動作補正情報生成部125は、動作工程(3)においてハンド23の開く量を増加させるオフセット量を所定の計算式により決定し、補正要素A3の設定値として設定する(ステップS2445)。例えば、所定の計算式は、オフセット量を検出誤差が示す値に比例して大きくなるような式とすることができる。そして、本フローの処理を終了する。
一方、検出誤差が所定値以下である場合(ステップS2440:N)、動作補正情報生成部125は、オフセット量を「0」として、補正要素A3の設定値に設定する(ステップS2450)。なお、この場合も、所定の計算式によりオフセット量を決定してもよい。そして、本フローの処理を終了する。
図15は、補正要素A4の設定処理の一例を示すフロー図である。上述のように、補正要素A4は、動作工程(5)において、ハンド23を閉じる量を増加させる補正である。
動作補正情報生成部125は、ステップS220で選択した撮像条件における、ステップS225で取得した検出誤差が、所定値より大きいか否かを判定する(ステップS2460)。
検出誤差が所定値よりも大きい場合(ステップS2460:Y)、動作補正情報生成部125は、動作工程(5)においてハンド23の閉じる量を増加させるオフセット量を所定の計算式により決定し、補正要素A4の設定値として設定する(ステップS2465)。例えば、所定の計算式は、オフセット量を検出誤差が示す値に比例して大きくなるような式とすることができる。そして、本フローの処理を終了する。
一方、検出誤差が所定値以下である場合(ステップS2460:N)、動作補正情報生成部125は、オフセット量を「0」として、補正要素A4の設定値に設定する(ステップS2470)。なお、この場合も、所定の計算式によりオフセット量を決定してもよい。そして、本フローの処理を終了する。
図16は、補正要素A5の設定処理の一例を示すフロー図である。上述のように、補正要素A5は、動作工程(5)において、ハンド23を閉じる際にインピーダンス制御を実行する補正である。
動作補正情報生成部125は、ステップS220で選択した撮像条件における、上述のように補正要素A2〜A5に設定されたオフセット量の全てが0であるか否かを判定する(ステップS2480)。
オフセット量の少なくとも一つが0でない場合(ステップS2480:N)、動作補正情報生成部125は、動作工程(5)において、ハンド23を目標位置及び目標姿勢へと移動するために可動部20を動作させる際およびハンド23を閉じる際にインピーダンス制御が実行されるように、補正要素A5の設定値を「ON」に設定する(ステップS2485)。そして、本フローの処理を終了する。
一方、オフセット量の全てが0である場合(ステップS2480:Y)、動作補正情報生成部125は、補正要素A5の設定値を「OFF」に設定する(ステップS2490)。そして、本フローの処理を終了する。
以上のようにして、動作補正情報テーブル1700が生成される。
図17は、動作制御処理の一例を示すフロー図である。なお、本フローでは、説明を分かり易くするため、作業対象の部品Wを一つ検出するものとする。
本フローが開始されると、撮像制御部105は、第一撮像部F1により撮像を行う(ステップS300)。本処理は、ステップS100(図8参照)と同様なので説明を省略する。
それから、画像処理部110は、部品Wを検出する(ステップS305)。具体的には、画像処理部110は、ステップS300で撮像された撮像画像を取得し、当該撮像画像に基づいて、作業台3上の作業対象の部品Wの位置及び姿勢を検出する。
それから、画像処理部110は、部品Wと背景のピクセル値比を計算する(ステップS310)。具体的には、画像処理部110は、ステップS300で撮像された撮像画像を用いて、ステップS305で検出した部品Wに対応する画像領域に含まれるピクセルのピクセル値と、当該部品Wの背景に対応する画像領域に含まれるピクセルのピクセル値との比を求める。
本処理におけるピクセル値比の計算方法の一例について、説明する。画像処理部110は、部品Wの画像領域のうち、最小の階調値を持つピクセルと、最大の階調値を持つピクセルとを特定する。また、当該部品Wの画像領域の周辺(例えば、部品Wの輪郭を抽出し、当該輪郭から所定範囲内のピクセル)の背景画像領域のうち、最小の階調値を持つピクセルと、最大の階調値を持つピクセルとを特定する。それから、部品Wの最小ピクセル値と背景の最小ピクセル値及び最大ピクセル値のいずれかとの組み合わせと、部品Wの最大ピクセル値と背景の最小ピクセル値及び最大ピクセル値のいずれかとの組み合わせのうち、ピクセル値の比が最も小さくなる(すなわち、階調値の差が小さい)ピクセル値比を特定する。
このように、値がより小さいピクセル値比を特定するのは、部品の検出精度がより悪い状況を想定して、当該状況に応じた補正内容を選択し、ロボット2の作業の失敗をより防ぎ易くするためである。もちろん、上記のピクセル値比の計算方法は、一例であり、なるべくピクセル値比が小さくなるような結果が得られるのであれば、他の方法であってもよい。
それから、動作予測部115は、計算されたピクセル値比に対応する動作補正情報を、動作補正情報テーブル1700から取得する(ステップS315)。具体的には、動作予測部115は、ステップS310で計算されたピクセル値比に一致するピクセル値比1701を特定し、当該ピクセル値比1701に関連付けられた一以上の補正内容1702を取得する。
ステップS310で計算されたピクセル値比に一致するピクセル値比1701がない場合は、動作予測部115は、ステップS310で計算されたピクセル値比よりも値が小さくかつ最も値が近いピクセル値比1701を特定し、当該ピクセル値比1701に関連付けられた一以上の補正内容1702を取得する。ステップS310で計算されたピクセル値比よりも値が小さいピクセル値比1701がない場合は、ステップS310で計算されたピクセル値比よりも値が大きくかつ最も値が近いピクセル値比1701を特定すればよい。
このように、値がより小さいピクセル値比を特定するのは、部品の検出精度がより悪い状況を想定して、当該状況に応じた補正内容を選択し、ロボット2の作業の失敗をより防ぎ易くするためである。
それから、動作予測部115は、ステップS320で取得した動作補正情報に含まれる各撮像条件に対応する補正内容1702ごとに、目的の作業を実現するロボット2の動作に対して当該補正内容を適用した動作をシミュレーションするとともに、当該動作に掛かる予測動作時間を計算する(ステップS320)。
図6を参照して説明する。例えば、補正前の動作が上述の動作工程(1)〜(5)を有する場合に、ステップS310で計算されたピクセル値比が(1.00:2.51)であるときを想定する。また、代表的に、撮像条件C2に対応する補正内容を適用する場合を説明する。
動作予測部115は、補正要素A1の設定値が「ON」であるため、動作工程(1)について、撮像条件C2で第二撮像部F2により撮像を行って、部品Wの位置及び姿勢を検出する動作をシミュレーションするとともに、当該動作に掛かる予測動作時間を計算する。
また、動作予測部115は、補正要素A2の設定値(オフセット量)が「6.00」であるため、動作工程(2)について、ハンド23の検出した部品Wの近くの目標位置及び目標姿勢を、オフセット量に基づいて部品Wに対して所定値よりも近付ける位置及び姿勢に補正する。そして、ハンド23の位置及び姿勢が、補正した目標位置及び目標姿勢となるように動かす動作をシミュレーションするとともに、当該動作に掛かる予測動作時間を計算する。
また、動作予測部115は、補正要素A3の設定値(オフセット量)が「6.00」であるため、動作工程(3)について、ハンド23を開く量を、オフセット量に基づいて補正し、ハンド23を開く動作をシミュレーションするとともに、当該動作に掛かる予測動作時間を計算する。
また、動作予測部115は、補正要素A4の設定値(オフセット量)が「6.00」であるため、動作工程(5)について、ハンド23を閉じる量を、オフセット量に基づいて補正し、ハンド23を閉じる動作をシミュレーションするとともに、当該動作に掛かる予測動作時間を計算する。
また、動作予測部115は、補正要素A5の設定値が「ON」であるため、動作工程(5)について、ハンド23を目標位置及び目標姿勢へと移動するために可動部20を動作させる際及びハンド23を閉じる際に、インピーダンス制御を行う場合の動作をシミュレーションするとともに、当該動作に掛かる予測動作時間を計算する。
そして、動作予測部115は、上記のように計算した各補正要素に関する予測動作時間に基づいて、撮像条件C2において目的の作業を実現するロボット2の動作に掛かる予測動作時間を計算する。他の補正内容1702についても、動作補正情報テーブル1700の設定値に基づいて、同様に予測動作時間を計算することができる。
図17の説明に戻る。動作予測部115は、ステップS320で計算した各補正内容の予測動作時間に基づいて、動作時間が最も小さい補正内容を特定する(ステップS325)。
それから、動作制御部100は、ステップS325で特定された補正内容に基づいてロボット2の動作を制御する(ステップS330)。具体的には、動作制御部100は、目的の作業を実現する可動部20の動作の軌道を計算する。また、計算した軌道をステップS325で特定された補正内容の各補正要素に基づいて補正する。また、当該補正後の軌道を実現するためのパラメーターを含む制御命令を生成する。また、部品Wを把持するためにハンド23の指を開閉させるパラメーターを、S325で特定された補正内容の各補正要素に基づいて補正し、補正後のパラメーターを制御命令に含める。そして、生成した制御命令をロボット2に出力する。そして、本フローの処理を終了する。
このようにして、部品の検出精度に応じて、当該部品に対する目的の作業を実現するロボット2の動作が補正され、ロボット2の動作が制御される。
なお、上記の各図のフローの各処理単位は、ロボット制御装置1の処理を理解容易にするために、主な処理内容に応じて分割したものである。処理単位の分割の仕方や名称によって、本願発明が制限されることはない。ロボット制御装置1の処理は、処理内容に応じて、さらに多くの処理単位に分割することもできる。また、1つの処理単位がさらに多くの処理を含むように分割することもできる。
以上、本発明の第一実施形態について説明した。本実施形態によれば、ロボットによる作業の失敗をより精度よく防ぐことができる。
なお、以上の本発明の実施形態は、本発明の要旨と範囲を例示することを意図し、限定するものではない。多くの代替物、修正、変形例は当業者にとって明らかである。
上記の実施形態では、予測動作時間が最も短い補正内容を選択するようにしているが、他の条件に基づいて選択してもよい。例えば、補正項目ごとに基準を定義するとともに、各補正項目が基準を満たすか満たさないかを示す組み合わせ条件を定義し、当該条件に合致する補正内容が選択されるようにしてもよい。このようにすれば、目的の作業の内容等に応じてユーザーが要求する条件に適した補正内容が選択される。
上記の実施形態では、第一撮像部F1と第二撮像部F2の二つを備えるが、第二撮像部F2の一つを備えるようにしてもよい。この場合、第一撮像部F1による撮像を、第二撮像部F2で行うようにすればよい。
検出誤差情報生成処理においては、もっと多くのピクセル値比における検出誤差情報をサンプルとして得られるように、位置及び姿勢が異なる部品Wの数を増やしてもよい。このようにすれば、動作補正情報の数も増えるため、作業対象のワークの検出精度に応じてより正確にロボット2の動作を補正することができる。
本発明は、上述した目的の作業、当該作業を実現するロボット2の動作工程、動作補正内容等以外の場合についても適用できる。