(57)【要約】【課題】ロボットに対する教示作業を簡易化することができるロボット装置を提供する。【解決手段】ロボット装置１は、ロボットＲ２に動作を教示するための装置であり、ロボットＲ２を動作プログラムに基づいて動作させるロボット制御部１１と、画像データを取得するロボット撮像部１２と、仮想空間データ保持部１８及び少なくとも画像データ及び仮想空間データを利用して拡張現実空間データを生成する拡張現実空間データ生成部２３を有するデータ処理部１３と、拡張現実空間ＡＲの画像を表示する表示部９と、を備える。仮想空間データは、ロボットＲ２の実作業空間ＲＳに存在する物体を仮想空間ＶＳにおいて模擬した仮想物体ＶＢの情報を含む。【選択図】図３
2014180707.tif 000002
【特許請求の範囲】
【請求項１】
ロボットに動作を教示するためのロボット装置であって、
前記ロボットの動作を規定する動作プログラムを保持するプログラム保持部を有し、前記ロボットを前記動作プログラムに基づいて動作させるロボット制御部と、
前記ロボットが含まれている画像データを取得するロボット撮像部と、
仮想空間データを保持する仮想空間データ保持部、及び少なくとも前記画像データ及び前記仮想空間データを利用して拡張現実空間データを生成する拡張現実空間データ生成部を有するデータ処理部と、
前記拡張現実空間データを利用して拡張現実空間の画像を表示する表示部と、を備え、
前記仮想空間データは、前記ロボットの実作業空間に存在する物体を前記仮想空間において模擬した仮想物体の情報を含むロボット装置。
【請求項２】
前記データ処理部は、前記動作プログラムを利用して、前記動作プログラムに基づく前記ロボットの動作の軌跡を示す第１軌跡データを生成する第１軌跡データ生成部を有し、
前記拡張現実空間データ生成部は、さらに前記第１軌跡データを利用して前記拡張現実空間データを生成する請求項１に記載のロボット装置。
【請求項３】
前記ロボット制御部は、前記ロボットが有するセンサから出力されたセンサデータ及び前記画像データの少なくとも一方を利用して、前記動作プログラムに基づいて前記ロボットを動作した結果である第２軌跡データを生成する第２軌跡データ生成部を有し、
前記拡張現実空間データ生成部は、さらに前記第２軌跡データを利用して前記拡張現実空間データを生成する請求項２に記載のロボット装置。
【請求項４】
前記データ処理部は、前記仮想物体に対する前記ロボットの干渉状態を示す干渉データを生成する干渉データ生成部を有し、
前記干渉データ生成部は、前記第１軌跡データ及び前記第２軌跡データの少なくとも一つと、前記仮想空間データとを利用して前記干渉データを生成し、
前記拡張現実空間データ生成部は、さらに前記干渉データを利用して前記拡張現実空間データを生成する請求項３に記載のロボット装置。
【請求項５】
前記データ処理部は、前記仮想空間データを修正するデータ修正部を有する請求項１〜４の何れか一項に記載のロボット装置。
【請求項６】
前記ロボット制御部は、前記動作プログラムを修正するプログラム修正部を有する請求項１〜５の何れか一項に記載のロボット装置。
【請求項７】
前記ロボット撮像部は、前記ロボットに設定されたロボット座標系に基づいて設けられている請求項１〜６の何れか一項に記載のロボット装置。
【請求項８】
請求項１〜７の何れか一項に記載のロボット装置を利用して動作が教示された前記ロボットにより被加工物を製造する被加工物の製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットに動作を教示するためのロボット装置、及びロボット装置により動作が教示されたロボットを利用した被加工物の製造方法に関する。
【背景技術】
【０００２】
カメラで撮像した撮像データに、コンピュータで生成した画像データを合成して表示するいわゆる拡張現実（ＡＲ）技術がある。特許文献１には、ＡＲ技術を利用したロボット装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１１／０８０８８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ロボットの動作は技術者が教示する。しかし、ロボットの教示作業を実際の作業環境で実施した場合、ロボットの周囲の物体にロボットが干渉するおそれがある。このため、実際の動作に即した教示作業を実施することが難しい場合があった。
【０００５】
そこで、本発明は、ロボットに対する教示作業を簡易化することができるロボット装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明はロボットに動作を教示するためのロボット装置であって、ロボットの動作を規定する動作プログラムを保持するプログラム保持部を有し、ロボットを動作プログラムに基づいて動作させるロボット制御部と、ロボットが含まれている画像データを取得するロボット撮像部と、仮想空間データを保持する仮想空間データ保持部、及び少なくとも画像データ及び仮想空間データを利用して拡張現実空間データを生成する拡張現実空間データ生成部を有するデータ処理部と、拡張現実空間データを利用して拡張現実空間の画像を表示する表示部と、を備え、仮想空間データは、ロボットの実作業空間に存在する物体を仮想空間において模擬した仮想物体の情報を含む。
【発明の効果】
【０００７】
本発明によれば、ロボットに対する教示作業を簡易化することができる。
【図面の簡単な説明】
【０００８】
【図１】ロボット装置を用いてロボットの教示作業を行う様子を示す図である。
【図２】ロボットの一例を説明するための図である。
【図３】ロボット装置の構成を説明するためのブロック図である。
【図４】仮想空間データを説明するための図である。
【図５】第１軌跡データ及び第２軌跡データを説明するための図である。
【図６】ロボット装置を実現するコンピュータを説明するための図である。
【図７】ロボット教示方法の主要な工程を説明するための図である。
【図８】ロボット教示方法の主要な工程を説明するための図である。
【図９】拡張現実空間の画像の一例を示す図である。
【図１０】拡張現実空間の画像の一例を示す図である。
【図１１】拡張現実空間の画像の一例を示す図である。
【図１２】拡張現実空間の画像の一例を示す図である。
【図１３】拡張現実空間の画像の一例を示す図である。
【図１４】拡張現実空間の画像の一例を示す図である。
【図１５】拡張現実空間の画像の一例を示す図である。
【図１６】軌跡データを生成するために座標を算出する方法を説明するための図である。
【図１７】ロボット撮像装置により撮像された画像の一例を示す図である。
【図１８】軌跡データを生成するために座標を算出する方法を説明するための図である。
【図１９】軌跡データを生成するために座標を算出する方法を説明するための図である。
【図２０】干渉の判別の方法について説明するための図である。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照しながら本発明を実施するための形態を詳細に説明する。図面の説明において同一の要素には同一の符号を付し、重複する説明を省略する。
【００１０】
ロボット装置１が使用される環境について説明する。図１は、ロボット装置１を用いてロボットＲ２の教示作業（ティーチング）を行う様子を示す図である。図１に示すように、実作業空間ＲＳは、ロボットＲ２が所定の作業を行う空間であり、ロボットＲ２と作業台Ｒ４ａ，Ｒ４ｂが例えば配置されている。
【００１１】
実作業空間ＲＳの内部は、複数のカメラ（撮像部）６ａ〜６ｄにより撮像される。ロボットＲ２には、ロボット装置１が接続されている。ロボット装置１は、ロボットＲ２の動作を制御する機能と、ロボットＲ２の教示作業を行う機能とを有している。ロボット装置１には、ロボット装置１に対して所定のプログラムやデータ等を入力するための入力装置７が接続されている。本実施形態のロボット装置１は、技術者８が操作を行う。技術者８は、ロボット装置１が備えるヘッドマウントディスプレイといった表示部９の映像を視認しつつ、入力装置７を操作してロボットＲ２のティーチングを行う。
【００１２】
図２は、ロボットＲ２の一例を説明するための図である。図２に示すように、ロボットＲ２は、６自由度を有する多関節型のロボットである。ロボットＲ２の一端側は、床面３に対して固定され、他端側にはハンド２ｄが設けられている。ロボットＲ２の各部における位置及び回転角度は、ロボット座標系Ｃを基準座標として示される。ロボット座標系Ｃは、ロボットＲ２が配置された床面３に対して垂直な方向をＺ方向とし、床面３に平行な方向をＸ方向とする。さらに、Ｘ方向及びＺ方向に直交する方向（紙面に垂直な方向）をＹ方向とする。なお、ロボット座標系Ｃの原点は、例えば、床面３に対してロボットＲ２を固定した点を固定点Ｐとし、固定点Ｐをロボット座標系Ｃの原点とする。
【００１３】
ロボットＲ２は、アーム構造体をなすリンクを複数有している。リンクＫ１は、ロボットＲ２が設置された床面３に対して固定されている。リンクＫ２は、床面３に対して垂直な回転軸Ａ１まわりに回転可能にリンクＫ１に連結されている。リンクＫ３は、回転軸Ａ１に対して垂直な回転軸Ａ２まわりに回転可能にリンクＫ２に連結されている。リンクＫ４は、回転軸Ａ２に対して平行な回転軸Ａ３まわりに回転可能にリンクＫ３に連結されている。リンクＫ５は、回転軸Ａ３に対して垂直な回転軸Ａ４まわりに回転可能にリンクＫ４に連結されている。リンクＫ６は、回転軸Ａ４に対して垂直な回転軸Ａ５まわりに回転可能にリンクＫ５に連結されている。リンクＫ７は、回転軸Ａ５に対して垂直な回転軸Ａ６まわりに回転可能にリンクＫ６に連結されている。
【００１４】
なお、ここでいう「平行」および「垂直」は、厳密な意味の「平行」および「垂直」だけでなく、「平行」および「垂直」から少しずれているものも含む広い意味である。各回転軸Ａ１〜Ａ６にはそれぞれサーボモータ（関節Ｊ１〜Ｊ６）が設けられており、各サーボモータは、それぞれの回転位置を検出する角度センサＴ１〜Ｔ６を有している。各サーボモータは、ロボット装置１に接続されており、ロボット装置１の制御指令に基づいて各サーボモータが動作するように構成されている。
【００１５】
＜ロボット装置＞
ロボット装置１は、動作プログラムに基づく制御信号をロボットＲ２に入力してロボットＲ２を動作させる。そして、ロボットＲ２の実際の動作パスを、ロボットＲ２の各部に配置された角度センサＴ１〜Ｔ６の出力値、及びカメラ６ａ〜６ｄによりロボットＲ２を撮像した画像に基づいて生成する。技術者８は、動作プログラムに基づく動作パスと、実際の動作パスとの差異に基づいて、ロボットＲ２が所望の動作を実行するように入力装置７を用いて動作プログラムを修正する。
【００１６】
図３は、ロボット装置１の構成を説明するためのブロック図である。図３に示すように、ロボット装置１は、ロボットＲ２を動作させるロボット制御部１１と、ロボットＲ２が含まれている画像データを取得するロボット撮像部１２と、拡張現実空間データを生成するデータ処理部１３と、拡張現実空間の画像を表示する表示部９とを備えている。
【００１７】
＜ロボット制御部＞
ロボット制御部１１は、動作プログラムに基づいて制御信号を生成しロボットを駆動する機能を有する。また、データ処理部１３から入力されるデータに基づいて動作プログラムを修正する機能を有する。ロボット制御部１１は、制御信号をロボットＲ２に出力すると共に、入力装置７及びデータ処理部１３から信号が入力される。ロボット制御部１１は、動作プログラムを保持するプログラム保持部１４と、動作プログラムを修正するプログラム修正部１６と、位置姿勢データを生成する位置姿勢データ生成部１７とを有している。
【００１８】
プログラム保持部１４は、ロボットＲ２の動作を規定するための動作プログラムを保持する機能を有する。プログラム保持部１４には、入力装置７から動作プログラムが入力される。また、動作プログラムは入力装置７及びプログラム修正部１６から修正される。
【００１９】
プログラム修正部１６は、データ処理部１３から出力された情報に基づいて動作プログラムを修正する機能を有する。プログラム修正部１６には、データ処理部１３から所定のデータが入力される。また、プログラム修正部１６は、プログラム保持部１４に動作プログラムを修正するためのデータを出力する。なお、プログラム修正部１６は、技術者８が実施する動作プログラムの修正作業を補助するものであるが、主体的に動作プログラムを修正するものであってもよい。
【００２０】
位置姿勢データ生成部１７は、ロボットＲ２が有する角度センサＴ１〜Ｔ６から出力されたセンサデータを受信する機能を有する。位置姿勢データ生成部１７には、角度センサＴ１〜Ｔ６からセンサデータが入力される。また、位置姿勢データ生成部１７は位置姿勢データをデータ処理部１３に出力する。
【００２１】
＜ロボット撮像部＞
ロボット撮像部１２は、複数のカメラ６ａ〜６ｄにより構成されている。ロボット撮像部１２は画像データを取得する機能と、データ処理部１３に画像データを出力する機能とを有する。
【００２２】
図１に示すように、ロボット撮像部１２には、実作業空間ＲＳが設定される室内に配置されたカメラ６ａ〜６ｄが含まれている。カメラ６ａは実作業空間ＲＳ内のロボットＲ２等をＸ軸方向から見た画像を取得するものであり、カメラ６ｂは実作業空間ＲＳ内のロボットＲ２等をＺ軸方向から見た画像を取得するものであり、カメラ６ｃは実作業空間ＲＳ内のロボットＲ２等をＹ軸方向から見た画像を取得するものである。これらカメラ６ａ〜６ｃは、ロボット座標系Ｃを基準としてそれぞれの位置に固定されている。これらカメラ６ａ〜６ｃにより得られた画像データは、例えば、ロボットＲ２の像と作業台Ｒ４ａ，Ｒ４ｂの像とが含まれた固定視線の画像である。
【００２３】
また、ロボット撮像部１２は、ロボット座標系Ｃを基準としてロボット座標系ＣのＺ軸上に配置されたカメラ６ｄを含んでいる。このカメラ６ｄは、ズーム及びパンが可能に構成され、例えば、ロボットＲ２のハンド２ｄ（図２参照）の動きに追従する画像を取得することができる。なお、カメラ６ｄが追従する箇所は、ハンド２ｄに限定されることなく、ロボットＲ２の別の箇所の動きに追従して画像を取得してもよい。
【００２４】
＜データ処理部＞
データ処理部１３は、ロボット制御部１１及びロボット撮像部１２から入力された各種データを利用して拡張現実空間データを生成する機能を有する。また、拡張現実空間データを利用して仮想空間データを修正する機能を有する。図３に示すように、データ処理部１３は、仮想空間データを保持する仮想空間データ保持部１８と、第１軌跡データを生成する第１軌跡データ生成部１９と、第２軌跡データを生成する第２軌跡データ生成部２１と、干渉データを生成する干渉データ生成部２２と、拡張現実空間データを生成する拡張現実空間データ生成部２３と、仮想空間データを修正するデータ修正部２４と、を有している。
【００２５】
＜仮想空間データ保持部＞
仮想空間データ保持部１８は、後述する仮想空間データを保持する機能を有する。仮想空間データ保持部１８には、入力装置７から仮想空間データが入力される。また、仮想空間データ保持部１８には、データ修正部２４から仮想空間データを修正するための情報が入力される。そして、仮想空間データ保持部１８は、干渉データ生成部２２及び拡張現実空間データ生成部２３のそれぞれに仮想空間データを出力する。
【００２６】
図４は、仮想空間データを説明するための図である。図４に示すように、仮想空間データは、仮想空間ＶＳにおける仮想物体ＶＢに関する情報を含む。仮想空間ＶＳとは、実作業空間ＲＳを模擬したコンピュータ上の模擬空間である。仮想物体ＶＢは、実作業空間ＲＳ内に存在する物体の形状や配置を模擬したものである。実作業空間ＲＳ内に存在する物体には、例えば、ロボットＲ２及び作業台Ｒ４ａ，Ｒ４ｂがある。そして、仮想物体ＶＢには、仮想のロボットＶ２、仮想の作業台Ｖ４ａ，Ｖ４ｂがあり、これら仮想物体ＶＢが仮想空間ＶＳに設定されている。なお、これら仮想物体ＶＢの位置及び形状は、ロボット座標系Ｃを基準座標として規定するが、ロボット座標系Ｃ以外の座標系に基づいて規定されてもよい。
【００２７】
＜第１軌跡データ生成部＞
第１軌跡データ生成部１９は、後述する第１軌跡データを生成する機能を有する。図３に示すように、第１軌跡データ生成部１９には、ロボット制御部１１のプログラム保持部１４から、動作プログラムが入力される。また、第１軌跡データ生成部１９は、拡張現実空間データ生成部２３に第１軌跡データを出力する。さらに、第１軌跡データ生成部１９は、干渉データ生成部２２に第１軌跡データを出力する。
【００２８】
＜第２軌跡データ生成部＞
第２軌跡データ生成部２１は、後述する第２軌跡データを生成する機能を有する。第２軌跡データ生成部２１には、ロボット撮像部１２から、画像データが入力される。第２軌跡データ生成部２１には、位置姿勢データ生成部１７から位置姿勢データが入力される。また、第２軌跡データ生成部２１は、干渉データ生成部２２に第２軌跡データを出力する。さらに、第２軌跡データ生成部２１は、拡張現実空間データ生成部２３に第２軌跡データを出力する。
【００２９】
ここで、第１軌跡データと第２軌跡データとについて説明する。図５は、第１軌跡データ及び第２軌跡データを説明するための図である。図５に示すように、第１軌跡データは、ロボットＲ２に入力される制御信号に基づく第１軌跡Ｌ１を示すものであり、ロボットＲ２の実際の動作軌跡を必ずしも示すものではない。従って、第１軌跡データは、第１軌跡データ生成部１９において、動作プログラムに基づいて生成される（図３参照）。
【００３０】
これに対して、第２軌跡データは、ロボットＲ２の実際の動作軌跡である第２軌跡Ｌ２を示すものである。従って、第２軌跡データは、第２軌跡データ生成部２１において、位置姿勢データ及び画像データの少なくとも一方を利用して生成される（図３参照）。ここで、センサデータを利用して第２軌跡データを生成する場合には、角度センサＴ１〜Ｔ６からの角度データ及びロボットＲ２を構成する各リンクＫ１〜Ｋ７の長さを変数として、公知の順運動学に基づく行列計算を利用して求めることができる。
【００３１】
画像データを利用して軌跡データを生成する方法について詳細に説明する。ハンド２ｄ先端の１点の３次元座標は、例えば、固定カメラ（ロボット撮像部１２）のうちの２つの画像から求めることができる。画像を用いてハンド２ｄの点を抽出する方法として、例えば、ハンド２ｄ先端の１点に他と違う色の丸印を付けて、色検出と丸印中心を求める画像処理により抽出してもよく、ハンド２ｄ先端にＬＥＤを取り付けて輝度のしきい値で切り出す画像処理により抽出しても良い。また、高度な画像処理が可能であれば、ハンド２ｄを３次元モデルとして登録しておき、画像の中でその３次元モデルに合致する部分を抽出するという方法を用いてもよい。そして、定周期で２つの画像上の座標を抽出して、３次元のロボット座標系Ｃに座標変換すれば軌跡データを生成することができる。さらに、ハンド２ｄの姿勢も算出する場合には、ハンド２ｄ上の３点の座標をその都度３次元計測してロボット座標系Ｃに変換した後に、３点からなる平面の姿勢を計算することにより、ハンド２ｄの姿勢が算出される。
【００３２】
一例として、カメラ６ａとカメラ６ｃを使って３次元計測する場合の座標変換について、図１６〜図１９を参照しつつ説明する。図１６、図１８〜図２０は、軌跡データを生成するために座標を算出する方法を説明するための図である。図１７（ａ）は、カメラ６ａの画像の一例を示す図であり、図１７（ｂ）は、カメラ６ａの画像の一例を示す図である。説明を簡単にするために、カメラ６ａの画像平面がロボット座標系ＣのＹＺ平面と平行であるとする。同様に、カメラ６ｃの画像平面がロボット座標系ＣのＸＺ平面と平行であるとする。また、カメラ６ａはロボット座標系Ｃから見て座標［ａｘ，ａｙ，ａｚ］に配置され、カメラ６ｃはロボット座標系Ｃから見て座標［ｃｘ，ｃｙ，ｃｚ］に配置されているものとする。
【００３３】
まず、カメラ６ａの画像より、画像座標系Ｃ６ａから見たハンド２ｄの点ｐの座標［６ａｐｘ，６ａｐｙ］（図１７（ａ）参照）を取得し、ロボット座標系Ｃから見た値に変換する。ロボット座標系Ｃと画像座標系Ｃ６ａの間の変換（下記式（１）参照）には、ロボット座標系Ｃから見た画像座標系の位置姿勢を表す同次変換行列ＣＴ６ａを用いる（下記式（２）参照）。なお、式（１）中の「＊」は、不明な値であることを示す。
【数１】
2014180707.tif 000003
【数２】
2014180707.tif 000004
同様に、カメラ６ｃの画像より、画像座標系Ｃ６ｃ上から見たハンド２ｄの点ｐの座標［６ｃｐｘ，６ｃｐｙ］（図１７（ｂ）参照）を取得し、同次変換行列ＣＴ６ｃ（下記式（４）参照）を用いてロボット座標系Ｃから見た値に変換する（下記式（３）参照）。
【数３】
2014180707.tif 000005
【数４】
2014180707.tif 000006
従って、ロボット座標系Ｃから見た点ｐの座標は下記式（５）により示される。
【数５】
2014180707.tif 000007
【００３４】
次に、ハンド２ｄの姿勢を算出する方法を説明する。まず、ハンド２ｄ上の３点を画像処理により抽出して点Ｐ１，点Ｐ２，点Ｐ３（図１８参照）とし、それぞれの点Ｐ１〜Ｐ３について上述の方法を用いてロボット座標系Ｃから見た座標に変換する。次に、下記式（６）を用いて、点Ｐ１から点Ｐ２へ向かう方向ベクトルａ（大きさは１）を算出する。また、下記式（７）を用いて、点Ｐ１から点Ｐ３へ向かうベクトルｂ’を算出する。
【数６】
2014180707.tif 000008
【数７】
2014180707.tif 000009
ここで、ベクトルａとベクトルｂ’は直交しているとは限らないため（図１９（ａ）参照）、ベクトルａと直交するｂ’の成分を算出して、大きさが１であるベクトルｂ（下記式（８）参照）を算出する（図１９（ｂ）参照）。
【数８】
2014180707.tif 000010
次に、ベクトルａとベクトルｂの外積からベクトルｃを算出する（下記式（９）参照）。
【数９】
2014180707.tif 000011
これらの３次元ベクトルａ、ベクトルｂ、及びベクトルｃを次のように並べると、ロボット座標系Ｃから見たハンド２ｄのハンド（ツール）座標系Ｈ（図１８参照）の位置姿勢を表す行列ＣＴＨが算出される（下記式（１０）参照）。なお、点Ｐ１をハンド２ｄの位置としている。
【数１０】
2014180707.tif 000012
さらに、定周期で３点の座標を取得して、毎回上述の計算を実行してＣＴＨを求めて保存することにより、ハンド２ｄの位置に加えて姿勢についても軌跡データを生成することができる。
【００３５】
上述したように、ロボット撮像部１２から出力された少なくとも２つの視点画像を利用してロボットＲ２のハンド２ｄの第２軌跡データを生成することができる。さらに、これら位置姿勢データ及び画像データを組み合わせて第２軌跡データを生成することもできる。例えば、位置姿勢データを利用して得たハンド２ｄの第２軌跡データを、画像データを利用して得たハンド２ｄの位置情報を利用して補正することにより、第２軌跡データの精度を向上させることができる。なお、これら第１及び第２軌跡データは、ロボット座標系Ｃを基準座標として規定するが、ロボット座標系Ｃ以外の座標系に基づいて規定されてもよい。
【００３６】
＜干渉データ生成部＞
干渉データ生成部２２は、後述する干渉データを生成する機能を有する。図３に示すように、干渉データ生成部２２には、第１軌跡データ生成部１９から第１軌跡データが入力される。また、干渉データ生成部２２には、第２軌跡データ生成部２１から第２軌跡データが入力される。さらに、干渉データ生成部２２には、仮想空間データ保持部１８から仮想空間データが入力される。そして、干渉データ生成部２２は、拡張現実空間データ生成部２３に干渉データを出力する。
【００３７】
干渉データは、仮想物体ＶＢに対するロボットＲ２の干渉状態を示すものである。従って、干渉データは、仮想物体ＶＢの情報を有する仮想空間データと、現実のロボットＲ２の動作に関する情報である第１軌跡データ又は第２軌跡データを利用して生成される。これら仮想空間データ、第１軌跡データ及び第２軌跡データは、共通のロボット座標系Ｃを基準座標としているため、干渉の有無を確認できる。干渉状態は、まず、ハンド２ｄ及び関節Ｊ１〜Ｊ６までの位置を順運動学により算出する。次に、それぞれの位置を物体座標系（干渉の対象となる物体が有する座標系）から見た位置に変換して干渉領域内であるか否かを判定する。
【００３８】
ここで、干渉の有無を確認する方法について、更に詳細に説明する。まず、ロボットの順運動学計算について、図２に示されたロボットＲ２を例に説明する。ロボット座標系Ｃから見た第１座標系（関節Ｊ１）の位置姿勢ＣＴ１は下記式（１１）により示される。ここでθ１は関節Ｊ１の回転角度であり、Ｌ１はリンクＫ１の長さである。
【数１１】
2014180707.tif 000013
また、第１座標系（関節Ｊ１）から見た第２座標系（関節Ｊ２）の位置姿勢１Ｔ２は下記式（１２）により示される。
【数１２】
2014180707.tif 000014
また、第２座標系（関節Ｊ２）から見た第３座標系（関節Ｊ３）の位置姿勢２Ｔ３は下記式（１３）により示される。
【数１３】
2014180707.tif 000015
また、第３座標系（関節Ｊ３）から見た第４座標系（関節Ｊ４）の位置姿勢３Ｔ４は下記式（１４）により示される。
【数１４】
2014180707.tif 000016
また、第４座標系（関節Ｊ４）から見た第５座標系（関節Ｊ５）の位置姿勢４Ｔ５は下記式（１５）により示される。
【数１５】
2014180707.tif 000017
また、第５座標系（関節Ｊ５）から見た第６座標系（関節Ｊ６）の位置姿勢５Ｔ６は下記式（１６）により示される。
【数１６】
2014180707.tif 000018
また、第６座標系（関節Ｊ６）から見たハンド座標系Ｈ（ハンド２ｄ）の位置姿勢６ＴＨは下記式（１７）により示される。
【数１７】
2014180707.tif 000019
上記式（１１）〜（１７）を用いることにより、ロボット座標系Ｃから見たハンド座標系Ｈの位置姿勢ＣＴＨは次の行列の積で求められる（下記式（１８）参照）。
【数１８】
2014180707.tif 000020
また、上記式（１１）〜（１７）を用いることにより、途中までの位置も計算することが可能である。例えば、ロボット座標系Ｃから見た関節５の位置姿勢ＣＴ５は、下記式（１９）により求めることができる。
【数１９】
2014180707.tif 000021
さらに、例えば、関節Ｊ５と関節Ｊ６を連結するリンクＫ６（長さがＬ６）の中間点Ｍの座標を算出する場合には、下記式（２０）により求めることができる。
【数２０】
2014180707.tif 000022
【００３９】
次に、干渉の判別の方法について説明する。図２０は、干渉の判別の方法について説明するための図である。図２０に示されるように、干渉領域は物体座標系ＣＡの各座標軸方向の範囲として定義されるものとする。この説明では、物体Ａの内側の空間を干渉領域とする。従って、干渉領域は、物体座標系ＣＡの各座標軸の範囲において下記式（２１）〜（２３）により示される範囲である。
【数２１】
2014180707.tif 000023
【数２２】
2014180707.tif 000024
【数２３】
2014180707.tif 000025
所定の点Ｐ１が物体Ａの干渉領域に存在するか否かを判定する。まず、ロボット座標系Ｃから見た点Ｐ１の座標ＣＰ１を算出する。具体的な点Ｐ１は、例えば、干渉の有無を確認したいロボットＲ２のハンド２ｄの先端や、肘などの位置である。次に、下記式（２４）を用いて座標ＣＰ１を物体Ａの物体座標系ＣＡから見た座標ＣＡＰ１に変換する。
【数２４】
2014180707.tif 000026
次に、ＣＡＰ１の各成分（Ｐ１ｘ、Ｐ１ｙ、Ｐ１ｚ）が干渉領域に存在するか否かを判定する。下記式（２５）〜（２７）の３つの条件が全て真であれば、点Ｐ１は、物体Ａの内側に存在するため、物体Ａと干渉していると判定される。
【数２５】
2014180707.tif 000027
【数２６】
2014180707.tif 000028
【数２７】
2014180707.tif 000029
【００４０】
ここで、必要に応じて第１軌跡Ｌ１及び第２軌跡Ｌ２に対して干渉不可領域Ａ１，Ａ２を設定してもよい（図１１及び図１３参照）。第１軌跡Ｌ１及び第２軌跡Ｌ２は、例えば、ロボットＲ２のハンド２ｄに設定された所定点の軌跡である。一方、所定点の周囲には現実のロボットＲ２の部位が存在するため、第１軌跡Ｌ１及び第２軌跡Ｌ２のそのものは干渉を生じない場合であっても、現実のロボットＲ２では干渉が生じる場合がある。従って、ロボットＲ２の外形形状等を加味し、この範囲内に物体が侵入する場合には現実のロボットＲ２と干渉を生じる可能性がある領域として干渉不可領域Ａ１，Ａ２を設定する。なお、第１軌跡Ｌ１に対して設定される領域を干渉不可領域Ａ１とし、第２軌跡Ｌ２に対して設定される領域を干渉不可領域Ａ２とする。
【００４１】
第１軌跡データと仮想空間データとを利用して得られた干渉データによれば、動作プログラムに規定されるとおりにロボットＲ２が動作した場合の干渉状態を確認できる。すなわち、動作プログラムの確認を行うことができる。一方、第２軌跡データと仮想空間データとを利用して得られた干渉データによれば、実際にロボットＲ２を動作させた場合の干渉状態を確認できる。すなわち、現実のロボットＲ２の動作軌跡の確認を行うことができる。
【００４２】
＜拡張現実空間データ生成部＞
拡張現実空間データ生成部２３は、拡張現実空間データを生成する機能を有する。拡張現実空間データ生成部２３には、仮想空間データ保持部１８から仮想空間データが入力される。拡張現実空間データ生成部２３には、第１軌跡データ生成部１９から第１軌跡データが入力される。拡張現実空間データ生成部２３には、第２軌跡データ生成部２１から第２軌跡データが入力される。拡張現実空間データ生成部２３には、ロボット撮像部１２から画像データが入力される。拡張現実空間データ生成部２３には、干渉データ生成部２２から干渉データが入力される。また、拡張現実空間データ生成部２３は、表示部９、データ修正部２４及びプログラム修正部１６のそれぞれに拡張現実空間データを出力する。
【００４３】
拡張現実空間データは、現実のロボットＲ２を撮像した画像に仮想ロボットＶ２及び仮想作業台Ｖ４ａ，Ｖ４ｂを重畳させたものであり、画像データ及び仮想空間データを利用して生成される。この拡張現実空間データにおいて、現実のロボットＲ２を撮像した画像には、必要に応じて第１軌跡Ｌ１や第２軌跡Ｌ２を重畳させてもよい。また、ロボットＲ２と仮想作業台Ｖ４ａ，Ｖ４ｂとの干渉状態を重畳させてもよい。
【００４４】
ロボットＲ２における注目点の位置は、異なる視点から得られた少なくとも２つの画像データを解析することにより、ロボット座標系Ｃを基準座標として得られる。そして、ロボットＲ２の画像に重畳される第１軌跡Ｌ１、第２軌跡Ｌ２及び干渉状態のデータは、ロボット座標系Ｃを基準座標としている。従って、現実のロボットＲ２の画像に対して、第１軌跡Ｌ１、第２軌跡Ｌ２といった仮想のデータを重畳させることができる。
【００４５】
＜データ修正部＞
データ修正部２４は、拡張現実空間データに基づいて仮想空間データを修正する機能を有する。データ修正部２４には、拡張現実空間データ生成部２３から拡張現実空間データが入力される。また、データ修正部２４は、仮想空間データ保持部１８に仮想空間データを修正するためのデータを出力する。
【００４６】
データ修正部２４は、例えば、仮想空間データの校正に用いられる。例えば、実作業空間ＲＳに配置されたロボットＲ２及び作業台Ｒ４ａ，Ｒ４ｂに、仮想空間ＶＳに模擬された仮想ロボットＶ２と仮想作業台Ｖ４ａ，Ｖ４ｂを重畳させたとき、実作業空間ＲＳにおける物体に対して、仮想空間ＶＳに模擬された仮想物体ＶＢが一致しない場合がある。データ修正部２４は、実作業空間ＲＳにおける物体に対する仮想物体ＶＢの差異を抽出して、実作業空間ＲＳにおける物体に対して仮想物体ＶＢの位置や形状を近づける。なお、この仮想空間データの校正は、必要に応じて実施すればよい。また、技術者８が仮想空間データを修正する場合に、補助的に用いてもよい。
【００４７】
＜表示部＞
表示部９は、拡張現実空間の画像を表示し、技術者８に情報を提供する機能を有する。表示部９には、拡張現実空間データ生成部２３から拡張現実空間データが入力される。この表示部９には、公知の画像表示デバイスを用いることができる。例えば、ヘッドマウントディスプレイや液晶表示パネル等を用いることができる。
【００４８】
図６は、ロボット装置１を実現するコンピュータを説明するための図である。図６に示すように、コンピュータ１００は、本実施形態のロボット装置１を構成するハードウエアの一例である。コンピュータ１００は、ＣＰＵを具備しソフトウエアによる処理や制御を行なうパーソナルコンピュータ等の情報処理装置を含む。コンピュータ１００は、ＣＰＵ１０１、主記憶装置であるＲＡＭ１０２及びＲＯＭ１０３、キーボード、マウス及びプログラミングペンダント等の入力装置７、ディスプレイ等の表示部９、ハードディスク等の補助記憶装置１０８などを含むコンピュータシステムとして構成されている。図３に示す機能的構成要素は、ＣＰＵ１０１、ＲＡＭ１０２等のハードウエア上に所定のコンピュータソフトウェアを読み込ませることにより、ＣＰＵ１０１の制御のもとで入力装置７、表示部９を動作させるとともに、ＲＡＭ１０２や補助記憶装置１０８におけるデータの読み出し及び書き込みを行うことで実現される。
【００４９】
＜ロボット教示作業＞
続いて、ロボット装置１を用いたロボット教示方法を説明する。図７及び図８は、ロボット教示方法の主要な工程を説明するための図である。図７に示すように、まず、実作業空間ＲＳにロボットＲ２及び作業台Ｒ４ａ，Ｒ４ｂを配置する（工程Ｓ１）（図１参照）。次に、プログラム保持部１４に入力装置７を用いて初期動作プログラムを入力する（工程Ｓ２）（図３参照）。続いて、仮想空間データ保持部１８に入力装置７を用いて仮想現実空間データを入力する（工程Ｓ３）（図３参照）。
【００５０】
ロボットＲ２を動作させる前に仮想空間データの校正を実施する。図９は、拡張現実空間ＡＲの画像の一例を示す図である。ロボット撮像部１２によって得た実作業空間ＲＳの画像に、仮想空間ＶＳの画像を重畳した拡張現実空間データを生成し（工程Ｓ４）、拡張現実空間データを利用して拡張現実空間ＡＲの画像を表示部９に表示する（工程Ｓ５）。図９に示すように、表示部９にはカメラ６ｃによって得られた画像に仮想空間データに含まれた仮想物体ＶＢを重畳させた画像が表示されている。
【００５１】
この画像には、現実のロボットＲ２及び現実の作業台Ｒ４ａ，Ｒ４ｂと、仮想のロボットＶ２及び仮想の作業台Ｖ４ａ，Ｖ４ｂが表示されている。ロボットＲ２とロボットＶ２とはずれが生じていないため、仮想空間データにおけるロボットＶ２のデータを修正する必要はない。一方、作業台Ｒ４ａに対して作業台Ｖ４ａはＸ軸方向の位置が異なっている。さらに、作業台Ｒ４ｂに対して作業台Ｖ４ｂはＺ軸方向の位置及び形状が異なっている。従って、仮想現実空間データの修正が必要であると判断される（工程Ｓ６：ＹＥＳ）。仮想現実空間データの修正は、入力装置７を用いて技術者８が実施してもよい。また、データ処理部１３が、位置のずれ及び形状の相違をピクセルベースで検出して修正量を算出することにより仮想空間データを修正してもよい。ロボットＲ２に対するロボットＶ２の位置及び形状、並びに作業台Ｒ４ａ，Ｒ４ｂに対する作業台Ｖ４ａ，Ｖ４ｂの位置及び形状について修正の必要がないと判断された場合には、次工程に移行する（工程Ｓ６：ＮＯ）。
【００５２】
図８に示すように、仮想空間データの校正終了後、実作業空間ＲＳに配置されたロボットＲ２以外の物体を取り除く（工程Ｓ８）。この後、実作業空間ＲＳには、ロボットＲ２だけが存在する。図１０は、拡張現実空間ＡＲの画像の一例を示す図である。図１０に示すように、拡張現実空間ＡＲの画像には、ロボットＲ２，Ｖ２及び作業台Ｖ４ａ，Ｖ４ｂが含まれている。すなわち、拡張現実空間ＡＲの画像には、現実の作業台Ｒ４ａ，Ｒ４ｂは実作業空間ＲＳから取り除かれているので含まれていない。
【００５３】
続いて、初期動作プログラムの干渉チェックを実施する。初期動作プログラムにより規定された第１軌跡Ｌ１通りにロボットＲ２のハンド２ｄが動いた場合に、仮想の作業台Ｖ４ａ，Ｖ４ｂへの干渉が生じていないかを確認する。より詳細には、まず、画像データ、仮想空間データ及び第１軌跡データを利用して拡張現実空間データを生成する（工程Ｓ９）。そして、拡張現実空間データを利用して拡張現実空間ＡＲの画像を表示する（工程Ｓ１０）。拡張現実空間ＡＲの画像には、画像データに基づくロボットＲ２、仮想空間データに基づくロボットＶ２及び作業台Ｖ４ａ，Ｖ４ｂ、第１軌跡Ｌ１並びに干渉不可領域Ａ１が含まれている。図１１は、拡張現実空間ＡＲの画像の一例を示す図である。図１１には拡張現実空間ＡＲの一部を拡大した図であり、作業台Ｖ４ａ，Ｖ４ｂ、第１軌跡Ｌ１並びに干渉不可領域Ａ１が示されている。初期動作プログラムに基づく第１軌跡Ｌ１は、初期点ＰＳから目標点ＰＯを経由して終点ＰＥに至る。図１１に示された例によれば、第１軌跡Ｌ１が作業台Ｖ４ｂと干渉する部分Ｅｂを有している。さらに、干渉不可領域Ａ１が作業台Ｖ４ｂと干渉する部分Ｅａを有している。従って、初期動作プログラムの修正が必要であると判断される（工程Ｓ１１：ＹＥＳ）。
【００５４】
技術者８は、入力装置７を用いて動作プログラムを修正する（工程Ｓ１２）。そして、修正された動作プログラムを利用して再び、拡張現実空間データを生成し（工程Ｓ９）、拡張現実空間ＡＲの画像を表示部９に表示する（工程Ｓ１０）。図１２は、拡張現実空間ＡＲの画像の一例を示す図である。図１２に示すように、修正された第１軌跡Ｌ１は新たな中間点Ｐ１を有している。ここで、第１軌跡Ｌ１が変更されると、自動的に干渉不可領域Ａ１も変更される。この第１軌跡Ｌ１は作業台Ｖ４ｂと干渉することがなく、干渉不可領域Ａ１も作業台Ｖ４ｂと干渉していない。従って、動作プログラムの修正は必要ないと判断され次工程に移行する（工程Ｓ１１：ＮＯ）。
【００５５】
ロボットＲ２を実際に動作させた場合の干渉チェックを実施する。より詳細には、まず、第１軌跡Ｌ１を生成する動作プログラムを用いてロボットＲ２を動作させる（工程Ｓ１３）。そして、拡張現実空間データを生成し（工程Ｓ１４）、拡張現実空間ＡＲの画像を表示部９に表示する（工程Ｓ１５）。ここで、工程Ｓ１４では、画像データ、仮想空間データ、第１軌跡データ及び第２軌跡データを利用して拡張現実空間データを生成する。図１３は、拡張現実空間ＡＲの画像の一例を示す図である。図１３には、作業台Ｖ４ａ，Ｖ４ｂ、第１軌跡Ｌ１、第２軌跡Ｌ２及び干渉不可領域Ａ２が含まれている。なお、この干渉不可領域Ａ２は、第２軌跡Ｌ２に基づくものである。
【００５６】
図１３に示された例によれば、第２軌跡Ｌ２が作業台Ｖ４ｂと干渉する部分Ｅｃを有している。さらに、干渉不可領域Ａ２が作業台Ｖ４ｂと干渉する部分Ｅｄを有している。
【００５７】
ところで、ロボットＲ２の動作では、動作プログラムに基づく第１軌跡Ｌ１に対して実際の軌跡である第２軌跡Ｌ２がずれる場合がある。ロボットＲ２の動作制御は第１の位置から次の第２の位置に移動する時間を最優先事項とする場合がある。本実施形態では、初期点ＰＳから終点ＰＥまでに移動する時間を最優先事項と設定しているものとする。そうすると、初期点ＰＳから終点ＰＥまでの移動において、所定時間内における移動は達成されていても、初期点ＰＳから終点ＰＥに至る実際の第２軌跡Ｌ２が第１軌跡Ｌ１から外れる場合がある。例えば、図１３に示す例では、第２軌跡Ｌ２は目標点ＰＯに到達していないことがわかる。この現象は、内回り現象と呼ばれる。従って、第２軌跡Ｌ２及び干渉不可領域Ａ２の作業台Ｖ４ｂへの干渉を解消し、厳密に目標点ＰＯを経由させたい場合には動作プログラムを修正する必要がある（工程Ｓ１６：ＹＥＳ）。
【００５８】
図１４は、拡張現実空間ＡＲの画像の一例を示す図である。第２軌跡Ｌ２及び干渉不可領域Ａ２の作業台Ｖ４ｂへの干渉を解消するために、中間点Ｐ１の位置を修正する（工程Ｓ１７）。そして、第２軌跡Ｌ２が目標点ＰＯを経由するように中間点Ｐ２の位置を設定する。これら中間点Ｐ１，Ｐ２の修正は、技術者８が実施してもよいし、プログラム修正部１６が実施してもよい。プログラム修正部１６による中間点Ｐ１の修正では、作業台Ｖ４ｂが占める領域に干渉する干渉不可領域Ａ２の座標系Ｃの各座標軸方向に沿った重複長さを算出し、当該長さ分だけ中間点Ｐ２の位置をシフトさせる。また、プログラム修正部１６による中間点Ｐ２の設定は、目標点ＰＯに対する第２軌跡Ｌ２の各軸方向に沿った離間距離を算出する。そして離間距離に基づいて中間点Ｐ１の位置をシフトさせる。
【００５９】
続いて、修正された動作プログラムを利用して再びロボットＲ２を動作させ（工程Ｓ１３）、拡張現実空間データを生成し（工程Ｓ１４）、拡張現実空間ＡＲの画像を表示部９に表示する（工程Ｓ１５）。図１５は、拡張現実空間ＡＲの画像の一例を示す図である。図１５に示すように、修正された動作プログラムによれば、第２軌跡Ｌ２及び干渉不可領域Ａ２の作業台Ｖ４ｂへの干渉が解消され、第２軌跡Ｌ２が目標点ＰＯを経由している。従って、動作プログラムを修正する必要はない（工程Ｓ１６：ＮＯ）。
【００６０】
以上の工程Ｓ１〜Ｓ１６によりロボット装置１を用いたロボットＲ２の教示作業が完了する。
【００６１】
本実施形態のロボット装置１によれば、現実のロボットＲ２を動作させた画像データをロボット撮像部１２から取得する。また、ロボット装置１は、実作業空間ＲＳに存在する仮想物体ＶＢを仮想空間において模擬した仮想空間データを有している。そして、拡張現実空間データ生成部２３において画像データと仮想空間データとを利用して拡張現実空間データが生成される。これによれば、仮想物体ＶＢが配置された仮想空間において、現実のロボットＲ２を動作させた結果を重畳させることができる。このため、教示作業は、現実の作業台Ｒ４ａ，Ｒ４ｂといった物体を実作業空間ＲＳに配置することなく、ロボットＲ２を動作させて実施される。従って、ロボットＲ２と周辺物体との実際の干渉を生じさせることなく、ロボットＲ２の教示作業を実施することができるので、動作プログラムの試行錯誤による教示作業を安全かつ容易に実施することができる。
【００６２】
本実施形態のロボット装置１は、第１軌跡データと第２軌跡データを生成し、それらデータを利用して拡張現実空間データを生成して、それら第１軌跡Ｌ１及び第２軌跡Ｌ２を表示部９に表示する。これによれば、設定した第１軌跡Ｌ１とロボットＲ２を動作させた結果である第２軌跡Ｌ２との差異を目視により確認することができるので、動作プログラムの修正を容易かつ効率的に実施することが可能になる。従って、ロボットＲ２の教示作業を一層容易にすることができる。
【００６３】
本実施形態のロボット装置１によれば、現実のロボットＲ２と仮想物体ＶＢとの干渉状態を示す干渉データを生成する。このため、ロボットＲ２と仮想物体ＶＢとの干渉の有無を目視により確認できるので、仮想物体ＶＢとの干渉を生じないように動作プログラムを修正することが可能になる。従って、現実の周辺物体との干渉を生じない動作を容易にロボットＲ２に教示することができる。
【００６４】
以上、本発明の好適な実施形態について説明したが、本発明は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。例えば、ロボットＲ２は、垂直双腕ロボットであってもよい。また、拡張現実空間ＡＲの画像には、ロボットＲ２の画像、仮想物体ＶＢの画像、第１軌跡Ｌ１、第２軌跡Ｌ２の他に教示作業を容易にする種々の情報を表示してもよい。また、上記実施形態では、２次元の軌跡をロボットＲ２に教示する場合を例に説明をしたが、ロボット装置１は、３次元の軌跡をロボットＲ２に教示する場合にも用いてもよい。また、上記実施形態では、ロボット装置１を、仮想空間データの校正、第１軌跡データの確認作業、及び第２軌跡データの確認作業に利用したが、これら作業の一つを実施するためにロボット装置１を用いてもよい。
【００６５】
また、上述したロボット装置１により動作を教示したロボットＲ２を用いて所望の製品（被加工物）を製造してもよい。
【符号の説明】
【００６６】
１…ロボット装置、６ａ〜６ｄ…カメラ、７…入力装置、８…作業者、９…表示部、１１…ロボット制御部、１２…ロボット撮像部、１３…データ処理部、１４…プログラム保持部、１６…プログラム修正部、１７…位置姿勢データ生成部、１８…仮想空間データ保持部、１９…第１軌跡データ生成部、２１…第２軌跡データ生成部、２２…干渉データ生成部、２３…拡張現実空間データ生成部、２４…データ修正部、Ａ１，Ａ２…干渉不可領域、ＡＲ…拡張現実空間、Ｌ１…第１軌跡、Ｌ２…第２軌跡、Ｒ２，Ｖ２…ロボット、Ｒ４ａ，Ｒ４ｂ…作業台、ＲＳ…実作業空間、Ｃ…ロボット座標系、ＶＳ…仮想空間。
【図１】
2014180707.tif 000030
【図２】
2014180707.tif 000031
【図３】
2014180707.tif 000032
【図４】
2014180707.tif 000033
【図５】
2014180707.tif 000034
【図６】
2014180707.tif 000035
【図７】
2014180707.tif 000036
【図８】
2014180707.tif 000037
【図９】
2014180707.tif 000038
【図１０】
2014180707.tif 000039
【図１１】
2014180707.tif 000040
【図１２】
2014180707.tif 000041
【図１３】
2014180707.tif 000042
【図１４】
2014180707.tif 000043
【図１５】
2014180707.tif 000044
【図１６】
2014180707.tif 000045
【図１７】
2014180707.tif 000046
【図１８】
2014180707.tif 000047
【図１９】
2014180707.tif 000048
【図２０】
2014180707.tif 000049