(57)【要約】【課題】容易にマニピュレーターの校正を行うことができるロボットを提供すること。【解決手段】ロボットは、アームと、力センサーとを備え、複数の第２部材のそれぞれ毎に、アームの先端に取り付けられた第１部材の一部であってアームの先端の回転軸上とは異なる位置に設けられた一部と第２部材とが１の距離となるように移動させた状態で、少なくとも力センサーの出力値に基づいてアームを複数の姿勢にすることによりアームを校正する。【選択図】図７
2016120554.tif 000002
【特許請求の範囲】
【請求項１】
アームと、力センサーとを備え、
複数の第２部材のそれぞれ毎に、前記アームの先端に取り付けられた第１部材の一部であって前記アームの先端の回転軸上とは異なる位置に設けられた前記一部と前記第２部材とが１の距離となるように移動させた状態で、少なくとも前記力センサーの出力値に基づいて前記アームを複数の姿勢にすることにより前記アームを校正する、
ロボット。
【請求項２】
請求項１に記載のロボットであって、
前記１の距離は、略０である、
ロボット。
【請求項３】
請求項１又は２に記載のロボットであって、
前記複数の前記第２部材のそれぞれ毎に、前記第１部材の前記一部を前記第２部材と前記１の距離となるように移動させた後、前記第１部材の前記一部を前記第２部材と前記１の距離とは異なる他の距離に移動させて前記力センサーの初期化を行い、前記第１部材の前記一部を前記第２部材と前記１の距離となるように移動させる、
ロボット。
【請求項４】
請求項３に記載のロボットであって、
前記力センサーの前記初期化を行う際、前記第１部材の振動が収まるまで待機した後、前記力センサーの前記初期化を行い、前記第１部材の前記一部を前記第２部材と前記１の距離となるように移動させる、
ロボット。
【請求項５】
請求項１から４のうちいずれか一項に記載のロボットであって、
前記第１部材の前記一部を前記第２部材の凹部に接触させた状態で前記アームを複数の姿勢にする、
ロボット。
【請求項６】
請求項１から５のうちいずれか一項に記載のロボットであって、
２以上の前記アームを備え、
前記２以上の前記アームを一括で校正する、
ロボット。
【請求項７】
アームと、力センサーとを備えるロボットと、
前記ロボットを動作させる制御装置と、
前記アームの先端の回転軸上とは異なる位置に端部を有する第１部材と、
複数の第２部材と、を含み、
前記制御装置は、
前記複数の前記第２部材のそれぞれ毎に、前記アームの先端に取り付けられた第１部材の一部であって前記アームの先端の回転軸上とは異なる位置に設けられた前記一部と前記第２部材とが１の距離となるように移動させた状態で、少なくとも前記力センサーの出力値に基づいて前記アームを複数の姿勢にすることにより前記アームを校正する、
ロボットシステム。
【請求項８】
複数の第２部材のそれぞれ毎に、ロボットが備えるアームの先端に取り付けられた第１部材の一部であって前記アームの先端の回転軸上とは異なる位置に設けられた前記一部と前記第２部材とが１の距離となるように移動させた状態で、少なくとも前記力センサーの出力値に基づいて前記アームを複数の姿勢にすることにより前記アームを校正する、
制御装置。
【請求項９】
複数の第２部材のそれぞれ毎に、ロボットが備えるアームの先端に取り付けられた第１部材の一部であって前記アームの先端の回転軸上とは異なる位置に設けられた前記一部と前記第２部材とが１の距離となるように移動させた状態で、少なくとも前記力センサーの出力値に基づいて前記アームを複数の姿勢にすることにより前記アームを校正する、
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ロボット、ロボットシステム、制御装置、及び制御方法に関する。
【背景技術】
【０００２】
ロボットに精度の高い作業を行わせるため、ロボットの機構や撮像装置、作業環境等の校正について研究・開発が行われている。
【０００３】
これに関し、外部の計測装置を使わずにマニピュレーターのＴＣＰ（Tool  Center  Point）を何らかの治具によって機構的に拘束、もしくはマニピュレーター同士を連結することで、マニピュレーターの校正を行う方法が知られている（特許文献１、非特許文献１参照）。
【０００４】
マニピュレーターの駆動とともに移動するＴＣＰの位置は、マニピュレーターが備える複数のアクチュエーターそれぞれの回転角を与えることによって順運動学に基づいて算出することができる。しかし、与えられた回転角が実現されるようにそれらのアクチュエーターを駆動させた場合に到達する実際のＴＣＰの位置は、マニピュレーターを構成する部材の弾性等による誤差の影響によって、算出されたＴＣＰの位置と異なる位置となる場合がある。この明細書では、マニピュレーターの校正とは、このような実際のＴＣＰの位置と算出されたＴＣＰの位置との差が小さくなるように各アクチュエーターの回転角を補正することを示す。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１８４２３６号公報
【非特許文献】
【０００６】
【非特許文献１】http://www.cs.utah.edu/~jmh/Papers/Hollerbach_IJRR96.pdf  「The  Calibration  Index  And  Taxonomy  for  Robot  Kinematics  Calibration  Methods(John  M.Hollerbach,  et  al.)：  Closed  Loop  Kinematic  Calibration」
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、従来の方法では、手作業でマニピュレーターの校正を行う場合、各アクチュエーターの動作を停止させ、手作業でマニピュレーターの姿勢を変えなければならず、時間と労力が必要であった。また、各アクチュエーターを駆動させてマニピュレーターの校正を行う場合、マニピュレーターの校正が完了していないためにマニピュレーターを正確に動かすことができず、ＴＣＰが拘束されている状態でマニピュレーターを構成するアクチュエーターや部材等に負荷を掛けずにマニピュレーターを制御することが難しかった。また、マニピュレーターを何らかの治具によって機構的に拘束するためには、マニピュレーターの動作荷重に耐えられる大掛かりな治具が必要となり、校正治具の設置場所や可搬性が損なわれてしまうという問題があった。
【０００８】
そこで本発明は、上記従来技術の問題に鑑みてなされたものであり、容易にマニピュレーターの校正を行うことができるロボット、ロボットシステム、制御装置、及び制御方法を提供する。
【課題を解決するための手段】
【０００９】
本発明の一態様は、アームと、力センサーとを備え、複数の第２部材のそれぞれ毎に、前記アームの先端に取り付けられた第１部材の一部であって前記アームの先端の回転軸上とは異なる位置に設けられた前記一部と前記第２部材とが１の距離となるように移動させた状態で、少なくとも前記力センサーの出力値に基づいて前記アームを複数の姿勢にすることにより前記アームを校正する、ロボットである。
この構成により、ロボットは、複数の第２部材のそれぞれ毎に、アームの先端に取り付けられた第１部材の一部であってアームの先端の回転軸上とは異なる位置に設けられた第１部材の一部と第２部材とが１の距離となるように移動させた状態で、少なくとも力センサーの出力値に基づいてアームを複数の姿勢にすることによりアームを校正する。これにより、ロボットは、容易にマニピュレーターの校正を行うことができる。
【００１０】
また、本発明の他の態様は、ロボットにおいて、前記１の距離は、略０である、構成が用いられてもよい。
この構成により、ロボットは、複数の第２部材のそれぞれ毎に、アームの先端に取り付けられた第１部材の一部であってアームの先端の回転軸上とは異なる位置に設けられた第１部材の一部と第２部材とが略０の距離となるように移動させた状態で、少なくとも力センサーの出力値に基づいてアームを複数の姿勢にすることによりアームを校正する。これにより、ロボットは、第１部材の一部を第２部材に接触させた状態を保ったまま、アームに１以上の姿勢を取らせ、アームを校正することができる。
【００１１】
また、本発明の他の態様は、ロボットにおいて、前記複数の前記第２部材のそれぞれ毎に、前記第１部材の前記一部を前記第２部材と前記１の距離となるように移動させた後、前記第１部材の前記一部を前記第２部材と前記１の距離とは異なる他の距離に移動させて前記力センサーの初期化を行い、前記第１部材の前記一部を前記第２部材と前記１の距離となるように移動させる、構成が用いられてもよい。
この構成により、ロボットは、複数の第２部材のそれぞれ毎に、第１部材の一部を第２部材と１の距離となるように移動させた後、第１部材の一部を第２部材と１の距離とは異なる他の距離に移動させて力センサーの初期化を行い、第１部材の一部を第２部材と１の距離となるように移動させる。これにより、ロボットは、力センサーに加わる重力等の外力による誤差を抑制することができる。
【００１２】
また、本発明の他の態様は、ロボットにおいて、前記力センサーの前記初期化を行う際、前記第１部材の振動が収まるまで待機した後、前記力センサーの前記初期化を行い、前記第１部材の前記一部を前記第２部材と前記１の距離となるように移動させる、構成が用いられてもよい。
この構成により、ロボットは、力センサーの初期化を行う際、第１部材の振動が収まるまで待機した後、力センサーの初期化を行い、第１部材の一部を第２部材と１の距離となるように移動させる。これにより、ロボットは、第１部材の振動により生じる力センサーの初期化における誤差を抑制することができる。
【００１３】
また、本発明の他の態様は、ロボットにおいて、前記第１部材の前記一部を前記第２部材の凹部に接触させた状態で前記アームを複数の姿勢にする、構成が用いられてもよい。
この構成により、ロボットは、第１部材の一部を第２部材の凹部に接触させた状態でアームを複数の姿勢にする。これにより、ロボットは、第１部材の一部の位置を固定したままアームを複数の姿勢にし、アームを校正することができる。
【００１４】
また、本発明の他の態様は、ロボットにおいて、２以上の前記アームを備え、前記２以上の前記アームを一括で校正する、構成が用いられてもよい。
この構成により、ロボットは、２以上のアームを一括で校正する。これにより、ロボットは、２以上のアームによる協調作業の精度を向上させることができる。
【００１５】
また、本発明の他の態様は、アームと、力センサーとを備えるロボットと、前記ロボットを動作させる制御装置と、前記アームの先端の回転軸上とは異なる位置に端部を有する第１部材と、複数の第２部材と、を含み、前記制御装置は、前記複数の前記第２部材のそれぞれ毎に、前記アームの先端に取り付けられた第１部材の一部であって前記アームの先端の回転軸上とは異なる位置に設けられた前記一部と前記第２部材とが１の距離となるように移動させた状態で、少なくとも前記力センサーの出力値に基づいて前記アームを複数の姿勢にすることにより前記アームを校正する、ロボットシステムである。
この構成により、ロボットシステムは、複数の第２部材のそれぞれ毎に、アームの先端に取り付けられた第１部材の一部であってアームの先端の回転軸上とは異なる位置に設けられた第１部材の一部と第２部材とが１の距離となるように移動させた状態で、少なくとも力センサーの出力値に基づいてアームを複数の姿勢にすることによりアームを校正する。これにより、ロボットシステムは、容易にマニピュレーターの校正を行うことができる。
【００１６】
また、本発明の他の態様は、複数の第２部材のそれぞれ毎に、ロボットが備えるアームの先端に取り付けられた第１部材の一部であって前記アームの先端の回転軸上とは異なる位置に設けられた前記一部と前記第２部材とが１の距離となるように移動させた状態で、少なくとも前記力センサーの出力値に基づいて前記アームを複数の姿勢にすることにより前記アームを校正する、制御装置である。
この構成により、制御装置は、複数の第２部材のそれぞれ毎に、ロボットが備えるアームの先端に取り付けられた第１部材の一部であってアームの先端の回転軸上とは異なる位置に設けられた第１部材の一部と第２部材とが１の距離となるように移動させた状態で、少なくとも力センサーの出力値に基づいてアームを複数の姿勢にすることによりアームを校正する。これにより、制御装置は、容易にマニピュレーターの校正を行うことができる。
【００１７】
また、本発明の他の態様は、複数の第２部材のそれぞれ毎に、ロボットが備えるアームの先端に取り付けられた第１部材の一部であって前記アームの先端の回転軸上とは異なる位置に設けられた前記一部と前記第２部材とが１の距離となるように移動させた状態で、少なくとも前記力センサーの出力値に基づいて前記アームを複数の姿勢にすることにより前記アームを校正する、制御方法である。
この構成により、制御方法は、複数の第２部材のそれぞれ毎に、ロボットが備えるアームの先端に取り付けられた第１部材の一部であってアームの先端の回転軸上とは異なる位置に設けられた第１部材の一部と第２部材とが１の距離となるように移動させた状態で、少なくとも力センサーの出力値に基づいてアームを複数の姿勢にすることによりアームを校正する。これにより、制御方法は、容易にマニピュレーターの校正を行うことができる。
【００１８】
以上により、ロボット、ロボットシステム、制御装置、及び制御方法は、複数の第２部材のそれぞれ毎に、アームの先端に取り付けられた第１部材の一部であってアームの先端の回転軸上とは異なる位置に設けられた第１部材の一部と第２部材とが１の距離となるように移動させた状態で、少なくとも力センサーの出力値に基づいてアームを複数の姿勢にすることによりアームを校正する。これにより、ロボットシステム、ロボット、制御装置、及び制御方法は、容易にマニピュレーターの校正を行うことができる。
【図面の簡単な説明】
【００１９】
【図１】本実施形態に係るロボットシステム１の一例を示す構成図である。
【図２】治具Ｊの一例を示す図である。
【図３】校正用情報取得動作に応じてＴＣＰの位置が変化せず、ＴＣＰの姿勢が変化する状況の一例を示す図である。
【図４】ロボット２０が備える第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の各関節と、ロボット２０の腰軸とを例示する図である。
【図５】第１エンドエフェクターＥＮＤ１の一例を示す図である。
【図６】制御装置３０のハードウェア構成の一例を示す図である。
【図７】制御装置３０の機能構成の一例を示す図である。
【図８】制御装置３０が第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正を終えるまでの処理の流れの一例を示すフローチャートである。
【図９】第１マニピュレーターＭＮＰ１の姿勢を例示する図である。
【発明を実施するための形態】
【００２０】
＜第１実施形態＞
以下、本発明の第１実施形態について、図面を参照して説明する。図１は、第１実施形態に係るロボットシステム１の一例を示す構成図である。ロボットシステム１は、ロボット２０と、制御装置３０を備える。ロボットシステム１は、複数の治具を用いてロボット２０が備えるマニピュレーターの校正を行う。この一例において、ロボットシステム１は、これら複数の治具として、図１に示した３つの治具Ｊ１〜Ｊ３を用いる構成であるとするが、４つ以上の治具を用いる構成であってもよい。以下では、治具Ｊ１〜Ｊ３を区別して説明する必要が無い限り、まとめて治具Ｊと称して説明する。
【００２１】
ここで、ロボットシステム１が行うマニピュレーターの校正について説明する。ロボットシステム１は、ロボット２０のマニピュレーターが備える複数のアクチュエーターそれぞれの回転角を示す情報を、各アクチュエーターに接続される（又は備える）エンコーダーから取得する。なお、アクチュエーターの回転角は、アームを制御するためのパラメーターの一例である。以下、説明の便宜上、アクチュエーターの回転角を、単に回転角と称して説明する場合がある。
【００２２】
ロボットシステム１は、各エンコーダーから取得された回転角から、順運動学によって現在のマニピュレーターのＴＣＰの位置を制御装置３０により算出する。以下では、説明の便宜上、マニピュレーターのＴＣＰの位置を、単にＴＣＰの位置と称して説明する。ロボットシステム１は、この算出されたＴＣＰの位置に基づいて、マニピュレーターにより各種の作業を行うようにロボット２０を制御する。
【００２３】
しかし、算出されたＴＣＰの位置は、マニピュレーターを構成する部材の弾性によって生じる誤差や、アクチュエーターの回転に係る誤差等によって、実際のＴＣＰの位置と異なる位置を示す場合がある。例えば、マニピュレーターが１つのアクチュエーターのみを備えている場合を考えると、エンコーダーから取得された回転角をθとし、算出されたＴＣＰの位置を実際のＴＣＰの位置を再現するアクチュエーターの回転角をφとした時、この補正は、以下の式（１）に示すように、ある値η（正又は負のいずれかの値）を回転角θに加算することによって行われる。
【００２４】
φ＝θ＋η  ・・・（１）
【００２５】
以下では、上記の式（１）に示したようなアクチュエーターの回転角を補正するための値ηを、ジョイントオフセットと称して説明する。従って、ロボットシステム１が行うマニピュレーターの校正とは、すなわち、マニピュレーターが備える複数のアクチュエーターそれぞれの回転角毎に、ジョイントオフセットを算出し、算出されたジョイントオフセットによってマニピュレーターが備える複数のアクチュエーターそれぞれの回転角を補正することを示す。以下では、説明の便宜上、マニピュレーターが備える複数のアクチュエーターそれぞれの回転角毎のジョイントオフセットを、単にジョイントオフセットと称して説明する。
【００２６】
このマニピュレーターの校正により、ロボットシステム１は、順運動学によって算出されるＴＣＰの位置と、実際のＴＣＰの位置を精度よく一致させることができる。その結果、ロボットシステム１は、ロボット２０が備えるマニピュレーターに高い精度の作業を行わせることができる。以下では、このマニピュレーターの校正のうち、ロボットシステム１がアクチュエーターの回転角を補正するジョイントオフセットを算出し、算出されたジョイントオフセットを制御装置３０に教示する（記憶させる）までの処理について説明する。
【００２７】
３つの治具Ｊはそれぞれ、作業台ＴＢの上面に設置されている。３つの治具Ｊのそれぞれは、作業台ＴＢの上面において重なり合わないような任意の位置に配置される。作業台ＴＢとは、テーブル等の台であるが、これに代えて、床面や壁面等、３つの治具Ｊのそれぞれを設置できる他の物体であってもよい。この一例において、３つの治具Ｊのそれぞれは、板状の金属である。また、治具Ｊ１は、上面に凹部Ｈ１が設けられ、治具Ｊ２は、上面に凹部Ｈ２が設けられ、治具Ｊ３は、上面に凹部Ｈ３が設けられている。以下では、凹部Ｈ１〜Ｈ３を区別して説明する必要が無い限り、まとめて凹部Ｈと称して説明する。
【００２８】
なお、３つの治具Ｊのそれぞれは、凹部Ｈが設けられていれば、床面や壁面等、他の物体であってもよい。図２は、治具Ｊ１の一例を示す図である。本実施形態において、治具Ｊ２、Ｊ３は、どちらも治具Ｊ１と同じ構造を有するとし、説明を省略する。また、３つの治具Ｊのそれぞれは、上面に凹部Ｈが設けられていれば、３つの治具Ｊのそれぞれが互いに異なる構造を有していてもよい。図２に示したように、治具Ｊ１の上面には、円錐状の凹部Ｈ１が設けられている。
【００２９】
この凹部Ｈ１は、ＴＣＰの位置を固定したままＴＣＰの姿勢を変化させることができる形状であれば他の形状でもよく、例えば、すり鉢状等であってもよい。また、この一例において、３つの凹部Ｈのそれぞれは同じ構造を有しているとするが、これに代えて、それぞれが互いに異なる構造を有していてもよい。その場合、３つの凹部Ｈはそれぞれ、ＴＣＰの位置を固定したままＴＣＰの姿勢を変化させることができる形状であるとする。なお、治具Ｊは、第２部材の一例である。
【００３０】
マニピュレーターの校正を行う際、ロボットシステム１は、ＴＣＰの位置をある位置に固定する。ロボットシステム１は、ＴＣＰの位置をある位置に固定するため、治具Ｊを用いる。ロボットシステム１は、ロボット２０が備えるエンドエフェクターの所定部位を、治具Ｊの上面に設けられた凹部Ｈに接触させる。エンドエフェクターの所定部位は、例えば、第１エンドエフェクターＥＮＤ１に設けられた突起状の部位の先端である。この先端には、球が設けられている。この球の中心には、第１ＴＣＰ位置が設定されている。治具Ｊの上面に設けられた凹部Ｈは、このようなエンドエフェクターの所定部位が接触した場合、治具Ｊの上面に沿った方向へのエンドエフェクターの所定部位の動きを固定する。
【００３１】
以下では、説明の便宜上、エンドエフェクターの所定部位を凹部Ｈに接触させることで、治具Ｊの上面に沿った方向へエンドエフェクターの所定部位が動かないようにすることを、第１エンドエフェクターＥＮＤ１の所定部位を凹部Ｈに嵌めると称して説明する。また、以下では、説明の便宜上、治具Ｊ１においてＴＣＰの位置が固定されるある位置を固定位置Ｘ１と称し、治具Ｊ２においてＴＣＰの位置が固定されるある位置を固定位置Ｘ２と称し、治具Ｊ３においてＴＣＰの位置が固定されるある位置を固定位置Ｘ３と称して説明する。また、以下では、固定位置Ｘ１〜Ｘ３を区別する必要が無い限り、これらをまとめて固定位置Ｘと称して説明する。なお、この一例において、第１エンドエフェクターＥＮＤ１の所定部位が球である場合について説明するが、第１エンドエフェクターＥＮＤ１の所定部位は、第１マニピュレーターＭＮＰ１のＴＣＰの位置が固定位置Ｘに固定することができれば、球である必要は無く、他の形状であってもよい。
【００３２】
すなわち、ロボットシステム１は、ＴＣＰの位置を固定位置Ｘに固定するため、エンドエフェクターの所定部位を凹部Ｈに嵌める。そして、ロボットシステム１は、エンドエフェクターの所定部位を凹部Ｈに嵌めたままの状態で、校正用情報取得動作をロボット２０に行わせる。
【００３３】
ここで、エンドエフェクターの所定部位を凹部Ｈに嵌めたままの状態とは、ＴＣＰの位置が固定位置Ｘに固定されるが、ＴＣＰの姿勢は固定されない状態を示す。この一例において、マニピュレーターのＴＣＰの姿勢は、ＣＰＵ（Central  Processing  Unit）の計算上、エンドエフェクターの所定部位の姿勢と一致した値を設定して用いる。そして、エンドエフェクターの所定部位の姿勢は、エンドエフェクターの所定部位に設定された座標軸の方向によって規定される。なお、ＴＣＰの姿勢は、他の部位の姿勢と一致するように設定されてもよい。
【００３４】
また、校正用情報取得動作とは、エンドエフェクターの所定部位を治具Ｊの凹部Ｈに嵌めたままの状態で、マニピュレーターの姿勢を変更する動作を示す。マニピュレーターの姿勢とは、マニピュレーターが備える複数のアクチュエーターそれぞれの回転角によって指定される。
【００３５】
ＴＣＰの位置は、エンドエフェクターの所定部位が凹部Ｈに嵌められたままであるため、校正用情報取得動作によって動くことはない。一方、ＴＣＰの姿勢は、校正用情報取得動作によって変化する。このように校正用情報取得動作に応じてＴＣＰの位置が変化せず、ＴＣＰの姿勢が変化する状況を実現するためには、エンドエフェクターの所定部位の形状は、球状であることが望ましいが、校正用情報取得動作によってＴＣＰの位置が固定位置Ｘから変化しなければ他の形状であってもよい。
【００３６】
ここで、図３を参照して、校正用情報取得動作に応じてＴＣＰの位置が変化せず、ＴＣＰの姿勢が変化する状況について説明する。図３は、校正用情報取得動作に応じてＴＣＰの位置が変化せず、ＴＣＰの姿勢が変化する状況の一例を示す図である。ロボットシステム１は、治具Ｊの凹部Ｈにエンドエフェクターの所定部位Ｏを嵌めたままの状態を保持するため、治具Ｊの上面に対して鉛直下方に向かって所定部位Ｏを凹部Ｈに力Ｆ１で押しつけ続ける。
【００３７】
この際、ロボットシステム１は、力センサーから取得する力センサー情報に基づく制御（例えば、コンプライアンス制御等）によって治具Ｊを破壊しないように所定の大きさの力Ｆ１で所定部位Ｏを凹部Ｈに押しつけ続ける。このようにすることで、ＴＣＰの位置は、固定位置Ｘに固定され、治具Ｊの上面に沿った方向へ移動することができなくなる（固定される）。従って、この状態を保持したまま、校正用情報取得動作によってエンドエフェクターが、例えば、矢印Ｆ２に沿って動いた場合、所定部位Ｏの姿勢（すなわち、ＴＣＰの姿勢）は変化するが、所定部位Ｏの位置（すなわち、ＴＣＰの位置）は変化しない。
【００３８】
ロボットシステム１は、エンドエフェクターの所定部位を凹部Ｈに嵌めたまま校正用情報取得動作をロボット２０に行わせることで、マニピュレーターの姿勢を変化させる毎に、マニピュレーターが備える複数のアクチュエーターそれぞれに係るエンコーダーから、回転角を示す情報を取得する。ロボットシステム１は、取得された複数の回転角を示す情報と、その時のマニピュレーターの姿勢を示す情報とを対応付けて、校正用情報として記憶する。なお、エンドエフェクターの所定部位は、ＴＣＰの位置と一致させることが可能な部位であればよく、マニピュレーターの所定部位等の他の部位であってもよい。また、マニピュレーターの姿勢に係る回転角の数は、マニピュレーターの関節数と同数である。
【００３９】
ロボットシステム１は、このような校正用情報の取得を、治具Ｊ１〜Ｊ３のそれぞれに対して繰り返し行うことで、治具Ｊ１〜Ｊ３それぞれに対応した校正用情報を取得（記憶）する。なお、以下では、説明の便宜上、ロボットシステム１が、治具Ｊ１、Ｊ２、Ｊ３の順に校正用情報を取得する構成であるとして説明するが、この順に校正用情報を取得する必要はなく、校正用情報を取得する順は任意の順であって良い。
【００４０】
ロボットシステム１は、取得されたすべての校正用情報に基づいて、順運動学からロボット２０の姿勢毎にＴＣＰの位置を算出する方程式を導出する。これらの導出された方程式は、各エンコーダーから取得されたアクチュエーターそれぞれの回転角を入力パラメーターとし、ＴＣＰの位置を表す座標（３つの座標値）と、ジョイントオフセットとを未知数とする方程式である。なお、ＴＣＰの位置は、マニピュレーターのロボット座標系によって表される。
【００４１】
ロボットシステム１は、導出された方程式による連立方程式を解くことにより、未知数であるＴＣＰの位置を表す座標と、ジョイントオフセットを算出する。そして、ロボットシステム１は、算出されたジョイントオフセットに基づいてマニピュレーターの校正を行う。この校正により、ロボットシステム１は、マニピュレーターに高い精度の作業をロボット２０に行わせることができる。
【００４２】
ここで、ロボットシステム１が具備するロボット２０と制御装置３０について説明する。なお、本実施形態では、一例として、ロボット２０が２つのマニピュレーターを備える場合について説明する。
【００４３】
ロボット２０は、第１動撮像部１１と、第２動撮像部１２と、第１固定撮像部２１と、第２固定撮像部２２と、第１力センサー２３−１と、第２力センサー２３−２と、第１エンドエフェクターＥＮＤ１と、第２エンドエフェクターＥＮＤ２と、第１マニピュレーターＭＮＰ１と、第２マニピュレーターＭＮＰ２と、図示しない複数のアクチュエーターを備えた双腕ロボットである。双腕ロボットとは、２本のアーム（腕）を有するロボットを示し、本実施形態では、第１エンドエフェクターＥＮＤ１と第１マニピュレーターＭＮＰ１によって構成されるアーム（以下、第１アームと称する）と、第２エンドエフェクターＥＮＤ２と第２マニピュレーターＭＮＰ２によって構成されるアーム（以下、第２アームと称する）との２本のアームを有する。
【００４４】
なお、ロボット２０は、双腕ロボットに代えて、単腕ロボットであってもよい。単腕ロボットとは、１本のアームを有するロボットを示し、例えば、前述の第１アームと第２アームのうちいずれか一方を有するロボットを示す。また、ロボット２０は、双腕ロボットに代えて、３腕以上のロボットであってもよい。３腕以上のロボットとは、３本以上のアームを有するロボットを示す。また、ロボット２０は、さらに制御装置３０を内蔵し、内蔵された制御装置３０により制御される。なお、ロボット２０は、制御装置３０を内蔵する構成に代えて、外部に設置された制御装置３０により制御される構成であってもよい。
【００４５】
また、複数のアクチュエーターはそれぞれ、第１マニピュレーターＭＮＰ１が備える各関節、第２マニピュレーターＭＮＰ２が備える各関節に備えられる。ここで、図４を参照して、ロボット２０が備える第１マニピュレーターＭＮＰ１、第２マニピュレーターＭＮＰ２の各関節について説明する。図４は、ロボット２０が備える第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の各関節を例示する図である。図４に示すように、第１マニピュレーターＭＮＰ１は、Ｊ０１〜Ｊ０７によって示される７つの関節、すなわち７つのアクチュエーターを備える。
【００４６】
また、第２マニピュレーターＭＮＰ２は、Ｊ１１〜Ｊ１７によって示される７つの関節、すなわち７つのアクチュエーターを備える。関節Ｊ０１〜Ｊ０７、関節Ｊ１１〜Ｊ１７はそれぞれ、図４に示した矢印に沿って回転する。この回転の回転角を示す情報を、それぞれのアクチュエーターに係るエンコーダーが出力する。
【００４７】
ここで、図５を参照して、ロボット２０が備える第１エンドエフェクターＥＮＤ１について説明する。なお、第２エンドエフェクターＥＮＤ２は、第１エンドエフェクターＥＮＤ１と同様の構造を持つため説明を省略する。図５は、第１エンドエフェクターＥＮＤ１の一例を示す図である。図５に示したように、第１エンドエフェクターＥＮＤ１は、突起部位Ｐを備え、その突起部位Ｐの先端には球ＴＣＰ１が設けられている。
【００４８】
以下では、この先端の球ＴＣＰ１を、先端球ＴＣＰ１と称して説明する。前述のエンドエフェクターの所定部位とは、この先端球を示す。つまり、第１エンドエフェクターＥＮＤ１の所定部位とは、先端球ＴＣＰ１を示す。また、先端球ＴＣＰ１は、先端球ＴＣＰ１の中心の位置が第１マニピュレーターＭＮＰ１のＴＣＰの位置と一致するように設けられる（又は、第１マニピュレーターＭＮＰ１のＴＣＰの位置を先端球ＴＣＰ１の中心の位置と一致するように設定する）。なお、以下では、第２エンドエフェクターＥＮＤ２の所定部位を、先端球ＴＣＰ２と称して説明する。また、以下では、説明の便宜上、先端球ＴＣＰ１の中心の位置を先端球ＴＣＰ１の位置と称しし、先端球ＴＣＰ２の中心の位置を先端球ＴＣＰ２の位置と称して説明する。
【００４９】
突起部位Ｐは、突起部位の長手方向に延びている中心軸ＣＬ２と、第１マニピュレーターＭＮＰ１のフランジの中心を通る中心軸ＣＬ１とがオフセットＯＦだけ離れるように第１エンドエフェクターＥＮＤ１に設けられている。以下では、このように先端球ＴＣＰ１の中心軸ＣＬ２が、第１マニピュレーターＭＮＰ１の中心軸ＣＬ１からオフセットＯＦだけ離れている構造を、オフセット構造と称して説明する。
【００５０】
本実施形態において、第１エンドエフェクターＥＮＤ１は、第１マニピュレーターＭＮＰ１を校正するための専用のエンドエフェクターであるとするが、これに代えて、オフセット構造を有する所定部位を備える他のエンドエフェクターであってもよい。なお、中心軸ＣＬ１は、図５に示した関節Ｊ０７の回転軸であり、アームの先端の回転軸の一例である。また、第２エンドエフェクターＥＮＤ２における中心軸ＣＬ１は、図５に示した関節Ｊ１７の回転軸であり、アームの先端の回転軸の一例である。また、第１エンドエフェクターＥＮＤ１又は第２エンドエフェクターＥＮＤ２はそれぞれ、第１部材の一例である。また、先端球ＴＣＰ１又は先端球ＴＣＰ２はそれぞれ、第１部材の一部の一例である。
【００５１】
図１に戻る。第１アームは、７軸垂直多関節型となっており、支持台と第１マニピュレーターＭＮＰ１と第１エンドエフェクターＥＮＤ１とがアクチュエーターによる連携した動作によって７軸の自由度の動作を行うことができる。なお、第１アームは、６自由度（６軸）以下で動作するものであってもよく、８自由度（８軸）以上で動作するものであってもよい。また、第１アームは、第１動撮像部１１を備える。
第１動撮像部１１は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤ（Charge  Coupled  Device）やＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）等を備えたカメラである。
【００５２】
第１動撮像部１１は、ケーブルによって制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ（Universal  Serial  Bus）等の規格によって行われる。なお、第１動撮像部１１と制御装置３０とは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によって接続される構成であってもよい。第１動撮像部１１は、図１に示したように第１アームを構成する第１マニピュレーターＭＮＰ１の一部に備えられており、第１アームの動きによって移動することが可能である。
【００５３】
第２アームは、７軸垂直多関節型となっており、支持台と第２マニピュレーターＭＮＰ２と第２エンドエフェクターＥＮＤ２とがアクチュエーターによる連携した動作によって６軸の自由度の動作を行うことができる。なお、第２アームは、６自由度（６軸）以下で動作するものであってもよく、８自由度（８軸）以上で動作するものであってもよい。また、第２アームは、第２動撮像部１２を備える。
第２動撮像部１２は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。
【００５４】
第２動撮像部１２は、ケーブルによって制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第２動撮像部１２と制御装置３０とは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によって接続される構成であってもよい。第２動撮像部１２は、図１に示したように第２アームを構成する第２マニピュレーターＭＮＰ２の一部に備えられており、第２アームの動きによって移動することが可能である。
【００５５】
第１固定撮像部２１は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。第１固定撮像部２１は、ケーブルによって制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第２動撮像部１２と制御装置３０とは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によって接続される構成であってもよい。
【００５６】
第２固定撮像部２２は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。第２固定撮像部２２は、ケーブルによって制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第２固定撮像部２２と制御装置３０とは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によって接続される構成であってもよい。
なお、本実施形態において、ロボット２０は、第１動撮像部１１、第２動撮像部１２、第１固定撮像部２１、第２固定撮像部２２の一部又は全部を備えない構成であってもよい。
【００５７】
第１力センサー２３−１は、ロボット２０の第１エンドエフェクターＥＮＤ１と第１マニピュレーターＭＮＰ１との間に備えられている。第１力センサー２３−１は、第１エンドエフェクターＥＮＤ１に作用した力やモーメントを検出する。第１力センサー２３−１は、検出した力やモーメントを示す情報（以下、力センサー情報と称する）を、通信により制御装置３０へ出力する。
【００５８】
第２力センサー２３−２は、第２エンドエフェクターＥＮＤ２と第２マニピュレーターＭＮＰ２との間に備えられている。第２力センサー２３−２は、第２エンドエフェクターＥＮＤ２に作用した力やモーメントを検出する。第２力センサー２３−２は、検出した力やモーメントを示す情報（以下、力センサー情報と称する）を、通信により制御装置３０へ出力する。第１力センサー２３−１と第２力センサー２３−２のうちいずれか一方又は両方により検出された力センサー情報は、例えば、制御装置３０によるロボット２０の力センサー情報に基づく制御に用いられる。なお、以下では、第１力センサー２３−１と第２力センサー２３−２を区別する必要が無い限り、まとめて力センサー２３と称して説明する。また、力センサー情報に含まれる力の大きさやモーメントの大きさを示す値は、力センサーの出力値の一例である。
【００５９】
ロボット２０が備える第１動撮像部１１、第２動撮像部１２、第１固定撮像部２１、第２固定撮像部２２、第１力センサー２３−１、第２力センサー２３−２、第１エンドエフェクターＥＮＤ１、第２エンドエフェクターＥＮＤ２、第１マニピュレーターＭＮＰ１、第２マニピュレーターＭＮＰ２、図示しない複数のアクチュエーターのそれぞれ（以下、ロボット２０が備える各機能部と称する）は、例えば、ロボット２０に内蔵されている制御装置３０とケーブルによって通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、ロボット２０が備える各機能部と制御装置３０とは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によって接続されてもよい。
【００６０】
本実施形態において、ロボット２０が備える各機能部は、ロボット２０に内蔵された制御装置３０から入力された制御信号を取得し、取得した制御信号に基づいて第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正用情報取得動作を行う。
【００６１】
制御装置３０は、ユーザーにより行われたジョグ操作等の操作を受け付け、受け付けられた操作に基づいた動作をロボット２０に行わせる。また、制御装置３０は、ロボット２０に校正用情報取得動作を行わせる。制御装置３０は、ロボット２０が行う校正用情報取得動作に基づいて、ロボット２０が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットを算出する。そして、制御装置３０は、算出されたジョイントオフセットを記憶する。
【００６２】
次に、図６を参照して、制御装置３０のハードウェア構成について説明する。図６は、制御装置３０のハードウェア構成の一例を示す図である。制御装置３０は、例えば、ＣＰＵ（Central  Processing  Unit）３１と、記憶部３２と、入力受付部３３と、通信部３４と、表示部３５を備え、通信部３４を介してロボット２０と通信を行う。これらの構成要素は、バスＢｕｓを介して相互に通信可能に接続されている。ＣＰＵ３１は、記憶部３２に格納された各種プログラムを実行する。
【００６３】
記憶部３２は、例えば、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read−Only  Memory）、ＲＯＭ（Read−Only  Memory）、ＲＡＭ（Random  Access  Memory）等を含み、制御装置３０が処理する各種情報や画像、プログラム等を格納する。なお、記憶部３２は、制御装置３０に内蔵されるものに代えて、ＵＳＢ等のデジタル入出力ポート等によって接続された外付け型の記憶装置でもよい。
【００６４】
入力受付部３３は、例えば、キーボードやマウス、タッチパッド等を備えたティーチングペンダントや、その他の入力装置である。なお、入力受付部３３は、タッチパネルとして表示部と一体に構成されてもよい。
通信部３４は、例えば、ＵＳＢ等のデジタル入出力ポートやイーサネット（登録商標）ポート等を含んで構成される。
表示部３５は、例えば、液晶ディスプレイパネル、あるいは、有機ＥＬ（ElectroLuminescence）ディスプレイパネルである。
【００６５】
次に、図７を参照して、制御装置３０の機能構成について説明する。図７は、制御装置３０の機能構成の一例を示す図である。制御装置３０は、記憶部３２と、入力受付部３３と、表示部３５と、制御部３６を備える。制御部３６が備える機能部のうち一部又は全部は、例えば、ＣＰＵ３１が、記憶部３２に記憶された各種プログラムを実行することで実現される。また、これらの機能部のうち一部または全部は、ＬＳＩ（Large  Scale  Integration）やＡＳＩＣ（Application  Specific  Integrated  Circuit）等のハードウェア機能部であってもよい。
【００６６】
制御部３６は、制御装置３０の全体を制御する。制御部３６は、表示制御部４０と、校正制御部４１を備える。
表示制御部４０は、マニピュレーターの校正処理においてユーザーにより行われる操作を補助するＧＵＩ（Graphical  User  Interface）を生成し、生成されたＧＵＩを表示部３５に表示させる。このＧＵＩには、例えば、マニピュレーターの校正処理を開始させるためのボタンや、ロボット２０をジョグ操作するためのジョグ等が含まれる。
【００６７】
校正制御部４１は、ロボット制御部４２と、力センサー初期化部４３と、力センサー情報取得部４４と、回転角取得部４５と、ジョイントオフセット算出部４６と、誤差評価部４７と、教示部４８を備える。校正制御部４１は、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正に係る処理の全体を制御する。
【００６８】
より具体的には、校正制御部４１は、入力受付部３３により受け付けられた操作（例えば、ＧＵＩを介したジョグ操作）に基づいてロボット制御部４２によりロボット２０を動かす。なお、本実施形態において、校正制御部４１がＧＵＩを介して入力受付部３３から操作を受け付ける場合について説明するが、校正制御部４１がＧＵＩを介さずにスイッチやボタン等を介して操作を受け付ける構成であってもよい。また、このＧＵＩには、ロボット２０を動かすジョグ画面や、第１マニピュレーターＭＮＰ１の校正用情報取得動作を開始させるボタン、第２マニピュレーターＭＮＰ２の校正用情報取得動作を開始させるボタン等が含まれるとする。
【００６９】
ロボット制御部４２は、校正制御部４１からの要求に応じてロボット２０を動作させる。また、ロボット制御部４２は、力センサー情報取得部４４から力センサー２３により検出される力センサー情報を取得し、取得された力センサー情報に基づく制御によりロボット２０を制御する。
力センサー初期化部４３は、力センサー２３により検出される力センサー情報のゼロ点を設定（初期化）する。例えば、力センサー初期化部４３は、力センサー２３から重力以外検出されていない状態において、力センサー２３により検出されている重力の大きさをゼロ点とする。以下では、このような処理を、力センサー２３の初期化と称して説明する。
【００７０】
力センサー情報取得部４４は、力センサー２３により検出される力センサー情報を取得する。そして、力センサー情報取得部４４は、取得された力センサー情報をロボット制御部４２に出力する。
回転角取得部４５は、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターに係るエンコーダーから、回転角を示す情報を取得する。そして、回転角取得部４５は、取得された複数の回転角を示す情報と、その時点での第１マニピュレーターＭＮＰ１の姿勢を示す情報（例えば、姿勢を区別するためのＩＤ等）とを対応付け、校正用情報として記憶部３２に記憶させる。なお、この回転角を示す情報は、第１マニピュレーターＭＮＰ１の姿勢を表す。また、治具Ｊが複数ある場合、校正用情報には、複数の回転角を示す情報に対して先端球ＴＣＰ１が嵌められた治具Ｊの凹部Ｈを示す情報が対応付けられる。治具Ｊの凹部Ｈを示す情報とは、例えば、凹部Ｈそれぞれを区別するためのＩＤ等であるが、凹部Ｈそれぞれを区別することが可能であれば他の情報であってもよい。また、回転角取得部４５は、第１マニピュレーターＭＮＰ１に対するこれらの処理と同様の処理を、第２マニピュレーターＭＮＰ２に対して行う。
【００７１】
ジョイントオフセット算出部４６は、記憶部３２により記憶された校正用情報を取得する。ジョイントオフセット算出部４６は、取得された校正用情報に基づいて、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットを算出する。ジョイントオフセット算出部４６は、算出されたジョイントオフセットを示す情報を記憶部３２に記憶させる。
【００７２】
誤差評価部４７は、記憶部３２に記憶された第１マニピュレーターＭＮＰ１に係る校正用情報を１つずつ読み込み、読み込まれた校正用情報毎に、校正用情報に含まれる回転角を示す情報と、記憶部３２に記憶されたジョイントオフセットを示す情報とに基づく順運動学によって、第１マニピュレーターＭＮＰ１のＴＣＰの位置を算出する。
【００７３】
そして、誤差評価部４７は、校正用情報毎（すなわち、ロボット２０の姿勢毎）に算出されたすべての第１マニピュレーターＭＮＰ１のＴＣＰの位置に基づいて、それら第１マニピュレーターＭＮＰ１のＴＣＰの位置のばらつきの度合いを示す量を算出する。以下では、この一例として、このばらつき度合いを示す量が、標準偏差である場合について説明する。すなわち、誤差評価部４７は、校正用情報毎に算出されたすべての第１マニピュレーターＭＮＰ１のＴＣＰの位置に基づいて、それらの第１マニピュレーターＭＮＰ１のＴＣＰの位置の標準偏差を、第１標準偏差として算出する。なお、ばらつき度合いを示す量は、標準偏差に代えて、例えば、分散や標準誤差等であってもよい。誤差評価部４７は、算出された第１標準偏差が所定値未満であるか否かを判定（評価）する。
【００７４】
また、誤差評価部４７は、記憶部３２に記憶された第２マニピュレーターＭＮＰ２に係る校正用情報を１つずつ読み込み、読み込まれた校正用情報毎に、校正用情報に含まれる回転角を示す情報と、記憶部３２により記憶されたジョイントオフセットを示す情報とに基づく順運動学によって、第２マニピュレーターＭＮＰ２のＴＣＰの位置を算出する。そして、誤差評価部４７は、校正用情報毎（すなわち、ロボット２０の姿勢毎）に算出されたすべての第２マニピュレーターＭＮＰ２のＴＣＰの位置に基づいて、それら第２マニピュレーターＭＮＰ２のＴＣＰの位置の標準偏差を、第２標準偏差として算出する。誤差評価部４７は、算出された第２標準偏差が所定値未満であるか否かを判定（評価）する。
【００７５】
教示部４８は、誤差評価部４７により算出された第１標準偏差及び第２標準偏差の両方が所定値Ｙ１未満であると誤差評価部４７が判定した場合、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットを、記憶部３２に記憶させる。なお、教示部４８は、第１標準偏差が所定値Ｙ１未満であるか否かを判定し、第２標準偏差が所定値Ｙ１とは異なる所定値Ｙ２未満であるか否かを判定する構成であってもよい。
【００７６】
以下、図８を参照して、制御装置３０が第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正を終えるまでの処理について説明する。図８は、制御装置３０が第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正を終えるまでの処理の流れの一例を示すフローチャートである。まず、表示制御部４０は、マニピュレーターの校正処理においてユーザーが行う操作を補助するＧＵＩを表示部３５に表示させる（ステップＳ１００）。
【００７７】
次に、制御部３６は、ロボット２０が備えるマニピュレーター（すなわち、第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２）毎に、ステップＳ１２０からステップＳ２１０までの処理を繰り返し行う（ステップＳ１１０）。以下では、説明の便宜上、最初に第１マニピュレーターＭＮＰ１に対してステップＳ１２０からステップＳ２１０までの処理を行い、次に第２マニピュレーターＭＮＰ２に対してステップＳ１２０からステップＳ２１０までの処理を行う場合について説明する。
【００７８】
そのため、ステップＳ１２０からステップＳ２１０までの処理については、主に第１マニピュレーターＭＮＰ１に対しての処理について説明する。なお、制御部３６は、最初に第２マニピュレーターＭＮＰ２に対してステップＳ１２０からステップＳ２１０までの処理を行い、次に第１マニピュレーターＭＮＰ１に対してステップＳ１２０からステップＳ２１０までの処理を行う構成であってもよい。
【００７９】
ロボット制御部４２は、ステップＳ１００で表示部３５に表示されたＧＵＩを介して入力受付部３３により受け付けられたユーザーからのジョグ操作に基づいて、例えば、第１エンドエフェクターＥＮＤ１の先端球ＴＣＰ１の位置が３つの治具Ｊのうちのいずれかの凹部Ｈに嵌まるまで第１マニピュレーターＭＮＰ１を動かす（ステップＳ１２０）。
【００８０】
ここで、ロボット制御部４２は、ユーザーからのジョグ操作に基づいて、まず治具Ｊ１の凹部Ｈ１に第１エンドエフェクターＥＮＤ１の先端球ＴＣＰ１の位置を嵌めたとして説明する。そして、以下で説明するように、ロボット制御部４２は、第１エンドエフェクターＥＮＤ１の先端球ＴＣＰ１が治具Ｊ１の凹部Ｈ１に嵌められた状態を保持したまま、ステップＳ１３０からステップＳ２００までの処理を行う。また、ロボット制御部４２は、このステップＳ１３０からステップＳ２００までの処理を、治具Ｊ１、Ｊ２、Ｊ３の順に繰り返し行う。なお、この順は、一例に過ぎず、他の順であってもよい。
【００８１】
次に、校正制御部４１は、ステップＳ１００で表示部３５に表示されたＧＵＩを介して第１マニピュレーターＭＮＰ１の校正処理を開始するための操作（例えば、第１マニピュレーターＭＮＰ１の校正処理を開始するボタンのクリック）を入力受付部３３により受け付ける（ステップＳ１３０）。次に、ロボット制御部４２は、治具Ｊ１の凹部Ｈ１に嵌められた先端球ＴＣＰ１を、治具Ｊ１の凹部Ｈ１から所定方向に所定距離だけ移動させる。そして、力センサー初期化部４３は、この時点で第１力センサー２３−１の初期化を行う（ステップＳ１４０）。
【００８２】
なお、所定方向は、例えば、鉛直上方であるが、他の方向であってもよい。また、所定距離は、先端球ＴＣＰ１が治具Ｊ１の凹部Ｈ１から離れる距離であれば良いが、先端球ＴＣＰ１が治具Ｊ１の凹部Ｈ１から離れている間に、振動等によって凹部Ｈ１が設けられた治具Ｊ１の上面に沿った方向に先端球ＴＣＰ１の位置がずれない（もしくは、ずれたとしてもコンプライアンス制御のような力センサー情報に基づく制御によって先端球ＴＣＰ１を凹部Ｈ１の内壁に沿わせることで容易にずれる前の位置に戻せる）程度の距離が望ましい。なお、先端球ＴＣＰ１が治具Ｊの凹部Ｈから離れている間に、治具Ｊの上面に沿った方向に先端球ＴＣＰ１の位置がずれる原因は、先端球ＴＣＰ１の振動の他にも、この段階で各アクチュエーターの回転角を補正するジョイントオフセットが算出されていないことによる先端球ＴＣＰ１の位置を移動させる際の誤差や、力センサー２３の値の振動（増減）等も考えられる。
【００８３】
また、ロボット制御部４２は、治具Ｊ１の凹部Ｈ１に嵌められた先端球ＴＣＰ１を、治具Ｊの凹部Ｈから所定方向に所定距離だけ移動させた後、先端球ＴＣＰ１（又は第１マニピュレーターＭＮＰ１）の振動が収まるまで待機する。より具体的には、ロボット制御部４２は、この待機において、所定時間が経過するまで待機し、その後、ステップＳ１５０の処理に遷移するが、これに代えて、力センサー２３によって第１マニピュレーターＭＮＰ１の振動の単位時間当たりの振動数を測定し、測定された振動数が予め決められた閾値以下になるまで待機する構成等であってもよい。
【００８４】
次に、ロボット制御部４２は、先端球ＴＣＰ１を再び治具Ｊ１の凹部Ｈ１に嵌めるためにステップＳ１４０における所定方向と逆方向に移動させる。この際、ロボット制御部４２は、力センサー情報取得部４４から力センサー情報を取得し、取得された力センサー情報に基づく制御により、先端球ＴＣＰ１が治具Ｊ１の凹部Ｈ１に嵌まるまで先端球ＴＣＰ１を移動させる（ステップＳ１５０）。先端球ＴＣＰ１の位置を治具Ｊ１の凹部Ｈ１に嵌めた後、ロボット制御部４２は、凹部Ｈ１に嵌められた先端球ＴＣＰ１に対して、鉛直下方に所定の大きさの力を加える。そして、ロボット制御部４２は、ステップＳ１４０における所定方向の逆方向に所定の大きさの力を加えた状態を保持したまま、ステップＳ１６０からステップＳ２００までの処理を行う。
【００８５】
次に、回転角取得部４５は、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれに係るエンコーダーから、回転角を示す情報を取得する（ステップＳ１６０）。なお、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれに係るエンコーダーから回転角を示す情報を取得する際、ロボット制御部４２は、第１力センサー２３−１によって第１マニピュレーターＭＮＰ１の振動の単位時間当たりの振動数を測定し、測定された振動数が予め決められた閾値以下になるまで待機する。これにより、ロボット制御部４２は、各アクチュエーターの回転角が、第１マニピュレーターＭＮＰ１の振動によって変化してしまうことを抑制することができる。次に、回転角取得部４５は、ステップＳ１６０で取得された回転角を示す情報に、現在の第１マニピュレーターＭＮＰ１の姿勢を示す情報を対応付けた校正用情報を記憶部３２に記憶させる（ステップＳ１７０）。次に、校正制御部４１は、記憶部３２に記憶された校正用情報の数が予め定められた規定数以上であるか否かを判定する（ステップＳ１８０）。
【００８６】
ここで、この規定数は、ジョイントオフセット算出部４６がジョイントオフセットを算出する時に用いる連立方程式の未知数の数以上であれば良く、この一例においては、１３であるとする。なお、ステップＳ１９０で変更される姿勢によって、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターがそれぞれ一定角以上動くように校正用情報を取得するのが望ましい。
【００８７】
ステップＳ１８０で、記憶部３２に記憶された校正用情報の数が予め定められた規定数以上ではないと校正制御部４１が判定した場合（ステップＳ１８０−Ｎｏ）、ロボット制御部４２は、第１マニピュレーターＭＮＰ１の姿勢を次の姿勢に変更するようにロボット２０を制御し（ステップＳ１９０）、その後、変更された第１マニピュレーターＭＮＰ１の姿勢においてステップＳ１６０からステップＳ１８０までの処理を行う。
【００８８】
ここで、ロボット制御部４２は、第１マニピュレーターＭＮＰ１の姿勢を次の姿勢に変更する際、第１マニピュレーターＭＮＰ１の姿勢を示す情報を順に読み込み、読み込まれた順に第１マニピュレーターＭＮＰ１の姿勢を変更する構成であってもよく、第１マニピュレーターＭＮＰ１の姿勢をランダムに変更する構成等であってもよい。以下では、ロボット制御部４２が記憶部３２に記憶された姿勢を示す情報を順に読み込み、読み込まれた順に第１マニピュレーターＭＮＰ１の姿勢を変更する場合について説明する。なお、第１マニピュレーターＭＮＰ１又は第２マニピュレーターＭＮＰ２の姿勢のそれぞれは、アームの姿勢の一例である。また、ロボット制御部４２は、第１姿勢に含まれる姿勢へ第１マニピュレーターＭＮＰ１の姿勢を変更する際、コンプライアンス制御により姿勢を変更する。これにより、ロボット制御部４２は、第１エンドエフェクターＥＮＤ１や治具Ｊ、第１マニピュレーターＭＮＰ１を構成する各部材を破壊してしまうことなく、第１マニピュレーターＭＮＰ１の姿勢を変更することができる。
【００８９】
ここで、図９を参照して、ステップＳ１９０でロボット制御部４２が第１マニピュレーターＭＮＰ１の姿勢を変更する処理について説明する。図９は、第１マニピュレーターＭＮＰ１の姿勢を例示する図である。図９（Ａ）には、第１マニピュレーターＭＮＰ１の姿勢の一例を示す。図９（Ｂ）には、第１マニピュレーターＭＮＰ１の姿勢の他の例を示す。図９（Ｃ）には、第１マニピュレーターＭＮＰ１の姿勢の更に他の例を示す。
【００９０】
ロボット制御部４２は、先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた状態を保持しながら、例えば、図９（Ａ）に示した第１マニピュレーターＭＮＰ１の姿勢から、図９（Ｂ）や図９（Ｃ）に示した第１マニピュレーターＭＮＰ１の姿勢へと第１マニピュレーターＭＮＰ１の姿勢を変更する。このように姿勢を変更することで、先端球ＴＣＰ１の中心に設定されている第１マニピュレーターＭＮＰ１のＴＣＰの位置を固定位置Ｘから変えることなく、第１マニピュレーターＭＮＰ１の姿勢毎に異なる複数の回転角であって第１マニピュレーターＭＮＰ１に備えられた複数のアクチュエーターそれぞれの回転角を取得することができる。
【００９１】
一方、ステップＳ１８０で記憶部３２に記憶された校正用情報の数が予め定められた規定数以上であると校正制御部４１が判定した場合（ステップＳ１８０−Ｙｅｓ）、ロボット制御部４２は、治具Ｊ１〜治具Ｊ３までのすべての治具についてステップＳ１４０からステップＳ１９０までの処理を繰り返し行ったか否かを判定する（ステップＳ２００）。なお、ステップＳ１４０〜ステップＳ１９０までの処理は、上述した校正用情報取得動作を第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２のそれぞれに行わせる処理の一例である。
【００９２】
治具Ｊ１〜治具Ｊ３までのすべての治具についてステップＳ１４０からステップＳ１９０までの処理を繰り返し行っていないと判定した場合（ステップＳ２００−Ｎｏ）、ロボット制御部４２は、記憶部３２から治具Ｊ１、Ｊ２、Ｊ３それぞれの上面に設けられた凹部Ｈ１〜Ｈ３の相対的な位置を示す情報を読み込む。そして、ロボット制御部４２は、読み込まれた凹部Ｈ１〜Ｈ３の相対的な位置を示す情報に基づいて、先端球ＴＣＰ１が次の治具（この一例では、治具Ｊ２）の凹部Ｈに嵌まるまで移動させる（ステップＳ２１０）。その後、力センサー初期化部４３は、ステップＳ１４０に戻り、第１力センサー２３−１の初期化を行う。
【００９３】
一方、治具Ｊ１〜治具Ｊ３までのすべての治具についてステップＳ１４０からステップＳ１９０までの処理を繰り返し行っていると判定した場合（ステップＳ２００−Ｙｅｓ）、ロボット制御部４２は、ステップＳ１１０に戻り、第２マニピュレーターＭＮＰ２に対して再びステップＳ１２０からステップＳ２１０までの処理を行う（ステップＳ２１５）。そして、第２マニピュレーターＭＮＰ２に対するこれらの処理が終わった後、ジョイントオフセット算出部４６は、記憶部３２に記憶された校正用情報をすべて読み込む。また、ジョイントオフセット算出部４６は、凹部Ｈ１〜Ｈ３の相対的な位置を示す情報を読み込む。そして、ジョイントオフセット算出部４６は、読み込まれた校正用情報及び凹部Ｈ１〜Ｈ３の相対的な位置を示す情報に基づいて、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２のそれぞれに備えられた複数のアクチュエーターに係るジョイントオフセットを算出し、算出されたジョイントオフセットを記憶部３２に記憶させる（ステップＳ２２０）。
【００９４】
なお、ステップＳ２２０におけるジョイントオフセットを示す情報の記憶部３２への記憶は、ステップＳ２３０における処理においてジョイントオフセットを用いるための一時的な記憶であり、前述のジョイントオフセットの教示とは異なる。
【００９５】
ここで、ジョイントオフセット算出部４６によるジョイントオフセットの算出処理について説明する。順運動学では、第１マニピュレーターＭＮＰ１に係る校正用情報毎（すなわち、凹部Ｈそれぞれの位置と、第１マニピュレーターＭＮＰ１の姿勢との組み合わせ毎）に、第１マニピュレーターＭＮＰ１のＴＣＰの位置及び姿勢を算出する方程式が得られる。これら第１マニピュレーターＭＮＰ１のＴＣＰの位置及び姿勢を算出する方程式の入力パラメーターは、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転角である。
【００９６】
また、これら第１マニピュレーターＭＮＰ１のＴＣＰの位置及び姿勢を算出する方程式の未知数は、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセット（７つのジョイントオフセット）と、凹部Ｈ１〜Ｈ３それぞれにおける第１マニピュレーターＭＮＰ１のＴＣＰの位置を示す座標（９つの座標値）と、第１マニピュレーターＭＮＰ１のＴＣＰの姿勢を示す角度（３つの角度値）である。なお、ジョイントオフセット算出部４６は、これらの第１マニピュレーターＭＮＰ１のＴＣＰの位置を算出する方程式からすべての未知数を算出する必要は無く、例えば、第１マニピュレーターＭＮＰ１のＴＣＰの位置に関して機械的に精度を出す場合、第１マニピュレーターＭＮＰ１のＴＣＰの位置を算出する必要は無い。
【００９７】
ここで、凹部Ｈ１における第１マニピュレーターＭＮＰ１のＴＣＰの位置（すなわち、固定位置Ｘ１）と、凹部Ｈ２における第１マニピュレーターＭＮＰ１のＴＣＰの位置（すなわち、固定位置Ｘ２）と、凹部Ｈ３における第１マニピュレーターＭＮＰ１のＴＣＰの位置（すなわち、固定位置Ｘ３）とは、凹部Ｈ１〜Ｈ３の相対的な位置を示す情報によって、凹部Ｈ１〜Ｈ３のうちいずれか１つの位置によって表すことができる。すなわち、凹部Ｈ１〜Ｈ３それぞれにおける第１マニピュレーターＭＮＰ１のＴＣＰの位置を示す座標は、３つ座標値によって表すことができる。本実施形態において、凹部Ｈ１における第１マニピュレーターＭＮＰ１のＴＣＰの位置と、凹部Ｈ２における第１マニピュレーターＭＮＰ１のＴＣＰの位置と、凹部Ｈ３における第１マニピュレーターＭＮＰ１のＴＣＰの位置とは、固定位置Ｘ１の座標によって表すとするが、固定位置Ｘ２や固定位置Ｘ３の位置によって表してもよい。
【００９８】
一方、順運動学では、第２マニピュレーターＭＮＰ２に係る校正用情報毎（すなわち、凹部Ｈそれぞれの位置と、第２マニピュレーターＭＮＰ２の姿勢との組み合わせ毎）に、第２マニピュレーターＭＮＰ２のＴＣＰの位置及び姿勢を算出する方程式が得られる。これら第２マニピュレーターＭＮＰ２のＴＣＰの位置及び姿勢を算出する方程式の入力パラメーターは、第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターそれぞれの回転角である。
【００９９】
また、これら第２マニピュレーターＭＮＰ２のＴＣＰの位置及び姿勢を算出する方程式の未知数は、第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセット（７つのジョイントオフセット）と、凹部Ｈ１〜Ｈ３それぞれにおける第２マニピュレーターＭＮＰ２のＴＣＰの位置を示す座標（９つの座標値）と、第２マニピュレーターＭＮＰ２のＴＣＰの姿勢を示す角度（３つの座標値）である。なお、ジョイントオフセット算出部４６は、これらの第２マニピュレーターＭＮＰ２のＴＣＰの位置を算出する方程式からすべての未知数を算出する必要は無く、例えば、第２マニピュレーターＭＮＰ２のＴＣＰの位置に関して機械的に精度を出す場合、第２マニピュレーターＭＮＰ２のＴＣＰの位置を算出する必要は無い。
【０１００】
ここで、第１マニピュレーターＭＮＰ１の場合と同様に、凹部Ｈ１における第２マニピュレーターＭＮＰ２のＴＣＰの位置（すなわち、固定位置Ｘ１）と、凹部Ｈ２における第２マニピュレーターＭＮＰ２のＴＣＰの位置（すなわち、固定位置Ｘ２）と、凹部Ｈ３における第２マニピュレーターＭＮＰ２のＴＣＰの位置（すなわち、固定位置Ｘ３）とは、凹部Ｈ１〜Ｈ３の相対的な位置を示す情報によって、凹部Ｈ１〜Ｈ３のうちいずれか１つの位置によって表すことができる。すなわち、凹部Ｈ１〜Ｈ３それぞれにおける第２マニピュレーターＭＮＰ２のＴＣＰの位置を示す座標は、３つの座標値によって表すことができる。
【０１０１】
本実施形態において、凹部Ｈ１における第２マニピュレーターＭＮＰ２のＴＣＰの位置と、凹部Ｈ２における第２マニピュレーターＭＮＰ２のＴＣＰの位置と、凹部Ｈ３における第２マニピュレーターＭＮＰ２のＴＣＰの位置とは、固定位置Ｘ１によって表すとするが、固定位置Ｘ２や固定位置Ｘ３によって表してもよい。ただし、第１マニピュレーターＭＮＰ１のＴＣＰの位置と、第２マニピュレーターＭＮＰ２のＴＣＰの位置とは、連立方程式を解く都合上、固定位置Ｘ１〜Ｘ３のうちのいずれか共通化されていなければならない。
【０１０２】
このように、第１マニピュレーターＭＮＰ１に係る複数の方程式と、第２マニピュレーターＭＮＰ２に係る複数の方程式とに含まれるＴＣＰの位置は、同じ変数によって表されている。これを利用し、第１マニピュレーターＭＮＰ１に係る複数の方程式と、第２マニピュレーターＭＮＰ２に係る複数の方程式による連立方程式を最急降下法やニュートン法、レーベンバーグ・マーカート法等のような非線形最適化計算によって解くことによって、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットと、第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットとの両方を算出することができる。
【０１０３】
従って、ジョイントオフセット算出部４６は、記憶部３２から読み込まれた校正用情報に基づいて、第１マニピュレーターＭＮＰ１に係る複数の方程式と、第２マニピュレーターＭＮＰ２に係る複数の方程式とを導出し、導出された方程式に基づいて連立方程式を一括して最急降下法やニュートン法、レーベンバーグ・マーカート法等のような非線形最適化計算によって解くことで、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットと、第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットとの両方を算出する。
【０１０４】
これにより、ジョイントオフセット算出部４６は、第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２との協調作業の精度を向上させることができる。協調作業とは、第１マニピュレーターＭＮＰ１のＴＣＰの位置と、第２マニピュレーターＭＮＰ２のＴＣＰの位置とをそれぞれ同じ位置に移動させ、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の両方により行う作業である。
【０１０５】
また、ロボットシステム１は、マニピュレーターのＴＣＰの位置を相対的な位置が既知である複数点（この一例では、３点であるが、２点以上であればよい）のそれぞれに固定して得られた校正用情報に基づく上記の連立方程式を一括して解くことによってジョイントオフセットを算出する方法を用いることで、マニピュレーターの根元（エンドエフェクターが備えられる側とは反対側の端部）のアクチュエーターの回転角を補正するジョイントオフセットが不定となってしまうことを回避することができ、マニピュレーターが備える複数のアクチュエーターの回転角それぞれに対するジョイントオフセットをすべて算出することができる。
【０１０６】
次に、誤差評価部４７は、ステップＳ２２０で記憶部３２に記憶された第１マニピュレーターＭＮＰ１に係るジョイントオフセットを示す情報を記憶部３２から読み込む。そして、誤差評価部４７は、ステップＳ１７０で算出された第１マニピュレーターＭＮＰ１に係る校正用情報を記憶部３２から１つずつ読み込み、読み込まれた校正用情報毎に、校正用情報に含まれる回転角と、読み込まれたジョイントオフセットとに基づく順運動学により、第１マニピュレーターＭＮＰ１のＴＣＰの位置を算出する。そして、誤差評価部４７は、校正用情報毎（すなわち、第１マニピュレーターＭＮＰ１の姿勢毎）に算出されたすべての第１マニピュレーターＭＮＰ１のＴＣＰの位置に基づいて、それらのＴＣＰの位置の標準偏差を、第１標準偏差として算出する。
【０１０７】
また、誤差評価部４７は、ステップＳ２２０で記憶部３２に記憶された第２マニピュレーターＭＮＰ２に係るジョイントオフセットを示す情報を記憶部３２から読み込む。そして、誤差評価部４７は、ステップＳ１７０で算出された第２マニピュレーターＭＮＰ２に係る校正用情報を記憶部３２から１つずつ読み込み、読み込まれた校正用情報毎に、校正用情報に含まれる回転角と、読み込まれたジョイントオフセットとに基づく順運動学により、第２マニピュレーターＭＮＰ２のＴＣＰの位置を算出する。そして、誤差評価部４７は、校正用情報毎（すなわち、第２マニピュレーターＭＮＰ２の姿勢毎）に算出されたすべての第２マニピュレーターＭＮＰ２のＴＣＰの位置に基づいて、それらのＴＣＰの位置の標準偏差を、第２標準偏差として算出する（ステップＳ２３０）。
【０１０８】
次に、誤差評価部４７は、ステップＳ２３０で算出された第１標準偏差と、ステップＳ２３０で算出された第２標準偏差との両方がそれぞれ所定値未満であるか否かを判定（評価）する（ステップＳ２４０）。ステップＳ２３０で算出された第１標準偏差と、ステップＳ２３０で算出された第２標準偏差とのうちいずれか一方が所定値未満ではないと判定した場合（ステップＳ２４０−Ｎｏ）、ロボット制御部４２は、ステップＳ１１０に戻り、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２に係る校正用情報を取得し直すことで、ジョイントオフセットを算出し直す。
【０１０９】
一方、ステップＳ２３０で算出された第１標準偏差と、ステップＳ２３０で算出された第２標準偏差との両方が所定値Ｙ１未満であると誤差評価部４７が判定した場合（ステップＳ２４０−Ｙｅｓ）、教示部４８は、ステップＳ２２０で算出されたジョイントオフセットを記憶部３２に記憶させる（ステップＳ２５０）。なお、本実施形態では、教示部４８は、ステップＳ２３０で算出された第１標準偏差と、ステップＳ２３０で算出された第２標準偏差との両方が所定値Ｙ１未満であるか否かを判定する構成であるとしたが、これに代えて、ステップＳ２３０で算出された第１標準偏差と、ステップＳ２３０で算出された第２標準偏差とのうちいずれか一方が所定値Ｙ１未満であると誤差評価部４７が判定した場合、ステップＳ２２０で算出されたジョイントオフセットを記憶部３２に記憶させる（教示する）構成であってもよい。
【０１１０】
なお、ロボット制御部４２は、ステップＳ１５０からステップＳ２１０までの処理において、先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた状態、すなわち接触させた状態を保持したまま第１マニピュレーターＭＮＰ１の姿勢を変更し、各アクチュエーターの回転角を示す情報を取得したが、これに代えて、凹部Ｈと先端球ＴＣＰ１とが所定の距離だけ離れた状態を保持したまま第１マニピュレーターＭＮＰ１の姿勢を変更し、各アクチュエーターの回転角を示す情報を取得する構成であってもよい。この場合、ロボット制御部４２は、先端球ＴＣＰ１と凹部Ｈとの相対位置関係が変化しないように（すなわち、相対位置関係を固定して）、第１マニピュレーターＭＮＰ１の姿勢を変更する。
【０１１１】
また、ロボット制御部４２は、ステップＳ１５０からステップＳ２１０までの処理において、先端球ＴＣＰ２を治具Ｊの凹部Ｈに嵌めた状態、すなわち接触させた状態を保持したまま第２マニピュレーターＭＮＰ２の姿勢を変更し、各アクチュエーターの回転角を示す情報を取得したが、これに代えて、凹部Ｈと先端球ＴＣＰ２とが所定の距離だけ離れた状態を保持したまま第２マニピュレーターＭＮＰ２の姿勢を変更し、各アクチュエーターの回転角を示す情報を取得する構成であってもよい。この場合、ロボット制御部４２は、先端球ＴＣＰ２と凹部Ｈとの相対位置関係が変化しないように（すなわち、相対位置関係を固定して）、第２マニピュレーターＭＮＰ２の姿勢を変更する。先端球ＴＣＰ１（又は先端球ＴＣＰ２）と凹部Ｈとの相対位置関係が固定されている際の先端球ＴＣＰ１（又は先端球ＴＣＰ２）と凹部Ｈとの間の距離は、１の距離の一例である。
【０１１２】
以上説明したように、本実施形態におけるロボットシステム１は、複数（この一例において、３つ）の治具Ｊのそれぞれ毎に、先端球ＴＣＰ１（又は先端球ＴＣＰ２）と治具Ｊとが１の距離となるように移動させた状態で、少なくとも力センサー２３から取得される力センサー情報に基づいて第１マニピュレーターＭＮＰ１（又は第２マニピュレーターＭＮＰ２）を複数の姿勢にすることにより第１マニピュレーターＭＮＰ１（又は第２マニピュレーターＭＮＰ２）を校正する。これにより、ロボットシステム１は、容易にマニピュレーターの校正を行うことができる。
【０１１３】
また、ロボットシステム１は、複数の治具Ｊのそれぞれ毎に、先端球ＴＣＰ１（先端球ＴＣＰ２）と治具Ｊとが略０の距離となるように移動させた状態で、少なくとも力センサー２３から取得される力センサー情報に基づいて第１マニピュレーターＭＮＰ１（第２マニピュレーターＭＮＰ２）を複数の姿勢にすることにより第１マニピュレーターＭＮＰ１（第２マニピュレーターＭＮＰ２）を校正する。これにより、ロボットシステム１は、先端球ＴＣＰ１（先端球ＴＣＰ２）を治具Ｊに接触させた状態を保ったまま、第１マニピュレーターＭＮＰ１（第２マニピュレーターＭＮＰ２）に１以上の姿勢を取らせ、第１マニピュレーターＭＮＰ１（第２マニピュレーターＭＮＰ２）を校正することができる。
【０１１４】
また、ロボットシステム１は、複数の治具Ｊのそれぞれ毎に、先端球ＴＣＰ１（先端球ＴＣＰ２）を治具Ｊと１の距離となるように移動させた後、先端球ＴＣＰ１（先端球ＴＣＰ２）を治具Ｊと１の距離とは異なる他の距離に移動させて力センサー２３の初期化を行い、先端球ＴＣＰ１（先端球ＴＣＰ２）を治具Ｊと１の距離となるように移動させる。。これにより、ロボットシステム１は、力センサー２３に加わる重力等の外力による誤差を抑制することができる。
【０１１５】
また、ロボットシステム１は、力センサー２３の初期化を行う際、第１エンドエフェクターＥＮＤ１（又は第２エンドエフェクターＥＮＤ２）の振動が収まるまで待機した後、力センサー２３の初期化を行い、先端球ＴＣＰ１（先端球ＴＣＰ２）を治具Ｊと１の距離となるように移動させる。これにより、ロボットシステム１は、先端球ＴＣＰ１（又は先端球ＴＣＰ２）の振動により生じる力センサー２３の初期化における誤差を抑制することができる。
【０１１６】
また、ロボットシステム１は、先端球ＴＣＰ１（先端球ＴＣＰ２）を治具Ｊの凹部Ｈに接触させた状態で第１マニピュレーターＭＮＰ１（第２マニピュレーターＭＮＰ２）を複数の姿勢にする。これにより、ロボットシステム１は、先端球ＴＣＰ１（又は先端球ＴＣＰ２）の位置を固定したまま第１マニピュレーターＭＮＰ１（又は第２マニピュレーターＭＮＰ２）を複数の姿勢にし、第１マニピュレーターＭＮＰ１（又は第２マニピュレーターＭＮＰ２）を制御するためのアクチュエーターの回転角をジョイントオフセットにより校正することができる。
【０１１７】
また、ロボットシステム１は、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２を一括で校正する。これにより、ロボットシステム１は、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２による協調作業の精度を向上させることができる。
【０１１８】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【０１１９】
また、以上に説明した装置（例えば、ロボットシステム１の制御装置３０）における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１２０】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【０１２１】
１  ロボットシステム、１１  第１動撮像部、１２  第２動撮像部、２０  ロボット、２１  第１固定撮像部、２２  第２固定撮像部、２３  力センサー、２３−１  第１力センサー、２３−２  第２力センサー、３０  制御装置、３１  ＣＰＵ、３２  記憶部、３３  入力受付部、３４  通信部、３５  表示部、３６  制御部、４０  表示制御部、４１  校正制御部、４２  ロボット制御部、４３  力センサー初期化部、４４  力センサー情報取得部、４５  回転角取得部、４６  ジョイントオフセット算出部、４７  誤差評価部、４８  教示部
【図１】
2016120554.tif 000003
【図２】
2016120554.tif 000004
【図３】
2016120554.tif 000005
【図４】
2016120554.tif 000006
【図５】
2016120554.tif 000007
【図６】
2016120554.tif 000008
【図７】
2016120554.tif 000009
【図８】
2016120554.tif 000010
【図９】
2016120554.tif 000011