(57)【要約】【課題】低いコストでより迅速にキャリブレーションを実行する。【解決手段】位置および向きの変更が可能な可動部２０と、可動部２０を撮影してカメラ画像４０を作成するカメラ１４と、可動部２０の形状モデル３０を記憶する記憶部２２と、カメラ画像４０と形状モデル３０とのマッチングから可動部２０のカメラ座標系における位置および向きを検出するマッチング処理部１５２と、可動部２０の動きを制御する動作制御部２１が認識している可動部２０のロボット座標系における位置および向きの情報を取得する制御情報取得部１５０と、カメラ座標系における可動部２０の位置および向き、ならびに、ロボット座標系における可動部２０の位置および向きに基づいて、カメラ座標系とロボット座標系との対応付けを行う座標校正部１５１とを備える。【選択図】図２
2014014912.tif 000002
【特許請求の範囲】
【請求項１】
ロボットシステムであって、
位置および向きの変更が可能な可動部と、
前記可動部を撮影してカメラ画像を作成するカメラと、
前記可動部の形状モデルを記憶する記憶部と、
前記カメラ画像と前記形状モデルとのマッチングから前記可動部のカメラ座標系における位置および向きを検出するマッチング処理部と、
前記可動部の動きを制御する動作制御部が認識している前記可動部のロボット座標系における位置および向きの情報を取得する制御情報取得部と、
前記カメラ座標系における前記可動部の位置および向き、ならびに、前記ロボット座標系における前記可動部の位置および向きに基づいて、前記カメラ座標系と前記ロボット座標系との対応付けを行う座標系校正部と
を備えることを特徴とするロボットシステム。
【請求項２】
請求項１に記載のロボットシステムであって、
前記マッチング処理部は、
３次元の前記形状モデルから前記可動部の２次元画像を生成し、生成した２次元画像を用いて、前記カメラ画像内の前記可動部の位置および向きを検出することを特徴とするロボットシステム。
【請求項３】
請求項１または２に記載のロボットシステムであって、
前記形状モデルは、前記可動部の３次元のＣＡＤ（computer aided design）データであることを特徴とするロボットシステム。
【請求項４】
請求項１から３のいずれか一項に記載のロボットシステムであって、
前記可動部は、アーム、アームのリンク、またはエンドエフェクターであることを特徴とするロボットシステム。
【請求項５】
請求項１から４のいずれか一項に記載のロボットシステムであって、
前記記憶部は、
複数の異なる可動部の形状モデルを格納し、
前記マッチング処理部は、
複数の前記可動部の形状モデルの少なくともいずれかを用いて、当該可動部のカメラ座標系における位置および向きを検出し、
前記座標系校正部は、
前記マッチング処理部によってカメラ座標系における位置および向きが検出された可動部について、前記カメラ座標系と前記ロボット座標系との対応付けを行うことを特徴とするロボットシステム。
【請求項６】
請求項５に記載のロボットシステムであって、
それぞれの前記可動部の表面には、異なる識別情報が付されており、
前記マッチング処理部は、
前記カメラ画像の中で識別情報を検出し、検出した識別情報に対応する可動部の形状モデルを用いて、当該可動部のカメラ座標系における位置および向きを検出することを特徴とするロボットシステム。
【請求項７】
ロボットであって、
位置および向きの変更が可能な可動部と、
前記可動部を撮影したカメラ画像を取得する画像取得部と、
前記可動部の形状モデルを記憶する記憶部と、
前記カメラ画像と前記形状モデルとのマッチングから前記可動部のカメラ座標系における位置および向きを検出するマッチング処理部と、
前記可動部の動きを制御する動作制御部と、
前記動作制御部が認識している前記可動部のロボット座標系における位置および向きの情報を取得する制御情報取得部と、
前記カメラ座標系における前記可動部の位置および向き、ならびに、前記ロボット座標系における前記可動部の位置および向きに基づいて、前記カメラ座標系と前記ロボット座標系との対応付けを行ってキャリブレーションパラメーターを生成する座標系校正部と
を備え、
前記動作制御部は、
生成された前記キャリブレーションパラメーターに基づいて前記可動部の動きを制御することを特徴とするロボット。
【請求項８】
ロボットを制御するロボット制御装置であって、
位置および向きの変更が可能なロボットの可動部を撮影したカメラ画像を取得する画像取得部と、
前記可動部の動きを制御する動作制御部が認識している前記可動部のロボット座標系における位置および向きの情報を取得する制御情報取得部と、
前記可動部の形状モデルを取得し、前記カメラ画像と前記形状モデルとのマッチングから前記可動部のカメラ座標系における位置および向きを検出するマッチング処理部と、
前記カメラ座標系における前記可動部の位置および向き、ならびに、前記ロボット座標系における前記可動部の位置および向きに基づいて、前記カメラ座標系と前記ロボット座標系との対応付けを行ってキャリブレーションパラメーターを生成する座標系校正部と、
前記キャリブレーションパラメーターを前記動作制御部へ出力する出力部と
を備えることを特徴とするロボット制御装置。
【請求項９】
ロボットの制御方法であって、
位置および向きの変更が可能なロボットの可動部を撮影したカメラ画像を取得する画像取得ステップと、
前記可動部の動きを制御する動作制御部が認識している前記可動部のロボット座標系における位置および向きの情報を取得する制御情報取得ステップと、
前記可動部の形状モデルを取得し、前記カメラ画像と前記形状モデルとのマッチングから前記可動部のカメラ座標系における位置および向きを検出するマッチング処理ステップと、
前記カメラ座標系における前記可動部の位置および向き、ならびに、前記ロボット座標系における前記可動部の位置および向きに基づいて、前記カメラ座標系と前記ロボット座標系との対応付けを行ってキャリブレーションパラメーターを生成する座標系校正ステップと、
前記キャリブレーションパラメーターを前記動作制御部へ出力する出力ステップと
を実行することを特徴とするロボット制御方法。
【請求項１０】
ロボットを制御するロボット制御プログラムであって、
コンピューターに、
位置および向きの変更が可能なロボットの可動部を撮影したカメラ画像を取得する画像取得機能と、
前記可動部の動きを制御する動作制御部が認識している前記可動部のロボット座標系における位置および向きの情報を取得する制御情報取得機能と、
前記可動部の形状モデルを取得し、前記カメラ画像と前記形状モデルとのマッチングから前記可動部のカメラ座標系における位置および向きを検出するマッチング処理機能と、
前記カメラ座標系における前記可動部の位置および向き、ならびに、前記ロボット座標系における前記可動部の位置および向きに基づいて、前記カメラ座標系と前記ロボット座標系との対応付けを行ってキャリブレーションパラメーターを生成する座標系校正機能と、
前記キャリブレーションパラメーターを前記動作制御部へ出力する出力機能と
を実現させることを特徴とするロボット制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットシステム、ロボット、ロボット制御装置、ロボット制御方法、およびロボット制御プログラムに関する。
【背景技術】
【０００２】
下記の特許文献１には、高精度にワーク形状に形成された計測ピースをロボットハンドに把持させ、ロボットハンドに把持された計測ピースを撮影した画像から、ロボット本体とカメラの座標合わせを行う旨が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−３４０１１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１の技術では、ロボット本体とカメラの座標合わせ（キャリブレーション）を行う際に、ロボットに計測ピースを把持させる動作が必要となり、その動作の分、キャリブレーションに時間がかかる。また、計測ピースと呼ばれる特別な冶具を用いるため、それを作成するコストが別途必要となる。
【０００５】
そこで、本発明は、低いコストで、より迅速にキャリブレーションを行うことを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するための第一の態様は、例えば、ロボットシステムであって、位置および向きの変更が可能な可動部と、前記可動部を撮影してカメラ画像を作成するカメラと、前記可動部の形状モデルを記憶する記憶部と、前記カメラ画像と前記形状モデルとのマッチングから前記可動部のカメラ座標系における位置および向きを検出するマッチング処理部と、前記可動部の動きを制御する動作制御部が認識している前記可動部のロボット座標系における位置および向きの情報を取得する制御情報取得部と、前記カメラ座標系における前記可動部の位置および向き、ならびに、前記ロボット座標系における前記可動部の位置および向きに基づいて、前記カメラ座標系と前記ロボット座標系との対応付けを行う座標系校正部とを備える。
【０００７】
これにより、低いコストで、より迅速にキャリブレーションを実行することができる。
【０００８】
また、上記ロボットシステムにおいて、前記マッチング処理部は、３次元の前記形状モデルから前記可動部の２次元画像を生成し、生成した２次元画像を用いて、前記カメラ画像内の前記可動部の位置および向きを検出するようにしてもよい。
【０００９】
これにより、３次元の可動部の形状モデルから、前記カメラ画像内の前記可動部の位置および向きを確実に検出することができる。また、カメラを複数台設けなくても、１台のカメラからの画像で、キャリブレーションを実行することができる。
【００１０】
また、上記ロボットシステムにおいて、前記形状モデルは、前記可動部のＣＡＤ（computer aided design）データであってもよい。これにより、前記可動部の位置および向きを高い精度で検出することができる。また、ロボットシステムの設計段階で既に作成されているデータを流用することができるので、キャリブレーション用の形状モデルのデータを作成するのにかかるコストを省くことができる。
【００１１】
また、上記ロボットシステムにおいて、前記可動部は、アーム、アームのリンク、またはエンドエフェクターであってもよい。これにより、確実にキャリブレーションを実行することができる。
【００１２】
また、上記ロボットシステムにおいて、前記記憶部は、複数の異なる可動部の形状モデルを格納し、前記マッチング処理部は、複数の前記可動部の形状モデルの少なくともいずれかを用いて、当該可動部のカメラ座標系における位置および向きを検出し、前記座標系校正部は、前記マッチング処理部によってカメラ座標系における位置および向きが検出された可動部について、前記カメラ座標系と前記ロボット座標系との対応付けを行うようにしてもよい。
【００１３】
これにより、カメラが設置された位置から撮影可能な可動部が存在すれば、他の可動部がカメラから撮影できない位置にある場合でも、キャリブレーションを実行することができる。
【００１４】
また、上記ロボットシステムにおいて、それぞれの前記可動部の表面には、異なる識別情報が付されており、前記マッチング処理部は、前記カメラ画像の中で識別情報を検出し、検出した識別情報に対応する可動部の形状モデルを用いて、当該可動部のカメラ座標系における位置および向きを検出するようにしてもよい。
【００１５】
これにより、複数の形状モデルの中で、マッチング対象となる可動部の形状モデルを絞り込むことができるため、より迅速にキャリブレーションを完了することができる。
【００１６】
また、上記ロボットシステムにおいて、前記記憶部は、ロボットシステム内の可動部の中で、動作時の変位が大きい可動部の形状モデルを格納することが好ましい。これにより、キャリブレーションの精度を高めることができる。
【００１７】
上記課題を解決するための第二の態様は、例えば、ロボットであって、位置および向きの変更が可能な可動部と、前記可動部を撮影したカメラ画像を取得する画像取得部と、
前記可動部の形状モデルを記憶する記憶部と、前記カメラ画像と前記形状モデルとのマッチングから前記可動部のカメラ座標系における位置および向きを検出するマッチング処理部と、前記可動部の動きを制御する動作制御部と、前記動作制御部が認識している前記可動部のロボット座標系における位置および向きの情報を取得する制御情報取得部と、前記カメラ座標系における前記可動部の位置および向き、ならびに、前記ロボット座標系における前記可動部の位置および向きに基づいて、前記カメラ座標系と前記ロボット座標系との対応付けを行ってキャリブレーションパラメーターを生成する座標系校正部とを備え、前記動作制御部は、生成された前記キャリブレーションパラメーターに基づいて前記可動部の動きを制御する。
【００１８】
上記課題を解決するための第三の態様は、例えば、ロボットを制御するロボット制御装置であって、位置および向きの変更が可能なロボットの可動部を撮影したカメラ画像を取得する画像取得部と、前記可動部の動きを制御する動作制御部が認識している前記可動部のロボット座標系における位置および向きの情報を取得する制御情報取得部と、前記可動部の形状モデルを取得し、前記カメラ画像と前記形状モデルとのマッチングから前記可動部のカメラ座標系における位置および向きを検出するマッチング処理部と、前記カメラ座標系における前記可動部の位置および向き、ならびに、前記ロボット座標系における前記可動部の位置および向きに基づいて、前記カメラ座標系と前記ロボット座標系との対応付けを行ってキャリブレーションパラメーターを生成する座標系校正部と、前記キャリブレーションパラメーターを前記動作制御部へ出力する出力部とを備える。
【００１９】
上記課題を解決するための第四の態様は、例えば、ロボットの制御方法であって、位置および向きの変更が可能なロボットの可動部を撮影したカメラ画像を取得する画像取得ステップと、前記可動部の動きを制御する動作制御部が認識している前記可動部のロボット座標系における位置および向きの情報を取得する制御情報取得ステップと、前記可動部の形状モデルを取得し、前記カメラ画像と前記形状モデルとのマッチングから前記可動部のカメラ座標系における位置および向きを検出するマッチング処理ステップと、前記カメラ座標系における前記可動部の位置および向き、ならびに、前記ロボット座標系における前記可動部の位置および向きに基づいて、前記カメラ座標系と前記ロボット座標系との対応付けを行ってキャリブレーションパラメーターを生成する座標系校正ステップと、前記キャリブレーションパラメーターを前記動作制御部へ出力する出力ステップとを実行する。
【００２０】
上記課題を解決するための第五の態様は、例えば、ロボットを制御するロボット制御プログラムであって、コンピューターに、位置および向きの変更が可能なロボットの可動部を撮影したカメラ画像を取得する画像取得機能と、前記可動部の動きを制御する動作制御部が認識している前記可動部のロボット座標系における位置および向きの情報を取得する制御情報取得機能と、前記可動部の形状モデルを取得し、前記カメラ画像と前記形状モデルとのマッチングから前記可動部のカメラ座標系における位置および向きを検出するマッチング処理機能と、前記カメラ座標系における前記可動部の位置および向き、ならびに、前記ロボット座標系における前記可動部の位置および向きに基づいて、前記カメラ座標系と前記ロボット座標系との対応付けを行ってキャリブレーションパラメーターを生成する座標系校正機能と、前記キャリブレーションパラメーターを前記動作制御部へ出力する出力機能とを実現させる。
【図面の簡単な説明】
【００２１】
【図１】本発明の一実施形態におけるロボットシステム１０の外観の一例を示す図。
【図２】ロボットシステム１０の機能構成の一例を示すブロック図。
【図３】記憶部２２内に格納されている形状モデル３０の一例を示す図。
【図４】カメラ１４によって作成されたカメラ画像４０の一例を示す図。
【図５】形状モデル３０から作成される２次元画像３１の一例を示す図。
【図６】マッチング処理を説明するための概念図。
【図７】ロボット制御装置１５の動作の一例を示すフローチャート。
【図８】マッチング処理（ステップＳ２００）の一例を示すフローチャート。
【図９】ロボット制御装置１５の機能を実現するコンピューター５０の一例を示す図。
【発明を実施するための形態】
【００２２】
以下、本発明の実施の形態について図面を参照しながら説明する。
【００２３】
図１は、本発明の一実施形態におけるロボットシステム１０の外観の一例を示す。ロボットシステム１０は、ロボット本体１１、カメラ１４、およびロボット制御装置１５を備える。
【００２４】
本実施形態において、ロボット本体１１には、２本のアーム１２が取り付けられており、それぞれのアーム１２の先端には、ハンド等のエンドエフェクター１３が取り付けられている。それぞれのアーム１２は、複数のジョイント１２０と、複数のリンク１２１とを有する。
【００２５】
それぞれのジョイント１２０は、ロボット本体１１とリンク１２１や、リンク１２１どうし、リンク１２１とエンドエフェクター１３を、回動自在に（ただし、所定の可動範囲内で回動可能に）連結している。それぞれのジョイント１２０は、例えば、回転ジョイントであり、リンク１２１間の角度を変化させたり、リンク１２１を軸回転させたりできるように設けられている。
【００２６】
ロボット本体１１は、それぞれのジョイント１２０を連動させて駆動することにより、エンドエフェクター１３を、自在に（ただし、所定の可動範囲内で）移動させることができるとともに、自由な方向へ向けることもできる。図１に示した例では、それぞれのアーム１２は、６つのジョイント１２０を有する６軸アームとなっている。
【００２７】
また、ロボット本体１１は、ロボット制御装置１５から制御情報を要求された場合に、予め定められた一方のエンドエフェクター１３について、ロボット本体１１が認識しているロボット座標系におけるエンドエフェクター１３の位置および向きの情報をロボット制御装置１５へ送る。なお、エンドエフェクター１３の位置および向きは、ロボットの他の部位との相対的な位置関係において姿勢と呼ぶこともでき、エンドエフェクター１３の位置および向きの変化は、エンドエフェクター１３の姿勢の変化と言ってもよい。
【００２８】
このとき、エンドエフェクター１３が、ハンドのように形状が変化するものである場合、ロボット本体１１は、予め定められた形状（例えば開いた状態）となるようにエンドエフェクター１３を制御し、そのときのエンドエフェクター１３の位置および向きの情報をロボット制御装置１５へ送る。
【００２９】
カメラ１４は、エンドエフェクター１３を撮影してカメラ画像を作成し、作成したカメラ画像をロボット制御装置１５へ送る。なお、ユーザーは、予め定められた一方のエンドエフェクター１３がカメラ１４によって撮影されるカメラ画像に映るように、カメラ１４の向きを調整する。
【００３０】
ロボット制御装置１５は、キャリブレーション時に、ロボット本体１１からエンドエフェクター１３の位置および向きの情報を取得し、そのときのカメラ画像をカメラ１４から取得する。そして、ロボット制御装置１５は、カメラ画像に投影されるカメラ座標系におけるエンドエフェクター１３の位置および向きを特定する。
【００３１】
そして、ロボット制御装置１５は、ロボット本体１１が認識しているロボット座標系におけるエンドエフェクター１３の位置および向きの情報と、カメラ座標系におけるエンドエフェクター１３の位置および向きの情報とに基づいて、両座標系の対応付けを行い、対応付けを示す情報をキャリブレーションパラメーターとしてロボット本体１１へ出力する。
【００３２】
キャリブレーション終了後の実動作において、ロボット本体１１は、カメラ１４によって撮影されたカメラ画像を取得し、予め定められた目標点を当該画像内で認識する。そして、ロボット本体１１は、認識した目標点に対して予め定められたエンドエフェクター１３の位置および向きとなるアーム１２の制御量を、ロボット制御装置１５から受け取ったキャリブレーションパラメーターを用いて算出する。そして、ロボット本体１１は、算出した制御量に従ってアーム１２を制御することで、所定の作業を実行する。
【００３３】
図２は、ロボットシステム１０の機能構成の一例を示すブロック図である。図２において、可動部２０とは、位置および向きの変更が可能なロボットの部位であって、アーム１２や、リンク１２１、エンドエフェクター１３などを機能的に表わしたものである。また、動作制御部２１は、ロボット本体１１内の機能を表わしたものである。
【００３４】
記憶部２２には、例えば図３に示すような、可動部２０の３次元の形状モデル３０のデータが格納されている。本実施形態において、記憶部２２には、エンドエフェクター１３の形状モデル３０が格納されている。
【００３５】
また、本実施形態において、形状モデル３０は、例えば３次元のＣＡＤデータである。エンドエフェクター１３のＣＡＤデータは、ロボットシステム１０の設計時に既に作成されているデータであるため、キャリブレーション用に改めて作成する必要がない。そのため、キャリブレーションを行うにあたってのコストや手間を削減することができる。
【００３６】
なお、本実施形態におけるキャリブレーションを行うためには、形状モデル３０は、３次元の外観形状およびその寸法の情報を含むデータであればよく、そのようなデータを形状モデル３０として用いれば、必ずしも内部の形状等の情報を含むＣＡＤデータを用いる必要はない。
【００３７】
また、記憶部２２には、カメラ１４の焦点距離などのカメラパラメーターの情報が予め格納されている。本実施形態において、記憶部２２はロボット制御装置１５の外部に設けられ、通信ケーブルを介してロボット制御装置１５に接続されている。
【００３８】
ロボット制御装置１５は、制御情報取得部１５０、座標校正部１５１、マッチング処理部１５２、画像取得部１５３、および出力部１５４を有する。
【００３９】
制御情報取得部１５０は、動作制御部２１が認識しているロボット座標系におけるエンドエフェクター１３の位置および向きの情報を、動作制御部２１から取得して座標校正部１５１へ送る。
【００４０】
画像取得部１５３は、カメラ１４からカメラ画像を取得してマッチング処理部１５２へ送る。カメラ１４から受け取ったカメラ画像４０には、例えば図４に示すようにエンドエフェクター１３が映っている。
【００４１】
マッチング処理部１５２は、画像取得部１５３からカメラ画像を受け取った場合に、記憶部２２からエンドエフェクター１３の形状モデル３０のデータおよびカメラパラメーターを取得する。
【００４２】
そして、マッチング処理部１５２は、例えば図５に示すように、３次元の形状モデル３０を様々な方向から見た場合の２次元画像３１を作成する。なお、図５に示した２次元画像３１はあくまで一例であり、実際には、これ以外の方向から形状モデル３０を見た場合の２次元画像が作成されてもよい。
【００４３】
そして、マッチング処理部１５２は、作成した２次元画像３１のそれぞれを、例えば図６に示すように、カメラ画像４０上で向きや大きさを変えながらカメラ画像４０上を走査し、カメラ画像４０との類似度が所定値以上となる２次元画像３１の向きおよび大きさを検索する。
【００４４】
なお、それぞれの部品は、ロボットとして組み上げられた状態では、他の部品との接続部分がカメラ１４からは見えない場合が多い。そのため、マッチング処理部１５２は、２次元画像３１において、接続部分などカメラ１４から見えない部分については、類似度の算出対象から除外する。
【００４５】
所定値以上の類似度となる２次元画像３１の向きおよび大きさが見つかった場合、マッチング処理部１５２は、その２次元画像３１のカメラ画像４０上での大きさおよび向きに基づいて、カメラ座標系におけるエンドエフェクター１３の位置および向きを算出し、算出した位置および向きの情報を座標校正部１５１へ送る。
【００４６】
ここで、カメラ１４からエンドエフェクター１３までの距離は、カメラ画像４０上でのエンドエフェクター１３の大きさと、カメラ１４の焦点距離に比例する。マッチング処理部１５２は、エンドエフェクター１３の３次元の形状モデル３０の寸法と、カメラ１４の焦点距離とが予めわかっているため、カメラ座標系において、カメラ１４からエンドエフェクター１３までの距離を算出することができる。
【００４７】
また、本実施形態において、記憶部２２に格納されている形状モデルは、エンドエフェクター１３の３次元ＣＡＤデータであるため、マッチング処理部１５２は、当該ＣＡＤデータを用いて、カメラ座標系において、カメラ１４からエンドエフェクター１３までの距離を高い精度で算出することができる。
【００４８】
座標校正部１５１は、制御情報取得部１５０から受け取ったロボット座標系におけるエンドエフェクター１３の位置および向きの情報、ならびに、マッチング処理部１５２から受け取ったカメラ座標系におけるエンドエフェクター１３の位置および向きの情報に基づいて、カメラ座標系とロボット座標系との対応付けを行う。そして、座標校正部１５１は、対応付けを示す情報を含むキャリブレーションパラメーターを出力部１５４へ送る。
【００４９】
例えば、座標校正部１５１は、カメラ座標系およびロボット座標系のそれぞれにおいて、エンドエフェクター１３上で対応する所定個数の点の座標を用いて、カメラ座標系とロボット座標系との回転行列および並進ベクトルを求めることにより、カメラ座標系とロボット座標系との対応付けを行う。そして、座標校正部１５１は、求めた回転行列および並進ベクトルの情報を含むキャリブレーションパラメーターを出力部１５４へ送る。
【００５０】
出力部１５４は、座標校正部１５１から受け取ったキャリブレーションパラメーターを動作制御部２１へ出力する。
【００５１】
図７は、ロボット制御装置１５の動作の一例を示すフローチャートを示す。例えば、ロボットシステム１０の設置後に、ロボット制御装置１５がユーザーからキャリブレーションの指示を受け付けることにより、ロボットシステム１０は、本フローチャートに示す動作を開始する。
【００５２】
まず、画像取得部１５３は、カメラ１４にエンドエフェクター１３の撮影を指示する。カメラ１４は、エンドエフェクター１３を撮影してカメラ画像を作成し、作成したカメラ画像をロボット制御装置１５へ送る（ステップＳ１００）。画像取得部１５３は、カメラ１４からカメラ画像を受け取ってマッチング処理部１５２へ送る。
【００５３】
次に、マッチング処理部１５２は、図８に示すマッチング処理を実行する（ステップＳ２００）。図８は、マッチング処理（ステップＳ２００）の一例を示すフローチャートである。
【００５４】
マッチング処理部１５２は、記憶部２２からエンドエフェクター１３の形状モデルのデータおよびカメラパラメーターを取得する（ステップＳ２０１）。そして、マッチング処理部１５２は、カメラ１４から見た場合のエンドエフェクター１３の形状モデルの向きを初期値として設定する（ステップＳ２０２）。
【００５５】
次に、マッチング処理部１５２は、設定した向きにおいてカメラ１４から見えるエンドエフェクター１３の２次元画像を作成する（ステップＳ２０３）。そして、マッチング処理部１５２は、作成した２次元画像において、画像取得部１５３から受け取ったカメラ画像上での大きさを初期値として設定する（ステップＳ２０４）。
【００５６】
次に、マッチング処理部１５２は、設定した大きさの２次元画像を、カメラ画像上での位置や向きを変えながらカメラ画像上を走査し、エンドエフェクター１３の２次元画像とカメラ画像との類似度を算出する（ステップＳ２０５）。そして、マッチング処理部１５２は、類似度が所定値以上の位置および向きが存在したか否かを判定する（ステップＳ２０６）。
【００５７】
ここで、マッチング処理部１５２は、例えば、初めは、位置に関して数ピクセルおきに、向きに関して数度おきに、位置および向きを粗く変えて類似度を算出し、所定値以上の類似度の位置および向きが存在しない場合に、最も類似度の高い位置および向きの組み合わせについて、１ピクセルおよび１度単位で細かく位置および向きを変えて類似度を算出するようにすることが好ましい。
【００５８】
類似度が所定値以上の位置および向きが存在した場合（ステップＳ２０６：Ｙｅｓ）、マッチング処理部１５２は、そのときの２次元画像およびその大きさ、ならびに、そのときの位置および向きに基づいて、カメラ座標系におけるエンドエフェクター１３の位置および向きを特定する（ステップＳ２１１）。そして、マッチング処理部１５２は、特定した位置および向きの情報を座標校正部１５１へ送り、本フローチャートに示したマッチング処理（ステップＳ２００）を終了する。
【００５９】
類似度が所定値以上の位置および向きが存在しなかった場合（ステップＳ２０６：Ｎｏ）、マッチング処理部１５２は、全ての大きさのパターンについて判定したか否かを判定する（ステップＳ２０７）。全ての大きさのパターンについて判定していない場合（ステップＳ２０７：Ｎｏ）、マッチング処理部１５２は、２次元画像の大きさを変更し（ステップＳ２０８）、再びステップＳ２０５に示した処理を実行する。
【００６０】
ここで、マッチング処理部１５２は、例えば、初めは、大きさの差が大きいいくつかの異なる大きさのパターンについて粗く大きさを変えてステップＳ２０５およびステップＳ２０６を実行する。そして、所定値以上の類似度の位置および向きの組み合わせが検出できなかった場合に、マッチング処理部１５２は、最も高い類似度が検出された大きさ付近で、大きさの差が小さいいくつかの異なる大きさのパターンについて細かく大きさを変えてステップＳ２０５およびステップＳ２０６を実行することが好ましい。
【００６１】
全ての大きさのパターンについて判定した場合（ステップＳ２０７：Ｙｅｓ）、マッチング処理部１５２は、全ての向きのパターンについて判定したか否かを判定する（ステップＳ２０９）。全ての向きのパターンについて判定していない場合（ステップＳ２０９：Ｎｏ）、マッチング処理部１５２は、カメラ１４から見た場合のエンドエフェクター１３の形状モデルの向きを変更し（ステップＳ２１０）、再びステップＳ２０３に示した処理を実行する。
【００６２】
ここで、マッチング処理部１５２は、例えば、初めは、角度の差が大きいいくつかの異なる角度のパターンについて粗く角度を変えてステップＳ２０５〜ステップＳ２０８を実行する。そして、全てのパターンの大きさについて所定値以上の類似度の位置および向きの組み合わせが検出できなかった場合に、マッチング処理部１５２は、最も高い類似度が検出された角度付近で、角度の差が小さいいくつかの異なる角度のパターンについて、形状モデルの角度を細かく変えてステップＳ２０３〜ステップＳ２０８を実行することが好ましい。
【００６３】
全ての向きのパターンについて判定した場合（ステップＳ２０９：Ｙｅｓ）、マッチング処理部１５２は、エンドエフェクター１３の位置および向きを特定できなかった旨を座標校正部１５１に通知し、本フローチャートに示したマッチング処理（ステップＳ２００）を終了する。
【００６４】
図７に戻って説明を続ける。座標校正部１５１は、ステップＳ２００において、カメラ座標系におけるエンドエフェクター１３の位置および向きを特定できたか否かを判定する（ステップＳ１０１）。エンドエフェクター１３の位置および向きを特定できなかった場合（ステップＳ１０１：Ｎｏ）、座標校正部１５１は、表示装置等を介してエラーをユーザーに通知し、ロボット制御装置１５は、本フローチャートに示す動作を終了する。
【００６５】
一方、エンドエフェクター１３の位置および向きを特定できた場合（ステップＳ１０１：Ｙｅｓ）、制御情報取得部１５０は、動作制御部２１が認識しているロボット座標系におけるエンドエフェクター１３の位置および向きの情報を動作制御部２１から取得して座標校正部１５１へ送る（ステップＳ１０２）。
【００６６】
次に、座標校正部１５１は、制御情報取得部１５０から受け取ったロボット座標系におけるエンドエフェクター１３の位置および向きの情報、ならびに、マッチング処理部１５２から受け取ったカメラ座標系におけるエンドエフェクター１３の位置および向きの情報に基づいて、カメラ座標系とロボット座標系との対応付けを行う。
【００６７】
そして、座標校正部１５１は、対応付けを示す情報を含むキャリブレーションパラメーターを出力部１５４へ送る。出力部１５４は、座標校正部１５１から受け取ったキャリブレーションパラメーターを動作制御部２１へ出力し（ステップＳ１０３）、ロボット制御装置１５は、本フローチャートに示す動作を終了する。
【００６８】
図９は、ロボット制御装置１５の機能を実現するコンピューター５０のハードウェア構成の一例を示す図である。
【００６９】
コンピューター５０は、ＣＰＵ（Central Processing Unit）５１、ＲＡＭ（Random Access Memory）５２、ＲＯＭ（Read Only Memory）５３、ＨＤＤ（Hard Disk Drive）５４、通信インターフェイス（Ｉ／Ｆ）５５、入出力インターフェイス（Ｉ／Ｆ）５６、およびメディアインターフェイス（Ｉ／Ｆ）５７を備える。
【００７０】
ＣＰＵ５１は、ＲＯＭ５３またはＨＤＤ５４に格納されたプログラムに基づいて動作し、各部の制御を行う。ＲＯＭ５３は、コンピューター５０の起動時にＣＰＵ５１によって実行されるブートプログラムや、コンピューター５０のハードウェアに依存するプログラム等を格納する。
【００７１】
ＨＤＤ５４は、ＣＰＵ５１によって実行されるプログラムおよび当該プログラムによって使用されるデータ等を格納する。通信インターフェイス５５は、通信回線を介して他の機器からデータを受信してＣＰＵ５１へ送り、ＣＰＵ５１が生成したデータを、通信回線を介して他の機器へ送信する。
【００７２】
ＣＰＵ５１は、入出力インターフェイス５６を介してキーボードやマウス等の入出力装置からデータを取得する。また、ＣＰＵ５１は、生成したデータを、入出力インターフェイス５６を介して表示装置や印刷装置等の入出力装置へ出力する。
【００７３】
メディアインターフェイス５７は、記憶媒体５８に格納されたプログラムまたはデータを読み取り、ＲＡＭ５２を介してＣＰＵ５１に提供する。ＣＰＵ５１は、当該プログラムまたはデータを、メディアインターフェイス５７を介して記憶媒体５８からＲＡＭ５２上にロードし、ロードしたプログラムを実行する。記憶媒体５８は、例えばＤＶＤ（Digital Versatile Disc）、ＰＤ（Phase change rewritable Disk）等の光学記録媒体、ＭＯ（Magneto-Optical disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリー等である。
【００７４】
コンピューター５０のＣＰＵ５１は、ＲＡＭ５２上にロードされたプログラムを実行することにより、制御情報取得部１５０、座標校正部１５１、マッチング処理部１５２、画像取得部１５３、および出力部１５４の各機能を実現する。
【００７５】
コンピューター５０のＣＰＵ５１は、これらのプログラムを、記憶媒体５８から読み取って実行するが、他の例として、他の装置から、通信回線を介してこれらのプログラムを取得してもよい。
【００７６】
以上、本発明の実施の形態について説明した。
【００７７】
上記説明から明らかなように、本実施形態のロボットシステム１０によれば、低いコストで、より迅速にキャリブレーションを実行することができる。
【００７８】
なお、本発明は、上記した実施形態に限定されるものではなく、様々な変形例が含まれる。
【００７９】
例えば、上記した実施形態において、ロボット制御装置１５は、エンドエフェクター１３の位置および向きに基づいてキャリブレーションを行ったが、本発明はこれに限られず、ロボットにおいて可動する部分であれば、アーム内のリンクやジョイント、アーム全体等の位置および向きに基づいてキャリブレーションを行ってもよい。この場合、記憶部２２内には、リンクやジョイント、アーム全体等の形状モデルが格納される。
【００８０】
ただし、キャリブレーションの対象とする可動部は、変位の大きな部位であることが好ましい。例えば、アームよりも、アームの先端に取り付けられているエンドエフェクターの位置および向きに基づいてキャリブレーションを行うことが好ましく、アーム内のリンクやジョイントであれば、ロボット本体に近いリンクやジョイントよりも、エンドエフェクターに近いリンクやジョイントの位置および向きに基づいてキャリブレーションを行うことが好ましい。これにより、キャリブレーションの精度を高めることができる。
【００８１】
また、アーム全体の位置および向きに基づいてキャリブレーションを行う場合、ジョイントでの回転角によりアーム全体としては形状が変化するため、キャリブレーションを行うにあたっては、全てのジョイントの角度を予め定められた角度（例えば０度）に設定するなどして、アーム全体の形状を予め定められた形状にした上で、キャリブレーションを行うことが好ましい。これにより、アーム全体として１つの形状モデルを用いることができ、キャリブレーションにかかる時間が、形状モデルの選択によって長くなるのを防止することができる。
【００８２】
また、上記した実施形態において、マッチング処理部１５２は、記憶部２２内のエンドエフェクター１３の形状モデルから作成した２次元画像を、カメラ１４によって撮影されたカメラ画像上を全体的に走査して類似度を算出したが、本発明はこれに限られない。
【００８３】
例えば、実機のエンドエフェクター１３の表面にマーク等の識別情報を付与し、マッチング処理部１５２は、カメラ１４によって撮影されたカメラ画像内でその識別情報を画像認識により検出し、カメラ画像内において、検出した識別情報の付近を優先的に走査して類似度を算出するようにしてもよい。これにより、カメラ座標系における可動部の位置および向きをより迅速に特定することができる。
【００８４】
なお、識別情報は、可動部の形状モデルの表面にも付与されていてもよい。その場合、カメラ画像上での識別情報の見え方に基づいて、そのような見え方となる方向を特定し、形状モデルから、特定した方向から見た２次元画像を作成するようにすれば、カメラ座標系における可動部の位置および向きをより迅速に特定することができる。
【００８５】
また、上記した実施形態では、可動部としてエンドエフェクターのみの位置および向きに基づいてキャリブレーションを行ったが、本発明はこれに限られず、記憶部２２内に、異なる複数の可動部（例えば、エンドエフェクターの他に、異なるリンク、異なるジョイントなど）の形状モデルをいくつか格納しておき、その中で、カメラ画像内で位置および向きが特定できた形状モデルを用いてキャリブレーションを行うようにしてもよい。
【００８６】
これにより、カメラ１４が設置された位置から撮影可能な可動部が存在すれば、他の可動部がカメラ１４から撮影できない位置にある場合でも、キャリブレーションを行うことができる。そのため、キャリブレーションを行うにあたって、ロボットに所定の姿勢をとらせる必要がなくなり、より迅速にキャリブレーションを開始することができる。また、実作業中に、カメラ１４に映る部位を用いて随時キャリブレーションを実行することもできる。
【００８７】
また、この場合、それぞれの形状モデルに異なる識別情報を対応付け、対応する実機の可動部の表面にも識別情報を付与しておき、マッチング処理部１５２は、カメラ１４によって撮影されたカメラ画像内で画像認識により識別情報を検出し、検出できた識別情報に対応する形状モデルを用いて、カメラ画像上での可動部の位置および方向の特定を行うようにしてもよい。これにより、形状モデルが複数ある場合であっても、キャリブレーションを迅速に行うことができる。
【００８８】
また、図１において、可動部２０、動作制御部２１、およびロボット制御装置１５の機能を有する装置や、さらに記憶部２２を有する装置をロボットとして構成してもよい。また、ロボット制御装置内に動作制御部２１が含まれていてもよい。
【００８９】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に多様な変更または改良を加えることが可能であることが当業者には明らかである。また、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【符号の説明】
【００９０】
１０：ロボットシステム、１１：ロボット本体、１２：アーム、１２０：ジョイント、１２１：リンク、１３：エンドエフェクター、１４：カメラ、１５：ロボット制御装置、１５０：制御情報取得部、１５１：座標校正部、１５２：マッチング処理部、１５３：画像取得部、１５４：出力部、１６：作業台、２０：可動部、２１：動作制御部、２２：記憶部、３０：形状モデル、３１：２次元画像、３２：２次元画像、３３：２次元画像、４０：カメラ画像、５０：コンピューター、５１：ＣＰＵ、５２：ＲＡＭ、５３：ＲＯＭ、５４：ＨＤＤ、５５：通信インターフェイス、５６：入出力インターフェイス、５７：メディアインターフェイス、５８：記憶媒体
【図１】
2014014912.tif 000003
【図２】
2014014912.tif 000004
【図３】
2014014912.tif 000005
【図４】
2014014912.tif 000006
【図５】
2014014912.tif 000007
【図６】
2014014912.tif 000008
【図７】
2014014912.tif 000009
【図８】
2014014912.tif 000010
【図９】
2014014912.tif 000011