特許第6425385号(P6425385)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

特許6425385ロボット制御方法、ロボット制御装置、プログラム、記録媒体、及び部品の製造方法
<>
  • 特許6425385-ロボット制御方法、ロボット制御装置、プログラム、記録媒体、及び部品の製造方法 図000002
  • 特許6425385-ロボット制御方法、ロボット制御装置、プログラム、記録媒体、及び部品の製造方法 図000003
  • 特許6425385-ロボット制御方法、ロボット制御装置、プログラム、記録媒体、及び部品の製造方法 図000004
  • 特許6425385-ロボット制御方法、ロボット制御装置、プログラム、記録媒体、及び部品の製造方法 図000005
  • 特許6425385-ロボット制御方法、ロボット制御装置、プログラム、記録媒体、及び部品の製造方法 図000006
  • 特許6425385-ロボット制御方法、ロボット制御装置、プログラム、記録媒体、及び部品の製造方法 図000007
  • 特許6425385-ロボット制御方法、ロボット制御装置、プログラム、記録媒体、及び部品の製造方法 図000008
  • 特許6425385-ロボット制御方法、ロボット制御装置、プログラム、記録媒体、及び部品の製造方法 図000009
  • 特許6425385-ロボット制御方法、ロボット制御装置、プログラム、記録媒体、及び部品の製造方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6425385
(24)【登録日】2018年11月2日
(45)【発行日】2018年11月21日
(54)【発明の名称】ロボット制御方法、ロボット制御装置、プログラム、記録媒体、及び部品の製造方法
(51)【国際特許分類】
   B25J 13/08 20060101AFI20181112BHJP
【FI】
   B25J13/08 A
【請求項の数】11
【全頁数】22
(21)【出願番号】特願2014-10908(P2014-10908)
(22)【出願日】2014年1月24日
(65)【公開番号】特開2015-136778(P2015-136778A)
(43)【公開日】2015年7月30日
【審査請求日】2017年1月24日
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100082337
【弁理士】
【氏名又は名称】近島 一夫
(74)【代理人】
【識別番号】100141508
【弁理士】
【氏名又は名称】大田 隆史
(72)【発明者】
【氏名】大木 洋佑
【審査官】 臼井 卓巳
(56)【参考文献】
【文献】 特開平06−012112(JP,A)
【文献】 特開2005−342832(JP,A)
【文献】 特開2011−136395(JP,A)
【文献】 特開2013−184253(JP,A)
【文献】 特開2010−125582(JP,A)
【文献】 特開平08−285526(JP,A)
【文献】 特開2012−030350(JP,A)
【文献】 特開2005−074617(JP,A)
【文献】 米国特許出願公開第2011/0004343(US,A1)
【文献】 米国特許出願公開第2011/0087360(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 13/08−19/04
B23P 21/00
(57)【特許請求の範囲】
【請求項1】
ロボットの振動を検出する検出部の検出結果と、ワークを撮像した撮像画像を用いて求められた前記ワークの位置及び姿勢に基づいて、前記ロボットを制御するロボット制御方法において、
カメラによる所定時間の撮像を制御する第1制御工程と、
前記カメラによる前記所定時間の撮像中に、前記検出部が、あらかじめ定めた閾値よりも大きな振動を検出しなかった場合には、当該所定時間の撮像で得られた撮像画像を用いて求められた前記ワークの位置および姿勢に関する情報を前記ロボットの制御に利用し、
前記カメラによる前記所定時間の撮像中に、前記検出部が、あらかじめ定めた閾値よりも大きな振動を検出した場合には、当該所定時間の撮像で得られた撮像画像を用いて求められた前記ワークの位置および姿勢に関する情報を前記ロボットの制御に利用することなく、再度、前記カメラによる前記所定時間の撮像を行うように制御する第2制御工程と、を備えたことを特徴とするロボット制御方法。
【請求項2】
前記検出部は、前記ロボットの位置、前記ロボットの速度、前記ロボットの加速度のうち少なくとも1つの値を検出し、
前記第2制御工程において、
前記検出部により検出された、前記ロボットの位置、前記ロボットの速度、前記ロボットの加速度のうち少なくとも1つの値から、残りの2つの値を演算により求め、
前記カメラによる前記所定時間の撮像中に、前記ロボットの位置の値、前記ロボットの速度の値、前記ロボットの加速度の値、それぞれの値が、あらかじめ定めたそれぞれの閾値よりも小さい場合には、当該所定時間の撮像で得られた撮像画像を用いて求められた前記ワークの位置および姿勢に関する情報を前記ロボットの制御に利用し、
前記カメラによる前記所定時間の撮像中に、前記ロボットの位置の値、前記ロボットの速度の値、前記ロボットの加速度の値、それぞれの値が、あらかじめ定めたそれぞれの閾値よりも大きい場合には、当該所定時間の撮像で得られた撮像画像を用いて求められた前記ワークの位置および姿勢に関する情報を前記ロボットの制御に利用することなく、再度、前記カメラによる前記所定時間の撮像を行うように制御することを特徴とする請求項1に記載のロボット制御方法。
【請求項3】
前記ロボットは複数存在し、
前記検出部は、複数存在している前記ロボットそれぞれに設けられていることを特徴とする請求項1または請求項2に記載のロボット制御方法。
【請求項4】
前記カメラが、前記ロボットに取り付けられていることを特徴とする請求項1から請求項3のいずれか1項に記載のロボット制御方法。
【請求項5】
前記カメラが、前記複数のロボットのうちいずれかのロボットに取り付けられていることを特徴とする請求項1から請求項4のいずれか1項に記載のロボット制御方法。
【請求項6】
前記カメラが、床に配置される支持部材に支持されていることを特徴とする請求項1から請求項5のいずれか1項に記載のロボット制御方法。
【請求項7】
ロボットの振動を検出する検出部の検出結果と、ワークを撮像した撮像画像を用いて求められた前記ワークの位置及び姿勢に基づいて、前記ロボットを制御するロボット制御装置において、
カメラによる所定時間の撮像を制御する撮像制御手段と、
前記カメラによる前記所定時間の撮像中に、前記検出部が、あらかじめ定めた閾値よりも大きな振動を検出しなかった場合には、当該所定時間の撮像で得られた撮像画像を用いて求められた前記ワークの位置および姿勢に関する情報を前記ロボットの制御に利用し、
前記カメラによる前記所定時間の撮像中に、前記検出部が、あらかじめ定めた閾値よりも大きな振動を検出した場合には、当該所定時間の撮像で得られた撮像画像を用いて求められた前記ワークの位置および姿勢に関する情報を前記ロボットの制御に利用することなく、再度、前記カメラによる前記所定時間の撮像を行うように前記撮像制御手段を制御する制御部と、を備えたことを特徴とするロボット制御装置。
【請求項8】
前記検出部は、前記ロボットの位置、前記ロボットの速度、前記ロボットの加速度のうち少なくとも1つの値を検出し、
前記制御部は、
前記検出部により検出された、前記ロボットの位置、前記ロボットの速度、前記ロボットの加速度のうち少なくとも1つの値から、残りの2つの値を演算により求め、
前記カメラによる前記所定時間の撮像中に、前記ロボットの位置の値、前記ロボットの速度の値、前記ロボットの加速度の値、それぞれの値が、あらかじめ定めたそれぞれの閾値よりも小さい場合には、当該所定時間の撮像で得られた撮像画像を用いて求められた前記ワークの位置および姿勢に関する情報を前記ロボットの制御に利用し、
前記カメラによる前記所定時間の撮像中に、前記ロボットの位置の値、前記ロボットの速度の値、前記ロボットの加速度の値、それぞれの値が、あらかじめ定めたそれぞれの閾値よりも大きい場合には、当該所定時間の撮像で得られた撮像画像を用いて求められた前記ワークの位置および姿勢に関する情報を前記ロボットの制御に利用することなく、再度、前記カメラによる前記所定時間の撮像を行うように前記撮像制御手段を制御することを特徴とする請求項7に記載のロボット制御装置。
【請求項9】
コンピュータに請求項1乃至6のいずれか1項に記載のロボット制御方法の各工程を実行させるためのプログラム。
【請求項10】
請求項9に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項11】
請求項1乃至6のいずれか1項に記載のロボット制御方法を用いて組立作業または加工作業を行うことを特徴とする部品の製造方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットをワークの位置及び姿勢に基づいて制御するロボット制御方法、ロボット制御装置、プログラム、記録媒体、及び部品の製造方法に関する。
【背景技術】
【0002】
ロボットによる部品組立作業は予め位置と姿勢を設定された教示点上を繰返し動作するものが殆どであったが、最近では精密な組立作業や加工作業を行うためにカメラを用いてワークの位置及び姿勢を認識することが行われている。その際、ワークの認識精度を向上させる手段として、振動による撮像ブレの無い画像を取得することが望まれる。すなわち、カメラと撮像対象であるワークの相対位置関係が不変であることと、カメラに内蔵されている視覚センサにおけるワークの存在する座標が把握されていることが挙げられる。
【0003】
振動による撮像ブレ対策として、撮像時間を短縮化する方法が考えられる。撮像時間を短縮化すると、視覚センサが受光できる光量が減少するため、レンズの開口径(絞り値、F値ともいう)を大きくする必要がある。しかし、撮像対象であるワークの表面形状によっては認識に必要十分な光量を確保できないことがある。
【0004】
そこで、組立要求精度に応じて設定した範囲に振動が収束した瞬間にカメラのシャッターを切る(撮像を開始する)方法が提案されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2011−11330号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、振動が収束したことを確認して撮像を開始する特許文献1の方法では、カメラの撮像開始後に外乱等により振動が生じた場合、撮像した画像にブレが生じる可能性があった。そのため、画像処理装置がブレのある撮像画像に対して画像処理を行ってもワークの位置及び姿勢を認識できないといった問題が発生していた。
【0007】
本発明は、ワークを撮像した撮像画像にブレが生じるのをより効果的に低減することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、ロボットの振動を検出する検出部の検出結果と、ワークを撮像した撮像画像を用いて求められた前記ワークの位置及び姿勢に基づいて、前記ロボットを制御するロボット制御方法において、カメラによる所定時間の撮像を制御する第1制御工程と、前記カメラによる前記所定時間の撮像中に、前記検出部が、あらかじめ定めた閾値よりも大きな振動を検出しなかった場合には、当該所定時間の撮像で得られた撮像画像を用いて求められた前記ワークの位置および姿勢に関する情報を前記ロボットの制御に利用し、前記カメラによる前記所定時間の撮像中に、前記検出部が、あらかじめ定めた閾値よりも大きな振動を検出した場合には、当該所定時間の撮像で得られた撮像画像を用いて求められた前記ワークの位置および姿勢に関する情報を前記ロボットの制御に利用することなく、再度、前記カメラによる前記所定時間の撮像を行うように制御する第2制御工程と、を備えたことを特徴とする。
【発明の効果】
【0009】
本発明によれば、カメラによる撮像中にロボットの振動が収束していることを確認して撮像を完了するので、ワークを撮像した撮像画像にブレが生じるのをより効果的に低減することができる。これにより、撮像画像からワークの位置及び姿勢を精度よく認識することができ、ロボットによる作業精度が向上する。
【図面の簡単な説明】
【0010】
図1】第1実施形態に係るロボット装置の概略構成を示す斜視図である。
図2】第1実施形態に係るロボット装置を示すブロック図である。
図3】第1実施形態に係るロボット制御方法の各工程を示すフローチャートである。
図4】ロボットの動作停止後に発生するロボットの残留振動による位置、速度及び加速度の時間変化を示したグラフである。
図5】第2実施形態に係るロボット装置の概略構成を示す斜視図である。
図6】第2実施形態に係るロボット装置を示すブロック図である。
図7】第2実施形態に係るロボット制御方法の各工程を示すフローチャートである。
図8】ロボットの動作停止後に発生するロボットの残留振動による位置、速度及び加速度の時間変化を示したグラフである。
図9】第3実施形態に係るロボット装置の概略構成を示す斜視図である。
【発明を実施するための形態】
【0011】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【0012】
[第1実施形態]
図1は、本発明の第1実施形態に係るロボット装置の概略構成を示す斜視図である。ロボット装置100は、1つのロボット200を備えた、いわゆる単腕ロボット装置である。ロボット装置100は、ロボット200の作業対象であるワークWを撮像するカメラ300を備えている。また、ロボット装置100は、カメラ300で撮像した撮像画像を取り込んで、所定の画像処理を施す画像処理装置(画像処理部)400と、ロボット200を制御するロボット制御装置500と、を備えている。第1実施形態では、画像処理装置400とロボット制御装置500により、制御システム(制御部)600が構成されている。
【0013】
ロボット200は、垂直多関節(例えば6軸)のロボットアーム201と、ロボットアーム201の先端に取り付けられた、ワークWを把持するためのロボットハンド(エンドエフェクタ)202と、を有している。ロボットアーム201は、複数のリンク211〜216が関節で連結されて構成されている。ロボットアーム201の基端は、床Fに配置された架台700上に固定されている。
【0014】
ロボットハンド202とロボットアーム201との間には、ロボットハンド202に作用する力(例えばロボットハンド202がワークWを把持したときの力)を検出する力覚センサ250が設けられている。
【0015】
カメラ300は、CCDイメージセンサやCMOSイメージセンサ等の撮像素子(視覚センサ)を有するデジタルカメラである。カメラ300は、支柱によりロボットアーム201のリンク216に固定されており、カメラ300の内部には、ロボット200の加速度(カメラ300の加速度)を検出する加速度センサ(検出部)260が搭載されている。カメラ300及び加速度センサ260は、画像処理装置400に接続されている。
【0016】
画像処理装置400は、カメラ300で撮像した撮像画像に対してパターンマッチング等を行い、ワークWの位置及び姿勢を求める画像処理を実行する。また、加速度センサ260で検出された加速度の情報は、画像処理装置400を通じてロボット制御装置500に出力される。
【0017】
図2は、本発明の第1実施形態に係るロボット装置100を示すブロック図である。ロボット制御装置500は、演算部としてのCPU(Central Processing Unit)501を備えている。また、ロボット制御装置500は、記憶部として、ROM(Read Only Memory)502、RAM(Random Access Memory)503、HDD(Hard Disk Drive)504を備えている。また、ロボット制御装置500は、記録ディスクドライブ505、計時部であるタイマ506及び各種のインタフェース511〜514を備えている。なお、タイマ506は、CPU501が備えていてもよい。
【0018】
CPU501には、ROM502、ROM503、HDD504、記録ディスクドライブ505及び各種のインタフェース511〜514が、バス520を介して接続されている。ROM502には、BIOS等の基本プログラムが格納されている。RAM503は、CPU501の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【0019】
HDD504は、CPU501の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、CPU501に、後述する各種演算処理を実行させるためのプログラム530を記録するものである。CPU501は、HDD504に記録(格納)されたプログラム530に基づいてロボット制御方法の各工程を実行する。
【0020】
記録ディスクドライブ505は、記録ディスク531に記録された各種データやプログラム等を読み出すことができる。タイマ506は、CPU501の制御により計時するものである。
【0021】
インタフェース511には、画像処理装置400が接続されている。画像処理装置400は、カメラ300から取得した撮像画像からワークWの位置及び姿勢を求める画像処理を行い、ワークWの位置及び姿勢を示すデータを、インタフェース511及びバス520を介してCPU501に出力する。
【0022】
検出部である加速度センサ260は、ロボット200の振動に関する情報として、ロボットの加速度の情報を検出する。加速度の情報は、画像処理装置400、インタフェース511及びバス520を介してCPU501に出力される。
【0023】
インタフェース512には、力覚センサ250が接続されている。力覚センサ250により検出された力の情報は、インタフェース512及びバス520を介してCPU501に出力される。
【0024】
インタフェース513には、ロボットアーム201が接続されている。CPU501は、組立用のプログラム530に基づいて軌道計算を行い、位置指令(関節角度指令)を所定時間間隔でインタフェース513を介してロボットアーム201の各関節の駆動部に出力する。各関節の駆動部は、入力した位置指令に基づき、各関節を駆動する。
【0025】
インタフェース514には、ロボットハンド202が接続されており、CPU501は、組立用のプログラム530に基づいてロボットハンド202の把持動作を制御する。
【0026】
なお、バス520には、不図示のインタフェースを介して、書き換え可能な不揮発性メモリや外付けHDD等の不図示の外部記憶装置が接続されていてもよい。
【0027】
第1実施形態では、画像処理装置400が、ワークWを撮像したカメラ300から取得した撮像画像を用いてワークWの位置及び姿勢を求める画像処理を行う。そして、ロボット制御装置500のCPU501が、HDD504に格納されたプログラム530を読み出して実行することで、ロボット200の動作を、画像処理装置400から取得したワークWの位置及び姿勢のデータに基づいて制御する。
【0028】
また、CPU501は、加速度センサ260から取得した検出結果(加速度の情報)から、ロボット200の位置、及びロボット200の速度の2つの情報を、演算(積分)により求める。
【0029】
つまり、第1実施形態では、CPU501が加速度センサ260で得られた加速度情報を用いて演算処理(積分)を行うことで、ロボット200の速度及び位置を求める方式とする。
【0030】
ロボットアーム201は、画像処理装置400から送られたワークWの位置及び姿勢の情報と加速度センサ260の検出信号、ロボット制御装置500に組み込まれた組立用のプログラム530によって、ワークWの組立作業を行う。
【0031】
ここで、ロボット200の位置とは、ロボット200の手先(即ちロボットハンド202)の位置である。また、ロボット200の速度とは、ロボット200の手先の速度であり、ロボット200の加速度とは、ロボットの手先の加速度である。
【0032】
なお、図示は省略するが、画像処理装置400は、演算部(CPU)と、演算部に画像処理を実行させるプログラムを記憶した記憶部とを有している。
【0033】
図3は、本発明の第1実施形態に係るロボット制御方法の各工程を示すフローチャートである。図4は、ロボット200の動作停止(時刻t0)後に発生するロボット200の残留振動による位置P、速度V及び加速度Aの時間変化を示したグラフである。図4には、X軸に時間、Y軸に位置P、速度V、加速度Aの振動波形を示している。
【0034】
CPU501は、ワークWの撮像を行う所定の位置及び姿勢にロボット200の動作を制御し、次いで、ロボット200に動作停止信号を送り、ロボット200の動作を停止させる(S11)。つまり、CPU501は、カメラ300によりワークWを撮像する位置及び姿勢にロボット200を動作させてその位置及び姿勢でロボット200を停止させる。
【0035】
次に、CPU501は、カメラ300にワークWの撮像を開始させる(S12:撮像開始工程)。即ち、CPU501は、画像処理装置400を介してカメラ300にシャッターを開くトリガ信号を出力する。このトリガ信号を入力したカメラ300は、シャッターを開く。これと同時にCPU501は、タイマ506に計時を開始させる。
【0036】
カメラ300の撮像開始のタイミングは、ステップS11のJOB動作開始後であり、ロボットハンド202でワークWを把持する前までに撮像を完了するものである。
【0037】
ところで、CPU501は、ステップS11により、図4の時刻t0のタイミングでロボット200に動作停止信号を送り、ロボット200が停止したと判断する。しかし、実際にはロボット200は動作停止に伴う振動が残留しているため、ロボットアーム201の先端、つまりロボットアーム201の先端に取り付けられたロボットハンド202とカメラ300の位置、速度及び加速度は絶えず変化している。
【0038】
ロボット200の残留振動によるロボット200の位置を実位置Pn1、ロボット200の速度を実速度Vn1、ロボット200の加速度を実加速度An1とする。実位置Pn1、実速度Vn1、実加速度An1は、図4に示すように、時刻t0では大きな振幅であるが、時刻t1から時刻t2と時間が経過するにつれて、徐々に減衰していく。前述の残留振動の影響で、カメラ300でワークWを撮像するには、ロボット200が動作を停止した時点(図4の時刻t0)から振動が収束するまで待つ必要がある。
【0039】
CPU501は、カメラ300による撮像中に、加速度センサ260から検出結果である加速度の情報を取得する(S13:検出工程)。
【0040】
次いで、CPU501は、取得した加速度An1の情報から、ロボット200の位置Pn1及び速度Vn1の2つの情報を演算(積分)により求める。そして、CPU501は、これら加速度An1、速度Vn1、位置Pn1を閾値判定することにより、ロボット200の振動が収束しているか否かを判断する(S14〜S16:判断工程)。
【0041】
CPU501は、ステップS14〜S16の判断の結果、ロボット200の振動が収束していると判断した場合(S14〜S16:全て「OK」)、カメラ300により撮像を開始してから所定時間経過したか否かを判断する(S17)。つまり、CPU501は、タイマ506の計時時間が所定時間に達したか否かを判断する。所定時間は、シャッタースピード(撮像時間)であり、予め設定された時間(例えば、1/10秒)である。
【0042】
CPU501は、撮像を開始してから所定時間が経過するまでの間は、ステップS13〜S16を繰り返し実行する。
【0043】
CPU501は、ロボット200の振動が収束していると判断している条件の下、撮像開始から所定時間が経過したと判断した場合(S17:Yes)、カメラ300による撮像を完了させる(S18)。つまり、CPU501は、カメラ300のシャッターを閉じるトリガ信号を出力し、トリガ信号を受けたカメラ300は、シャッターを閉じる。CPU501は、カメラ300による撮像完了後、画像処理装置400に画像処理を行わせる(S19:画像処理工程)。
【0044】
つまり、ステップS19では、CPU501は、画像処理装置400にカメラ300から得た画像に対してパターンマッチング処理を行わせ、画像処理装置400から、ワークWの位置及び姿勢の情報を取得する。そして、CPU501は、ワークWの位置及び姿勢に基づき、ロボット200の動作を制御する。
【0045】
CPU501は、ステップS14〜S16の判断の結果、ロボット200の振動が収束していないと判断した場合(S14〜S16のうち少なくとも1つが「NG」)、カメラ300による撮像を強制的に終了(つまり中止)させる(S20)。この場合、撮像途中の画像は、破棄される。
【0046】
このステップS20の処理は、時間短縮の観点から、撮像を開始してから所定時間が経過するのを待たずに行うのが好ましいが、所定時間経過してから撮像を終了してもよい。
【0047】
そして、CPU501は、再度、ステップS12の処理に戻って撮像を開始させる撮像開始工程を実行する。CPU501は、ステップS12の処理に戻ることで、ステップS14〜S16が「OK」の間は、ステップS13〜S17を繰り返し実行することとなる。なお、CPU501は、ステップS20で撮像を終了したら、直ちにステップS12にて撮像を開始してもよいが、ステップS20で撮像を終了してから所定の待機時間経過後、ステップS12にて撮像を開始してもよい。CPU501は、この所定の待機時間の計時もタイマ506に行わせる。
【0048】
ここで、ステップS14〜S16の処理について具体的に説明する。検出部は、ロボット200の振動に関する情報として、ロボット200の位置、速度及び加速度のうち少なくとも1つの情報を検出すればよく、第1実施形態では、ロボット200の加速度を検出する加速度センサ260である。
【0049】
そして、判断工程では、ロボット200の位置、速度及び加速度のうち、少なくとも1つを閾値判定すればよいが、特に、ロボット200の加速度を閾値判定するのが好ましい。第1実施形態では、ロボット200の位置、速度及び加速度のうち全てを閾値判定する。したがって、第1実施形態では、CPU501は、ロボット200の加速度の情報に基づいて、残り2つの情報、即ちロボット200の速度及び位置を算出している。
【0050】
まず、CPU501は、加速度の情報に基づいて算出した実位置Pn1(位置の情報)について閾値判定する(S14)。即ち、CPU501は、算出した実位置Pn1が、予め設定した上限位置閾値+Δp11と下限位置閾値−Δp12との間の所定位置範囲内(位置閾値許容範囲内)であるか否かを判断する。
【0051】
ロボット200には動作停止に伴う振動が残留しているため、ロボット200に取り付けられたカメラ300の位置は絶えず変化している。この残留振動によるロボット200の位置(実位置)Pn1は、時間が経過するにつれて、徐々に減衰していく。カメラ300でワークWを撮像するには、ロボット200が動作を停止した時点から振動が収束するまで待つ必要がある。したがって、第1実施形態では、ステップS14でロボット200の実位置Pn1の閾値判定を行う。
【0052】
また、CPU501は、加速度の情報に基づいて算出した実速度Vn1(速度の情報)について閾値判定する(S15)。即ち、CPU501は、算出した実速度Vn1が、予め設定した上限速度閾値+Δv11と下限速度閾値−Δv12との間の所定速度範囲内(速度閾値許容範囲内)であるか否かを判断する。
【0053】
即ち、ステップS14で実位置Pn1が位置閾値の条件を満たしたとしても、ロボット200に移動速度が残留している場合がある。このとき、カメラ300で撮像を行ってもワークWがブレた画像となる可能性が極めて高くなるため、ステップS15でロボット200の実速度Vn1の閾値判定を行う。
【0054】
更にまた、CPU501は、検出した実加速度An1(加速度の情報)について閾値判定する(S16)。即ち、CPU501は、検出した実加速度An1が、予め設定した上限加速度閾値+Δa11と下限加速度閾値−Δa12との間の所定加速度範囲内(加速度閾値許容範囲内)であるか否かを判断する。
【0055】
ステップS14の位置閾値及びステップS15の速度閾値を満足した場合であっても、一時的に実加速度An1が上昇することがある。これは、ロボット200に想定外の振動が発生している場合等である。このとき、カメラでワークを撮像したとしても、ワークの認識結果を劣化させる可能性があるため、ステップS16でロボット200の実加速度An1の閾値判定を行う。
【0056】
第1実施形態では、CPU501は、ロボット200の振動が収束しているか否かの判断として、ロボット200の位置、速度、加速度が、それぞれ所定位置範囲内、所定速度範囲内、所定加速度範囲内であるか否かを判断する。
【0057】
そして、CPU501は、ロボット200の位置が所定位置範囲内であり、速度が所定速度範囲内であり、加速度が所定加速度範囲内である場合、即ちステップS14〜S16のいずれも「OK」の場合には、ロボット200の振動が収束していると判断する。CPU501は、ロボット200の位置、速度、加速度のうち少なくとも1つでも所定位置範囲内、所定速度範囲内、所定加速度範囲内ではない場合、即ちステップS14〜S16の少なくとも1つでも「NG」の場合には、振動が収束していないと判断する。
【0058】
なお、これらステップS14〜S16の判定の順番は、これに限らず、どのステップから行ってもよく、同時にできる場合は、同時に行ってもよい。但し、実加速度An1、実速度Vn1、実位置Pn1の順に閾値判定を行うと、閾値判定に要する時間を短縮することができるため、好ましい。
【0059】
上限位置閾値+Δp11、下限位置閾値−Δp12は、カメラ300で撮像した画像内にワークWが収まる時の許容値から決定される。なお、上限位置閾値+Δp11、下限位置閾値−Δp12は、画像処理への要求精度により決定されるものである。上限速度閾値+Δv11、下限速度閾値−Δv12は、カメラ300のシャッタースピードと画像処理への要求精度により決定される。上限加速度閾値+Δa11、下限加速度閾値−Δa12は、カメラ300の許容振動振幅を目安に決定される。
【0060】
以下、図4を例にステップS14〜S16の動作について説明する。なお、図4の時刻t1の時点でカメラ300の撮像を開始するものとする。
【0061】
時刻t1の時点で、実位置Pn1が位置閾値許容範囲−Δp12≦Pn1≦+Δp11の条件、実加速度An1が加速度閾値許容範囲−Δa12≦An1≦+Δa11の条件を満たしている。しかし、実速度Vn1が速度閾値許容範囲−Δv12≦Vn1≦+Δv11の条件を満たしていない。
【0062】
また、時刻t2においても、実位置Pn1が位置閾値許容範囲−Δp12≦Pn1≦+Δp11の条件、実速度Vn1が速度閾値許容範囲−Δv12≦Vn1≦+Δv11の条件を満たしている。しかし、時刻t2では、振動が時刻t1の時点よりは減衰しているものの、実加速度An1が加速度閾値許容範囲−Δa12≦An1≦+Δa11の条件を満たしていない。これは、ロボット200に想定外の振動が発生しているためと考えられる。このとき、カメラ300でワークWを撮像したとしても、ワークWの認識結果を劣化させる可能性がある。そのため、検出した実加速度An1をフィードバックして撮像完了のタイミングを決定する。一般に、振動振幅は、「系を押す力」と「系の弾性係数」から予測できるものであるが、ロボットアーム201の弾性係数は姿勢や減速機の構造など非線形な部分が有るため、測定結果に誤差を生じる原因となる。
【0063】
以上、時刻t1から時刻t3に至る前までは、CPU501は、振動が収束していないと判断し続け、カメラ300による撮像を開始しても、撮像を中止させて、撮像画像は廃棄し続ける。
【0064】
次に、CPU501は、時刻t3でステップS14〜S16の3つの条件を満たす。しかし、カメラ300による撮像を開始した時刻t3から撮像時間Tsが経過するまでに、時刻t4において、外乱等の振動により、実位置Pn1及び実加速度An1が閾値判定において条件を満たさなくなり、ステップS14(S16)で「NG」と判定される。したがって、時刻t3から時刻t4にかけて取り込んだ撮像画像はステップS20にて廃棄される。時刻t5においては、実速度Vn1も閾値判定において条件を満たさなくなる。時刻t6においては、実位置Pn1,実速度Vn1が条件を満たしているが、実加速度An1が依然として条件を満たしていない。
【0065】
そして、CPU501は、時刻t7において、実位置Pn1、実速度Vn1、実加速度An1の3つが条件を満たしていると判断し、時刻t7から所定時間(撮像時間)Ts経過した時点で撮像を完了する(S18)。
【0066】
以上、第1実施形態によれば、CPU501が、カメラ300による撮像中にロボット200の振動が収束していることを確認して撮像を完了させるので、ワークWを撮像した撮像画像にブレが生じるのをより効果的に低減することができる。これにより、撮像画像からワークWの位置及び姿勢を精度よく認識することができ、ロボット200による作業精度が向上する。
【0067】
また、第1実施形態によれば、CPU501が、ロボット200の振動が収束していないと判断した場合、カメラ300による撮像を終了させて、再度、カメラ300による撮像を開始している。つまり、ロボット200の振動が収束するまで、ワークWを撮り直すこととなり、撮像画像にブレが生じるのをより効果的に低減することができる。これにより、撮像画像からワークWの位置及び姿勢を精度よく認識することができ、ロボット200による作業精度が向上する。
【0068】
また、第1実施形態によれば、CPU501が、カメラ300による撮像中、ステップS13〜S16を繰り返し実行するので、より効果的に撮像画像にブレが生じるのを低減することができる。
【0069】
また、第1実施形態によれば、ロボット200の振動に関する情報として、ロボット200の加速度を検出しているので、正確にロボット200の振動を把握することができる。また、第1実施形態によれば、ロボット200の位置及び速度も演算により求めているので、より正確にロボット200の振動を把握することができる。
【0070】
そして、第1実施形態によれば、カメラ300の撮像中において、ロボット200が位置閾値以内であり、速度閾値以内であり、加速度閾値以内であるときのみ、所定時間経過したら撮像完了とし、撮像画像が画像処理装置400にて取得される。これにより、カメラ300の撮像完了タイミングを早めつつ、カメラ300の撮像中に入力する外乱による振動により画像に生じるブレを低減することができる。また、画像処理装置400でワークWの認識異常の発生を防止できるため、画像処理装置400での異常による装置停止の頻度を低減する効果が期待できる。
【0071】
また、画像処理装置400においては、エラー画像(ブレが生じた撮像画像)の画像補正処理を行う必要がないので、ワークWの位置及び姿勢を求める画像処理に要する時間を短縮することができる。
【0072】
[第2実施形態]
次に、本発明の第2実施形態に係るロボット装置におけるロボット制御方法について説明する。図5は、本発明の第2実施形態に係るロボット装置の概略構成を示す斜視図である。なお、第2実施形態のロボット装置100Aにおいて、上記第1実施形態のロボット装置100の構成と同様の構成については、同一符号を付して説明を省略する。
【0073】
ロボット装置100Aは、2つのロボット200,200を備えた、いわゆる双腕ロボット装置である。ロボット装置100Aは、上記第1実施形態と同様のカメラ300及び画像処理装置(画像処理部)400と、ロボット200,200を制御するロボット制御装置500Aと、を備えている。第2実施形態では、画像処理装置400とロボット制御装置500Aにより、制御システム(制御部)600Aが構成されている。
【0074】
ロボット200は、上記第1実施形態のロボットアーム201と同様の構成のロボットアーム201と、上記第1実施形態のロボットハンド202と同様の構成のロボットハンド202とを有している。ロボット200は、上記第1実施形態のロボットアーム201と同様の構成のロボットアーム201と、ロボットアーム201の先端に取り付けられたロボットハンド(エンドエフェクタ)202とを有している。ロボットハンド202は、ワークWを把持可能に構成されている。
【0075】
カメラ300は、複数のロボット200,200のうちいずれか1つ、第2実施形態ではロボット200の先端に取り付けられている。したがって、ロボット200のロボットハンド202で把持したワークWをロボット200に取り付けられたカメラ300で撮像することが可能である。
【0076】
ロボットハンド202とロボットアーム201との間には、上記第1実施形態の力覚センサ250と同様の構成の力覚センサ250が設けられている。
【0077】
カメラ300には、加速度センサ(検出部)260が設けられている。また、ロボットハンド202とロボットアーム201との間には、上記第1実施形態の力覚センサ250と同様の構成の力覚センサ(検出部)250が設けられている。つまり、第2実施形態では、ロボットが複数存在し、検出部が各ロボットに対応して設けられている。
【0078】
図6は、本発明の第2実施形態に係るロボット装置100Aを示すブロック図である。ロボット制御装置500Aは、演算部としてCPU501、記憶部として、ROM502、RAM503、HDD504を備えている。また、ロボット制御装置500は、記録ディスクドライブ505、タイマ506及び各種のインタフェース511〜517を備えている。なお、タイマ506は、CPU501が備えていてもよい。
【0079】
CPU501には、ROM502、ROM503、HDD504、記録ディスクドライブ505及び各種のインタフェース511〜517が、バス520を介して接続されている。
【0080】
HDD504には、CPU501に、後述する各種演算処理を実行させるためのプログラム530Aが記録(格納)されている。CPU501は、HDD504に記録(格納)されたプログラム530Aに基づいてロボット制御方法の各工程を実行する。
【0081】
上記第1実施形態と同様、インタフェース511には、画像処理装置400が接続されている。
【0082】
インタフェース512には力覚センサ250が、インタフェース513にはロボットアーム201が、インタフェース514にはロボットハンド202がそれぞれ接続されている。また、インタフェース515には力覚センサ250が、インタフェース516にはロボットアーム201が、インタフェース517にはロボットハンド202がそれぞれ接続されている。
【0083】
CPU501は、プログラム530Aを読み出して実行することで、ロボット200,200の動作を、画像処理装置400から取得したワークWの位置及び姿勢のデータに基づいて制御する。
【0084】
第2実施形態では、CPU501は、加速度センサ260から取得した検出結果(加速度の情報)から、ロボット200の位置、及びロボット200の速度の2つの情報を、演算(演算)により求める。
【0085】
また、CPU501は、力覚センサ250から取得した力の情報をロボット200の加速度の情報に変換して、当該加速度の情報を力覚センサ250から検出結果とする。そして、CPU501は、ロボット200の位置、及びロボット200の速度の2つの情報を、加速度の情報から演算(積分)により求める。
【0086】
ここで、ロボット200,200の位置とは、ロボット200,200の手先(即ちロボットハンド202,202)の位置である。また、ロボット200,200の速度とは、ロボット200,200の手先の速度であり、ロボット200,200の加速度とは、ロボット200,200の手先の加速度である。
【0087】
図7は、本発明の第2実施形態に係るロボット制御方法の各工程を示すフローチャートである。図8は、ロボット200の動作停止(時刻t0)後に発生するロボット200の残留振動による位置P、速度V及び加速度Aの時間変化を示したグラフである。図8には、X軸に時間、Y軸に位置P、速度V、加速度Aの振動波形を示している。
【0088】
図7のフローチャートでは、ロボット200のロボットハンド202に把持されたワークWを、ロボット200に取り付けられたカメラ300で撮像を行う場合について説明する。なお、ロボット200及びロボット200の関係は逆でもよい。
【0089】
CPU501は、ワークWの撮像を行う所定の位置及び姿勢にロボット200,200の動作を制御し、次いで、ロボット200,200に動作停止信号を送り、ロボット200,200の動作を停止させる(S21)。つまり、CPU501は、カメラ300によりワークWを撮像する位置及び姿勢にロボット200,200を動作させてその位置及び姿勢でロボット200,200を停止させる。
【0090】
次に、CPU501は、カメラ300にワークWの撮像を開始させる(S22:撮像開始工程)。即ち、CPU501は、画像処理装置400を介してカメラ300にシャッターを開くトリガ信号を出力する。このトリガ信号を入力したカメラ300は、シャッターを開く。これと同時にCPU501は、タイマ506に計時を開始させる。
【0091】
カメラ300の撮像開始のタイミングは、ステップS11のJOB動作開始後であり、ロボットハンド202でワークWを把持する前までに撮像を完了するものである。
【0092】
ロボット200及びロボット200は動作停止による振動が残留している。これにより、カメラ300に対するロボットハンド202で把持しているワークWの相対位置関係が常に変化するため、この状態で撮像した画像のブレは大きくなる。
【0093】
CPU501は、カメラ300による撮像中に、加速度センサ260及び力覚センサ250から検出結果である、ロボット200,200の加速度An1,An2の情報を取得する(S23:検出工程)。
【0094】
CPU501は、取得した加速度An1,An2の情報から、ロボット200,200の位置Pn1,Pn2及び速度Vn1,Vn2の情報を演算(積分)により求める。そして、CPU501は、これら加速度An1,An2、速度Vn1,Vn2、位置Pn1,Pn2を閾値判定することにより、ロボット200,200の振動が全て収束しているか否かを判断する(S24〜S32:判断工程)。
【0095】
CPU501は、ステップS24〜S32の判断の結果、ロボット200,200の振動が全て収束していると判断した場合(S24〜S32:全て「OK」)、カメラ300により撮像を開始してから所定時間経過したか否かを判断する(S33)。つまり、CPU501は、タイマ506の計時時間が所定時間に達したか否かを判断する。所定時間は、シャッタースピード(撮像時間)であり、予め設定された時間(例えば、1/10秒)である。
【0096】
CPU501は、撮像を開始してから所定時間が経過するまでの間は、ステップS23〜S32を繰り返し実行する。
【0097】
CPU501は、ロボット200の振動が収束していると判断している条件の下、撮像開始から所定時間が経過したと判断した場合(S33:Yes)、カメラ300による撮像を完了させる(S34)。つまり、CPU501は、カメラ300のシャッターを閉じるトリガ信号を出力し、トリガ信号を受けたカメラ300は、シャッターを閉じる。CPU501は、カメラ300による撮像完了後、画像処理装置400に画像処理を行わせる(S35:画像処理工程)。
【0098】
つまり、ステップS35では、CPU501は、画像処理装置400にカメラ300から得た画像に対してパターンマッチング処理を行わせ、画像処理装置400から、ワークWの位置及び姿勢の情報を取得する。そして、CPU501は、ワークWの位置及び姿勢に基づき、ロボット200,200の動作を制御する。
【0099】
CPU501は、ステップS24〜S32の判断の結果、ロボット200,200のうち少なくとも1つのロボットにおいて振動が収束していないと判断した場合、カメラ300による撮像を強制的に終了(つまり中止)させる(S36)。つまり、CPU501は、ステップS24〜S32のうち少なくとも1つが「NG」)の場合、カメラ300による撮像を強制的に終了(つまり中止)させる。この場合、撮像途中の画像は、破棄される。
【0100】
このステップS36の処理は、時間短縮の観点から、撮像を開始してから所定時間が経過するのを待たずに行うのが好ましいが、所定時間経過してから撮像を終了してもよい。
【0101】
そして、CPU501は、再度、ステップS22の処理に戻って撮像を開始させる撮像開始工程を実行する。CPU501は、ステップS22の処理に戻ることで、ステップS24〜S32が「OK」の間は、ステップS23〜S33を繰り返し実行することとなる。なお、CPU501は、ステップS36で撮像を終了したら、直ちにステップS22にて撮像を開始してもよいが、ステップS36で撮像を終了してから所定の待機時間経過後、ステップS22にて撮像を開始してもよい。CPU501は、この所定の待機時間の計時もタイマ506に行わせる。
【0102】
ここで、ステップS24〜S32の処理について具体的に説明する。ロボット200用の検出部は、ロボット200の振動に関する情報として、ロボット200の位置、速度及び加速度のうち少なくとも1つの情報を検出すればよい。第2実施形態では、ロボット200の加速度を検出する加速度センサ260である。
【0103】
そして、判断工程では、ロボット200の位置、速度及び加速度のうち、少なくとも1つを閾値判定すればよいが、特に、ロボット200の加速度を閾値判定するのが好ましい。第2実施形態では、ロボット200の位置、速度及び加速度のうち全てを閾値判定する。したがって、第2実施形態では、CPU501は、ロボット200の加速度の情報に基づいて、残り2つの情報、即ちロボット200の速度及び位置を算出している。
【0104】
また、ロボット200用の検出部は、ロボット200の振動に関する情報として、ロボット200の位置、速度及び加速度のうち少なくとも1つの情報を検出すればよい。第2実施形態では、実質的にロボット200の加速度を検出する力覚センサ250である。
【0105】
そして、判断工程では、ロボット200の位置、速度及び加速度のうち、少なくとも1つを閾値判定すればよいが、特に、ロボット200の加速度を閾値判定するのが好ましい。第2実施形態では、ロボット200の位置、速度及び加速度のうち全てを閾値判定する。したがって、第2実施形態では、CPU501は、ロボット200の加速度の情報に基づいて、残り2つの情報、即ちロボット200の速度及び位置を算出している。
【0106】
まず、CPU501は、加速度センサ260から得られた加速度の情報に基づいて算出したロボット200の実位置Pn1(第1位置の情報)について閾値判定する(S24)。このステップS24は、上記第1実施形態のステップS14と同様の処理を行う。
【0107】
また、CPU501は、加速度センサ260から得られた加速度の情報に基づいて算出したロボット200の実速度Vn1(第1速度の情報)について閾値判定する(S25)。このステップS25は、上記第1実施形態のステップS15と同様の処理を行う。
【0108】
更にまた、CPU501は、加速度センサ260から得られたロボット200の実加速度An1(第1加速度の情報)について閾値判定する(S26)。このステップS26は、上記第1実施形態のステップS16と同様の処理を行う。
【0109】
次に、CPU501は、力覚センサ250から得られた加速度の情報に基づいて算出したロボット200の実位置Pn2(第2位置の情報)について閾値判定する(S27)。即ち、CPU501は、算出した実位置Pn2が、予め設定した上限位置閾値+Δp21と下限位置閾値−Δp22との間の所定位置範囲内(位置閾値許容範囲内)であるか否かを判断する。
【0110】
また、CPU501は、力覚センサ250から得られた加速度の情報に基づいて算出したロボット200の実速度Vn2(第2速度の情報)について閾値判定する(S28)。即ち、CPU501は、算出した実速度Vn2が、予め設定した上限速度閾値+Δv21と下限速度閾値−Δv22との間の所定速度範囲内(速度閾値許容範囲内)であるか否かを判断する。
【0111】
更にまた、CPU501は、力覚センサ250から得られたロボット200の実加速度An2(第2加速度の情報)について閾値判定する(S29)。即ち、CPU501は、検出した実加速度An2が、予め設定した上限加速度閾値+Δa21と下限加速度閾値−Δa22との間の所定加速度範囲内(加速度閾値許容範囲内)であるか否かを判断する。
【0112】
また、CPU501は、実位置Pn1と実位置Pn2との合計が所定位置範囲内(位置閾値許容範囲内)であるか否かを判断する(S30)。また、CPU501は、実速度Vn1と実速度Vn2との合計が所定速度範囲内(速度閾値許容範囲内)であるか否かを判断する(S31)。また、CPU501は、実加速度An1と実加速度An2との合計が所定加速度範囲内(加速度閾値許容範囲内)であるか否かを判断する(S32)。
【0113】
つまり、第2実施形態では、CPU501は、ロボット200の振動が収束しているか否かの判断として、ロボット200の位置、速度、加速度が、それぞれ所定位置範囲内、所定速度範囲内、所定加速度範囲内であるか否かを判断する。そしてCPU501は、ロボット200の位置が所定位置範囲内であり、速度が所定速度範囲内であり、加速度が所定加速度範囲内である場合、即ちステップS24〜S26のいずれも「OK」の場合には、ロボット200の振動が収束していると判断する。CPU501は、ロボット200の位置、速度、加速度のうち少なくとも1つでも所定位置範囲内、所定速度範囲内、所定加速度範囲内ではない場合、即ちステップS24〜S26の少なくとも1つでも「NG」の場合には、振動が収束していないと判断する。
【0114】
また、CPU501は、ステップS27〜S29において、ロボット200についてもステップS24〜S26と同様に閾値判定する。
【0115】
ここで、カメラ300は、ロボット200に取り付けられているため、ロボット200のロボットハンド202に把持されているワークWを撮像した撮像画像には、両方のロボット2001,2002の振動によるブレが発生する。
【0116】
そこで、第2実施形態では、位置Pn1と位置Pn2との位置合計、速度Vn1と速度Vn2との速度合計、加速度An1と加速度An2との加速度合計についても、ステップS30〜S32において、ステップS24〜S26と同様に、閾値判定する。
【0117】
具体的には、位置合計は、位置Pn1の絶対値と位置Pn2の絶対値との合計値、速度合計は、速度Vn1の絶対値と速度Vn2の絶対値との合計値、加速度合計は、加速度An1の絶対値と加速度An2の絶対値との合計値である。そして、これら合計値の少なくとも1つが、閾値を上回る場合、振動が収束していないと判断し、全ての合計値が閾値を下回る場合、振動が収束していると判断する。
【0118】
第2実施形態ではワークWを把持するロボット200とワークWを撮像するカメラ300を取付けたロボット200を用いて組立動作を行う。これにより、ロボット200とロボット200でそれぞれ異なる組立動作を行うことにより、その動作に応じた振動変位がロボット200とロボット200に生じる。
【0119】
そのため、ロボット200に予め設定する位置閾値の上限+Δp11及び下限−Δp12と、ロボット200に予め設定する位置閾値の上限+Δp21及び下限−Δp22は、第1実施形態の位置閾値より小さくする必要がある。つまり、ロボット200の実位置Pn1と、ロボット200の実位置Pn2の合計が、画像処理への要求精度の許容値を超えないようにする必要があり、ステップS30では、位置合計の閾値判定を行う。
【0120】
また、第2実施形態ではワークWを把持するロボット200とワークWを撮像するカメラ300を取付けたロボット200を用いて組立動作を行う。そのため、位置閾値のときと同様にロボット200に予め設定する速度閾値の上限+Δv11及び下限−Δv12と、ロボット200に予め設定する速度閾値の上限+Δv21及び下限−Δv22は、第1実施形態の速度閾値より小さくする必要がある。つまり、ロボット200の実速度Vn1と、ロボット200の実速度Vn2の合計が、画像処理への要求精度の許容値を超えないようにする必要があり、ステップS31では、速度合計の閾値判定を行う。
【0121】
更にまた、第2実施形態ではワークWを把持するロボット200とワークWを撮像するカメラ300を取付けたロボット200を用いて組立動作を行う。位置閾値及び速度閾値のときと同様、ロボット200に設定する加速度閾値の上限+Δa11及び下限−Δa12と、ロボット200に設定する加速度閾値の上限+Δa21及び下限−Δa22は、第1実施形態の加速度閾値より小さくする必要がある。つまり、ロボット200の実加速度An1と、ロボット200の実加速度An2の合計が、画像処理への要求精度の許容値を超えないようにする必要があり、ステップS32では、加速度合計の閾値判定を行う。
【0122】
なお、これらステップS24〜S32の判定の順番は、これに限らず、どのステップから行ってもよく、同時にできる場合は、同時に行ってもよい。但し、実加速度An1、実速度Vn1、実位置Pn1の順に閾値判定を行うと、閾値判定に要する時間を短縮することができるため、好ましい。また、実加速度An2、実速度Vn2、実位置Pn2の順に閾値判定を行うと、閾値判定に要する時間を短縮することができるため、好ましい。
【0123】
以下、図8を例にステップS27〜S29の動作について説明する。図8の時刻t11の時点でカメラ300の撮像を開始するものとする。
【0124】
実位置Pn2,実速度Vn2,実加速度An2は、図8に示すように、時刻t0では大きな振幅であるが、時刻t11から時刻t15と時間が経過するにつれて、徐々に減衰していく。実位置Pn2及び実速度PVn2は、ロボットハンド202の基端とロボットアーム201の先端との間に設けられた力覚センサ250から検出された加速度の情報に基づいて得られる。
【0125】
カメラ300の撮像中に図8の時刻t11〜t14では、実位置Pn2,実速度Vn2,実加速度An2の少なくとも1つが閾値判定で「NG」であるため、画像を廃棄し、再度ステップS22の撮像開始からやり直すことになる。そして、時刻t15でロボット200の実位置Pn2,実速度Vn2,実加速度An2の全てが閾値以内となり、閾値判定で「OK」となるため、画像取得を許可する。しかし、所定時間(撮像時間)Tsが経過する前に、時刻t16で実位置Pn2,実加速度An2が「NG」となり、画像を廃棄し、再度ステップS22の撮像開始からやり直すことになる。
【0126】
更に、時刻t17でもロボット200の実位置Pn2,実速度Vn2,実加速度An2の全てが閾値以内となり、閾値判定で「OK」となるため、画像取得を許可するが、所定時間(撮像時間)Tsが経過する前に「NG」となり、再度撮像開始からやり直す。
【0127】
最後に、時刻t18でロボット200の実位置Pn2,実速度Vn2,実加速度An2の全てが閾値判定で「OK」となり、時刻t8から所定時間(撮像時間)Tsが経過した時点で撮像完了となり、撮像画像が取得される。
【0128】
ステップS24〜S32では、ロボット200の位置閾値、速度閾値及び加速度閾値の3つを判定し、ロボット200の位置閾値、速度閾値及び加速度閾値の3つを判定し、合計位置閾値、合計速度閾値及び合計加速度閾値の3つを判定する。つまり、全9つの閾値判定を行う。ロボット制御装置500AのCPU501は、9つの閾値判定の全てが「OK」であると判断した場合に、カメラ300の撮像完了を許可する。
【0129】
そして、ステップS34でカメラ300での撮像を完了して得られた画像が、画像処理装置400に送られ、パターンマッチング等の画像処理を行うステップS35を経て、ワークWの位置及び姿勢を認識する。また、ロボット制御装置500Aを介して、ロボット200へ動作完了信号を送り、ワークWが撮像可能状態であることの確認を完了する。画像処理装置400で認識したワークWの位置及び姿勢の情報はロボット制御装置500Aに送られ共有する。
【0130】
以上、第2実施形態の双腕ロボット装置100Aによれば、上記第1実施形態の単腕ロボット装置100と同様の作用効果を奏する。即ち、CPU501が、カメラ300による撮像中にロボット200,200の振動が収束していることを確認して撮像を完了させるので、ワークWを撮像した撮像画像にブレが生じるのをより効果的に低減することができる。これにより、撮像画像からワークWの位置及び姿勢を精度よく認識することができ、ロボット200,200による作業精度が向上する。
【0131】
また、第2実施形態の双腕ロボット装置100Aにおける組立動作では、ロボット200及びロボット200が位置閾値、速度閾値及び加速度閾値の条件を満たしていることを確認する。そのため、ロボット200にはカメラを搭載しなくても良くなり、ロボット200のハンド部分の重量を軽くすることができる。これにより、駆動モータの加速性に余裕ができ、ロボットアーム201の加速性が増すので、より安定な作業を実現することができる。
【0132】
[第3実施形態]
次に、本発明の第3実施形態に係るロボット装置について説明する。図9は、本発明の第3実施形態に係るロボット装置の概略構成を示す斜視図である。なお、第3実施形態のロボット装置100Bにおいて、上記第1,第2実施形態のロボット装置100,100Aの構成と同様の構成については、同一符号を付して説明を省略する。
【0133】
図9に示すロボット装置100Bは、カメラ300の代わりに、ワークトレイTrに置かれているワークWの位置や数量を監視しているワーク監視用のカメラ300Bを備えている。カメラ300Bは、ワークトレイTrを撮像できる位置に、床Fに配置された支持部材301によって支持(固定)されている。この場合、カメラ300Bとロボット200を用いて、図7の手順により組立動作を行う。
【0134】
ワーク監視用のカメラ300Bとロボット200における組立動作では、カメラ300B及びロボット200が位置閾値、速度閾値及び加速度閾値の条件を満たしていることをロボット制御装置500Aで確認する。そのため、ロボット200がワークトレイTrに置かれたワークWを精度よく把持することが可能となるので、より安定した作業を実現することができる。
【0135】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。
【0136】
上記実施形態では、ロボットアームが、垂直型のロボットアームの場合について説明したが、多軸の直交ロボットでもよい。
【0137】
また、上記実施形態では、エンドエフェクタがロボットハンドである場合について説明したが、ワークに作業を施すツールであってもよい。
【0138】
また、上記実施形態では、加速度センサにより加速度を検出したが、これに限定するものではなく、ロボットハンドに搭載(内蔵)した力覚センサを用いて、ロボットハンドに掛る外力による振動を検出してもよい。
【0139】
また、上記第2及び第3実施形態では、ロボットが2つの場合について説明したが、ロボットが3つ以上の場合についても本発明は適用可能である。
【0140】
また、上記実施形態では、制御部である制御システムが、ロボット制御装置と画像処理装置とに2つのコンピュータで構成されている場合について説明したが、これに限定するものではなく、1つのコンピュータで構成されていてもよい。
【0141】
また、上記実施形態の各処理動作は具体的にはCPU501により実行されるものである。従って上述した機能を実現するプログラムを記録した記録媒体をロボット制御装置に供給し、ロボット制御装置のコンピュータ(CPUやMPU)が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
【0142】
また、上記実施形態では、コンピュータ読み取り可能な記録媒体がHDD504であり、HDD504にプログラム530,530Aが格納される場合について説明したが、これに限定するものではない。プログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、図2及び図6に示すROM502、記録ディスク531、不図示の外部記憶装置等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、書き換え可能な不揮発性のメモリ(例えばUSBメモリ)、ROM等を用いることができる。
【0143】
また、上記実施形態におけるプログラムを、ネットワークを介してダウンロードしてコンピュータにより実行するようにしてもよい。
【0144】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施形態の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0145】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって上記実施形態の機能が実現される場合も含まれる。
【0146】
また、上記実施形態では、コンピュータがHDD等の記録媒体に記録されたプログラムを実行することにより、画像処理を行う場合について説明したが、これに限定するものではない。プログラムに基づいて動作する制御部の一部又は全部の機能をASICやFPGA等の専用LSIで構成してもよい。なお、ASICはApplication Specific Integrated Circuit、FPGAはField−Programmable Gate Arrayの頭字語である。
【符号の説明】
【0147】
100…ロボット装置、200…ロボット、201…ロボットアーム、202…エンドエフェクタ(ロボットハンド)、260…検出部(加速度センサ)、300…カメラ、400…画像処理装置、500…ロボット制御装置、530…プログラム、600…制御システム(制御部)
図1
図2
図3
図4
図5
図6
図7
図8
図9