(57)【要約】【課題】容易にマニピュレーターの校正を行うことができるロボットを提供すること。【解決手段】ロボットは、アームと、力センサーとを備え、アームの先端の回転軸上とは異なる位置に１の部位を有する第１部材の１の部位を第２部材と１の距離となるように移動させた後に、少なくとも力センサーの出力値に基づいてアームを複数の姿勢にすることにより校正する。【選択図】図７
2016120557.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）等の規格によって行われる。なお、第１動撮像部１１と制御装置３０とは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によって接続される構成であってもよい。第１動撮像部１１は、図１に示したように第１アームを構成する第１マニピュレーターＭＮＰ１の一部に備えられており、第１アームの動きによって移動することが可能である。
【００５１】
第２アームは、７軸垂直多関節型となっており、支持台と第２マニピュレーターＭＮＰ２と第２エンドエフェクターＥＮＤ２とがアクチュエーターによる連携した動作によって６軸の自由度の動作を行うことができる。なお、第２アームは、６自由度（６軸）以下で動作するものであってもよく、８自由度（８軸）以上で動作するものであってもよい。また、第２アームは、第２動撮像部１２を備える。
第２動撮像部１２は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。
【００５２】
第２動撮像部１２は、ケーブルによって制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第２動撮像部１２と制御装置３０とは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によって接続される構成であってもよい。第２動撮像部１２は、図１に示したように第２アームを構成する第２マニピュレーターＭＮＰ２の一部に備えられており、第２アームの動きによって移動することが可能である。
【００５３】
第１固定撮像部２１は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。第１固定撮像部２１は、ケーブルによって制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第２動撮像部１２と制御装置３０とは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によって接続される構成であってもよい。
【００５４】
第２固定撮像部２２は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。第２固定撮像部２２は、ケーブルによって制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第２固定撮像部２２と制御装置３０とは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によって接続される構成であってもよい。
なお、本実施形態において、ロボット２０は、第１動撮像部１１、第２動撮像部１２、第１固定撮像部２１、第２固定撮像部２２の一部又は全部を備えない構成であってもよい。
【００５５】
第１力センサー２３−１は、ロボット２０の第１エンドエフェクターＥＮＤ１と第１マニピュレーターＭＮＰ１との間に備えられている。第１力センサー２３−１は、第１エンドエフェクターＥＮＤ１に作用した力やモーメントを検出する。第１力センサー２３−１は、検出した力やモーメントを示す情報（以下、力センサー情報と称する）を、通信により制御装置３０へ出力する。
【００５６】
第２力センサー２３−２は、第２エンドエフェクターＥＮＤ２と第２マニピュレーターＭＮＰ２との間に備えられている。第２力センサー２３−２は、第２エンドエフェクターＥＮＤ２に作用した力やモーメントを検出する。第２力センサー２３−２は、検出した力やモーメントを示す情報（以下、力センサー情報と称する）を、通信により制御装置３０へ出力する。第１力センサー２３−１と第２力センサー２３−２のうちいずれか一方又は両方により検出された力センサー情報は、例えば、制御装置３０によるロボット２０の力制御等に用いられる。なお、以下では、第１力センサー２３−１と第２力センサー２３−２を区別する必要が無い限り、まとめて力センサー２３と称して説明する。なお、力センサー情報に含まれる力の大きさやモーメントの大きさを示す値は、力センサーの出力値の一例である。
【００５７】
ロボット２０が備える第１動撮像部１１、第２動撮像部１２、第１固定撮像部２１、第２固定撮像部２２、第１力センサー２３−１、第２力センサー２３−２、第１エンドエフェクターＥＮＤ１、第２エンドエフェクターＥＮＤ２、第１マニピュレーターＭＮＰ１、第２マニピュレーターＭＮＰ２、図示しない複数のアクチュエーターのそれぞれ（以下、ロボット２０が備える各機能部と称する）は、例えば、ロボット２０に内蔵されている制御装置３０とケーブルによって通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、ロボット２０が備える各機能部と制御装置３０とは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によって接続されてもよい。
【００５８】
本実施形態において、ロボット２０が備える各機能部は、ロボット２０に内蔵された制御装置３０から入力された制御信号を取得し、取得した制御信号に基づいて第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正用情報取得動作を行う。
【００５９】
制御装置３０は、ユーザーにより行われたジョグ操作等の操作を受け付け、受け付けられた操作に基づいた動作をロボット２０に行わせる。また、制御装置３０は、ロボット２０に校正用情報取得動作を行わせる。制御装置３０は、ロボット２０が行う校正用情報取得動作に基づいて、ロボット２０が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットを算出する。そして、制御装置３０は、算出されたジョイントオフセットを記憶する。
【００６０】
次に、図６を参照して、制御装置３０のハードウェア構成について説明する。図６は、制御装置３０のハードウェア構成の一例を示す図である。制御装置３０は、例えば、ＣＰＵ３１と、記憶部３２と、入力受付部３３と、通信部３４と、表示部３５を備え、通信部３４を介してロボット２０と通信を行う。これらの構成要素は、バスＢｕｓを介して相互に通信可能に接続されている。ＣＰＵ３１は、記憶部３２に格納された各種プログラムを実行する。
【００６１】
記憶部３２は、例えば、ＨＤＤ（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）を生成し、生成されたＧＵＩを表示部３５に表示させる。このＧＵＩには、例えば、マニピュレーターの校正処理を開始させるためのボタンや、ロボット２０をジョグ操作するためのジョグ等が含まれる。
【００６５】
校正制御部４１は、ロボット制御部４２と、力センサー初期化部４３と、力センサー情報取得部４４と、回転角取得部４５と、ジョイントオフセット算出部４６と、誤差評価部４７と、教示部４８を備える。校正制御部４１は、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正に係る処理の全体を制御する。
【００６６】
より具体的には、校正制御部４１は、入力受付部３３により受け付けられた操作（例えば、ＧＵＩを介したジョグ操作）に基づいてロボット制御部４２によりロボット２０を動かす。なお、本実施形態において、校正制御部４１がＧＵＩを介して入力受付部３３から操作を受け付ける場合について説明するが、校正制御部４１がＧＵＩを介さずにスイッチやボタン等を介して操作を受け付ける構成であってもよい。また、このＧＵＩには、ロボット２０を動かすジョグ画面や、第１マニピュレーターＭＮＰ１の校正用情報取得動作を開始させるボタン、第２マニピュレーターＭＮＰ２の校正用情報取得動作を開始させるボタン等が含まれる。
【００６７】
ロボット制御部４２は、校正制御部４１からの要求に応じてロボット２０を動作させる。また、ロボット制御部４２は、力センサー情報取得部４４から力センサー２３により検出される力センサー情報を取得し、取得された力センサー情報に基づいた制御によりロボット２０を制御する。力センサー情報に基づいた制御とは、例えば、インピーダンス制御等の力制御を示す。
力センサー初期化部４３は、力センサー２３により検出される力センサー情報のゼロ点を設定（初期化）する。例えば、力センサー初期化部４３は、力センサー２３から重力以外検出されていない状態において、力センサー２３により検出されている重力の大きさをゼロ点とする。以下では、このような処理を、力センサー２３の初期化と称して説明する。
【００６８】
力センサー情報取得部４４は、力センサー２３により検出される力センサー情報を取得する。そして、力センサー情報取得部４４は、取得された力センサー情報をロボット制御部４２に出力する。
回転角取得部４５は、ロボット２０が備える複数のアクチュエーターに係るエンコーダーから、回転角を示す情報を取得する。そして、回転角取得部４５は、取得された複数の回転角を示す情報と、その時点でのロボット２０の姿勢を示す情報（例えば、姿勢を区別するためのＩＤ等）とを対応付け、校正用情報として記憶部３２に記憶させる。
【００６９】
ジョイントオフセット算出部４６は、記憶部３２により記憶された校正用情報を取得する。ジョイントオフセット算出部４６は、取得された校正用情報に基づいて、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットを算出する。ジョイントオフセット算出部４６は、算出されたジョイントオフセットを示す情報を記憶部３２に記憶させる。
【００７０】
誤差評価部４７は、記憶部３２に記憶された校正用情報を１つずつ読み込み、読み込まれた校正用情報毎に、校正用情報に含まれる回転角を示す情報と、記憶部３２に記憶されたジョイントオフセットを示す情報とに基づく順運動学によって、第１マニピュレーターＭＮＰ１のＴＣＰの位置を算出する。
【００７１】
そして、誤差評価部４７は、校正用情報毎（すなわち、ロボット２０の姿勢毎）に算出されたすべての第１マニピュレーターＭＮＰ１のＴＣＰの位置に基づいて、それら第１マニピュレーターＭＮＰ１のＴＣＰの位置のばらつきの度合いを示す量を算出する。以下では、この一例として、このばらつき度合いを示す量が、標準偏差である場合について説明する。すなわち、誤差評価部４７は、校正用情報毎に算出されたすべての第１マニピュレーターＭＮＰ１のＴＣＰの位置に基づいて、それらの第１マニピュレーターＭＮＰ１のＴＣＰの位置の標準偏差を、第１標準偏差として算出する。なお、ばらつき度合いを示す量は、標準偏差に代えて、例えば、分散や標準誤差等であってもよい。誤差評価部４７は、算出された第１標準偏差が所定値未満であるか否かを判定（評価）する。
【００７２】
また、誤差評価部４７は、記憶部３２に記憶された校正用情報を１つずつ読み込み、読み込まれた校正用情報毎に、校正用情報に含まれる回転角を示す情報と、記憶部３２により記憶されたジョイントオフセットを示す情報とに基づく順運動学によって、第２マニピュレーターＭＮＰ２のＴＣＰの位置を算出する。そして、誤差評価部４７は、校正用情報毎（すなわち、ロボット２０の姿勢毎）に算出されたすべての第２マニピュレーターＭＮＰ２のＴＣＰの位置に基づいて、それら第２マニピュレーターＭＮＰ２のＴＣＰの位置の標準偏差を、第２標準偏差として算出する。誤差評価部４７は、算出された第２標準偏差が所定値未満であるか否かを判定（評価）する。
【００７３】
教示部４８は、誤差評価部４７により算出された第１標準偏差及び第２標準偏差の両方が所定値Ｘ１未満であると誤差評価部４７が判定した場合、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットを、記憶部３２に記憶させる。なお、教示部４８は、第１標準偏差が所定値Ｘ１未満であるか否かを判定し、第２標準偏差が所定値Ｘ１とは異なる所定値Ｘ２未満であるか否かを判定する構成であってもよい。
【００７４】
以下、図８を参照して、制御装置３０が第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正を終えるまでの処理について説明する。図８は、制御装置３０が第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正を終えるまでの処理の流れの一例を示すフローチャートである。まず、表示制御部４０は、マニピュレーターの校正処理においてユーザーが行う操作を補助するＧＵＩを表示部３５に表示させる（ステップＳ１００）。
【００７５】
次に、制御部３６は、ロボット２０が備えるマニピュレーター（すなわち、第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２）毎に、ステップＳ１２０からステップＳ２２０までの処理を繰り返し行う（ステップＳ１１０）。以下では、説明の便宜上、最初に第１マニピュレーターＭＮＰ１に対してステップＳ１２０からステップＳ２２０までの処理を行い、次に第２マニピュレーターＭＮＰ２に対してステップＳ１２０からステップＳ２２０までの処理を行う場合について説明する。
【００７６】
そのため、ステップＳ１２０からステップＳ２２０までの処理については、主に第１マニピュレーターＭＮＰ１に対しての処理について説明する。なお、制御部３６は、最初に第２マニピュレーターＭＮＰ２に対してステップＳ１２０からステップＳ２２０までの処理を行い、次に第１マニピュレーターＭＮＰ１に対してステップＳ１２０からステップＳ２２０までの処理を行う構成であってもよい。
【００７７】
ロボット制御部４２は、ステップＳ１００で表示部３５に表示されたＧＵＩを介して入力受付部３３により受け付けられたユーザーからのジョグ操作に基づいて、第１エンドエフェクターＥＮＤ１の先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌める（ステップＳ１２０）。次に、校正制御部４１は、ステップＳ１００で表示部３５に表示されたＧＵＩを介して第１マニピュレーターＭＮＰ１の校正処理を開始するための操作（例えば、第１マニピュレーターＭＮＰ１の校正処理を開始するボタンのクリック）を入力受付部３３により受け付ける（ステップＳ１３０）。
【００７８】
次に、ロボット制御部４２は、治具Ｊの凹部Ｈに嵌められた先端球ＴＣＰ１を、治具Ｊの凹部Ｈから所定方向に所定距離だけ移動させる。そして、力センサー初期化部４３は、この時点で第１力センサー２３−１の初期化を行う（ステップＳ１４０）。なお、所定方向は、例えば、鉛直上方であるが、他の方向であってもよい。また、所定距離は、先端球ＴＣＰ１が凹部Ｈから離れる距離であれば良いが、先端球ＴＣＰ１が凹部Ｈから離れている間に、振動等によって凹部Ｈが設けられた治具Ｊの上面に沿った方向に先端球ＴＣＰ１の位置がずれない（もしくは、ずれたとしても力センサー情報に基づいた制御によって先端球ＴＣＰ１を凹部Ｈの内壁に沿わせることで容易にずれる前の位置に戻せる）程度の距離が望ましい。
【００７９】
なお、先端球ＴＣＰ１が治具Ｊ１の凹部Ｈ１から離れている間に、治具Ｊ１の上面に沿った方向に先端球ＴＣＰ１の位置がずれる原因は、先端球ＴＣＰ１の振動の他にも、この段階で各アクチュエーターの回転角を補正するジョイントオフセットが算出されていないことによる先端球ＴＣＰ１の位置を移動させる際の誤差や、力センサー２３の値の振動（増減）等も考えられる。また、力センサー初期化部４３は、ロボット制御部４２が治具Ｊの凹部Ｈに嵌められた先端球ＴＣＰ１を、治具Ｊの凹部Ｈから所定方向に所定距離だけ移動させた後に力センサー２３の初期化を行う構成に代えて、治具Ｊの凹部Ｈに先端球ＴＣＰ１が嵌められる前に力センサー２３の初期化を行う構成であってもよい。つまり、力センサー２３の初期化が行われる前に、必ず先端球ＴＣＰ１が治具Ｊの凹部Ｈに嵌められる必要は無い。
【００８０】
また、ロボット制御部４２は、治具Ｊの凹部Ｈに嵌められた先端球ＴＣＰ１を、治具Ｊの凹部Ｈから所定方向に所定距離だけ移動させた後、先端球ＴＣＰ１（又は第１マニピュレーターＭＮＰ１）の振動が収まるまで待機する。より具体的には、ロボット制御部４２は、この待機において、所定時間が経過するまで待機し、その後、ステップＳ１５０の処理に遷移する。なお、ロボット制御部４２は、これに代えて、第１力センサー２３−１によって第１マニピュレーターＭＮＰ１の振動の単位時間当たりの振動数を測定し、測定された振動数が予め決められた閾値以下になるまで待機する構成等であってもよい。
【００８１】
次に、ロボット制御部４２は、先端球ＴＣＰ１を再び治具Ｊの凹部Ｈに嵌めるために、ステップＳ１４０における所定方向と逆方向に移動させる。この際、ロボット制御部４２は、力センサー情報取得部４４から力センサー情報を取得し、取得された力センサー情報に基づいた制御により、先端球ＴＣＰ１が治具Ｊの凹部Ｈに嵌まるまで先端球ＴＣＰ１を移動させる（ステップＳ１５０）。先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた後、ロボット制御部４２は、凹部Ｈに嵌められた先端球ＴＣＰ１に対して、鉛直下方に所定の大きさの力を加える。そして、ロボット制御部４２は、ステップＳ１４０における所定方向の逆方向に所定の大きさの力を加えた状態を保持したまま、ステップＳ１６０からステップＳ２２０までの処理を行う。
【００８２】
なお、もしロボット制御部４２が力センサー情報に基づいた制御を行わずに先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた場合、治具Ｊの凹部Ｈと、先端球ＴＣＰ１とが接触する部分に大きな負荷が掛かる場合がある。この場合、先端球ＴＣＰ１は、治具Ｊの凹部Ｈから外れてしまう可能性が高い。また、この場合、先端球ＴＣＰ１を有する第１エンドエフェクターＥＮＤ１と、治具Ｊとのうちいずれか一方又は両方は、変形してしまう場合がある。これらの事象が起こると、ロボット校正システム１は、第１マニピュレーターＭＮＰ１の校正を正確に行うことができない。それ故、ロボット校正システム１は、第１力センサー２３−１から取得される力センサー情報に基づいた制御により、先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌める。
【００８３】
次に、回転角取得部４５は、ロボット２０の腰部Ｃ及び第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれに係るエンコーダーから、回転角を示す情報を取得する（ステップＳ１６０）。この回転角を示す情報を取得する際、ロボット制御部４２は、第１力センサー２３−１によって第１マニピュレーターＭＮＰ１の振動の単位時間当たりの振動数を測定し、測定された振動数が予め決められた閾値以下になるまで待機する。これにより、ロボット制御部４２は、各アクチュエーターの回転角が、第１マニピュレーターＭＮＰ１の振動によって変化してしまうことを抑制することができる。
【００８４】
次に、回転角取得部４５は、ステップＳ１６０で取得された回転角を示す情報に、現在のロボット２０の姿勢を示す情報を対応付けた校正用情報を記憶部３２に記憶させる（ステップＳ１７０）。次に、校正制御部４１は、記憶部３２に記憶された校正用情報の数が予め定められた規定数以上であるか否かを判定する（ステップＳ１８０）。
【００８５】
ここで、この規定数は、ジョイントオフセット算出部４６がジョイントオフセットを算出する時に用いる連立方程式の未知数の数以上であれば良く、この一例においては、１０であるとする。なお、ステップＳ１９０で変更される姿勢によって、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターがそれぞれ一定角以上動くように第１校正用情報を取得するのが望ましい。。
【００８６】
記憶部３２に記憶された校正用情報の数が予め定められた規定数以上ではないと校正制御部４１が判定した場合（ステップＳ１８０−Ｎｏ）、ロボット制御部４２は、第１マニピュレーターＭＮＰ１の姿勢を次の姿勢に変更し（ステップＳ１９０）、その後、変更された第１マニピュレーターＭＮＰ１の姿勢においてステップＳ１６０からステップＳ１９０までの処理を行う。なお、ロボット制御部４２は、ステップＳ１９０の処理において、力センサー情報に基づいた制御によって先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた状態を保持したまま、第１マニピュレーターＭＮＰ１の姿勢を次の姿勢に変更するようにロボット２０を制御する。
【００８７】
ここで、ロボット制御部４２は、第１マニピュレーターＭＮＰ１の姿勢を次の姿勢に変更する際、第１マニピュレーターＭＮＰ１の姿勢を示す情報を順に読み込み、読み込まれた順に第１マニピュレーターＭＮＰ１の姿勢を変更する構成であってもよく、第１マニピュレーターＭＮＰ１の姿勢をランダムに変更する構成等であってもよい。以下では、ロボット制御部４２が記憶部３２に記憶された姿勢を示す情報を順に読み込み、読み込まれた順に第１マニピュレーターＭＮＰ１の姿勢を変更する場合について説明する。なお、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の姿勢のそれぞれは、アームの姿勢の一例である。
【００８８】
一方、記憶部３２に記憶された校正用情報の数が予め定められた規定数以上であると校正制御部４１が判定した場合（ステップＳ１８０−Ｙｅｓ）、ロボット制御部４２は、第１マニピュレーターＭＮＰ１の姿勢を、ステップＳ１５０で先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた時の第１マニピュレーターＭＮＰ１の姿勢に変更する（ステップＳ２００）。図８において、この制御を、マニピュレーターの姿勢の初期化と称している。
【００８９】
ここで、図９を参照して、ステップＳ１９０でロボット制御部４２が第１マニピュレーターＭＮＰ１の姿勢を変更する処理について説明する。図９は、第１マニピュレーターＭＮＰ１の姿勢を例示する図である。図９（Ａ）には、第１マニピュレーターＭＮＰ１の姿勢の一例を示す。図９（Ｂ）には、第１マニピュレーターＭＮＰ１の姿勢の他の例を示す。図９（Ｃ）には、第１マニピュレーターＭＮＰ１の姿勢の更に他の例を示す。
【００９０】
ロボット制御部４２は、先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた状態を保持しながら、例えば、図９（Ａ）に示した第１マニピュレーターＭＮＰ１の姿勢から、図９（Ｂ）や図９（Ｃ）に示した第１マニピュレーターＭＮＰ１の姿勢へと第１マニピュレーターＭＮＰ１の姿勢を変更する。このように姿勢を変更することで、先端球ＴＣＰ１の中心に設定されている第１マニピュレーターＭＮＰ１のＴＣＰの位置を固定位置Ｘから変えることなく、第１マニピュレーターＭＮＰ１の姿勢毎に異なる複数の回転角であって第１マニピュレーターＭＮＰ１に備えられた複数のアクチュエーターそれぞれの回転角を取得することができる。
【００９１】
次に、ロボット制御部４２は、ロボット２０の腰軸を所定回数以上変更させたか否かを判定する（ステップＳ２１０）。ロボット２０の腰軸を所定回数以上変更させていないと判定した場合（ステップＳ２１０−Ｎｏ）、ロボット制御部４２は、腰軸の姿勢を次の姿勢に変更するようにロボット２０を制御し（ステップＳ２２０）、その後、変更された腰軸の姿勢においてステップＳ１６０からステップＳ２２０までの処理を行う。なお、ロボット制御部４２は、ステップＳ２２０の処理において、力センサー情報に基づいた制御によって先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた状態を保持したまま、腰軸の姿勢を次の姿勢に変更するようにロボット２０を制御する。
【００９２】
一方、ロボット２０の腰軸を所定回数以上変更させたとロボット制御部４２が判定した場合（ステップＳ２１０−Ｙｅｓ）、ロボット制御部４２は、ステップＳ１１０に戻り、第２マニピュレーターＭＮＰ２に対して再びステップＳ１２０からステップＳ２２０までの処理を行う（ステップＳ２２５）。なお、ステップＳ１６０〜ステップＳ２２０までの処理は、上述した校正用情報取得動作を第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２のそれぞれに行わせる処理の一例である。
【００９３】
第２マニピュレーターＭＮＰ２に対するステップＳ１６０〜ステップＳ２２０までの処理が終わった後、ジョイントオフセット算出部４６は、記憶部３２に記憶された校正用情報をすべて読み込む。ジョイントオフセット算出部４６は、読み込まれたすべての校正用情報に基づいて、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２のそれぞれに備えられた複数のアクチュエーターに係るジョイントオフセットを算出し、算出されたジョイントオフセットを示す情報を記憶部３２に記憶させる（ステップＳ２３０）。
【００９４】
なお、ステップＳ２３０におけるジョイントオフセットを示す情報の記憶部３２への記憶は、ステップＳ２４０における処理においてジョイントオフセットを用いるための一時的な記憶であり、前述のジョイントオフセットの教示とは異なる。
【００９５】
ここで、ジョイントオフセット算出部４６によるジョイントオフセットの算出処理について説明する。順運動学では、第１マニピュレーターＭＮＰ１に係る校正用情報毎（すなわち、ロボット２０の腰軸の姿勢と第１マニピュレーターＭＮＰ１の姿勢との組み合わせ毎）に、第１マニピュレーターＭＮＰ１のＴＣＰの位置を算出する方程式が得られる。これら第１マニピュレーターＭＮＰ１のＴＣＰの位置を算出する方程式の入力パラメーターは、腰軸のアクチュエーターの回転角と、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転角である。また、これら第１マニピュレーターＭＮＰ１のＴＣＰの位置を算出する方程式の未知数は、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセット（７つのジョイントオフセット）と、第１マニピュレーターＭＮＰ１のＴＣＰの位置を示す座標（３つの座標値）である。
【００９６】
また、順運動学では、第２マニピュレーターＭＮＰ２に係る校正用情報毎（すなわち、ロボット２０の腰軸の姿勢と第２マニピュレーターＭＮＰ２の姿勢との組み合わせ毎）に、第２マニピュレーターＭＮＰ２のＴＣＰの位置を算出する方程式が得られる。これら第２マニピュレーターＭＮＰ２のＴＣＰの位置を算出する方程式の入力パラメーターは、腰軸のアクチュエーターの回転角と、第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターそれぞれの回転角である。また、これら第２マニピュレーターＭＮＰ２のＴＣＰの位置を算出する方程式の未知数は、第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセット（７つのジョイントオフセット）と、第２マニピュレーターＭＮＰ２のＴＣＰの位置を示す座標（３つの座標値）である。
【００９７】
ここで、ロボット校正システム１において、第１マニピュレーターＭＮＰ１のＴＣＰの位置を算出する方程式それぞれに含まれる第１マニピュレーターＭＮＰ１のＴＣＰの位置を示す座標と、第２マニピュレーターＭＮＰ２のＴＣＰの位置を算出する方程式それぞれに含まれる第２マニピュレーターＭＮＰ２のＴＣＰの位置を示す座標とは、校正用情報取得動作が行われている間、第１マニピュレーターＭＮＰ１のＴＣＰの位置と、第２マニピュレーターＭＮＰ２のＴＣＰの位置とが固定位置Ｘに固定されていた為、共通の値でなければならない。これを利用し、ジョイントオフセット算出部４６は、第１マニピュレーターＭＮＰ１のＴＣＰの位置を算出する方程式と、第２マニピュレーターＭＮＰ２のＴＣＰの位置を算出する方程式による連立方程式を一括して解く。
【００９８】
その結果、ジョイントオフセット算出部４６は、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットと、第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットとを算出する。また、この算出の際、ジョイントオフセット算出部４６は、第１マニピュレーターＭＮＰ１のＴＣＰの位置と、第２マニピュレーターＭＮＰ２のＴＣＰの位置とを、ある１つの座標系において表される位置として算出する。以下では、この座標系を共有ロボット座標系と称する。
【００９９】
算出されたジョイントオフセットにより、ロボット校正システム１は、治具Ｊを含む作業領域や治具Ｊの近傍の作業領域において、第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２との協調作業の精度を向上させることができる。協調作業とは、第１マニピュレーターＭＮＰ１のＴＣＰの位置と、第２マニピュレーターＭＮＰ２のＴＣＰの位置とをそれぞれ同じ位置に移動させ、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の両方により行う作業である。
【０１００】
なお、マニピュレーターのＴＣＰの位置を固定位置Ｘに固定して得られた校正用情報に基づいて導出された複数の方程式による連立方程式を解くことによってジョイントオフセットを算出する方法では、マニピュレーターの根元（エンドエフェクターが備えられる側とは反対側の端部）のアクチュエーターの回転角を補正するジョイントオフセットを算出しようとしても、順運動学に係る数学上、不定となってしまう。
【０１０１】
しかし、ロボット校正システム１では、マニピュレーターの根元のアクチュエーターに対応するアクチュエーターが、ロボット２０の腰軸のアクチュエーターとなっている。そのため、ロボット校正システム１は、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２それぞれが備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットを、すべて算出することができる。
【０１０２】
また、ロボット校正システム１は、算出された第１ジョイントオフセット及び第２ジョイントオフセットによって第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２それぞれの校正を行い、且つ腰軸を固定することで、治具Ｊを含む作業領域や治具Ｊの近傍の作業領域において、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２による協調作業の精度を向上させることができる。また、ロボット校正システム１は、算出された第１ジョイントオフセット及び第２ジョイントオフセットによって第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２それぞれの校正を行い、且つ腰軸を固定することで、治具Ｊを含む作業領域や治具Ｊの近傍の作業領域において、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２のそれぞれによって行う作業の精度を向上させることができる。なお、ロボット校正システム１は、他の装置を用いて腰軸のアクチュエーターのジョイントオフセットを算出させ、算出されたジョイントオフセットによって腰軸のアクチュエーターの校正を行う構成であってもよい。
【０１０３】
また、もし第１エンドエフェクターＥＮＤ１と第２エンドエフェクターＥＮＤ２のそれぞれがオフセット構造を有していない場合、ロボット校正システム１は、第１マニピュレーターＭＮＰ１の先端に備えられた関節Ｊ０７のアクチュエーターの回転角に対するジョイントオフセットと、第２マニピュレーターＭＮＰ２の先端に備えられた関節Ｊ１７のアクチュエーターの回転角に対するジョイントオフセットとが不定となってしまうことにより算出することができない。これは、先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた状態を保持したまま第１マニピュレーターＭＮＰ１の姿勢を如何様に変更したとしても、第１マニピュレーターＭＮＰ１の先端に備えられた関節Ｊ０７のアクチュエーターの回転角が変化せず、先端球ＴＣＰ２を治具Ｊの凹部Ｈに嵌めた状態を保持したまま第２マニピュレーターＭＮＰ２の姿勢を如何様に変更したとしても、第２マニピュレーターＭＮＰ２の先端に備えられた関節Ｊ１７のアクチュエーターの回転角が変化しないためである。
【０１０４】
これに対し、図５に示したように第１エンドエフェクターＥＮＤ１と第２エンドエフェクターＥＮＤ２それぞれがオフセット構造を有している場合、ロボット校正システム１は、第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２のそれぞれが備えるすべてのアクチュエーターの回転角に対するジョイントオフセットを算出することができる。これにより、ロボット校正システム１は、関節Ｊ０７及び関節Ｊ１７それぞれに備えられたアクチュエーターの回転角に対するジョイントオフセットを、他の装置によって算出することなく、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正を一括して行うことができる。
【０１０５】
次に、誤差評価部４７は、ステップＳ２３０で記憶部３２に記憶された第１マニピュレーターＭＮＰ１に係るジョイントオフセットを示す情報を記憶部３２から読み込む。また、誤差評価部４７は、ステップＳ１７０で記憶された第１マニピュレーターＭＮＰ１に係るすべての校正用情報を記憶部３２から１つずつ読み込む。誤差評価部４７は、読み込まれた校正用情報毎に、校正用情報に含まれる回転角と、読み込まれたジョイントオフセットとに基づく順運動学により、第１マニピュレーターＭＮＰ１のＴＣＰの位置を算出する。そして、誤差評価部４７は、校正用情報毎（すなわち、ロボット２０の姿勢毎）に算出されたすべての第１マニピュレーターＭＮＰ１のＴＣＰの位置に基づいて、それらのＴＣＰの位置の標準偏差を、第１標準偏差として算出する。
【０１０６】
また、誤差評価部４７は、ステップＳ２３０で記憶部３２に記憶された第２マニピュレーターＭＮＰ２に係るジョイントオフセットを示す情報を記憶部３２から読み込む。そして、誤差評価部４７は、ステップＳ１７０で記憶された第２マニピュレーターＭＮＰ２に係るすべての校正用情報を記憶部３２から１つずつ読み込む。誤差評価部４７は、読み込まれた校正用情報毎に、校正用情報に含まれる回転角と、読み込まれたジョイントオフセットとに基づく順運動学により、第２マニピュレーターＭＮＰ２のＴＣＰの位置を算出する。そして、誤差評価部４７は、校正用情報毎（すなわち、ロボット２０の姿勢毎）に算出されたすべての第２マニピュレーターＭＮＰ２のＴＣＰの位置に基づいて、それらのＴＣＰの位置の標準偏差を、第２標準偏差として算出する（ステップＳ２４０）。
【０１０７】
次に、誤差評価部４７は、第１標準偏差と、第２標準偏差との両方がそれぞれ所定値未満であるか否かを判定（評価）する（ステップＳ２５０）。ステップＳ２４０で算出された第１標準偏差と、ステップＳ２４０で算出された第２標準偏差とのうちいずれか一方が所定値未満ではないと誤差評価部４７が判定した場合（ステップＳ２５０−Ｎｏ）、ロボット制御部４２は、ステップＳ１１０に戻り、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２に係る校正用情報を取得し直すことで、ジョイントオフセットを算出し直す。
【０１０８】
一方、ステップＳ２４０で算出された第１標準偏差と、ステップＳ２４０で算出された第２標準偏差との両方が所定値Ｘ１未満であると誤差評価部４７が判定した場合（ステップＳ２５０−Ｙｅｓ）、教示部４８は、ステップＳ２３０で算出されたジョイントオフセットを記憶部３２に記憶させる（ステップＳ２６０）。ステップＳ２６０における第１ジョイントオフセットを示す情報と第２ジョイントオフセットを示す情報との記憶部３２への記憶は、前述の第１ジョイントオフセット及び第２ジョイントオフセットの教示を示す。なお、ステップＳ２４０で算出された第１標準偏差と、ステップＳ２４０で算出された第２標準偏差とのうちいずれか一方が所定値未満ではないと誤差評価部４７が判定した場合、教示部４８は、所定値未満であると判定された一方の標準偏差に係るマニピュレーター（第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２のうちのいずれか）のジョイントオフセットであって、ステップＳ２３０で算出されたジョイントオフセットを記憶部３２に記憶させる構成であってもよい。
【０１０９】
なお、本実施形態では、教示部４８は、ステップＳ２４０で算出された第１標準偏差と、ステップＳ２４０で算出された第２標準偏差との両方が所定値Ｘ１未満であるか否かを判定する構成であるとしたが、これに代えて、ステップＳ２４０で算出された第１標準偏差と、ステップＳ２４０で算出された第２標準偏差とのうちいずれか一方が所定値Ｘ１未満であると誤差評価部４７が判定した場合、ステップＳ２３０で算出されたジョイントオフセットを記憶部３２に記憶させる（教示する）構成であってもよい。また、先端球ＴＣＰ１と凹部Ｈとの相対位置関係が固定されている際の先端球ＴＣＰ１と凹部Ｈとの間の距離は、例えば、凹部Ｈの最も深い部分（この一例において、凹部Ｈの中心）の位置から、先端球ＴＣＰ１の凹部Ｈに接触する点までの距離であるが、他の２点間の距離であってもよい。先端球ＴＣＰ１と凹部Ｈとの相対位置関係が固定されている際の先端球ＴＣＰ１と凹部Ｈとの間の距離は、１の距離の一例である。また、先端球ＴＣＰ２と凹部Ｈとの相対位置関係が固定されている際の先端球ＴＣＰ２と凹部Ｈとの間の距離は、例えば、凹部Ｈの最も深い部分（この一例において、凹部Ｈの中心）の位置から、先端球ＴＣＰ１の凹部Ｈに接触する点までの距離であるが、他の２点間の距離であってもよい。
【０１１０】
＜第１実施形態の変形例＞
以下、本発明の第１実施形態の変形例について説明する。第１実施形態の変形例に係るロボット校正システム１は、先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた状態で第１マニピュレーターＭＮＰ１を複数の姿勢にし、第１マニピュレーターＭＮＰ１の校正を行う第１校正と、先端球ＴＣＰ１を治具Ｊの凹部Ｈから離した後、先端球ＴＣＰ１を治具Ｊの凹部Ｈに再び嵌めた状態で第１マニピュレーターＭＮＰ１を第１校正における複数の姿勢とは異なる姿勢にすることにより、第１マニピュレーターＭＮＰ１の校正を行う第２校正と、を行う。また、ロボット校正システム１は、第２マニピュレーターＭＮＰ２に対しても、第１マニピュレーターＭＮＰ１に対する処理と同様の処理を行い、第１校正と第２校正を行う。
【０１１１】
以下では、第１マニピュレーターＭＮＰ１の校正について説明する。第２マニピュレーターＭＮＰ２の校正についての説明は、以下の説明の第１マニピュレーターＭＮＰ１を第２マニピュレーターＭＮＰ２に読み換えたものとする。
【０１１２】
以下、第１実施形態の変形例に係るロボット校正システム１についての具体例を説明する。
ロボット校正システム１は、図８に示したステップＳ１２０からステップＳ２２０までの処理を、第１マニピュレーターＭＮＰ１に対して行う。そして、ロボット校正システム１は、ステップＳ１７０において第１マニピュレーターＭＮＰ１に係る校正用情報を取得する。
【０１１３】
この校正用情報を取得する際、ロボット校正システム１は、第１マニピュレーターＭＮＰ１の姿勢を、先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた状態を保持したまま変更可能な複数の姿勢にし、第１マニピュレーターＭＮＰ１に係る校正用情報を取得する。先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めたまま変更可能な複数の姿勢について説明する。先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めたままの状態（つまり、先端球ＴＣＰ１の中心の位置を固定したままの状態）において、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転可能な範囲は、アクチュエーター毎にある範囲に制限される（例えば、第１マニピュレーターＭＮＰ１を構成する部材同士が接触してしまう等により制限される）。
【０１１４】
このある範囲は、第１マニピュレーターＭＮＰ１の形状等の構造によって決まる。以下では、説明の便宜上、このアクチュエーター毎のある範囲を可動範囲と称して説明する。従って、ロボット校正システム１は、第１マニピュレーターＭＮＰ１に係る校正用情報を取得する際、第１マニピュレーターＭＮＰ１の姿勢を、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれをアクチュエーター毎の可動範囲を超えずに回転させることによって実現する姿勢にして、第１マニピュレーターＭＮＰ１に係る校正用情報を取得する。以下では、説明の便宜上、第１校正において第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれをアクチュエーター毎の可動範囲を超えずに回転させることによって実現する第１マニピュレーターＭＮＰ１の姿勢を、まとめて第１姿勢と称して説明する。
【０１１５】
第１マニピュレーターＭＮＰ１に係る校正用情報を取得した後、ロボット校正システム１は、取得した第１マニピュレーターＭＮＰ１に係る複数の校正用情報に基づいて順運動学から導出された複数の方程式による連立方程式を解く。ロボット校正システム１は、この連立方程式を解くことによって得られたジョイントオフセットにより、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットを算出する。ロボット校正システム１は、算出されたジョイントオフセットに基づいて第１マニピュレーターＭＮＰ１の校正を行う。上述の第１校正は、この校正を示す。
【０１１６】
ロボット校正システム１は、第１マニピュレーターＭＮＰ１に対して第１校正を行った後、治具Ｊの凹部Ｈに嵌めたままの先端球ＴＣＰ１を、治具Ｊの凹部Ｈから離す。そして、ロボット校正システム１は、そして、ロボット校正システム１は、第１マニピュレーターＭＮＰ１の姿勢を、第１姿勢に含まれる姿勢から第２姿勢に含まれる姿勢のいずれかに変更する。
【０１１７】
ここで、第２姿勢に含まれる姿勢とは、第１ＴＣＰ位置を固定位置Ｘから離さなければ、第１姿勢から連続的に移行できない姿勢を示す。第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターのそれぞれの回転可能な範囲は、アクチュエーター毎にある範囲に制限される。このある範囲は、第１マニピュレーターＭＮＰ１の形状等の構造によって決まる。以下では、説明の便宜上、このアクチュエーター毎のある範囲を可動範囲と称して説明する。これを踏まえて、第２姿勢に含まれる姿勢は、例えば、先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた状態を保持したまま第１姿勢に含まれる姿勢から移り変わろうとすると、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれのうち、少なくとも１つのアクチュエーターを当該アクチュエーターの可動範囲を超えて回転させなければ実現することが不可能な複数の姿勢である。また、第２姿勢に含まれる姿勢は、例えば、第１ＴＣＰ位置を複数の固定位置のいずれかに固定したまま第１姿勢に含まれる姿勢から移り変わろうとすると、第１マニピュレーターＭＮＰ１を構成する部材同士が衝突してしまう複数の姿勢である。
【０１１８】
ロボット校正システム１は、第１マニピュレーターＭＮＰ１の姿勢を第２姿勢に含まれる姿勢のいずれかの姿勢にし、再び先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌める。そして、ロボット校正システム１は、第１校正の場合と同様に、先端球ＴＣＰ１を治具Ｊの凹部Ｈに嵌めた状態を保持したまま、変更可能な複数の姿勢（つまり、第２姿勢のいずれかの姿勢）にし、第１マニピュレーターＭＮＰ１に係る校正用情報を取得する。
【０１１９】
ロボット校正システム１は、取得した第１マニピュレーターＭＮＰ１に係る複数の校正用情報と、第１校正において取得された第１マニピュレーターＭＮＰ１に係る校正用情報との両方に基づいて順運動学から導出された複数の方程式による連立方程式を解く。ロボット校正システム１は、この連立方程式を解くことによって得られたジョイントオフセットにより、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転角を補正するジョイントオフセットを算出する。ロボット校正システム１は、算出されたジョイントオフセットに基づいて第１マニピュレーターＭＮＰ１の校正を行う。以下では、この校正を第２校正と称して説明する。
【０１２０】
第１校正のみを行った場合、ロボット校正システム１は、第１姿勢に含まれる姿勢と第２姿勢に含まれる姿勢との両方を伴う作業を第１マニピュレーターＭＮＰ１に行わせる場合、第１マニピュレーターＭＮＰ１の姿勢が第１姿勢に含まれる姿勢における動作を第１マニピュレーターＭＮＰ１に高い精度で行わせることができたとしても、第１マニピュレーターＭＮＰ１の姿勢が第２姿勢に含まれる姿勢における第１マニピュレーターＭＮＰ１の動作の精度を保証できない。
【０１２１】
一方、第１校正の後に第２校正を行った場合、ロボット校正システム１は、第１マニピュレーターＭＮＰ１の姿勢が第１姿勢に含まれる姿勢における動作と、第１マニピュレーターＭＮＰ１の姿勢が第２姿勢に含まれる姿勢における動作との両方の精度を、ある精度の範囲内に保証することができる。つまり、ロボット校正システム１は、第１校正を行った後に第２校正を行うことにより、第１マニピュレーターＭＮＰ１の複数の姿勢毎の動作の精度を、平均化することができる。
【０１２２】
なお、ロボット校正システム１は、第１校正の後に第２校正を行った場合、より汎用的なジョイントオフセットを自動的に校正することができる。汎用的とは、第１姿勢に含まれる姿勢に近い姿勢を用いた作業の精度を向上させることができるだけではなく、第１姿勢及び第２姿勢のそれぞれに含まれる姿勢に近い姿勢を用いた作業の精度を向上させることができることを意味する。また、ロボット校正システム１は、第１マニピュレーターＭＮＰ１の姿勢を、第１姿勢に含まれる姿勢から、第２姿勢に含まれる姿勢へ移行させる際、第１校正の結果を用いることにより、第１ＴＣＰ位置を治具Ｊの凹部Ｈから離したとしても、ある精度で当該凹部Ｈへ第１ＴＣＰの位置を戻すことができる。
【０１２３】
以上説明したように、本実施形態におけるロボット校正システム１は、先端球ＴＣＰ１を治具Ｊと１の距離となるように移動させた後に、少なくとも力センサー２３から取得された力センサー情報に基づいて第１マニピュレーターＭＮＰ１を複数の姿勢にし、先端球ＴＣＰ２を治具Ｊと１の距離となるように移動させた後に、少なくとも力センサー２３から取得された力センサー情報に基づいて第２マニピュレーターＭＮＰ２を複数の姿勢にして、第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２を校正する。これにより、ロボット校正システム１は、容易に第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２の校正を行うことができる。
【０１２４】
また、ロボット校正システム１は、先端球ＴＣＰ１を治具と距離が０となるように移動させた後に、少なくとも力センサー２３から取得された力センサー情報に基づいて第１マニピュレーターＭＮＰ１を複数の姿勢にし、先端球ＴＣＰ２を治具と距離が０となるように移動させた後に、少なくとも力センサー２３から取得された力センサー情報に基づいて第２マニピュレーターＭＮＰ２を複数の姿勢にして、第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２を校正する。これにより、ロボット校正システム１は、第１部材の１の部位を第２部材に接触させた状態を保ったまま、アームに１以上の姿勢を取らせることによりアームの校正を行うことができる。
【０１２５】
また、ロボット校正システム１は、先端球ＴＣＰ１を治具Ｊと１の距離となるように移動させた後、先端球ＴＣＰ１を治具Ｊと１の距離とは異なる他の距離となるように移動させて力センサー２３の初期化を行い、先端球ＴＣＰ１を治具Ｊと１の距離となるように移動させる。これにより、ロボット校正システム１は、力センサー２３に加わる重力等の外力による誤差を抑制することができる。
【０１２６】
また、ロボット校正システム１は、力センサー２３の初期化を行う際、第１エンドエフェクターＥＮＤ１の振動が収まるまで待機した後、力センサー２３の初期化を行い、先端球ＴＣＰ１を治具Ｊと１の距離となるように移動させる。これにより、ロボット校正システム１は、第１エンドエフェクターＥＮＤ１の振動により生じる力センサー２３の初期化における誤差を抑制することができる。
【０１２７】
また、ロボット校正システム１は、先端球ＴＣＰ１を力センサー２３から取得された力センサー情報に基づいた制御により治具の凹部Ｈに嵌めて、先端球ＴＣＰ１の位置を固定する。これにより、ロボット校正システム１は、先端球ＴＣＰ１の位置を固定したまま第１マニピュレーターＭＮＰ１を複数の姿勢にして校正することができる。また、ロボット校正システム１は、先端球ＴＣＰ２を力センサー２３から取得された力センサー情報に基づいた制御により治具の凹部Ｈに嵌めて、先端球ＴＣＰ２の位置を固定する。これにより、ロボット校正システム１は、先端球ＴＣＰ２の位置を固定したまま第２マニピュレーターＭＮＰ２を複数の姿勢にして校正することができる。
【０１２８】
また、ロボット校正システム１は、第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２を一括で校正する。これにより、ロボット校正システム１は、第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２による協調作業の精度を向上させることができる。
【０１２９】
また、ロボット校正システム１は、先端球ＴＣＰ１を治具Ｊと１の距離となるように移動させた後に、少なくとも力センサー２３から取得された力センサー情報に基づいて第１マニピュレーターＭＮＰ１を複数の姿勢にすることにより校正する第１校正と、先端球ＴＣＰ１を治具Ｊと２の距離となるように離した後に、先端球ＴＣＰ１を治具Ｊと３の距離となるように移動させた後に、少なくとも力センサー２３から取得された力センサー情報に基づいて第１マニピュレーターＭＮＰ１を第１校正における複数の姿勢とは異なる姿勢を１つ以上取らせることにより校正する第２校正と、を行う。また、ロボット校正システム１は、先端球ＴＣＰ２を治具Ｊと１の距離となるように移動させた後に、少なくとも力センサー２３から取得された力センサー情報に基づいて第２マニピュレーターＭＮＰ２を複数の姿勢にすることにより校正する第１校正と、先端球ＴＣＰ２を治具Ｊと２の距離となるように離した後に、先端球ＴＣＰ２を治具Ｊと３の距離となるように移動させた後に、少なくとも力センサー２３から取得された力センサー情報に基づいて第２マニピュレーターＭＮＰ２を第１校正における複数の姿勢とは異なる姿勢を１つ以上取らせることにより校正する第２校正と、を行う。これにより、ロボット校正システム１は、複数の姿勢におけるマニピュレーターの動作の精度を平均化することができる。
【０１３０】
＜第２実施形態＞
以下、本発明の第２実施形態について、図面を参照して説明する。図１０は、第２実施形態に係るロボット校正システム２の一例を示す構成図である。第２実施形態に係るロボット校正システム２は、ロボット２０ａと、制御装置３０ａを備える。なお、第２実施形態では、第１の実施形態と同様な構成部には、同じ符号を付してある。
【０１３１】
ロボット校正システム２は、第１実施形態において説明した方法によって第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２それぞれの校正を行い、その後、作業台ＴＢの上面に配置された作業対象Ｍを所定位置に配置し直す作業をロボット２０ａに行わせる。以下では、この作業を所定の作業と称して説明する。
【０１３２】
図１０に示したロボット２０ａは、第１実施形態に係るロボット２０に対して、第１実施形態において説明した方法によって第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２それぞれの校正が行われた後の状態である。また、ロボット２０ａは、ロボット２０が備えていた第１エンドエフェクターＥＮＤ１及び第２エンドエフェクターＥＮＤ２に代えて、作業対象Ｍを把持可能な爪部をそれぞれ備える第３エンドエフェクターＥＮＤ３及び第４エンドエフェクターＥＮＤ４を備える。以下では、ロボット２０ａは、第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正が行われた後、第１エンドエフェクターＥＮＤ１及び第２エンドエフェクターＥＮＤ２を、第３エンドエフェクターＥＮＤ３及び第４エンドエフェクターＥＮＤ４に付け替えられたとして説明する。
【０１３３】
作業対象Ｍは、第３エンドエフェクターＥＮＤ３と第４エンドエフェクターＥＮＤ４のうちいずれか一方又は両方によって把持可能な大きさと形状を有する物体であり、例えば、産業機械等に用いられる部品（ネジやボルト等）である。図１０において、作業対象Ｍは、直方体形状の物体として示したが、他の形状や大きさの物体であってもよい。
【０１３４】
第１固定撮像部２１と第２固定撮像部２２は、腰部Ｃに備えられた腰軸Ｊ０とともに動くように、ロボット２０ａの腰部Ｃよりも上部に設けられる。また、第１固定撮像部２１と第２固定撮像部２２は、撮像可能な範囲をステレオ撮像する。以下では、第１固定撮像部２１と第２固定撮像部２２にステレオ撮像された画像を、ステレオ撮像画像と称して説明する。ここで、撮像可能な範囲とは、ロボット２０ａが腰軸Ｊ０を回転させることによって第１固定撮像部２１及び第２固定撮像部２２によりステレオ撮像が可能なすべての範囲を示す。なお、作業対象Ｍと、作業対象Ｍを配置する所定位置は、その範囲に含まれているとする。
【０１３５】
なお、ステレオ撮像画像は、静止画像であるとするが、これに代えて、動画像であってもよい。また、第１固定撮像部２１には、第１カメラ座標系が設定されているとする。また、第２固定撮像部２２には、第２カメラ座標系が設定されているとする。第１カメラ座標系の原点と、第２カメラ座標系の原点とは、腰軸Ｊ０の延長線上の任意の位置に設定されればよい。また、共有ロボット座標系における位置と、第１カメラ座標系における位置とは、予め何らかのキャリブレーションによって対応付けられているとする。また、共有ロボット座標系における位置と、第２カメラ座標系における位置とは、予め何らかのキャリブレーションによって対応付けられているとする。
【０１３６】
ロボット２０ａが備える各機能部（第１動撮像部１１、第２動撮像部１２、第１固定撮像部２１、第２固定撮像部２２、第１力センサー２３−１、第２力センサー２３−２、第３エンドエフェクターＥＮＤ３、第４エンドエフェクターＥＮＤ４、第１マニピュレーターＭＮＰ１、第２マニピュレーターＭＮＰ２、図示しない複数のアクチュエーターのそれぞれ）は、制御装置３０ａから入力された制御信号に基づいて制御される。ロボット２０ａは、第３エンドエフェクターＥＮＤ３と第４エンドエフェクターＥＮＤ４のうちいずれか一方又は両方によって作業対象Ｍを把持し、把持した作業対象Ｍを所定位置まで移動させて配置する。
【０１３７】
制御装置３０ａは、第１実施形態において説明した方法によって第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２それぞれの校正を行う。また、ロボット２０ａの第１エンドエフェクターＥＮＤ１及び第２エンドエフェクターＥＮＤ２がユーザーにより第３エンドエフェクターＥＮＤ３及び第４エンドエフェクターＥＮＤ４に付け替えられた後、制御装置３０ａは、第１固定撮像部２１及び第２固定撮像部２２が撮像可能な範囲を、第１固定撮像部２１及び第２固定撮像部２２にステレオ撮像させ、撮像されたステレオ撮像画像に基づいてパターンマッチング等により作業対象Ｍを検出する。制御装置３０ａは、作業対象Ｍが検出されるまで、腰軸Ｊ０の姿勢を変えながら（腰軸Ｊ０の回転角を変えながら）繰り返し行う。制御装置３０ａは、ステレオ撮像画像から作業対象Ｍが検出された場合、そのステレオ撮像画像に基づいてカメラ座標系における作業対象Ｍの位置及び姿勢を算出する。
【０１３８】
制御装置３０ａは、カメラ座標系における作業対象Ｍの位置及び姿勢を、共有ロボット座標系における位置及び姿勢に変換する。そして、制御装置３０ａは、この変換によって得られた共有ロボット座標系における作業対象Ｍの位置及び姿勢と、予め行われた第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正において算出された各ジョイントオフセットとに基づいて、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターと、第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターとのそれぞれの回転角を算出する。制御装置３０ａは、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターと、第２マニピュレーターＭＮＰ２が備える複数のアクチュエーターとのそれぞれの回転角を、算出した回転角となるように制御し、第３エンドエフェクターＥＮＤ３と、第４エンドエフェクターＥＮＤ４とを作業対象Ｍを把持可能な位置へと移動させる。その後、制御装置３０ａは、作業対象Ｍを第３エンドエフェクターＥＮＤ３と第４エンドエフェクターＥＮＤ４のうちいずれか一方又は両方によって把持させ、把持された作業対象Ｍを所定位置に配置させる。
【０１３９】
なお、カメラ座標系における位置と、共有ロボット座標系における位置とは、予め何らかのキャリブレーションによって対応付けられているとする。このキャリブレーションは、撮像部の校正の一例である。また、共有ロボット座標系の原点の位置は、ロボット２０ａに予め決められた位置に設定され、例えば、腰軸Ｊ０の回転軸上の任意の位置等である。ここで、この予め決められた位置とは、腰軸Ｊ０が回転（移動）した場合においても、カメラ座標系と共有ロボット座標系の相対的な位置及び姿勢（位置関係）が変化しない位置のことである。
【０１４０】
この一例では、共有ロボット座標系の原点の位置が、カメラ座標系の原点の位置と一致しており、腰軸Ｊ０の回転とともにカメラ座標系の原点の位置及び姿勢と共有ロボット座標系の原点の位置及び姿勢とが同じ位置及び姿勢に変化する場合について説明する。なお、共有ロボット座標系の原点の位置は、腰軸Ｊ０が回転（移動）した場合においても、カメラ座標系と共有ロボット座標系の相対的な位置及び姿勢（位置関係）が変化しない位置であれば、カメラ座標系の原点の位置と一致している必要は無い。
【０１４１】
ここで、図１に示したように、第１固定撮像部２１及び第２固定撮像部２２は、腰軸Ｊ０とともに動くように設置されているため、カメラ座標系における位置と共有ロボット座標系における位置との対応付けは、腰軸Ｊ０が回転するたびにずれることがない。従って、予め一度だけキャリブレーションを行うことで、カメラ座標系における位置と共有ロボット座標系における位置との対応付け（すなわち、腰軸Ｊ０の校正）は、その後、カメラ座標系の原点の位置及び姿勢と、共有ロボット座標系の原点の位置及び姿勢との相対的な位置及び姿勢が変更されない限り行う必要がない。なお、共有ロボット座標系の座標軸は、アームの座標軸の一例である。また、カメラ座標系の原点の位置及び姿勢と、共有ロボット座標系の原点の位置及び姿勢との相対的な位置及び姿勢は、アームの座標軸と前記撮像部との所定の位置関係の一例である。
【０１４２】
次に、図１１を参照して、制御装置３０ａの機能構成について説明する。図１１は、制御装置３０ａの機能構成の一例を示す図である。制御装置３０ａは、記憶部３２と、入力受付部３３と、表示部３５と、制御部３６ａと、画像取得部５０を備える。制御部３６ａが備える機能部のうち一部又は全部は、例えば、ＣＰＵ３１が、記憶部３２に記憶された各種プログラムを実行することで実現される。また、これらの機能部のうち一部または全部は、ＬＳＩ（Large  Scale  Integration）やＡＳＩＣ（Application  Specific  Integrated  Circuit）等のハードウェア機能部であってもよい。
【０１４３】
画像取得部５０は、第１固定撮像部２１及び第２固定撮像部２２によりステレオ撮像されたステレオ撮像画像を取得する。画像取得部５０は、取得したステレオ撮像画像を制御部３６ａに出力する。
制御部３６ａは、制御装置３０ａの全体を制御する。制御部３６ａは、表示制御部４０と、校正制御部４１と、撮像制御部５１と、検出制御部５２と、位置姿勢算出部５３と、ロボット制御部５４を備える。
【０１４４】
撮像制御部５１は、第１固定撮像部２１及び第２固定撮像部２２に撮像可能な範囲をステレオ撮像させる。
検出制御部５２は、画像取得部５０から取得されたステレオ撮像画像に基づいて、ステレオ撮像画像からパターンマッチング等によって作業対象Ｍを検出する。この検出の際、検出制御部５２は、ステレオ撮像画像から作業対象Ｍが検出されたか否かを判定する。その判定の結果、検出制御部５２は、ステレオ撮像画像から作業対象Ｍが検出されなかった場合、ロボット２０ａの腰軸Ｊ０を所定角度だけ回転させるようにロボット制御部５４を制御する。
【０１４５】
位置姿勢算出部５３は、ステレオ撮像画像から作業対象Ｍが検出されたと検出制御部５２が判定した場合、そのステレオ撮像画像に基づいてロボット座標系における作業対象Ｍの位置及び姿勢を算出する。
ロボット制御部５４は、位置姿勢算出部５３により算出されたロボット座標系における作業対象Ｍの位置及び姿勢に基づいてロボット２０ａに所定の作業を行わせる。
【０１４６】
以下、図１２を参照して、制御装置３０ａがロボット２０ａに所定の作業を行わせる処理について説明する。図１２は、制御装置３０ａがロボット２０ａに所定の作業を行わせる処理の流れの一例を示すフローチャートである。まず、撮像制御部５１は、第１固定撮像部２１及び第２固定撮像部２２に撮像可能な範囲をステレオ撮像させる（ステップＳ３００）。次に、画像取得部５０は、第１固定撮像部２１及び第２固定撮像部２２によりステレオ撮像されたステレオ撮像画像を取得し、取得されたステレオ撮像画像を制御部３６ａに出力する（ステップＳ３１０）。
【０１４７】
次に、検出制御部５２は、ステップＳ３１０で画像取得部５０から取得されたステレオ撮像画像から作業対象Ｍを検出する（ステップＳ３２０）。次に、検出制御部５２は、ステップＳ３２０で作業対象Ｍがステレオ撮像画像から検出されたか否かを判定する（ステップＳ３３０）。作業対象Ｍがステレオ撮像画像から検出されていないと検出制御部５２が判定した場合（ステップＳ３３０−Ｎｏ）、ロボット制御部５４は、腰軸Ｊ０の姿勢が変わるように腰軸Ｊ０を所定角度だけ回転させ（ステップＳ３６０）、その後、撮像制御部５１が、ステップＳ３００に戻って第１固定撮像部２１及び第２固定撮像部２２に撮像可能な範囲をステレオ撮像させる。
【０１４８】
一方、作業対象Ｍがステレオ撮像画像から検出されたと検出制御部５２が判定した場合（ステップＳ３３０−Ｙｅｓ）、位置姿勢算出部５３は、ステップＳ３１０で画像取得部５０により取得されたステレオ撮像画像に基づいて、ロボット座標系における作業対象Ｍの位置及び姿勢を算出する（ステップＳ３４０）。次に、ロボット制御部５４は、ステップＳ３４０で算出されたロボット座標系における作業対象Ｍの位置及び姿勢に基づいてロボット２０ａに所定の作業を行わせる（ステップＳ３５０）。
【０１４９】
以上説明したように、第２実施形態に係るロボット校正システム２は、共有ロボット座標系に対してカメラ座標系を校正する。これにより、ロボット校正システム２は、キャリブレーションの手間を軽減することができる。
【０１５０】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【０１５１】
また、以上に説明した装置（例えば、ロボット校正システム１の制御装置３０、ロボット校正システム２の制御装置３０ａ）における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１５２】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【０１５３】
１、２  ロボット校正システム、１１  第１動撮像部、１２  第２動撮像部、２０、２０ａ  ロボット、２１  第１固定撮像部、２２  第２固定撮像部、２３  力センサー、２３−１  第１力センサー、２３−２  第２力センサー、３０、３０ａ  制御装置、３１  ＣＰＵ、３２  記憶部、３３  入力受付部、３４  通信部、３５  表示部、３６、３６ａ  制御部、４０  表示制御部、４１  校正制御部、４２、５４  ロボット制御部、４３  力センサー初期化部、４４  力センサー情報取得部、４５  回転角取得部、４６  ジョイントオフセット算出部、４７  誤差評価部、４８  教示部、５０  画像取得部、５１  撮像制御部、５２  検出制御部、５３  位置姿勢算出部
【図１】
2016120557.tif 000003
【図２】
2016120557.tif 000004
【図３】
2016120557.tif 000005
【図４】
2016120557.tif 000006
【図５】
2016120557.tif 000007
【図６】
2016120557.tif 000008
【図７】
2016120557.tif 000009
【図８】
2016120557.tif 000010
【図９】
2016120557.tif 000011
【図１０】
2016120557.tif 000012
【図１１】
2016120557.tif 000013
【図１２】
2016120557.tif 000014