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