(57)【特許請求の範囲】
【請求項１】
力制御を行う装置を構成する、位置または姿勢の少なくともいずれかが変化する制御対象機器の位置および姿勢を示す位置情報を取得する位置情報取得部と、
前記制御対象機器に設けられた力覚センサの検知結果から、前記制御対象機器に加わる力情報を取得する力情報取得部と、
前記位置情報取得部が取得した位置情報から物理モデルを用いて前記制御対象機器に加わる力を推定し、推定力情報を取得する第１の推定部と、
前記位置情報取得部が取得した位置情報、前記力情報取得部が取得した力情報、および前記制御対象機器が他の物体に接触していない場合に前記第１の推定部が取得した推定力情報に基づいて、線形または非線形モデルを用いて前記推定力情報と前記力情報の差分を推定する第２の推定部とを備え、
前記第２の推定部は、前記位置情報取得部が取得した位置情報をニューラルネットワークの入力とし、前記第１の推定部が取得した推定力情報と前記力情報取得部が取得した力情報との差分を前記ニューラルネットワークの教師信号として、当該ニューラルネットワークの学習を行うことを特徴とするキャリブレーション装置。
【請求項２】
前記位置情報取得部が取得した位置情報を、不連続点を含まない連続した数値表現に変換する変換部を備えたことを特徴とする請求項１記載のキャリブレーション装置。
【請求項３】
前記変換部は、前記位置情報取得部が取得した位置情報に対して回転行列計算を行い、ベクトル値に変換することを特徴とする請求項２に記載のキャリブレーション装置。
【請求項４】
前記位置情報取得部および前記力情報取得部は、等速運動を行う前記制御対象機器の位置情報および力情報を取得することを特徴とする請求項１記載のキャリブレーション装置。
【請求項５】
前記第２の推定部は、前記制御対象機器に関する情報を参照し、前記線形または非線形モデルを用いて前記推定力情報と前記力情報の差分を推定することを特徴とする請求項１記載のキャリブレーション装置。
【請求項６】
前記制御対象機器に関する情報は、エンドエフェクタの摩耗度合いであることを特徴とする請求項５記載のキャリブレーション装置。
【請求項７】
位置情報取得部が、制御対象機器の位置および姿勢を示す位置情報を取得するステップと、
力情報取得部が、前記制御対象機器に設けられた力覚センサの検知結果から、前記制御対象機器に加わる力情報を取得するステップと、
第１の推定部が、前記取得された位置情報から前記制御対象機器に加わる力を推定し、推定力情報を取得するステップと、
第２の推定部が、前記制御対象機器が他の物体に接触していない場合に、前記取得された位置情報、前記取得された力情報、および前記取得された推定力情報に基づいて、線形または非線形モデルを用いて前記推定力情報と前記力情報の差分を推定するステップと、
前記第２の推定部が、前記取得された位置情報をニューラルネットワークの入力とし、前記推定された前記推定力情報と前記力情報との差分を前記ニューラルネットワークの教師信号として、当該ニューラルネットワークの学習を行うステップとを備えたキャリブレーション方法。
【請求項８】
請求項１に記載のキャリブレーション装置の前記第２の推定部が線形または非線形モデルを用いて推定した前記推定力情報と前記力情報の差分を示す情報の出力と、前記第１の推定部が取得した推定力情報と、前記力情報取得部が取得した力情報とから、前記制御対象機器の制御量を演算する制御量演算部と、
前記制御量演算部が演算した制御量に基づいて、前記制御対象機器を制御する制御部とを備えた制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、力制御を利用する装置において、当該装置の接触力を求める技術に関するものである。
【背景技術】
【０００２】
従来より、３次元動作するアーム型ロボットのアームの先端に力覚センサを介してエンドエフェクタを取り付け、当該エンドエフェクタがワークに対して種々の作業を行うロボットが用いられている。当該ロボットが種々の作業を行うためには、エンドエフェクタとワークとの間に働く接触力を制御する必要がある。しかし、力覚センサが検知する力には、エンドエフェクタとワークとの間に働く接触力に加えて、力覚センサ、エンドエフェクタおよびエンドエフェクタが把持するワーク等に加わる重力が含まれる。エンドエフェクタとワークとの間に働く接触力を求めるためには、力覚センサが検知した結果から、力覚センサ、エンドエフェクタおよびエンドエフェクタが把持するワーク等に加わる重力成分をキャンセルする必要がある。
【０００３】
例えば、特許文献１には、ロボットアームを複数の姿勢に動作させ、力覚センサの計測値と、当該計測値を取得した際の力覚センサの姿勢データとを取得し、演算装置によりエンドエフェクタの重量、重力方向ベクトル、エンドエフェクタ重心位置ベクトルを含む複数のパラメータを算出し、算出したパラメータを同時にキャリブレーションするキャリブレーション装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−０４０６３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した特許文献１に記載されたキャリブレーション装置では、力覚センサ、エンドエフェクタおよびエンドエフェクタが把持するワーク等に加わる重力成分を質点モデルでモデル化し、重力成分を推定している。しかし、エンドエフェクタ等は質量分布を有しており、質点モデルによって重力成分を推定すると誤差が生じる。また、ロボットアームに巻きつけられたケーブル等、ロボットアームの姿勢によって重力成分が変化する部材については、重力成分を正確に推定することは困難であった。このように、特許文献１に記載された技術では、質点モデルによって重力成分を正確に推定することは困難であるという課題があった。
【０００６】
この発明は、上記のような課題を解決するためになされたもので、重力成分の推定誤差を抑制し、正確なキャリブレーション結果を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係るキャリブレーション装置は、力制御を行う装置を構成する、位置または姿勢の少なくともいずれかが変化する制御対象機器の位置および姿勢を示す位置情報を取得する位置情報取得部と、制御対象機器に設けられた力覚センサの検知結果から、制御対象機器に加わる力情報を取得する力情報取得部と、位置情報取得部が取得した位置情報から物理モデルを用いて制御対象機器に加わる力を推定し、推定力情報を取得する第１の推定部と、位置情報取得部が取得した位置情報、力情報取得部が取得した力情報、および制御対象機器が他の物体に接触していない場合に第１の推定部が取得した推定力情報に基づいて、線形または非線形モデルを用いて推定力情報と力情報の差分を推定する第２の推定部とを備え、第２の推定部は、位置情報取得部が取得した位置情報をニューラルネットワークの入力とし、第１の推定部が取得した推定力情報と力情報取得部が取得した力情報との差分をニューラルネットワークの教師信号として、当該ニューラルネットワークの学習を行う。
【発明の効果】
【０００８】
この発明によれば、重力成分の推定誤差を抑制することができる。これにより、正確なキャリブレーション結果を得ることができ、精密な操作を行う装置に対して当該キャリブレーション手法を適用することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るキャリブレーション装置が適用されたロボットシステムの構成を示す図である。
【図２】実施の形態１に係るロボットシステムのロボット座標系、ワールド座標系、重力座標系およびセンサ座標系の位置関係を示す図である。
【図３】実施の形態１に係るキャリブレーション装置の構成を示すブロック図である。
【図４】実施の形態１に係るキャリブレーション装置の第２の推定部におけるニューラルネットワークと、ニューラルネットワークの学習則の例を示す図である。
【図５】図５Ａおよび図５Ｂは、キャリブレーション装置のハードウェア構成例を示す図である。
【図６】実施の形態１に係るキャリブレーション装置のキャリブレーション処理時の動作を示すフローチャートである。
【図７】実施の形態１に係るキャリブレーション装置のキャリブレーション処理時のデータの流れを示す図である。
【図８】ロボットが通常運転している場合の、実施の形態１に係るキャリブレーション装置の動作を示すフローチャートである。
【図９】ロボットが通常運転している場合の、実施の形態１に係るキャリブレーション装置のデータの流れを示す図である。
【図１０】図１０Ａから図１０Ｆは、実施の形態１に係るキャリブレーション装置によるキャリブレーション結果を示す図である。
【図１１】オイラー表現された位置情報の定義域を示す図である。
【図１２】実施の形態２に係るキャリブレーション装置の構成を示すブロック図である。
【図１３】実施の形態２に係るキャリブレーション装置の第２の推定部におけるニューラルネットワークと、ニューラルネットワークの学習則の例を示す図である。
【図１４】実施の形態２に係るキャリブレーション装置のキャリブレーション処理時の動作を示すフローチャートである。
【図１５】ロボットが通常運転している場合の、実施の形態２に係るキャリブレーション装置の動作を示すフローチャートである。
【図１６】図１６Ａから図１６Ｆは、実施の形態２に係るキャリブレーション装置によるキャリブレーション結果を示す図である。
【発明を実施するための形態】
【００１０】
以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面に従って説明する。
なお、以下の各実施の形態では、キャリブレーション装置として、具体的にロボットを使用したシステムにおいてキャリブレーション処理を行うロボットシステムを例に挙げて説明する。しかし、この発明に係るキャリブレーション装置は、ロボットを使用した場合に限定されることなく、力制御を行う装置について、同一の構成でキャリブレーションを実施することができる。即ち、この発明に係るキャリブレーション装置は、適用範囲をロボットシステムに限定するものではない。力制御を行う装置として、例えば自動加工装置および自動組み立て装置が上げられる。
【００１１】
実施の形態１．
図１は、実施の形態１に係るキャリブレーション装置１００が適用されたロボットシステムの構成を示す図である。
ロボットシステムは、ロボットアーム（制御対象機器）１を備えたロボット（制御対象機器）２、ロボットアーム１の先端部に取り付けられたエンドエフェクタ（制御対象機器）３、およびロボット２およびエンドエフェクタ３を制御する制御装置４を基本的な構成として有している。また、力制御を行うロボットシステムでは、ロボットアーム１とエンドエフェクタ３との間に、力情報を取得するセンサとして力覚センサ５が設けられている。
【００１２】
ロボット２は、任意の座標系上で、ロボットアーム１の先端位置またはロボットアーム１の先端に取り付けられたエンドエフェクタ３の先端位置を移動させ、位置制御する。制御装置４は、エンドエフェクタ３の先端位置の位置制御を行うための制御情報をロボット２に出力する。
また、力覚センサ５を用いることにより、エンドエフェクタ３の先端位置の位置制御のみではなく、エンドエフェクタ３の力制御が可能となる。エンドエフェクタ３の力制御は、エンドエフェクタ３と周辺物体、またはエンドエフェクタ３と周辺環境との間の力の作用状態、即ち接触力を制御するものである。エンドエフェクタ３の力制御を行うことにより、ロボット２を用いた研磨作業、バリ取り作業およびコネクタ等の組み立てなど、エンドエフェクタ３とワークとの接触状態を考慮しながら行う作業が実施可能となる。
【００１３】
ロボットシステムには、図１に示すように、目的に応じてロボットアーム１の先端にケーブル６が取り付けられる。ケーブル６は、例えば力覚センサ５から延びるケーブル、電源供給のためのケーブル、および制御装置４から制御信号を供給するためのケーブル等である。ケーブル６は、ロボット２の動きによる巻き込みを防止する目的で、張力を緩和させて弛ませて巻きつける場合が多く、ロボットアーム１の姿勢によって重力成分が変化する。力覚センサ５の力情報には、当該ケーブル６の重力成分が加わり、誤差の要因となる。ロボットアーム１が高精度な作業を行う上で、当該誤差は問題となる。
【００１４】
そこで、キャリブレーション装置１００は、質点モデル用いて推定したロボット２に加わる力と、力覚センサ５の力情報との差分を用いて、ニューラルネットワークのパラメータの最適化を行うキャリブレーションを行う。
ロボット２に加わる力を推定するためのモデルは、質点モデル以外の物理モデルであっても良い。質点モデル以外の物理モデルとして、例えば剛体モデルが挙げられる。
【００１５】
まず、キャリブレーション装置１００がキャリブレーション処理を行う座標系について説明する。
図２は、実施の形態１に係るロボットシステムのロボット座標系、ワールド座標系、重力座標系およびセンサ座標系の位置関係を示す図である。
図２では、ロボットシステム内に固定されたロボット２の基準座標系として定義されるロボット座標系をΣｒｏｂ、ロボットシステム内の機器に共通の座標系として定義されるワールド座標系をΣｗｌｄ、重力加速度方向を−Ｚ方向とした重力座標系をΣｇｒｖ、および力覚センサ５の基準座標系として定義されるセンサ座標系をΣｓｅｎとして示している。
キャリブレーション装置１００は、図２で示したいずれの座標系を適用して処理を行ってもよい。なお、以下の説明では、キャリブレーション装置１００がセンサ座標系を用いて処理を行う場合を例に説明する。
【００１６】
図３は、実施の形態１に係るキャリブレーション装置１００の構成を示すブロック図である。
キャリブレーション装置１００は、位置情報取得部１０１、力情報取得部１０２、情報記憶部１０３、第１の推定部１０４、第２の推定部１０５および制御量演算部１０６を備える。また、図３に示すように、キャリブレーション装置１００には、制御装置４および力覚センサ５が接続される。また、ロボット２は制御装置４および力覚センサ５と接続される。
【００１７】
まず、キャリブレーション装置１００の使用に当たっては、まず、位置情報取得部１０１、力情報取得部１０２、情報記憶部１０３、第１の推定部１０４および第２の推定部１０５が、ニューラルネットワークの中間層のパラメータの最適化処理（以下、キャリブレーション処理と記載する）を行う。
位置情報取得部１０１は、制御装置４からロボット２の位置情報を取得し、情報記憶部１０３に記憶させる。位置情報取得部１０１は、ロボット２の位置情報としてエンドエフェクタ３部分の位置および姿勢を示す情報を取得する。位置情報は、例えばオイラー表現されたＸ軸、Ｙ軸、Ｚ軸に対する回転３自由度である［Ａ、Ｂ、Ｃ］を示す。力情報取得部１０２は、力覚センサ５の検知結果からロボット２に加わる力を示す情報（以下、力情報と記載する）を取得し、情報記憶部１０３に記憶させる。
【００１８】
キャリブレーション処理を行う際、制御装置４は、ロボット座標系、ワールド座標系、重力座標系またはセンサ座標系のうちのいずれかの座標系の原点を通る任意の回転軸を設定し、設定した回転軸周りにロボット２の姿勢を変化させる制御を行う。設定した回転軸周りにロボット２を回転させる際の回転角度量は、任意に設定される。制御装置４は、設定した回転軸および回転角度量に基づいて、位置情報および力情報を取得するためのロボット２の姿勢を決定し、ロボット２に姿勢指令値として出力する。ロボット２は、制御装置４から入力される姿勢指令値に従って、設定された回転軸周りに、設定された回転角度量回転し、姿勢を変化させる。位置情報取得部１０１および力情報取得部１０２は、姿勢が変化するロボット２の位置情報および力情報を離散的に取得し、情報記憶部１０３に記憶していく。位置情報取得部１０１および力情報取得部１０２が位置情報および力情報を取得するタイミングは、適宜設定可能である。情報記憶部１０３は、位置情報取得部１０１から入力される位置情報、および力情報取得部１０２から入力される力情報を記憶する。
【００１９】
第１の推定部１０４は、情報記憶部１０３に記憶された位置情報から、質点モデルを用いてロボット２に加わる力を推定し、推定力情報を取得する。質点モデルのパラメータは、１つの質点におけるエンドエフェクタ３の重量、エンドエフェクタ３の重心位置およびバイアスである。第１の推定部１０４は、取得した推定力情報を第２の推定部１０５に出力する。
第２の推定部１０５は、情報記憶部１０３に記憶された位置情報および力情報と、第１の推定部１０４が取得した推定力情報とを入力として、線形または非線形モデルを用いて推定力情報と力情報との差分を推定する。具体的には、第２の推定部１０５は、位置情報、および推定力情報と力情報との差分、でなる複数のセットを用いて、一般的なニューラルネットの学習則に基づいて学習を行う。ニューラルネットワークには、ＣＮＮ（Convolutional Neural Network）またはＲＮＮ(Recurrent Neural Network)など様々な形態が存在するが、当該形態は任意に適用可能である。
【００２０】
図４は、実施の形態１に係るキャリブレーション装置１００の第２の推定部１０５におけるニューラルネットワークと、ニューラルネットワークの学習則の例を示す図である。
入力層には、情報記憶部１０３に記憶された位置情報［Ａ、Ｂ、Ｃ］が入力され、出力層からは推定力情報と力情報との差分（ΔＦＸ，ΔＦＹ，ΔＦＺ，ΔＭＡ，ΔＭＢ，ΔＭＣ）が出力される。
第２の推定部１０５は、ニューラルネットワークの学習過程において、入力された位置情報から中間層を経て得られる出力層の出力値を、教師信号、即ち推定力情報と力情報との差分と近似させるために中間層のパラメータの最適化を行う。
なお、図４では、力覚センサ５が６軸センサであって、ロボットアーム１の移動方向、向きおよび回転を検出可能な場合を例に説明を行った。一方、力覚センサ５は３軸センサであってもよく、センサの構成は適宜設定可能である。ニューラルネットワークの出力は、力覚センサ５の構成に基づいて適宜設定される。
【００２１】
次に、実際にロボット２を使って作業を実施するとき（以下、通常動作時と記載する）に、キャリブレーション装置１００は、位置情報取得部１０１、力情報取得部１０２、情報記憶部１０３、第１の推定部１０４、第２の推定部１０５および制御量演算部１０６が制御装置４に対する指令値を演算する処理を行う。
位置情報取得部１０１は、通常動作時のロボット２の位置情報および力情報を取得し、情報記憶部１０３に記憶させる。第１の推定部１０４は、情報記憶部１０３に記憶された位置情報から、ロボット２に加わる力を推定し、推定力情報を取得する。第１の推定部１０４は、取得した推定力情報を制御量演算部１０６に出力する。
【００２２】
第２の推定部１０５は、情報記憶部１０３に記憶された位置情報をニューラルネットワークに入力し、推定力情報と力情報との差分を推定する。第２の推定部１０５は、推定した差分を制御量演算部１０６に出力する。制御量演算部１０６は、第１の推定部１０４から入力された推定力情報と、情報記憶部１０３に記憶された力情報との差分から、第２の推定部１０５から入力された差分を減算し、制御装置４に対する制御量を演算する。制御量演算部１０６は、演算した制御量を、制御装置４に出力する。制御装置４の制御部４ａは、制御量演算部１０６から入力された制御量を用いて、ロボット２を制御する。なお、上述した図３では、キャリブレーション装置１００が制御量演算部１０６を備える構成を示したが、当該制御量演算部１０６を制御装置４が備える構成としてもよい。
【００２３】
次に、キャリブレーション装置１００のハードウェア構成例を説明する。
図５Ａおよび図５Ｂは、キャリブレーション装置１００のハードウェア構成例を示す図である。
キャリブレーション装置１００における情報記憶部１０３は、ストレージ１００ａにより実現される。また、キャリブレーション装置１００における位置情報取得部１０１、力情報取得部１０２、第１の推定部１０４、第２の推定部１０５および制御量演算部１０６の各機能は、処理回路により実現される。即ち、キャリブレーション装置１００は、上記各機能を実現するための処理回路を備える。当該処理回路は、図５Ａに示すように専用のハードウェアである処理回路１００ｂであってもよいし、図５Ｂに示すようにメモリ１００ｄに格納されているプログラムを実行するプロセッサ１００ｃであってもよい。
【００２４】
図５Ａに示すように、位置情報取得部１０１、力情報取得部１０２、第１の推定部１０４、第２の推定部１０５および制御量演算部１０６が専用のハードウェアである場合、処理回路１００ｂは、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field-programmable Gate Array）、またはこれらを組み合わせたものが該当する。位置情報取得部１０１、力情報取得部１０２、第１の推定部１０４、第２の推定部１０５および制御量演算部１０６の各部の機能それぞれを処理回路で実現してもよいし、各部の機能をまとめて１つの処理回路で実現してもよい。
【００２５】
図５Ｂに示すように、位置情報取得部１０１、力情報取得部１０２、第１の推定部１０４、第２の推定部１０５および制御量演算部１０６がプロセッサ１００ｃである場合、各部の機能は、ソフトウェア、ファームウェア、またはソフトウェアとファームウェアとの組み合わせにより実現される。ソフトウェアまたはファームウェアはプログラムとして記述され、メモリ１００ｄに格納される。プロセッサ１００ｃは、メモリ１００ｄに記憶されたプログラムを読み出して実行することにより、位置情報取得部１０１、力情報取得部１０２、第１の推定部１０４、第２の推定部１０５および制御量演算部１０６の各機能を実現する。即ち、位置情報取得部１０１、力情報取得部１０２、第１の推定部１０４、第２の推定部１０５および制御量演算部１０６は、プロセッサ１００ｃにより実行されるときに、後述する図６および図８に示す各ステップが結果的に実行されることになるプログラムを格納するためのメモリ１００ｄを備える。また、これらのプログラムは、位置情報取得部１０１、力情報取得部１０２、第１の推定部１０４、第２の推定部１０５および制御量演算部１０６の手順または方法をコンピュータに実行させるものであるとも言える。
【００２６】
ここで、プロセッサ１００ｃとは、例えば、ＣＰＵ（Central Processing Unit）、処理装置、演算装置、プロセッサ、マイクロプロセッサ、マイクロコンピュータ、またはＤＳＰ（Digital Signal Processor）などのことである。
メモリ１００ｄは、例えば、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable Programmable ROM）、ＥＥＰＲＯＭ（Electrically EPROM）等の不揮発性または揮発性の半導体メモリであってもよいし、ハードディスク、フレキシブルディスク等の磁気ディスクであってもよいし、ミニディスク、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）等の光ディスクであってもよい。
【００２７】
なお、位置情報取得部１０１、力情報取得部１０２、第１の推定部１０４、第２の推定部１０５および制御量演算部１０６の各機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。このように、キャリブレーション装置１００における処理回路は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせによって、上述の各機能を実現することができる。
【００２８】
次に、キャリブレーション装置１００の動作について説明する。
キャリブレーション装置１００の動作は、キャリブレーション処理時の動作と、通常運転時の動作とに分けて説明する。まず、図６および図７を参照しながら、キャリブレーション装置１００のキャリブレーション処理時の動作について説明する。
図６は、実施の形態１に係るキャリブレーション装置１００のキャリブレーション処理時の動作を示すフローチャートである。
図７は、実施の形態１に係るキャリブレーション装置１００のキャリブレーション処理時のデータの流れを示す図である。
位置情報取得部１０１および力情報取得部１０２は、位置情報［Ａ、Ｂ、Ｃ］Ｔおよび力情報ＦＸ，ＦＹ，ＦＺ，ＭＡ，ＭＢ，ＭＣを取得し（ステップＳＴ１）、取得した位置情報および力情報を情報記憶部１０３に記憶させる（ステップＳＴ２）。ステップＳＴ１およびステップＳＴ２の処理は、ロボット２の姿勢の変化に応じて、繰り返し行われる。第１の推定部１０４は、情報記憶部１０３に記憶された位置情報［Ａ、Ｂ、Ｃ］Ｔから、ロボット２に加わる力を推定し、推定力情報を取得する（ステップＳＴ３）。第１の推定部１０４は取得した推定力情報を第２の推定部１０５に出力する。
【００２９】
第２の推定部１０５は、ステップＳＴ３で取得された推定力情報と、情報記憶部１０３に記憶された力情報ＦＸ，ＦＹ，ＦＺ，ＭＡ，ＭＢ，ＭＣとの差分を算出し、教師信号を取得する（ステップＳＴ４）。第２の推定部１０５は、情報記憶部１０３に記憶された位置情報［Ａ、Ｂ、Ｃ］Ｔをニューラルネットワークの入力とし、ニューラルネットワークの出力をステップＳＴ４で取得した教師信号と近似させるための学習を行う（ステップＳＴ５）。具体的に、第２の推定部１０５は、ニューラルネットワークの出力を教師信号と近似させるために、ニューラルネットワークの中間層のパラメータの最適化を行う。
【００３０】
第２の推定部１０５は、推定精度が所定値を上回ったか否か判定を行う（ステップＳＴ６）。推定精度が所定値を上回っていない場合（ステップＳＴ６；ＮＯ）、フローチャートはステップＳＴ３の処理に戻り、上述した処理を繰り返し行う。一方、推定精度が所定値を上回った場合（ステップＳＴ６；ＹＥＳ）、キャリブレーション装置１００は、キャリブレーション処理を終了する。
【００３１】
次に、図８および図９を参照しながら、ロボット２が通常運転している場合の、キャリブレーション装置１００の動作について説明する。
図８は、ロボット２が通常運転している場合における、実施の形態１に係るキャリブレーション装置１００の動作を示すフローチャートである。
図９は、ロボット２が通常運転している場合における、実施の形態１に係るキャリブレーション装置１００のデータの流れを示す図である。
ロボット２が動作して姿勢が変更されると（ステップＳＴ１１）、位置情報取得部１０１および力情報取得部１０２が位置情報［Ａ、Ｂ、Ｃ］Ｔおよび力情報ＦＸ，ＦＹ，ＦＺ，ＭＡ，ＭＢ，ＭＣを取得する（ステップＳＴ１２）。位置情報取得部１０１および力情報取得部１０２は、取得した位置情報［Ａ、Ｂ、Ｃ］Ｔおよび力情報ＦＸ，ＦＹ，ＦＺ，ＭＡ，ＭＢ，ＭＣを、情報記憶部１０３に記憶させる。第１の推定部１０４は、情報記憶部１０３に記憶された位置情報［Ａ、Ｂ、Ｃ］Ｔから、ロボット２に加わる力を推定し、推定力情報を取得する（ステップＳＴ１３）。第１の推定部１０４は取得した推定力情報を制御量演算部１０６に出力する。
【００３２】
第２の推定部１０５は、学習済みのニューラルネットワークの入力層に、情報記憶部１０３に記憶された位置情報［Ａ、Ｂ、Ｃ］Ｔを入力し、出力として差分ΔＦＸ，ΔＦＹ，ΔＦＺ，ΔＭＡ，ΔＭＢ，ΔＭＣを取得する（ステップＳＴ１４）。第２の推定部１０５は、取得した差分ΔＦＸ，ΔＦＹ，ΔＦＺ，ΔＭＡ，ΔＭＢ，ΔＭＣを制御量演算部１０６に出力する。制御量演算部１０６は、ステップＳＴ１３で取得された推定力情報と情報記憶部１０３に記憶された力情報ＦＸ，ＦＹ，ＦＺ，ＭＡ，ＭＢ，ＭＣとの差分を算出する（ステップＳＴ１５）。制御量演算部１０６は、ステップＳＴ１５で算出した差分から、さらにステップＳＴ１４で取得した差分ΔＦＸ，ΔＦＹ，ΔＦＺ，ΔＭＡ，ΔＭＢ，ΔＭＣを減算し、制御量を算出する（ステップＳＴ１６）。制御量演算部１０６は、ステップＳＴ１６で算出した制御量を制御装置４に出力し（ステップＳＴ１７）、処理を終了する。
【００３３】
キャリブレーション装置１００によるキャリブレーション結果を、図１０を参照しながら説明する。
図１０は、実施の形態１に係るキャリブレーション装置１００によるキャリブレーション結果を示す図である。
図１０Ａから図１０Ｆにおいて、第１の線分は質点モデルを用いた力情報の推定によりキャリブレーションした結果を示し、第２の線分は質点モデルを用いた力情報の推定およびニューラルネットワークを用いて、キャリブレーションした結果を示す。
また、図１０ＡはＸ軸方向の力情報ＦＸ、図１０ＢはＹ軸方向の力情報ＦＹ、図１０ＣはＺ軸方向の力情報ＦＺを示す。さらに、図１０ＤはＸ軸周りのモーメントＭＸ、図１０ＥはＹ軸周りのモーメントＭＹ、図１０ＦはＺ軸周りのモーメントＭＺを示す。
図１０は、ロボット２を移動させた際に、位置情報を、学習済みのニューラルネットワークに入力して得られる出力である差分を示している。また、図１０は、ロボット２のエンドエフェクタ３がワーク等に接触していない状態で、ロボット２が移動した場合の差分を示している。そのため、図１０では、差分の値が「０」に近いほど、良好なキャリブレーション結果が得られていると判断することができる。図１０Ａから図１０Ｆの全てにおいて、第１の線分で示した質点モデルを用いた力情報の推定によりキャリブレーションを行った結果よりも、第２の線分で示した質点モデルを用いた力情報の推定およびニューラルネットワークを用いてキャリブレーションを行った結果の方が、より良好なキャリブレーション結果が得られている。
【００３４】
以上のように、この実施の形態１によれば、制御対象機器の位置および姿勢を示す位置情報を取得する位置情報取得部１０１と、制御対象機器に設けられた力覚センサ５の検知結果から、制御対象機器に加わる力情報を取得する力情報取得部１０２と、位置情報取得部１０１が取得した位置情報から物理モデルを用いて制御対象機器に加わる力を推定し、推定力情報を取得する第１の推定部１０４と、位置情報取得部１０１が取得した位置情報、力情報取得部１０２が取得した力情報、および第１の推定部１０４が取得した推定力情報に基づいて、線形または非線形モデルを用いて推定力情報と力情報の差分を推定する第２の推定部１０５とを備えるように構成したので、重力成分の推定誤差を抑制することができる。これにより、正確なキャリブレーション結果を得ることができ、精密な操作を行う装置に対して当該キャリブレーション手法を適用することができる。
【００３５】
また、この実施の形態１によれば、第２の推定部１０５は、位置情報取得部１０１が取得した位置情報をニューラルネットワークの入力とし、第１の推定部１０４が取得した推定力情報と力情報取得部１０２が取得した力情報との差分をニューラルネットワークの教師信号として、当該ニューラルネットワークの学習を行うように構成したので、非線形性の物理モデル化が困難な場合、または質点モデル等では物理モデル化が困難なケーブル等についても、力情報への影響を除去することができる。
【００３６】
実施の形態２．
上述した実施の形態１では、位置情報は、オイラー表現されたＸ軸、Ｙ軸、Ｚ軸に対する回転３自由度である［Ａ、Ｂ、Ｃ］であることを示した。オイラー表現された位置情報は、図１１に示すように、例えばＸ軸上を１回転する位置情報を示す場合に、０ｄｅｇから１８０ｄｅｇの定義域θ１で表現された位置情報と、０ｄｅｇから−１８０ｄｅｇの定義域θ２で表現された位置情報とで表される場合がある。この場合、定義域θ１と定義域θ２との境界点Ｐ、即ち、１８０ｄｅｇおよび−１８０ｄｅｇの地点では、数値の折り返しが生じ、数値が連続しない、数値の不連続点となる。この実施の形態２では、オイラー表現された位置情報の定義域において、位置情報を示す数値を、不連続点を含まない表現となるように変換する構成を示す。
【００３７】
図１２は、実施の形態２に係るキャリブレーション装置１００Ａの構成を示すブロック図である。
実施の形態２のキャリブレーション装置１００Ａは、図３で示したキャリブレーション装置１００に変換部１０７を追加して構成している。以下では、実施の形態１に係るキャリブレーション装置１００の構成要素と同一または相当する部分には、実施の形態１で使用した符号と同一の符号を付して説明を省略または簡略化する。
【００３８】
変換部１０７は、情報記憶部１０３に記憶された位置情報［Ａ，Ｂ，Ｃ］に対して回転行列計算を行い、ベクトル表現に変換する。変換部１０７による回転行列計算は、以下の式（１）で表される。
0006456555.tif 000002
【００３９】
0006456555.tif 000003
なお、式（１）では、Ｘ軸を中心とした回転角度をＡ、Ｙ軸を中心とした回転角度をＢ、Ｚ軸を中心した回転角度をＣとし、Ｘ軸を中心とした回転による座標変換を行う回転行列をＲハット（Ａ）、Ｙ軸を中心とした回転による座標変換を行う回転行列をＲハット（Ｂ）、Ｚ軸を中心とした回転による座標変換を行う回転行列をＲハット（Ｃ）とする。
【００４０】
また、回転行列Ｒハット（Ａ）、回転行列Ｒハット（Ｂ）、および回転行列Ｒハット（Ｃ）は、以下の式（２）から式（４）で表すことができる。
0006456555.tif 000004
0006456555.tif 000005
0006456555.tif 000006
【００４１】
変換部１０７は、上述した回転行列計算で得られた位置情報のベクトル値ｒ１１，ｒ１２，ｒ１３，ｒ２１，ｒ２２，ｒ２３，ｒ３１，ｒ３２，ｒ３３を第２の推定部１０５に出力する。キャリブレーション処理を行っている場合、第２の推定部１０５は、変換部１０７から入力された位置情報のベクトル値ｒ１１，ｒ１２，ｒ１３，ｒ２１，ｒ２２，ｒ２３，ｒ３１，ｒ３２，ｒ３３を、ニューラルネットワークの入力とする。第２の推定部１０５は、ニューラルネットワークの出力を教師信号と近似させるため、ニューラルネットワークの中間層のパラメータの最適化を行う学習を行う。
【００４２】
また、ロボット２を通常動作させている場合、第２の推定部１０５は、変換部１０７から入力された位置情報のベクトル値ｒ１１，ｒ１２，ｒ１３，ｒ２１，ｒ２２，ｒ２３，ｒ３１，ｒ３２，ｒ３３を、ニューラルネットワークの入力とする。第２の推定部１０５は、ニューラルネットワークの出力として、実施の形態１と同様に差分（ΔＦＸ，ΔＦＹ，ΔＦＺ，ΔＭＡ，ΔＭＢ，ΔＭＣ）を取得する。
【００４３】
次に、キャリブレーション装置１００Ａのハードウェア構成例を説明する。なお、実施の形態１と同一の構成の説明は省略する。
キャリブレーション装置１００Ａにおける変換部１０７は、図５Ａで示した処理回路１００ｂ、または図５Ｂで示したメモリ１００ｄに格納されるプログラムを実行するプロセッサ１００ｃである。
【００４４】
図１３は、実施の形態２に係るキャリブレーション装置１００Ａの第２の推定部１０５におけるニューラルネットワークと、ニューラルネットワークの学習則の例を示す図である。
入力層には、位置情報［Ａ，Ｂ，Ｃ］を回転行列計算して得られた位置情報のベクトル値（ｒ１１，ｒ１２，ｒ１３，ｒ２１，ｒ２２，ｒ２３，ｒ３１，ｒ３２，ｒ３３）が入力される。出力層からは差分（ΔＦＸ，ΔＦＹ，ΔＦＺ，ΔＭＡ，ΔＭＢ，ΔＭＣ）が出力される。第２の推定部１０５は、ニューラルネットワークの学習過程において、入力されたベクトル値から中間層を経て得られる出力層の出力値を、教師信号、即ち推定力情報と力情報との差分と近似させるために中間層のパラメータの最適化を行う。
なお、図１３では、力覚センサ５が６軸センサであって、ロボットアーム１の移動方向、向きおよび回転を検出可能な場合を例に説明を行った。一方、力覚センサ５は３軸センサであってもよく、センサの構成は適宜設定可能である。ニューラルネットワークの出力は、力覚センサ５の構成に基づいて適宜設定される。
【００４５】
図１４は、実施の形態２に係るキャリブレーション装置１００Ａのキャリブレーション処理時の動作を示すフローチャートである。
なお、以下では、実施の形態１に係るキャリブレーション装置１００と同一のステップには図６で使用した符号と同一の符号を付し、説明を省略または簡略化する。
変換部１０７は、情報記憶部１０３に記憶された位置情報［Ａ、Ｂ、Ｃ］Ｔを用いて回転行列計算を行い、位置情報のベクトル値（ｒ１１，ｒ１２，ｒ１３，ｒ２１，ｒ２２，ｒ２３，ｒ３１，ｒ３２，ｒ３３）を取得する（ステップＳＴ２１）。変換部１０７は、位置情報のベクトル値（ｒ１１，ｒ１２，ｒ１３，ｒ２１，ｒ２２，ｒ２３，ｒ３１，ｒ３２，ｒ３３）を第２の推定部１０５に出力する。
【００４６】
第２の推定部１０５はステップＳＴ３で取得された推定力情報と、情報記憶部１０３に記憶された力情報ＦＸ，ＦＹ，ＦＺ，ＭＡ，ＭＢ，ＭＣとの差分を算出し、教師信号を取得する（ステップＳＴ４）。第２の推定部１０５は、変換部１０７から入力された位置情報のベクトル値（ｒ１１，ｒ１２，ｒ１３，ｒ２１，ｒ２２，ｒ２３，ｒ３１，ｒ３２，ｒ３３）をニューラルネットワークの入力とし、ニューラルネットワークの出力をステップＳＴ４で取得した教師信号と近似させるための中間層のパラメータの最適化を行うニューラルネットワークの学習を行う（ステップＳＴ２２）。その後、フローチャートはステップＳＴ６の処理に進む。
【００４７】
図１５は、ロボット２が通常運転している場合における、実施の形態２に係るキャリブレーション装置１００Ａの動作を示すフローチャートである。
なお、以下では、実施の形態１に係るキャリブレーション装置１００と同一のステップには図８で使用した符号と同一の符号を付し、説明を省略または簡略化する。
変換部１０７は、情報記憶部１０３に記憶された位置情報［Ａ、Ｂ、Ｃ］Ｔを用いて回転行列計算を行い、位置情報のベクトル値（ｒ１１，ｒ１２，ｒ１３，ｒ２１，ｒ２２，ｒ２３，ｒ３１，ｒ３２，ｒ３３）を取得する（ステップＳＴ３１）。変換部１０７は、取得した位置情報のベクトル値（ｒ１１，ｒ１２，ｒ１３，ｒ２１，ｒ２２，ｒ２３，ｒ３１，ｒ３２，ｒ３３）を第２の推定部１０５に出力する。
【００４８】
第２の推定部１０５は、学習したニューラルネットワークの入力層に、ステップＳＴ３１で取得された位置情報のベクトル値（ｒ１１，ｒ１２，ｒ１３，ｒ２１，ｒ２２，ｒ２３，ｒ３１，ｒ３２，ｒ３３）を入力し、出力として差分ΔＦＸ，ΔＦＹ，ΔＦＺ，ΔＭＡ，ΔＭＢ，ΔＭＣを取得する（ステップＳＴ３２）。第２の推定部１０５は、取得した差分ΔＦＸ，ΔＦＹ，ΔＦＺ，ΔＭＡ，ΔＭＢ，ΔＭＣを制御量演算部１０６に出力する。その後、ステップＳＴ１５からステップＳＴ１７の処理を行う。
【００４９】
キャリブレーション装置１００Ａによるキャリブレーション結果を、図１６を参照しながら説明する。
図１６は、実施の形態２に係るキャリブレーション装置１００によるキャリブレーション結果を示す図である。
図１６Ａから図１６Ｆにおいて、第１の線分は質点モデルを用いた力情報の推定によりキャリブレーションした結果を示し、第２の線分は質点モデルを用いた力情報の推定およびニューラルネットワークを用いてキャリブレーションした結果を示し、第３の線分は質点モデルを用いた力情報の推定および回転行列計算を行った後にニューラルネットワークを用いてキャリブレーションした結果を示す。
また、図１６ＡはＸ軸方向の力情報ＦＸ、図１６ＢはＹ軸方向の力情報ＦＹ、図１６ＣはＺ軸方向の力情報ＦＺを示す。さらに、図１６ＤはＸ軸周りのモーメントＭＸ、図１６ＥはＹ軸周りのモーメントＭＹ、図１６ＦはＺ軸周りのモーメントＭＺを示す。
【００５０】
図１６は、実施の形態１と同様に、ロボット２を移動させた際に、位置情報を、学習済みのニューラルネットワークに入力して得られる出力である差分を示している。また、図１６は、ロボット２のエンドエフェクタ３がワークに接触していない状態で、ロボット２が移動した場合の差分を示している。そのため、図１６では、差分の値が「０」に近いほど、良好なキャリブレーション結果が得られていると判断できる。図１６Ａから図１６Ｆの全てにおいて、第３の線分で示した、質点モデルを用いた力情報の推定および回転行列計算を行った後にニューラルネットワークを用いて、キャリブレーションを行った場合が、最も良好なキャリブレーション結果が得られたことを示している。
【００５１】
上記では、変換部１０７が位置情報に対して回転行列計算を行い、ベクトルに変換する場合を示したが、変換処理は回転行列計算に限定されるものではない。
変換部１０７には、オイラー表現された位置情報の定義域において、位置情報を示す数値の不連続点を含まない表現となるように、位置以上の数値の変換を行う処理であれば、種々適用可能である。
例えば、オイラー表現された位置情報の定義域において、図１１で示した定義域θ２（０ｄｅｇから−１８０ｄｅｇ）の角度に３６０ｄｅｇを加算し、角度範囲を１８０ｄｅｇから３６０ｄｅｇに変換する処理を適用する。これにより、図１１の例で示した位置情報の定義域θ１と定義域θ２において角度範囲が０ｄｅｇから３６０ｄｅｇとなり、定義域θ１と定義域θ２との境界点Ｐにおいて数値の不連続点がなくなる。
【００５２】
以上のように、この実施の形態２によれば、位置情報取得部１０１が取得した位置情報を、不連続点を含まない連続した数値表現に変換する変換部１０７を備えるように構成したので、位置情報の不連続点の影響を受けることなく、位置情報の変換に対して連続したキャリブレーション処理を行うことができる。
【００５３】
上述した実施の形態１および実施の形態２において、位置情報取得部１０１が取得した位置情報、および力情報取得部１０２が取得した力情報を記憶する情報記憶部１０３を備える構成を示したが、情報記憶部１０３を備えない構成としてもよい。その場合、位置情報取得部１０１および力情報取得部１０２は、第１の推定部１０４、第２の推定部１０５および変換部１０７のうち、情報を出力すべき構成に直接情報を出力するように構成してもよい。
【００５４】
上述した実施の形態１および実施の形態２において、キャリブレーション処理を行う際に、位置情報取得部１０１が位置情報を取得し、力情報取得部１０２が力情報を取得し、情報記憶部１０３に記憶させる構成を示した。キャリブレーション装置１００が、当該位置情報および力情報を取得する際に、ロボット２を等速運動で移動させる構成としてもよい。ロボット２を等速運動させることにより、慣性力の影響を考慮する必要のない情報を取得することができる。また、慣性力の影響を考慮する必要がないので、ロボット２の動作を止めることなく、位置情報および力情報を取得することができる。
【００５５】
また、上述した実施の形態１および実施の形態２において、キャリブレーション装置１００，１００Ａは、ロボット２の設置環境の変化およびロボット２のエンドエフェクタ３等の経年変化等の情報に基づいて、ニューラルネットワークを更新する構成を備えてもよい。例えば、キャリブレーション装置１００，１００Ａは、ロボット２が設置された環境の温度または湿度、エンドエフェクタ３の磨耗度合い等の制御対象機器に関する情報を取得する。第２の推定部１０５は、ニューラルネットワークの学習を行う際に、取得された制御対象機器に関する情報も参照してニューラルネットワークの学習を行う。
これにより、ロボット２の設置環境およびロボット２等の経年変化を考慮したニューラルネットワークの学習を行うことができ、精度の高いキャリブレーション処理を実行することができる。
【００５６】
上記以外にも、本発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、各実施の形態の任意の構成要素の変形、または各実施の形態の任意の構成要素の省略が可能である。
【産業上の利用可能性】
【００５７】
この発明に係るキャリブレーション装置は、アーム型ロボットであって、力を制御しながら作業を行うアーム型ロボットを制御するために用いられる装置であって、高精度な操作を必要となるアーム型ロボットを制御するための装置に適用可能である。
【符号の説明】
【００５８】
１００，１００Ａ  キャリブレーション装置、１０１  位置情報取得部、１０２  力情報取得部、１０３  情報記憶部、１０４  第１の推定部、１０５  第２の推定部、１０６  制御量演算部、１０７  変換部。
【要約】
制御対象機器の位置および姿勢を示す位置情報を取得する位置情報取得部（１０１）と、制御対象機器に設けられた力覚センサ（５）の検知結果から、制御対象機器に加わる力情報を取得する力情報取得部（１０２）と、取得された位置情報から物理モデルを用いて制御対象機器に加わる力を推定し、推定力情報を取得する第１の推定部（１０４）と、取得された位置情報、取得した力情報、および取得された推定力情報に基づいて、線形または非線形モデルを推定する第２の推定部（１０５）とを備える。【図１】
0006456555.tif 000007
【図２】
0006456555.tif 000008
【図３】
0006456555.tif 000009
【図４】
0006456555.tif 000010
【図５】
0006456555.tif 000011
【図６】
0006456555.tif 000012
【図７】
0006456555.tif 000013
【図８】
0006456555.tif 000014
【図９】
0006456555.tif 000015
【図１０】
0006456555.tif 000016
【図１１】
0006456555.tif 000017
【図１２】
0006456555.tif 000018
【図１３】
0006456555.tif 000019
【図１４】
0006456555.tif 000020
【図１５】
0006456555.tif 000021
【図１６】
0006456555.tif 000022