【図面の簡単な説明】
【0009】
【図1】図1は、本開示のロボットシステム1を模式的に示す図である。
【図2】図2は、ロボットシステム1の各構成要素のハードウェア構成を模式的に示す図である。
【図3】図3は、力覚センサ110が検出可能な力およびモーメントを示す図である。
【図4A】図4Aは、ロボットアーム100の先端部102と力覚センサ110との拡大図である。
【図4B】図4Bは力覚センサ110から出力された検出値の向きおよび大きさを、原点Oから延びる矢印の向きおよび長さで示す図である。
【図5A】図5Aは、教示者が手で力覚センサ110を引く様子を示す図である。
【図5B】図5Bは、力の差分Dを模式的に示す図である。
【図6A】図6Aは、ロボットアーム100の先端部102と力覚センサ110とハンド型のエンドエフェクタ120の拡大図である。
【図6B】図6Bは、力覚センサ110から出力された検出値の向きおよび大きさを、原点Oから延びる矢印の向きおよび長さで示す図である。
【図7A】図7Aは、ロボットアーム100の姿勢を回転させたときの力覚センサ110およびエンドエフェクタ120を示す図である。
【図7B】図7BはX軸およびY軸にかかる力のモーメントを模式的に表す図である。
【図8A】図8Aは、姿勢(1)を取ったときの力覚センサ110およびエンドエフェクタ120と、姿勢(2)を取ったときの力覚センサ110およびエンドエフェクタ120とを示す図である。
【図8B】図8Bは、角度α1および角度α2の姿勢(1)および(2)において検出されたX軸周りのモーメントの検出値P11およびP12を示す図である。
【図8C】図8Cは、角度α1および角度α2の姿勢(1)および(2)において検出されたY軸周りのモーメントの検出値P21およびP22を示す図である。
【図9】図9は、信号処理回路210の処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、添付の図面を参照しながら、例示的なロボットシステム1の実施形態を説明する。本明細書では、必要以上に詳細な説明は省略する場合がある。たとえば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。なお、本発明者は、当業者が本開示を十分に理解するために添付図面および以下の説明を提供するのであって、これらによって特許請求の範囲に記載の主題を限定することを意図しない。以下の説明においては、同一または類似する構成要素には、同一の参照符号を付している。
【0011】
<用語>
「垂直軸」および「水平面」の用語は、ロボットアームが取り付けられる基台(ベース)の上面(設置面)を基準として定められる方向を示している。具体的には、設置面に垂直な方向を「垂直軸」と呼び、この「垂直軸」に直交する平面を「水平面」と呼ぶ。これらの用語は、発明の構成要素の配置関係をわかりやすくする目的で使用されており、ロボットアームの使用時における方向を制限する意図はない。本開示の実施形態において、垂直軸は鉛直方向に一致しているが、「垂直軸」の用語の意義は、この例に限定されない。「垂直軸」は、鉛直方向から傾斜していても良い。
【0012】
「力覚センサ」は、本明細書では第2アームの先端部またはエンドエフェクタのハンド等に設けられて、受けた力および/またはトルク(モーメント)の検出値をセンシング結果として出力する。なお、以下では「モーメント」と言う用語を採用する。
【0013】
本明細書では、力覚センサは概ね直円柱形状であり、便宜的に、円柱の中心軸をZ軸とし、Z軸を法線に有する平面を張る2本の直交する軸をそれぞれX軸およびY軸と呼ぶ。
【0014】
「エンドエフェクタ」は、ロボットアームが作業を行えるように第2アームに取り付けて用いられる機器である。エンドエフェクタの典型例は、把持部、ナット回し、溶接ガン、およびスプレーガンを含む。エンドエフェクタは、ロボットアームの用途に応じて、ユーザが適宜取り替えて使用することができる。ロボットアームの先端部に力覚センサが取り付けられる場合には、エンドエフェクタは、力覚センサの第2アームと反対側の面に取り付けられ得る。
【0015】
「ロボットアームの先端部」とは、ロボットアームが有するエンドエフェクタの取付面である。取付面はメカニカルインタフェースとも呼ばれる。「先端部」は、ツールセンタポイントと呼んでも良い。
【0016】
図1は、本開示のロボットシステム1を模式的に示している。また図2は、ロボットシステム1の各構成要素のハードウェア構成を模式的に示している。本開示のロボットシステム1は、非限定的で例示的な実施形態において、ロボット2と、ロボットコントローラ3とを有している。
【0017】
ロボット2は、ロボットアーム100と、力覚センサ110と、エンドエフェクタ120とを有する。
【0018】
ロボットアーム100は、いわゆる垂直多関節ロボットとも呼ばれ、複数の関節および複数のアームを有している。各関節は、関節の運動を引き起こすモータおよび減速機などの電気機械要素、ならびに関節の回転角度(関節変数)を検出するセンサを含み得る。複数のアームは、上腕に相当するアーム、および、前腕および手首の両方を含むアーム等を含む。各アームは複数の関節を含み得る。ただし、アームは、力覚センサ110およびエンドエフェクタ120を含まない。
【0019】
力覚センサ110は、ロボットアーム100の先端部102とエンドエフェクタ120との間に設けられている。力覚センサ110は、受けた力およびモーメントの検出値を出力する。
【0020】
図3は、力覚センサ110が検出可能な力およびモーメントを示している。本明細書では、力覚センサは6軸力覚センサである。6軸力覚センサは、XYZ軸方向の力(Fx,Fy,Fz)と、それらの各軸周りのモーメント値(Frx,Fry,Frz)を計測し出力することができる。本明細書では、力覚センサ110の「検出値」は、各軸方向の力の大きさを示す値および各軸周りのモーメントの大きさを示す値の組であり得る。
【0021】
6軸力覚センサでは、多数の歪ゲージが内部のビーム構造に貼り付けられている。歪ゲージは歪量を計測し、力とモーメントとに変換する。歪量の検出方式として、水晶圧電方式、静電容量方式等が知られているが、本明細書で言及する6軸力覚センサはいずれの検出方式を採用していてもよい。6軸力覚センサの構成および検出方式は公知であるため、詳細な説明は省略する。
【0022】
本実施形態では、+Z軸側の面がロボットアーム100の先端部に取り付けられ、−Z軸側の面にエンドエフェクタ120が取り付けられる。
【0024】
ロボットコントローラ3は、信号処理回路210と、インタフェース装置212とを有する。なおロボットコントローラ3は記憶装置214を備えていてもよい。
【0025】
信号処理回路210はロボットに所定の作業を実行させるための制御を行う。例えば信号処理回路210は教示作業時のロボット2の動作を制御する。インタフェース装置212は、ロボット2と接続されており、力覚センサ110から出力された検出値を受け取る。記憶装置214は教示結果を記憶する。
【0026】
ロボットシステム1は、エンドエフェクタ120を利用して自動化された作業を行う。どのような作業を行うせるかを、操作者(教示者)が直接ロボットアーム100を動かして学習させることが可能である。このような学習方法を、直接教示方式という。
【0027】
教示者は、力覚センサ110を手で引き、押すことにより、ロボットアーム100のアームを移動させる。このとき力覚センサ110は、教示者から受けた力およびモーメントの検出値を出力する。ロボットコントローラ3は、力およびモーメントが検出された方向および角度にロボットアーム100を移動させる。
【0028】
図4Aは、ロボットアーム100の先端部102と力覚センサ110との拡大図である。エンドエフェクタ120は取り付けられておらず、力覚センサ110は鉛直下向きに静止しているとする。
【0029】
図4Bは力覚センサ110から出力された検出値の向きおよび大きさを、原点Oから延びる矢印の向きおよび長さで示している。力覚センサ110は重力以外の外力を受けていないため、本来であればFxおよびFyは検出されないはずであるが、力覚センサ110からは何らかの検出値が出力されていることを示している。なお、モーメントについての図示は省略した。
【0030】
このような状態で教示作業が開始される。信号処理回路210はこのときの検出値をゼロ点と見なす。
【0031】
図5Aは、教示者が手で力覚センサ110を引く様子を示している。手で力覚センサ110に力を加えると、加えられた力に応じて力覚センサ110から出力される検出値が変化する。信号処理回路210は、ゼロ点からの力の差分を算出し、差分に相当する方向および角度だけ、ロボットアーム100を動作させる。図5Bは、力の差分Dを模式的に示している。教示者が手を離すと、ロボットアーム100は再び図4Aの状態に戻るため、力覚センサ110からの出力もゼロ点に戻る。差分はゼロになるため、信号処理回路210はロボットアーム100の動作を停止させる。
【0032】
力覚センサ110にエンドエフェクタ120が取り付けられた際、従来は教示者が手を離してもロボットアームが動き続けるという問題があった。
【0033】
図6Aは、ロボットアーム100の先端部102と力覚センサ110とハンド型のエンドエフェクタ120の拡大図である。力覚センサ110は鉛直下向きに静止しているとする。図6Bは、力覚センサ110から出力された検出値の向きおよび大きさを、原点Oから延びる矢印の向きおよび長さで示している。エンドエフェクタ120が取り付けられたため、エンドエフェクタ120の重量に起因する力Fzが増加していることが理解される。
【0034】
図7Aは、ロボットアーム100の姿勢を回転させたときの力覚センサ110およびエンドエフェクタ120を示している。この状態では、力覚センサ110には力だけでなく、力のモーメントもかかる。図7BはX軸およびY軸にかかる力のモーメントを模式的に表している。エンドエフェクタ120の質量をM、重力加速度をg、エンドエフェクタ120の重心Gから力覚センサ110の検出点までの長さをL、傾き角をθと表すと、力のモーメントはL・Mgsinθである。力覚センサ110は、この力のモーメントをX軸周りおよびY軸周りのモーメントとして検出する。留意すべきは、図7Aに示す状態でロボットアーム100が静止していても、力のモーメントが発生し続けることである。つまり、教示者が力覚センサ110またはエンドエフェクタ120に触れていなくても、力覚センサ110は力のモーメントが反映された検出値を出力し続ける。
【0035】
すると信号処理回路210は、力覚センサ110から出力された検出値にはゼロ点からの差分が引き続き存在すると判断し、ロボットアーム100の動作を継続してしまう。これが、教示者が手を離してもロボットアームが動き続けるという問題を発生させていた。
【0036】
そこで本発明者は、力のモーメントの影響を排除するための処理を検討した。その結果、ロボットアーム100の姿勢を回転させた状態を含む、少なくとも2つの姿勢における力覚センサ110の検出値を利用して、力のモーメントの影響を相殺する技術を見出した。
【0037】
図8Aは、姿勢(1)を取ったときの力覚センサ110およびエンドエフェクタ120と、姿勢(2)を取ったときの力覚センサ110およびエンドエフェクタ120とを示している。図8Aには姿勢(1)および(2)の間の姿勢(3)も示されているが、姿勢(3)については後述する。
【0038】
本実施形態では、姿勢(1)は、X軸の周りにエンドエフェクタ120を角度α1だけ回転させ、Y軸の周りにエンドエフェクタ120を角度β1だけ回転させた姿勢である。また姿勢(2)は、X軸の周りにエンドエフェクタ120を角度α2(≠α1)だけ回転させ、Y軸の周りにエンドエフェクタ120を角度β2(≠β1)だけ回転させた姿勢である。いずれの姿勢(1)および(2)においても、教示者は力覚センサ110およびエンドエフェクタ120に手を触れていない。非限定的で例示的な実施形態において、α1=0、α2=−45度または+45度、β1=0、β2=−45度または+45度、である。姿勢(1)および姿勢(2)の少なくとも一方は、エンドエフェクタ120に非0のモーメントがかかる姿勢であればよい。
【0039】
図8Bは、角度α1および角度α2の姿勢(1)および(2)において検出されたX軸周りのモーメントの検出値P11およびP12を示している。検出値P11は姿勢(1)におけるX軸周りのモーメントのゼロ点を意味し、検出値P12は姿勢(2)におけるX軸周りのモーメントのゼロ点を意味する。
【0040】
図8Cは、角度α1および角度α2の姿勢(1)および(2)において検出されたY軸周りのモーメントの検出値P21およびP22を示している。検出値P21は姿勢(1)におけるY軸周りのモーメントのゼロ点を意味し、検出値P22は姿勢(2)におけるY軸周りのモーメントのゼロ点を意味する。
【0041】
上述した「ゼロ点」を与える各検出値は、それぞれの角度における基準値として利用される。
【0042】
検出値P11、P12、P21およびP22は、予め求めておくことが可能である。
【0043】
本発明者は、ロボットアーム100が姿勢(1)および(2)とは異なる姿勢(3)を取ったときに、検出値P11、P12、P21およびP22を用いて、姿勢(3)におけるX軸周りのモーメントのゼロ点およびY軸周りのモーメントのゼロ点に相当する各値を求めた。そして本発明者は、得られた各ゼロ点に相当する各値を、姿勢(3)で得られたX軸周りのモーメントの検出値およびY軸周りのモーメントの検出値から除外すれば、上述の問題が生じないことを確認した。
【0044】
まず姿勢(3)における、X軸周りの角度α3およびY軸周りの角度β3を取得する。角度α3およびβ3は、ロボットアーム100の先端部102の座標を利用して取得され得る。
【0045】
6軸ロボットアームの動作中、ロボットコントローラ3の信号処理回路210は、6軸分のモータ回転角度に加えて、手先部分の位置(XYZ座標)も常に計算し続けている。先端部102の座標は、XYZの各軸および各軸周りの角度を用いて表され得る。表現形式は、例えばX[mm],Y[mm],Z[mm],Rz[deg],Ry[deg],Rx[deg]である。前三者は直交座標系での表現、後三者はオイラー座標系での表現である。つまり、姿勢(1)ではX軸周りの角度Rx1およびY軸周りの角度Ry1が得られるし、姿勢(2)でもX軸周りの角度Rx2およびY軸周りの角度Ry2が得られる。よって、姿勢(3)でもX軸周りの角度Rx3(=α3)およびY軸周りの角度Ry3(=β3)が得られる。
【0046】
信号処理回路210は、角度α1、α2、α3、および検出値P11、P12を利用して、姿勢(3)におけるX軸周りのモーメントの値P13を算出する。また信号処理回路210は、角度β1、β2、β3、および検出値P21、P22を利用して、姿勢(3)におけるY軸周りのモーメントの値P23を算出する。
【0047】
本実施形態においては、信号処理回路210は、角度α3の姿勢(3)を取ったときのX軸周りのモーメント値P13を、角度α1、α2、α3とX軸周りのモーメント値P11、P12、P13との線形関係を利用して求める。また信号処理回路210は、角度β3の姿勢(3)を取ったときのY軸周りのモーメント値P23を、角度β1、β2、β3とY軸周りのモーメント値P21、P22、P23との線形関係を利用して求める。つまりいずれも線形補間を行う。
【0048】
図8Bの例では、検出値P11およびP12を結ぶ直線が角度α3を取ったときの値を、X軸周りのモーメント値P13として採用する。図8Cの例では、検出値P21およびP22を結ぶ直線が角度α3を取ったときの値を、Y軸周りのモーメント値P23として採用する。一般化すると以下の数式によって、姿勢(1)および(2)の間の姿勢を求めることができる。
(数1)
P1n=K1(α−α1)+P11 ただしK=(P11−P12)/(α1−α2)
(数2)
P2n=K2(α−α1)+P21 ただしK=(P21−P22)/(α1−α2)
【0049】
その後、姿勢(3)における力覚センサ110の検出値が得られる。このときのX軸周りのモーメント値をQ1とし、Y軸周りのモーメント値をQ2とする。信号処理回路210は、以下の式により、求めた値P13およびP23を基準値として利用して、X軸周りおよびY軸周りの力のモーメントに関する教示値T1およびT2を求める。
T1=Q1−P1n、 T2=Q2−P2n
【0050】
なお、上述の数位1および数2は、姿勢(3)が姿勢(1)および(2)の間の姿勢である場合に成り立つ。そのため、姿勢(1)および(2)の間には入らない姿勢を取り得る場合には、例えば角度α4の新たな姿勢(4)におけるX軸周りのモーメントの検出値P14およびY軸周りのモーメントの検出値P24を事前に取得しておけばよい。このとき、教示者は力覚センサ110およびエンドエフェクタ120に手を触れていない。図8Bおよび8Cには、検出値P14およびP24がそれぞれ示されている。姿勢(1)と姿勢(4)との間の姿勢(5)を取った場合には、上述の数1におけるP12をP14に置き換え、数3におけるP22をP24に置き換えた新たな数式を利用して、姿勢(5)のモーメント値を求めゼロ点として扱えばよい。X軸周りおよびY軸周りの力のモーメントに関する教示値T1およびT2の求め方は上述の通りである。
【0051】
図9は、信号処理回路210の処理の手順を示すフローチャートを示している。このフローチャートに記載された処理を実行する命令群が、コンピュータプログラムとして記述されており信号処理回路210に実行される。
【0052】
ステップS20において、信号処理回路210は、記憶装置214に格納された第1姿勢における第1基準値および第1姿勢と異なる第2姿勢における第2基準値を読み出す。
【0053】
ステップS22において、信号処理回路210は、第3姿勢になったとき、第1基準値と第2基準値とを利用して第3姿勢における第3基準値を算出する。
【0054】
ステップS24において、信号処理回路210は、第3姿勢における力覚センサの検出値と第3基準値とを利用して第3姿勢における教示値を取得する。
【0055】
ステップS22および24の詳細は上述の通りである。
【0056】
上述の処理により、信号処理回路210は、複数の基準値を利用して、力覚センサ110から出力されたモーメントに関する検出値から姿勢が変化した後の力覚センサ110にかかるモーメントの影響を相殺し、モーメントの影響が相殺された検出値を教示値として取得する。
【0057】
以上の処理によれば、教示者が手を離してもロボットアームが動き続けることはなくなる。事前に複数の姿勢におけるX軸周りおよびY軸周りの検出値を求め、基準値を用意しておく必要はあるが、これまで必要であった設計情報を記憶し、理論値を計算する必要はないため、簡便な操作で外力を正しく検出し、教示値として利用できる。
【0058】
なお上述の実施形態では、力覚センサ110からの検出値をそのまま用いる例を説明したが、検出値を加工した加工値を利用してもよい。加工とは、例えばノイズのフィルタリングであり得る。