(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0005】
ロボットの先端に位置するツール等の物体の重量と重心位置を推定する方法として、ロボットの軸を回転させたときの、該軸を駆動するモータの電流を測定し、運動方程式を用いて負荷の重量を計算する方法が知られている。しかしモータ電流を使用する場合、軸に作用する摩擦力を同定する必要があるが、摩擦力を同定するのは一般に困難であり、誤差が生じやすい。
【0006】
また、予めツール等の物体の重量や重心位置を何らかの手段で測定してから該物体をロボットに装着し、作業者が手動でロボット制御装置等に測定結果を入力・設定する方法も考えられるが、測定する手段が容易に入手できなかったり(特に重心位置は測定が難しい)、ツールをロボットに装着した後に、該ツールの重量と重心位置の情報が必要であることが判明したりすることがあるため、物体をロボットに装着した状態で重量や重心位置を推定できる方法、手段が望まれる。
【課題を解決するための手段】
【0007】
本開示の一態様は、ロボットの可動部を駆動する軸に作用するトルクを検出するトルクセンサと、前記可動部に取り付けられた物体が第1の姿勢で第1の位置にあるときに前記トルクセンサで検出された、前記軸に作用する第1のトルクと、
前記第1のトルクを検出したときの前記可動部の位置及び姿勢において、前記物体が前記可動部に取り付けられていないときに前記軸に作用するトルクM1と、前記物体が前記第1の姿勢で前記第1の位置とは異なる第2の位置にあるときに前記トルクセンサで検出された、前記軸に作用する第2のトルクと、
前記第2のトルクを検出したときの前記可動部の位置及び姿勢において、前記物体が前記可動部に取り付けられていないときに前記軸に作用するトルクM2と、前記第1の位置と、前記第2の位置とを用いて、前記物体の重量を計算する計算部と、を有する、物体の重量の推定装置である。
【0008】
本開示の他の態様は、ロボットの可動部を駆動する軸に作用するトルクを検出するトルクセンサと、前記可動部に取り付けられた物体が互いに異なる3つの姿勢にあるときのそれぞれにおいて前記トルクセンサで検出された、前記軸に作用する第1のトルク、第2のトルク及び第3のトルクと、前記第1のトルクを検出したときの前記可動部の第1の位置及び姿勢と、
前記第1の位置及び姿勢において、前記物体が前記可動部に取り付けられていないときに前記軸に作用するトルクM1と、前記第2のトルクを検出したときの前記可動部の第2の位置及び姿勢と、
前記第2の位置及び姿勢において、前記物体が前記可動部に取り付けられていないときに前記軸に作用するトルクM2と、前記第3のトルクを検出したときの前記可動部の第3の位置及び姿勢と
、前記第3の位置及び姿勢において、前記物体が前記可動部に取り付けられていないときに前記軸に作用するトルクM3と、前記物体の重量とを用いて、前記物体の重心位置を計算する計算部と、を有する、物体の重心位置の推定装置である。
【0009】
本開示のさらなる他の態様は、トルクセンサを有するロボットの可動部に物体を取り付けることと、前記物体が第1の姿勢で第1の位置にあるときに、前記可動部を駆動する軸に作用する第1のトルクを前記トルクセンサで検出することと、
前記第1のトルクを検出したときの前記可動部の位置及び姿勢において、前記物体が前記可動部に取り付けられていないときに前記軸に作用するトルクM1を取得することと、前記物体が前記第1の姿勢で前記第1の位置とは異なる第2の位置にあるときに、前記軸に作用する第2のトルクを前記トルクセンサで検出することと、
前記第2のトルクを検出したときの前記可動部の位置及び姿勢において、前記物体が前記可動部に取り付けられていないときに前記軸に作用するトルクM2を取得することと、前記第1のトルク、前記第2のトルク、
前記トルクM1、前記トルクM2、前記第1の位置及び前記第2の位置を用いて、前記物体の重量を計算することと、を含む、物体の重量の推定方法である。
【0010】
本開示のまたさらなる他の態様は、トルクセンサを有するロボットの可動部に、重量が既知の物体を取り付けることと、前記物体が互いに異なる3つの姿勢にあるときのそれぞれにおいて、前記可動部を駆動する軸に作用する第1のトルク、第2のトルク及び第3のトルクを前記トルクセンサで検出することと、
前記第1のトルクを検出したときの前記可動部の第1の位置及び姿勢E1において、前記物体が前記可動部に取り付けられていないときに前記軸に作用するトルクM1を取得し、前記第2のトルクを検出したときの前記可動部の第2の位置及び姿勢E2において、前記物体が前記可動部に取り付けられていないときに前記軸に作用するトルクM2を取得し、前記第3のトルクを検出したときの前記可動部の第3の位置及び姿勢E3において、前記物体が前記可動部に取り付けられていないときに前記軸に作用するトルクM3を取得することと、前記第1のトルク、前記第2のトルク、前記第3のトルク、
前記第1の位置及び姿勢E1、前記第2の位置及び姿勢E2、前記第3の位置及び姿勢E3、前記トルクM1、前記トルクM2、前記トルクM3、及び前記物体の重量を用いて、前記物体の重心位置を計算することと、を含む、物体の重心位置の推定方法である。
【発明の効果】
【0011】
本開示によれば、物体をロボットに装着した状態で、ロボットの簡易な動作によって、該物体の重量及び重心位置の少なくとも一方を、高い精度で推定することができる。
【発明を実施するための形態】
【0013】
図1は、好適な実施形態に係る推定装置を含むロボットシステム10の概略構成例を示す。推定装置は、ロボット14の可動部12を駆動する軸16に作用するトルクを検出するトルクセンサ18を有する。ロボット14は、後述する動作を行える可動部12を有するものであればどのような構造のものでもよいが、図示例では、所定位置に設置される基部20と、基部20に対して略鉛直方向の軸線回りに旋回可能な旋回胴22と、旋回胴22に対して回転可能に取り付けられた上腕24と、上腕24に対して回転可能に取り付けられた前腕26と、前腕26に対して回転可能に取り付けられた手首部28とを有する6軸の多関節ロボットである。
【0014】
推定装置は、物体の重量を推定するために使用される場合、可動部12(ここでは可動部先端に相当する手首部28)に取り付けられた物体30が第1の姿勢で第1の位置にあるときにトルクセンサ18で検出された、軸16に作用する第1のトルクと、物体30が該第1の姿勢で第1の位置とは異なる第2の位置にあるときにトルクセンサ18で検出された、軸16に作用する第2のトルクと、該第1の位置と、該第2の位置とを用いて、物体30の重量を計算する計算部32を有する。なお推定装置は、計算部32が使用するデータや計算結果等を記憶するための、メモリ等の記憶部34をさらに有してもよい。
【0015】
また推定装置が物体の重心位置を推定するために使用される場合、推定装置の計算部32は、可動部12(ここでは可動部先端に相当する手首部28)に取り付けられた物体30が互いに異なる3つの姿勢にあるときのそれぞれにおいてトルクセンサ18で検出された、軸16に作用する第1のトルク、第2のトルク及び第3のトルクと、該第1のトルクを検出したときの可動部12の第1の位置及び姿勢と、該第2のトルクを検出したときの可動部12の第2の位置及び姿勢と、該第3のトルクを検出したときの可動部12の第3の位置及び姿勢と用いて、物体30の重心位置を計算する機能を有する。
【0016】
なお重量又は重心位置を推定すべき物体30の具体例としては、可動部12の先端(ここでは手首部28)に取り付け可能なロボットハンド、工具、溶接トーチ、レーザヘッド等のエンドエフェクタが挙げられ、本開示では負荷と称することもある。従ってロボット14は、後述する処理によって負荷の重量及び重心位置の少なくとも一方を推定した後は、該負荷をロボット14から取り外すことなく、推定した値を利用して、ワークの把持や加工等の所定の作業を精度よく行うことができる。或いは、ロボットハンド等で保持可能な部品や加工対象品(ワーク)も、重量又は重心位置を推定すべきものであれば、物体30に含まれ得る。
【0017】
計算部32は、上述の物体30の重量を計算する機能と、物体30の重心位置を計算する機能との少なくとも一方を有し、図示例では、ロボット14の動作を制御するロボット制御装置36内に、プロセッサ等の演算処理装置として組み込むことができる。或いは、ロボット制御装置36とは別の、パーソナルコンピュータ(PC)等の計算機(図示せず)に、計算部32の機能を担わせることもでき、その場合はロボット制御装置36とPC等の計算機とは、有線又は無線で通信可能に接続されることが好ましい。またロボット制御装置36は、作業者が各種の設定を行えるように、キーボードやタッチパネル等の適当な入力部(図示せず)を具備してもよい。
【0018】
また計算部32等のロボット制御装置36の構成要素は、例えば電算機のCPU(中央処理装置)等のプロセッサを機能させるためのソフトウェアとしても構成可能である。或いは例えば、当該ソフトウェアの処理の少なくとも一部を実行可能なプロセッサやメモリ等のハードウェアとしても実現可能である。
【0019】
(第1実施例)
次に、推定装置を用いて物体の重量を推定する方法(処理)を、第1の実施例として説明する。先ず、
図2に示すように、手首部28に取り付けられた物体30が第1の姿勢で第1の位置P1にあるときに、軸16に作用するトルク(第1のトルクT1)をトルクセンサ18で検出する。このとき、第1のトルクT1と物体30の重量Wとの間には、以下の式(1)が成り立つ。但し式(1)において、M1は
図2の状態(すなわち第1のトルクT1を検出したときの可動部12の位置及び姿勢)において、物体30がない場合に軸16に作用するトルクであり、d1は
図2の状態において物体30の重心位置Gを通る鉛直線38と、軸16との水平方向距離である。
T1=M1+W×d1 (1)
【0020】
そして
図3に示すように、ロボット14を動作させて、物体30を、第1の位置にあったときと同じ姿勢(すなわち第1の姿勢)で、かつ第1の位置とは異なる第2の位置に移動させ、軸16に作用するトルク(第2のトルクT2)をトルクセンサ18で検出する。このとき、第2のトルクT2と物体30の重量Wとの間には、以下の式(2)が成り立つ。但し式(2)において、M2は
図3の状態(すなわち第2のトルクT2を検出したときの可動部12の位置及び姿勢)において、物体30がない場合に軸16に作用するトルクであり、d2は
図3の状態において物体30の重心位置Gを通る鉛直線と、軸16との水平方向距離である。
T2=M2+W×d2 (2)
【0021】
式(1)及び(2)から、以下の式(3)が得られる。
T2−T1=M2−M1+W×(d2−d1) (3)
【0022】
ここで、第1の位置及び第2の位置における物体30の姿勢は同じであるから、物体が第1の位置から第2の位置まで移動したときの、ツール代表点等の可動部の代表位置(ここでは可動部先端に相当する手首部28)の水平方向移動距離Dと、物体の重心位置Gの水平方向の移動距離(d2−d1)は一致する。手首部28の水平方向移動距離Dは、ロボット制御装置36からロボット14に送られた移動指令や、ロボット14の各軸に設けたエンコーダの値等を用いれば容易に知ることができるので、式(3)を変形すると、以下の式(4)が得られる。
W=((T2−M2)−(T1−M1))/D (4)
【0023】
ここでM1及びM2は、第1及び第2のトルクの検出前又は検出後に、物体30をロボット14に取り付けない状態で、トルクセンサ18を用いて軸16に作用するトルクとして検出して取得してもよいし、或いは、計算部32等がロボット14の各部の質量や重心位置等を用いた計算を行うことによって取得することもできる。後者の具体例としては、ニュートンオイラー法が挙げられる。
【0024】
よって式(4)の右辺は全て既知の情報であるので、同式から、物体30の重量Wが求まる。なお本実施例ではd1<d2の場合を考えたが、d1>d2の場合も考慮すると、以下の式(5)を用いることが好ましい。
W=|(T2−M2)−(T1−M1)|/D (5)
【0025】
式(5)からわかるように、物体30の重量Wを推定するためには、T1、T2、M1、M2及びDが与えられれば足り、d1及びd2そのものは求める必要がない。従って物体の重心位置Gが未知であっても、上述の動作をロボット14に行わせることにより、物体の重量Wを正確に推定することができる。なお第1の位置及び第2の位置には特に制約はないが、両位置間の水平方向距離D(d2−d1)はゼロではない。
【0026】
また第1の実施例では、第1の位置及び第2の位置のそれぞれにおいてロボット14を静止させて第1及び第2のトルクを検出してもよいし、ロボット14の可動部12が一定速度で動いている(つまり可動部12の加速度がゼロである)間に、任意の2つのタイミング(但し物体30の姿勢は同一)で検出したトルク値をそれぞれ第1及び第2のトルクとしてもよい。いずれの場合であっても上記の式(1)−(5)は成り立つからである。
【0027】
(第2実施例)
次に、推定装置を用いて物体の重心位置を推定する方法(処理)を、第2の実施例として説明する。先ず、
図4に示すように、手首部28に取り付けられた物体30が第1の姿勢で第1の位置にあるときに、軸16に作用するトルク(第1のトルクT1)をトルクセンサ18で検出(測定)する。このとき、第1のトルクT1と物体30の重量Wとの間には、以下の式(6)が成り立つ。但し式(6)において、M1は
図4の状態(すなわち第1のトルクT1を検出したときの可動部12の位置及び姿勢)において、物体30がない場合に軸16に作用するトルクであり、d1は
図4の状態において物体30の重心位置Gを通る鉛直線38と、軸16との水平方向距離である。
T1=M1+W×d1 (6)
【0028】
そして
図5に示すように、ロボット14を動作させて、物体30を第1の姿勢とは異なる第2の姿勢となるように移動させ、軸16に作用するトルク(第2のトルクT2)をトルクセンサ18で検出(測定)する。このとき、第2のトルクT2と物体30の重量Wとの間には、以下の式(7)が成り立つ。但し式(7)において、M2は
図5の状態(すなわち第2のトルクT2を検出したときの可動部12の位置及び姿勢)において、物体30がない場合に軸16に作用するトルクであり、d2は
図5の状態において物体30の重心位置Gを通る鉛直線38と、軸16との水平方向距離である。
T2=M2+W×d2 (7)
【0029】
式(6)及び(7)から、以下の式(8)が得られる。
(T2−M2)−(T1−M1)=W×(d2−d1) (8)
【0030】
ここで、ツール代表点等の可動部12の代表位置(ここでは可動部先端に相当する手首部28)の水平方向の移動距離D1、物体30の重心位置Gを表す座標(Px,Py,Pz)を第1の姿勢において水平方向に射影した長さ(Px,Py,Pz)・E1、及び、物体30の重心位置(Px,Py,Pz)を第2の姿勢において水平方向に射影した長さ(Px,Py,Pz)・E2を用いると、(d2−d1)は以下の式(9)で表される。但し式(9)において、「・」は内積を表し、E1及びE2はそれぞれ、第1及び第2の姿勢について可動部先端(ここでは手首部28)に定義した先端座標系40における水平方向ベクトルの単位ベクトルであり、これらはロボット制御装置36からロボット14に送られた移動指令や、ロボット14の各軸に設けたエンコーダの値等を用いれば容易に求めることができる。例えば、
図4の例ではE1=(1,0,0)となり、
図5の例ではE2=(1/√2,0,1/√2)となる(先端座標系40がY軸回りに45°回転している)。但し第2の実施例では、手首部等に定義された先端座標系40と、物体30との相対位置関係は既知であるとし、これは第1の実施例でも同様である。
d2−d1=D1−(Px,Py,Pz)・E1+(Px,Py,Pz)・E2(9)
【0031】
式(8)及び(9)から、以下の式(10)が得られる。
(T2−M2)−(T1−M1)=W×(D1−(Px,Py,Pz)・E1+(Px,Py,Pz)・E2) (10)
【0032】
次に、ロボット14を動作させて、物体30を第1及び第2の姿勢のいずれとも異なる第3の姿勢となるように移動させ、軸16に作用するトルク(第3のトルクT3)をトルクセンサ18で検出(測定)する。このとき、第3のトルクT3と物体30の重量Wとの間には、以下の式(11)が成り立つ。但し式(11)において、M3は第3のトルクT3を検出したときの可動部の位置及び姿勢において、物体30がない場合に軸16に作用するトルクであり、d3は第3のトルクT3を検出したときと同じ可動部の位置及び姿勢において、物体30の重心位置を通る鉛直線と、軸16との水平方向距離である。
T3=M3+W×d3 (11)
【0033】
式(8)−(10)に関する説明と同様の処理により、以下の式(12)及び(13)が得られる。つまり式(10)が第1の姿勢と第2の姿勢との関係で得られた式であるのに対し、式(12)は第2の姿勢と第3の姿勢との関係で得られた式であり、式(13)は第3の姿勢と第1の姿勢との関係で得られた式である。なおE3は、第3の姿勢について可動部先端(ここでは手首部28)に定義した先端座標系40における水平方向ベクトルの単位ベクトルであり、これはE1又はE2と同様、ロボット制御装置36からロボット14に送られた移動指令や、ロボット14の各軸に設けたエンコーダの値等を用いれば容易に求めることができる。
(T3−M3)−(T2−M2)=W×(D2−(Px,Py,Pz)・E2+(Px,Py,Pz)・E3) (12)
(T1−M1)−(T3−M3)=W×(D3−(Px,Py,Pz)・E3+(Px,Py,Pz)・E1) (13)
【0034】
手首部28の水平方向移動距離D1−D3は、ロボット制御装置36からロボット14に送られた移動指令や、ロボット14の各軸に設けたエンコーダの値等を用いれば容易に知ることができる。またM1−M3は、第1−第3のトルクの検出前又は検出後に、物体30をロボット14に取り付けない状態で、トルクセンサ18を用いて軸16に作用するトルクとして検出して取得してもよいし、或いは、計算部32等がロボット14の各部の質量や重心位置等を用いた計算を行うことによって取得することもできる。後者の具体例としては、ニュートンオイラー法が挙げられる。
【0035】
上述の処理により、3つの未知数(Px,Py,Pz)に対して、3つの等式(10)、(12)及び(13)が得られる。従ってこれらの等式を連立方程式として解くことにより、物体30の重心位置(Px,Py,Pz)を求めることができる。なお上式(10)、(12)及び(13)を一般化すると、以下の式(14)のようになる。但しi、jはいずれも1以上の整数であり、それらの上限は物体30がロボット14の動作によって呈し得る姿勢の個数に相当する。
(Ti−Mi)−(Tj−Mj)=W×(Di−(Px,Py,Pz)・Ei+(Px,Py,Pz)・Ej) (14)
【0036】
式(10)、(12)及び(13)からわかるように、物体30の重心位
置を推定するためには、T1−T3、M1−M3、E1−E3、D1−D3及びWが与えられれば足りる。従って物体の重量が既知であれば、上述の動作をロボット14に行わせることにより、物体の重心位置(座標)を正確に推定することができる。なおここでの制約条件は、両位置間の水平方向距離D1−D3がゼロではなく、かつE1x=E2x=E3xではなく、かつE1y=E2y=E3yではなく、かつE1z=E2z=E3zではないことである。但し、E1=(E1x,E1y,E1z)、E2=(E2x,E2y,E2z)、E3=(E3x,E3y,E3z)であるとする。
【0037】
また第2の実施例では、第1−第3の位置のそれぞれにおいてロボット14を静止させて第1及び第2のトルクを検出してもよいし、ロボット14の可動部12が一定速度で動いている(例えば角速度が一定)間に、任意の3つのタイミング(但し物体30の姿勢は互いに異なる)で検出したトルク値をそれぞれ第1及び第2のトルクとしてもよい。いずれの場合であっても上記の式(6)−(14)は成り立つからである。
【0038】
なお第1の実施例と第2の実施例はそれぞれ個別に行うことができるが、両実施例を連続的に行うこともできる。すなわち、先ず第1の実施例で説明した処理によって物体の重量Wを推定し、推定された重量Wを用いて、第2の実施例で説明した処理によって物体の重心位置Gを推定することができる。この場合、第1の実施例における第2の位置及び姿勢(
図3)は、第2の実施例における第1の位置及び姿勢(
図4)として扱うこともできるので、両実施例を連続的に行う場合、それぞれ個別に行う場合よりも、ロボットの動作の回数を減らすことができる。
【0039】
第1及び第2の実施例におけるトルクセンサ18としては、非接触式(磁歪式)や接触式(スリップリング)等、特定の軸に作用するトルクを検出(測定)できる種々のトルクセンサが利用可能である。なお本開示において、トルクセンサで検出される「軸に作用するトルク」(トルク検出値)は、ロボットの各軸を駆動するモータのトルクから摩擦等の影響を差し引いた値(又はこれに重力の影響を付加したもの)に相当するので、トルクセンサの使用により、一般に困難かつ精度が低いとされる摩擦の推定・同定を行うことなく、物体の重量又は重心位置を、少なくとも実用的には十分高い精度で推定することができる。但しトルクセンサ18は、重力方向のトルクを検出でき、かつトルクセンサ18より先端側のロボット可動部によって、重量測定のための動作(物体の姿勢が等しい2つの位置に移動)か、重心位置測定のための動作(物体の姿勢が互いに異なる3つの位置に移動)が実現できることが要求される。従って例えば、上記実施例ではトルクセンサ18は上腕24の駆動軸16に作用するトルクを検出するが、前腕26及び手首部28のみによって上記動作が実現できるのであれば、前腕26の駆動軸42(
図1参照)に作用するトルクを検出するトルクセンサを用いてもよい。
【0040】
或いはトルクセンサとして、例えばロボット14の基部20の内部又は下部に設けられた、6軸の力覚センサ(トルクセンサ)44(
図1参照)を使用することもできる。このようなトルクセンサ44を使用すれば、ロボット14に作用する、互いに直交する水平方向の2軸のトルクを測定できるが、例えば重心位置を推定する場合(第2の実施例)、式(10)、(12)及び(13)で表したような連立方程式をそれぞれの方向について(つまり2組(計6つ)の等式を)得ることができる。この場合、2組の連立方程式の解(重心位置)が異なることもあるが、それぞれの解の平均を使用する等、推定精度をさらに高めることができる。このように本開示では、未知数を求めるための最小限の等式の個数を超える等式が得られることは、推定のための情報量が増えることを意味するので、平均値や最小二乗法等を利用して、推定精度を高めることができる。
【0041】
また上述の6軸のトルクセンサ44や、ロボット14の外表面に設けられた接触センサ(図示せず)等をロボット14に使用した場合、ロボット14は、人間や周辺物等との接触を検知する機能を具備することができる。このような接触検知機能を有するロボットは、人間と作業領域を共用する協働ロボットとして使用可能であるが、接触検知の精度が低いと、ロボットが誤検知をして頻繁に非常停止する等の不具合が生じ得る。しかし本開示によれば、物体の重量又は重心位置を正確に推定できるので、トルクセンサが検出するトルク値から、ロボットの重量によるトルク及び慣性トルク、並びに可動部に取り付けられた負荷の重量によるトルク及び慣性トルクを引くことにより、ロボットに作用する外力を正確に検知することができるようになる。
【0042】
本開示では、上述の処理をロボット、及び推定装置等のロボットに付随して使用される演算処理装置に実行させるためのプログラムを、推定装置の記憶部又は他の記憶装置に記憶させることができる。またプログラムは、該プログラムを記録した、コンピュータが読み取り可能な記録媒体(CD−ROM、USBメモリ等)としても提供可能である。