(57)【要約】【課題】ワークを撮像した撮像画像にブレが生じるのをより効果的に低減する。【解決手段】カメラにワークの撮像を開始させる（Ｓ１２：撮像開始工程）。カメラによる撮像中に、ロボットの振動に関する情報を検出する検出部から検出結果を取得する検出処理を実行する（Ｓ１３：検出工程）。ステップＳ１３にて取得した検出結果に基づき、ロボットの振動が収束しているか否かを判断する（Ｓ１４〜Ｓ１６：判断工程）。判断の結果、ロボットの振動が収束していると判断した場合（Ｓ１７：Ｙｅｓ）には、カメラによる撮像完了後（Ｓ１８）、撮像画像からワークの位置及び姿勢を求める画像処理を行う（Ｓ１９：画像処理工程）。【選択図】図３
2015136778.tif 000002
【特許請求の範囲】
【請求項１】
制御部が、ワークを撮像したカメラから取得した撮像画像を用いて前記ワークの位置及び姿勢を求める画像処理を行い、多関節のロボットアーム、及び前記ロボットアームの先端に取り付けられたエンドエフェクタを有するロボットの動作を、前記ワークの位置及び姿勢に基づいて制御するロボット制御方法において、
前記制御部が、前記カメラに前記ワークの撮像を開始させる撮像開始工程と、
前記制御部が、前記カメラによる撮像中に、前記ロボットの振動に関する情報を検出する検出部から検出結果を取得する検出工程と、
前記制御部が、前記検出工程にて取得した検出結果に基づき、前記ロボットの振動が収束しているか否かを判断する判断工程と、
前記制御部が、前記判断工程の判断の結果、前記ロボットの振動が収束していると判断した場合には、前記カメラによる撮像完了後、前記画像処理を行う画像処理工程と、を備えたことを特徴とするロボット制御方法。
【請求項２】
前記制御部が、前記判断工程の判断の結果、前記ロボットの振動が収束していないと判断した場合、前記カメラによる撮像を終了させた後、再度、前記撮像開始工程を実行することを特徴とする請求項１に記載のロボット制御方法。
【請求項３】
前記制御部が、前記カメラによる撮像中、前記検出工程及び前記判断工程を繰り返し実行することを特徴とする請求項１又は２に記載のロボット制御方法。
【請求項４】
前記検出部は、前記ロボットの振動に関する情報として、前記ロボットの位置、前記ロボットの速度、及び前記ロボットの加速度のうち少なくとも１つの情報を検出することを特徴とする請求項１乃至３のいずれか１項に記載のロボット制御方法。
【請求項５】
前記検出部は、前記ロボットの振動に関する情報として、前記ロボットの位置、前記ロボットの速度、及び前記ロボットの加速度のうちいずれか１つの情報を検出するセンサを有し、
前記判断工程では、前記制御部が、前記検出工程にて取得した検出結果から、前記ロボットの位置、前記ロボットの速度、及び前記ロボットの加速度のうちの残りの２つの情報を演算により求め、前記ロボットの振動が収束しているか否かの判断として、前記ロボットの位置、前記ロボットの速度、前記ロボットの加速度が、それぞれ所定位置範囲内、所定速度範囲内、所定加速度範囲内であるか否かを判断し、
前記画像処理工程では、前記制御部が、前記ロボットの位置が前記所定位置範囲内であり、前記ロボットの速度が前記所定速度範囲内であり、前記ロボットの加速度が前記所定加速度範囲内であると判断した場合に、前記カメラによる撮像完了後、前記画像処理を行うことを特徴とする請求項１乃至３のいずれか１項に記載のロボット制御方法。
【請求項６】
前記ロボットが複数存在し、
前記検出部が前記各ロボットに対応して設けられ、
前記検出工程では、前記制御部が、前記カメラによる撮像中に、前記複数の検出部から検出結果を取得し、
前記判断工程では、前記制御部が、前記検出工程にて取得した検出結果に基づき、前記複数のロボットの振動が全て収束しているか否かを判断し、
前記画像処理工程では、前記制御部が、前記判断工程の判断の結果、前記複数のロボットの振動が全て収束していると判断した場合には、前記カメラによる撮像完了後、前記画像処理を行うことを特徴とする請求項１乃至４のいずれか１項に記載のロボット制御方法。
【請求項７】
前記カメラが、前記ロボットに取り付けられていることを特徴とする請求項１乃至５のいずれか１項に記載のロボット制御方法。
【請求項８】
前記カメラが、前記複数のロボットのうちいずれかのロボットに取り付けられていることを特徴とする請求項６に記載のロボット制御方法。
【請求項９】
前記カメラが、床に配置される支持部材に支持されていることを特徴とする請求項１乃至６のいずれか１項に記載のロボット制御方法。
【請求項１０】
多関節のロボットアーム、及び前記ロボットアームの先端に取り付けられたエンドエフェクタを有するロボットと、
前記ロボットの作業対象であるワークを撮像するカメラと、
前記ロボットの振動に関する情報を検出する検出部と、
前記カメラから取得した撮像画像を用いて前記ワークの位置及び姿勢を求める画像処理を行い、前記ロボットの動作を、前記ワークの位置及び姿勢に基づいて制御する制御部と、を備え、
前記制御部は、
前記カメラに前記ワークの撮像を開始させ、
前記カメラによる撮像中に、前記検出部から検出結果を取得し、
前記検出部から取得した検出結果に基づき、前記ロボットの振動が収束しているか否かを判断し、
前記ロボットの振動が収束していると判断した場合には、前記カメラによる撮像完了後、前記画像処理を行うことを特徴とするロボット装置。
【請求項１１】
コンピュータに請求項１乃至９のいずれか１項に記載のロボット制御方法の各工程を実行させるためのプログラム。
【請求項１２】
請求項１１に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの動作をワークの位置及び姿勢に基づいて制御するロボット制御方法、ロボット装置、プログラム及び記録媒体に関する。
【背景技術】
【０００２】
ロボットによる部品組立作業は予め位置と姿勢を設定された教示点上を繰返し動作するものが殆どであったが、最近では精密な組立作業や加工作業を行うためにカメラを用いてワークの位置及び姿勢を認識することが行われている。その際、ワークの認識精度を向上させる手段として、振動による撮像ブレの無い画像を取得することが望まれる。すなわち、カメラと撮像対象であるワークの相対位置関係が不変であることと、カメラに内蔵されている視覚センサにおけるワークの存在する座標が把握されていることが挙げられる。
【０００３】
振動による撮像ブレ対策として、撮像時間を短縮化する方法が考えられる。撮像時間を短縮化すると、視覚センサが受光できる光量が減少するため、レンズの開口径（絞り値、Ｆ値ともいう）を大きくする必要がある。しかし、撮像対象であるワークの表面形状によっては認識に必要十分な光量を確保できないことがある。
【０００４】
そこで、組立要求精度に応じて設定した範囲に振動が収束した瞬間にカメラのシャッターを切る（撮像を開始する）方法が提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１１３３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、振動が収束したことを確認して撮像を開始する特許文献１の方法では、カメラの撮像開始後に外乱等により振動が生じた場合、撮像した画像にブレが生じる可能性があった。そのため、画像処理装置がブレのある撮像画像に対して画像処理を行ってもワークの位置及び姿勢を認識できないといった問題が発生していた。
【０００７】
本発明は、ワークを撮像した撮像画像にブレが生じるのをより効果的に低減することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、制御部が、ワークを撮像したカメラから取得した撮像画像を用いて前記ワークの位置及び姿勢を求める画像処理を行い、多関節のロボットアーム、及び前記ロボットアームの先端に取り付けられたエンドエフェクタを有するロボットの動作を、前記ワークの位置及び姿勢に基づいて制御するロボット制御方法において、前記制御部が、前記カメラに前記ワークの撮像を開始させる撮像開始工程と、前記制御部が、前記カメラによる撮像中に、前記ロボットの振動に関する情報を検出する検出部から検出結果を取得する検出工程と、前記制御部が、前記検出工程にて取得した検出結果に基づき、前記ロボットの振動が収束しているか否かを判断する判断工程と、前記制御部が、前記判断工程の判断の結果、前記ロボットの振動が収束していると判断した場合には、前記カメラによる撮像完了後、前記画像処理を行う画像処理工程と、を備えたことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、カメラによる撮像中にロボットの振動が収束していることを確認して撮像を完了するので、ワークを撮像した撮像画像にブレが生じるのをより効果的に低減することができる。これにより、撮像画像からワークの位置及び姿勢を精度よく認識することができ、ロボットによる作業精度が向上する。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係るロボット装置の概略構成を示す斜視図である。
【図２】第１実施形態に係るロボット装置を示すブロック図である。
【図３】第１実施形態に係るロボット制御方法の各工程を示すフローチャートである。
【図４】ロボットの動作停止後に発生するロボットの残留振動による位置、速度及び加速度の時間変化を示したグラフである。
【図５】第２実施形態に係るロボット装置の概略構成を示す斜視図である。
【図６】第２実施形態に係るロボット装置を示すブロック図である。
【図７】第２実施形態に係るロボット制御方法の各工程を示すフローチャートである。
【図８】ロボットの動作停止後に発生するロボットの残留振動による位置、速度及び加速度の時間変化を示したグラフである。
【図９】第３実施形態に係るロボット装置の概略構成を示す斜視図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１２】
［第１実施形態］
図１は、本発明の第１実施形態に係るロボット装置の概略構成を示す斜視図である。ロボット装置１００は、１つのロボット２００を備えた、いわゆる単腕ロボット装置である。ロボット装置１００は、ロボット２００の作業対象であるワークＷを撮像するカメラ３００を備えている。また、ロボット装置１００は、カメラ３００で撮像した撮像画像を取り込んで、所定の画像処理を施す画像処理装置（画像処理部）４００と、ロボット２００を制御するロボット制御装置５００と、を備えている。第１実施形態では、画像処理装置４００とロボット制御装置５００により、制御システム（制御部）６００が構成されている。
【００１３】
ロボット２００は、垂直多関節（例えば６軸）のロボットアーム２０１と、ロボットアーム２０１の先端に取り付けられた、ワークＷを把持するためのロボットハンド（エンドエフェクタ）２０２と、を有している。ロボットアーム２０１は、複数のリンク２１１〜２１６が関節で連結されて構成されている。ロボットアーム２０１の基端は、床Ｆに配置された架台７００上に固定されている。
【００１４】
ロボットハンド２０２とロボットアーム２０１との間には、ロボットハンド２０２に作用する力（例えばロボットハンド２０２がワークＷを把持したときの力）を検出する力覚センサ２５０が設けられている。
【００１５】
カメラ３００は、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等の撮像素子（視覚センサ）を有するデジタルカメラである。カメラ３００は、支柱によりロボットアーム２０１のリンク２１６に固定されており、カメラ３００の内部には、ロボット２００の加速度（カメラ３００の加速度）を検出する加速度センサ（検出部）２６０が搭載されている。カメラ３００及び加速度センサ２６０は、画像処理装置４００に接続されている。
【００１６】
画像処理装置４００は、カメラ３００で撮像した撮像画像に対してパターンマッチング等を行い、ワークＷの位置及び姿勢を求める画像処理を実行する。また、加速度センサ２６０で検出された加速度の情報は、画像処理装置４００を通じてロボット制御装置５００に出力される。
【００１７】
図２は、本発明の第１実施形態に係るロボット装置１００を示すブロック図である。ロボット制御装置５００は、演算部としてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１を備えている。また、ロボット制御装置５００は、記憶部として、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５０３、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）５０４を備えている。また、ロボット制御装置５００は、記録ディスクドライブ５０５、計時部であるタイマ５０６及び各種のインタフェース５１１〜５１４を備えている。なお、タイマ５０６は、ＣＰＵ５０１が備えていてもよい。
【００１８】
ＣＰＵ５０１には、ＲＯＭ５０２、ＲＯＭ５０３、ＨＤＤ５０４、記録ディスクドライブ５０５及び各種のインタフェース５１１〜５１４が、バス５２０を介して接続されている。ＲＯＭ５０２には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ５０３は、ＣＰＵ５０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００１９】
ＨＤＤ５０４は、ＣＰＵ５０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ５０１に、後述する各種演算処理を実行させるためのプログラム５３０を記録するものである。ＣＰＵ５０１は、ＨＤＤ５０４に記録（格納）されたプログラム５３０に基づいてロボット制御方法の各工程を実行する。
【００２０】
記録ディスクドライブ５０５は、記録ディスク５３１に記録された各種データやプログラム等を読み出すことができる。タイマ５０６は、ＣＰＵ５０１の制御により計時するものである。
【００２１】
インタフェース５１１には、画像処理装置４００が接続されている。画像処理装置４００は、カメラ３００から取得した撮像画像からワークＷの位置及び姿勢を求める画像処理を行い、ワークＷの位置及び姿勢を示すデータを、インタフェース５１１及びバス５２０を介してＣＰＵ５０１に出力する。
【００２２】
検出部である加速度センサ２６０は、ロボット２００の振動に関する情報として、ロボットの加速度の情報を検出する。加速度の情報は、画像処理装置４００、インタフェース５１１及びバス５２０を介してＣＰＵ５０１に出力される。
【００２３】
インタフェース５１２には、力覚センサ２５０が接続されている。力覚センサ２５０により検出された力の情報は、インタフェース５１２及びバス５２０を介してＣＰＵ５０１に出力される。
【００２４】
インタフェース５１３には、ロボットアーム２０１が接続されている。ＣＰＵ５０１は、組立用のプログラム５３０に基づいて軌道計算を行い、位置指令（関節角度指令）を所定時間間隔でインタフェース５１３を介してロボットアーム２０１の各関節の駆動部に出力する。各関節の駆動部は、入力した位置指令に基づき、各関節を駆動する。
【００２５】
インタフェース５１４には、ロボットハンド２０２が接続されており、ＣＰＵ５０１は、組立用のプログラム５３０に基づいてロボットハンド２０２の把持動作を制御する。
【００２６】
なお、バス５２０には、不図示のインタフェースを介して、書き換え可能な不揮発性メモリや外付けＨＤＤ等の不図示の外部記憶装置が接続されていてもよい。
【００２７】
第１実施形態では、画像処理装置４００が、ワークＷを撮像したカメラ３００から取得した撮像画像を用いてワークＷの位置及び姿勢を求める画像処理を行う。そして、ロボット制御装置５００のＣＰＵ５０１が、ＨＤＤ５０４に格納されたプログラム５３０を読み出して実行することで、ロボット２００の動作を、画像処理装置４００から取得したワークＷの位置及び姿勢のデータに基づいて制御する。
【００２８】
また、ＣＰＵ５０１は、加速度センサ２６０から取得した検出結果（加速度の情報）から、ロボット２００の位置、及びロボット２００の速度の２つの情報を、演算（積分）により求める。
【００２９】
つまり、第１実施形態では、ＣＰＵ５０１が加速度センサ２６０で得られた加速度情報を用いて演算処理（積分）を行うことで、ロボット２００の速度及び位置を求める方式とする。
【００３０】
ロボットアーム２０１は、画像処理装置４００から送られたワークＷの位置及び姿勢の情報と加速度センサ２６０の検出信号、ロボット制御装置５００に組み込まれた組立用のプログラム５３０によって、ワークＷの組立作業を行う。
【００３１】
ここで、ロボット２００の位置とは、ロボット２００の手先（即ちロボットハンド２０２）の位置である。また、ロボット２００の速度とは、ロボット２００の手先の速度であり、ロボット２００の加速度とは、ロボットの手先の加速度である。
【００３２】
なお、図示は省略するが、画像処理装置４００は、演算部（ＣＰＵ）と、演算部に画像処理を実行させるプログラムを記憶した記憶部とを有している。
【００３３】
図３は、本発明の第１実施形態に係るロボット制御方法の各工程を示すフローチャートである。図４は、ロボット２００の動作停止（時刻ｔ０）後に発生するロボット２００の残留振動による位置Ｐ、速度Ｖ及び加速度Ａの時間変化を示したグラフである。図４には、Ｘ軸に時間、Ｙ軸に位置Ｐ、速度Ｖ、加速度Ａの振動波形を示している。
【００３４】
ＣＰＵ５０１は、ワークＷの撮像を行う所定の位置及び姿勢にロボット２００の動作を制御し、次いで、ロボット２００に動作停止信号を送り、ロボット２００の動作を停止させる（Ｓ１１）。つまり、ＣＰＵ５０１は、カメラ３００によりワークＷを撮像する位置及び姿勢にロボット２００を動作させてその位置及び姿勢でロボット２００を停止させる。
【００３５】
次に、ＣＰＵ５０１は、カメラ３００にワークＷの撮像を開始させる（Ｓ１２：撮像開始工程）。即ち、ＣＰＵ５０１は、画像処理装置４００を介してカメラ３００にシャッターを開くトリガ信号を出力する。このトリガ信号を入力したカメラ３００は、シャッターを開く。これと同時にＣＰＵ５０１は、タイマ５０６に計時を開始させる。
【００３６】
カメラ３００の撮像開始のタイミングは、ステップＳ１１のＪＯＢ動作開始後であり、ロボットハンド２０２でワークＷを把持する前までに撮像を完了するものである。
【００３７】
ところで、ＣＰＵ５０１は、ステップＳ１１により、図４の時刻ｔ０のタイミングでロボット２００に動作停止信号を送り、ロボット２００が停止したと判断する。しかし、実際にはロボット２００は動作停止に伴う振動が残留しているため、ロボットアーム２０１の先端、つまりロボットアーム２０１の先端に取り付けられたロボットハンド２０２とカメラ３００の位置、速度及び加速度は絶えず変化している。
【００３８】
ロボット２００の残留振動によるロボット２００の位置を実位置Ｐｎ１、ロボット２００の速度を実速度Ｖｎ１、ロボット２００の加速度を実加速度Ａｎ１とする。実位置Ｐｎ１、実速度Ｖｎ１、実加速度Ａｎ１は、図４に示すように、時刻ｔ０では大きな振幅であるが、時刻ｔ１から時刻ｔ２と時間が経過するにつれて、徐々に減衰していく。前述の残留振動の影響で、カメラ３００でワークＷを撮像するには、ロボット２００が動作を停止した時点（図４の時刻ｔ０）から振動が収束するまで待つ必要がある。
【００３９】
ＣＰＵ５０１は、カメラ３００による撮像中に、加速度センサ２６０から検出結果である加速度の情報を取得する（Ｓ１３：検出工程）。
【００４０】
次いで、ＣＰＵ５０１は、取得した加速度Ａｎ１の情報から、ロボット２００の位置Ｐｎ１及び速度Ｖｎ１の２つの情報を演算（積分）により求める。そして、ＣＰＵ５０１は、これら加速度Ａｎ１、速度Ｖｎ１、位置Ｐｎ１を閾値判定することにより、ロボット２００の振動が収束しているか否かを判断する（Ｓ１４〜Ｓ１６：判断工程）。
【００４１】
ＣＰＵ５０１は、ステップＳ１４〜Ｓ１６の判断の結果、ロボット２００の振動が収束していると判断した場合（Ｓ１４〜Ｓ１６：全て「ＯＫ」）、カメラ３００により撮像を開始してから所定時間経過したか否かを判断する（Ｓ１７）。つまり、ＣＰＵ５０１は、タイマ５０６の計時時間が所定時間に達したか否かを判断する。所定時間は、シャッタースピード（撮像時間）であり、予め設定された時間（例えば、１／１０秒）である。
【００４２】
ＣＰＵ５０１は、撮像を開始してから所定時間が経過するまでの間は、ステップＳ１３〜Ｓ１６を繰り返し実行する。
【００４３】
ＣＰＵ５０１は、ロボット２００の振動が収束していると判断している条件の下、撮像開始から所定時間が経過したと判断した場合（Ｓ１７：Ｙｅｓ）、カメラ３００による撮像を完了させる（Ｓ１８）。つまり、ＣＰＵ５０１は、カメラ３００のシャッターを閉じるトリガ信号を出力し、トリガ信号を受けたカメラ３００は、シャッターを閉じる。ＣＰＵ５０１は、カメラ３００による撮像完了後、画像処理装置４００に画像処理を行わせる（Ｓ１９：画像処理工程）。
【００４４】
つまり、ステップＳ１９では、ＣＰＵ５０１は、画像処理装置４００にカメラ３００から得た画像に対してパターンマッチング処理を行わせ、画像処理装置４００から、ワークＷの位置及び姿勢の情報を取得する。そして、ＣＰＵ５０１は、ワークＷの位置及び姿勢に基づき、ロボット２００の動作を制御する。
【００４５】
ＣＰＵ５０１は、ステップＳ１４〜Ｓ１６の判断の結果、ロボット２００の振動が収束していないと判断した場合（Ｓ１４〜Ｓ１６のうち少なくとも１つが「ＮＧ」）、カメラ３００による撮像を強制的に終了（つまり中止）させる（Ｓ２０）。この場合、撮像途中の画像は、破棄される。
【００４６】
このステップＳ２０の処理は、時間短縮の観点から、撮像を開始してから所定時間が経過するのを待たずに行うのが好ましいが、所定時間経過してから撮像を終了してもよい。
【００４７】
そして、ＣＰＵ５０１は、再度、ステップＳ１２の処理に戻って撮像を開始させる撮像開始工程を実行する。ＣＰＵ５０１は、ステップＳ１２の処理に戻ることで、ステップＳ１４〜Ｓ１６が「ＯＫ」の間は、ステップＳ１３〜Ｓ１７を繰り返し実行することとなる。なお、ＣＰＵ５０１は、ステップＳ２０で撮像を終了したら、直ちにステップＳ１２にて撮像を開始してもよいが、ステップＳ２０で撮像を終了してから所定の待機時間経過後、ステップＳ１２にて撮像を開始してもよい。ＣＰＵ５０１は、この所定の待機時間の計時もタイマ５０６に行わせる。
【００４８】
ここで、ステップＳ１４〜Ｓ１６の処理について具体的に説明する。検出部は、ロボット２００の振動に関する情報として、ロボット２００の位置、速度及び加速度のうち少なくとも１つの情報を検出すればよく、第１実施形態では、ロボット２００の加速度を検出する加速度センサ２６０である。
【００４９】
そして、判断工程では、ロボット２００の位置、速度及び加速度のうち、少なくとも１つを閾値判定すればよいが、特に、ロボット２００の加速度を閾値判定するのが好ましい。第１実施形態では、ロボット２００の位置、速度及び加速度のうち全てを閾値判定する。したがって、第１実施形態では、ＣＰＵ５０１は、ロボット２００の加速度の情報に基づいて、残り２つの情報、即ちロボット２００の速度及び位置を算出している。
【００５０】
まず、ＣＰＵ５０１は、加速度の情報に基づいて算出した実位置Ｐｎ１（位置の情報）について閾値判定する（Ｓ１４）。即ち、ＣＰＵ５０１は、算出した実位置Ｐｎ１が、予め設定した上限位置閾値＋Δｐ１１と下限位置閾値−Δｐ１２との間の所定位置範囲内（位置閾値許容範囲内）であるか否かを判断する。
【００５１】
ロボット２００には動作停止に伴う振動が残留しているため、ロボット２００に取り付けられたカメラ３００の位置は絶えず変化している。この残留振動によるロボット２００の位置（実位置）Ｐｎ１は、時間が経過するにつれて、徐々に減衰していく。カメラ３００でワークＷを撮像するには、ロボット２００が動作を停止した時点から振動が収束するまで待つ必要がある。したがって、第１実施形態では、ステップＳ１４でロボット２００の実位置Ｐｎ１の閾値判定を行う。
【００５２】
また、ＣＰＵ５０１は、加速度の情報に基づいて算出した実速度Ｖｎ１（速度の情報）について閾値判定する（Ｓ１５）。即ち、ＣＰＵ５０１は、算出した実速度Ｖｎ１が、予め設定した上限速度閾値＋Δｖ１１と下限速度閾値−Δｖ１２との間の所定速度範囲内（速度閾値許容範囲内）であるか否かを判断する。
【００５３】
即ち、ステップＳ１４で実位置Ｐｎ１が位置閾値の条件を満たしたとしても、ロボット２００に移動速度が残留している場合がある。このとき、カメラ３００で撮像を行ってもワークＷがブレた画像となる可能性が極めて高くなるため、ステップＳ１５でロボット２００の実速度Ｖｎ１の閾値判定を行う。
【００５４】
更にまた、ＣＰＵ５０１は、検出した実加速度Ａｎ１（加速度の情報）について閾値判定する（Ｓ１６）。即ち、ＣＰＵ５０１は、検出した実加速度Ａｎ１が、予め設定した上限加速度閾値＋Δａ１１と下限加速度閾値−Δａ１２との間の所定加速度範囲内（加速度閾値許容範囲内）であるか否かを判断する。
【００５５】
ステップＳ１４の位置閾値及びステップＳ１５の速度閾値を満足した場合であっても、一時的に実加速度Ａｎ１が上昇することがある。これは、ロボット２００に想定外の振動が発生している場合等である。このとき、カメラでワークを撮像したとしても、ワークの認識結果を劣化させる可能性があるため、ステップＳ１６でロボット２００の実加速度Ａｎ１の閾値判定を行う。
【００５６】
第１実施形態では、ＣＰＵ５０１は、ロボット２００の振動が収束しているか否かの判断として、ロボット２００の位置、速度、加速度が、それぞれ所定位置範囲内、所定速度範囲内、所定加速度範囲内であるか否かを判断する。
【００５７】
そして、ＣＰＵ５０１は、ロボット２００の位置が所定位置範囲内であり、速度が所定速度範囲内であり、加速度が所定加速度範囲内である場合、即ちステップＳ１４〜Ｓ１６のいずれも「ＯＫ」の場合には、ロボット２００の振動が収束していると判断する。ＣＰＵ５０１は、ロボット２００の位置、速度、加速度のうち少なくとも１つでも所定位置範囲内、所定速度範囲内、所定加速度範囲内ではない場合、即ちステップＳ１４〜Ｓ１６の少なくとも１つでも「ＮＧ」の場合には、振動が収束していないと判断する。
【００５８】
なお、これらステップＳ１４〜Ｓ１６の判定の順番は、これに限らず、どのステップから行ってもよく、同時にできる場合は、同時に行ってもよい。但し、実加速度Ａｎ１、実速度Ｖｎ１、実位置Ｐｎ１の順に閾値判定を行うと、閾値判定に要する時間を短縮することができるため、好ましい。
【００５９】
上限位置閾値＋Δｐ１１、下限位置閾値−Δｐ１２は、カメラ３００で撮像した画像内にワークＷが収まる時の許容値から決定される。なお、上限位置閾値＋Δｐ１１、下限位置閾値−Δｐ１２は、画像処理への要求精度により決定されるものである。上限速度閾値＋Δｖ１１、下限速度閾値−Δｖ１２は、カメラ３００のシャッタースピードと画像処理への要求精度により決定される。上限加速度閾値＋Δａ１１、下限加速度閾値−Δａ１２は、カメラ３００の許容振動振幅を目安に決定される。
【００６０】
以下、図４を例にステップＳ１４〜Ｓ１６の動作について説明する。なお、図４の時刻ｔ１の時点でカメラ３００の撮像を開始するものとする。
【００６１】
時刻ｔ１の時点で、実位置Ｐｎ１が位置閾値許容範囲−Δｐ１２≦Ｐｎ１≦＋Δｐ１１の条件、実加速度Ａｎ１が加速度閾値許容範囲−Δａ１２≦Ａｎ１≦＋Δａ１１の条件を満たしている。しかし、実速度Ｖｎ１が速度閾値許容範囲−Δｖ１２≦Ｖｎ１≦＋Δｖ１１の条件を満たしていない。
【００６２】
また、時刻ｔ２においても、実位置Ｐｎ１が位置閾値許容範囲−Δｐ１２≦Ｐｎ１≦＋Δｐ１１の条件、実速度Ｖｎ１が速度閾値許容範囲−Δｖ１２≦Ｖｎ１≦＋Δｖ１１の条件を満たしている。しかし、時刻ｔ２では、振動が時刻ｔ１の時点よりは減衰しているものの、実加速度Ａｎ１が加速度閾値許容範囲−Δａ１２≦Ａｎ１≦＋Δａ１１の条件を満たしていない。これは、ロボット２００に想定外の振動が発生しているためと考えられる。このとき、カメラ３００でワークＷを撮像したとしても、ワークＷの認識結果を劣化させる可能性がある。そのため、検出した実加速度Ａｎ１をフィードバックして撮像完了のタイミングを決定する。一般に、振動振幅は、「系を押す力」と「系の弾性係数」から予測できるものであるが、ロボットアーム２０１の弾性係数は姿勢や減速機の構造など非線形な部分が有るため、測定結果に誤差を生じる原因となる。
【００６３】
以上、時刻ｔ１から時刻ｔ３に至る前までは、ＣＰＵ５０１は、振動が収束していないと判断し続け、カメラ３００による撮像を開始しても、撮像を中止させて、撮像画像は廃棄し続ける。
【００６４】
次に、ＣＰＵ５０１は、時刻ｔ３でステップＳ１４〜Ｓ１６の３つの条件を満たす。しかし、カメラ３００による撮像を開始した時刻ｔ３から撮像時間Ｔｓが経過するまでに、時刻ｔ４において、外乱等の振動により、実位置Ｐｎ１及び実加速度Ａｎ１が閾値判定において条件を満たさなくなり、ステップＳ１４（Ｓ１６）で「ＮＧ」と判定される。したがって、時刻ｔ３から時刻ｔ４にかけて取り込んだ撮像画像はステップＳ２０にて廃棄される。時刻ｔ５においては、実速度Ｖｎ１も閾値判定において条件を満たさなくなる。時刻ｔ６においては、実位置Ｐｎ１，実速度Ｖｎ１が条件を満たしているが、実加速度Ａｎ１が依然として条件を満たしていない。
【００６５】
そして、ＣＰＵ５０１は、時刻ｔ７において、実位置Ｐｎ１、実速度Ｖｎ１、実加速度Ａｎ１の３つが条件を満たしていると判断し、時刻ｔ７から所定時間（撮像時間）Ｔｓ経過した時点で撮像を完了する（Ｓ１８）。
【００６６】
以上、第１実施形態によれば、ＣＰＵ５０１が、カメラ３００による撮像中にロボット２００の振動が収束していることを確認して撮像を完了させるので、ワークＷを撮像した撮像画像にブレが生じるのをより効果的に低減することができる。これにより、撮像画像からワークＷの位置及び姿勢を精度よく認識することができ、ロボット２００による作業精度が向上する。
【００６７】
また、第１実施形態によれば、ＣＰＵ５０１が、ロボット２００の振動が収束していないと判断した場合、カメラ３００による撮像を終了させて、再度、カメラ３００による撮像を開始している。つまり、ロボット２００の振動が収束するまで、ワークＷを撮り直すこととなり、撮像画像にブレが生じるのをより効果的に低減することができる。これにより、撮像画像からワークＷの位置及び姿勢を精度よく認識することができ、ロボット２００による作業精度が向上する。
【００６８】
また、第１実施形態によれば、ＣＰＵ５０１が、カメラ３００による撮像中、ステップＳ１３〜Ｓ１６を繰り返し実行するので、より効果的に撮像画像にブレが生じるのを低減することができる。
【００６９】
また、第１実施形態によれば、ロボット２００の振動に関する情報として、ロボット２００の加速度を検出しているので、正確にロボット２００の振動を把握することができる。また、第１実施形態によれば、ロボット２００の位置及び速度も演算により求めているので、より正確にロボット２００の振動を把握することができる。
【００７０】
そして、第１実施形態によれば、カメラ３００の撮像中において、ロボット２００が位置閾値以内であり、速度閾値以内であり、加速度閾値以内であるときのみ、所定時間経過したら撮像完了とし、撮像画像が画像処理装置４００にて取得される。これにより、カメラ３００の撮像完了タイミングを早めつつ、カメラ３００の撮像中に入力する外乱による振動により画像に生じるブレを低減することができる。また、画像処理装置４００でワークＷの認識異常の発生を防止できるため、画像処理装置４００での異常による装置停止の頻度を低減する効果が期待できる。
【００７１】
また、画像処理装置４００においては、エラー画像（ブレが生じた撮像画像）の画像補正処理を行う必要がないので、ワークＷの位置及び姿勢を求める画像処理に要する時間を短縮することができる。
【００７２】
［第２実施形態］
次に、本発明の第２実施形態に係るロボット装置におけるロボット制御方法について説明する。図５は、本発明の第２実施形態に係るロボット装置の概略構成を示す斜視図である。なお、第２実施形態のロボット装置１００Ａにおいて、上記第１実施形態のロボット装置１００の構成と同様の構成については、同一符号を付して説明を省略する。
【００７３】
ロボット装置１００Ａは、２つのロボット２００１，２００２を備えた、いわゆる双腕ロボット装置である。ロボット装置１００Ａは、上記第１実施形態と同様のカメラ３００及び画像処理装置（画像処理部）４００と、ロボット２００１，２００２を制御するロボット制御装置５００Ａと、を備えている。第２実施形態では、画像処理装置４００とロボット制御装置５００Ａにより、制御システム（制御部）６００Ａが構成されている。
【００７４】
ロボット２００１は、上記第１実施形態のロボットアーム２０１と同様の構成のロボットアーム２０１１と、上記第１実施形態のロボットハンド２０２と同様の構成のロボットハンド２０２１とを有している。ロボット２００２は、上記第１実施形態のロボットアーム２０１と同様の構成のロボットアーム２０１２と、ロボットアーム２０１２の先端に取り付けられたロボットハンド（エンドエフェクタ）２０２２とを有している。ロボットハンド２０２２は、ワークＷを把持可能に構成されている。
【００７５】
カメラ３００は、複数のロボット２００１，２００２のうちいずれか１つ、第２実施形態ではロボット２００１の先端に取り付けられている。したがって、ロボット２００２のロボットハンド２０２２で把持したワークＷをロボット２００１に取り付けられたカメラ３００で撮像することが可能である。
【００７６】
ロボットハンド２０２１とロボットアーム２０１１との間には、上記第１実施形態の力覚センサ２５０と同様の構成の力覚センサ２５０１が設けられている。
【００７７】
カメラ３００には、加速度センサ（検出部）２６０が設けられている。また、ロボットハンド２０２２とロボットアーム２０１２との間には、上記第１実施形態の力覚センサ２５０と同様の構成の力覚センサ（検出部）２５０２が設けられている。つまり、第２実施形態では、ロボットが複数存在し、検出部が各ロボットに対応して設けられている。
【００７８】
図６は、本発明の第２実施形態に係るロボット装置１００Ａを示すブロック図である。ロボット制御装置５００Ａは、演算部としてＣＰＵ５０１、記憶部として、ＲＯＭ５０２、ＲＡＭ５０３、ＨＤＤ５０４を備えている。また、ロボット制御装置５００は、記録ディスクドライブ５０５、タイマ５０６及び各種のインタフェース５１１〜５１７を備えている。なお、タイマ５０６は、ＣＰＵ５０１が備えていてもよい。
【００７９】
ＣＰＵ５０１には、ＲＯＭ５０２、ＲＯＭ５０３、ＨＤＤ５０４、記録ディスクドライブ５０５及び各種のインタフェース５１１〜５１７が、バス５２０を介して接続されている。
【００８０】
ＨＤＤ５０４には、ＣＰＵ５０１に、後述する各種演算処理を実行させるためのプログラム５３０Ａが記録（格納）されている。ＣＰＵ５０１は、ＨＤＤ５０４に記録（格納）されたプログラム５３０Ａに基づいてロボット制御方法の各工程を実行する。
【００８１】
上記第１実施形態と同様、インタフェース５１１には、画像処理装置４００が接続されている。
【００８２】
インタフェース５１２には力覚センサ２５０１が、インタフェース５１３にはロボットアーム２０１１が、インタフェース５１４にはロボットハンド２０２１がそれぞれ接続されている。また、インタフェース５１５には力覚センサ２５０２が、インタフェース５１６にはロボットアーム２０１２が、インタフェース５１７にはロボットハンド２０２２がそれぞれ接続されている。
【００８３】
ＣＰＵ５０１は、プログラム５３０Ａを読み出して実行することで、ロボット２００１，２００２の動作を、画像処理装置４００から取得したワークＷの位置及び姿勢のデータに基づいて制御する。
【００８４】
第２実施形態では、ＣＰＵ５０１は、加速度センサ２６０から取得した検出結果（加速度の情報）から、ロボット２００１の位置、及びロボット２００１の速度の２つの情報を、演算（演算）により求める。
【００８５】
また、ＣＰＵ５０１は、力覚センサ２５０２から取得した力の情報をロボット２００２の加速度の情報に変換して、当該加速度の情報を力覚センサ２５０２から検出結果とする。そして、ＣＰＵ５０１は、ロボット２００２の位置、及びロボット２００２の速度の２つの情報を、加速度の情報から演算（積分）により求める。
【００８６】
ここで、ロボット２００１，２００２の位置とは、ロボット２００１，２００２の手先（即ちロボットハンド２０２１，２０２２）の位置である。また、ロボット２００１，２００２の速度とは、ロボット２００１，２００２の手先の速度であり、ロボット２００１，２００２の加速度とは、ロボット２００１，２００２の手先の加速度である。
【００８７】
図７は、本発明の第２実施形態に係るロボット制御方法の各工程を示すフローチャートである。図８は、ロボット２００２の動作停止（時刻ｔ０）後に発生するロボット２００２の残留振動による位置Ｐ、速度Ｖ及び加速度Ａの時間変化を示したグラフである。図８には、Ｘ軸に時間、Ｙ軸に位置Ｐ、速度Ｖ、加速度Ａの振動波形を示している。
【００８８】
図７のフローチャートでは、ロボット２００２のロボットハンド２０２２に把持されたワークＷを、ロボット２００１に取り付けられたカメラ３００で撮像を行う場合について説明する。なお、ロボット２００１及びロボット２００２の関係は逆でもよい。
【００８９】
ＣＰＵ５０１は、ワークＷの撮像を行う所定の位置及び姿勢にロボット２００１，２００２の動作を制御し、次いで、ロボット２００１，２００２に動作停止信号を送り、ロボット２００１，２００２の動作を停止させる（Ｓ２１）。つまり、ＣＰＵ５０１は、カメラ３００によりワークＷを撮像する位置及び姿勢にロボット２００１，２００２を動作させてその位置及び姿勢でロボット２００１，２００２を停止させる。
【００９０】
次に、ＣＰＵ５０１は、カメラ３００にワークＷの撮像を開始させる（Ｓ２２：撮像開始工程）。即ち、ＣＰＵ５０１は、画像処理装置４００を介してカメラ３００にシャッターを開くトリガ信号を出力する。このトリガ信号を入力したカメラ３００は、シャッターを開く。これと同時にＣＰＵ５０１は、タイマ５０６に計時を開始させる。
【００９１】
カメラ３００の撮像開始のタイミングは、ステップＳ１１のＪＯＢ動作開始後であり、ロボットハンド２０２でワークＷを把持する前までに撮像を完了するものである。
【００９２】
ロボット２００１及びロボット２００２は動作停止による振動が残留している。これにより、カメラ３００に対するロボットハンド２０２２で把持しているワークＷの相対位置関係が常に変化するため、この状態で撮像した画像のブレは大きくなる。
【００９３】
ＣＰＵ５０１は、カメラ３００による撮像中に、加速度センサ２６０及び力覚センサ２５０２から検出結果である、ロボット２００１，２００２の加速度Ａｎ１，Ａｎ２の情報を取得する（Ｓ２３：検出工程）。
【００９４】
ＣＰＵ５０１は、取得した加速度Ａｎ１，Ａｎ２の情報から、ロボット２００１，２００２の位置Ｐｎ１，Ｐｎ２及び速度Ｖｎ１，Ｖｎ２の情報を演算（積分）により求める。そして、ＣＰＵ５０１は、これら加速度Ａｎ１，Ａｎ２、速度Ｖｎ１，Ｖｎ２、位置Ｐｎ１，Ｐｎ２を閾値判定することにより、ロボット２００１，２００２の振動が全て収束しているか否かを判断する（Ｓ２４〜Ｓ３２：判断工程）。
【００９５】
ＣＰＵ５０１は、ステップＳ２４〜Ｓ３２の判断の結果、ロボット２００１，２００２の振動が全て収束していると判断した場合（Ｓ２４〜Ｓ３２：全て「ＯＫ」）、カメラ３００により撮像を開始してから所定時間経過したか否かを判断する（Ｓ３３）。つまり、ＣＰＵ５０１は、タイマ５０６の計時時間が所定時間に達したか否かを判断する。所定時間は、シャッタースピード（撮像時間）であり、予め設定された時間（例えば、１／１０秒）である。
【００９６】
ＣＰＵ５０１は、撮像を開始してから所定時間が経過するまでの間は、ステップＳ２３〜Ｓ３２を繰り返し実行する。
【００９７】
ＣＰＵ５０１は、ロボット２００の振動が収束していると判断している条件の下、撮像開始から所定時間が経過したと判断した場合（Ｓ３３：Ｙｅｓ）、カメラ３００による撮像を完了させる（Ｓ３４）。つまり、ＣＰＵ５０１は、カメラ３００のシャッターを閉じるトリガ信号を出力し、トリガ信号を受けたカメラ３００は、シャッターを閉じる。ＣＰＵ５０１は、カメラ３００による撮像完了後、画像処理装置４００に画像処理を行わせる（Ｓ３５：画像処理工程）。
【００９８】
つまり、ステップＳ３５では、ＣＰＵ５０１は、画像処理装置４００にカメラ３００から得た画像に対してパターンマッチング処理を行わせ、画像処理装置４００から、ワークＷの位置及び姿勢の情報を取得する。そして、ＣＰＵ５０１は、ワークＷの位置及び姿勢に基づき、ロボット２００１，２００２の動作を制御する。
【００９９】
ＣＰＵ５０１は、ステップＳ２４〜Ｓ３２の判断の結果、ロボット２００１，２００２のうち少なくとも１つのロボットにおいて振動が収束していないと判断した場合、カメラ３００による撮像を強制的に終了（つまり中止）させる（Ｓ３６）。つまり、ＣＰＵ５０１は、ステップＳ２４〜Ｓ３２のうち少なくとも１つが「ＮＧ」）の場合、カメラ３００による撮像を強制的に終了（つまり中止）させる。この場合、撮像途中の画像は、破棄される。
【０１００】
このステップＳ３６の処理は、時間短縮の観点から、撮像を開始してから所定時間が経過するのを待たずに行うのが好ましいが、所定時間経過してから撮像を終了してもよい。
【０１０１】
そして、ＣＰＵ５０１は、再度、ステップＳ２２の処理に戻って撮像を開始させる撮像開始工程を実行する。ＣＰＵ５０１は、ステップＳ２２の処理に戻ることで、ステップＳ２４〜Ｓ３２が「ＯＫ」の間は、ステップＳ２３〜Ｓ３３を繰り返し実行することとなる。なお、ＣＰＵ５０１は、ステップＳ３６で撮像を終了したら、直ちにステップＳ２２にて撮像を開始してもよいが、ステップＳ３６で撮像を終了してから所定の待機時間経過後、ステップＳ２２にて撮像を開始してもよい。ＣＰＵ５０１は、この所定の待機時間の計時もタイマ５０６に行わせる。
【０１０２】
ここで、ステップＳ２４〜Ｓ３２の処理について具体的に説明する。ロボット２００１用の検出部は、ロボット２００１の振動に関する情報として、ロボット２００１の位置、速度及び加速度のうち少なくとも１つの情報を検出すればよい。第２実施形態では、ロボット２００１の加速度を検出する加速度センサ２６０である。
【０１０３】
そして、判断工程では、ロボット２００１の位置、速度及び加速度のうち、少なくとも１つを閾値判定すればよいが、特に、ロボット２００１の加速度を閾値判定するのが好ましい。第２実施形態では、ロボット２００１の位置、速度及び加速度のうち全てを閾値判定する。したがって、第２実施形態では、ＣＰＵ５０１は、ロボット２００１の加速度の情報に基づいて、残り２つの情報、即ちロボット２００１の速度及び位置を算出している。
【０１０４】
また、ロボット２００２用の検出部は、ロボット２００２の振動に関する情報として、ロボット２００２の位置、速度及び加速度のうち少なくとも１つの情報を検出すればよい。第２実施形態では、実質的にロボット２００２の加速度を検出する力覚センサ２５０２である。
【０１０５】
そして、判断工程では、ロボット２００２の位置、速度及び加速度のうち、少なくとも１つを閾値判定すればよいが、特に、ロボット２００２の加速度を閾値判定するのが好ましい。第２実施形態では、ロボット２００２の位置、速度及び加速度のうち全てを閾値判定する。したがって、第２実施形態では、ＣＰＵ５０１は、ロボット２００２の加速度の情報に基づいて、残り２つの情報、即ちロボット２００２の速度及び位置を算出している。
【０１０６】
まず、ＣＰＵ５０１は、加速度センサ２６０から得られた加速度の情報に基づいて算出したロボット２００１の実位置Ｐｎ１（第１位置の情報）について閾値判定する（Ｓ２４）。このステップＳ２４は、上記第１実施形態のステップＳ１４と同様の処理を行う。
【０１０７】
また、ＣＰＵ５０１は、加速度センサ２６０から得られた加速度の情報に基づいて算出したロボット２００１の実速度Ｖｎ１（第１速度の情報）について閾値判定する（Ｓ２５）。このステップＳ２５は、上記第１実施形態のステップＳ１５と同様の処理を行う。
【０１０８】
更にまた、ＣＰＵ５０１は、加速度センサ２６０から得られたロボット２００１の実加速度Ａｎ１（第１加速度の情報）について閾値判定する（Ｓ２６）。このステップＳ２６は、上記第１実施形態のステップＳ１６と同様の処理を行う。
【０１０９】
次に、ＣＰＵ５０１は、力覚センサ２５０２から得られた加速度の情報に基づいて算出したロボット２００２の実位置Ｐｎ２（第２位置の情報）について閾値判定する（Ｓ２７）。即ち、ＣＰＵ５０１は、算出した実位置Ｐｎ２が、予め設定した上限位置閾値＋Δｐ２１と下限位置閾値−Δｐ２２との間の所定位置範囲内（位置閾値許容範囲内）であるか否かを判断する。
【０１１０】
また、ＣＰＵ５０１は、力覚センサ２５０２から得られた加速度の情報に基づいて算出したロボット２００２の実速度Ｖｎ２（第２速度の情報）について閾値判定する（Ｓ２８）。即ち、ＣＰＵ５０１は、算出した実速度Ｖｎ２が、予め設定した上限速度閾値＋Δｖ２１と下限速度閾値−Δｖ２２との間の所定速度範囲内（速度閾値許容範囲内）であるか否かを判断する。
【０１１１】
更にまた、ＣＰＵ５０１は、力覚センサ２５０２から得られたロボット２００２の実加速度Ａｎ２（第２加速度の情報）について閾値判定する（Ｓ２９）。即ち、ＣＰＵ５０１は、検出した実加速度Ａｎ２が、予め設定した上限加速度閾値＋Δａ２１と下限加速度閾値−Δａ２２との間の所定加速度範囲内（加速度閾値許容範囲内）であるか否かを判断する。
【０１１２】
また、ＣＰＵ５０１は、実位置Ｐｎ１と実位置Ｐｎ２との合計が所定位置範囲内（位置閾値許容範囲内）であるか否かを判断する（Ｓ３０）。また、ＣＰＵ５０１は、実速度Ｖｎ１と実速度Ｖｎ２との合計が所定速度範囲内（速度閾値許容範囲内）であるか否かを判断する（Ｓ３１）。また、ＣＰＵ５０１は、実加速度Ａｎ１と実加速度Ａｎ２との合計が所定加速度範囲内（加速度閾値許容範囲内）であるか否かを判断する（Ｓ３２）。
【０１１３】
つまり、第２実施形態では、ＣＰＵ５０１は、ロボット２００１の振動が収束しているか否かの判断として、ロボット２００１の位置、速度、加速度が、それぞれ所定位置範囲内、所定速度範囲内、所定加速度範囲内であるか否かを判断する。そしてＣＰＵ５０１は、ロボット２００１の位置が所定位置範囲内であり、速度が所定速度範囲内であり、加速度が所定加速度範囲内である場合、即ちステップＳ２４〜Ｓ２６のいずれも「ＯＫ」の場合には、ロボット２００１の振動が収束していると判断する。ＣＰＵ５０１は、ロボット２００１の位置、速度、加速度のうち少なくとも１つでも所定位置範囲内、所定速度範囲内、所定加速度範囲内ではない場合、即ちステップＳ２４〜Ｓ２６の少なくとも１つでも「ＮＧ」の場合には、振動が収束していないと判断する。
【０１１４】
また、ＣＰＵ５０１は、ステップＳ２７〜Ｓ２９において、ロボット２００２についてもステップＳ２４〜Ｓ２６と同様に閾値判定する。
【０１１５】
ここで、カメラ３００は、ロボット２００１に取り付けられているため、ロボット２００２のロボットハンド２０２２に把持されているワークＷを撮像した撮像画像には、両方のロボット２００１，２００２の振動によるブレが発生する。
【０１１６】
そこで、第２実施形態では、位置Ｐｎ１と位置Ｐｎ２との位置合計、速度Ｖｎ１と速度Ｖｎ２との速度合計、加速度Ａｎ１と加速度Ａｎ２との加速度合計についても、ステップＳ３０〜Ｓ３２において、ステップＳ２４〜Ｓ２６と同様に、閾値判定する。
【０１１７】
具体的には、位置合計は、位置Ｐｎ１の絶対値と位置Ｐｎ２の絶対値との合計値、速度合計は、速度Ｖｎ１の絶対値と速度Ｖｎ２の絶対値との合計値、加速度合計は、加速度Ａｎ１の絶対値と加速度Ａｎ２の絶対値との合計値である。そして、これら合計値の少なくとも１つが、閾値を上回る場合、振動が収束していないと判断し、全ての合計値が閾値を下回る場合、振動が収束していると判断する。
【０１１８】
第２実施形態ではワークＷを把持するロボット２００２とワークＷを撮像するカメラ３００を取付けたロボット２００１を用いて組立動作を行う。これにより、ロボット２００１とロボット２００２でそれぞれ異なる組立動作を行うことにより、その動作に応じた振動変位がロボット２００１とロボット２００２に生じる。
【０１１９】
そのため、ロボット２００１に予め設定する位置閾値の上限＋Δｐ１１及び下限−Δｐ１２と、ロボット２００２に予め設定する位置閾値の上限＋Δｐ２１及び下限−Δｐ２２は、第１実施形態の位置閾値より小さくする必要がある。つまり、ロボット２００１の実位置Ｐｎ１と、ロボット２００２の実位置Ｐｎ２の合計が、画像処理への要求精度の許容値を超えないようにする必要があり、ステップＳ３０では、位置合計の閾値判定を行う。
【０１２０】
また、第２実施形態ではワークＷを把持するロボット２００２とワークＷを撮像するカメラ３００を取付けたロボット２００１を用いて組立動作を行う。そのため、位置閾値のときと同様にロボット２００１に予め設定する速度閾値の上限＋Δｖ１１及び下限−Δｖ１２と、ロボット２００２に予め設定する速度閾値の上限＋Δｖ２１及び下限−Δｖ２２は、第１実施形態の速度閾値より小さくする必要がある。つまり、ロボット２００１の実速度Ｖｎ１と、ロボット２００２の実速度Ｖｎ２の合計が、画像処理への要求精度の許容値を超えないようにする必要があり、ステップＳ３１では、速度合計の閾値判定を行う。
【０１２１】
更にまた、第２実施形態ではワークＷを把持するロボット２００２とワークＷを撮像するカメラ３００を取付けたロボット２００１を用いて組立動作を行う。位置閾値及び速度閾値のときと同様、ロボット２００１に設定する加速度閾値の上限＋Δａ１１及び下限−Δａ１２と、ロボット２００２に設定する加速度閾値の上限＋Δａ２１及び下限−Δａ２２は、第１実施形態の加速度閾値より小さくする必要がある。つまり、ロボット２００１の実加速度Ａｎ１と、ロボット２００２の実加速度Ａｎ２の合計が、画像処理への要求精度の許容値を超えないようにする必要があり、ステップＳ３２では、加速度合計の閾値判定を行う。
【０１２２】
なお、これらステップＳ２４〜Ｓ３２の判定の順番は、これに限らず、どのステップから行ってもよく、同時にできる場合は、同時に行ってもよい。但し、実加速度Ａｎ１、実速度Ｖｎ１、実位置Ｐｎ１の順に閾値判定を行うと、閾値判定に要する時間を短縮することができるため、好ましい。また、実加速度Ａｎ２、実速度Ｖｎ２、実位置Ｐｎ２の順に閾値判定を行うと、閾値判定に要する時間を短縮することができるため、好ましい。
【０１２３】
以下、図８を例にステップＳ２７〜Ｓ２９の動作について説明する。図８の時刻ｔ１１の時点でカメラ３００の撮像を開始するものとする。
【０１２４】
実位置Ｐｎ２，実速度Ｖｎ２，実加速度Ａｎ２は、図８に示すように、時刻ｔ０では大きな振幅であるが、時刻ｔ１１から時刻ｔ１５と時間が経過するにつれて、徐々に減衰していく。実位置Ｐｎ２及び実速度ＰＶｎ２は、ロボットハンド２０２２の基端とロボットアーム２０１２の先端との間に設けられた力覚センサ２５０２から検出された加速度の情報に基づいて得られる。
【０１２５】
カメラ３００の撮像中に図８の時刻ｔ１１〜ｔ１４では、実位置Ｐｎ２，実速度Ｖｎ２，実加速度Ａｎ２の少なくとも１つが閾値判定で「ＮＧ」であるため、画像を廃棄し、再度ステップＳ２２の撮像開始からやり直すことになる。そして、時刻ｔ１５でロボット２００２の実位置Ｐｎ２，実速度Ｖｎ２，実加速度Ａｎ２の全てが閾値以内となり、閾値判定で「ＯＫ」となるため、画像取得を許可する。しかし、所定時間（撮像時間）Ｔｓが経過する前に、時刻ｔ１６で実位置Ｐｎ２，実加速度Ａｎ２が「ＮＧ」となり、画像を廃棄し、再度ステップＳ２２の撮像開始からやり直すことになる。
【０１２６】
更に、時刻ｔ１７でもロボット２００２の実位置Ｐｎ２，実速度Ｖｎ２，実加速度Ａｎ２の全てが閾値以内となり、閾値判定で「ＯＫ」となるため、画像取得を許可するが、所定時間（撮像時間）Ｔｓが経過する前に「ＮＧ」となり、再度撮像開始からやり直す。
【０１２７】
最後に、時刻ｔ１８でロボット２００２の実位置Ｐｎ２，実速度Ｖｎ２，実加速度Ａｎ２の全てが閾値判定で「ＯＫ」となり、時刻ｔ８から所定時間（撮像時間）Ｔｓが経過した時点で撮像完了となり、撮像画像が取得される。
【０１２８】
ステップＳ２４〜Ｓ３２では、ロボット２００１の位置閾値、速度閾値及び加速度閾値の３つを判定し、ロボット２００２の位置閾値、速度閾値及び加速度閾値の３つを判定し、合計位置閾値、合計速度閾値及び合計加速度閾値の３つを判定する。つまり、全９つの閾値判定を行う。ロボット制御装置５００ＡのＣＰＵ５０１は、９つの閾値判定の全てが「ＯＫ」であると判断した場合に、カメラ３００の撮像完了を許可する。
【０１２９】
そして、ステップＳ３４でカメラ３００での撮像を完了して得られた画像が、画像処理装置４００に送られ、パターンマッチング等の画像処理を行うステップＳ３５を経て、ワークＷの位置及び姿勢を認識する。また、ロボット制御装置５００Ａを介して、ロボット２００２へ動作完了信号を送り、ワークＷが撮像可能状態であることの確認を完了する。画像処理装置４００で認識したワークＷの位置及び姿勢の情報はロボット制御装置５００Ａに送られ共有する。
【０１３０】
以上、第２実施形態の双腕ロボット装置１００Ａによれば、上記第１実施形態の単腕ロボット装置１００と同様の作用効果を奏する。即ち、ＣＰＵ５０１が、カメラ３００による撮像中にロボット２００１，２００２の振動が収束していることを確認して撮像を完了させるので、ワークＷを撮像した撮像画像にブレが生じるのをより効果的に低減することができる。これにより、撮像画像からワークＷの位置及び姿勢を精度よく認識することができ、ロボット２００１，２００２による作業精度が向上する。
【０１３１】
また、第２実施形態の双腕ロボット装置１００Ａにおける組立動作では、ロボット２００１及びロボット２００２が位置閾値、速度閾値及び加速度閾値の条件を満たしていることを確認する。そのため、ロボット２００２にはカメラを搭載しなくても良くなり、ロボット２００２のハンド部分の重量を軽くすることができる。これにより、駆動モータの加速性に余裕ができ、ロボットアーム２０１２の加速性が増すので、より安定な作業を実現することができる。
【０１３２】
［第３実施形態］
次に、本発明の第３実施形態に係るロボット装置について説明する。図９は、本発明の第３実施形態に係るロボット装置の概略構成を示す斜視図である。なお、第３実施形態のロボット装置１００Ｂにおいて、上記第１，第２実施形態のロボット装置１００，１００Ａの構成と同様の構成については、同一符号を付して説明を省略する。
【０１３３】
図９に示すロボット装置１００Ｂは、カメラ３００の代わりに、ワークトレイＴｒに置かれているワークＷの位置や数量を監視しているワーク監視用のカメラ３００Ｂを備えている。カメラ３００Ｂは、ワークトレイＴｒを撮像できる位置に、床Ｆに配置された支持部材３０１によって支持（固定）されている。この場合、カメラ３００Ｂとロボット２００２を用いて、図７の手順により組立動作を行う。
【０１３４】
ワーク監視用のカメラ３００Ｂとロボット２００２における組立動作では、カメラ３００Ｂ及びロボット２００２が位置閾値、速度閾値及び加速度閾値の条件を満たしていることをロボット制御装置５００Ａで確認する。そのため、ロボット２００２がワークトレイＴｒに置かれたワークＷを精度よく把持することが可能となるので、より安定した作業を実現することができる。
【０１３５】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。
【０１３６】
上記実施形態では、ロボットアームが、垂直型のロボットアームの場合について説明したが、多軸の直交ロボットでもよい。
【０１３７】
また、上記実施形態では、エンドエフェクタがロボットハンドである場合について説明したが、ワークに作業を施すツールであってもよい。
【０１３８】
また、上記実施形態では、加速度センサにより加速度を検出したが、これに限定するものではなく、ロボットハンドに搭載（内蔵）した力覚センサを用いて、ロボットハンドに掛る外力による振動を検出してもよい。
【０１３９】
また、上記第２及び第３実施形態では、ロボットが２つの場合について説明したが、ロボットが３つ以上の場合についても本発明は適用可能である。
【０１４０】
また、上記実施形態では、制御部である制御システムが、ロボット制御装置と画像処理装置とに２つのコンピュータで構成されている場合について説明したが、これに限定するものではなく、１つのコンピュータで構成されていてもよい。
【０１４１】
また、上記実施形態の各処理動作は具体的にはＣＰＵ５０１により実行されるものである。従って上述した機能を実現するプログラムを記録した記録媒体をロボット制御装置に供給し、ロボット制御装置のコンピュータ（ＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
【０１４２】
また、上記実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ５０４であり、ＨＤＤ５０４にプログラム５３０，５３０Ａが格納される場合について説明したが、これに限定するものではない。プログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、図２及び図６に示すＲＯＭ５０２、記録ディスク５３１、不図示の外部記憶装置等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、書き換え可能な不揮発性のメモリ（例えばＵＳＢメモリ）、ＲＯＭ等を用いることができる。
【０１４３】
また、上記実施形態におけるプログラムを、ネットワークを介してダウンロードしてコンピュータにより実行するようにしてもよい。
【０１４４】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施形態の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１４５】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上記実施形態の機能が実現される場合も含まれる。
【０１４６】
また、上記実施形態では、コンピュータがＨＤＤ等の記録媒体に記録されたプログラムを実行することにより、画像処理を行う場合について説明したが、これに限定するものではない。プログラムに基づいて動作する制御部の一部又は全部の機能をＡＳＩＣやＦＰＧＡ等の専用ＬＳＩで構成してもよい。なお、ＡＳＩＣはＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ、ＦＰＧＡはＦｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの頭字語である。
【符号の説明】
【０１４７】
１００…ロボット装置、２００…ロボット、２０１…ロボットアーム、２０２…エンドエフェクタ（ロボットハンド）、２６０…検出部（加速度センサ）、３００…カメラ、４００…画像処理装置、５００…ロボット制御装置、５３０…プログラム、６００…制御システム（制御部）
【図１】
2015136778.tif 000003
【図２】
2015136778.tif 000004
【図３】
2015136778.tif 000005
【図４】
2015136778.tif 000006
【図５】
2015136778.tif 000007
【図６】
2015136778.tif 000008
【図７】
2015136778.tif 000009
【図８】
2015136778.tif 000010
【図９】
2015136778.tif 000011