(57)【要約】【課題】ロボットの可動部に取り付けた負荷の重量と水平方向の重心位置を、簡易な構成で推定できる装置、方法およびプログラムを提供する。【解決手段】推定装置１２は、ロボット１４の第１軸２２に作用する第１トルク、及びロボット１４の第２軸２６に作用する第２トルクを検出する２つのトルクセンサ３２、３４と、ロボット１４が、ロボット１４の可動部１６に取り付けたハンド３６が把持しているワーク３８を持ち上げているときの１つの姿勢における、トルクセンサ３２、３４の２つの検出値を用いて、ワーク３８の重量Ｍ及び重心Ｇの水平方向の位置を計算する計算部４０とを有する。【選択図】図１
2020151812.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの第１の部位に作用する第１トルク、及び該ロボットの前記第１の部位とは異なる第２の部位に作用する第２トルク又は該ロボットに作用する力を検出する少なくとも１つのセンサと、
前記ロボットが、該ロボットの可動部に位置する物体を持ち上げているときの１つの姿勢における、前記センサの検出値を用いて、前記物体の重量及び前記物体の水平方向の重心位置を計算する計算部と、
を有する、推定装置。
【請求項２】
前記センサは、前記第１トルク及び前記第２トルクをそれぞれ検出するための２つのトルクセンサを含む、請求項１に記載の推定装置。
【請求項３】
前記計算部は、前記２つのトルクセンサがそれぞれ検出した前記第１トルク及び前記第２トルクから、前記ロボットの構成要素の重量に基づくトルクを減じて得た２つのトルク値を用いて、前記物体の重量及び前記物体の水平方向の重心位置を計算する、請求項２に記載の推定装置。
【請求項４】
前記センサは、前記ロボットに設けられた６軸力センサを含む、請求項１に記載の推定装置。
【請求項５】
前記センサは、前記第１トルクを検出するトルクセンサ、及び前記ロボットに設けられた力センサを含む、請求項１に記載の推定装置。
【請求項６】
前記計算部は、前記ロボットに設けられた６軸力センサ又はトルクセンサが検出した前記第１トルクから前記ロボットの構成要素の重量に基づくトルクを減じた値と、前記６軸力センサ又は前記ロボットに設けられた力センサが検出した力の値から前記ロボットの構成要素の重量に基づく力の値を減じた値とを用いて、前記物体の重量及び前記物体の水平方向の重心位置を計算する、請求項４又は５に記載の推定装置。
【請求項７】
ロボットに、該ロボットの第１の部位に作用する第１トルク、及び該ロボットの前記第１の部位とは異なる第２の部位に作用する第２トルク又は該ロボットに作用する力を検出する少なくとも１つのセンサを設けることと、
前記ロボットの可動部に物体を取り付けることと、
前記ロボットが、前記可動部に取り付けた物体を持ち上げているときの１つの姿勢における、前記センサの検出値を用いて、前記物体の重量及び前記物体の水平方向の重心位置を計算することと、
を含む、推定方法。
【請求項８】
前記第１トルク及び前記第２トルクから、前記ロボットの構成要素の重量に基づくトルクを減じて得た２つのトルク値を用いて、前記物体の重量及び前記物体の水平方向の重心位置を計算することを含む、請求項７に記載の推定方法。
【請求項９】
前記第１トルクから前記ロボットの構成要素の重量に基づくトルクを減じて得たトルク値と、前記力の値から前記ロボットの構成要素の重量に基づく力の値を減じて得た力の値とを用いて、前記物体の重量及び前記物体の水平方向の重心位置を計算することを含む、請求項７に記載の推定方法。
【請求項１０】
請求項７〜９のいずれか１項に記載の推定方法を、前記ロボット及び前記ロボットに付随して使用される演算処理装置に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットを用いて負荷の重量及び重心位置を推定するための装置、方法及びプログラムに関する。
【背景技術】
【０００２】
通常、ロボットアーム等のロボットの可動部の先端には、ロボットハンドや工具等の物体（負荷）が取り付けられており、該物体の重量と重心位置を知ることは、ロボットを精度よく制御する上で重要である。
【０００３】
これに関する従来技術として、物体が取り付けられたロボットアームの回転軸のトルクを利用して、該ロボットアームに取り付けた物体の重量又は重心位置を計算により推定する装置又は方法が知られている（例えば特許文献１−３参照）。
【０００４】
また、ロボットアームの先端に力センサを介してツールを取り付け、ツール及びワークを含む対象物から受ける力を検出することにより、ロボットの力制御を行う方法が知られている（例えば特許文献４参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０３−１４２１７９号公報
【特許文献２】特開平０９−０９１００４号公報
【特許文献３】特開平０２−３００６４４号公報
【特許文献４】特開平０３−０５５１８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
物体の重量又は重心位置を計算により推定する従来の技術では、該物体を保持した状態のロボットを、複数の姿勢を呈するように移動させ、該複数の姿勢の各々において、ロボットの軸に作用するトルクの測定等を行う必要がある。しかしこのような測定のためにロボットを動作させることは、一定の時間を要する。
【０００７】
特に、ロボットを物流システム等において搬送手段として使用する場合、ロボットが搬送するワークの重量や重心位置はワーク毎に異なる場合が多く、故にワークの重量や重心位置の推定は、ロボットが該ワークを保持する度に行わなければならない。このような場合に、ロボットが複数の姿勢を呈するように移動させることは、ワークの搬送時間の延長を招いてしまう。
【課題を解決するための手段】
【０００８】
本開示の一態様は、ロボットの第１の部位に作用する第１トルク、及び該ロボットの前記第１の部位とは異なる第２の部位に作用する第２トルク又は該ロボットに作用する力を検出する少なくとも１つのセンサと、前記ロボットが、該ロボットの可動部に位置する物体を持ち上げているときの１つの姿勢における、前記センサの検出値を用いて、前記物体の重量及び前記物体の水平方向の重心位置を計算する計算部と、を有する、推定装置である。
【０００９】
本開示の他の態様は、ロボットに、該ロボットの第１の部位に作用する第１トルク、及び該ロボットの前記第１の部位とは異なる第２の部位に作用する第２トルク又は該ロボットに作用する力を検出する少なくとも１つのセンサを設けることと、前記ロボットの可動部に物体を取り付けることと、前記ロボットが、前記可動部に取り付けた物体を持ち上げているときの１つの姿勢における、前記センサの検出値を用いて、前記物体の重量及び前記物体の水平方向の重心位置を計算することと、を含む、推定方法である。
【発明の効果】
【００１０】
本開示によれば、負荷を保持しているロボットの１つの姿勢における測定により、該負荷の重量及び水平方向の重心位置を、実用に十分な精度で推定することができる。
【図面の簡単な説明】
【００１１】
【図１】第１実施例に係る推定装置の一構成例を示す。
【図２】図１の構成にさらにトルクセンサを追加した例を示す。
【図３】第２実施例に係る推定装置の一構成例を示す。
【図４】第２実施例に係る推定装置の他の構成例を示す。
【発明を実施するための形態】
【００１２】
（第１実施例）
図１は、好適な実施形態に係る推定装置１２及びロボット１４を含むロボットシステム１０の概略構成例を示す。ロボット１４は、後述する動作を行える可動部１６を有するものであればどのような構造のものでもよいが、図示例では、所定位置に設置される基部１８と、基部１８に対して略鉛直方向の軸線回りに旋回可能な旋回胴２０と、旋回胴２０に対して第１軸２２回りに回転可能に取り付けられた上腕２４と、上腕２４に対して第２軸２６回りに回転可能に取り付けられた前腕２８と、前腕２８に対して回転可能に取り付けられた手首部３０とを有する６軸の産業用多関節ロボットである。
【００１３】
推定装置１２は、ロボット１４の第１の部位（ここでは第１軸２２）に作用する第１トルク、及び、ロボット１４の第１の部位とは異なる第２の部位（ここでは第２軸２６）に作用する第２トルク又はロボット１４に作用する力（後述）を検出する少なくとも１つのセンサ（図１の例では２つのトルクセンサ３２、３４）と、ロボット１４が、ロボット１４の可動部１６（ここでは可動部先端に相当する手首部３０）に取り付けたハンド３６が把持している物体（ワーク）３８を持ち上げている（ワークの重量がロボット以外に作用していない）ときの１つの姿勢における、センサ３２、３４の検出値を用いて、ワーク３８の重量Ｍ及びワーク３８の重心Ｇの水平方向の位置を計算する計算部４０とを有する。なお推定装置１２は、計算部４０が使用するデータや計算結果等を記憶するための、メモリ等の記憶部４２をさらに有してもよい。
【００１４】
なお重量及び水平方向の重心位置を推定すべき物体の具体例としては、図１のように、可動部１６の先端（ここでは手首部３０）に取り付けたハンド３６が保持している、搬送作業等の対象物（ワーク）３８が挙げられる。しかし推定対象はこれに限られず、例えばワーク３８及びハンド３６を実質１つの物体として扱うこともできるし、ハンド３６がワークを保持していないときはハンド３６を推定対象とすることもできる。また手首部３０に、ワーク等を保持しないエンドエフェクタ（工具、溶接トーチ、レーザヘッド等）が取り付けられている場合は、該エンドエフェクタを推定対象とすることもできる。また本開示では、推定対象の物体を負荷と称することもある。
【００１５】
ロボット１４は、後述する処理によって負荷の重量及び水平方向の重心位置を推定した後は、該負荷をロボット１４から取り外すことなく、推定した値を利用して、ワークの搬送や加工等の所定の作業を精度よく行うことができる。
【００１６】
計算部４０は、ワーク３８の重量Ｍ及び水平方向の重心位置Ｇを計算する機能を有し、図示例では、推定した重量及び重心位置を用いてロボット１４の動作を制御するロボット制御装置４４内に、プロセッサ等の演算処理装置として組み込むことができる。或いは、ロボット制御装置４４とは別の、パーソナルコンピュータ（ＰＣ）等の計算機（図示せず）に、計算部４０の機能を担わせることもでき、その場合は推定した重量及び重心位置を用いてロボット制御装置４４がロボット１４を制御できるように、ロボット制御装置４４とＰＣ等の計算機とは、有線又は無線で通信可能に接続されることが好ましい。また推定装置は、作業者が各種の設定を行えるように、キーボードやタッチパネル等の適当な入力部（図示せず）を具備してもよい。
【００１７】
また計算部４０等の推定装置１２の構成要素は、例えば電算機のＣＰＵ（中央処理装置）等のプロセッサを機能させるためのソフトウェアとしても構成可能である。或いは例えば、当該ソフトウェアの処理の少なくとも一部を実行可能なプロセッサやメモリ等のハードウェアとしても実現可能である。
【００１８】
次に、推定装置１２を用いて物体（ここではワーク３８）の重量及び水平方向の重心位置を推定する方法（処理）を説明する。先ず、図１に示すように、ワーク３８を保持しているロボット１４（の可動部１６）がある（１つの）姿勢を呈しているときに、第１軸２２に作用するトルク（第１トルクＴ１）を第１トルクセンサ３２で検出し、第２軸２６に作用するトルク（第２トルクＴ２）を第２トルクセンサ３４で検出する。なおトルクの検出は、ロボット１４の可動部１６が静止しているときに行ってもよいし、動作中（但し第１トルクＴ１及び第２トルクＴ２は一定）に行ってもよい。
【００１９】
このとき、ワーク重量Ｍによって第１軸２２に作用する第１トルクＴ１′と、ワーク重量Ｍとの間には、以下の式（１）が成り立ち、同様に、ワーク重量Ｍによって第２軸２６に作用する第２トルクＴ２′とワーク重量Ｍとの間には以下の式（２）が成り立つ。但し式（１）及び（２）において、ｄ１は図１の状態（ロボット１４の姿勢）において、第１軸２２と、可動部１６の先端位置（ここでは手首部３０の先端（ツール先端点等））４６を通る鉛直線４８との間の水平方向の距離であり、ｄ２は図１の状態において、第２軸２６と、鉛直線４８との間の水平方向の距離であり、ｄは鉛直線４８と、ワーク３８の重心位置Ｇを通る鉛直線５０との間の水平方向距離である。
Ｔ１′＝（ｄ１＋ｄ）×Ｍ            （１）
Ｔ２′＝（ｄ２＋ｄ）×Ｍ            （２）
【００２０】
ここで第１トルクＴ１′は、上述の計算部４０等が、トルクセンサ３２が検出した第１トルクＴ１から、ロボット１４の構成要素（ここでは可動部１６を構成する各部（アームやハンド等））の重量に基づくトルクを減算することによって求めることができる。なおロボット１４の構成要素の重量に基づくトルクは、該構成要素の質量や重心位置を用いた計算（例えばニュートンオイラー法）によって求めることができる。
【００２１】
或いは第１トルクＴ１′は、ロボット１４が図１と同じ姿勢でかつワーク３８を保持していない状態で測定したトルクセンサ３２の値を、第１トルクＴ１から減算することによっても求めることができる。また或いは、トルクセンサ３２が第１軸を駆動するサーボモータ等のモータの負荷トルクを測定するものである場合は、第１トルクＴ１から、ロボット１４の可動部１６によるトルクと、摩擦等によるトルクとを減算することによって求めることもできる。第２トルクＴ２′についても同様に、トルクセンサ３４が検出した第２トルクＴ２から計算によって求めることができる。
【００２２】
また、各トルクセンサ（各駆動軸の中心）からロボット先端位置４６までの水平方向距離ｄ１及びｄ２は、ロボット１４の寸法（リンク長等）及び各軸の角度から算出することができる。従って式（１）及び（２）を連立方程式として解くことにより、ワークの重量Ｍ及び重心Ｇの水平方向位置ｄ（具体的には、手首部３０の先端４６から重心Ｇまでの水平方向距離）を算出することができる。
【００２３】
このように第１実施例では、ロボット１４がワーク３８を持ち上げているときの１つの姿勢における２つのトルク検出値を用いているので、ワーク３８の重量及び重心位置を推定するために、可動部１６をさらに別の姿勢にさせる等の特別の動作を行う必要がない。また第１実施例では、ワーク３８の重力方向の重心位置を特定することはできないが、例えばロボット１４が、所定の搬送元でワーク３８を把持し、ワーク３８の姿勢を変えずに所定の搬送先まで搬送する作業を行う場合、重心Ｇの重力方向（鉛直方向）の位置はロボット１４の制御に必要な情報ではない。このように負荷の姿勢が変化しない場合では、該負荷の重量及び水平方向の重心位置は、ロボットの好適な制御に十分な情報である。
【００２４】
なお図１の例では、トルクの検出対象として上腕２４の駆動軸（第１軸２２）及び前腕２８の駆動軸（第２軸２６）を使用したが、これに限られず、例えば、手首部３０の駆動軸（図示せず）を第１軸２２又は第２軸２６の代わりに使用してもよい。但し、いずれの駆動軸を使用する場合でも、式（１）及び（２）におけるｄ１とｄ２が互いに異なる値となるようにロボット１４を制御する必要がある。
【００２５】
図２は、紙面と垂直方向についての、ロボット先端位置４６からワーク３８の重心Ｇまでの水平方向距離を取得するための構成の一例を示す。ここでは、第１軸２２又は第２軸２６に垂直な軸に作用するトルクを検出するトルクセンサとして、前腕２８に、前腕２８の長手軸回りのトルクを検出可能なトルクセンサ５２を設け、トルクセンサ５２の検出値がＴ３であったとする。この場合、該長手軸に垂直な面と重力方向とのなす角度をθ１とすると、重力方向のトルクＴ３′は以下の式（３）で表される。但し、前腕２８の長手軸は鉛直方向ではないものとする。Ｔ３′が求まれば、上述と同様の演算処理により、紙面に垂直な方向についての、ワーク３８の重心Ｇの水平方向位置を算出することができる。よって図２の例では、負荷の姿勢が変化し得る場合でも、負荷が水平面に沿って（鉛直軸回りに）回転するだけであれば、その回転角度等から該負荷の重心位置を容易に算出することができる。例えば、紙面に垂直な方向についての、先端位置４６から重心Ｇまでの水平方向距離をｄ′とすると、ワーク３８が鉛直軸回りに回転した場合、重心Ｇは直径が（√（ｄ2＋ｄ′2））の回転運動をするだけなので、容易に計算可能である。
Ｔ３′＝Ｔ３／ｃｏｓθ１            （３）
【００２６】
（第２実施例）
図３は、第２実施例に係る推定装置の構成例を示す。なお第２実施例において、第１実施例と同様でよい部分については、詳細な説明を省略する。
【００２７】
図３の例では、第１実施例における２つのトルクセンサ３２及び３４の代わりに、ロボット１４（図示例では基部１８の下側）に設けられた６軸力センサ５４を使用する。先ず、ワーク３８を保持しているロボット１４（の可動部１６）がある（１つの）姿勢を呈しているときに、ロボット１４の第１の部位（ここではセンサ５４の検出点５５を含む基部１８）に作用するトルク（第１トルクＴ１）を６軸力センサ５４で検出し、ロボット１４に作用する力Ｆ１も６軸力センサ５４で検出する。
【００２８】
このとき、ワーク重量Ｍによってロボット１４の基部１８に作用する第１トルクＴ１′と、ワーク重量Ｍとの間には、以下の式（４）が成り立ち、ワーク重量Ｍによってロボットに作用する力Ｆ１′はワーク重量Ｍに等しい（式（５））。ここでＦ１′は、６軸力センサ５４又は後述する力センサ５６が検出した力の値から、ロボット１４の構成要素の重量に基づく力の値を減じた値である。但し式（４）において、ｄ３は図３の状態（ロボット１４の姿勢）において、基部１８（検出点５５）と、可動部１６の先端位置４６を通る鉛直線４８との間の水平方向の距離であり、ｄは鉛直線４８と、ワーク３８の重心位置Ｇを通る鉛直線５０との間の水平方向距離である。
Ｔ１′＝（ｄ３＋ｄ）×Ｍ            （４）
Ｍ＝Ｆ１′                          （５）
【００２９】
ここで第１トルクＴ１′は、上述の計算部４０等が、６軸力センサ５４が検出した検出点５５回りの第１トルクＴ１から、ロボット１４の構成要素（ここでは可動部１６（アームやハンド等））の重量に基づくトルク（計算値）を減算することによって求めることができる。或いは第１トルクＴ１′は、ロボット１４が図３と同じ姿勢でかつワーク３８を保持していない状態で測定した６軸力センサ５４の値を、第１トルクＴ１から減算することによっても求めることができる。
【００３０】
また６軸力センサ５４（検出点５５）からロボット先端位置４６までの水平方向距離ｄ３は、ロボット１４の寸法（リンク長等）及び各軸の角度から算出することができる。従って式（４）−（５）から、ワークの重量Ｍ及び重心Ｇの水平方向位置（具体的には、手首部３０の先端４６から重心Ｇまでの水平方向距離ｄ）を算出することができる。
【００３１】
図４は、第２実施例に係る推定装置の他の構成例を示す。図４の例では、第１実施例におけるトルクセンサ３４の代わりに、ロボット１４（図示例では手首部３０）に設けられた力センサ５６を使用する。先ず、ワーク３８を保持しているロボット１４（の可動部１６）がある（１つの）姿勢を呈しているときに、第１軸２２に作用するトルク（第１トルクＴ１）をトルクセンサ３２で検出し、ロボット１４に作用する力Ｆ２を力センサ５６で検出する。
【００３２】
このとき、ワーク重量Ｍによって第１軸２２に作用する第１トルクＴ１′と、ワーク重量Ｍとの間には、上記式（４）が成り立ち、ワーク重量Ｍによってロボットに作用する力Ｆ２′とワーク重量Ｍとの間には以下の式（６）が成り立つ）。但しＦ２′は、力センサ５６が検出した力Ｆ２の方向と重力方向とのなす角度をθ２とすると、以下の式（７）で表される。
Ｍ＝Ｆ２′                          （６）
Ｆ２′＝Ｆ２／ｃｏｓθ２            （７）
【００３３】
また、第１軸２２の中心からロボット先端位置４６までの水平方向距離ｄ３は、ロボット１４の寸法（リンク長等）及び各軸の角度から算出することができる。従って式（４）、（６）及び（７）から、ワークの重量Ｍ及び重心Ｇの水平方向位置ｄ（具体的には、手首部３０の先端４６から重心Ｇまでの水平方向距離）を算出することができる。
【００３４】
このように第２実施例では、ロボット１４がワーク３８を持ち上げているときの１つの姿勢における１つのトルク検出値及び１つの力検出値を用いるので、第１実施例と同様、ワーク３８の重量及び重心位置を推定するために、可動部１６を別の姿勢にさせる等の特別の動作を行う必要がない。よって第１実施例と同様、負荷の姿勢が変化しない用途では、該負荷の重量及び水平方向の重心位置を、ロボットの好適な制御に十分な情報として推定することができる。また６軸力センサ５４を使用した場合は、実質１つのセンサをロボット１４に設けるだけで、上記１つのトルク検出値及び１つの力検出値を取得できる。
【００３５】
なお第２実施例でも、図２を参照して説明したトルクセンサ５２等を使用することにより、紙面と垂直方向についての、ロボット先端位置４６からワーク３８の重心Ｇまでの水平方向距離を取得することができる。
【００３６】
本開示のように、トルクセンサ等のトルクを検出する手段を備えたロボットにおいて、外部との接触を検知する機能を実現する場合は特に、負荷の重量及び重心位置に関して高い推定精度が求められる。例えば、トルクセンサが検出するトルク値から、ロボットの重量によるトルク及び慣性トルク、並びに可動部先端に位置する負荷の重量によるトルク及び慣性トルクを減算することで、ロボットに作用する外力を検出することができるが、ロボット制御装置等に設定（記憶）された負荷の重量及び重心位置と、実際の負荷の重量及び重心位置との差は、検知する外力トルクの誤差となるため、接触検知の精度が悪くなる。このような接触検知が可能なロボットは、人間と作業領域を共有する協働ロボットとして使用され得るため、接触検知の精度を高める必要があるが、本開示によれば、１つの姿勢における測定と演算処理を行うだけで、実用に十分な精度で負荷の重量及び水平方向の重心位置を推定することができる。
【００３７】
本開示におけるトルクセンサとしては、非接触式（磁歪式）や接触式（スリップリング）等、特定の軸に作用するトルクを検出（測定）できる種々のトルクセンサが利用可能である。なお本開示において、トルクセンサで検出される「軸に作用するトルク」（トルク検出値）は、ロボットの各軸を駆動するモータのトルクから摩擦等の影響を差し引いた値（又はこれに重力の影響を付加したもの）に相当するので、トルクセンサの使用により、一般に困難かつ精度が低いとされる摩擦の推定・同定を行うことなく、物体の重量及び重心位置を、少なくとも実用的には十分高い精度で推定することができる。
【００３８】
本開示における力センサとしては、歪みゲージ式や静電容量式等の種々のものが使用可能であり、１つの方向のみの力を測定するものでもよい。また力センサの取り付け位置は、上述の手首部の他、上腕や前腕等でもよく、またトルクセンサと異なる部位に取り付けてもよい。
【００３９】
本開示では、上述の処理をロボット、及び推定装置等のロボットに付随して使用される演算処理装置に実行させるためのプログラムを、推定装置の記憶部又は他の記憶装置に記憶させることができる。またプログラムは、該プログラムを記録した、コンピュータが読み取り可能な（非一過性の）記録媒体（ＣＤ−ＲＯＭ、ＵＳＢメモリ等）としても提供可能である。
【符号の説明】
【００４０】
１０    ロボットシステム
１２    推定装置
１４    ロボット
１６    可動部
１８    基部
２０    旋回胴
２２    第１軸
２４    上腕
２６    第２軸
２８    前腕
３０    手首部
３２、３４、５２    トルクセンサ
３６    ロボットハンド
３８    ワーク
４０    計算部
４２    記憶部
４４    ロボット制御装置
４６    ツール先端点
５４    ６軸力センサ
５５    検出点
５６    力センサ
【図１】
2020151812.tif 000003
【図２】
2020151812.tif 000004
【図３】
2020151812.tif 000005
【図４】
2020151812.tif 000006