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