以下、本発明の例示的な実施形態が開示される。以下に示される実施形態の構成や制御(技術的特徴)、ならびに当該構成や制御によってもたらされる作用および結果(効果)は、一例である。また、以下に例示される実施形態の複数の構成等には、同様の構成要素が含まれている。以下、同様の構成要素には共通の符号が付与され、重複する説明が省略される。
[システムの構成]
図1は、実施形態の物体ハンドリング装置1(ハンドリングロボット)を含む物体ハンドリングシステム(ロボットハンドリングシステム)の斜視図である。
物体ハンドリング装置1は、物体Pを搬送する装置である。物体Pは、例えば、商品や、物品、部品等であって、その大きさや、硬さ等のスペックは様々である。物体Pは、対象物や、搬送物等とも称されうる。
図1に示されるように、物体ハンドリング装置1は、コントローラ100や、マニピュレータ20、ベース30、搬送機構40、処理部50、移動機構6等を有している。ベース30は、多方向移動ホイールや、回転ホイール、クローラ、駆動モータ等を含む移動機構6によって、フロアや地面上を自在に移動可能に構成されており、これにより、ベース30に固定されたコントローラ100や、マニピュレータ20、搬送機構40、処理部50も、ベース30と一体にフロアや地面上を自在に移動することができる。
搬送機構40は、マニピュレータ20とは別に設けられた物体Pの搬送装置である。具体的には、ローラやベルトコンベヤ等を有し、コントローラ100によって動作が制御されることにより、物体ハンドリング装置1内の所定位置と物体ハンドリング装置1外の所定位置との間で物体Pを搬送することができる。例えば、マニピュレータ20が物体Pを物体ハンドリング装置1に搬入する場合には、当該搬入後に、搬送機構40は当該物体Pを物体ハンドリング装置1外に搬出することができる。他方、マニピュレータ20が物体Pを物体ハンドリング装置1から搬出する場合には、当該搬出前に、搬送機構40は当該物体Pを物体ハンドリング装置1内に搬入することができる。また、図1に示されるように、搬送機構40は、ケースBに収容された状態で、あるいはケースB単位で、物体Pを搬送することができる。
処理部50は、ベース30上に設けられ、物体Pの一時的な保持や、載置、保管等に利用される。処理部50は、作業場所や、作業スペース、作業領域、作業テーブル、バッファ等と称されうる。処理部50には、複数のマーク51が設けられている。マーク51は、カメラ21,33等による撮影のターゲットとなり、物体Pの搬送や、後述するキャリブレーション等に利用される。また、処理部50には、RF−IDリーダライタや、バーコードリーダ、各種センサ等(不図示)が設けられうる。カメラ21は、第一カメラの一例であり、カメラ33は、第二カメラの一例である。また、処理部50は、載置部の一例であり、マーク51は、第一マークの一例である。
また、ベース30には、バキュームポンプ1aや、バッテリ1bの他、不図示のボンベやコンプレッサ、ユーザインタフェース、安全機構等が装備されうる。バキュームポンプ1aは、例えば、マニピュレータ20が物体Pを吸着する場合に当該吸着するためのエアやガスの負圧を生じる。バッテリ1bは、例えば、バキュームポンプ1aや、マニピュレータ20がモータ駆動される場合の当該モータ等の電力源である。ボンベやコンプレッサは、例えば、マニピュレータ20が空気圧駆動される場合のエアやガスの正圧の生成や、吸着の解放処理、電磁弁の駆動等に用いられうる。また、ボンベやコンプレッサは、エジェクターと接続することにより、負圧の生成にも利用されうる。ユーザインタフェースは、例えば、操作ボタンや、スイッチ、キーボード等である。安全機構は、例えば、ライトカーテンや衝突検知器等である。
マニピュレータ20は、アーム2と、ハンド200と、を有している。アーム2は、所謂多関節または多軸ロボットアームであり、例えば、複数のサーボモータで駆動される。また、アーム2は、例えば、垂直多関節型、水平多関節型、直動ロボットを複数組み合わせた型のロボット等であってもよい。また、アーム2には、力センサ等の各種センサ(不図示)が設けられる。また、ハンド200は、例えば、吸着や、ジャミング、挟み込み等による多指機構によって、物体P(対象物)を把持する機構である。ハンド200は、把持機構や、エフェクタ、エンドエフェクタと称されうる。ハンド200は、例えば、小型アクチュエータや、柔軟性を得るための弾性機構200e(弾性部、図3A等)等を有している。また、ハンド200には、カメラ21や、力センサ等の各種センサ(不図示)等が設けられている。ハンド200の詳細な構成については、後述する。弾性機構200eは、弾性関節とも称されうる。アーム2およびハンド200は、可動部の一例である。
作業台70は、例えば、ラックや、シェルフ、組立作業を行うテーブル等であり、物体ハンドリング装置1による物体Pの搬出先あるいは搬入元の場所を提供する。作業台70には、マーク71が設けられている。マーク71は、カメラ21,33等による撮影のターゲットとなり、物体Pの搬送や、後述するキャリブレーション等に利用される。また、システムには、物体ハンドリング装置1とは別のロボット8等が含まれてもよい。マーク71は、第二マークの一例である。
[コントローラの構成]
図2は、コントローラ100のブロック図である。図2に示されるように、コントローラ100は、演算処理部101や、各種データベースの他、主記憶部(不図示)、補助記憶部(不図示)等を有している。データベースには、例えば、物体データベース102a(物体DB)や、把持データベース102b(把持DB)、ロボットデータベース102c(ロボットDB)、環境データベース102d(環境DB)等がある。また、主記憶部は、例えば、ROMやRAM等であり、補助記憶部は、例えば、HDDやSSD等である。データベースは、補助記憶部の一部であってもよい。
演算処理部101は、マニピュレータ制御部110や、画像処理部101a、信号処理部101b、計画生成部101c、把持・動作計画生成部101d、状態監視部101e、エラー検出部101f、学習制御部101g、物体認識部101h等を有している。また、マニピュレータ制御部110は、アーム制御部120や、ハンド制御部140等を含んでいる。
画像処理部101aは、各種画像センサ情報を処理し、動作計画や動作制御、エラー検出や学習に必要な情報を生成する。
信号処理部101bは、各種センサ情報に対し、信号増幅処理やアナログデジタル変換処理や雑音除去や特徴情報の抽出、状態変化の判定処理などの信号処理を実行する。
計画生成部101cは、ユーザー入力情報とシステムの状態、各種センサ情報をもとに、物体ハンドリング装置1の作業計画を生成、管理する。
把持・動作計画生成部101dは、マニピュレータ20による物体Pの把持、移載の動作に関する動作計画を生成する。一例として、物体Pの把持を行う際には、現在のハンド200の位置から、周囲環境に干渉することなく、物体Pを把持可能な位置までのハンド200の移動経由点を算出する処理を行う。この場合、把持・動作計画生成部101dは、位置情報や、時間情報、速度情報、加速度情報等を含む動作計画を算出してもよい。
アーム制御部120は、主としてアーム2の動作を制御する。アーム制御部120は、手先軌道生成部121や、軸角生成部122、姿勢監視部123、駆動制御部124等を含む。
手先軌道生成部121は、マニピュレータ20(ハンド200)の手先の動作軌道を制御するための手先軌道情報を生成する。手先軌道情報は、例えば、アーム2に極力負荷をかけず滑らかな移動を可能とする手先の軌道の情報であって、位置情報や、時間情報、速度情報、加速度情報等を含みうる。
軸角生成部122は、マニピュレータ20(ハンド200)の手先が手先軌道情報に従って移動するためのアーム2の各関節の角度を変化させるモータ(不図示)の角度情報を生成する。角度情報は、例えば、角度情報や、時間情報、角速度情報、角加速度情報等を含みうる。
姿勢監視部123は、マニピュレータ20に含まれる複数の軸駆動部(不図示)の位置を監視し、マニピュレータ20の姿勢を算出する。
駆動制御部124は、軸角生成部122で生成された角度情報にしたがって、マニピュレータ20のモータの動作(位置)、ひいてはマニピュレータ20の動作(位置や姿勢等)を制御する。
状態監視部101eは、姿勢監視部123から得られた情報から取得された姿勢情報に基づいて、例えば、動作中や、停止中、動作完了等といったマニピュレータ20の動作状態を示す動作状態情報を生成する。
エラー検出部101fは、物体ハンドリング装置1の状態や、作業計画の実施状態、駆動制御状態、物体Pの把持状態、物体Pの搬送の状態等を測定し、エラーを検知する。
学習制御部101gは、マニピュレータ20の振動抑制など動作精度向上のためのロボットモデル学習や、物体Pの把持性能向上のための把持制御パラメータ学習、把持データベース学習、作業計画の実施性能向上のためのエラー検知学習、等の学習機能を制御する。
物体認識部101hは、画像処理部101aによる物体Pの画像を含む画像処理結果に基づいて、物体Pを認識する。
データベース情報生成更新部101i(DB情報生成更新部)は、物体データベース102aに格納される物体情報および把持データベース102bに格納される把持情報を生成し、かつ更新する。データベース情報生成更新部101iの処理については後に詳しく述べる。
自動較正部101jは、オートキャリブレーションを実行する。オートキャリブレーションについては後に詳しく述べる。自動較正部101jは、較正処理部の一例である。
物体データベース102aには、物体Pの属性情報が格納されている。以下では、物体Pの属性情報を物体情報と称する。また、把持データベース102bには、物体P毎に、当該物体を把持する制御に関わる各種情報が格納されている。物体データベース102aおよび把持データベース102bについては後に詳しく述べる。
ロボットデータベース102cには、物体ハンドリング装置1の構造や、各部のスペック(例えば、寸法や、重量、慣性モーメント等)、各駆動部(モータ等)の性能諸元(例えば、動作範囲や、速度、トルク性能等)が保存されている。
環境データベース102dには、物体ハンドリング装置1が対応している作業台70の情報や、物体ハンドリング装置1の動作範囲や周囲の干渉物など周囲環境情報が保存されている。
[ハンドの構成例1]
図3A〜図3Dは、ハンド200A(200)の構成例を示す側面図(一部断面図)である。図3A〜図3Dに示されるハンド200Aは、吸着パッド200a、フィンガー200b等の複数の把持機構を有している。また、吸着パッド200aは、ジャミング機構等で構成してもよい。すなわち、ハンド200Aは、複数の異なる把持方法によって、物体Pを把持することができる。また、コントローラ100のハンド制御部140は、物体Pを把持する際、当該物体Pに適した把持機構を選択して用いることができる。なお、フィンガー200bは、平行移動する多指フィンガーや、多関節フィンガーである。
図3Bに示されるように、ハンド200Aは、コントローラ100のハンド制御部140によって姿勢可変機構200dを制御し、吸着パッド200aの姿勢(角度)を変化することができるよう、構成されている。よって、ハンド200Aは、より確実に物体Pを把持することができる。
ハンド200Aは、弾性機構200eおよびジャミング部200cを有している。弾性機構200eおよびジャミング部200cによって、ハンド200Aから物体Pに印加される力が抑制される。また、ハンド200Aは、弾性機構200eの弾性変形可能な状態と不可能な状態とを切り替えるクラッチ200fを有している。よって、物体Pを把持して搬送している状態で、クラッチ200fにより弾性機構200eの相対変位可能な二箇所の相対変位を制限することで、弾性機構200eの弾性に起因するハンド200Aの振動を、抑制することができる。ジャミング部200cは、例えば、弾性伸縮機構を覆うように設けられ、ジャミングによる状態の固定化を行うことにより、クラッチ200fと同様に、伸縮部の相対変位を制限し、弾性に起因するハンド200Aの振動を抑制することができる。
ハンド200Aには、接触センサ200gや、力センサ200h、変位センサ200i(例えば、非接触レーザ変位計)が設けられている。さらに、ハンド200Aに設けられたカメラ21は、例えば、距離情報を検出できるカメラ(例えば、RGBDセンサ)である。よって、コントローラ100のアーム制御部120やハンド制御部140がこれらセンサやカメラによる検出結果に基づいてモータ等の制御対象を制御することにより、ハンド200から物体Pに印加される力がより一層抑制されうる。
また、吸着パッド200aを、突出位置pa(図3A,図3B)と収納位置pb(図3C,図3D)との間で移動可能に構成することにより、吸着パッド200aによる物体Pの把持が可能な状態(図3A,図3B)と、フィンガー200bによる物体Pの把持が可能な状態(図3C,図3D)とを切り替えることができる。
[ハンドの構成例2]
図4、図5A、および図5Bは、ハンド200B(200)の構成例を示す斜視図である。図4は、フィンガー200bが閉じた状態、図5Aおよび図5Bは、フィンガー200bが開いた状態を示し、図5Bは、図5Aとは異なる方向から見た図である。
ハンド200Bは、ベース200jにガイド200kを介してそれぞれ平行移動可能に設けられた二つのフィンガー200bを有している。ガイド200kは、例えば、レールとスライダとを有し、フィンガー200bを直線状の軌道に沿って移動可能に案内するとともに、当該軌道上の複数の位置で位置決めすることができる。このような構成により、複数のフィンガー200bは、互いの距離(間隔)を変化させることができる。なお、ガイド200kによるフィンガー200bの案内方向は、アーム2の先端部分の長手方向との交差方向(直交方向)である。
ハンド200Bは、回転直動変換機構200mを有している。回転直動変換機構200mは、ベース200j内に収容されたモータ(不図示)の回転を直動に変換する機構であり、例えばラックアンドピニオンである。このような構成により、コントローラ100のハンド制御部140によってモータを制御することにより、フィンガー200bの位置、すなわち二つのフィンガー200bの距離(間隔)を制御することができる。本実施形態では、回転直動変換機構200mが、フィンガー200bのそれぞれに対応して設けられている。ただし、回転直動変換機構200mは、これには限定されず、種々の構成や方式が採用されうる。一例として、回転直動変換機構200mは、モータに連動して回転するピニオンと、当該ピニオンと噛み合う互いに平行な二つのラックとを有し、ラックがそれぞれフィンガー200bをガイド200kに沿って平行移動させる構成であってもよいし、別の例として、回転直動変換機構200mは、モータによって回転される雌ねじナットとベース200jに回り止めされて直動する雄ねじシャフトとを有したねじ機構であってもよい。また、モータと回転直動変換機構200mとの間に、減速機構や、回転方向変換機構等が介在してもよい。
フィンガー200bは、ガイド200kに沿って案内される移動ベース200b1に、先端部200b2が弾性的に伸縮可能に支持された、フローティング構造(弾性伸縮構造)を有している。先端部200b2は、弾性機構200eを介して、移動ベース200b1に、フィンガー200bの延びる方向に移動可能に支持されている。移動ベース200b1に対する先端部200b2の移動方向は、アーム2の先端部分の長手方向である。変位センサ200iは、移動ベース200b1と先端部200b2との相対変位を測定する。なお、変位センサ200iは、エンコーダや、超音符センサ、可変抵抗、静電容量センサ、パルスコーダ―、ファイバセンサ等であってもよい。本実施形態では、フィンガー200bの形状が先細りであるとともに板状であり、かつ弾性機構200eや変位センサ200iがフィンガー200bの先端から離間して配置されている。このような構成により、フィンガー200bが狭い隙間等にも入り易いという効果が得られる。
図6は、ハンド制御部140のブロック図である。ハンド制御部140は、コマンド生成部140a、目標値生成部140b、駆動制御部140c、判定部140d、ドライバ140eを有する。
コマンド生成部140aは、把持・動作計画生成部101d(図2)から計画生成部101c(図2)を経由して入力された動作命令に応じて、各作業プロセスで必要となる動作手順を動作コマンドとして生成する。把持・動作計画生成部101d、計画生成部101c、およびコマンド生成部140aは、それぞれの演算処理に際し、物体データベース102aや把持データベース102bを参照することができる。物体データベース102aおよび把持データベース102bの利用については、後に詳しく述べる。なお、動作命令は、マニピュレータ20のアーム2やハンド200の一連の動作に関する命令であり、例えばプログラムの形態で保持される。また、動作命令は、不図示のユーザインタフェースにおいて表示された命令コマンドを作業者がタッチすることにより与えられてもよいし、作業者の音声指示により与えられてもよい。
目標値生成部140bは、コマンド生成部140aからモータ等の駆動部(可動部)に対する動作コマンドの指令を受け取る。目標値生成部140bは、駆動部の目標値を算出し、駆動部の駆動に関する目標指令値を生成する。
駆動制御部140cは、目標値生成部140bから駆動部の目標指令値を受け取り、目標指令値に応じて駆動部を駆動するための駆動指示を生成する。
判定部140dは、信号処理部101bから各種センサによる検出結果を受け取るとともに、コマンド生成部140aから動作コマンドを受け取る。判定部140dは、各種センサによる検出結果と、動作コマンドとに基づいて、動作コマンドに応じた動作が得られた状況であるか否かを判定し、当該状況に応じてコマンド生成部140aに戻値コマンド(補正指令)を与えることができる。また、判定部140dは、当該状況に応じて駆動制御部140cに駆動停止指令を与えることができる。
ドライバ140eは、駆動制御部140cから駆動部の駆動指令を受け取り、駆動部の駆動出力を生成する。すなわち、ドライバ140eによって駆動部が駆動される。
[ハンドの動作例]
図7A〜図7Eは、ハンド200Bの動作手順の一例を示す模式図である。図7Aに示されるように、アーム制御部120によって制御されたアーム2の動作に伴い、当該アーム2の先端部に設けられたハンド200Bは、物体Pの上方から所定位置まで下降する。このときハンド200Bの二つのフィンガー200bは閉じた状態である。
このとき、図7Aに示されるように、アーム制御部120は、計画生成部101cで計画された計画や、カメラ21によって撮影された画像、各種センサの検出結果等に基づいて、アーム2の駆動部を制御し、物体Pより上方に離間した所定位置で、マニピュレータ20の下降を停止することができる。
次に、図7Bに示されるように、ハンド制御部140は、計画生成部101cで計画された計画や、カメラ21によって撮影された画像、各種センサの検出結果等に基づいて、二つのフィンガー200bの間隔が物体Pの幅よりも僅かに広くなるよう、ハンド200Bの駆動部を制御する。
次に、図7Cに示されるように、アーム制御部120は、計画生成部101cで計画された計画や、カメラ21によって撮影された画像、各種センサの検出結果等に基づいて、ハンド200Bが物体Pを把持する所定位置(把持位置)まで下降するよう、アーム2の駆動部を制御する。
次に、図7Dに示されるように、ハンド制御部140は、計画生成部101cで計画された計画や、カメラ21によって撮影された画像、各種センサの検出結果等に基づいて、二つのフィンガー200bの間隔が狭まって二つのフィンガー200bが物体Pを把持するよう、ハンド200Bの駆動部を制御する。
次に、図7Eに示されるように、アーム制御部120は、計画生成部101cで計画された計画や、カメラ21によって撮影された画像、各種センサの検出結果等に基づいて、ハンド200Bが物体Pを把持した状態で把持位置よりも上方の所定位置まで上昇するよう、アーム2の駆動部を制御する。
アーム制御部120およびハンド制御部140は、アーム2およびハンド200Bの一連の動作を、計画生成部101cによって予め計画された計画に従って実行することができる。また、アーム制御部120およびハンド制御部140は、例えば、カメラ21によって撮影された画像やセンサの検出結果等から、ハンド200Bが物体Pや処理部50と接触したことが判定できた場合に、当該接触した位置でアーム2の下降を停止するとともにアーム2を僅かに上方へ移動させるなど、適宜カメラやセンサ等の結果に応じたアーム2およびハンド200Bの制御を実行してもよい。なお、下降、把持、および上昇のハンド200Bの一連の動作は、物体Pの把持方式によらず実行されうる。
[ハンドの構成例3]
図8は、ハンド200C(200)の構成例を示す斜視図である。図8に示されるように、ハンド200Cでは、フィンガー200bの先端部に吸着パッド200aが設けられている。この場合、ハンド制御部140は、物体Pに応じて、あるいはその他の状況に応じて、吸着パッド200aによる物体Pの把持か、フィンガー200bによる物体Pの把持かを、選択することができる。また、この場合、吸着パッド200aは、図3Bのハンド200Aのように、姿勢可変機構200dを介してフィンガー200bに回転可能に設けられているのが好適である。
[システムの基本動作1(作業台への部品の供給)]
図9は、システムの基本動作の一例が示されたフローチャートである。ここでは、搬送機構40が、ケースBとしての部品かごに収容された物体Pとしての部品を、部品かごごと物体ハンドリング装置1内に取得(搬入)し、マニピュレータ20が当該部品を作業台70へ搬出する場合が例示される。
まず、コントローラ100において、システムが起動されるかまたはリセットされるとともに、上位系から動作指示を受け取ると(S101)、コントローラ100は、まず、初期キャリブレーション動作を実行する(S102)。この場合、コントローラ100は、特段問題が無ければ、上位系に問題が無い旨を通知する。これにより、上位系からコントローラ100に、部品の作業台70への供給が指示されるか、あるいは当初受け取っていた動作指示(供給指示)に基づく制御が開始される。なお、初期キャリブレーション動作については、後に詳しく述べる。
次に、コントローラ100は、部品(供給対象部品)を収容した部品かごが、物体ハンドリング装置1外の所定位置、例えば部品棚から、物体ハンドリング装置1内の所定位置に搬送されるよう、搬送機構40を制御する(S103)。
次に、コントローラ100は、ベース30の支柱32に設けられたカメラ33を(図1)、部品かごを撮影するよう制御する(S104)。
次に、コントローラ100は、カメラ33によって撮影された画像に基づいて、部品かご内における供給対象部品の有無の確認と、部品かご内における当該部品の位置、姿勢、および把持位置の計算と、を実行する(S105)。
次に、コントローラ100は、部品かご内の供給対象部品を把持するよう、マニピュレータ20を制御する(S106)。
次に、コントローラ100は、カメラ21,33によって撮影された画像や、各種センサの検出結果等に基づいて、ハンド200による供給対象部品の把持状態を確認する(S107)。
次に、コントローラ100は、カメラ21,33によって撮影された画像等に基づいて、作業台70(搬送先)が部品を供給できる状態にあるか否かを確認する(S108)。
次に、コントローラ100は、ハンド200が把持した部品を作業台70の指定位置に所定姿勢で配置するよう、マニピュレータ20を制御する(S109)。
一連の作業が終了すると、コントローラ100は、待機位置に移動するよう、マニピュレータ20を制御する(S110)。
[システムの基本動作2(作業台からの部品の取り出し)]
図10は、システムの基本動作の別の一例が示されたフローチャートである。ここでは、マニピュレータ20が作業台70から物体Pとしての部品を物体ハンドリング装置1内に取得(搬入)し、搬送機構40が当該部品を物体ハンドリング装置1外へ搬出する場合が例示される。
まず、コントローラ100において、システムが起動されるかまたはリセットされるとともに、上位系から動作指示を受け取ると(S201)、コントローラ100は、まず、ハンド200が作業台70近傍の所定位置へ移動するよう、マニピュレータ20を制御する(S202)。
次に、コントローラ100は、ハンド200のカメラ21によって撮影されたマーク71の画像等に基づいて、作業台70の位置および姿勢を認識するとともに、当該認識した結果に基づいて、バーチャル作業空間(演算空間)における作業台70の位置データの補正を実行する(S203)。
次に、コントローラ100は、作業台70に存在する部品(取出対象部品)を撮影するようハンド200のカメラ21を制御するとともに、撮影された画像に対する画像処理等により、当該部品を認識する(S204)。
次に、コントローラ100は、作業台70に存在する取出対象部品を把持するよう、マニピュレータ20を制御する(S205)。
次に、コントローラ100は、カメラ21,33によって撮影された画像や、各種センサの検出結果等に基づいて、ハンド200による取出対象部品の把持状態を確認する(S206)。
次に、コントローラ100は、カメラ21,33によって撮影された画像や、各種センサの検出結果等に基づいて、搬送先の状態を確認する(S207)。
次に、コントローラ100は、ハンド200が把持した部品を物体ハンドリング装置1の指定位置に所定姿勢で配置するよう、マニピュレータ20を制御する(S208)。この場合の指定位置は、例えば、搬送機構40上である。
次に、コントローラ100は、取出対象部品の状態やバーコードなどを確認する。さらに、物体データベース102aを更新する(S209)。
次に、コントローラ100は、部品(供給対象部品)を収容した部品かごが、物体ハンドリング装置1内の所定位置から、物体ハンドリング装置1外の所定位置、例えば部品棚に搬送されるよう、搬送機構40を制御する(S210)。
[情報取得システムの構成]
図11は、情報取得システム300の斜視図である。図11に示される情報取得システム300は、スライドステージ301や、回転ステージ302、位置調整機構303、センサアーム304、スライド機構305、RGBカメラ306、距離画像カメラ307、レーザセンサ308、照明アーム309、照明310、コントローラ320等を備えている。
コントローラ320は、RGBカメラ306が物体Pの種々の方向からの画像を撮影し、かつ距離画像カメラ307が物体Pの種々の方向からの距離画像を撮影するよう、各部を制御する。物体Pは、回転ステージ302上に載せられている。位置調整機構303は、回転ステージ302の高さ方向の位置を変化させ、スライドステージ301は回転ステージ302の水平方向の位置を変化させる。センサアーム304は、位置調整機構303に回動可能に支持されている。このような構成にあっては、コントローラ320が、スライドステージ301の水平位置、回転ステージ302の角度、位置調整機構303の伸縮度、センサアーム304の角度を設定あるいは調整することにより、RGBカメラ306および距離画像カメラ307による物体Pの撮影方向および撮影距離を変更することができる。なお、以下では、スライドステージ301、回転ステージ302、位置調整機構303、およびセンサアーム304を、可動機構と称することがある。レーザセンサ308による距離の測定結果は、距離画像カメラ307による測定距離のキャリブレーションに用いることができる。また、コントローラ320は、照明310による照明条件を調整することができる。
コントローラ320は、撮影された画像や、センサによる検出結果に基づいて、物体Pの物体情報を生成する。生成された物体情報は、物体データベース102aに格納される。また、コントローラ320は、物体Pの物体情報に基づいて、当該物体Pを把持するための把持情報を生成することができる。生成された把持情報は、把持データベース102bに格納される。また、コントローラ320は、把持情報に、入力あるいは受信された情報等から、物体Pの把持可能な位置や姿勢、把持のしやすさ等を示す把持スコア、把持実行時の押し込み可能量、把持判定のための閾値等を、付加して格納することができる。
また、情報取得システム300は、オペレータによる操作を入力するためのユーザインタフェース(不図示)を備える。また、情報取得システム300は、重量センサを有するとともに、その他のセンサ(不図示)を有することができる。また、情報取得システム300は、全体を覆うカバー(不図示)を装着できるよう構成されうる。
[物体データベースおよび把持データベース]
図12は、物体データベース102aに格納されている物体情報を示す表である。物体データベース102aに格納される物体情報には、例えば、物体ID番号や、物体名情報、アイテムカテゴリ情報、多方向2次元画像情報、3次元画像情報、詳細CADモデル情報、簡易CADモデル情報、バーコード情報、物体判定用識別器情報、重量情報、把持時の特性情報(例えば、柔らかい、壊れやすい、形が変わる等)、撮影条件情報等が含まれうる。ここに、物体判定用識別器情報は、例えば、物体の判別に用いられる分類器、識別器、パターンマッチング用の辞書等の情報である。また、撮影条件情報は、撮影日時や、環境、撮影機材等を示す情報である。
図13は、把持データベース102bに格納されている把持情報を示す表である。把持データベース102bに格納される把持情報には、例えば、物体ID番号や、物体名情報、把持形状カテゴリ情報、把持方法情報、把持位置情報、把持スコア情報、探索範囲情報、押込み量情報、把持判定情報、搬送姿勢情報、許容速度情報等が含まれうる。把持データベース102bでは、把持位置情報や、把持スコア情報、探索範囲情報、押込み量情報、把持判定情報、搬送姿勢情報、許容速度情報等は、把持方法毎に設定されている。図12,13から明らかとなるように、物体データベース102aに格納される物体情報と、把持データベース102bに格納される把持情報とは、物体ID番号や、物体名情報によって、互いに関連付けされている。
[情報取得システムによる物体情報の取得手順]
図14は、情報取得システム300による物体情報を取得する手順を示すフローチャートである。カバーが開けられ、回転ステージ302上に物体Pが設置され(S301)、ユーザインタフェース等から物体名ID番号あるいは物体名情報が入力されると、コントローラ320は、情報取得システム300の各部に、物体情報を取得する処理の実行を開始する指示を出力する(S302)。
次に、物体Pを設置する位置の調整が実行される(S303)。S303では、例えば、コントローラ320は、物体PのRGBカメラ306や距離画像カメラ307の仮撮影画像に基づいて、可動機構を作動させて物体Pの位置を調整し、物体Pの図心想定位置を撮影中心と一致させる。
次に、コントローラ320は、重量センサによる物体Pの重量の検出結果を取得し、当該検出結果に基づいて物体Pの重量を計測する(S304)。
次に、コントローラ320は、可動機構、例えば、回転ステージ302やセンサアーム304の位置(角度)をステップ的に変化させ、各位置(角度)において、撮影を実行するようRGBカメラ306や距離画像カメラ307を制御する(S305)。また、この際、コントローラ320は、各ステップにおいて、レーザセンサ308による距離の計測結果を取得しておく。
次に、コントローラ320は、必要に応じて、物体Pが反転した状態で、ステップS305と同様の撮影を実行する。物体Pの反転は、オペレータが行ってもよいし、マニピュレータ20や他のロボット8等の装置が使用できる状況にあっては、コントローラ320が当該装置を利用して実行してもよい(S306)。
撮影が完了すると、コントローラ320は、物体データベース102aに登録する1次物体情報を自動生成する(S307)。ここで、1次物体情報とは、例えば、物体Pの、アイテムカテゴリ情報、多方向2次元画像情報、3次元画像情報、詳細CADモデル情報、簡易CADモデル情報、バーコード情報、物体判定用識別器情報等である。1次物体情報の自動生成については、後に詳しく述べる。
次に、コントローラ320は、自動生成した1次物体情報をユーザインタフェースの出力部(ディスプレイ等)に表示し、ユーザインタフェースの入力部(キーボード等)によるオペレータの修正指示および入力データに基づいて、1次物体情報を修正する(S308)。
次に、コントローラ320は、修正された1次物体情報に基づいて、1次把持情報を自動生成する(S309)。ここで、1次把持情報とは、物体Pの把持についての、把持形状カテゴリ情報、把持方法情報、把持位置情報、把持スコア情報、探索範囲情報、押込み量情報、把持判定情報、搬送姿勢情報、許容速度情報等である。1次把持情報の自動生成については、後に詳しく述べる。
次に、コントローラ320は、自動生成した1次把持情報をユーザインタフェースの出力部(ディスプレイ等)に表示し、ユーザインタフェースの入力部(キーボード等)によるオペレータの修正指示および入力データに基づいて、1次把持情報を修正する(S310)。
次に、コントローラ320は、物品判定用識別器情報等の学習関連の処理を更新する(S311)。
次に、コントローラ320は、修正された1次物体情報を、物体データベース102aに更新登録するとともに、修正された1次把持情報を、把持データベース102bに更新登録する(S312)。
[情報取得システムにおける物体情報の自動生成]
1次物体情報のうち、詳細CADモデル情報は、例えば、得られた多方向2次元画像情報や、当該多方向2次元画像情報から再構成されて得られた3次元画像情報、距離画像情報等から得られたポイントクラウドデータのような三次元点群情報を、STLやSTEPといった3次元の面情報や点群情報に変換することにより、取得することができる。
さらに、得られた詳細CADモデル情報の図心および当該図心の基準座標が定義される。基準座標は、例えば、情報取得システム300に物体Pが置かれた姿勢を基準としてもよい。具体的には、例えば、物体Pの外接長方形の最大面の法線方向の逆方向をZ軸、最大面の長辺に沿う方向をY軸、短辺に沿う方向をX軸とするなどのルールを適用することができる。
また、簡易CADモデル情報は、例えば、得られた詳細CADモデルの頂点情報を削減したり、三次元点群情報を立方体や円柱など、少数の基本形に当てはめたりすることによって、データサイズが削減された情報として、取得することができる。
また、バーコード情報は、得られた多方向2次元画像情報から、画像処理によってバーコード領域を抽出し、バーコード情報を解析することにより、対象アイテムのID等の情報を得ることができる。この場合、バーコード情報には、物体Pにおけるバーコード領域の存在位置や存在方向を示す情報や、詳細CADモデル情報あるいは簡易CADモデル情報におけるバーコード領域の存在位置や存在方向を示す情報と、関連付けて、あるいは当該情報を含めて、物体データベース102aに格納される。
また、アイテムカテゴリ情報は、製造現場ではネジやナット、締結部品、保護部品等の部品の種別を表すような分類、完成品の物流現場では、衣類や文房具、電子機器のような物品の種別を表すような分類であり、画像情報やCADモデル情報から、カテゴリ認識技術を用いて決定することができる。
また、物体判定用識別情報、すなわち、物体の判別に用いられる分類器、識別器、パターンマッチング用の辞書等の情報は、例えば、得られた多方向2次元画像情報、3次元画像情報、物体名情報等から、SIFT、HOGやHaar−likeといった2次元画像の特徴量や、SHOTといった3次元形状データを用いた特徴量を用いた手法や深層学習等、ニューラルネットを用いた手法などにより、生成することができる。
[情報取得システムにおける把持情報の自動生成]
図15は、把持基本系モデルの模式図であり、図16は、把持方法基本データの模式図である。また、図17は、情報取得システム300による把持情報の自動生成の手順の一部を示す模式図である。
コントローラ320(データベース情報生成部)は、把持情報生成のために、予め物体モデルの基本系である図15に例示されるような把持基本系モデルと、把持基本系モデルに対する基本的な把持方法を定義した図16に例示されるような把持方法基本系データと、を有している。把持基本系モデルおよび把持方法基本系データは、プログラムに記載されてもよいし、補助記憶部等にデータベースとして登録されてもよい。
把持基本系モデルは、図15に示されるように、例えば、直方体Mo1や、平板Mo2、角棒Mo3、円筒Mo4、丸棒Mo5等の形状データである。把持方法基本データは、把持基本系モデルの各面や特徴点に対して、ハンド200による吸着Me11〜Me12や、挟み込みMe22〜Me24、掴み等、把持が可能な把持方法が定義されている。図16の例では、直方体Mo1に対しては、直方体Mo1の各面に対する吸着パッド方式による吸着Me11や、相対する各面を挟み込む挟み込みMe21が可能なことが定義される。なお、図15,16は一例に過ぎず、図15以外の把持基本形モデルや、図16に示されたもの以外の把持方法基本データも、勿論定義可能である。
把持カテゴリ情報は、図17に示されるように、例えば、形状(例えば、直方体型、平板型、複合型等)や構造材質(例えば、固さ、脆さ、柔軟性、多孔性等)によって分類される。把持カテゴリの形状は、物体情報のCADモデル情報と把持基本系モデルのマッチング処理を行い、最も近い把持基本系モデルを当てはめることにより決定できる。把持カテゴリの構造材質情報は、物体情報のRGBD画像情報からのカテゴリ認識や、アイテムカテゴリ情報からの再分類によって決定できる。
把持方法情報は、図17に示されるように、例えば、把持カテゴリの形状情報から、把持方法基本データを参照することによって、決定できる。なお、形状の組み合わせによって、把持方法基本データで定義された方向が隠れる場合等には、把持方法から除外する。
把持位置情報は、把持方法情報と同様に、把持カテゴリの形状情報で定義された対象物の基本姿勢に対して、把持方法基本データで定義された各把持方法での把持を行う、把持位置の座標値と把持姿勢を計算することにより決定できる。
把持スコア情報は、各把持方法に対して、把持位置の形状との組み合わせで規定されるルールにしたがって算出することができる。当該ルールは、例えば、吸着パッドによる吸着の場合、吸着を行う平面部の面積が広ければ、スコアを高くする、CADモデルの平面部に微小な凹凸があるような場合には、スコアを低くする、構造材質情報がプラスティックのような空気を通さないものであれば、スコアを高くする、多孔質のような空気を通すものであれば、スコアを低くする、等である。これらの情報を学習データとした識別器を通して把持スコアを決定することができる。把持スコアは、把持の成功確率の指標と考えることができる。
探索範囲情報は、把持作業中に把持失敗判定が生じた際に、対象物の再探索に利用する情報であり、把持カテゴリの形状で決定された物体Pのサイズが小さいほど探索範囲は小さく設定され、サイズが大きいほど探索範囲は大きく設定される。
押込み量情報は、把持判定の際にハンド200の押し込み量を定義したものであり、把持カテゴリの構造材質情報から、硬い材質ほど押込み量は小さく設定され、柔らかい材質ほど押込み量は大きく設定される。
把持判定情報は、把持判定を行う際の閾値であって、例えば、吸着において、吸着時の負圧(圧力)を把持判定に用いる場合にあっては、形状情報や構造材質情報から、把持位置の漏れ流量が少ないと予想される場合には、より大きな負圧が維持されるため、吸着の判定基準となる負圧の絶対値を大きくする。漏れ流量があると予想される場合には、圧力が下がりにくいため、吸着の判定基準となる負圧の絶対値を小さくする。この場合でも、十分に吸引の流量が確保できていれば、物体Pの把持は可能である。また、挟持の場合には、例えば、材質が硬い場合には、挟持の際のフィンガー200bへの反力を高く設定し、柔らかいものの場合には、フィンガー200bへの反力を低く設定する。このように、把持状態の判定値を物体Pの特性によって変化させることで、より多くの種類の物体Pを安定して把持することが可能となる。
なお、情報取得システム300のコントローラ320が実行する上述した処理は、物体ハンドリング装置1のデータベース情報生成更新部101iが実行することができる。すなわち、物体ハンドリング装置1は、情報取得システム300の一例でもある。この場合、処理部50上に載置された物体Pが、ハンド200(マニピュレータ20)のカメラ21によって複数方向や複数の距離から撮影される。この場合、マニピュレータ20を用いて処理部50における物体Pの姿勢を変化させてもよい。そして、演算処理部101により、コントローラ320による上述した処理と同様の処理が実行される。
[物体ハンドリング装置の特徴的な機能]
物体ハンドリング装置1は、以下の(1)〜(5)の特徴的な機能を有している。以下、これら機能について、順に説明する。
(1)マニュアルキャリブレーションを最小限に抑えるオートキャリブレーション機能
(2)弾性関節を有したハンドによる物体データベースおよび把持データベースに基づいた物体の柔軟なハンドリングを実現する把持機能
(3)機構・センシングの誤差、環境の変化に対し、逐次目標を軌道修正し、対象物を確実にとらえるモデルベーストリアルタイムビジュアルフィードバック制御機能
(4)作業状態を常時モニタリングし、最適な作業手順の選択、エラー復帰を実行するエラーリカバリ機能
(5)作業中のパラメータ学習により使用環境に適応していく学習制御機能
[(1)オートキャリブレーション]
図18Aは、物体ハンドリング装置1のオートキャリブレーションの手順を示すフローチャートである。また、図18Bは、ベース座標系S1とマニピュレータ座標系S2との間の平面誤差の説明図であり、図18Cは、カメラ21によって撮影された較正パターンCPが設けられたマニピュレータ20の画像を示す模式図である。
オートキャリブレーションは、演算処理部101の自動較正部101jが実行する。自動較正部101jは、自動的に、図1に示されるベース座標系S1、マニピュレータ座標系S2、および装置外座標系S3間のずれを把握し、誤差の少ない検出結果および制御結果を得るための較正を実行する。なお、前提として、処理部50のマーク51の位置は、設計情報としてベース座標系S1において既知である。また、各座標系S1,S2,S3の原点の位置や座標軸の方向は、図1に示したものには限定されない。
自動較正部101jは、まず、処理部50とマニピュレータ20の平面誤差を、ハンド200に設けられたカメラ21の撮影画像に基づいて検出する。具体的に、自動較正部101jは、処理部50のマーク51の設計での位置がハンド200のカメラ21の視野の中心ポイント、または所定の想定ポイントに重なると想定される位置および姿勢となるよう、マニピュレータ20を制御する。この場合、カメラ21の光軸がマーク51と直交する姿勢とする。そして、図18Bに示されるように、カメラ21によりマーク51を撮影した画像から、中心ポイントまたは所定の想定ポイントPtとマーク51のXY平面(方向Xおよび方向Y)のずれδx,δy(平面誤差)を計測する。方向Xおよび方向Yは、第一方向の一例である。カメラ21が距離画像カメラである場合、マーク51のXY平面位置だけでなく、Z方向位置も取得できる。Z方向位置を取得することにより、次のステップ(S502)での、マニピュレータ20による奥行位置誤差の探索範囲を絞ることができる。なお、距離画像カメラの情報は、その方向によって位置精度が異なる。一般に、奥行方向には精度が低いため、距離画像カメラの情報のみで十分な精度を出すことは難しい。ずれδx,δyは、第一誤差の一例である(S501)。
次に、自動較正部101jは、処理部50とマニピュレータ20の奥行位置誤差を、接触センサ200gや、力センサ200h、変位センサ200i等の検出結果に基づいて検出する。具体的に、自動較正部101jは、まず、ハンド200の先端部またはハンド200に設けられたプローブ(不図示)が、マーク51の設計での位置からXY平面においてS501で得られたずれδ1を減らす方向および距離に移動した位置から当該XY平面と直交した方向Zに所定量ずれた位置に移動するよう、マニピュレータ20を制御する。次に、自動較正部101jは、ハンド200の先端部またはプローブがマーク51と接触する位置まで移動するよう、マニピュレータ20を制御する。マーク51との接触は、接触センサ200gや、力センサ200h、変位センサ200i等の検出結果から認識することができる。自動較正部101jは、ハンド200の先端部またはプローブがマーク51と接触した位置でマニピュレータ20を停止し、当該停止した位置でのマニピュレータ座標系S2での位置(奥行き位置、Z方向の位置)を取得する。複数のマーク51について、上述した処理を実行してマニピュレータ座標系S2でのZ方向位置を取得し、さらに各マーク51の設計でのZ方向の位置とのずれδz(奥行誤差)を算出する。方向Zは、第二方向の一例である。ずれδzは、第二誤差の一例である(S502)。
次に、自動較正部101jは、ベース座標系S1においてマニピュレータ座標系S2を較正する。具体的に、自動較正部101jは、複数のマーク51のずれδx,δy,およびδzが最少となる第一補正行列、すなわち、マニピュレータ20(ハンド200)の代表部位のベース座標系S1における位置および姿勢の指令値に対して、当該指令値に極力近い代表部位の実際の位置および姿勢を得るための操作値を算出する第一補正行列を得る。ここでは、第一補正行列を得ることが、ベース座標系S1におけるマニピュレータ座標系S2の較正の一例である。第一補正行列は、指示較正値(第一指示較正値)の一例である(S503)。
次に、自動較正部101jは、ベース座標系S1においてベース30のカメラ33の位置および姿勢を較正する。この処理においては、マニピュレータ座標系S2がベース座標系S1に対して既に較正済みであることが肝要となる。具体的に、自動較正部101jは、まず、図18Cに示されるようなマニピュレータ20(アーム2またはハンド200)に設けられた較正パターンCPが、カメラ33の視野内に入るよう、マニピュレータ20を制御する。次に、自動較正部101jは、較正パターンCPが当該視野内に設定された複数の所定位置に移動するようマニピュレータ20を制御し、それぞれの場所で較正パターンCPを撮影するよう、カメラ33を制御する。次に、自動較正部101jは、カメラ33による較正パターンCPの撮影結果から得られた位置および姿勢と、設計によって本来較正パターンCPのカメラ33による撮影結果から得られるべき位置および姿勢とに基づいて、ベース座標系S1におけるカメラ33の内部光学系の座標系の原点及び姿勢を算出する。カメラの内部光学系の座標系はカメラ座標系と呼ばれ、原点および姿勢は一般に外部パラメータと呼ばれるものであり、その値は、透視投影行列の推定手法等により、算出することができる。ここでは、当該公知の手法により、カメラ33のベース座標系S1における実際の位置および姿勢を得るための第二補正行列を得る。このように、ベース座標系S1におけるカメラ33の位置及び姿勢が較正されることにより、以後カメラ33で撮影した結果から、撮影対象物の位置及び姿勢を正しく算出することが可能となる。第二補正行列は、画像較正値の一例である(S504)。
次に、自動較正部101jは、以下に示すS505およびS506の手順を経て、ベース座標系S1において作業台70(装置外)の位置および姿勢を較正する(S507)。この処理においても、マニピュレータ座標系S2がベース座標系S1に対して既に較正済みであることが肝要となる。具体的に、まず、自動較正部101jは、作業台70とマニピュレータ20の平面誤差を、ハンド200に設けられたカメラ21の撮影画像に基づいて検出する。具体的に、自動較正部101jは、作業台70のマーク71がカメラ21の視野内に入るよう、マニピュレータ20を制御する。次に、カメラ21によるマーク71およびその周辺部の特徴点情報から、作業台70の大まかな位置および姿勢を算出する。次に、自動較正部101jは、マーク71の設計での位置がハンド200のカメラ21の視野の中心ポイント、または所定の想定ポイントに重なると想定される位置および姿勢となるよう、マニピュレータ20を制御する。この場合、カメラ21の光軸がマーク71と直交する姿勢とする。そして、カメラ21によりマーク71を撮影した画像から、中心ポイントまたは所定の想定ポイントとマーク71のXY平面のずれ(平面誤差)を計測する(S505)。なお、本実施形態では、カメラ21がマーク71の画像を撮影したが、カメラ33がマーク71の画像を撮影してもよい。カメラ33を用いる場合には、カメラ33の位置及び姿勢がベース座標系S1において較正されていることが肝要である。
次に、自動較正部101jは、処理部50とマニピュレータ20の奥行位置誤差を、接触センサ200gや、力センサ200h、変位センサ200i等の検出結果に基づいて検出する。具体的に、自動較正部101jは、まず、ハンド200の先端部またはハンド200に設けられたプローブ(不図示)が、マーク71の設計での位置からXY平面と直交したZ方向に所定量ずれた位置に移動するよう、マニピュレータ20を制御する。次に、自動較正部101jは、ハンド200の先端部またはプローブがマーク71と接触する位置まで移動するよう、マニピュレータ20を制御する。マーク71との接触は、接触センサ200gや、力センサ200h、変位センサ200i等の検出結果から認識することができる。自動較正部101jは、ハンド200の先端部またはプローブがマーク71と接触した位置でマニピュレータ20を停止し、当該停止した位置でのベース座標系S1での位置(奥行き位置、Z方向の位置)を取得する。複数のマーク71について、上述した処理を実行してベース座標系S1でのZ方向位置を取得し、さらに各マーク71の設計でのZ方向の位置とのずれを算出する(S506)。
次に、自動較正部101jは、ベース座標系S1において作業台70の位置および姿勢を較正する。具体的に、自動較正部101jは、複数のマーク71の平面方向のずれおよび奥行方向のずれが最少となる第三補正行列、すなわち、作業台70の代表部位のベース座標系S1における位置および姿勢の指令値に対して、当該指令値に極力近い代表部位の実際の位置および姿勢を得るための操作値を算出する第三補正行列を得る。ここでは、第三補正行列を得ることが、ベース座標系S1における作業台70の位置および姿勢の較正の一例である。第三補正行列は、指示較正値(第二指示較正値)の一例である(S507)。
本実施形態によれば、自動較正部101jは、指令値、カメラ21が撮影した画像、およびセンサによる検出結果から、比較的容易にあるいはより精度良く、指示較正値(第一指示較正値、第二指示較正値)を取得することができるため、指令値に対する誤差を減らすことができる。さらに、自動較正部101jは、複数の指令値と当該指令値のそれぞれに対応してカメラ33が撮影した複数の画像とから、比較的容易にあるいはより精度良く、画像較正値を取得することができるため、画像から得られる位置の誤差を減らすことができる。また、自動較正部101jによる較正処理は、物体ハンドリング装置1が例えば起動時や所定の時刻や時間間隔で自動的に実行されるのが好適である。このようなオートキャリブレーションは、アーム2やハンド200に弾性機構200e等の弾性部や弾性関節が設けられた物体ハンドリング装置1において有益である。本実施形態では、カメラ画像および力センサ200h等の複数のセンサを用いて座標系の較正を行う場合に、それぞれの精度の高い方向の情報をより優先的に活用している。これにより、より精細な座標系の較正が可能となる。なお、本実施形態ではカメラ画像による誤差算出の方向と力センサ200hの誤差算出の方向とが互いに直交している場合について説明したが、これら方向は、直交成分があれば、完全に直交していない場合でも有効である。
[(2)データベースに基づく柔軟なハンドリング]
図19Aおよび図19Bは、物体データベースおよび把持データベースに基づくハンド200による柔軟なハンドリングの手順を示すフローチャートである。また、図20A〜20Cは、動作経由点を示す図であって、図20Aは、初期位置p0、対象物(部品、物体)、および搬送目標位置peを示す図、図20Bは、初期位置p0から把持目標位置p3までの動作経由点を示す図、図20Cは、引上位置p4から把持解放位置p6までの動作経由点を示す図である。ここでは、一例として、演算処理部101(図2)が、ケースBとしての部品かごから、物体Pとしての部品を取り出すよう各部を制御する際の手順が示される。
演算処理部101は、カメラ21が部品(物体P)の周辺を撮影するよう、カメラ21およびマニピュレータ20を制御する。ここでは、複数の部品の画像が撮影されてもよい(S601)。
次に、物体認識部101hは、カメラ21によって撮影された部品の画像と、物体データベース102aの物体情報とを比較して、撮影された部品を特定する。物体認識部101hは、物体データベース102aから、該当部品の物体ID番号を取得する(S602)。
次に、演算処理部101は、上位から指示された対象物としての部品の物体ID番号とS602で特定された部品の物体ID番号とを比較し、認識した部品に対象物が含まれているか否かを判定する(S603)。
認識した部品に対象物が無い場合にあっては(S603でNo)、照明条件や、ハンド200のカメラ21の撮影姿勢等、何らかの撮影条件を変更し、ベース30のカメラ33あるいはハンド200のカメラ21で再撮影を実施し(S604)、S602に戻る。
認識した部品に対象物があった場合(S603でYes)、物体認識部101hは、撮影された三次元情報と物体データベース102aのCADモデル情報とのマッチングを行い、認識された物品の姿勢を算出する。このとき、部品かごの姿勢や、対象物以外の部品の姿勢の計算等を実施してもよい(S605)。
次に、把持・動作計画生成部101dは、把持データベース102bに格納されている把持情報を参照し、認識した部品の把持方法および把持点の候補を算出する。ここで、把持データベース102bには、部品に対して、複数の把持方法、複数の把持点、およびそれぞれの把持スコア等が含まれているが、把持・動作計画生成部101dは、認識した部品の位置姿勢情報、部品かごの位置姿勢情報に基づいて、把持スコアの再計算、把持点の選択等を実行する。具体的には、認識した部品の各面に配置された把持点のうち、部品かごの開口部方向に向いた把持点のスコアを高くする、等である(S606)。
次に、把持・動作計画生成部101dは、ハンド200の初期位置p0から搬送目標位置peまでの図20A〜20Cに示される動作経由点の算出を実行する。動作経由点は、例えば、ハンド200を部品かご(ケースB)に挿入させるための挿入準備位置p1、ハンド200で部品(物体P)の把持する直前の把持直前位置p2、部品の把持動作を行うための把持目標位置p3、把持した部品を部品かごから引き上げる引上位置p4、ハンド200を作業台70の空間に挿入するための作業台進入位置p5、対象物を作業台70の所定の位置に置くための把持解放位置p6等である。挿入準備位置p1は、部品かごの位置姿勢の認識結果から、ハンド200のカメラ21で部品かごを確認しやすいハンド200の位置や把持目標位置p3に移行しやすい位置を考慮して算出する。把持直前位置p2は、把持目標位置p3に対して、法線方向に少し離れた位置など、ほぼ直線的な動作で把持目標位置p3に到達できることを考慮して算出する。作業台進入位置p5は、作業台70の位置姿勢の認識結果から、ハンド200のカメラ21で作業台70を確認しやすいハンド200の位置や把持解放位置p6に移行しやすい位置を考慮して算出する。把持解放位置p6は、部品の把持を解放した際に、部品が所定の位置に収まるように算出する(S607)。
次に、手先軌道生成部121は、動作経由点情報、物体ハンドリング装置1の形状、部品かごや、部品などの外部環境の状態を示す情報を利用し、干渉を避けながら、ハンド200が所望の動作経由点を通過する手先軌道を生成する。具体的には、RRTやPRMといった手法を用いて算出することが可能である(S608)。
ここで、有効な軌道が算出できなかった場合において(S609でNo)、演算処理部101は、次の把持点候補が存在するか否かを確認し、次の把持点候補が無かった場合(S610でNo)、作業は状態変更動作F22(図22A,図22B、後に詳述)へ移行する。次の把持点候補があった場合には(S610でYes)、演算処理部101は、当該次の把持点候補を設定し、S607の処理を実行する。
S608で有効な軌道が算出できた場合(S609でYes)、マニピュレータ制御部110は、ハンド200を初期位置から挿入準備位置p1に移動する。ここで、移動はあらかじめ決められた軌道に添って移動しても良いし、ハンドカメラやハンド200のカメラ21等による部品かごの位置姿勢をもとに、後述のビジュアルフィードバックサーボにより軌道を修正しながら移動しても良い(S612)。
次に、マニピュレータ制御部110は、ハンド200を挿入準備位置p1から、把持直前位置p2に移動する。この際、ハンド200のカメラ21やベース30のカメラ33等による部品の特徴点情報をもとに、後述のビジュアルフィードバックサーボにより軌道を修正しながら移動しても良い(S613)。
次に、演算処理部101は、ハンド200のカメラ21やベース30のカメラ33等による部品とハンド200の観測情報から、把持目標位置p3に対して位置および姿勢の誤差が算出された場合には、把持目標位置p3およびその際の姿勢を修正する(S614)。
次に、マニピュレータ制御部110は、ハンド200を把持直前位置p2から、把持目標位置p3に移動する(S615)。
次に、ハンド制御部140は、把持動作を開始する。具体的には、吸着方式で把持を行う場合、電磁弁等を走査し、吸着力を発生させる。二指や多指ハンドによる挟持の場合には、指を閉じる動作を開始する(S616)。
次に、信号処理部101bが把持動作状態の各種センサ情報の処理を実施し、計画生成部101cが把持動作状態情報を監視する。把持動作状態情報は、具体的には、吸着時の真空圧力や流量、接触センサのセンサ値、弾性関節部の変位センサ値、把持機構駆動部のトルク、把持動作処理時間等である。把持動作状態の確認は、把持データベース102bに格納されている把持判定情報を利用する。把持目標位置p3を超えて、さらに把持動作を継続する場合には、把持データベース102bの押込み量情報を利用する。
次に、状態監視部101eは、把持動作状態情報に基づいて、把持確認状態になったか否かの判定を行う。把持確認状態は、具体的には、吸着時であれば真空圧力が所定の値になった状態であり、接触センサで接触が確認された状態であり、変位センサやトルク値が所望の値になった状態である。ここでの判定の閾値は把持データベース102bに登録された把持判定情報を利用する(S618)。
状態監視部101eは、把持確認状態が検出されたら(S618でYes)、把持状態の結果の判定を行う。具体的には、吸着時であれば真空圧力、二指であれば二指の間隔等で、判定を行うことができる(S619)。
把持状態の結果の判定において、部品を把持できていないと判定した場合には(S620でNo)、S621に移行する。S621では、現状の把持点で把持点近傍探索処理が実施済みであるかどうかを確認する。探索が実施済みの場合には(S621でYes)、次の把持点候補を設定する(S622)。実施済みでない場合には(S621でNo)、把持探索動作を実施する。
S620でYesの場合、マニピュレータ制御部110は、引き抜き方向へハンド200を移動する(S623)。
次に、演算処理部101は、把持状態を再度確認し、把持状態が不安定、もしくは把持できていなければ、すなわち、搬送不能な状態であれば(S624でNo)、リトライ動作F24(図24、後に詳述)へ移行する。なお、把持状態の確認のための閾値は、対象物や把持方法等によって異なるため、把持データベース102bの把持判定情報を利用する。
S624の判断において、搬送可能であった場合(S624でYes)、マニピュレータ制御部110は、ハンド200の姿勢を搬送姿勢に変換する。このとき、搬送に適した姿勢や把持の状態は、部品によって異なるため、把持データベース102bの搬送姿勢情報を参照して決定する。具体的には、把持データベース102bで指定される姿勢は、吸着の場合には、部品と吸着パッド200aにモーメントがかかりにくい吸着パッド200aが下向きの姿勢である。挟持の場合には、多指の一部が部品の下部を支えるような姿勢である。いずれの場合にも、搬送時の振動を抑制する為、クラッチ200fを制御することにより弾性機構200eを固定し、非弾性状態にすることが可能である(S625)。
次に、マニピュレータ制御部110は、搬送姿勢を保ったまま、作業台進入位置p5に移動する。ここで、把持中の移動では、把持している部品を落下させるリスクがあるため、把持データベース102bの許容速度情報を用いて、搬送速度を許容速度以下に抑えることで、搬送時間を最大限短縮しながら、安定した搬送を実現することができる。ここでの搬送速度は、把持状態に応じて変更することができる。これは把持データベース102bの把持判定情報に複数のレベルを設定し、当該レベルに応じた複数の搬送許容速度を設定することによって実現できる。例えば、吸着方式の場合、吸着圧を把持判定情報として利用できる。一例として、ある部品に対しては、吸着圧が−40kPa以下である場合には十分に吸着把持ができているため、搬送許容速度を500mm/secに設定する。吸着圧が−40kPa〜−30kPaである場合には、搬送速度を200mm/secに設定する。吸着圧が−30kPa〜−15kPaである場合には、搬送許容速度を200mm/secとする(S626)。なお、搬送状態の許容値は、速度のみに応じて設定する必要はなく、加速度や加加速度(ジャーク)に応じて設定しても良い。また、吸着圧が−15kPaより大きい場合は、十分な吸着把持状態が得られていないため、S624において搬送不能と判断され(S624でNo)、リトライ動作等に移行する。
演算処理部101は、ハンド200のカメラ21を、作業台70の搬送先位置周辺を撮影するよう制御する(S627)。次いで、演算処理部101は、上位からの指示と撮影結果に基づいて、部品の把持解放位置p6を修正する(S628)。次に、マニピュレータ制御部110は、ハンド200を把持解放位置p6へ移動させ、ハンド制御部140は部品の把持を解除して、部品を上位から指示された搬送目標位置peに置く(S629)。これにより、一連の処理が終了する。
[(3)リアルタイムビジュアルフィードバック制御]
図21Aは、マニピュレータ制御部111(110)のブロック図である。図21Bは、画像特徴量目標値の説明図である。マニピュレータ制御部111は、非線形動力学モデルを用いたモータ111eの制御量を補正するフィードバック系と画像特徴量を用いた特徴量ベースの制御器の両方、もしくはいずれかを持っていることが特徴である。
マニピュレータ制御部111では、計画生成部101cから、部品(物体P)の把持位置など、ハンド200の移動目標となる位置情報が与えられると、画像特徴量生成器111aが、物体データベース102a等の物体情報を利用して、把持目標位置p3への移動を達成するための画像特徴量目標値を生成する。画像特徴量目標値は、具体的には、図21Bに示すように、ハンド200が把持目標位置p3に到達したときにハンド200のカメラ21等のカメラセンサから得られる部品画像の特徴点の配置情報等である。なお、図21Bでは、理解のために特徴量像を示しているが、実際には特徴点の座標や特徴点間の距離など数値的な情報で良い。これは、物体データベース102aに保存された部品の各面の画像や特徴量情報から必要な面の情報を抜き出したり、CADモデル情報から生成したり、取り出した情報を視点変換することなどにより生成することができる。
特徴量ベース制御器111bは、画像特徴量目標値とハンド200のカメラ21等のカメラセンサから得られる画像特徴量の誤差を入力として、モータ111e制御量を算出する。特徴量ベース制御器111bは、画像ヤコビヤンを用いて、一般的なPI制御系を用いることで構成することができる。
算出されたモータ111e制御量は、物体ハンドリング装置1の非線形動力学モデル補償器111dによって、値が補償される。非線形動力学モデルを用いた制御量の補償方法の詳細については後述する。ここで、非線形動力学モデルには、物体ハンドリング装置1だけでなく、重量など把持の部品のモデルや部品の把持位置など把持状態に関する情報が取り込まれている。
モータ111eは補償された制御量に従って、駆動され、アーム2を動かし、ハンド200を所定の位置に動かすなどのタスクを実行する。画像特徴量算出器111fはハンド200のカメラ21等のカメラセンサからの出力画像を用いて、目標に対する画像特徴量を算出する。
図21Aのマニピュレータ制御部111では、把持目標位置p3に対して、ハンド200のカメラ21で観測される画像が一致するようにマニピュレータ20が動作する為、マニピュレータ20の機構パラメータやカメラパラメータに多少の誤差があっても、最終的には誤差が抑圧され、正確な位置にハンド200を動かすことが可能となる。また、部品が移動していても、部品の移動に合わせて、ハンド200を追従することが可能となる。さらに、マニピュレータ制御部111は、非線形動力学モデル補償器111dを有している。これにより、アーム2のたわみや、振動を補償し、より正確にハンド200の追従が可能になる。カメラ画像を用いた制御系では、アーム2が振動すると、画像情報が大きく揺らぐため、安定した制御を実現することが困難であるが、本システムでは、非線形動力学モデル補償器111dによる振動抑圧によって、安定した制御の実現が可能である。
さらに、図21Aのマニピュレータ制御部111では、非線形動力学モデルパラメータ管理部111gにより、部品(物体P)の把持状態によって、非線形動力学モデル補償器111dが用いる非線形動力学モデルを切り替えることができる。通常、非線形動力学モデルを用いたモデルベースト制御系では、ハンド200が物体を把持したり、解放したりすることで、アーム2の負荷が変化すると、モデルと現実の差が大きくなり、制御系が不安定となる。しかしながら、マニピュレータ制御部111では、認識された物体情報や、把持の状態の情報から非線形動力学モデルを切り替えることにより、把持搬送作業のどの工程においても、安定した制御を実現することができる。なお、ここでは、把持目標位置p3を示す情報として部品の特徴点を利用したが、作業台70や、処理部50のマーク51、部品かご(ケースB)の特徴点を利用することも可能である。
図21Cは、マニピュレータ制御部111A(110)の別の例を示すブロック図である。目標画像や特徴点が得られない場合には、図21Aの特徴量ベース制御器111bに替えて図21Cのような通常のPI制御系のPI制御器111hを利用する。マニピュレータ制御部111Aのような制御系であっても十分なキャリブレーションによって、比較的安定した動作が可能となるほか、非線形動力学モデル補償器111dにより、より正確な制御が可能となる。
図21Dは、マニピュレータ制御部111におけるパラメータ変更の手順を示すフローチャートである。ここでは、部品かごから、作業台70に物体Pとしての部品を把持搬送する際の手順が示される。
演算処理部101は、部品周辺を撮影するよう、ベース30のカメラ33を制御する(S701)。
次に、物体認識部101hは、ベース30のカメラ33によって撮影された画像と物体データベース102aの物体情報とを利用して、撮影された部品の物体ID情報を特定する(S702)。
次に、物体認識部101hは、撮影された三次元情報と物体データベース102aのCADモデル情報のマッチングを行い、認識された部品の姿勢を算出する。このとき、部品かごの姿勢や、部品以外の物体の姿勢計算も実行する(S703)。
次に、把持・動作計画生成部101dは、把持データベース102bを参照し、認識した部品に対して把持方法及び把持位置を算出する(S704)。
次に、マニピュレータ制御部111(110)は、算出された把持方法に合わせて、ハンド200の状態の変換動作を実施する。具体的には、吸着方式と算出された場合には、吸着パッド200aを突出させる、フィンガー200bによる挟持方式と算出された場合には、吸着パッド200aを収納する、等の動作である(S705)。
次に、非線形動力学モデルパラメータ管理部111gは、S705で設定したハンド200の状態に合わせて、非線形動力学モデル補償器111dで用いる動力学モデルのモデルパラメータを設定する。設定するモデルパラメータには、事前学習によって決定したものが用いられる。また、事前学習が行われていない場合には、このタイミングで制御系にランダム信号等を印加し、パラメータ学習を行っても良い(S706)。
次に、マニピュレータ制御部111は、設定したモデルパラメータを用いて、ハンド200が挿入準備位置p1に移動するようマニピュレータ20を制御する。ここでは、最適なモデルが設定されているため、マニピュレータ20を最高速で動かしても、安定した動作が可能である。さらに、部品かごの特徴点を活用した特徴量ベースの制御を実施することで、より正確に部品かごを挿入準備位置p1に移動することが可能となる(S707)。
次に、マニピュレータ制御部111は、ハンド200が挿入準備位置p1から把持直前位置p2へ移動するよう、マニピュレータ20を制御する。部品の特徴点情報を活用した特徴量ベースの制御を実施することで、より正確に把持直前位置p2へ移動することができる(S708)。
次に、マニピュレータ制御部111は、ハンド200が把持直前位置p2から把持目標位置p3へ中速で移動するよう、マニピュレータ20を制御する。このとき、部品の認識のずれ等の影響でハンド200と対象の物体Pや周辺の物体Pが接触しても、ハンド200に弾性部があるため、弾性部が衝撃を吸収し、物体Pを傷つけることが無い。また、弾性部が衝撃や、押込み力を吸収する間に、変位センサ200iや接触センサ200gが接触を判定し、マニピュレータ20の動作を止める、または力を逃がす方向に動かすことで、物体Pや、ハンド200の破壊を回避することができる(S709)。
次に、ハンド制御部140は、部品を把持するようハンド200を制御する。ここでは、接触状態を正確に検出することができる為、安定して部品を把持することができる(S710)。
次に、非線形動力学モデルパラメータ管理部111gは、把持方法、把持位置、および部品の特性に合わせて動力学モデルをセットする。把持方法及び、把持位置、把持対象の物体の特性は物体データベース102a、把持データベース102bから算出可能であり、さらに、実際に把持動作を行ったセンサ情報から、正確な把持位置を補正しても良い。非線形動力学モデルパラメータ管理部111gでは、事前に複数の先端負荷の重量や、重心オフセット等の条件で学習したモデルパラメータを有しており、指定された把持方法及び、把持位置、把持対象の物体の特性から最適なモデルパラメータの選択をする、または比較的条件の近い複数のモデルパラメータを用いた内挿等により、最適なパラメータを決定する(S711)。
次に、マニピュレータ制御部111は、把持した部品を部品かごから引き抜くよう、マニピュレータ20を制御する(S712)。
次に、マニピュレータ制御部111は、把持データベース102bを参照し、搬送許容値情報に基づいて、搬送許容速度で部品を搬送するよう、マニピュレータ20を制御する。このとき、搬送先の作業台70に設けられたマーク71を特徴点として活用することで、より正確な特徴点量が得られる為、安定した特徴量ベースの制御を実施することができる(S713)。
次に、マニピュレータ制御部111は、作業台70の搬送目標位置peに部品を配置する(S714)。
次に、ハンド制御部140は、初期状態となるようハンド200の状態を変換する(S715)。
次に、非線形動力学モデルパラメータ管理部111gは、ハンド200の状態に合わせて、モデルパラメータを設定する(S716)。
次に、マニピュレータ制御部111は、ハンド200が初期位置p0に最高速度で移動するよう、マニピュレータ20を制御する(S717)。
[(4)エラーリカバリ]
図22Aは、図19Aの状態変更動作F22の手順を示すフローチャートである。図19Aの状態変更動作F22に関し、演算処理部101は、まず、部品かご(ケースB)の位置や姿勢が変化するよう、マニピュレータ20や搬送機構40を制御する(S801)。次に、図19AのS601に戻る(S802)。このような状態変更のリカバリにより、物体ハンドリング装置1と把持対象となる部品(物体P)の位置関係が変化するため、部品を把持するまでの経路を設定できる確率、すなわち部品を把持できる確率が高まりやすい。
図22Bは、図19Aの状態変更動作F22の図22Aとは別の手順を示すフローチャートである。図19Aの状態変更動作F22に関し、この例では、演算処理部101は、まず、部品の周辺、例えば、部品や部品かごの画像上の中心や画像から算出した想定重心から離れた位置のうち、ハンド200が接触可能な接触可能位置を、算出する。これは、3次元点群など距離画像カメラの情報から、部品(物体P)の外形位置を算出し、そこまでの経路を計算することによって求めることが可能である(S901)。次に、マニピュレータ制御部110は、ハンド200の先端部が接触可能位置に所定の力を印加するよう、マニピュレータ20を制御する。この際、ハンド200は弾性機構200eおよび力センサhを有しており、マニピュレータ制御部110は、印加する力の大きさや加速度等を制御することが可能であるため、部品を損傷させることなく、所定の力を印加することが可能である(S902)。次に、マニピュレータ制御部110は、ハンド200を初期位置p0に戻す(S903)。そして、図19AのS601に戻る(S904)。この手順では、S902において、部品あるいはその周辺に力が加わることで、物品の配置状態が変化する。このような状態変更のリカバリによっても、物体ハンドリング装置1と把持対象となる物品との位置関係が変化するため、物品把持位置への経路が生まれる可能性が高まる。
図23は、図19Bの把持探索動作F23の手順を示すフローチャートである。図19BのS621の後、マニピュレータ制御部110は、ハンド200が一旦把持目標位置p3から所定距離離れた位置に移動するよう、マニピュレータ20を制御する(S1001)。演算処理部101は、把持目標位置p3の周辺を撮影する(S1002)。演算処理部101は、撮影結果から、把持対象となる部品(物体P)の画像が含まれるなど、所定の条件を満たす有効な撮影ができていると判断した場合には(S1003でYes)、把持目標位置p3を計算する(S1005)。他方、S1003で、所定の条件を満たす有効な撮影ができていると判断できなかった場合には(S1003でNo)、演算処理部101は、把持データベース102bに含まれている探索範囲情報を使い、既に算出されている把持目標位置p3から探索範囲情報で指定された範囲内かつ所定距離ずれた位置を、新しい把持目標位置p3に設定する(S1004)。S1004またはS1005の後、図19AのS607に戻る。S607では、S1004またはS1005で設定された新たな把持目標位置p3に対し、動作経由点を算出する(S1006)。探索範囲情報では、部品(物体P)に合わせて、効率の良い探索範囲が指定されている。具体的には、例えば、部品(物体P)が小さいほど探索範囲が狭く設定されるとともに、探索範囲の把持目標位置p3からのオフセット距離(ステップ距離)も小さく設定され、言い換えると、部品が大きいほど探索範囲が広く設定されるとともに、探索範囲の把持目標位置p3からのオフセット距離(ステップ距離)も大きく設定されている。このような把持探索リカバリによって、処理部品を把持するまでの経路を設定できる確率、すなわち部品を把持できる確率が高まりやすい。
図24は、図19Bのリトライ動作F24の手順を示すフローチャートである。図19BのS624で、搬送不能な状態であると判断された場合、マニピュレータ制御部110は、部品かご(ケースB)にハンド200を所定距離移動し、部品かご上で部品(物体P)の把持を解放するよう、マニピュレータ20を制御する。これにより、部品を部品かご内に戻すことができる(S1101)。そして、図19AのS601に戻る(S1102)。
[(5)作業中のパラメータ学習制御]
図25Aは、学習動作やデータベースの生成を実行する手順を示すフローチャートである。物体ハンドリング装置1では、物体データベース102aや把持データベース102bといったデータベースや学習結果を利用した物体認識部101hを備えるなど、事前に作成された学習データを活用している。しかしながら、さまざまな物体を取り扱う場合にあっては、学習データが不十分なあるいは無い物体を取り扱うこともある。そのような場合において、図25Aに示される手順が有効となる。
まず、演算処理部101は、上位のシステムから特定の物体についての把持・搬送の指令を受ける(S1201)。次に、学習制御部101g(図2)は、物体の物体ID番号に基づいて、物体データベース102aから当該物体に関する物体情報を取得するとともに、把持データベース102bから当該物体に関する把持情報を取得する(S1202)。
次に、学習制御部101gは、当該物体についての物体情報あるいは把持情報が十分であるか否かを判断し(S1203)、十分であると判断された場合には(S1203でYes)、マニピュレータ制御部110は、図19A,19Bに示されるような通常モードにより、物体の把持および搬送を実行する(S1205)。他方、S1203において、情報が不十分であると判断された場合には(S1203でNo)、演算処理部101は、学習・データベース生成モードで、把持および搬送を実行するよう、各部を制御する。学習・データベース生成モードによる把持および搬送については、後に詳しく述べる(S1204)。
把持および搬送の処理が完了すると(S1206)、学習制御部101gは、学習・データベース生成モードで把持および搬送が実行された場合、および通常モードで把持および搬送が実行された場合の双方について、学習データおよび物体データベース102aおよび把持データベース102bを更新する。ここでの更新処理は、例えば、通常モードで把持および搬送がを実行された場合でも、把持の成功や失敗、経由点生成の成功や失敗などの結果を報酬情報とし、選択された把持位置や把持方法などに関連づけられたスコア情報を更新するなどの処理である(S1207)。
図25Bは、学習・データベース生成モードでの把持および搬送の手順を示すフローチャートである。まずは、画像処理部101aが、ベース30のカメラ33で部品かごを撮影した画像から物体ID番号およびアイテムカテゴリ情報を取得し、物体認識部101hは、物体データベース102aに、物体ID番号およびアイテムカテゴリ情報と一致するものが含まれているか否かを調べる(S1301)。物体データベース102aに一致するものがあった場合、把持および搬送の処理の対象とする。次に、演算処理部101は、物体データベース102aに記憶された物体の周辺の3次元画像情報と、把持基本系モデルとのマッチングを実施し、最も一致率の高い把持基本系モデルを選択する(S1302)。そして、把持・動作計画生成部101dは、把持基本系モデルから把持方法基本データを参照し、把持方法及び、ベース座標系S1での把持位置を算出する(S1303)。次に、マニピュレータ制御部110は、通常把持モードよりも低い速度での把持および搬送を実行するよう、マニピュレータ20を制御する(S1304)。
学習制御部101gは、上位装置から学習・データベース作成モードでの処理が指示された場合や、上位装置から指定された処理の完了時刻までに十分に時間がある場合にあっては、詳細学習を実行することとし、S1307へ移行する(S1305でYes)。
S1305でNoの場合には、低速の状態のまま、所定位置への把持および搬送が実行される(S1306)。
S1307以降は、詳細学習モードである。まず、S1307において、マニピュレータ制御部110は、物体Pを通常よりも低速で処理部50まで搬送し、当該処理部50上に載置する(S1307)。次に、演算処理部101は、処理部50上に載置された物体Pについて、図14に示されたのと同様の手順により、物体情報を取得する(S1308)。次に、演算処理部101は、ハンド200に設けられたカメラ21により、物体PのRGB画像および距離画像を取得する(S1309)。次に、マニピュレータ制御部110は、物体の姿勢が反転するよう、マニピュレータ20を制御する(S1310)。次に、演算処理部101は、ハンド200に設けられたカメラ21が、物体Pを、多方向から撮影し、RGB画像および距離画像を得るよう、各部を制御する(S1311)。次に、データベース情報生成更新部101iは、撮影された画像情報から3次元画像情報、詳細CADモデル情報、および簡易CADモデル情報等の物体情報を生成する(S1312)。また、データベース情報生成更新部101iは、簡易CADモデル情報や撮影された多方向画像から、把持情報を生成する(S1313)。
次に、演算処理部101は、把持のテストを実施する。具体的には、例えば、複数の把持方法を試行し、把持の成功や失敗の確認、失敗した把持方法のデータを削除する。また、把持成功吸着時の真空圧などを用いて、把持判定情報を生成する(S1314)。
次に、データベース情報生成更新部101iは、S1314で生成された把持情報を把持データベース102bに書き込むことにより、当該把持データベース102bを更新する(S1315)。
次に、マニピュレータ制御部110は、ハンド200を、更新された把持データベース102bの把持情報に基づいて物体Pを把持するように制御し、学習制御部101gは、ハンド200が物体Pを把持した状態で、マニピュレータ制御部110に、非線形動力学モデル学習用のテスト信号を供給する処理を実行する。そして、実行した結果に基づいて、物体データベース102aおよび把持データベース102bを更新する(S1316)。そして、マニピュレータ制御部110は、所定の位置へ物体Pを把持して搬送するよう、マニピュレータ20を制御する(S1317)。
図26は、複数の物体ハンドリング装置1で学習データを共有する学習システム400の概略構成図である。上述した学習動作は、物体認識用のデータのみならず、把持のためのデータや搬送のためのデータを学習するため、組み合わせ条件が多く、より多くの学習データが必要となる。この点、図26に示されるように、複数の物体ハンドリング装置1で学習データを共有することにより、より高速な学習が可能となる。また、この学習システム400では、マニピュレータ20(ロボット)の動作用の学習データも生成されるため、新しい物体が把持・搬送の対象となった場合のみならず、新しいロボットが導入されたような場合にも、学習データを活用し、より迅速により安定した把持および搬送を実現することが可能となる。
図27には、図1の物体ハンドリングシステムとは別のシステムを示す構成図である。図27のシステムでは、物体ハンドリング装置1Aが移動機構6を備えず固定的に設置されているとともに、作業台70Aが移動機構6Aを備えている。このようなシステムでも、物体ハンドリング装置1Aは、上述したのと同様のオートキャリブレーションを実行することができるし、その他の処理も同様に実行することができる。
[非線形動力学モデルの学習と振動抑制]
図28は、マニピュレータ20Aの断面図である。このマニピュレータ20Aは、架台501、第1リンク503、第1モータ504、第1減速機505、第1エンコーダ506、第2リンク508、第2モータ509、第2減速機510、第2エンコーダ511を有する。架台501の上部に第1リンク503の一端が取り付けられており、第1リンク503の他端には第2リンク508が取り付けられている。第2リンク508の先端に負荷512が付加される。ここで、負荷512は、物体ハンドリング装置1のハンド200または、ハンド200と把持中の物体を合わせたものである。
コントローラ100Aは、第1モータ504及び第1エンコーダ506と、バネ特性を持つ第1減速機505との組合せにより、第1軸502を中心として架台501に対して第1リンク503を水平旋回させる。また、コントローラ100Aは、第2モータ509及び第2エンコーダ511と、バネ特性を持つ第2減速機510との組合せにより、第2軸507を中心として第1リンク503に対して第2リンク508を水平旋回させる。
図29は、このマニピュレータの1リンク分を示す模式図である。これは、2慣性系と呼ばれる。図28及び図29を参照して、このマニピュレータは、弾性関節(弾性機構、弾性部)を持つシリアル2リンクアームとして非線形動力学モデル化することができる。図29では、1リンク分の非線形動力学モデルの記述に必要な物理パラメータ、慣性モーメント、摩擦係数、およびバネ係数などについて第1軸を代表として示す。この図29においては、モータ520によってリンク530が減速機525を介して駆動制御される。第1軸に関する物理パラメータとしては、モータ520のトルク入力がu1で表され、モータ520の慣性モーメントがmM1で表され、モータ520の回転角、すなわちエンコーダによって検出された出力がθM1で表され、モータ520の粘性摩擦係数がdM1で表され、モータ520のクーロン動摩擦係数がfM1で表され、減速機525の減衰係数がdG1で表され、減速機525のバネ係数がkG1で表され、リンク530の慣性モーメントがmL1で表され、リンク530の粘性摩擦係数がdL1で表され、リンク530の回転角がθL1で表される。
弾性関節を持つシリアル2リンクアームの非線形動力学モデルは、次のようなモータ側が式(1)で与えられ、リンク側が式(2)で与えられる。
ただし、
θ
M=[θ
M1,θ
M2]
T:モータの回転速度(サフィックス1、2は軸番号)
θ
L=[θ
L1,θ
L2]
T:リンクの回転速度
α=[α
1,α
2]
T:リンクの並進加速度
M
L(θ
L)∈R
2×2:リンク慣性行列
c
L(dθ
L/dt,θ
L)∈R
2×1:遠心力およびコリオリ力ベクトル
M
M=diag(m
M1,m
M2):モータおよび減速機高速段慣性
D
M=diag(d
M1,d
M2):モータ軸粘性摩擦係数
D
L=diag(d
L1,d
L2):リンク軸粘性摩擦係数
K
G=diag(k
G1,k
G2):減速機バネ係数
D
G=diag(d
G1,d
G2):減速機減衰係数
N
G=diag(n
G1,n
G2):減速比(n
G1,n
G2≦1)
f
M=[f
M1,f
M2]
T:モータ軸のクーロン動摩擦トルク
E=diag(e
1,e
2):トルク/電圧(電流指令値)定数
u=[u
1,u
2]
T:入力電圧(モータの電流制御系への指令値)
である。ここで、式(1)中のsgn(a)は符号関数を表し、aが正、負、零の値に応じてsgn(a)はそれぞれ1、−1、0の値を取る。
また、diag(a、b)は、aおよびbを対角要素とする対角行列を表す。
ここで、α、β、γをリンクの長さ、重心位置、質量、慣性より構成される基底パラメータとすると、リンクの慣性行列は式(3)のように表される。
上記基底パラメータの詳細は、以下の式(4)にように表される。
α=m
1l
g1 2+I
z1+m
2l
1 2
β=m
2l
g2 2+l
z2 (4)
γ=m
2l
1l
g1
ただし、
l
i:各リンクの長さ(iは軸番号)
m
i:各リンクの質量
l
gi:各リンクの重心位置(リンクは長手方向に左右対称)
l
zi:各リンクの重心周りの慣性モーメント
である。先端の負荷512が変化すると、当該先端の負荷512が付加されているリンクの質量m
2が変化し、基底パラメータα、β、γがともに変化する。
遠心力およびコリオリ力ベクトルについては、式(5)のようになる。
モータ角速度制御系については、PI(比例および積分)制御をFF−I−P(フィードフォワード−積分−比例)制御として2自由度PI制御にした式(6)を基本構成とする。
ただし、
dθ
MRi/dt:モータの角速度目標値(iは軸番号)
dθ
Mi/dt:モータの角速度
k
FVi:モータの角速度目標値フィードフォワード制御ゲイン
k
IVi:モータの角速度偏差積分フィードバック制御ゲイン
k
PVi:モータの角速度比例フィードバック制御ゲイン
u
i:入力電圧(モータの電流制御系への指令値(トルク入力))
である。
図30は、一般的な速度制御系のブロック図である。この2自由度PI速度制御系は、図30に示すように、位置制御系(P制御)の内側にカスケード接続された制御系として構成される。なお、図30においては、第1軸に関する2自由度PI速度制御系を示している。
以下においては、位置制御系を除いたモータの角速度制御系に焦点を当てて、制御周期が十分短いものと仮定しこれによりモータの角度制御系が連続系であるとして説明を行う。
まず、図28に示す2リンクアームの先端の負荷512を例えば5kgとし、式(1)に現れる物理パラメータ(以下においては、基底パラメータα、β、γも含むものとする)を公知の同定法を用いて推定する。この同定法としては、例えば、ロボットモデルの関節剛性を考慮した特許文献3などの同定法等が用いられる。
次に、これらの推定された物理パラメータをモータ速度制御ゲインと共に、動力学モデルを表す式(1)および速度フィードバック制御則を表す式(6)に代入する。これにより、シリアル2リンクアームの速度制御系の時間応答シミュレータを構築し、ロボット実機の時間応答と良く合うかどうかを確認する。
上記の同定法によって物理パラメータが精度よく推定されていれば、これらの時間応答は良く合うはずである。もし、少しずれているようであれば、上記時間応答シミュレータを用いた非線形最小2乗法(レーベンバーグ−マルカート法など)による最適化計算を用いて、物理パラメータをファインチューニングする。図31は、物理パラメータのファインチューニングによる効果を示す図である。例えば、図31の上側に最適化前、下側に最適化後の角速度ステップ応答を示す。図31において、横軸は時間を示し、縦軸は角速度を示し、実線はロボット実機の応答を示し、破線はシミュレータによる応答結果を示す。最適化後の下側のグラフからわかるように、物理パラメータを最適化することで、シミュレータとロボット実機の角速度ステップ応答を良く合わせることができる。
そこで、本実施形態においては、上記エンコーダで計測したモータの角速度からリンクの角速度を推定するオブザーバを構成し、モータの角速度の計測値だけでなく、リンクの角速度の推定値もフィードバックすることによってマニピュレータ先端の振動を抑制しながら精度良く動作させる。以下の実施形態では、速度制御されたロボット実機とシミュレーションの時間応答とが良く合うことに着目し、物理パラメータの推定精度の良さを生かしたオブザーバを構成する。以下、各実施形態に係るオブザーバを説明する。
(非線形動力学モデルによるマニピュレータ制御部(1))
図32は、マニピュレータ制御部112のオブザーバ600のブロック図である。この実施形態のオブザーバ600は、第1および第2軸のPI制御器601、602と、2リンクアームの非線形動力学モデル603と、非線形動力学モデル603の出力を積分する積分器604a、604b、604c、604d、605a、605b、605c、605dとを有する。PI制御器601は、第1軸を駆動するモータの速度dθM1/dtと第1軸を駆動するモータの回転速度の推定値との偏差に基づいてPI制御する。PI制御器602は、第2軸を駆動するモータの速度dθM2/dtと第2軸を駆動するモータの回転速度の推定値との偏差に基づいてPI制御する。2リンクアームの非線形動力学モデル603は、PI制御器601の出力と第1軸の操作量u1との和となる第1入力τ1およびPI制御器602の出力と第2軸の操作量u2との和となる第2入力τ2に基づいて非線形動力学モデル603に基づいて第1および第2リンクの角加速度の推定を行うとともに第1および第2リンクをそれぞれ駆動するモータの角加速度の推定を行い、推定した角加速度を出力する。
積分器604aは、非線形動力学モデル603から出力される第1リンクの角加速度の推定値を積分し、角速度の推定値を出力する。積分器604bは、積分器604aの出力を積分し、第1リンクの回転角の推定値を出力する。積分器604cは、非線形動力学モデル603から出力される第1リンクを駆動するモータの角加速度の推定値を積分し、上記モータの角速度の推定値を出力する。積分器604dは、積分器604cの出力を積分し、第1リンクを駆動するモータの回転角の推定値を出力する。
積分器605aは、非線形動力学モデル603から出力される第2リンクの角加速度の推定値を積分し、角速度の推定値を出力する。積分器605bは、積分器605aの出力を積分し、第2リンクの回転角の推定値を出力する。積分器605cは、非線形動力学モデル603から出力される第2リンクを駆動するモータの角加速度の推定値を積分し、上記モータの角速度の推定値を出力する。積分器605dは、積分器605cの出力を積分し、第2リンクを駆動するモータの回転角の推定値を出力する。
これらの第1および第2リンクの角加速度の推定値、第1および第2リンクの角速度の推定値、第1および第2リンクを駆動するモータの角速度の推定値、およびモータの回転角の推定値は、それぞれオブザーバ600から出力される。
また、このオブザーバ600において、第1リンクの角速度の推定値、第1リンクとこの第1リンクを駆動するモータとの間に設けられる減速機の減速比nG1、および第1リンクを駆動するモータの角速度の推定値に基づいて、第1リンクのねじれ角速度の推定値を演算し、この推定値が出力される。同様に、第2リンクの角速度の推定値、第2リンクとこの第2リンクを駆動するモータとの間に設けられる減速機の減速比nG2、および第2リンクを駆動するモータの角速度の推定値に基づいて、第2リンクのねじれ角速度の推定値を演算し、この推定値が出力される。
この実施形態のオブザーバ600は、マニピュレータの非線形動力学モデル603を丸ごと内蔵し、PI制御器601、602のオブザーバゲインはマニピュレータの各軸の既存の速度制御系のPI制御ゲインをそのまま使用する、というシミュレータそのものである。すなわち、PI制御器601、602のオブザーバゲインは速度制御と等価なオブザーバゲインである。また、積分制御が入っているので出力推定値の定常偏差を零にする機能も内蔵されている。そして、オブザーバの実装における近似、およびゲイン調整にかかるエンジニアリングコストが全くない。
非線形動力学モデル603に基づくPI制御型オブザーバは、式(1)を変形した式(7)に示す2階微分形式で表される。なお、式(7)において、記号「^」は推定値を表す。
ただし、
dθ
M/dt=[dθ
M1/dt, dθ
M2/dt]
T:オブザーバへのモータ角速度入力
u=[u
1,u
2]
T:オブザーバへの入力(モータ電流指令値)
K
PV=diag(k
PV1,k
PV2):速度偏差比例制御ゲイン
K
IV=diag(k
IV1,k
IV2):速度偏差積分制御ゲイン
τ=[τ
1,τ
2]
T:オブザーバへの入力(モータ電流指令値)
である。
ここで、PI制御器601、602のオブザーバゲインは、ロボット実機の速度ループのFF−I−P制御(2自由度PI制御)のPとIのゲインと同じものを選んでいる。この場合、オブザーバの追従性能の1自由度だけを考えれば良いので、FF=P、すなわちフィードフォワード系を比例系としたPI制御として設定する。このシステムは、ゲインが一定の非線形オブザーバの一種である。また、積分制御が入っているので出力推定値の定常偏差は零になり、外乱除去オブザーバとしての機能も内蔵されている。
式(7)で表される状態オブサーバをコントローラ100Aに実装し、リアルタイムで図32に示す積分器を用いて2回積分することによって状態の推定ができる。なお、実際の積分は数値積分によって行われる。
さて、2慣性系の角速度制御においては、モータの角速度とリンクの角速度、モータとリンクとの軸ねじれ角速度の3状態量をフィードバックすれば、任意の極の配置が可能となり、速応性(制御系の目標値に追従する速さ)と減衰率を自在に設定できる。しかし、既存のPI制御系の再調整を伴うので移行するのは困難である。そこで、PI制御系への入力として、まず、オブザーバ600から出力される軸ねじれ角速度(リンク角速度とモータ角速度の差)の推定値だけを状態フィードバックする。この軸ねじれ角速度のフィードバックでは、PI制御のゲイン交差周波数を変化させずに減衰率だけを増加させる効果が見込まれる。このため、現場での手調整が容易なので、特に産業用ロボットの制御装置には導入しやすい。
図33は、図32のオブザーバ600を有したマニピュレータ制御部112(110)のブロック図である。オブザーバ600には、モータ角速度(エンコーダ差分)とモータドライバへの入力電圧(電流指令値)が入力される。このPI制御型のオブザーバ600による、第1および第2リンクに関する軸ねじれ角速度の推定値の状態フィードバック部701、702、703、704は、式(7)に示す2自由度PI制御(FF−I−P制御)にプラグインする形で実現可能であり、式(8)に示す制御則になる。
この軸ねじれ角速度の推定値の状態フィードバック制御ゲインkTVi(i=1,2)は、時間応答波形を見ながらの手調整が容易である。また、弾性関節を持つマニピュレータの正確な非線形動力学モデルに基づいたオブザーバを用いているので、シリアルリンクで構成されるマニピュレータの振動抑制制御では、第1軸だけの状態フィードバックだけでも十分な効果がある。なお、図33には、高慣性化のためのリンク角加速度のフィードバック定数算出部705が示されているが、このフィードバック定数算出部705の機能については、後述する。
本実施形態では、手先負荷が軽い場合にリンク側の慣性を大きく見せかけるための高慣性化制御について示す。その制御則は、式(8)にリンク角加速度の推定値のネガティブフィードバックを加えたものであり(図33の状態フィードバック部703、704)、式(9)に示すようになる。
ここで、角加速度の推定値の状態フィードバック制御ゲインkAViは、リンクの慣性モーメントの次元を持っており、マニピュレータの先端負荷の慣性変動分Δmを補償できると考えられる。例えば、式(3)の慣性行列がΔmの変動(減少)を受けると、基底パラメータα、β、γがそれぞれ式(10)に示すように、α’、β’、γ’に変化する。
α’=α―Δm
β’=β−Δm (10)
γ’=γ−Δm
ここで、式(3)の慣性行列の(1、1)成分に、式(10)に示すマニピュレータの先端負荷の慣性変動後のα’、β’、γ’を代入し、減速比nG1を考慮すると、式(11)に示すようになる。
kAV1=(2+2cos(θL2))Δm×nG1 (11)
この式(11)により、第1軸の角加速度の推定値の状態フィードバック制御ゲインを算出することができる。式(11)が、図33に示す高慣性化のためのリンク角加速度のフィードバック定数算出部705の機能である。
(非線形動力学モデルによるマニピュレータ制御部(2))
図34は、マニピュレータ制御部113(110)のブロック図である。マニピュレータ制御部113は、高慣性化および定慣性化によるリンク角加速度のフィードバック制御およびそのゲイン算出機能を備えている。
上述した慣性の低下は、アーム先端の負荷の質量が軽いときだけでなく、マニピュレータの姿勢変化でも生じる。2リンクマニピュレータでは、例えば、第2軸の角度が大きくなると第1軸の周りの慣性が低下することになる。そこで、姿勢変化による慣性の低下についても、リンク角加速度のフィードバックによって補償することを考える。
2リンクマニピュレータの場合、式(3)に示す慣性行列の(1、1)成分の最大値からの慣性低下分を考慮すると、式(12)に示すようになる。
kAV1=2γ(1−cos(θL2))nG1 (12)
この式(12)により、第1軸のリンク角加速度のフィードバック制御ゲインを算出できる。このフィードバックによって、アームの姿勢によらずに慣性を一定に保つこと、すなわち、定慣性化制御が実現され、上述の高慣性化制御と同等の振動抑制効果が得られる。
この定慣性化制御と、実施形態の高慣性化制御は併用することが可能であり、式(11)と式(12)を融合すると、式(13)に示すようになる。
kAV1=[(2+2cos(θ2L))Δm+2γ(1−cos(θL2))]nG1 (13)
この式(13)により、第1軸の高慣性化および定慣性化制御によるリンク角加速度のフィードバック制御ゲインを算出することができる。これが、図34に示す高慣性化および定慣性化制御によるリンク角加速度のフィードバック定数算出部705Aの機能である。
さらに、式(3)に示す慣性行列の非対角要素に注目すると、(1、2)成分と(2、1)成分についても、高慣性化および定慣性化制御によるリンク角加速度のフィードバック制御ゲインkBV1、kBV2はそれぞれ、式(14)、(15)のように算出することができる。
kBV1=[(1+cos(θ2L))Δm+γ(1−cos(θL2))]nG1 (14)
kBV2=[(1+cos(θ2L))Δm+γ(1−cos(θL2))]nG1 (15)
これらk
BV1、k
BV2を用いて、第1軸に第2軸の角加速度のフィードバック、第2軸に第1軸の角加速度のフィードバックを式(9)に加えると、式(16)に示すようになる。
このようにして、一般化した高慣性化および定慣性化制御を加えた振動抑制制御系が得られる。図34は、高慣性化および定慣性化制御を加えた振動抑制制御系全体のブロック図である。
図35は、別のオブザーバ600Aのブロック図である。この実施形態のオブザーバ600Aは、図32のオブザーバ600において、物理パラメータ切り替え部606を新たに設けた構成を有している。この実施形態のオブザーバ600Aは、先端負荷の変動とそれに伴う摩擦力の変動に対しては、図35に示すように、物理パラメータ切り替え部606によって非線形動力学モデル603の物理パラメータセットの切り替え(ゲインスケジューリング)を行い、振動抑制性能がロボットの先端負荷および摩擦力の変動によらずにロバストになるようにする。物理パラメータセットを陽に切り替えるためには、例えば、“Payload(5kg)”のようなロボット言語を実装し、先端負荷が変化するタイミングで用いれば良い。なお、物理パラメータセットとしては、例えば質量、慣性モーメント、摩擦係数、バネ係数等が挙げられる。
図35に示す例では、物理パラメータ切り替え部606は、先端負荷が5、4、3、2、1、0kg、つまり6通りの物理パラメータセットを必要とする。しかし、5kgの物理パラメータセットさえ精度よく推定しておけば、上述した非線形最小2乗法による最適化の手法によって、先端負荷4kgの物理パラメータセットを生成することができる。同じ要領で4kgから3kg、3kgから2kg、2kgから1kg、1kgから0kgの物理パラメータセットを生成することができる。
図36は、さらに別のオブザーバ600Bのブロック図である。この実施形態のオブザーバ600Bは、図32に示す実施形態のオブザーバ600において、テーブル記憶部607と、ステップ応答データ比較部608と、物理パラメータ最適化部609とを新たに設けた構成を有している。第5実施形態のオブザーバ600Bは、先端負荷が5kg、4kg、3kg、2kg、1kg、0kgといった数値からずれていても良い。図36では、予め取得しておいた先端負荷の質量毎(5kg、4kg、3kg、2kg、1kg、0kg)の速度ステップ応答データと、その時の物理パラメータセットを格納するテーブル記憶部607が用意されている。
まず、未知の先端負荷を持つ実機の速度ステップ応答データを取得する。次に、取得した速度ステップ応答データと、テーブル記憶部607に格納された、先端負荷毎の速度ステップ応答データとをステップ応答データ比較部608において比較する。そして、この比較結果に基づいて、実機の速度ステップ応答データに対応する先端負荷が、テーブル記憶部607に格納された先端負荷、例えば5kg、4kg、3kg、2kg、1kg、0kgのうちから最も近い先端負荷を選択し、この選択した先端負荷に対応する物理パラメータセットを初期値として選択する。実機の速度ステップ応答データに対応する先端負荷に最も近い先端負荷の選択は、例えば、実機の速度ステップ応答データと、テーブル記憶部607に格納された各先端負荷の速度ステップ応答データとの差の2乗の和が最小となる先端負荷を選択する。
さらに、上記初期値として選択された物理パラメータセットを用いて物理パラメータ最適化部609によって最適化計算を行う。この最適化計算は、上述した非線形最小2乗法による手法と全く同様である。以上によって、未知の先端負荷に対しても、精度の良い物理パラメータセットが得られるので、精度の良いオブザーバを構築でき、効果的な振動抑制制御を供することができる。