(58)【調査した分野】(Int.Cl.,DB名)
前記ロボット制御部は、前記ロボットが有するセンサから出力されたセンサデータ及び前記画像データの少なくとも一方を利用して、前記動作プログラムに基づいて前記ロボットを動作した結果である第2軌跡データを生成する第2軌跡データ生成部を有し、
前記拡張現実空間データ生成部は、さらに前記第2軌跡データを利用して前記拡張現実空間データを生成する請求項1に記載のロボット装置。
【発明を実施するための形態】
【0009】
以下、添付図面を参照しながら本発明を実施するための形態を詳細に説明する。図面の説明において同一の要素には同一の符号を付し、重複する説明を省略する。
【0010】
ロボット装置1が使用される環境について説明する。
図1は、ロボット装置1を用いてロボットR2の教示作業(ティーチング)を行う様子を示す図である。
図1に示すように、実作業空間RSは、ロボットR2が所定の作業を行う空間であり、ロボットR2と作業台R4a,R4bが例えば配置されている。
【0011】
実作業空間RSの内部は、複数のカメラ(撮像部)6a〜6dにより撮像される。ロボットR2には、ロボット装置1が接続されている。ロボット装置1は、ロボットR2の動作を制御する機能と、ロボットR2の教示作業を行う機能とを有している。ロボット装置1には、ロボット装置1に対して所定のプログラムやデータ等を入力するための入力装置7が接続されている。本実施形態のロボット装置1は、技術者8が操作を行う。技術者8は、ロボット装置1が備えるヘッドマウントディスプレイといった表示部9の映像を視認しつつ、入力装置7を操作してロボットR2のティーチングを行う。
【0012】
図2は、ロボットR2の一例を説明するための図である。
図2に示すように、ロボットR2は、6自由度を有する多関節型のロボットである。ロボットR2の一端側は、床面3に対して固定され、他端側にはハンド2dが設けられている。ロボットR2の各部における位置及び回転角度は、ロボット座標系Cを基準座標として示される。ロボット座標系Cは、ロボットR2が配置された床面3に対して垂直な方向をZ方向とし、床面3に平行な方向をX方向とする。さらに、X方向及びZ方向に直交する方向(紙面に垂直な方向)をY方向とする。なお、ロボット座標系Cの原点は、例えば、床面3に対してロボットR2を固定した点を固定点Pとし、固定点Pをロボット座標系Cの原点とする。
【0013】
ロボットR2は、アーム構造体をなすリンクを複数有している。リンクK1は、ロボットR2が設置された床面3に対して固定されている。リンクK2は、床面3に対して垂直な回転軸A1まわりに回転可能にリンクK1に連結されている。リンクK3は、回転軸A1に対して垂直な回転軸A2まわりに回転可能にリンクK2に連結されている。リンクK4は、回転軸A2に対して平行な回転軸A3まわりに回転可能にリンクK3に連結されている。リンクK5は、回転軸A3に対して垂直な回転軸A4まわりに回転可能にリンクK4に連結されている。リンクK6は、回転軸A4に対して垂直な回転軸A5まわりに回転可能にリンクK5に連結されている。リンクK7は、回転軸A5に対して垂直な回転軸A6まわりに回転可能にリンクK6に連結されている。
【0014】
なお、ここでいう「平行」および「垂直」は、厳密な意味の「平行」および「垂直」だけでなく、「平行」および「垂直」から少しずれているものも含む広い意味である。各回転軸A1〜A6にはそれぞれサーボモータ(関節J1〜J6)が設けられており、各サーボモータは、それぞれの回転位置を検出する角度センサT1〜T6を有している。各サーボモータは、ロボット装置1に接続されており、ロボット装置1の制御指令に基づいて各サーボモータが動作するように構成されている。
【0015】
<ロボット装置>
ロボット装置1は、動作プログラムに基づく制御信号をロボットR2に入力してロボットR2を動作させる。そして、ロボットR2の実際の動作パスを、ロボットR2の各部に配置された角度センサT1〜T6の出力値、及びカメラ6a〜6dによりロボットR2を撮像した画像に基づいて生成する。技術者8は、動作プログラムに基づく動作パスと、実際の動作パスとの差異に基づいて、ロボットR2が所望の動作を実行するように入力装置7を用いて動作プログラムを修正する。
【0016】
図3は、ロボット装置1の構成を説明するためのブロック図である。
図3に示すように、ロボット装置1は、ロボットR2を動作させるロボット制御部11と、ロボットR2が含まれている画像データを取得するロボット撮像部12と、拡張現実空間データを生成するデータ処理部13と、拡張現実空間の画像を表示する表示部9とを備えている。
【0017】
<ロボット制御部>
ロボット制御部11は、動作プログラムに基づいて制御信号を生成しロボットを駆動する機能を有する。また、データ処理部13から入力されるデータに基づいて動作プログラムを修正する機能を有する。ロボット制御部11は、制御信号をロボットR2に出力すると共に、入力装置7及びデータ処理部13から信号が入力される。ロボット制御部11は、動作プログラムを保持するプログラム保持部14と、動作プログラムを修正するプログラム修正部16と、位置姿勢データを生成する位置姿勢データ生成部17とを有している。
【0018】
プログラム保持部14は、ロボットR2の動作を規定するための動作プログラムを保持する機能を有する。プログラム保持部14には、入力装置7から動作プログラムが入力される。また、動作プログラムは入力装置7及びプログラム修正部16から修正される。
【0019】
プログラム修正部16は、データ処理部13から出力された情報に基づいて動作プログラムを修正する機能を有する。プログラム修正部16には、データ処理部13から所定のデータが入力される。また、プログラム修正部16は、プログラム保持部14に動作プログラムを修正するためのデータを出力する。なお、プログラム修正部16は、技術者8が実施する動作プログラムの修正作業を補助するものであるが、主体的に動作プログラムを修正するものであってもよい。
【0020】
位置姿勢データ生成部17は、ロボットR2が有する角度センサT1〜T6から出力されたセンサデータを受信する機能を有する。位置姿勢データ生成部17には、角度センサT1〜T6からセンサデータが入力される。また、位置姿勢データ生成部17は位置姿勢データをデータ処理部13に出力する。
【0021】
<ロボット撮像部>
ロボット撮像部12は、複数のカメラ6a〜6dにより構成されている。ロボット撮像部12は画像データを取得する機能と、データ処理部13に画像データを出力する機能とを有する。
【0022】
図1に示すように、ロボット撮像部12には、実作業空間RSが設定される室内に配置されたカメラ6a〜6dが含まれている。カメラ6aは実作業空間RS内のロボットR2等をX軸方向から見た画像を取得するものであり、カメラ6bは実作業空間RS内のロボットR2等をZ軸方向から見た画像を取得するものであり、カメラ6cは実作業空間RS内のロボットR2等をY軸方向から見た画像を取得するものである。これらカメラ6a〜6cは、ロボット座標系Cを基準としてそれぞれの位置に固定されている。これらカメラ6a〜6cにより得られた画像データは、例えば、ロボットR2の像と作業台R4a,R4bの像とが含まれた固定視線の画像である。
【0023】
また、ロボット撮像部12は、ロボット座標系Cを基準としてロボット座標系CのZ軸上に配置されたカメラ6dを含んでいる。このカメラ6dは、ズーム及びパンが可能に構成され、例えば、ロボットR2のハンド2d(
図2参照)の動きに追従する画像を取得することができる。なお、カメラ6dが追従する箇所は、ハンド2dに限定されることなく、ロボットR2の別の箇所の動きに追従して画像を取得してもよい。
【0024】
<データ処理部>
データ処理部13は、ロボット制御部11及びロボット撮像部12から入力された各種データを利用して拡張現実空間データを生成する機能を有する。また、拡張現実空間データを利用して仮想空間データを修正する機能を有する。
図3に示すように、データ処理部13は、仮想空間データを保持する仮想空間データ保持部18と、第1軌跡データを生成する第1軌跡データ生成部19と、第2軌跡データを生成する第2軌跡データ生成部21と、干渉データを生成する干渉データ生成部22と、拡張現実空間データを生成する拡張現実空間データ生成部23と、仮想空間データを修正するデータ修正部24と、を有している。
【0025】
<仮想空間データ保持部>
仮想空間データ保持部18は、後述する仮想空間データを保持する機能を有する。仮想空間データ保持部18には、入力装置7から仮想空間データが入力される。また、仮想空間データ保持部18には、データ修正部24から仮想空間データを修正するための情報が入力される。そして、仮想空間データ保持部18は、干渉データ生成部22及び拡張現実空間データ生成部23のそれぞれに仮想空間データを出力する。
【0026】
図4は、仮想空間データを説明するための図である。
図4に示すように、仮想空間データは、仮想空間VSにおける仮想物体VBに関する情報を含む。仮想空間VSとは、実作業空間RSを模擬したコンピュータ上の模擬空間である。仮想物体VBは、実作業空間RS内に存在する物体の形状や配置を模擬したものである。実作業空間RS内に存在する物体には、例えば、ロボットR2及び作業台R4a,R4bがある。そして、仮想物体VBには、仮想のロボットV2、仮想の作業台V4a,V4bがあり、これら仮想物体VBが仮想空間VSに設定されている。なお、これら仮想物体VBの位置及び形状は、ロボット座標系Cを基準座標として規定するが、ロボット座標系C以外の座標系に基づいて規定されてもよい。
【0027】
<第1軌跡データ生成部>
第1軌跡データ生成部19は、後述する第1軌跡データを生成する機能を有する。
図3に示すように、第1軌跡データ生成部19には、ロボット制御部11のプログラム保持部14から、動作プログラムが入力される。また、第1軌跡データ生成部19は、拡張現実空間データ生成部23に第1軌跡データを出力する。さらに、第1軌跡データ生成部19は、干渉データ生成部22に第1軌跡データを出力する。
【0028】
<第2軌跡データ生成部>
第2軌跡データ生成部21は、後述する第2軌跡データを生成する機能を有する。第2軌跡データ生成部21には、ロボット撮像部12から、画像データが入力される。第2軌跡データ生成部21には、位置姿勢データ生成部17から位置姿勢データが入力される。また、第2軌跡データ生成部21は、干渉データ生成部22に第2軌跡データを出力する。さらに、第2軌跡データ生成部21は、拡張現実空間データ生成部23に第2軌跡データを出力する。
【0029】
ここで、第1軌跡データと第2軌跡データとについて説明する。
図5は、第1軌跡データ及び第2軌跡データを説明するための図である。
図5に示すように、第1軌跡データは、ロボットR2に入力される制御信号に基づく第1軌跡L1を示すものであり、ロボットR2の実際の動作軌跡を必ずしも示すものではない。従って、第1軌跡データは、第1軌跡データ生成部19において、動作プログラムに基づいて生成される(
図3参照)。
【0030】
これに対して、第2軌跡データは、ロボットR2の実際の動作軌跡である第2軌跡L2を示すものである。従って、第2軌跡データは、第2軌跡データ生成部21において、位置姿勢データ及び画像データの少なくとも一方を利用して生成される(
図3参照)。ここで、センサデータを利用して第2軌跡データを生成する場合には、角度センサT1〜T6からの角度データ及びロボットR2を構成する各リンクK1〜K7の長さを変数として、公知の順運動学に基づく行列計算を利用して求めることができる。
【0031】
画像データを利用して軌跡データを生成する方法について詳細に説明する。ハンド2d先端の1点の3次元座標は、例えば、固定カメラ(ロボット撮像部12)のうちの2つの画像から求めることができる。画像を用いてハンド2dの点を抽出する方法として、例えば、ハンド2d先端の1点に他と違う色の丸印を付けて、色検出と丸印中心を求める画像処理により抽出してもよく、ハンド2d先端にLEDを取り付けて輝度のしきい値で切り出す画像処理により抽出しても良い。また、高度な画像処理が可能であれば、ハンド2dを3次元モデルとして登録しておき、画像の中でその3次元モデルに合致する部分を抽出するという方法を用いてもよい。そして、定周期で2つの画像上の座標を抽出して、3次元のロボット座標系Cに座標変換すれば軌跡データを生成することができる。さらに、ハンド2dの姿勢も算出する場合には、ハンド2d上の3点の座標をその都度3次元計測してロボット座標系Cに変換した後に、3点からなる平面の姿勢を計算することにより、ハンド2dの姿勢が算出される。
【0032】
一例として、カメラ6aとカメラ6cを使って3次元計測する場合の座標変換について、
図16〜
図19を参照しつつ説明する。
図16、
図18〜
図20は、軌跡データを生成するために座標を算出する方法を説明するための図である。
図17(a)は、カメラ6aの画像の一例を示す図であり、
図17(b)は、カメラ6aの画像の一例を示す図である。説明を簡単にするために、カメラ6aの画像平面がロボット座標系CのYZ平面と平行であるとする。同様に、カメラ6cの画像平面がロボット座標系CのXZ平面と平行であるとする。また、カメラ6aはロボット座標系Cから見て座標[a
x,a
y,a
z]に配置され、カメラ6cはロボット座標系Cから見て座標[c
x,c
y,c
z]に配置されているものとする。
【0033】
まず、カメラ6aの画像より、画像座標系C6aから見たハンド2dの点pの座標[
6ap
x,
6ap
y](
図17(a)参照)を取得し、ロボット座標系Cから見た値に変換する。ロボット座標系Cと画像座標系C6aの間の変換(下記式(1)参照)には、ロボット座標系Cから見た画像座標系の位置姿勢を表す同次変換行列
CT
6aを用いる(下記式(2)参照)。なお、式(1)中の「*」は、不明な値であることを示す。
【数1】
【数2】
同様に、カメラ6cの画像より、画像座標系C6c上から見たハンド2dの点pの座標[
6cp
x,
6cp
y](
図17(b)参照)を取得し、同次変換行列
CT
6c(下記式(4)参照)を用いてロボット座標系Cから見た値に変換する(下記式(3)参照)。
【数3】
【数4】
従って、ロボット座標系Cから見た点pの座標は下記式(5)により示される。
【数5】
【0034】
次に、ハンド2dの姿勢を算出する方法を説明する。まず、ハンド2d上の3点を画像処理により抽出して点P1,点P2,点P3(
図18参照)とし、それぞれの点P1〜P3について上述の方法を用いてロボット座標系Cから見た座標に変換する。次に、下記式(6)を用いて、点P1から点P2へ向かう方向ベクトルa(大きさは1)を算出する。また、下記式(7)を用いて、点P1から点P3へ向かうベクトルb’を算出する。
【数6】
【数7】
ここで、ベクトルaとベクトルb’は直交しているとは限らないため(
図19(a)参照)、ベクトルaと直交するb’の成分を算出して、大きさが1であるベクトルb(下記式(8)参照)を算出する(
図19(b)参照)。
【数8】
次に、ベクトルaとベクトルbの外積からベクトルcを算出する(下記式(9)参照)。
【数9】
これらの3次元ベクトルa、ベクトルb、及びベクトルcを次のように並べると、ロボット座標系Cから見たハンド2dのハンド(ツール)座標系H(
図18参照)の位置姿勢を表す行列
CT
Hが算出される(下記式(10)参照)。なお、点P1をハンド2dの位置としている。
【数10】
さらに、定周期で3点の座標を取得して、毎回上述の計算を実行して
CT
Hを求めて保存することにより、ハンド2dの位置に加えて姿勢についても軌跡データを生成することができる。
【0035】
上述したように、ロボット撮像部12から出力された少なくとも2つの視点画像を利用してロボットR2のハンド2dの第2軌跡データを生成することができる。さらに、これら位置姿勢データ及び画像データを組み合わせて第2軌跡データを生成することもできる。例えば、位置姿勢データを利用して得たハンド2dの第2軌跡データを、画像データを利用して得たハンド2dの位置情報を利用して補正することにより、第2軌跡データの精度を向上させることができる。なお、これら第1及び第2軌跡データは、ロボット座標系Cを基準座標として規定するが、ロボット座標系C以外の座標系に基づいて規定されてもよい。
【0036】
<干渉データ生成部>
干渉データ生成部22は、後述する干渉データを生成する機能を有する。
図3に示すように、干渉データ生成部22には、第1軌跡データ生成部19から第1軌跡データが入力される。また、干渉データ生成部22には、第2軌跡データ生成部21から第2軌跡データが入力される。さらに、干渉データ生成部22には、仮想空間データ保持部18から仮想空間データが入力される。そして、干渉データ生成部22は、拡張現実空間データ生成部23に干渉データを出力する。
【0037】
干渉データは、仮想物体VBに対するロボットR2の干渉状態を示すものである。従って、干渉データは、仮想物体VBの情報を有する仮想空間データと、現実のロボットR2の動作に関する情報である第1軌跡データ又は第2軌跡データを利用して生成される。これら仮想空間データ、第1軌跡データ及び第2軌跡データは、共通のロボット座標系Cを基準座標としているため、干渉の有無を確認できる。干渉状態は、まず、ハンド2d及び関節J1〜J6までの位置を順運動学により算出する。次に、それぞれの位置を物体座標系(干渉の対象となる物体が有する座標系)から見た位置に変換して干渉領域内であるか否かを判定する。
【0038】
ここで、干渉の有無を確認する方法について、更に詳細に説明する。まず、ロボットの順運動学計算について、
図2に示されたロボットR2を例に説明する。ロボット座標系Cから見た第1座標系(関節J1)の位置姿勢
CT
1は下記式(11)により示される。ここでθ1は関節J1の回転角度であり、L
1はリンクK1の長さである。
【数11】
また、第1座標系(関節J1)から見た第2座標系(関節J2)の位置姿勢
1T
2は下記式(12)により示される。
【数12】
また、第2座標系(関節J2)から見た第3座標系(関節J3)の位置姿勢
2T
3は下記式(13)により示される。
【数13】
また、第3座標系(関節J3)から見た第4座標系(関節J4)の位置姿勢
3T
4は下記式(14)により示される。
【数14】
また、第4座標系(関節J4)から見た第5座標系(関節J5)の位置姿勢
4T
5は下記式(15)により示される。
【数15】
また、第5座標系(関節J5)から見た第6座標系(関節J6)の位置姿勢
5T
6は下記式(16)により示される。
【数16】
また、第6座標系(関節J6)から見たハンド座標系H(ハンド2d)の位置姿勢
6T
Hは下記式(17)により示される。
【数17】
上記式(11)〜(17)を用いることにより、ロボット座標系Cから見たハンド座標系Hの位置姿勢
CT
Hは次の行列の積で求められる(下記式(18)参照)。
【数18】
また、上記式(11)〜(17)を用いることにより、途中までの位置も計算することが可能である。例えば、ロボット座標系Cから見た関節5の位置姿勢
CT
5は、下記式(19)により求めることができる。
【数19】
さらに、例えば、関節J5と関節J6を連結するリンクK6(長さがL
6)の中間点Mの座標を算出する場合には、下記式(20)により求めることができる。
【数20】
【0039】
次に、干渉の判別の方法について説明する。
図20は、干渉の判別の方法について説明するための図である。
図20に示されるように、干渉領域は物体座標系CAの各座標軸方向の範囲として定義されるものとする。この説明では、物体Aの内側の空間を干渉領域とする。従って、干渉領域は、物体座標系CAの各座標軸の範囲において下記式(21)〜(23)により示される範囲である。
【数21】
【数22】
【数23】
所定の点P1が物体Aの干渉領域に存在するか否かを判定する。まず、ロボット座標系Cから見た点P1の座標
CP
1を算出する。具体的な点P1は、例えば、干渉の有無を確認したいロボットR2のハンド2dの先端や、肘などの位置である。次に、下記式(24)を用いて座標
CP
1を物体Aの物体座標系CAから見た座標
CAP
1に変換する。
【数24】
次に、
CAP
1の各成分(P1x、P1y、P1z)が干渉領域に存在するか否かを判定する。下記式(25)〜(27)の3つの条件が全て真であれば、点P1は、物体Aの内側に存在するため、物体Aと干渉していると判定される。
【数25】
【数26】
【数27】
【0040】
ここで、必要に応じて第1軌跡L1及び第2軌跡L2に対して干渉不可領域A1,A2を設定してもよい(
図11及び
図13参照)。第1軌跡L1及び第2軌跡L2は、例えば、ロボットR2のハンド2dに設定された所定点の軌跡である。一方、所定点の周囲には現実のロボットR2の部位が存在するため、第1軌跡L1及び第2軌跡L2のそのものは干渉を生じない場合であっても、現実のロボットR2では干渉が生じる場合がある。従って、ロボットR2の外形形状等を加味し、この範囲内に物体が侵入する場合には現実のロボットR2と干渉を生じる可能性がある領域として干渉不可領域A1,A2を設定する。なお、第1軌跡L1に対して設定される領域を干渉不可領域A1とし、第2軌跡L2に対して設定される領域を干渉不可領域A2とする。
【0041】
第1軌跡データと仮想空間データとを利用して得られた干渉データによれば、動作プログラムに規定されるとおりにロボットR2が動作した場合の干渉状態を確認できる。すなわち、動作プログラムの確認を行うことができる。一方、第2軌跡データと仮想空間データとを利用して得られた干渉データによれば、実際にロボットR2を動作させた場合の干渉状態を確認できる。すなわち、現実のロボットR2の動作軌跡の確認を行うことができる。
【0042】
<拡張現実空間データ生成部>
拡張現実空間データ生成部23は、拡張現実空間データを生成する機能を有する。拡張現実空間データ生成部23には、仮想空間データ保持部18から仮想空間データが入力される。拡張現実空間データ生成部23には、第1軌跡データ生成部19から第1軌跡データが入力される。拡張現実空間データ生成部23には、第2軌跡データ生成部21から第2軌跡データが入力される。拡張現実空間データ生成部23には、ロボット撮像部12から画像データが入力される。拡張現実空間データ生成部23には、干渉データ生成部22から干渉データが入力される。また、拡張現実空間データ生成部23は、表示部9、データ修正部24及びプログラム修正部16のそれぞれに拡張現実空間データを出力する。
【0043】
拡張現実空間データは、現実のロボットR2を撮像した画像に仮想ロボットV2及び仮想作業台V4a,V4bを重畳させたものであり、画像データ及び仮想空間データを利用して生成される。この拡張現実空間データにおいて、現実のロボットR2を撮像した画像には、必要に応じて第1軌跡L1や第2軌跡L2を重畳させてもよい。また、ロボットR2と仮想作業台V4a,V4bとの干渉状態を重畳させてもよい。
【0044】
ロボットR2における注目点の位置は、異なる視点から得られた少なくとも2つの画像データを解析することにより、ロボット座標系Cを基準座標として得られる。そして、ロボットR2の画像に重畳される第1軌跡L1、第2軌跡L2及び干渉状態のデータは、ロボット座標系Cを基準座標としている。従って、現実のロボットR2の画像に対して、第1軌跡L1、第2軌跡L2といった仮想のデータを重畳させることができる。
【0045】
<データ修正部>
データ修正部24は、拡張現実空間データに基づいて仮想空間データを修正する機能を有する。データ修正部24には、拡張現実空間データ生成部23から拡張現実空間データが入力される。また、データ修正部24は、仮想空間データ保持部18に仮想空間データを修正するためのデータを出力する。
【0046】
データ修正部24は、例えば、仮想空間データの校正に用いられる。例えば、実作業空間RSに配置されたロボットR2及び作業台R4a,R4bに、仮想空間VSに模擬された仮想ロボットV2と仮想作業台V4a,V4bを重畳させたとき、実作業空間RSにおける物体に対して、仮想空間VSに模擬された仮想物体VBが一致しない場合がある。データ修正部24は、実作業空間RSにおける物体に対する仮想物体VBの差異を抽出して、実作業空間RSにおける物体に対して仮想物体VBの位置や形状を近づける。なお、この仮想空間データの校正は、必要に応じて実施すればよい。また、技術者8が仮想空間データを修正する場合に、補助的に用いてもよい。
【0047】
<表示部>
表示部9は、拡張現実空間の画像を表示し、技術者8に情報を提供する機能を有する。表示部9には、拡張現実空間データ生成部23から拡張現実空間データが入力される。この表示部9には、公知の画像表示デバイスを用いることができる。例えば、ヘッドマウントディスプレイや液晶表示パネル等を用いることができる。
【0048】
図6は、ロボット装置1を実現するコンピュータを説明するための図である。
図6に示すように、コンピュータ100は、本実施形態のロボット装置1を構成するハードウエアの一例である。コンピュータ100は、CPUを具備しソフトウエアによる処理や制御を行なうパーソナルコンピュータ等の情報処理装置を含む。コンピュータ100は、CPU101、主記憶装置であるRAM102及びROM103、キーボード、マウス及びプログラミングペンダント等の入力装置7、ディスプレイ等の表示部9、ハードディスク等の補助記憶装置108などを含むコンピュータシステムとして構成されている。
図3に示す機能的構成要素は、CPU101、RAM102等のハードウエア上に所定のコンピュータソフトウェアを読み込ませることにより、CPU101の制御のもとで入力装置7、表示部9を動作させるとともに、RAM102や補助記憶装置108におけるデータの読み出し及び書き込みを行うことで実現される。
【0049】
<ロボット教示作業>
続いて、ロボット装置1を用いたロボット教示方法を説明する。
図7及び
図8は、ロボット教示方法の主要な工程を説明するための図である。
図7に示すように、まず、実作業空間RSにロボットR2及び作業台R4a,R4bを配置する(工程S1)(
図1参照)。次に、プログラム保持部14に入力装置7を用いて初期動作プログラムを入力する(工程S2)(
図3参照)。続いて、仮想空間データ保持部18に入力装置7を用いて仮想現実空間データを入力する(工程S3)(
図3参照)。
【0050】
ロボットR2を動作させる前に仮想空間データの校正を実施する。
図9は、拡張現実空間ARの画像の一例を示す図である。ロボット撮像部12によって得た実作業空間RSの画像に、仮想空間VSの画像を重畳した拡張現実空間データを生成し(工程S4)、拡張現実空間データを利用して拡張現実空間ARの画像を表示部9に表示する(工程S5)。
図9に示すように、表示部9にはカメラ6cによって得られた画像に仮想空間データに含まれた仮想物体VBを重畳させた画像が表示されている。
【0051】
この画像には、現実のロボットR2及び現実の作業台R4a,R4bと、仮想のロボットV2及び仮想の作業台V4a,V4bが表示されている。ロボットR2とロボットV2とはずれが生じていないため、仮想空間データにおけるロボットV2のデータを修正する必要はない。一方、作業台R4aに対して作業台V4aはX軸方向の位置が異なっている。さらに、作業台R4bに対して作業台V4bはZ軸方向の位置及び形状が異なっている。従って、仮想現実空間データの修正が必要であると判断される(工程S6:YES)。仮想現実空間データの修正は、入力装置7を用いて技術者8が実施してもよい。また、データ処理部13が、位置のずれ及び形状の相違をピクセルベースで検出して修正量を算出することにより仮想空間データを修正してもよい。ロボットR2に対するロボットV2の位置及び形状、並びに作業台R4a,R4bに対する作業台V4a,V4bの位置及び形状について修正の必要がないと判断された場合には、次工程に移行する(工程S6:NO)。
【0052】
図8に示すように、仮想空間データの校正終了後、実作業空間RSに配置されたロボットR2以外の物体を取り除く(工程S8)。この後、実作業空間RSには、ロボットR2だけが存在する。
図10は、拡張現実空間ARの画像の一例を示す図である。
図10に示すように、拡張現実空間ARの画像には、ロボットR2,V2及び作業台V4a,V4bが含まれている。すなわち、拡張現実空間ARの画像には、現実の作業台R4a,R4bは実作業空間RSから取り除かれているので含まれていない。
【0053】
続いて、初期動作プログラムの干渉チェックを実施する。初期動作プログラムにより規定された第1軌跡L1通りにロボットR2のハンド2dが動いた場合に、仮想の作業台V4a,V4bへの干渉が生じていないかを確認する。より詳細には、まず、画像データ、仮想空間データ及び第1軌跡データを利用して拡張現実空間データを生成する(工程S9)。そして、拡張現実空間データを利用して拡張現実空間ARの画像を表示する(工程S10)。拡張現実空間ARの画像には、画像データに基づくロボットR2、仮想空間データに基づくロボットV2及び作業台V4a,V4b、第1軌跡L1並びに干渉不可領域A1が含まれている。
図11は、拡張現実空間ARの画像の一例を示す図である。
図11には拡張現実空間ARの一部を拡大した図であり、作業台V4a,V4b、第1軌跡L1並びに干渉不可領域A1が示されている。初期動作プログラムに基づく第1軌跡L1は、初期点PSから目標点POを経由して終点PEに至る。
図11に示された例によれば、第1軌跡L1が作業台V4bと干渉する部分Ebを有している。さらに、干渉不可領域A1が作業台V4bと干渉する部分Eaを有している。従って、初期動作プログラムの修正が必要であると判断される(工程S11:YES)。
【0054】
技術者8は、入力装置7を用いて動作プログラムを修正する(工程S12)。そして、修正された動作プログラムを利用して再び、拡張現実空間データを生成し(工程S9)、拡張現実空間ARの画像を表示部9に表示する(工程S10)。
図12は、拡張現実空間ARの画像の一例を示す図である。
図12に示すように、修正された第1軌跡L1は新たな中間点P1を有している。ここで、第1軌跡L1が変更されると、自動的に干渉不可領域A1も変更される。この第1軌跡L1は作業台V4bと干渉することがなく、干渉不可領域A1も作業台V4bと干渉していない。従って、動作プログラムの修正は必要ないと判断され次工程に移行する(工程S11:NO)。
【0055】
ロボットR2を実際に動作させた場合の干渉チェックを実施する。より詳細には、まず、第1軌跡L1を生成する動作プログラムを用いてロボットR2を動作させる(工程S13)。そして、拡張現実空間データを生成し(工程S14)、拡張現実空間ARの画像を表示部9に表示する(工程S15)。ここで、工程S14では、画像データ、仮想空間データ、第1軌跡データ及び第2軌跡データを利用して拡張現実空間データを生成する。
図13は、拡張現実空間ARの画像の一例を示す図である。
図13には、作業台V4a,V4b、第1軌跡L1、第2軌跡L2及び干渉不可領域A2が含まれている。なお、この干渉不可領域A2は、第2軌跡L2に基づくものである。
【0056】
図13に示された例によれば、第2軌跡L2が作業台V4bと干渉する部分Ecを有している。さらに、干渉不可領域A2が作業台V4bと干渉する部分Edを有している。
【0057】
ところで、ロボットR2の動作では、動作プログラムに基づく第1軌跡L1に対して実際の軌跡である第2軌跡L2がずれる場合がある。ロボットR2の動作制御は第1の位置から次の第2の位置に移動する時間を最優先事項とする場合がある。本実施形態では、初期点PSから終点PEまでに移動する時間を最優先事項と設定しているものとする。そうすると、初期点PSから終点PEまでの移動において、所定時間内における移動は達成されていても、初期点PSから終点PEに至る実際の第2軌跡L2が第1軌跡L1から外れる場合がある。例えば、
図13に示す例では、第2軌跡L2は目標点POに到達していないことがわかる。この現象は、内回り現象と呼ばれる。従って、第2軌跡L2及び干渉不可領域A2の作業台V4bへの干渉を解消し、厳密に目標点POを経由させたい場合には動作プログラムを修正する必要がある(工程S16:YES)。
【0058】
図14は、拡張現実空間ARの画像の一例を示す図である。第2軌跡L2及び干渉不可領域A2の作業台V4bへの干渉を解消するために、中間点P1の位置を修正する(工程S17)。そして、第2軌跡L2が目標点POを経由するように中間点P2の位置を設定する。これら中間点P1,P2の修正は、技術者8が実施してもよいし、プログラム修正部16が実施してもよい。プログラム修正部16による中間点P1の修正では、作業台V4bが占める領域に干渉する干渉不可領域A2の座標系Cの各座標軸方向に沿った重複長さを算出し、当該長さ分だけ中間点P2の位置をシフトさせる。また、プログラム修正部16による中間点P2の設定は、目標点POに対する第2軌跡L2の各軸方向に沿った離間距離を算出する。そして離間距離に基づいて中間点P1の位置をシフトさせる。
【0059】
続いて、修正された動作プログラムを利用して再びロボットR2を動作させ(工程S13)、拡張現実空間データを生成し(工程S14)、拡張現実空間ARの画像を表示部9に表示する(工程S15)。
図15は、拡張現実空間ARの画像の一例を示す図である。
図15に示すように、修正された動作プログラムによれば、第2軌跡L2及び干渉不可領域A2の作業台V4bへの干渉が解消され、第2軌跡L2が目標点POを経由している。従って、動作プログラムを修正する必要はない(工程S16:NO)。
【0060】
以上の工程S1〜S16によりロボット装置1を用いたロボットR2の教示作業が完了する。
【0061】
本実施形態のロボット装置1によれば、現実のロボットR2を動作させた画像データをロボット撮像部12から取得する。また、ロボット装置1は、実作業空間RSに存在する仮想物体VBを仮想空間において模擬した仮想空間データを有している。そして、拡張現実空間データ生成部23において画像データと仮想空間データとを利用して拡張現実空間データが生成される。これによれば、仮想物体VBが配置された仮想空間において、現実のロボットR2を動作させた結果を重畳させることができる。このため、教示作業は、現実の作業台R4a,R4bといった物体を実作業空間RSに配置することなく、ロボットR2を動作させて実施される。従って、ロボットR2と周辺物体との実際の干渉を生じさせることなく、ロボットR2の教示作業を実施することができるので、動作プログラムの試行錯誤による教示作業を安全かつ容易に実施することができる。
【0062】
本実施形態のロボット装置1は、第1軌跡データと第2軌跡データを生成し、それらデータを利用して拡張現実空間データを生成して、それら第1軌跡L1及び第2軌跡L2を表示部9に表示する。これによれば、設定した第1軌跡L1とロボットR2を動作させた結果である第2軌跡L2との差異を目視により確認することができるので、動作プログラムの修正を容易かつ効率的に実施することが可能になる。従って、ロボットR2の教示作業を一層容易にすることができる。
【0063】
本実施形態のロボット装置1によれば、現実のロボットR2と仮想物体VBとの干渉状態を示す干渉データを生成する。このため、ロボットR2と仮想物体VBとの干渉の有無を目視により確認できるので、仮想物体VBとの干渉を生じないように動作プログラムを修正することが可能になる。従って、現実の周辺物体との干渉を生じない動作を容易にロボットR2に教示することができる。
【0064】
以上、本発明の好適な実施形態について説明したが、本発明は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。例えば、ロボットR2は、垂直双腕ロボットであってもよい。また、拡張現実空間ARの画像には、ロボットR2の画像、仮想物体VBの画像、第1軌跡L1、第2軌跡L2の他に教示作業を容易にする種々の情報を表示してもよい。また、上記実施形態では、2次元の軌跡をロボットR2に教示する場合を例に説明をしたが、ロボット装置1は、3次元の軌跡をロボットR2に教示する場合にも用いてもよい。また、上記実施形態では、ロボット装置1を、仮想空間データの校正、第1軌跡データの確認作業、及び第2軌跡データの確認作業に利用したが、これら作業の一つを実施するためにロボット装置1を用いてもよい。
【0065】
また、上述したロボット装置1により動作を教示したロボットR2を用いて所望の製品(被加工物)を製造してもよい。