(57)【要約】【課題】複数のアームにより作業を行う場合の誤差を抑制することができるロボットを提供すること。【解決手段】ロボットは、第１アームと、第２アームと、第１アームの先端側に取り付けられる第１アーム用第１部材と、第２アームの先端側に取り付けられる第２アーム用第１部材と、を備え、制御装置から取得された制御信号に基づいて、第１アーム用第１部材の一部を第２部材と１の距離となるように移動させた後に、第１アームを複数の姿勢にする第１動作と、第２アーム用第１部材の一部を第２部材と２の距離となるように移動させた後に、第２アームを複数の姿勢にする第２動作と、を行い、第１動作と第２動作との結果に基づいて第１アームを制御するためのパラメーターと第２アームを制御するためのパラメーターとを校正する。【選択図】図７
2016120531.tif 000002
【特許請求の範囲】
【請求項１】
第１アームと、
第２アームと、
前記第１アームの先端側に取り付けられる第１アーム用第１部材と、
前記第２アームの先端側に取り付けられる第２アーム用第１部材と、
を備え、
制御装置から取得された制御信号に基づいて、
前記第１アーム用第１部材の一部を第２部材と１の距離となるように移動させた後に、前記第１アームを複数の姿勢にする第１動作と、前記第２アーム用第１部材の一部を前記第２部材と２の距離となるように移動させた後に、前記第２アームを複数の姿勢にする第２動作と、を行い、
前記第１動作と前記第２動作との結果に基づいて前記第１アームを制御するためのパラメーターと前記第２アームを制御するためのパラメーターとを校正する、
ロボット。
【請求項２】
請求項１に記載のロボットであって、
前記１の距離と、前記２の距離とは、略同じである、
ロボット。
【請求項３】
請求項１又は２に記載のロボットであって、
前記１の距離と、前記２の距離とは、両方とも略０である、
ロボット。
【請求項４】
請求項１から３のうちいずれか一項に記載のロボットであって、
第１力センサーと第２力センサーを備え、
前記第１アーム用第１部材の一部を前記第２部材と１の距離となるように移動させた後に、少なくとも第１力センサーの出力値に基づいて前記第１アームを複数の姿勢にする前記第１動作と、前記第２アーム用第１部材の一部を前記第２部材と２の距離となるように移動させた後に、少なくとも第２力センサーの出力値に基づいて前記第２アームを複数の姿勢にする前記第２動作と、を行う、
ロボット。
【請求項５】
請求項４に記載のロボットであって、
前記第１アーム用第１部材の一部を前記第２部材と前記１の距離となるように移動させる場合、前記第１アーム用第１部材の一部を前記第２部材と前記１の距離となるように移動させた後、前記第１アーム用第１部材の一部を前記第２部材と前記１の距離とは異なる他の距離に移動させて前記第１力センサーの初期化を行い、前記第１アーム用第１部材の一部を前記第２部材と前記１の距離となるように移動させ、
前記第２アーム用第１部材の一部を前記第２部材と前記２の距離となるように移動させる場合、前記第２アーム用第１部材の一部を前記第２部材と前記２の距離となるように移動させた後、前記第２アーム用第１部材の一部を前記第２部材と前記２の距離とは異なる他の距離に移動させて前記第２力センサーの初期化を行い、前記第２アーム用第１部材の一部を前記第２部材と前記２の距離となるように移動させる、
ロボット。
【請求項６】
請求項５に記載のロボットであって、
前記第１力センサーの前記初期化を行う際、前記第１アーム用第１部材の振動が収まるまで待機した後、前記第１力センサーの前記初期化を行い、前記第１アーム用第１部材の一部を前記第２部材と前記１の距離となるように移動させ、前記第２力センサーの前記初期化を行う際、前記第２アーム用第１部材の振動が収まるまで待機した後、前記第２力センサーの前記初期化を行い、前記第２アーム用第１部材の一部を前記第２部材と前記２の距離となるように移動させる、
ロボット。
【請求項７】
請求項１から６のうちいずれか一項に記載のロボットであって、
前記第１アーム用第１部材の一部は、前記第１アームの先端の回転軸上とは異なる位置に設けられ、
前記第２アーム用第１部材の一部は、前記第２アームの先端の回転軸上とは異なる位置に設けられる、
ロボット。
【請求項８】
請求項１から７のうちいずれか一項に記載のロボットであって、
前記第１アーム用第１部材の一部を前記第２部材の凹部に接触させた状態で前記第１アームを複数の姿勢にする前記第１動作と、前記第２アーム用第１部材の一部を前記第２部材の前記凹部に接触させた状態で前記第２アームを複数の姿勢にする前記第２動作と、を行う、
ロボット。
【請求項９】
請求項１から８のうちいずれか一項に記載のロボットであって、
前記第１動作と前記第２動作との前記結果に基づいて、前記第１アームと前記第２アームを一括して校正する、
ロボット。
【請求項１０】
第１アームと第２アームを備えるロボットと、
前記ロボットを動作させる制御装置と、
前記第１アームの先端側に取り付けられる第１アーム用第１部材と、
前記第２アームの先端側に取り付けられる第２アーム用第１部材と、
第２部材と、を含み、
前記制御装置は、
前記第１アーム用第１部材の一部を前記第２部材と１の距離となるように移動させた後に、前記第１アームを複数の姿勢にする第１動作と、前記第２アーム用第１部材の一部を前記第２部材と２の距離となるように移動させた後に、前記第２アームを複数の姿勢にする第２動作と、を行い、
前記第１動作と前記第２動作との結果に基づいて前記第１アームと前記第２アームを校正する、
ロボット校正システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ロボット、及びロボット校正システムに関する。
【背景技術】
【０００２】
ロボットに精度の高い作業を行わせるため、ロボットの機構、撮像装置、作業環境等の校正について研究・開発が行われている。
【０００３】
これに関し、複数のマニピュレーターで協調作業を行うために、複数のロボットの位置合わせを行う発明が行われている（特許文献１参照）。
【０００４】
例えば、特許文献１に記載の相対位置関係取得方式では、第１ロボットのアームの先端に面状ツールを取り付け、第２ロボットのアームの先端に針状ツールを取り付ける。そして、当該方式では、同一直線上にない３点以上において、針状ツールの先端を面状ツールの面に点接触させる。当該方式は、この点接触時の針状ツールの先端の位置を、第１ロボットのベース座標系と、第２ロボットのベース座標系とで算出する。当該方式は、算出された第１ロボットのベース座標系における針状ツールの先端の位置と、算出された第２ロボットのベース座標系における針状ツールの先端の位置とに基づいて、第１ロボットのベース座標系と第２ロボットのベース座標系との間の座標変換行列を算出し、算出された座標変換行列によって第１ロボットと第２ロボットの間の相対位置関係を求める。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−１１１８９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の特許文献１に記載のロボットでは、第１ロボットと第２ロボットの両方を適切に校正していなければ、第１ロボットと第２ロボットの両方による作業を正確に行うことができなかった。
【０００７】
そこで本発明は、上記従来技術の問題に鑑みてなされたものであり、複数のアームにより作業を行う場合の誤差を抑制することができるロボット、及びロボット校正システムを提供する。
【課題を解決するための手段】
【０００８】
本発明の一態様は、第１アームと、第２アームと、前記第１アームの先端側に取り付けられる第１アーム用第１部材と、前記第２アームの先端側に取り付けられる第２アーム用第１部材と、を備え、制御装置から取得された制御信号に基づいて、前記第１アーム用第１部材の一部を第２部材と１の距離となるように移動させた後に、前記第１アームを複数の姿勢にする第１動作と、前記第２アーム用第１部材の一部を前記第２部材と２の距離となるように移動させた後に、前記第２アームを複数の姿勢にする第２動作と、を行い、前記第１動作と前記第２動作との結果に基づいて前記第１アームを制御するためのパラメーターと前記第２アームを制御するためのパラメーターとを校正する、ロボットである。
この構成により、ロボットは、第１アーム用第１部材の一部を第２部材と１の距離となるように移動させた後に、第１アームを複数の姿勢にする第１動作と、第２アーム用第１部材の一部を第２部材と２の距離となるように移動させた後に、第２アームを複数の姿勢にする第２動作と、を行い、第１動作と第２動作との結果に基づいて第１アームを制御するためのパラメーターと第２アームを制御するためのパラメーターとを校正する。これにより、ロボットは、複数のアームにより作業を行う場合の誤差を抑制することができる。
【０００９】
また、本発明の他の態様は、ロボットにおいて、前記１の距離と、前記３の距離とは、略同じである、構成が用いられてもよい。
この構成により、ロボットは、第１アーム用第１部材の一部を第２部材と１の距離となるように移動させた後に、第１アームを複数の姿勢にする第１動作と、第２アーム用第１部材の一部を第２部材と１の距離と略同じ距離である２の距離となるように移動させた後に、第２アームを複数の姿勢にする第２動作と、を行い、第１動作と第２動作との結果に基づいて第１アームと第２アームを校正する。これにより、ロボットは、第１アーム用第１部材の一部を第２部材に対して一定の距離を保ったまま、第１アームに１以上の姿勢を取らせ、第２アーム用第１部材の一部を第２部材に対して一定の距離を保ったまま、第２アームに１以上の姿勢を取らせ、第１アームと第２アームを校正することができる。
【００１０】
また、本発明の他の態様は、ロボットにおいて、前記１の距離と、前記３の距離とは、両方とも略０である、構成が用いられてもよい。
この構成により、ロボットは、第１アーム用第１部材の一部を第２部材と距離が０となるように移動させた後に、第１アームを複数の姿勢にする第１動作と、第２アーム用第１部材の一部を第２部材と距離が０となるように移動させた後に、第２アームを複数の姿勢にする第２動作と、を行い、第１動作と第２動作との結果に基づいて第１アームと第２アームを校正する。これにより、ロボットは、第１アーム用第１部材の一部を第２部材に接触させた状態を保ったまま、第１アームに１以上の姿勢を取らせ、第２アーム用第１部材の一部を第２部材に接触させた状態を保ったまま、第２アームに１以上の姿勢を取らせ、第１アームと第２アームを校正することができる。
【００１１】
また、本発明の他の態様は、ロボットにおいて、第１力センサーと第２力センサーを備え、前記第１アーム用第１部材の一部を前記第２部材と１の距離となるように移動させた後に、少なくとも第１力センサーの出力値に基づいて前記第１アームを複数の姿勢にする前記第１動作と、前記第２アーム用第１部材の一部を前記第２部材と２の距離となるように移動させた後に、少なくとも第２力センサーの出力値に基づいて前記第２アームを複数の姿勢にする前記第２動作と、を行う、構成が用いられてもよい。
この構成により、ロボットは、第１アーム用第１部材の一部を第２部材と１の距離となるように移動させた後に、少なくとも第１力センサーの出力値に基づいて第１アームを複数の姿勢にする第１動作と、第２アーム用第１部材の一部を第２部材と２の距離となるように移動させた後に、少なくとも第２力センサーの出力値に基づいて第２アームを複数の姿勢にする第２動作と、を行う。これにより、ロボットは、力センサーの出力値に基づく第１動作と第２動作との結果に基づいて第１アームと第２アームを校正することができる。
【００１２】
また、本発明の他の態様は、ロボットにおいて、前記第１アーム用第１部材の一部を前記第２部材と前記１の距離となるように移動させる場合、前記第１アーム用第１部材の一部を前記第２部材と前記１の距離となるように移動させた後、前記第１アーム用第１部材の一部を前記第２部材と前記１の距離とは異なる他の距離に移動させて前記第１力センサーの初期化を行い、前記第１アーム用第１部材の一部を前記第２部材と前記１の距離となるように移動させ、前記第２アーム用第１部材の一部を前記第２部材と前記２の距離となるように移動させる場合、前記第２アーム用第１部材の一部を前記第２部材と前記２の距離となるように移動させた後、前記第２アーム用第１部材の一部を前記第２部材と前記２の距離とは異なる他の距離に移動させて前記第２力センサーの初期化を行い、前記第２アーム用第１部材の一部を前記第２部材と前記２の距離となるように移動させる、構成が用いられてもよい。
この構成により、ロボットは、第１アーム用第１部材の一部を第２部材と１の距離となるように移動させる場合、第１アーム用第１部材の一部を第２部材と１の距離となるように移動させた後、第１アーム用第１部材の一部を第２部材と１の距離とは異なる他の距離に移動させて第１力センサーの初期化を行い、第１アーム用第１部材の一部を第２部材と１の距離となるように移動させ、第２アーム用第１部材の一部を第２部材と２の距離となるように移動させる場合、第２アーム用第１部材の一部を第２部材と２の距離となるように移動させた後、第２アーム用第１部材の一部を第２部材と２の距離とは異なる他の距離に移動させて第２力センサーの初期化を行い、第２アーム用第１部材の一部を第２部材と２の距離となるように移動させる。これにより、ロボットは、第１力センサー及び第２力センサーに加わる重力等の外力による誤差を抑制することができる。
【００１３】
また、本発明の他の態様は、ロボットにおいて、前記第１力センサーの前記初期化を行う際、前記第１アーム用第１部材の振動が収まるまで待機した後、前記第１力センサーの前記初期化を行い、前記第１アーム用第１部材の一部を前記第２部材と前記１の距離となるように移動させ、前記第２力センサーの前記初期化を行う際、前記第２アーム用第１部材の振動が収まるまで待機した後、前記第２力センサーの前記初期化を行い、前記第２アーム用第１部材の一部を前記第２部材と前記２の距離となるように移動させる、構成が用いられてもよい。
この構成により、ロボットは、第１力センサーの初期化を行う際、第１アーム用第１部材の振動が収まるまで待機した後、第１力センサーの初期化を行い、第１アーム用第１部材の一部を第２部材と１の距離となるように移動させ、第２力センサーの初期化を行う際、第２アーム用第１部材の振動が収まるまで待機した後、第２力センサーの初期化を行い、第２アーム用第１部材の一部を第２部材と２の距離となるように移動させる。これにより、ロボットは、第１アーム用第１部材の振動により生じる第１力センサーの初期化における誤差と、第２アーム用第１部材の振動により生じる第２力センサーの初期化における誤差とを抑制することができる。
【００１４】
また、本発明の他の態様は、ロボットにおいて、前記第１アーム用第１部材の一部は、前記第１アームの先端の回転軸上とは異なる位置に設けられ、前記第２アーム用第１部材の一部は、前記第２アームの先端の回転軸上とは異なる位置に設けられる、構成が用いられてもよい。
この構成により、ロボットは、第１アームの先端の回転軸上とは異なる位置に設けられた第１アーム用第１部材の一部を第２部材と１の距離となるように移動させた状態で第１アームを複数の姿勢にする第１動作と、第２アームの先端の回転軸上とは異なる位置に設けられた第２アーム用第１部材の一部を第２部材と２の距離となるように移動させた状態で第２アームを複数の姿勢にする第２動作と、を行う。これにより、ロボットは、第１動作と第２動作との結果に基づいて第１アームの先端の回転軸と、第２アームの先端の回転軸とを校正することができる。
【００１５】
また、本発明の他の態様は、ロボットにおいて、前記第１アーム用第１部材の一部を前記第２部材の凹部に接触させた状態で前記第１アームを複数の姿勢にする前記第１動作と、前記第２アーム用第１部材の一部を前記第２部材の前記凹部に接触させた状態で前記第２アームを複数の姿勢にする前記第２動作と、を行う、構成が用いられてもよい。
この構成により、ロボットは、第１アーム用第１部材の一部を第２部材の凹部に接触させた状態で第１アームを複数の姿勢にする第１動作と、第２アーム用第１部材の一部を第２部材の凹部に接触させた状態で第２アームを複数の姿勢にする第２動作と、を行う。これにより、ロボットは、第１アーム用第１部材の一部の位置と、第２アーム用第１部材の一部の位置とを同じ位置に固定することができ、その結果、第１アーム用第１部材の一部と第２アーム用第１部材の一部とのうちいずれか一方又は両方の第２部材との接触点の位置がずれてしまうことによって生じる誤差を抑制することができる。
【００１６】
また、本発明の他の態様は、ロボットにおいて、前記制御装置は、前記第１動作と前記第２動作との前記結果に基づいて、前記第１アームと前記第２アームとを一括して校正する、構成が用いられてもよい。
この構成により、ロボットは、第１動作と第２動作との結果に基づいて、第１アームと第２アームとを一括して校正する。これにより、ロボットは、第１アームの校正と第２アームの校正とに係る誤差を抑制することができる。
【００１７】
また、本発明の他の態様は、第１アームと第２アームを備えるロボットと、前記ロボットを動作させる制御装置と、前記第１アームの先端側に取り付けられる第１アーム用第１部材と、前記第２アームの先端側に取り付けられる第２アーム用第１部材と、第２部材と、を含み、前記制御装置は、前記第１アーム用第１部材の一部を前記第２部材と１の距離となるように移動させた後に、前記第１アームを複数の姿勢にする第１動作と、前記第２アーム用第１部材の一部を前記第２部材と２の距離となるように移動させた後に、前記第２アームを複数の姿勢にする第２動作と、を行い、前記第１動作と前記第２動作との結果に基づいて前記第１アームと前記第２アームを校正する、ロボット校正システムである。
この構成により、ロボット校正システムは、第１アーム用第１部材の一部を第２部材と１の距離となるように移動させた後に、第１アームを複数の姿勢にする第１動作と、第２アーム用第１部材の一部を第２部材と２の距離となるように移動させた後に、第２アームを複数の姿勢にする第２動作と、を行い、第１動作と第２動作との結果に基づいて第１アームと第２アームを校正する。これにより、ロボット校正システムは、複数のアームにより作業を行う場合の誤差を抑制することができる。
【００１８】
以上により、ロボット、及びロボット校正システムは、第１アーム用第１部材の一部を第２部材と１の距離となるように移動させた後に、第１アームを複数の姿勢にする第１動作と、第２アーム用第１部材の一部を第２部材と２の距離となるように移動させた後に、第２アームを複数の姿勢にする第２動作と、を行い、第１動作と第２動作との結果に基づいて第１アームを制御するためのパラメーターと第２アームを制御するためのパラメーターとを校正する。これにより、ロボット、及びロボット校正システムは、複数のアームにより作業を行う場合の誤差を抑制することができる。
【図面の簡単な説明】
【００１９】
【図１】第１実施形態に係るロボット校正システム１の一例を示す構成図である。
【図２】治具Ｊの一例を示す図である。
【図３】校正用情報取得動作に応じてＴＣＰの位置が変化せず、ＴＣＰの姿勢が変化する状況の一例を示す図である。
【図４】ロボット２０が備える第１マニピュレーターＭＮＰ１と第２マニピュレーターＭＮＰ２のそれぞれの各関節と、ロボット２０の腰軸とを例示する図である。
【図５】第１エンドエフェクターＥＮＤ１の一例を示す図である。
【図６】制御装置３０のハードウェア構成の一例を示す図である。
【図７】制御装置３０の機能構成の一例を示す図である。
【図８】制御装置３０が第１マニピュレーターＭＮＰ１及び第２マニピュレーターＭＮＰ２の校正を終えるまでの処理の流れの一例を示すフローチャートである。
【図９】第１マニピュレーターＭＮＰ１の姿勢を例示する図である。
【図１０】第２実施形態に係るロボット校正システム２の一例を示す構成図である。
【図１１】制御装置３０ａの機能構成の一例を示す図である。
【図１２】制御装置３０ａがロボット２０ａに所定の作業を行わせる処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００２０】
＜第１実施形態＞
以下、本発明の第１実施形態について、図面を参照して説明する。図１は、第１実施形態に係るロボット校正システム１の一例を示す構成図である。ロボット校正システム１は、複数のマニピュレーターを備えるロボット２０と、制御装置３０を備える。ロボット校正システム１は、図１に示した治具Ｊを用いてロボット２０が備える複数のマニピュレーターの校正を行う。また、ロボット校正システム１は、ある１つのマニピュレーターに対して行う校正処理のうちの一部の処理を、他の１以上のマニピュレーターに対して繰り返し行う。
【００２１】
そこでまず、ロボット２０が備えるマニピュレーターが１つの場合について説明する。なお、説明の便宜上、以下では、ロボット２０が備えるマニピュレーターが１つの場合の当該マニピュレーターを、第１マニピュレーターＭＮＰ１と称して説明する。
ロボット校正システム１は、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転角を示す情報を、各アクチュエーターに接続される（又は備える）エンコーダーから取得する。以下、説明の便宜上、アクチュエーターの回転角を、単に回転角と称して説明する。
【００２２】
ロボット校正システム１は、各エンコーダーから取得された回転角から、順運動学によって現在の第１マニピュレーターＭＮＰ１のＴＣＰの位置を制御装置３０により算出する。以下では、説明の便宜上、第１マニピュレーターＭＮＰ１のＴＣＰを、第１ＴＣＰと称して説明し、第１ＴＣＰの位置を、第１ＴＣＰ位置と称して説明する。ロボット校正システム１は、この算出された第１ＴＣＰ位置に基づいて、第１マニピュレーターＭＮＰ１により各種の作業を行うようにロボット２０を制御する。
【００２３】
しかし、算出された第１ＴＣＰ位置は、第１マニピュレーターＭＮＰ１を構成する部材の弾性によって生じる誤差や、アクチュエーターの回転に係る誤差等によって、実際の第１ＴＣＰ位置と異なる位置を示す場合がある。ロボット校正システム１が行う第１マニピュレーターＭＮＰ１の校正とは、この算出された第１ＴＣＰ位置と実際の第１ＴＣＰ位置との差を補正することを示す。
【００２４】
例えば、第１マニピュレーターＭＮＰ１が１つのアクチュエーターのみを備えている場合、エンコーダーから取得された回転角をθとし、算出された第１ＴＣＰ位置を実際の第１ＴＣＰ位置として再現するアクチュエーターの回転角をφとした時、この補正は、以下の式（１）に示すように、ある値η（正又は負のいずれかの値）を回転角θに加算することによって行われる。
【００２５】
φ＝θ＋η  ・・・（１）
【００２６】
以下では、上記の式（１）に示したような回転角を補正するための値ηを、ジョイントオフセットと称して説明する。従って、ロボット校正システム１が行う第１マニピュレーターＭＮＰ１の校正とは、すなわち、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーター毎にジョイントオフセットを算出し、算出されたジョイントオフセットによって第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転角を補正することを示す。以下では、説明の便宜上、第１マニピュレーターＭＮＰ１が備える複数のアクチュエーターそれぞれの回転角毎のジョイントオフセットを、まとめて第１ジョイントオフセットと称して説明する。
【００２７】
この第１マニピュレーターＭＮＰ１の校正により、ロボット校正システム１は、順運動学によって算出される第１ＴＣＰ位置と、実際の第１ＴＣＰ位置とを精度よく一致させることができる。その結果、ロボット校正システム１は、ロボット２０が備える第１マニピュレーターＭＮＰ１に高い精度の作業を行わせることができる。以下では、単に第１ＴＣＰ位置と称した場合、実際の第１ＴＣＰ位置を示す。
【００２８】
このような第１マニピュレーターＭＮＰ１の校正を行う際、ロボット校正システム１は、第１ＴＣＰ位置を、ある位置に固定する。なお、ロボット校正システム１は、第１ＴＣＰ位置を、ある位置に固定する構成に代えて、ある所定の領域内に固定する構成であってもよいが、第１ＴＣＰ位置をある位置に固定する構成であった方が、第１ＴＣＰ位置が所定の領域内でずれてしまうことによって生じる誤差を抑制することができるため望ましい。
【００２９】
ロボット校正システム１は、第１ＴＣＰ位置をある位置に固定するため、例えば、治具Ｊを用いる。ロボット校正システム１は、第１マニピュレーターＭＮＰ１が備える第１エンドエフェクターＥＮＤ１の所定部位を、治具Ｊの上面に設けられた凹部Ｈに接触させる。第１エンドエフェクターＥＮＤ１の所定部位は、例えば、第１エンドエフェクターＥＮＤ１に設けられた突起状の部位の先端である。この先端には、球が設けられている。この球の中心には、第１ＴＣＰ位置が設定されている。治具Ｊの上面に設けられた凹部Ｈは、このような第１エンドエフェクターＥＮＤ１の所定部位が接触した場合、第１エンドエフェクターＥＮＤ１の所定部位の治具Ｊの上面に沿った方向へ動かないようにする。
【００３０】
以下では、説明の便宜上、第１エンドエフェクターＥＮＤ１の所定部位を凹部Ｈに接触させることで、第１エンドエフェクターＥＮＤ１の所定部位が治具Ｊの上面に沿った方向への動かないようにすることを、第１エンドエフェクターＥＮＤ１の所定部位を凹部Ｈに嵌めると称して説明する。また、以下では、説明の便宜上、第１ＴＣＰ位置が固定されるある位置を、固定位置Ｘと称して説明する。なお、この一例において、第１エンドエフェクターＥＮＤ１の所定部位が球である場合について説明するが、第１エンドエフェクターＥＮＤ１の所定部位は、第１ＴＣＰ位置が固定位置Ｘに固定することができれば、球である必要は無く、他の形状であってもよい。
【００３１】
すなわち、ロボット校正システム１は、第１ＴＣＰ位置を固定位置Ｘに固定するため、第１エンドエフェクターＥＮＤ１の所定部位を凹部Ｈに嵌める。そして、ロボット校正システム１は、第１エンドエフェクターＥＮＤ１の所定部位を凹部Ｈに嵌めたままの状態で、校正用情報取得動作をロボット２０に行わせる。
【００３２】
ここで、第１エンドエフェクターＥＮＤ１の所定部位を凹部Ｈに嵌めたままの状態とは、第１ＴＣＰ位置が固定位置Ｘに固定されるが、第１ＴＣＰの姿勢は固定されない状態を示す。この一例において、第１マニピュレーターＭＮＰ１の第１ＴＣＰの姿勢は、ＣＰＵ（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）等のハードウェア機能部であってもよい。
【０１４７】
画像取得部５０は、第１固定撮像部２１及び第２固定撮像部２２によりステレオ撮像されたステレオ撮像画像を取得する。画像取得部５０は、取得したステレオ撮像画像を制御部３６ａに出力する。
制御部３６ａは、制御装置３０ａの全体を制御する。制御部３６ａは、表示制御部４０と、校正制御部４１と、撮像制御部５１と、検出制御部５２と、位置姿勢算出部５３と、ロボット制御部５４を備える。
【０１４８】
撮像制御部５１は、第１固定撮像部２１及び第２固定撮像部２２が撮像可能な範囲をステレオ撮像するように制御する。
検出制御部５２は、画像取得部５０から取得されたステレオ撮像画像に基づいて、ステレオ撮像画像からパターンマッチング等によって作業対象Ｍを検出する。
【０１４９】
位置姿勢算出部５３は、検出制御部５２によりステレオ撮像画像から検出された作業対象Ｍのロボット座標系における位置及び姿勢を算出する。
ロボット制御部５４は、位置姿勢算出部５３により算出されたロボット座標系における作業対象Ｍの位置及び姿勢に基づいてロボット２０ａに所定の作業を行わせる。
【０１５０】
以下、図１２を参照して、制御装置３０ａがロボット２０ａに所定の作業を行わせる処理について説明する。図１２は、制御装置３０ａがロボット２０ａに所定の作業を行わせる処理の流れの一例を示すフローチャートである。まず、撮像制御部５１は、第１固定撮像部２１及び第２固定撮像部２２に撮像可能な範囲をステレオ撮像させる（ステップＳ３００）。次に、画像取得部５０は、第１固定撮像部２１及び第２固定撮像部２２によりステレオ撮像されたステレオ撮像画像を取得し、取得されたステレオ撮像画像を制御部３６ａに出力する（ステップＳ３１０）。
【０１５１】
次に、検出制御部５２は、ステップＳ３１０で画像取得部５０から取得されたステレオ撮像画像から作業対象Ｍを検出する（ステップＳ３２０）。次に、位置姿勢算出部５３は、ステップＳ３１０で画像取得部５０により取得されたステレオ撮像画像に基づいて、ステップＳ３２０で検出された作業対象Ｍのロボット座標系における位置及び姿勢を算出する（ステップＳ３３０）。次に、ロボット制御部５４は、ステップＳ３３０で算出されたロボット座標系における作業対象Ｍの位置及び姿勢に基づいてロボット２０ａに所定の作業を行わせる（ステップＳ３４０）。
【０１５２】
以上説明したように、第２実施形態に係るロボット校正システム２は、第１実施形態で説明した複数のマニピュレーターの校正によって、所定の作業を高い精度で行うことができる。
【０１５３】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【０１５４】
また、以上に説明した装置（例えば、ロボット校正システム１の制御装置３０、ロボット校正システム２の制御装置３０ａ）における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１５５】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【０１５６】
１、２  ロボット校正システム、１１  第１動撮像部、１２  第２動撮像部、２０、２０ａ  ロボット、２１  第１固定撮像部、２２  第２固定撮像部、２３、力センサー、２３−１  第１力センサー、２３−２  第２力センサー、３０、３０ａ  制御装置、３１  ＣＰＵ、３２  記憶部、３３  入力受付部、３４  通信部、３５  表示部、３６、３６ａ  制御部、４０  表示制御部、４１  校正制御部、４２、５４  ロボット制御部、４３  力センサー初期化部、４４  力センサー情報取得部、４５  回転角取得部、４６  ジョイントオフセット算出部、４７  誤差評価部、４８  教示部、５０  画像取得部、５１  撮像制御部、５２  検出制御部、５３  位置姿勢算出部
【図１】
2016120531.tif 000003
【図２】
2016120531.tif 000004
【図３】
2016120531.tif 000005
【図４】
2016120531.tif 000006
【図５】
2016120531.tif 000007
【図６】
2016120531.tif 000008
【図７】
2016120531.tif 000009
【図８】
2016120531.tif 000010
【図９】
2016120531.tif 000011
【図１０】
2016120531.tif 000012
【図１１】
2016120531.tif 000013
【図１２】
2016120531.tif 000014