以下、添付図面に示す実施例を参照して本発明を実施するための形態につき説明する。なお、以下に示す実施例はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。また、以下の説明で取り上げる数値は、参考数値であって、本発明を限定するものではない。
図1は、本発明を適用可能なロボットシステム全体の概略的な機能構成を示している。図1において、環境認識装置500は、本実施例の仮想環境の作成方法を実施できるよう構成されている。環境認識装置500は、記録ディスク522から予め作成した空間情報520を入力する。この空間情報520は、後述の空間情報700(第1の辞書データ:図7)に相当する。環境認識装置500は、ロボット動作プログラム作成装置550で利用可能な仮想環境用空間情報530(3D仮想環境)を後述する手法によって作成し、記録ディスク532に出力する。
ロボット動作プログラム作成装置550は、環境認識装置500で作成された仮想環境用空間情報530(3D仮想環境)を入力として、ロボット動作プログラム570を作成し、記録ディスク580に出力する。ロボット装置100は記録ディスク580のロボット動作プログラム570を入力し、ロボットアームを動作させる。
図2は、本発明の実施例1に係るロボット装置の概略構成を示している。図2のロボット装置100は、例えば多関節構成のロボットアーム200と、このロボットアーム200を制御するロボット制御装置300と、を備えている。
また、ロボット装置100は、ロボット制御装置300に複数の教示点のデータを送信する教示装置としてのティーチングペンダント400を備えている。このティーチングペンダント400は、作業者によって操作され、ロボットアーム200やロボット制御装置300の動作を指定するのに用いられる。
ロボットアーム200は、本実施例1では、6関節(6軸)のロボットアームである。ロボットアーム200は、各関節J1〜J6を各関節軸A1〜A6廻りにそれぞれ回転駆動する複数(6つ)のアクチュエータ201〜206を有している。
ロボットアーム200は、可動範囲の中であれば任意の3次元位置で任意の3方向の姿勢に手先(ロボットアーム200の先端)を向けることができる。一般に、ロボットアーム200の位置と姿勢は、3次元(XYZ)座標系で表現することができる。
図2中の符号Toは、ロボットアーム200の台座を基準(原点)として配置された3次元座標系を、また、Teはロボットアーム200の手先の所定部位を基準(原点)として配置された3次元座標系を示している。
本実施例1では、アクチュエータ201〜206は、電動モータ211〜216と電動モータ211〜216に接続された減速機221〜226とから構成される。なお、これらアクチュエータ201〜206の構成は、上記の構成に限定されるものではなく、例えば人工筋肉等であってもよい。
本実施例1では、各関節J1〜J6が回転関節である場合について説明する。この場合、「関節の位置」とは、当該関節に定められた基準角度からの関節軸の回転角度を意味する。なお、各関節が直動関節の場合であってよい。その場合、「関節の位置」とは、直動関節の当該関節に定められた基準位置からの位置情報である。
ロボットアーム200は、更に、アクチュエータ201〜206の電動モータ211〜216を駆動制御する駆動制御部としてのサーボ制御装置230を有している。
サーボ制御装置230は、入力した位置指令(目標位置)に基づき、各関節J1〜J6の位置が位置指令に追従するよう、各電動モータ211〜216に電流を出力し、各電動モータ211〜216の動作を制御する。
ロボット制御装置300は、ティーチングペンダント400から複数の教示点(教示点列)の入力を受ける。
ロボット制御装置300は、ロボットアーム200の各関節J1〜J6が、複数の教示点を順次辿って動作するよう、教示点に基づき、サーボ制御装置230に所定時間間隔で出力する位置指令を生成し、所定時間間隔で位置指令を出力する。
教示点は、各関節(6つの関節)J1〜J6の教示位置をベクトル成分として含むベクトル(教示点ベクトル)である。また、ロボット制御装置300において最終的に求められる位置指令は、各関節(6つの関節)J1〜J6の目標位置をベクトル成分として含むベクトルである。即ち、ロボット制御装置300は、入力した教示点から軌道の計算をして軌道に沿った多数の位置指令を生成し、これら位置指令を所定時間間隔でサーボ制御装置230に出力する。
ここで、教示によるロボットアーム200の位置姿勢を制御する制御方式として、主に次の2種類が考えられる。
(1)関節空間移動(Motion in configuration space)
ロボットの関節角度を変位とする座標系を関節空間という。この関節空間移動方式は、上記関節空間でロボットアーム200の教示点を指定し、指定した教示点で決定される軌道に沿ってロボットを動かす方式である。
(2)タスク空間移動(Motion in task space)
三次元的な位置と姿勢で表す座標系をタスク空間という。このタスク空間移動方式は、上記タスク空間で教示点を指定し、指定した教示点とロボットアーム200の手先で決定される軌道に沿ってロボットアーム200を動かす方式である。
図2では、4つの教示点p1,p2,p3,p4を模式的に図示している。いずれの場合でもロボットアーム200は、教示点で決まる軌道に沿って動くよう制御される。なお、教示点p1,p2,p3,p4とともに示される矢印は、ロボットアーム200の手先に配置された上述の3次元座標系Teに相当する。
図2の教示点p1,p2,p3,p4のデータ表現は、必ずしも3次元空間内の座標情報であるとは限らない。例えば上記の関節空間移動(1)の場合では、教示点は全関節J1〜J6の関節角度(各モータの回転角度)によって表現される。
一方、上記のタスク空間移動(2)の場合では、教示点は、ロボットアーム200の手先部位の3次元空間の位置、姿勢に相当し、これは図2のように、p1,p2,p3,p4を座標系として表現される。
本明細書の各実施例では、ロボットプログラミング(教示)において、上記の(1)、(2)のいずれの位置姿勢制御方式を用いても構わない。
図3は、ロボット制御装置300の構成を示している。本実施例1では、ロボット制御装置300は、図3に示すように、演算部としてのCPU301を備えたコンピュータ装置として構成されている。
図3において、ロボット制御装置300は、記憶部としてROM302、RAM303、HDD304を備えている。また、ロボット制御装置300は、記録ディスクドライブfおよび各種のインターフェース306〜309を備えている。
図3において、CPU301には、ROM302、RAM303、HDD304、記録ディスクドライブ305および各種のインターフェース306〜309が、バス310を介して接続されている。ROM302には、BIOS等の基本プログラムが格納されている。
RAM303は、CPU301の演算処理結果を一時的に記憶する記憶部である。HDD304は、演算処理結果である各種のデータを記憶するための記憶部であると共に、プログラム330が格納されている。
このプログラム330は、CPU301に各種演算処理を実行させるためのプログラムである。CPU301は、HDD304に格納されたプログラム330に基づいて各種演算処理を実行する。
ティーチングペンダント400はインターフェース306に接続されており、CPU301はインターフェース306およびバス310を介してティーチングペンダント400からの教示点のデータや補間方法の指定の入力を受ける。
HDD304には、CPU301による演算結果を示すデータ(位置指令のデータ)等がCPU301の指令の下で記憶される。
ロボットアーム200のサーボ制御装置230は、インターフェース309に接続されており、CPU301は、位置指令のデータを所定時間間隔でバス310およびインターフェース309を介してサーボ制御装置230に出力する。
インターフェース307には、モニタ321が接続されている(図2では不図示)。モニタ321は、ロボットアーム200の現在の状態などを表現する各種画像やテキストデータの表示に用いられる。
インターフェース308には、書き換え可能な不揮発性メモリや外付けHDD等の外部記憶装置322を接続できるよう構成されている。記録ディスクドライブ305は、記録ディスク580に対して、各種データやプログラム等の読み出し、あるいは書き込みを行うことができる。
図4は、本実施例1に係る環境認識装置500の概略図である。この環境認識装置500は、環境入力装置501と環境認識処理装置502からなり、予めロボットアーム200およびワークなどの設計情報に基づき作成された空間情報520を記録ディスク522から入力する。
環境入力装置501は、ロボットアーム200の設置環境の3次元の空間情報を取得するための3Dカメラのような3Dデータ取得装置から構成される。3Dカメラの撮影方式はステレオ撮影方式に限らず、任意の撮影方式で構成してよい。また、機構的に可能であれば、多数のプローブ(触針)を配置した形状測定装置などを用いることも考えられる。環境入力装置501は、環境認識処理装置502に対して、各種パラレル(あるいはシリアル)インターフェースなどを介して接続される。環境入力装置501によって、ロボットアーム200の設置環境から取得された3次元空間情報は環境認識処理装置502に入力される。
環境認識処理装置502は、設計情報に基づき作成された空間情報520と、環境入力装置501によりロボットアーム200の設置環境から取得された3次元空間情報は環境認識処理装置502を用いて仮想環境用空間情報530を作成する。仮想環境用空間情報530は、例えば記録ディスク532に対して出力することができる。
環境認識処理装置502は、環境入力装置501から得られた空間情報を処理するコンピュータでありモニタ、キーボード、記録ドライブを備えている。環境認識処理装置502は、図4にノートパソコン様の形状で図示してある通り、(ロボット制御装置300と同様に)例えば既成のPC(Personal Computer)のハードウェアを利用して成るコンピュータ装置である。
環境認識処理装置502の具体的な構成は、例えば図3の構成からロボットアーム関係のブロック、例えばティーチングペンダント400、サーボ制御装置230、電動モータ211〜216、インターフェース306、309などを除く部分とほぼ同等である。以下では、環境認識処理装置502の(同等の)構成部材として図3中のCPU301、ROM302、RAM303やHDD304などに言及することがある。
図4において、環境認識処理装置502の機能として、環境認識部510が示されている。環境認識部510は、コンピュータ(図3のCPU301)のハードウェアおよびそのソフトウェアにより実装される。特に、後述するコンピュータ(CPU301)が実行する制御手順に相当する仮想環境作成プログラムは、例えば図3中のROM302やHDD304に格納される。これらのROM302やHDD304のような記憶手段は、当然ながらコンピュータ読み取り可能な記録媒体である。これらの例えばROM302やHDD304のようなコンピュータ読み取り可能な記録媒体(の一部)は、着脱可能なフラッシュメモリデバイスや磁気/光ディスクによって構成されていてもよい。また、環境認識処理装置502のソフトウェアは、ネットワークなどを経由してダウンロードされ、例えばHDD304のような記録媒体に導入したり、あるいは導入済みのソフトウェアを更新するような構成も考えられる。なお、ロボット動作プログラム作成装置550のソフトウェアや、ロボット制御装置300のソフトウェア(ロボット制御プログラム)の格納先や、導入、更新などのための構成についても、上記と同様である。
環境認識部510は、環境認識情報入力部511、平面抽出部512、物体分離部513、照合部514、空間情報作成部515の各機能ブロックを含む。
予め作成した空間情報520は、ロボットアーム200やそれにより操作されるワークなどの設計情報からCAD等で作成した空間情報であり、例えば記録ディスク522を介して環境認識処理装置502に入力される。
環境認識処理装置502の環境認識部510は、後述する認識処理によって、環境入力装置501で得られた3次元空間情報、および予め設計情報から作成された空間情報520に基づき、仮想環境用空間情報530を作成する。作成された仮想環境用空間情報530は、記録ディスク532に格納される。
環境認識処理装置502の環境認識部510は、例えばロボット設置環境から環境入力装置501により得た3次元空間情報と、予め設計情報から作成されたロボットアーム200やワークに相当する3Dモデルである空間情報520を照合する。そして、環境入力装置501により得た3次元空間情報中の物体で、空間情報520に該当する空間情報を仮想環境用空間情報530に配置(登録)する。
予め設計情報から作成 されたロボットアーム200やワークに相当する空間情報520は、環境認識部510が用いる、環境認識のための第1の辞書データ、と考えてよい。
しかしながら、実際のロボット設置環境から環境入力装置501で得られた3次元空間情報中には、予め設計情報から作成された空間情報520(第1の辞書データ)と照合しても該当しない物体の空間情報が含まれていることがある。また、予め設計情報から作成された空間情報520(第1の辞書データ)の中には、実際のロボット設置環境に配置されるべき必須の物体が含まれることがある。そして、例えば配置忘れなどによって、実際のロボット設置環境に配置されるべき必須の該当の物体の空間情報が環境入力装置501で得られた3次元空間情報中に含まれていない可能性もある。
また、特に、ケーブルのような柔軟物は実環境でどのように配置されるか、設計情報ないしはそれに基づきCAD処理された3Dモデル上では予め決定することが困難である。
本実施例1では、ケーブルのような柔軟物を介して接続された物体(例えばワーク:被作業物)が配置されているようなケースに対処するため、後述の処理では、空間情報520(第1の辞書データ)とは異なる第2の辞書データを用いる。
図5は、本実施例1のロボット動作プログラム作成装置550の概略構成を示している。
ロボット動作プログラム作成装置550は、記録ディスク532に格納された仮想環境用空間情報530を入力するコンピュータであり、モニタ、キーボード、記録ドライブを備えている。このロボット動作プログラム作成装置550も、環境認識処理装置502と同様、例えば既成のPC(Personal Computer)のハードウェアを利用して成るコンピュータ装置である。
ロボット動作プログラム作成装置550の具体的な構成は、例えば図3の構成とほぼ同等である。ただし、ロボット動作プログラム作成装置550の場合、ロボットアーム関係のブロック、例えばティーチングペンダント400、サーボ制御装置230、電動モータ211〜216、インターフェース306、309などは不要である。以下では、ロボット動作プログラム作成装置550の構成部材についても、図3中のCPU301、ROM302、RAM303やHDD304などに言及することがある。
なお、ロボット動作プログラム作成装置550と、環境認識処理装置502は、同一のPCハードウェア上にそれぞれのためのソフトウェアをインストールすることによって実装することも可能である。その場合、仮想環境用空間情報530は、同一のPCハードウェア上で授受すればよく、記録ディスク532は用いず、コンピュータ上のメモリやHDDなどを介して仮想環境用空間情報530を授受すればよい。
ロボット動作プログラム作成装置550の機能ブロックは、図5の右側に示す通り、ロボット動作プログラム作成用シミュレータ部560から成る。ロボット動作プログラム作成用シミュレータ部560は、仮想環境表示部561およびロボット動作作成部562からなる。これらの機能ブロック(560:561、562)は、コンピュータ(図3のCPU301)のハードウェアおよびそのソフトウェア(予め作成され、図3のROM302やHDD304に格納される)により実装される。
ロボット動作プログラム作成用シミュレータ部560は、具体的には、PCのモニタ上に構築されたGUI上で動作する。このGUIには、環境認識処理装置502から受信した仮想環境用空間情報530を用いて、ロボットアーム200およびその設置環境内の物体を表現した仮想環境を表示する(仮想環境表示部561)。また、ロボット動作作成部562は、ポインティングデバイスやキーボードといったユーザーインターフェース手段を介して仮想環境(仮想環境表示部561)内に表示された物体の仮想表現を操作できるよう構成される。ユーザーインターフェースのポインティングデバイスには、例えば、マウスやトラックパッド、トラックボールなどを利用できる他、モニタ上に配置されたタッチパネルなどから構成することもできる。このようなユーザ操作を介して、例えばロボットアーム200に所望の位置姿勢を取るよう動作させるための動作プログラムを作成することができる(ロボット動作作成部562)。
ロボット動作プログラム作成装置550上でユーザが作成したロボット動作プログラム570をロボット制御装置300に送り、このロボット動作プログラム570に応じてロボットアーム200を動作させることができる。ロボット動作プログラム570は、例えば記録ディスク580に格納し、ロボット制御装置300の記録ディスクドライブ305を介してロボット制御装置300に送ることができる。なお、ロボット動作プログラム作成装置550から、ロボット制御装置300へロボット動作プログラム570を転送するには、記録ディスクドライブ305を用いる他、ネットワーク通信を利用しても構わない。
以下、ロボットアーム200、およびその設置環境をより具体的に示しながら本実施例1について説明する。
図6は、実際の設置環境600に配置されたロボットアーム200、被作業物610、治工具611〜612を示している。被作業物610は、例えばロボットアーム200が組立に用いるフィクスチャ、治工具611〜612は、ロボットアーム200が組立に用いる用具である。また、図6において、接続物620〜621は、ケーブルであり、被作業物610〜612やロボットアーム200と接続されている。設置面650は、被作業物610〜612やロボットアーム200などの組立に必要な物体を設置する平面である。
一方、図7は、予め作成された空間情報700(第1の辞書データ)を模式的に表している。この空間情報700(第1の辞書データ)は、ロボット設置環境に配置される物体の設計情報に基づき、CADツールなどによって、3Dデータの形で形状データを予め作成される。また、図7の空間情報700(第1の辞書データ)は、図1、図4の空間情報520に相当し、記録ディスク522などを介して環境認識装置500に入力される。
図7において、ロボットアーム701は、実環境上のロボットアーム200に対応した空間情報(3Dモデル)、また、被作業物710〜712は実環境上の被作業物610〜612に対応する空間情報(3Dモデル)である。また、平面750は実環境上の設置面650に対応した空間情報(3Dモデル)である。これらの空間情報(3Dモデル)については、各部の形状や寸法などに関する数値化された設計情報が存在し、CADツールなどを用いて予め自動的に生成することができる。
図6の実環境と異なり、図7の空間情報700では、ケーブルなどの接続物620〜621はどのように配置するか事前に決めることが困難であるため、図7には対応する空間情報が存在しない。
さらに、図8は環境認識装置500で環境認識した空間情報800を模式的に示している。図8は、環境入力装置501により図6の設置環境600(実環境)から取得した3Dデータと、図7の空間情報700および後述の接続リスト900(第2の辞書データ)と、を用いて環境認識処理装置502が空間環境認識した結果を示している。
図8において、被作業物810〜812は図6の実環境の被作業物610〜612の環境認識結果である。ロボットアーム801は、図6の実環境のロボットアーム200の環境認識結果である。また、接続物820〜821は、図6の実環境の接続物620〜621の環境認識結果、平面850は、実環境の設置面650の環境認識結果に相当する。
以下、図9〜図14を参照して、図8に示すように生成された仮想環境(空間情報800)を取得するための情報処理につき詳細に説明する。
図9(a)は、図7の設計情報から得た空間情報700を上方から俯瞰した状態で示している。図9(a)では、簡略化のため高さ情報は省略し、XY平面のみを示している。同図において、物体A,B(901、902)およびC(903)が図7の被作業物710〜712に対応し、D(904)がロボットアーム701に対応している。これらA、B、C、D…は、便宜上の物体のIDで、本実施例では主に空間情報中における各物体を識別するのに用いる。
図9(a)において、物体AとB、CとDをそれぞれ結ぶ曲線(破線)は、ケーブル(図6の620、621)による物体間の接続を概念的に表現したものである。この例では、ケーブル(図6の620、621)は、実際はどのように配置されるか不明な接続物であり、図7の設計情報から得た空間情報700には直接含まれていない。
しかしながら、本実施例1では、設置平面(650)に配置された被作業物610や治工具611〜612(図6)が、図6や図9(a)のようにケーブル(図6の620、621)によって接続される(可能性が高い)ことが予め判明しているものとする。即ち、ケーブルのような柔軟物によって「接続」される物体A、B、C、Dが用いられることが予め判明している。
このような場合、図9(b)に示すような、接続リスト900(第2の辞書データ)を用意しておくことにより、環境認識処理装置502により高速かつ確実に図8のような空間情報800(環境認識結果)を生成することができる。
図9(b)の接続リスト900(第2の辞書データ)は、ケーブルのような柔軟物によって「接続」される物体A、B、C、Dの特徴情報をリスト化したものである。この接続リスト900(第2の辞書データ)は、例えば、環境認識処理装置502が用いるメモリ領域(例えばROM302やRAM303)に配置される。あるいは、接続リスト900は、メモリ領域(ROM302やRAM303)に展開される前はHDD304などに格納されていてもよい。接続リスト900(第2の辞書データ)の記録形式は任意であり、例えばメモリ領域ではテーブルメモリや配列などの格納形式を用いることができる。また、HDD304上では、テーブルメモリや配列などの形式に展開可能なフォーマットで任意のファイル形式を用いて接続リスト900(第2の辞書データ)を格納してよい。
ケーブルのような物体(柔軟物)の場合、予め判明している形状や寸法情報は、せいぜい直径や全長程度であることが多い。また、ケーブルのような柔軟物は、配置された時の形状なども予め予測することができない。
このため、本実施例の接続リスト900(第2の辞書データ)は、ケーブルのような柔軟物によって「接続」される物体A、B、C、Dの「接続」が生じる位置および方向、のような特徴情報をリスト(テーブルメモリ)化している。
即ち、ロボットアーム200(701)や被作業物にケーブルを接続する場合、通常、その接続のためのコネクタ(あるいはケーブルが直出しされる透孔)の位置は判明している。あるいは、そのようなケーブルの接続位置を意図して設計することは可能である。
図9(a)の物体A、Bで言えば、物体Aからはケーブルは右(right)出し、物体Bからはケーブルは左(left)出し、となっている。物体C、Dの場合は、物体からはケーブルは上(top)出し、物体Bからはケーブルは下(bottom)出し、となっている。なお、右(right)、左(left)、上(top)、下(bottom)の接続方向は、図9の平面表示上に便宜的に選んだ表示に過ぎず、接続リスト900(第2の辞書データ)のメモリ上の表現形式は任意である。また、ここでは簡略化のために4方向のみの分類で済ませているが、接続リスト900(第2の辞書データ)で、更に細分化して方向を表現できるような表現形式を用意しておくことができる。
また、図9(a)では、ケーブルの接続位置は、設置面650に相当する平面をa×bのグリッドに区切っている。そして、本実施例の接続リスト900(第2の辞書データ:図9(b))では、各物体A〜Dをこのグリッド上にマッピングし、その位置によって各物体のケーブル接続位置を定義している。なお、ここでaとbは任意の整数であり、図9(a)では6×4のグリッドを用いている。
このように、空間認識を行う空間をグリッドで(粗く)区切って取り扱うことにより、CPU(301)による演算(の一部)が簡略化され、処理の負荷を軽減することができる。
本実施例では、以上のように構成した接続リスト900(第2の辞書データ:図9(b))を用意しておく。そして、環境認識処理装置502の照合部514(図4)によって、環境入力装置501で図6のような設置環境600から得た空間情報と、接続リスト900(第2の辞書データ:図9(b))を照合する。
そして、照合部514による照合の結果、該当する物体の空間情報(3Dモデル)を配置することにより、図8の空間情報800のような環境認識結果を得ることができる。この時、環境認識装置500は、例えば、照合部514によって接続リスト900に該当すると判定した物体の空間情報(3Dモデル)を生成する。そして、図7の設計情報などに基づき予め作成された空間情報700と組み合わせる(または空間情報700に追加する)ことにより、図8の空間情報800のような環境認識結果を得ることができる。
本実施例の接続リスト900(第2の辞書データ:図9(b))は、例えば上記のケーブルのように公差や部品製作誤差といった要因により実環境と認識した空間情報の位置や形状は厳密には一致しない物体(接続媒体)の特徴情報を利用して構成している。この特徴情報は、例えば上記のケーブルのような物体の場合、上記のように接続方向や接続位置である。また、接続リスト900(第2の辞書データ:図9(b))の特徴情報は、設置空間のグリッド分割上の接続位置や、接続方向のような表現を用いているため、設置時の位置や形状の誤差を吸収して照合部514での照合を行うことができる。
なお、前述のように、図9(a)、(b)の特徴情報の例では簡易化のため高さ情報を省略しているが、接続リスト900(第2の辞書データ:図9(b))では、高さ情報を加味して、a×b×cの3次元グリッドを用いて接続位置を定義することができる。
図9(b)のように、接続リスト900には、各物体のID(A、B、C、D)に関連づけて、接続位置情報(905)、および接続方向に関する情報(906)などの特徴情報が記録される。これらの特徴情報は(905、906)は、例えば、ロボット設置環境に配置され接続物を介して相互に接続される可能性のある物体に関しては、当該物体と前記接続媒体との接続位置、および接続方向を表現した接続特性情報となっている。
本実施例における接続リスト900(第2の辞書データ)における特徴情報(特に接続物で接続される物体に関しては接続特性情報)は、設計情報から作成した空間情報700(第1の辞書データ)のように、3Dデータのような形状情報を含まない。
この点で、これら特徴情報ないし接続特性情報は、環境入力装置501で設置環境600から得た空間情報と、照合する場合、CPU(301)の演算のための負荷は小さくて済む。周知のように、実環境から得た空間情報(3Dデータ)と、空間情報700(第1の辞書データ)の3Dデータ(例えばCADデータ)のような空間情報との照合の場合は、複雑なマッチング過程を行わなければならない場合がある。ところが、本実施例の接続リスト900(第2の辞書データ)の特徴情報は、例えば接続位置や接続方向で記述された接続特性情報であって、実環境から得た空間情報(3Dデータ)との照合は小さな演算コストで実行できる。また、本実施例の接続リスト900(第2の辞書データ)の特徴情報は、例えば接続位置や接続方向のような緩やかな特性定義で構成されている。このため、ケーブルのような柔軟物の物体と照合する場合に、変形があっても確実にその物体を捉えることができる。
図9(b)の接続リスト900の接続位置情報(905)には、位置X、位置Yが含まれ、これらは図9(a)中のグリッドの番号によって表現されている。なお、図9(b)でも上記のように高さ方向(Z)の位置は簡略化のため省略しているが、接続位置情報(905)に高さ方向(Z)の情報を記録して照合するためには、例えば位置Zのフィールドが追加される。この高さ方向(Z)の情報も、Z座標により表現される空間を粗くグリッドで区切ったセルの番号により表現すればよい。
また、接続リスト900の接続方向に関する情報(906)は、上記の通り右(right)、左(left)、上(top)、下(bottom)のようなニーモニックにより表現されている。接続方向に関する情報(906)には、その他に、東(E)、西(W)、南(N)、北(N)のような任意のニーモニックを用いることも考えられる。
図10は、本実施例において、仮想環境に係る情報処理を用いてロボット装置100の動作を教示(プログラミング)する処理の全体の流れを示している。図10の制御手順は、環境認識装置500、およびロボット動作プログラム作成装置550によって実行される。この処理では、環境認識装置500によって作成された仮想環境を用いて、ロボット動作プログラム作成装置550を介してロボット動作の教示を行うことができる。
特に環境認識装置500による仮想環境の認識処理においては、予め設計情報から作成した空間情報700(図7:第1の辞書データ)、および接続リスト900(図9(a)、(b):第2の辞書データ)が用いられる。
図10のステップS901では、環境認識結果入力処理を行う。ここでは、ロボット装置100の設置環境600(図6)から環境入力装置501を介して得られた空間情報を環境認識情報入力部511に入力する。環境入力装置501が例えば3D(ステレオ)カメラのように3D画像を取得する装置であれば、空間情報は3D画像データの形式である。
ここで、ロボット装置100の設置環境600には、図6に示すように、ロボットアーム200の他、被作業物610や治工具611〜612(図6)が配置されているものとする。また、被作業物610と治工具611、ロボットアーム200と治工具612は、ケーブル(620、621)によって接続されているものとする。
ステップS902では、環境入力装置501から入力された空間情報に対して平面上物体抽出処理を実行する。この平面上物体抽出処理は、平面抽出部512で行う。この処理は、環境入力装置501から入力された空間情報からロボット装置100の設置平面上に存在する物体を抽出する処理である。この処理は、物体の抽出処理であるが、一面においては平面の除去処理であるといってもよい。
次に、ステップS903で物体分離および照合処理を行う。このうち物体分離処理は物体分離部513で行う。この物体分離処理は、環境入力装置501から入力された空間情報の輪郭検出や、画素値の連続性を解析するなどの公知の手法によって行われる。この物体分離処理が終了した段階では、分離された物体は、例えばそれがロボット装置であるかワークであるかなどはまだ同定されていない。しかしながら、さらにステップS903において、予め設計情報から作成した空間情報700(図7:第1の辞書データ)との照合(マッチング)を行う。これにより、環境入力装置501から取得した空間情報中で、空間情報700(図7:第1の辞書データ)に含まれている物体が同定される。
図7の例では、ロボットアーム701、被作業物710、治工具711、712が含まれており、これらは予め設計情報から作成した空間情報700(図7:第1の辞書データ)とステップS903の照合で該当判定され、同定される。
また、ステップS903において用いられる設計情報から作成した空間情報700(第1の辞書データ)には、図7のようにロボットアーム701、被作業物710、治工具711、712が含まれているが、ケーブルの情報は含まれていない。しかしながらケーブルに関しては、図9(a)、(b)で説明した接続リスト900(第2の辞書データ)が用意されている。
ステップS903で、分離後の物体群には、ケーブル(620、621)の空間情報が含まれている。ケーブル(620、621)の空間情報は、予め作成した空間情報700に存在しない物体に相当する。
このように、予め作成した空間情報700に存在しない物体が抽出されている場合を想定して、ステップS904の接続リスト照合処理を実行する。この接続リスト照合処理は照合部514で行う。ステップS904の接続リスト照合処理では、設計情報から作成した空間情報700に存在しない物体(ケーブルのような接続物620、621など)と、接続リスト900(第2の辞書データ:図9(b))と、が照合される。そして、接続位置や方向に相当する接続特性情報(905、906)が一致した物体(接続物)がこの照合で該当判定され、同定される。
続くステップS905(仮想環境用空間情報出力処理:出力処理工程)では、ステップS903、S904の照合(それぞれ第1の照合処理、第2の照合処理)で該当判定され、同定された物体の3Dモデルを生成する。そして、仮想環境用空間情報530(3D仮想環境)に登録する。
即ち、ステップS903で空間情報700(図7:第1の辞書データ)に該当した物体については、それらの物体に相当する3Dモデルを生成して仮想環境用空間情報530に登録する。この場合、空間情報700(図7:第1の辞書データ)は、設計情報などから生成されたCAD情報などであるから、例えば空間情報700中の当該物体に相当するCAD情報を仮想環境用空間情報530に配置することで、3D仮想環境への登録が完了する。
また、ステップS904の照合の結果、環境入力装置501から入力された空間情報中で、接続リスト900(第2の辞書データ:図9(b))に該当する物体については、その物体の空間情報(3Dモデル)を生成して仮想環境用空間情報530に登録する。
ここで、接続リスト900(第2の辞書データ:図9(b))の作成ポリシーの1つとしては、例えば次のようなものがある。接続リスト900の作成ポリシーの1つは、接続リスト900(第2の辞書データ:図9(b))が、例えばロボット動作プログラム作成時に用いられる可能性があり仮想環境用空間情報530中に存在すべき物体(のみ)を含むよう構成するものである。この場合は、上記のように接続リスト900(第2の辞書データ:図9(b))に該当する物体が存在する場合は、その全ての物体の空間情報を生成して仮想環境用空間情報530に登録すればよい。
また、接続リスト900(第2の辞書データ:図9(b))の異なる作成ポリシーとしては、仮想環境用空間情報530中に存在すべき物体と、存在すべきではない物体の双方を含むよう構成するものがある。この場合は、仮想環境用空間情報530中に存在すべき物体と、存在すべきではない物体は、両者を識別するフラグ(不図示)とともに接続リスト900に登録する。このようなポリシーで接続リスト900が構成されている場合には、接続リスト900中のフラグを参照して仮想環境用空間情報530中に存在すべき物体のみについて空間情報を生成して仮想環境用空間情報530に登録すればよい。
なお、ケーブル(620、621)のような物体は、例えば仮想環境用空間情報530中に存在すべき物体として取り扱う必要がある。例えば、仮想環境を用いたロボット動作プログラム作成時には、ケーブル(620、621)のような柔軟物は、形状が不定である。従って、ケーブル(620、621)のような柔軟物が占有する可能性のある空間は、仮想環境用空間情報530をディスプレイ上に表示する時、ロボットアームの侵入禁止領域として明示的に表示する必要がある。このようにケーブル(620、621)のような柔軟物が占める空間を生成し、仮想環境へ登録する手法の詳細については、後で別途、説明する。
以上のようにして、環境入力装置501から入力された空間情報に存在する物体のうち、設計情報から予め作成した空間情報700(第1の辞書データ)との照合の結果、該当する物体が仮想環境用空間情報530に登録される。また、環境入力装置501から入力された空間情報に存在する物体のうち、接続リスト900(第2の辞書データ:図9(b))との照合の結果、該当する物体が仮想環境用空間情報530に登録される。
図10の制御手順は、環境入力装置501から入力された3Dデータと、空間情報700(第1の辞書データ)および接続リスト900(第2の辞書データ)との照合を行う第1および第2の照合処理(S903、S904)を含む。そして、第1および第2の照合処理(S903、S904)で、空間情報700(第1の辞書データ)および接続リスト900(第2の辞書データ)に該当する物体については、入力3Dデータから3Dモデルを生成して3D仮想環境に登録する。即ち、図10の仮想環境用空間情報出力処理(S905)において、この3Dモデルの生成および、3D仮想環境(仮想環境用空間情報530)への配置を行う。この仮想環境用空間情報出力処理(S905)は空間情報作成部515で行うことができる。
さらに、図10のステップS906において、上記のようにして生成した仮想環境用空間情報530をロボット動作プログラム作成装置550に入力する。そして、ロボット動作プログラム作成装置550では、仮想環境用空間情報530に基づき、仮想環境表示部561(図5)によってモニタに環境認識した仮想環境を表示することができる。
ここで、ユーザは、ロボット動作作成部562のユーザーインターフェースを用いて、仮想環境表示部561の仮想環境表示(図8の空間情報800と同等)を操作できる。この時、上述のように各種のポインティングデバイス、タッチパネルなどから構成されたロボット動作作成部562のユーザーインターフェースを用いることができる。これにより、仮想環境表示(図8の空間情報800と同等)中の物体を直接操作するかのような直観的なユーザーインターフェース提供できる。
このようにして、仮想環境表示部561に例えば3D表示された仮想環境を用いてロボット動作プログラム570の作成のためのユーザーインターフェースを提供できる。ユーザは、仮想環境中の物体を直接操作する(例えばロボットアーム801を曲げる、など)直観的なユーザーインターフェースを介して、容易かつ手早くロボット装置100の動作をプログラム(教示)することができる。
図10のステップS907では、以上のようにして作成したロボット動作プログラム570を、ロボット制御装置300に入力し、ロボット動作プログラム570に従ってロボットアーム200を動作させる(実機動作処理)。
以下、図10の制御手順によって行われる情報処理につき、図11〜図14を参照して説明する。以下では、各ステップの情報処理の詳細な構成ないし変形例についても併せて説明する。
図11(a)、(b)、(c)は、図10の環境認識結果入力処理(S901)、平面上物体抽出処理(S902)、物体分離および照合処理(S903)のそれぞれのステップで処理される空間情報を模式的に示している。ここで、図11(a)〜(c)の処理対象は、主に環境入力装置501から入力された空間情報である。
図11(a)は、環境認識結果入力処理(図10のS901)時に環境入力装置501から入力された空間情報(800)で、同図では便宜上、図8の空間情報(800:環境認識結果)と同じ参照符号(800)を用いている。同図の平面850は、実環境の設置面650の環境認識結果である。
図11(b)は、図11(a)の空間情報800に平面上物体抽出処理(図10のS902)を加えた後の空間情報800aを示しており、図11(a)と比較すると平面850が除去されていることが判る。また、図11(b)の空間情報800aでは、複数の物体が点線(860)で囲んで示す認識物体群のように、1つの塊として認識されている。
図11(c)は、図11(b)の空間情報800aに物体分離および照合処理(図10の903)を加えた後の空間情報800bを示しており、点線で囲まれている単位で分離した物体(870〜875)として分離されている。なお、図11(c)において各物体の距離が離れているのは説明の簡略化のためであり、実際に各空間情報が移動したわけではない。
図12(a)、(b)は、物体分離および照合処理(図10のS903)の詳細を模式的に示している。図12(a)では、設計情報から予め作成した空間情報700(第1の辞書データ)に存在する物体(701、710〜712)が破線で示されている。物体分離および照合処理(図10のS903)において、空間情報700(第1の辞書データ)と照合することにより、これらの物体(701、710〜712)が分離される。
ただし、この例では、実線で示す2本のケーブルと、被作業物710から成る認識物体群860が空間情報700(第1の辞書データ)との照合で該当せず、まだ認識されていない。例えば被作業物710が、空間情報700(第1の辞書データ)上の設置位置と多少ずれた位置に置かれているような場合には、単純に空間情報700(第1の辞書データ)と照合するだけではヒットしない。
このような場合を想定して、空間情報700(第1の辞書データ)との照合を行う場合には、図12(b)に示すように許容範囲を含めたマッチング(照合)処理を行うことができる。図12(b)は、空間情報800中の被作業物710と認識物体群860のXY平面における形状を示している。
図12(b)では、被作業物710および認識物体群860は、矢印で示すようにXY方向の位置がずれている。このような場合でも、例えば、空間情報700(第1の辞書データ)と輪郭で比較を行い、輪郭の法線方向の距離が予め定めた閾値以下の場合は、予め作成された空間情報に存在する物体と判断することができる。もちろん、空間情報700(第1の辞書データ)中に対応する物体が存在しない場合は、該当なし、と判断する。なお、上記のような許容範囲を含めた輪郭比較によるマッチング(照合)処理の閾値は、ユーザが予め数値入力などにより指定しておくことができる。
なお、図12(b)では、XY平面における輪郭比較によるマッチング(照合)処理を示しているが、もちろん同様のマッチング(照合)処理はZX平面、ZY平面などについても実施できる。その場合、上記同様に許容範囲を含んでのマッチング(照合)処理を行うことができるのはいうまでもない。
図13(a)、(b)は、接続リスト照合処理(図10のS904)の詳細例を示している。接続リスト照合処理(図10のS904)は、物体分離および照合処理(同S903)後に、接続リスト900(第2の辞書データ:図9(b))を用いて行う環境認識処理である。上述のように、接続リスト900(第2の辞書データ:図9(b))は、図8の接続物(ケーブル:820、821)のように空間情報700(第1の辞書データ)に含まれない物体を環境認識することを想定して作成されている。
図13(a)は図9(a)と同様に、物体分離および照合処理(S903)において、空間情報800中の物体群(820、821)を示している。空間情報800中の環境認識すべき領域は6×4のグリッドに区画されている。
一方、図13(b)の820a、821aは、図9(b)に例示した接続リスト900(第2の辞書データ:図9(b))中で接続位置(905)および接続方向(906)の定義に該当する接続物(ケーブル:820、821)の配置領域である。配置領域820aおよび821aは、接続位置および接続方向(905、906)の定義に応じて接続物(ケーブル:820、821)が存在しうるグリッド中の領域となっている。
具体的には、配置領域820aおよび821aは、接続位置(905)のセルの、接続方向(906)に関して隣接するセルの並びとなっている。例えば、図9(b)の物体A〜Bを結ぶ接続物(ケーブル)の場合、セル(2、3)の左側、およびセル(4、2)の右側に並んだセル(3、3)およびセル(3、2)が配置領域820aとなる。
このような接続物(ケーブル:820、821)が存在しうる配置領域820aおよび821aは、接続位置および接続方向(905、906)の定義に応じてCPU(301)が予め計算によって作成しておくことができる。あるいは、CPU(301)の処理能力が充分あれば、接続リスト900(第2の辞書データ:図9(b))との照合を行う際にリアルタイムで配置領域820aおよび821aを生成してもよい。
そして、空間情報800中の物体と、接続リスト900(第2の辞書データ)とを照合(S904)する際、接続位置(905)および接続方向(906)だけではなく、配置領域820aおよび821aにおける物体の存在およびその連続性を判断する。これにより、その物体(820、821)が仮想環境用空間情報530に登録すべき空間情報か否かを自動的かつ確実に判定することができる。
なお、図13では、XY平面における配置領域820aおよび821aしか示していないが、例えば、YZ、XZのような平面についても、ケーブルのような物体の配置領域を定義できる。例えば、図9に関連して述べたように、接続リスト900に接続位置情報(905)に高さ方向(Z)の情報を記録しておく。そして、この高さ方向(Z)の情報を利用して上記同様に高さ方向(Z)を含んだ空間におけるケーブルのような物体の配置領域を定義し、仮想環境用空間情報530に登録することができる。
このように、本実施例の接続リスト900(第2の辞書データ:図9(b))を用いることにより、ケーブルのような物体の配置領域の定義を3次元(XYZ)の空間として定義できる。なお、3次元(XYZ)の空間の配置領域を例えば侵入禁止領域として定義する例については、後に図14で説明する。
図13の例では、物体(820、821)は接続リスト900(第2の辞書データ:図9(b))に含まれた接続物(ケーブル)であると判定され、接続物(ケーブル)を確実に仮想環境用空間情報530に登録することができる。
以上のように、本実施例によれば、環境入力装置501で図6のような設置環境600から得た空間情報において、予め設計情報から作成した空間情報700(図7:第1の辞書データ)に該当した物体を仮想環境用空間情報530に登録することができる。のみならず、例えばケーブルのような接続物を対象として用意した接続リスト900(第2の辞書データ:図9(b))に該当した物体も仮想環境用空間情報530に登録することができる。
そして、ロボット動作プログラム作成装置550により、仮想環境用空間情報530を用いて仮想環境をGUI表示し、GUIを介してロボットアームやワークを操作させ、その操作を介してロボット教示を行わせることができる。このため、ユーザは、仮想環境中の物体を直接操作するかのような快適かつ直観的なユーザーインターフェースを介して、迅速かつ確実にロボット装置100の動作をプログラム(教示)することができる。
このロボット教示時に用いられる仮想環境は、実際に環境入力装置501を用いて設置環境(図6の600)から得た空間情報に基づいて作成される。このため、実際に動作させるロボット装置およびその設置環境に即して正確に再現された仮想環境のGUI表示を生成することができ、誤差の少ない、正確な仮想環境を利用したロボットプログラミングを行うことができる。
ただし、仮想環境用空間情報530は、上記のようなユーザのインタラクティブな操作を介したロボットプログラミングのみに利用するものである必要はない。例えば、仮想環境用空間情報530を用いたロボット動作プログラム作成処理は、ユーザ操作を行うことなく、CPUによる何らかのアルゴリズムに基づき自動的に行われてもよい。
以上のように、本実施例1によれば、予め設計情報から作成した空間情報700(図7:第1の辞書データ)と、の照合処理のみならず、接続リスト900(第2の辞書データ:図9(b))との照合処理(接続リスト照合処理:図10のS904)も行なう。
即ち、環境入力装置501で得た空間情報1300(3Dデータ)と、空間情報700(第1の辞書データ)、接続リスト900(第2の辞書データ)との照合をそれぞれ試行する第1および第2の照合工程(S903、S904)を含む。そして、これら第1ないし第2の照合工程において、3Dデータ中で第1または第2の辞書データに該当する物体の3Dモデルを生成して3D仮想環境に配置する(出力処理工程:仮想環境用空間情報出力処理(S905))。
このため、予め作成した空間情報700(図7)に存在せず、環境認識した空間情報800(図8)に存在するケーブルのような接続物があった場合でも、その物体はCPUの自動的な処理によって、仮想環境用空間情報530に登録することができる。
ここで、図14を用いて本実施例1の作用効果の一例を説明する。図14(a)〜(c)は、ロボットアーム200が設置された実環境の設置面650を示している。
従来技術では、本実施例の接続リスト900(第2の辞書データ:図9(b))は用いられておらず、設計情報に基づき、CAD処理などにより、ロボットプログラミングのための仮想環境を作成していた。
上述のように、ケーブル等の接続物は、実際の配置形状などの予測が困難であり、CADなどによって空間情報を生成するのが難しい。このため、従来では、接続物(ケーブルなど)の物体については、ユーザが仮想環境上に図14(a)に示すように、仮想的障害物1000のような大きめの侵入禁止領域を登録することが行われていた。
ここで、図14(a)の仮想的障害物1000のような大きめの侵入禁止領域を登録すると、教示点p1からp2にロボットの手先を移動させる場合を考える。これら教示点は、例えばロボットアーム200の手先などに設定された基準位置(部位)の位置姿勢として定義される。
図14(a)に対応する仮想環境をGUI表示してロボット教示を行う場合、教示点p1からp2の間には、大きめに取られた仮想的障害物1000がある。仮想的障害物1000を回避させるためには、ユーザは教示点p1からp2の間に、教示点p3のような高い位置にある教示点を置く必要がある。教示点p1からp2の間に、教示点p3をプログラムすることにより、同図に1001で示すような手先の軌道が生成される。
これに対して、本実施例1では、図14(b)のような実環境に近い空間情報をユーザに提示できる。本実施例の接続リスト900(第2の辞書データ:図9(b))を用いる構成によれば、上述のようにケーブルのような物体の配置領域の定義を3次元(XYZ)の空間として定義できる。この3次元空間の配置領域を侵入禁止領域として仮想環境用空間情報530に登録することができる。
上述のように、接続リスト900(第2の辞書データ:図9(b))は、例えばケーブルの引き出し位置やコネクタ位置に基づき生成されている。このため、図13などに示したセル単位の空間演算によって、ごく現実的な最小の体積の3次元空間の配置領域を侵入禁止領域として仮想環境用空間情報530に登録することができる。
図14(b)の仮想的障害物1002は、上記のようにして接続リスト900(第2の辞書データ:図9(b))を用いて生成したものである。図14(b)の仮想的障害物1002は、図14(a)の仮想的障害物1000よりも小さな空間を占めるものとして生成できる。このため、ロボットアーム200の回避動作を定義する教示点p3は、図14(a)に比べて低い位置に設定することが可能となり、その結果として1003のような手先の軌道を得る。
このように、本実施例によれば、ロボットアーム200の手先を移動させるために、従来よりも短い軌道を作成することが可能となるため、ロボットの動作時間を短縮することができる。もし、本実施例のロボット装置が物品の製造(生産)環境に利用される場合には、本実施例の仮想環境プログラミングを利用することにより、タクトタイムの短縮が可能となり、効率的に工業製品などの物品の製造(生産)が可能となる。本実施例は、ケーブルのような物体が長く、どのように配置されるか不明で、特にロボットアーム200の進入禁止領域を大きく設定しなければいけないケースでの効果が高い、と考えられる。
例えば、図14(a)と図14(b)の比較では、設計での想定より実際はケーブルが低い位置に配置されたため、ロボットの動作時間は図15のように約8%程度、短縮できると考えられる。図15において、縦軸は特定のロボット動作に要する時間で、1501は従来(図14(a))方式による動作時間、1502は本実施例(図14(b))方式による動作時間に相当する。
なお、図14(b)では、侵入禁止領域を直方体で記述しているが、認識した接続物を太らせて、図14(c)の仮想障害物1004のような侵入禁止領域を生成することが考えられる。仮想障害物1004は、例えば環境入力装置501を用いて設置環境(図6の600)から得た空間情報中の物体(ケーブルのような接続物620)の輪郭を増幅(太く)することによって生成することができる。