(57)【要約】【課題】ロボットアームの動作を止めることなく、ロボットアームの先端リンクに対するエンドエフェクタの位置ずれを高精度に求める。【解決手段】ロボットアームを動作させて、撮像範囲内の被写体を撮像する撮像装置に対してエンドエフェクタの移動を開始する（Ｓ３）。エンドエフェクタが撮像範囲内を通過中に、先端リンクを回転軸を中心に回転させた回転状態で、撮像装置にエンドエフェクタを撮像させる（Ｓ４，Ｓ５，Ｓ６）。撮像画像中のエンドエフェクタの中心軸の軌跡に基づき、先端リンクの回転軸に対するエンドエフェクタの中心軸の位置ずれを算出する（Ｓ７）。【選択図】図４
2017124468.tif 000002
【特許請求の範囲】
【請求項１】
制御部が、エンドエフェクタが取り付けられた先端リンクを有するロボットアームの動作を制御するロボット制御方法であって、
前記制御部が、前記ロボットアームを動作させて、撮像範囲内の被写体を撮像する撮像装置に対して前記エンドエフェクタを移動させる移動工程と、
前記制御部が、前記エンドエフェクタが前記撮像範囲内を通過中に、前記先端リンクを回転軸を中心に回転させた回転状態で、前記撮像装置に前記エンドエフェクタを撮像させる撮像工程と、
前記制御部が、前記撮像工程にて得られた撮像画像中の前記エンドエフェクタの中心軸の軌跡に基づき、前記先端リンクの回転軸に対する前記エンドエフェクタの中心軸の位置ずれを算出する位置ずれ算出工程と、を備えたロボット制御方法。
【請求項２】
前記制御部が、前記位置ずれ算出工程で算出した位置ずれで、前記ロボットアームの動作を規定する軌道データを補正する補正工程を更に備えた請求項１に記載のロボット制御方法。
【請求項３】
前記位置ずれ算出工程では、前記制御部が、前記位置ずれとして、
前記撮像画像中、前記回転軸の移動方向と直交する方向に対する前記軌跡の振れ幅に基づき、前記先端リンクの回転軸に対する前記エンドエフェクタの中心軸の位置ずれ量を算出する請求項１又は２に記載のロボット制御方法。
【請求項４】
前記撮像工程では、前記制御部が、更に、前記エンドエフェクタが前記撮像範囲内を通過中に、前記先端リンクを回転停止させた回転停止状態で、前記撮像装置に前記エンドエフェクタを撮像させ、
前記位置ずれとして、更に、
前記振れ幅の中心位置に対する、前記軌跡のうち前記停止状態で撮像した部分軌跡のオフセット量と、前記位置ずれ量とに基づき、前記先端リンクの回転軸に対する前記エンドエフェクタの中心軸の位置ずれ方向を算出する請求項３に記載のロボット制御方法。
【請求項５】
前記移動工程では、前記制御部が、前記エンドエフェクタの中心軸が前記撮像装置の撮像面に対して垂直となっている状態で、前記エンドエフェクタが前記撮像装置の撮像面に対して水平に移動するように、前記ロボットアームを動作させる請求項１乃至４のいずれか１項に記載のロボット制御方法。
【請求項６】
前記軌跡は、前記エンドエフェクタの中心軸上に位置するマークの移動軌跡である請求項１乃至５のいずれか１項に記載のロボット制御方法。
【請求項７】
前記マークは、前記エンドエフェクタに付与されている請求項６に記載のロボット制御方法。
【請求項８】
前記移動工程では、前記制御部が、前記撮像装置の撮像面に対して前記先端リンクが直線移動するように、前記ロボットアームを動作させる請求項１乃至７のいずれか１項に記載のロボット制御方法。
【請求項９】
前記移動工程では、前記制御部が、前記撮像装置の撮像面に対して前記先端リンクが円弧移動するように、前記ロボットアームを動作させる請求項１乃至７のいずれか１項に記載のロボット制御方法。
【請求項１０】
制御部が、ロボットアームを動作させて、前記ロボットアームの先端リンクに取り付けられたエンドエフェクタを、撮像範囲内の被写体を撮像する撮像装置に対して移動させる移動工程と、
前記制御部が、前記エンドエフェクタが前記撮像範囲内を通過中に、前記先端リンクを回転軸を中心に回転させた回転状態で、前記撮像装置に前記エンドエフェクタを撮像させる撮像工程と、
前記制御部が、前記撮像工程にて得られた撮像画像中の前記エンドエフェクタの中心軸の軌跡に基づき、前記先端リンクの回転軸に対する前記エンドエフェクタの中心軸の位置ずれを算出する位置ずれ算出工程と、
前記制御部が、前記位置ずれ算出工程で算出した位置ずれで、前記ロボットアームの動作を規定する軌道データを補正する補正工程と、
前記制御部が、前記補正工程で補正した軌道データに従って前記ロボットアームを動作させ、前記エンドエフェクタに作業を行わせて部品を製造する作業工程と、を備えた部品の製造方法。
【請求項１１】
回転軸を中心に回転可能な先端リンクを有するロボットアームと、
前記先端リンクに取り付けられたエンドエフェクタと、
撮像範囲内の被写体を撮像する撮像装置と、
前記ロボットアームの動作を制御する制御部と、を備え、
前記制御部は、
前記ロボットアームを動作させて、前記撮像装置に対して前記エンドエフェクタを移動させる移動処理と、
前記エンドエフェクタが前記撮像範囲内を通過中に、前記先端リンクを回転軸を中心に回転させた回転状態で、前記撮像装置に前記エンドエフェクタを撮像させる撮像処理と、
前記撮像処理にて得られた撮像画像中の前記エンドエフェクタの中心軸の軌跡に基づき、前記先端リンクの回転軸に対する前記エンドエフェクタの中心軸の位置ずれを算出する位置ずれ算出処理と、を実行するロボット装置。
【請求項１２】
コンピュータに、請求項１乃至９のいずれか１項に記載のロボット制御方法の各工程を実行させるためのプログラム。
【請求項１３】
請求項１２に記載のプログラムが記録された、コンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンドエフェクタが取り付けられた先端リンクに対するエンドエフェクタの位置ずれを算出する技術に関する。
【背景技術】
【０００２】
多関節のロボットアームは、複数のリンクが関節で揺動又は回転するように連結されて構成されている。特に、ロボットアームの先端部に位置する先端リンクは、関節で回転するように他のリンクに連結されている。先端リンクには、ロボットハンド等のエンドエフェクタが着脱可能に取り付けられている。これにより、作業内容に応じてエンドエフェクタを交換することが可能となっている。
【０００３】
エンドエフェクタを交換したとき、ロボットアームの先端軸、即ち先端リンクの回転軸に対し、エンドエフェクタの中心軸がずれてエンドエフェクタがロボットアームに装着されることがある。したがって、ロボットを用いて部品の組み立て作業を高精度に行う場合、ロボットアームの先端軸、即ち先端リンクの回転軸に対するエンドエフェクタの中心軸の位置ずれを校正する必要がある。つまり、先端軸に対するエンドエフェクタの中心軸の位置ずれを求め、位置ずれをキャンセルするようにエンドエフェクタを付け直すか、ロボットアームの位置指令値（つまり、軌道）を補正する必要がある。
【０００４】
従来、エンドエフェクタとしてのロボットハンドが把持した測定治具のマークを、カメラに撮像させて、撮像画像からロボットハンドの位置ずれを測定する方法が提案されている（特許文献１参照）。特許文献１の方法では、ロボットハンドをカメラの前で一旦停止させてカメラによる撮像を行っている。このとき、ロボットハンドが把持した測定治具のマークを、ロボットアームの先端軸の回転角度を１８０°異なられた２つの位置でカメラに撮像させて、撮像画像からロボットハンドの位置ずれを測定している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−３４０１１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の方法では、ロボットハンドで測定治具を把持してカメラの前で一旦停止して撮像を行うため、位置ずれの測定に時間がかかっていた。また、測定した位置ずれは、ロボットハンドの回転精度の影響を大きく受けるため、測定結果に誤差が生じる問題があった。即ち、ロボットハンドを先端軸を中心に１８０°回転させたつもりでも実際には１８０°からずれていることがあり、回転角度の誤差が位置ずれの測定精度の低下を招いていた。
【０００７】
そこで、本発明は、ロボットアームの動作を止めることなく、ロボットアームの先端リンクに対するエンドエフェクタの位置ずれを高精度に求めることを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、制御部が、エンドエフェクタが取り付けられた先端リンクを有するロボットアームの動作を制御するロボット制御方法であって、前記制御部が、前記ロボットアームを動作させて、撮像範囲内の被写体を撮像する撮像装置に対して前記エンドエフェクタを移動させる移動工程と、前記制御部が、前記エンドエフェクタが前記撮像範囲内を通過中に、前記先端リンクを回転軸を中心に回転させた回転状態で、前記撮像装置に前記エンドエフェクタを撮像させる撮像工程と、前記制御部が、前記撮像工程にて得られた撮像画像中の前記エンドエフェクタの中心軸の軌跡に基づき、前記先端リンクの回転軸に対する前記エンドエフェクタの中心軸の位置ずれを算出する位置ずれ算出工程と、を備えている。
【発明の効果】
【０００９】
本発明によれば、ロボットアームの動作を止めることなく、ロボットアームの先端リンクに対するエンドエフェクタの位置ずれを高精度に求めることができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係るロボット装置を示す斜視図である。
【図２】（ａ）は、実施形態におけるロボットの先端部を示す模式図である。（ｂ）は、実施形態におけるロボットハンドの座面側からロボットハンドを見た平面図である。
【図３】実施形態に係るロボット装置の制御系の構成を示すブロック図である。
【図４】実施形態に係る部品の製造方法を示すフローチャートである。
【図５】（ａ）は、実施形態においてマークの移動軌跡が写り込んだ撮像画像の一例を示す模式図である。（ｂ）は、実施形態において先端リンクの回転軸に対するロボットハンドの中心軸の位置ずれを説明するための図である。
【図６】実施形態においてマークの移動軌跡が写り込んだ撮像画像の別の例を示す模式図である。
【図７】実施形態においてマークの移動軌跡が写り込んだ撮像画像の更に別の例を示す模式図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。図１は、実施形態に係るロボット装置を示す斜視図である。ロボット装置１００は、ロボット２００と、ロボット２００の動作を制御する制御装置４００と、ユーザの操作によりロボット２００の動作を教示する教示部としてのティーチングペンダント６００と、を備えている。更に、ロボット装置１００は、撮像装置としてのカメラ５００と、カメラ５００で取得した画像を処理する画像処理装置３００と、を備えている。
【００１２】
ロボット２００と制御装置４００とは信号線等の配線で接続されている。カメラ５００と画像処理装置３００とは信号線等の配線で接続されている。制御装置４００と画像処理装置３００とは信号線等の配線で接続されている。制御装置４００とティーチングペンダント６００とは信号線等の配線で接続されている。なお、これら機器の通信は有線で行われるが、無線で行われるように構成されていてもよい。
【００１３】
ロボット２００は、垂直多関節型のロボットアーム２０１と、ロボットアーム２０１の先端に取り付けられた、エンドエフェクタとしてのロボットハンド２０２と、を有している。なお、ロボットアーム２０１の先端とロボットハンド２０２との間に力覚センサが配置されていてもよい。この場合、ロボットハンド２０２は、ロボットアーム２０１の先端に力覚センサを介して取り付けられることになる。
【００１４】
ロボットアーム２０１は、架台１５０に固定されるベース部（基端リンク）２１０と、変位や力を伝達する複数のリンク２１１〜２１６とが関節Ｊ１〜Ｊ６で揺動（旋回）又は回転可能に連結されている。本実施形態では、ロボットアーム２０１は、揺動する３軸と回転する３軸の６軸の関節Ｊ１〜Ｊ６で構成されている。ここで、揺動する関節を揺動部、回転する関節を回転部と呼ぶ。ロボットアーム２０１は、６つの関節Ｊ１〜Ｊ６から構成され、関節Ｊ１，Ｊ４，Ｊ６が回転部、関節Ｊ２，Ｊ３，Ｊ５が揺動部である。
【００１５】
本実施形態では、ベース部（固定端）２１０に対して反対側のリンク、つまりロボットアーム２０１の先端部であるリンク（先端リンク、自由端）２１６は、リンク２１５に対して回転軸（先端軸）Ｃ１を中心に回転可能に構成されている。つまり関節Ｊ６は回転部である。
【００１６】
ロボットアーム２０１は、各関節Ｊ１〜Ｊ６に対してそれぞれ設けられ、各関節Ｊ１〜Ｊ６をそれぞれ駆動する複数（６つ）の関節駆動装置（不図示）を有している。各関節駆動装置は、不図示の電動モータ、減速機及び制御基板等を有して構成されている。制御基板（関節制御部）は、入力した関節指令値（角度指令値）に基づき関節角度を制御する。つまり、制御基板は、関節角度が関節指令値に近づくように、電動モータの回転を制御する。
【００１７】
図２（ａ）は、実施形態におけるロボットの先端部を示す模式図である。図２（ｂ）は、実施形態におけるロボットハンドの座面側からロボットハンドを見た平面図である。
【００１８】
ロボットハンド２０２は、ベース部２２０と、ベース部２２０の座面側に開閉可能に支持された複数（３つ）のフィンガー２２１とを有する。
【００１９】
複数のフィンガー２２１は、中心軸Ｃ２に近接又は離間するよう不図示の駆動装置により駆動される。複数のフィンガー２２１が中心軸Ｃ２に近接する方向に移動する動作を閉動作、複数のフィンガー２２１が中心軸Ｃ２から離間する方向に移動する動作を開動作とする。複数のフィンガー２２１を閉動作させることにより、第１ワークであるワークＷ１を把持することができ、複数のフィンガー２２１を開動作させることにより、ワークＷ１を把持解放することができる。
【００２０】
ロボットハンド２０２は、複数のフィンガー２２１を用いてワークＷ１を把持することにより、第１ワークであるワーク（嵌合部品）Ｗ１を第２ワークであるワーク（被嵌合部品）Ｗ２に組付ける組付作業を行うことができる。この組付作業により、ワークＷ１及びワークＷ２からなる組立部品が製造される。
【００２１】
ロボットハンド２０２は、リンク２１６に対して着脱可能となっている。具体的には、図２（ａ）に示すように、リンク２１６の先端に保持機構２１７が設けられており、保持機構２１７によりロボットハンド２０２（ベース部２２０）が保持されることで、リンク２１６にロボットハンド２０２が装着される。よって、リンク２１６には、作業内容に適したエンドエフェクタを装着することができる。本実施形態では、組付作業を行うため、ロボットハンド２０２がリンク２１６に装着されているものとする。
【００２２】
図２（ｂ）に示すように、ロボットハンド２０２のベース部２２０の座面中心（座面において中心軸Ｃ２と交差する点）には、マークＭＫが形成されている。マークＭＫは、ロボットハンド２０２の中心位置を識別できれば何でもよい。例えば、穴、突起、シール、反射材、発光部材等、種々のマークを用いることができる。また、マークＭＫの形状も、ロボットハンド２０２の中心位置を識別できれば何でもよい。例えば、円形、十字形など、種々の形状とすることができる。マークＭＫの色は、他の部材と識別できる色とするのが好ましい。本実施形態では、マークＭＫは、円形の凹み穴に、フィンガー２２１などの他の部材とは異なる色に着色されて構成されている。
【００２３】
図１に示すように、カメラ５００は、ＣＣＤ（Charge  Coupled  Device）イメージセンサやＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）イメージセンサ等の撮像センサ５０１を有する。カメラ５００は、架台１５０（ロボットアーム２０１のベース部２１０）に対して移動しないように、架台１５０に固定されている。カメラ５００は、撮像範囲内（画角内）の被写体を撮像する。本実施形態では、ロボットハンド２０２（つまりマークＭＫ）が被写体となる。
【００２４】
ここで、カメラ５００の撮像面（撮像センサ５０１のセンサ面）に平行な平面をＸＹ平面とし、ＸＹ平面に垂直な方向をＺ軸方向とする。
【００２５】
図３は、実施形態に係るロボット装置の制御系の構成を示すブロック図である。画像処理装置３００及び制御装置４００は、コンピュータで構成されている。つまり、本実施形態では、複数のコンピュータで分散して各機器を制御する。具体的には、画像処理装置３００は、カメラ５００の撮像タイミング、シャッタースピード等を制御し、制御装置４００は、ロボットアーム２０１及びロボットハンド２０２の動作を制御する。これら画像処理装置３００及び制御装置４００で制御システム８００が構成されている。
【００２６】
画像処理装置３００は、ＣＰＵ（Central  Processing  Unit）３０１を備えている。また、画像処理装置３００は、記憶部として、ＲＯＭ（Read  Only  Memory）３０２、ＲＡＭ（Random  Access  Memory）３０３、ＨＤＤ（Hard  Disk  Drive）３０４を備えている。また、画像処理装置３００は、記録ディスクドライブ３０５及びインタフェース３１１，３１２を備えている。ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５及びインタフェース３１１，３１２が、バスを介して接続されている。
【００２７】
制御装置４００は、ＣＰＵ４０１を備えている。また、制御装置４００は、記憶部として、ＲＯＭ４０２、ＲＡＭ４０３、ＨＤＤ４０４を備えている。また、制御装置４００は、インタフェース４１１〜４１４を備えている。ＣＰＵ４０１には、ＲＯＭ４０２、ＲＡＭ４０３、ＨＤＤ４０４及びインタフェース４１１〜４１４が、バスを介して接続されている。
【００２８】
ＲＯＭ３０２，４０２には、コンピュータを動作させる基本プログラム等が格納されている。ＲＡＭ３０３，４０３は、ＣＰＵ３０１，４０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００２９】
ＨＤＤ３０４，４０４は、ＣＰＵ３０１，４０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ３０１，４０１に、後述する演算処理を実行させるためのプログラム３２０，４２０を記録するものである。ＣＰＵ３０１，４０１は、ＨＤＤ３０４，４０４に記録（格納）されたプログラム３２０，４２０に基づいてロボット制御方法の各工程を実行する。つまり、本実施形態では、各プログラム３２０，４２０をそれぞれ実行する複数のＣＰＵ３０１，４０１で制御部８０１が構成されている。
【００３０】
記録ディスクドライブ３０５は、記録ディスク３２１に記録された各種データやプログラム等を読み出すことができる。
【００３１】
カメラ５００は、インタフェース３１２に接続されている。カメラ５００の撮像により生成された撮像画像は、インタフェース３１２及びバスを介してＣＰＵ３０１に出力される。ＣＰＵ３０１は、この撮像画像を画像処理することができる。
【００３２】
ティーチングペンダント（ＴＰ）６００は、インタフェース４１２に接続されている。ティーチングペンダント６００は、ユーザの入力操作により、ロボットアーム２０１を教示する教示点を指定するものである。教示点のデータは、インタフェース４１２及びバスを通じてＨＤＤ４０４に出力される。
【００３３】
ＨＤＤ４０４は、ティーチングペンダント６００により指定された教示点のデータを格納することができる。ＣＰＵ４０１は、ＨＤＤ４０４に設定（格納）された教示点のデータを読み出すことができる。また、ＨＤＤ４０４には、教示点間の補間方法などが指定されたロボットプログラムが格納されている。
【００３４】
インタフェース４１３には、ロボットアーム２０１が接続されている。インタフェース４１４には、ロボットハンド２０２が接続されている。ＣＰＵ４０１は、インタフェース４１３を介してロボットアーム２０１に関節指令値のデータを出力して、ロボットアーム２０１の各関節の動作を制御する。
【００３５】
また、ＣＰＵ４０１は、インタフェース４１４を介してロボットハンド２０２に駆動指令値のデータを出力してロボットハンド２０２の動作を制御する。
【００３６】
なお、本実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ３０４（４０４）であり、ＨＤＤ３０４（４０４）にプログラム３２０（４２０）が格納される場合について説明するが、これに限定するものではない。プログラム３２０（４２０）は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラム３２０（４２０）を供給するための記録媒体としては、図３に示す記録ディスク３２１、不図示の外部記憶装置等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、ＵＳＢメモリ等の不揮発性メモリ、ＲＯＭ等を用いることができる。
【００３７】
ここで、ロボットアーム２０１の先端、つまりロボットハンド２０２には、ツールセンターポイント（ＴＣＰ）が設定されている。ＴＣＰは、位置を表す３つのパラメータ（ｘ，ｙ，ｚ）と、姿勢を表す３つのパラメータ（Ｒｘ，Ｒｙ，Ｒｚ）、即ち６つのパラメータ（ｘ，ｙ，ｚ，Ｒｘ，Ｒｙ，Ｒｚ）で表され、タスク空間上では、１つの点としてみなすことができる。つまり、タスク空間は、これら６つの座標軸で規定された空間である。このＴＣＰで教示点を指定することができる。
【００３８】
また、教示点を関節角度（コンフィグレーション）で指定することもできる。本実施形態では、ロボットアーム２０１の関節が６つあるので、教示点は、関節角度を表す６つのパラメータを示すコンフィグレーション（θ１，θ２，θ３，θ４，θ５，θ６）で表され、関節空間上では、１つの点とみなすことができる。つまり、関節空間は、これら６つの座標軸で規定された空間である。
【００３９】
本実施形態では、教示点は、タスク空間又は関節空間で指定される。ＣＰＵ４０１は、ロボットプログラムで指定された補間方法に従い、教示点間を補間するロボットアーム２０１の経路（補間経路）データを生成する。ここで、教示点間を補間する補間方法としては、直線補間、円弧補間、関節補間、Ｓｐｌｉｎｅ補間、Ｂ−Ｓｐｌｉｎｅ補間、ベジェ曲線など、種々の方法がある。経路データとは、タスク空間におけるロボットアーム２０１のＴＣＰの軌跡、又は関節空間におけるロボットアーム２０１のコンフィグレーションの軌跡である。
【００４０】
そして、ＣＰＵ４０１は、ロボットアーム２０１の動作を規定する軌道データを計算する。ロボットアーム２０１の軌道データとは、時間をパラメータとして経路データを表したものである。本実施形態では、時刻毎（例えば１ｍｓ毎）のＴＣＰの位置指令値、又はコンフィグレーションの関節指令値の集合である。位置指令値は、６つのパラメータ（ｘ，ｙ，ｚ，Ｒｘ，Ｒｙ，Ｒｚ）で表され、関節指令値は、６つのパラメータ（θ１，θ２，θ３，θ４，θ５，θ６）で表される。
【００４１】
軌道データが位置指令値の場合、ＣＰＵ４０１は、最終的には位置指令値を各関節Ｊ１〜Ｊ６の関節角度を示す関節指令値に逆運動学に基づき変換する。関節指令値を各関節Ｊ１〜Ｊ６の関節駆動装置の制御基板に出力することで、ロボットアーム２０１の動作を制御する。軌道データが関節指令値の場合、ＣＰＵ４０１は、関節指令値を各関節Ｊ１〜Ｊ６の関節駆動装置の制御基板に出力することで、ロボットアーム２０１の動作を制御する。
【００４２】
このように、ＣＰＵ４０１は、位置指令値又は関節指令値からなる軌道データを用いてロボットアーム２０１の位置制御を行う。
【００４３】
次に、制御部８０１の制御方法（組立部品の製造方法）について説明する。図４は、実施形態に係る部品の製造方法を示すフローチャートである。
【００４４】
本実施形態では、ロボットハンド２０２を付け替えた後、ロボット２００（ロボットハンド２０２）に、同じ作業を繰り返し行わせるものであるが、リンク２１６の回転軸Ｃ１に対してロボットハンド２０２の中心軸Ｃ２がずれて取り付けられていることがある。そのため、始めの作業時に、リンク２１６の回転軸Ｃ１に対するロボットハンド２０２の中心軸Ｃ２の位置ずれを算出する。ここで、カメラ５００によりロボットハンド２０２のマークＭＫを撮像できるように、ロボットハンド２０２には何も把持させていないものとする。また、リンク２１６の回転軸Ｃ１とロボットハンド２０２の中心軸Ｃ２とが平行な状態で、ロボットハンド２０２がリンク２１６に取り付けられている。
【００４５】
まず、ＣＰＵ４０１は、ロボットプログラムを入力する（Ｓ１）。このロボットプログラムは、組付作業を行うための動作を記述したものである。このロボットプログラムには、上述したように、ある教示点から別の教示点までの移動方法、つまり直線補間、円弧補間、関節補間等の補間方法が記述されている。特に、ロボットハンド２０２をカメラ５００の前を通過させる移動方法は、直線補間で記述されているものとする。つまり、ロボットプログラムには、ある第１教示点からロボットハンド２０２にワークＷ１を取得させる位置の近傍の第２教示点へ直線移動するように記述されているものとする。ＣＰＵ４０１は、ロボットプログラムに基づき、ロボットアーム２０１の軌道データを計算する（Ｓ２）。
【００４６】
ＣＰＵ４０１は、補正する前の軌道データに基づき、ロボットハンド２０２のベース部２２０の座面がＸＹ平面に対して平行な状態、つまり回転軸Ｃ１及び中心軸Ｃ２がＸＹ平面に対して垂直となる状態にロボットアーム２０１の姿勢を初期設定する。
【００４７】
そして、ＣＰＵ４０１は、補正する前の軌道データに基づき、ロボットアーム２０１を動作させて、ロボットハンド２０２をカメラ５００に対して移動させる（Ｓ３：移動工程、移動処理）。具体的には、ＣＰＵ４０１は、リンク２１６を回転停止させた回転停止状態で、ロボットハンド２０２がＸＹ平面に対して水平な方向であってカメラ５００の撮像範囲内を横切る方向（Ｘ軸方向）に移動するよう、ロボットアーム２０１の動作を開始する。つまり、ロボットハンド２０２の中心軸Ｃ２がＸＹ平面に対して垂直となっている状態で、ＸＹ平面に対して水平なＸ軸方向へ、ロボットハンド２０２（リンク２１６）を移動させる。
【００４８】
リンク２１６の回転停止状態とは、ロボットアーム２０１の関節Ｊ６の角度が一定の基準角度（例えば０°）を維持した状態である。本実施形態では、ＣＰＵ４０１は、カメラ５００の撮像面（つまり、ＸＹ平面）に対してリンク２１６が水平方向に直線移動するように関節Ｊ６以外の関節Ｊ１〜Ｊ５を制御する。
【００４９】
ＣＰＵ４０１は、ロボットハンド２０２（つまりマークＭＫ）がカメラ５００の撮像範囲内に入る前、又は撮像範囲内に在るときに、ＣＰＵ３０１に撮像を開始するように指令を送る。ＣＰＵ３０１は、この指令を受け、カメラ５００に撮像を開始させる（Ｓ４：撮像工程、撮像処理）。つまり、ＣＰＵ３０１は、カメラ５００の撮像範囲内をロボットハンド２０２が通過中に、リンク２１６を回転停止状態で、カメラ５００にロボットハンド２０２を撮像させる。カメラ５００は、所定のフレームレートでＣＰＵ３０１に撮像画像を送信する。
【００５０】
次に、ＣＰＵ４０１は、ロボットハンド２０２（つまりマークＭＫ）がカメラ５００の撮像範囲内を通過中に、リンク２１６を回転軸Ｃ１を中心に回転させる回転状態に切り替える。つまり、ＣＰＵ４０１は、ロボットハンド２０２がカメラ５００の撮像範囲内を通過中に、ロボットアーム２０１の関節Ｊ６の回転を開始させる（Ｓ５）。ＣＰＵ３０１は、この回転状態でロボットハンド２０２をカメラ５００に撮像させる。カメラ５００は、所定のフレームレートでＣＰＵ３０１に撮像画像を送信する。
【００５１】
なお、このリンク２１６の回転動作は、組立動作を行わせるためのロボットプログラムには記述されていない動作である。つまり、繰り返し行う作業の始めの１回の作業においては、未だ、軌道データを補正する補正データを取得していないので、ステップＳ２で演算した補正前の軌道データに基づく動作に加えて、リンク２１６を回転動作させる。具体的には、リンク２１６の回転軸Ｃ１がＸ軸方向に直線移動するように動作させながら、回転軸Ｃ１を中心にリンク２１６を回転させて、カメラ５００に撮像させる。
【００５２】
そして、ＣＰＵ４０１は、カメラ５００の撮像範囲内で、リンク２１６を１回転以上、好ましくは３回転以上回転させ、ロボットハンド２０２（マークＭＫ）が撮像範囲から外れたときに、撮像を完了させるようＣＰＵ３０１に指令する。ＣＰＵ３０１は、この指令を受け、カメラ５００に撮像を完了させる（Ｓ６）。
【００５３】
撮像完了後、ＣＰＵ４０１は、回転させていたリンク２１６の回転角度を、本来の軌道データの関節指令値に追従させる。
【００５４】
ＣＰＵ３０１は、以上のステップＳ４〜Ｓ６の撮像処理により得られた複数の撮像画像から、マークＭＫの移動軌跡が写り込んだ１つの撮像画像を生成する。ＣＰＵ３０１は、マークＭＫの移動軌跡が写り込んだ撮像画像をＨＤＤ３０４等の記憶装置に記録する。
【００５５】
図５（ａ）は、実施形態においてマークの移動軌跡が写り込んだ撮像画像の一例を示す模式図である。撮像画像ＩＭには、リンク２１６の回転を停止させた回転停止状態Ｅ１のマークＭＫの部分軌跡Ｔ１と、リンク２１６を回転させた回転状態Ｅ２のマークＭＫの部分軌跡Ｔ２とからなる移動軌跡Ｔ０が写り込んでいる。
【００５６】
本実施形態では、部分軌跡Ｔ１，Ｔ２の撮像時には、リンク２１６のＸ軸方向への移動速度を一定としつつ、部分軌跡Ｔ１の撮像時には、リンク２１６の回転を停止させ、部分軌跡Ｔ２の撮像時には、リンク２１６の回転速度を一定とする。また、図５（ａ）には、リンク２１６の回転軸Ｃ１のＸ軸方向の移動速度と、部分軌跡Ｔ２を撮像する時のマークＭＫの速度とが同じ場合について図示している。
【００５７】
次にＣＰＵ３０１は、撮像画像中のロボットハンド２０２の中心軸Ｃ２の軌跡、即ちマークＭＫの移動軌跡Ｔ０に基づき、リンク２１６の回転軸Ｃ１に対するロボットハンド２０２の中心軸Ｃ２の位置ずれを算出する（Ｓ７：位置ずれ算出工程）。この位置ずれには、位置ずれ量と位置ずれ方向とが含まれている。
【００５８】
ＣＰＵ３０１は、位置ずれのデータをＣＰＵ４０１に送り、ＣＰＵ４０１は、ＣＰＵ３０１から取得した位置ずれのデータをＨＤＤ４０４等の記憶装置に記録する（Ｓ８）。
【００５９】
ＣＰＵ４０１は、位置ずれのデータを用いて、ステップＳ２で求めたロボットアーム２０１の軌道データを補正する（Ｓ９：補正工程、補正処理）。つまりＣＰＵ４０１は、位置ずれのデータを取得した後は、補正後の軌道データに基づきロボットアーム２０１を動作させる。よって、ＣＰＵ４０１は、補正した軌道データに従ってロボットアーム２０１を動作させ、ロボットハンド２０２にワークＷ１を把持させ、ワークＷ１をワークＷ２に組付ける組立作業を行わせて組立部品を製造する（Ｓ１０：作業工程、作業処理）。
【００６０】
以上ステップＳ１〜Ｓ９によりロボット制御方法、即ちステップＳ１〜Ｓ１０により組立部品の製造方法が実行される。
【００６１】
以下、ステップＳ７の位置ずれ算出処理（位置ずれ算出工程）について具体的に説明する。なお、図５（ａ）では、ロボットハンド２０２がＸ軸方向へ直線移動し、関節Ｊ６の回転角度が基準角度（例えば０°）で停止している状態から回転している状態に移行している様子を撮像した撮像画像ＩＭを図示している。軌跡Ｔ０は、マークＭＫの中心点の移動軌跡を示している。
【００６２】
まず、ＣＰＵ３０１は、撮像画像中、回転軸Ｃ１の移動方向（Ｘ軸方向）と直交する方向（Ｙ軸方向）に対する軌跡Ｔ０（部分軌跡Ｔ２）の振れ幅（２×Ｒ０）を求める。そして、ＣＰＵ３０１は、振れ幅（２×Ｒ０）に基づき、リンク２１６の回転軸Ｃ１に対するロボットハンド２０２の中心軸Ｃ２の位置ずれ量Ｒ０を算出する。
【００６３】
具体的に説明すると、ＣＰＵ３０１は、画像解析して、軌跡Ｔ０（部分軌跡Ｔ２）の上限のピークＰ１、Ｐ３、Ｐ５を通る線（破線）Ｌ１を演算する。また、ＣＰＵ３０１は、画像解析して、軌跡Ｔ０（部分軌跡Ｔ２）の下限のピークＰ２、Ｐ４、Ｐ６を通る線（破線）Ｌ２を演算する。次に、ＣＰＵ３０１は、直線Ｌ１と直線Ｌ２の中間線（一点鎖線）Ｌ３を演算する。ここで、直線Ｌ３は、関節Ｊ６の回転軸Ｃ１の軌跡を意味する。次に、ＣＰＵ３０１は、直線Ｌ３の垂直方向（Ｙ軸方向）の直線Ｌ１と直線Ｌ２との距離（２×Ｒ０）を算出し、これに１／２を乗じて、位置ずれ量Ｒ０を算出する。
【００６４】
また、ＣＰＵ３０１は、直線Ｌ３（振れ幅（２×Ｒ０）の中心位置）に対する部分軌跡Ｔ１のオフセット量Ａ０を求める。そして、ＣＰＵ３０１は、位置ずれとして、オフセット量Ａ０と位置ずれ量Ｒ０とに基づき、リンク２１６の回転軸Ｃ１に対するロボットハンド２０２の中心軸Ｃ２の位置ずれ方向（角度）θ０を算出する。
【００６５】
図５（ｂ）は、実施形態において先端リンクの回転軸に対するロボットハンドの中心軸の位置ずれを説明するための図である。図５（ａ）及び図５（ｂ）を参照しながら具体的に説明すると、まず、ＣＰＵ３０１は、部分軌跡Ｔ１と直線Ｌ３との垂直方向（Ｙ軸方向）の距離（オフセット量）Ａ０を算出する。次に、ＣＰＵ３０１は、関節Ｊ６の角度を基準角度（０°）の状態としているときのオフセット量Ａ０と位置ずれ量Ｒ０とから、位置ずれ方向（位置ずれ角度）θ０＝ａｒｃｓｉｎ（Ａ０／Ｒ０）を計算する。ここで、関節Ｊ６の角度は、リンク２１５に対するリンク２１６の角度である。部分軌跡Ｔ１を撮像したときの関節Ｊ６の角度を基準角度とする。よって、位置ずれ方向θ０は、基準角度に対する角度である。この演算により、部分軌跡Ｔ１を撮像したときのリンク２１６の回転軸Ｃ１に対するロボットハンド２０２の中心軸Ｃ２の位置ずれ方向（位置ずれ角度）θ０が求まる。
【００６６】
以上、本実施形態によれば、ロボットアーム２０１を動作させながら、軌跡Ｔ０からロボットハンド２０２の中心軸Ｃ２のずれ量Ｒ０とずれ角度θ０を高精度に求めることができる。これにより、組付作業中（部品の製造中）にロボット２００（つまりロボットアーム２０１）の動作を止めることなく、ロボットハンド２０２の位置ずれを測定できるため、タクトタイムを削減することができる。
【００６７】
また、ロボットハンド２０２にマークＭＫを付与したので、特別な測定治具が不要である。更に、撮像画像ＩＭからマークＭＫの軌跡Ｔ０のピーク間の距離を測定することにより、リンク２１６の回転精度の影響を受けることなく、位置ずれ量Ｒ０を高精度に測定できる。また、ずれ方向θ０についても、軌跡Ｔ０の測定結果に基づき、高精度に測定できる。
【００６８】
また、位置ずれ方向θ０を、撮像画像ＩＭから部分軌跡Ｔ１のオフセット量Ａ０と位置ずれ量Ｒ０とを求め、これらの値Ａ０，Ｒ０により算出することができるので、演算負荷が小さく、速やかに軌道データを補正することができる。これにより、速やかにロボットアーム２０１の動作を補正でき、タクトタイムを削減できる。
【００６９】
また、軌道データを補正するようにしたので、ロボットアーム２０１にロボットハンド２０２を高精度に装着するための高価な部品も必要なく、コストダウンが可能である。
【００７０】
なお、以上の説明では、リンク２１６を回転させているときのマークＭＫの速度と、リンク２１６の回転軸Ｃ１のＸ軸方向の移動速度とが同じ場合について説明したが、これに限定するものでなく、互いの速度が異なっていてもよい。図６（ａ）及び図６（ｂ）は、実施形態においてマークの移動軌跡が写り込んだ撮像画像の別の例を示す模式図である。
【００７１】
図６（ａ）では、リンク２１６を回転させているときのマークＭＫの速度が、リンク２１６の回転軸Ｃ１のＸ軸方向の移動速度よりも速い場合を図示している。図６（ｂ）では、リンク２１６を回転させているときのマークＭＫの速度が、リンク２１６の回転軸Ｃ１のＸ軸方向の移動速度よりも遅い場合を図示している。いずれの場合であっても、撮像画像ＩＭからピークＰ１〜Ｐ６を抽出することができ、位置ずれ量Ｒ０を求めることができる。
【００７２】
また、以上の説明では、ステップＳ３において、カメラ５００の撮像面（ＸＹ平面）に対してリンク２１６が直線移動するように、ロボットアーム２０１を動作させる場合について説明したが、これに限定するものではない。ステップＳ３において、カメラ５００の撮像面（ＸＹ平面）に対してリンク２１６が円弧移動（つまり円弧補間）するように、ロボットアーム２０１を動作させる場合であってもよい。例えば、関節Ｊ２〜Ｊ５を固定（停止）させ、関節Ｊ１を回転させるように動作させて、カメラ５００にロボットハンド２０２を撮像させてもよい。
【００７３】
図７は、実施形態においてマークの移動軌跡が写り込んだ撮像画像の更に別の例を示す模式図である。図７では、リンク２１６を円弧移動させた場合の撮像画像ＩＭを図示している。ステップＳ７において、ＣＰＵ３０１は、図７に示す撮像画像ＩＭから、マークＭＫの軌跡Ｔ０に基づき、リンク２１６の回転軸Ｃ１に対するロボットハンド２０２の中心軸Ｃ２の位置ずれを算出する。具体的に説明すると、ＣＰＵ３０１は、画像解析して、軌跡Ｔ０（部分軌跡Ｔ２）の上限のピークＰ１、Ｐ３、Ｐ５を通る円弧線（破線）Ｌ１を演算する。また、ＣＰＵ３０１は、画像解析して、軌跡Ｔ０（部分軌跡Ｔ２）の下限のピークＰ２、Ｐ４、Ｐ６を通る円弧線（破線）Ｌ２を演算する。この場合、上限及び下限のピークは、それぞれ３点以上必要である。したがって、リンク２１６を３回転以上させて部分軌跡Ｔ２を撮像する必要がある。
【００７４】
次に、ＣＰＵ３０１は、円弧線Ｌ１と円弧線Ｌ２の中間線（一点鎖線）Ｌ３を演算する。ここで、円弧線Ｌ３は、関節Ｊ６の回転軸Ｃ１の軌跡を意味する。次に、ＣＰＵ３０１は、円弧線Ｌ３に垂直な方向（半径方向）の直線Ｌ１と直線Ｌ２との距離（２×Ｒ０）を算出し、これに１／２を乗じて、位置ずれ量Ｒ０を算出する。
【００７５】
また、ＣＰＵ３０１は、円弧線Ｌ３（振れ幅（２×Ｒ０）の半径方向の中心位置）に対する部分軌跡Ｔ１のオフセット量Ａ０を求める。そして、ＣＰＵ３０１は、位置ずれとして、オフセット量Ａ０と位置ずれ量Ｒ０とに基づき、リンク２１６の回転軸Ｃ１に対するロボットハンド２０２の中心軸Ｃ２の位置ずれ方向θ０を算出する。このように、リンク２１６を円弧移動させてもロボットハンド２０２の位置ずれを高精度に求めることができる。
【００７６】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されない。
【００７７】
上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００７８】
また、上述の実施形態では、先端リンク２１６が直線又は円弧移動する場合について説明したが、これに限定するものではない。直線移動及び円弧移動を組み合わせて動作する場合であってもよい。また、これらの移動方法に限らず、任意の動作を行ってもよく、その場合には、軌跡のピークから近似曲線を描くことで関節Ｊ６の中心の軌跡を求め、位置ずれ量と位置ずれ方向の計算を行ってもよい。
【００７９】
また、上述の実施形態では、先端リンク２１６を一定速度で移動させる場合について説明したが、これに限定するものではなく、移動速度が変化してもよい。また、先端リンク２１６の回転速度も一定の場合について説明したが、回転速度が変化してもよい。
【００８０】
また、上述の実施形態では、カメラ５００によるロボットハンド２０２の撮像中に、リンク２１６を回転停止状態から回転状態に切り替えた場合について説明したが、これに限定するものではない。リンク２１６を回転状態から回転停止状態に切り替えてもよく、また、回転状態と回転停止状態とを交互に１回以上行ってもよい。
【００８１】
また、上述の実施形態では、ロボットアーム２０１が垂直多関節のロボットアームの場合について説明したが、これに限定するものではない。ロボットアーム２０１が、例えば、水平多関節のロボットアーム、パラレルリンクのロボットアーム、直交ロボット等、種々のロボットアームであってもよい。
【００８２】
また、上述の実施形態では、ロボットハンド２０２にマークＭＫが付与されている場合について説明したが、これに限定するものではなく、ロボットハンド２０２が把持する把持物にマークが付与されている場合であってもよい。この場合、ロボットハンド２０２の中心軸Ｃ２上にマークが位置するようにマークを把持物に形成しておけばよい。この場合、ロボットハンド２０２に把持物を精度よく把持させる必要がある。したがって、上述の実施形態のようにロボットハンド２０２にマークＭＫを付与する方が、簡便であり好ましい。
【００８３】
また、上述の実施形態では、ロボット２００が行う作業として組付作業について説明したが、組付作業に限定するものではない。エンドエフェクタがツール、又はツールを把持したロボットハンドであって、ねじ止め作業や接着剤を塗布する作業等、種々の作業を行う場合であってもよい。この場合、ツールにマークが付与されていてもよい。
【００８４】
また、ロボットハンド２０２の中心軸上にマークＭＫが付与されている場合について説明したが、撮像画像上、ロボットハンドの部材に基づき、ロボットハンドの中心軸の位置の軌跡を求めることができれば、マークが付与されていない場合であってもよい。もちろん、マークが付与されている方が、演算負荷が小さいため好ましい。
【００８５】
また、上述の実施形態では、複数のコンピュータ（ＣＰＵ）で制御部８０１が構成されている場合について説明したが、１つのコンピュータ（ＣＰＵ）で制御部が構成されていてもよい。
【００８６】
また、上述の実施形態では、算出した位置ずれに基づき軌道データを補正する場合について説明したが、これに限定するものではなく、先端リンクに対するロボットハンドの位置ずれそのものを修正してもよい。この場合、先端リンクにロボットハンドをスライドさせるスライド機構を設け、スライド機構により位置ずれを解消させてもよい。
【００８７】
また、上述の実施形態では、組付作業等の作業を行うロボットプログラムにより作成した、補正前の軌道データに基づきロボットアーム２０１を動作させている最中に、撮像処理を行う場合について説明したが、これに限定するものではない。例えば、ロボットハンド２０２を撮像するためのロボットプログラムを別途作成しておき、このロボットプログラムにより作成した軌道データに基づきロボットアーム２０１を動作させている最中に、撮像処理を行ってもよい。
【００８８】
また、上述の実施形態では、ロボットハンド２０２を交換したときだけ位置ずれの演算を行う場合について説明したが、組付作業毎に毎回行ってもよい。
【００８９】
また、上述の実施形態では、回転停止状態においてもロボットハンド２０２の撮像を行う場合について説明したが、回転状態のみロボットハンド２０２の撮像を行ってもよい。この場合、ロボットハンド２０２の中心軸Ｃ２の位置ずれ方向（角度）は、軌跡の波形のピークにおける関節Ｊ６の関節指令値から求めることができる。
【００９０】
また、上述の実施形態では、カメラ５００が所定のフレームレートで撮像を行う場合について説明したが、これに限定するものではない。ロボットハンド２０２（マークＭＫ）を撮像する際に、シャッターを開状態に維持してマークＭＫの軌跡を撮像するようにしてもよい。
【符号の説明】
【００９１】
１００…ロボット装置、２０１…ロボットアーム、２０２…ロボットハンド（エンドエフェクタ）、２１６…リンク（先端リンク）、５００…カメラ（撮像装置）、８０１…制御部、Ｃ１…回転軸、Ｃ２…中心軸
【図１】
2017124468.tif 000003
【図２】
2017124468.tif 000004
【図３】
2017124468.tif 000005
【図４】
2017124468.tif 000006
【図５】
2017124468.tif 000007
【図６】
2017124468.tif 000008
【図７】
2017124468.tif 000009