(57)【要約】【課題】  多数のセンサを使用することなく、複数の可動部を制御可能な駆動制御装置、及び駆動制御方法を提供する。【解決手段】  複数の可動部を制御する駆動制御装置であって、複数の可動部を同時に撮影可能な撮像部３０と、撮像部で撮影した画像データに基づいて、複数の可動部のうち、少なくとも１つの可動部の位置情報を取得し、且つその位置情報が所定の条件を満たしているか否かを判定し、その条件を満たしていると判定した場合、複数の可動部のうち、少なくとも１つを起動させるための制御信号を出力する制御部４０と、を有するように構成した。【選択図】      図１
2006221238.tif 000002
【特許請求の範囲】
【請求項１】
複数の可動部を同時に撮影可能な撮像部と、
前記撮像部で撮影した画像データに基づいて、前記複数の可動部のうち、少なくとも１つの可動部の位置情報を取得し、且つ当該位置情報が所定の条件を満たしているか否かを判定し、当該条件を満たしていると判定した場合、前記複数の可動部のうち少なくとも１つを起動させるための制御信号を出力する制御部と、
を有することを特徴とする駆動制御装置。
【請求項２】
前記位置情報は、前記可動部の動作終了後の位置情報である請求項１に記載の駆動制御装置。
【請求項３】
前記制御は、シーケンス制御であって、前記制御信号は、制御同期信号である請求項１又は２に記載の駆動制御装置。
【請求項４】
前記制御部は、前記位置情報が前記所定の条件を満たさないと判断した場合、前記撮像部から別の画像データを取得し、当該別の画像データに基づいて前記位置情報を取得する、請求項１〜３の何れか一項に記載の駆動制御装置。
【請求項５】
前記可動部は、前記位置情報を特定するための少なくとも１つの検出マークを有する、請求項１〜４の何れか一項に記載の駆動制御装置。
【請求項６】
前記位置情報は、前記画像データにおける前記検出マークの重心であり、且つ前記所定の条件を満たしているか否かの判定は、前記重心と予め定められた基準位置との距離が予め定められた閾値以下の場合、条件を満たすと判定する、請求項５に記載の駆動制御装置。
【請求項７】
前記制御部は、前記画像データの一部に関心領域を設定し、当該関心領域に含まれる画像データのみに基づいて前記位置情報を取得する、請求項１〜６の何れか一項に記載の駆動制御装置。
【請求項８】
前記撮像部は、前記複数の可動部の動作平面の何れにも属さない面内に配置される、請求項１〜７の何れか一項に記載の駆動制御装置。
【請求項９】
複数の可動部を撮影して、画像データを取得するステップと、
前記画像データに基づいて、前記複数の可動部のうち、少なくとも１つの可動部の位置情報を取得するステップと、
前記位置情報が所定の条件を満たしているか否かを判定するステップと、
前記判定ステップにおいて、前記位置情報が前記の所定の条件を満たしていると判定された場合、前記複数の可動部のうち、少なくとも１つを起動させるための制御信号を出力するステップと、
を有することを特徴とする駆動制御方法。
【請求項１０】
前記位置情報は、前記可動部の動作終了後の位置情報である請求項９に記載の駆動制御方法。
【請求項１１】
前記可動部は、位置情報を特定するための少なくとも１つの検出マークを有し、
前記位置情報を取得するステップは、前記画像データにおける前記検出マークの重心を検出し、
前記の判定ステップは、前記重心と予め定められた基準位置との距離が予め定められた閾値以下の場合、条件を満たすと判定する請求項９又は１０に記載の駆動制御方法。
【請求項１２】
前記位置情報を取得するステップは、前記画像データの一部に関心領域を設定し、当該関心領域に含まれる画像データのみに基づいて前記位置情報を取得する請求項９〜１１の何れか一項に記載の駆動制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の可動部を制御する駆動制御装置及び駆動制御方法に関するものであり、より詳しくは、撮像部で取得した画像を用いて各可動部の位置情報を取得して、制御を行う駆動制御装置、及び駆動制御方法に関する。
【背景技術】
【０００２】
近年、様々な機械、装置の製造工程や検査工程において、自動化が益々進展し、様々な自動組み立て装置や自動検査装置が使用されるに至っている。例えば自動組み立て装置では、搬送されてくる部品を捕捉し、捕捉した部品を所定の組み立て位置へ搬送し、そして組み立て位置へ搬送された部品に、別の部品を組み込み、出来上がったものを排出するといった動作を行う。このようなそれぞれの動作を行うために、搬送ユニット、組み立てユニットといった複数の可動ユニットが存在し、それらが所定の位置へ向けて、所定のタイミングで正確に動作することが求められる。
【０００３】
従来、こうした装置では、可動ユニットの動作を制御するために、複数のセンサを用いて部品が供給されたか否か、部品が所定の搬送路に沿って正しく搬送されているか否かを調べ、或いは可動ユニットが所定の位置に配置されているか否かを調べることが行われてきた。またこれらセンサは、可動ユニットが所定の可動範囲を超えて動いた場合（オーバーラン）を検知して、その可動ユニットを停止させるといったことにも用いられてきた。例えば、近接スイッチが、部品が所定の搬入路を運ばれてきたか否かを検知するために使用される。また、部品や可動ユニットが、所定の位置に存在するか否かを調べるために、光電スイッチが用いられる。さらに、可動ユニットが所定の位置に存在するか否か、或いはオーバーラン防止のため、可動ユニットの動作端を検出するオートスイッチといったセンサがこうした用途に使用される。このように、動作制御を行うためには、各可動ユニット等について上記のようなセンサを１個以上用いる必要があり、装置全体の大型化、高コスト化の一因となっていた。また、それぞれのセンサについて、正確な位置決めを行う必要があり、装置が複雑化し、含まれる可動ユニットの数が増加するほどその調整に手間が掛かる要因となっていた。
【０００４】
一方、近年のビデオカメラや画像認識技術の発展に伴い、制御や監視の分野では、ビデオカメラを用いて動作対象物、移動目的地の画像を取り込み、その画像を解析して動作対象物の位置を特定し、目的地へ移動させるための制御を行う技術が開発されている（特許文献１〜３参照）。
【０００５】
しかしながら、自動組み立て装置や検査装置では、複数の可動ユニットを同時に動作させ、又は高速に移動させることが一般に行われているので、ビデオカメラから取得される動画像を認識して対象物を制御するには、処理が間に合わず、現実的でない。
【０００６】
【特許文献１】実開平５−４０９０８号報
【特許文献２】特開平９−７６１８５号報
【特許文献３】再表２００２−０２３２９７号報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記の問題点に鑑み、本発明は、複数の可動部を有する装置において、各種センサを省略して制御できる駆動制御装置又は駆動制御方法を提供することを目的とする。また、本発明の別の目的として、動作の信頼性を向上させた駆動制御装置又は駆動制御方法を提供することを目的とする。本発明のさらに別の目的として、省スペースで済む駆動制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために、本発明に係る駆動制御装置は、複数の可動部を同時に撮影可能な撮像部と、撮像部で撮影した画像データに基づいて、複数の可動部のうち、少なくとも１つの可動部の位置情報を取得し、且つその位置情報が所定の条件を満たしているか否かを判定し、条件を満たしていると判定した場合、前記複数の可動部のうち、少なくとも１つを起動するように制御信号を出力する制御部と、を有することを特徴とする。
【０００９】
ここで上記位置情報は、可動部の動作終了後の位置情報であることが好ましい。可動部の動作終了を確認可能であり、可動部の動作の信頼性向上に有効なためである。
【００１０】
また、上記の制御は、シーケンス制御であって、制御信号は、制御同期信号であることが好ましい。
【００１１】
さらに制御部は、位置情報が所定の条件を満たさないと判断した場合、前記撮像部から別の画像データを取得し、その別の画像データに基づいて位置情報を取得することが好ましい。可動部が動作終了後の位置といった所定の位置まで移動していることを確実に捉えられる可能性が高いためである。
【００１２】
さらに可動部は、位置情報を特定するための少なくとも１つの検出マークを有することが好ましい。制御部が、可動部の位置を正確に検出可能とするためである。
【００１３】
また位置情報は、画像データにおける検出マークの重心であり、且つ上記の所定の条件を満たしているか否かの判定は、重心と予め定められた基準位置との距離が予め定められた閾値以下の場合、条件を満たすと判定することが好ましい。制御部が、可動部の位置をより正確且つ簡便に検出可能とするためである。
【００１４】
さらに制御部は、画像データの一部に関心領域を設定し、当該関心領域に含まれる画像データのみに基づいて位置情報を取得することが、位置情報取得の際のデータ処理量を減らせるため、好ましい。
【００１５】
また撮像部は、複数の可動部の動作平面の何れにも属さない面内に配置されることが好ましい。単一又は少ない撮像部のみで、全ての可動部の動作を画像データに含められるためである。
【００１６】
また本発明に係る、駆動制御方法は、複数の可動部を撮影して、画像データを取得するステップと、画像データに基づいて、複数の可動部のうち、少なくとも１つの可動部の位置情報を取得するステップと、位置情報が所定の条件を満たしているか否かを判定するステップと、判定ステップにおいて、位置情報が上記の所定の条件を満たしていると判定された場合、複数の可動部のうち、少なくとも１つを起動するように制御信号を出力するステップと、を有することを特徴とする。
【００１７】
なお、位置情報は、可動部の動作終了後の位置情報であることが好ましい。
【００１８】
さらに、可動部は、位置情報を特定するための少なくとも１つの検出マークを有し、位置情報を取得するステップは、画像データにおける検出マークの重心を検出し、且つ上記の判定ステップは、重心と予め定められた基準位置との距離が予め定められた閾値以下の場合、条件を満たすと判定することが好ましい。
【００１９】
なお位置情報を取得するステップは、画像データの一部に関心領域を設定し、関心領域に含まれる画像データのみに基づいて位置情報を取得することが好ましい。
【発明の効果】
【００２０】
本発明によれば、複数の可動部を有していても、可動部全体を撮影する撮像部を備えるのみで、撮像部以外の各種センサを省略することができる。
【００２１】
また、複数の可動部を同時に監視しながら制御できるため、動作の信頼性が高い装置、又は制御方法を得ることができる。
【００２２】
さらに、各種のセンサを省略できるため、省スペースで済む。
【発明を実施するための最良の形態】
【００２３】
以下、図面を参照しつつ本発明に係る駆動制御装置について詳細に説明する。なお、以下に述べる実施形態では、本発明に係る駆動制御装置を組み立て装置として実装した場合について説明する。
【００２４】
図１に、本発明の第１の実施形態に係る駆動制御装置を実装した組み立て装置１００の構成ブロック図を示す。また図２に、組み立て装置１００の概略上面図を示す。さらに図３に、図２のＣＣＤカメラ３０から見た組み立て装置１００の概略斜視図を示す。
【００２５】
本実施形態に係る駆動制御装置である組み立て装置１００は、一例として、直径５０ｍｍ、高さ５０ｍｍの円筒形をした基幹部品（ワーク）２の中心に、直径２０ｍｍ、高さ１０ｍｍの円筒形の部品３を上方から嵌め込んで完成品４を製造するものである。
【００２６】
本実施形態に係る組み立て装置１００は、搬送ユニット１０、上下ユニット２０、ＣＣＤカメラ３０、プロセッサ４０、ワーク搬入部５０、部品投入部６０、ワーク排出部７０を備え、ＣＣＤカメラ３０とプロセッサ４０とで駆動制御装置を構成する。
【００２７】
本実施形態に係る組み立て装置１００では、図２及び図３に示すように、ワーク２は、ワーク搬送路１に沿ってワーク搬入部５０から搬入され、ワーク排出部７０により排出される。一方、部品３は、部品投入部６０により、ワーク搬入部５０と略直交する方向から投入され、ワーク搬入部５０とワーク排出部７０の中間にある組み立て部８０で、ワーク２に組み付けられる。
【００２８】
ワーク搬入部５０は、前工程から送られてきたワークを連続的に組み立て装置１００に搬入可能なように、ワークを載せて運ぶベルトコンベアで構成する。部品投入部６０は、部品投入側から組み立て部８０側へ緩やかな下降傾斜路であって、振動により、投入された部品３が徐々に組み立て部８０側へ搬送される。ワーク排出部７０は、ワーク搬入部５０同様、ベルトコンベアで構成する。そして、搬送ユニット１０が部品組み付け済みのワーク（完成品）を組み立て部８０側に最も近いワーク排出部７０の出口７１に排出すると、その完成品を載せて次工程へ搬送する。
【００２９】
搬送ユニット１０は、ワーク搬送路１と略平行に取り付けられ、ワーク搬入部５０の終端付近の入り口５１にあるワーク２を捕捉し、ワーク排出部７０の方へ平行移動して組み立て部８０へ搬送する。さらに部品組み付け済みのワーク（完成品）４をワーク排出部７０に存在する出口７１へと搬送する。組み立て部８０に配置した上下ユニット２０は、上部ユニット２１が部品３を捕捉して上下運動し、下部ユニット２２がワーク２を固定することにより、ワーク２に部品３を組み付けて完成品４を製造する。
【００３０】
搬送ユニット１０は、ワーク搬送方向と略並行方法の長さ１５０ｍｍ、略垂直方向の幅５０ｍｍからなる部材１１と、部材１１の下部に取り付けられたグリッパ１２及び駆動用のサーボモータを備える。グリッパ１２は、ワーク搬送方向にワークの幅とほぼ等しい間隔で配置した２本の爪で構成し、同時に２つのワークを保持可能なように、ワーク搬送路１に沿って２セット配置する。
【００３１】
また搬送ユニット１０は、ワーク搬送路１の存在する平面内で、ワーク搬送路１と直交する方向、及びワーク搬送路１と平行方向に移動可能である。また搬送ユニット１０の原点位置を、搬送ユニット１０がワーク搬送路１上にあるワーク２と接触しないよう、ワーク搬送路１から約３０ｍｍ後方に離れた位置に設定する。そして、原点位置にある搬送ユニット１０に送り動作を指示すると、ワーク搬送路１に沿って、ワーク排出方向へ向けて約７０ｍｍ移動する（この移動先を便宜上送り位置と呼ぶ）。さらに、送り位置にある搬送ユニット１０に、戻り動作が指示されると、原点位置へ戻るように、ワーク搬送路１に沿って、ワーク搬入方向に約７０ｍｍ移動する。一方、原点位置若しくは送り位置にある搬送ユニット１０に前進動作が指示されると、搬送ユニット１０は、ワーク搬送路１上にあるワーク２又は完成品４を捕捉するため、若しくは保持しているワーク２又は完成品４をワーク搬送路１上にリリースするため、ワーク搬送路１に近づく方向に約３０ｍｍ移動する。逆に、ワーク搬送路１に近接した位置にある搬送ユニット１０に対し、後退動作が指示されると、搬送ユニット１０はワーク搬送路１から離れる方向に約３０ｍｍ移動する。
【００３２】
上下ユニット２０は、上部ユニット２１、及び下部ユニット２２で構成される。下部ユニット２２は組み立て部８０へ搬送されてきたワーク２を固定する。一方、上部ユニット２１は、開閉可能な爪からなるワークチャック２３、及びワークチャック２３が取り付けられるチャックシリンダ２４、及びこれらを駆動するサーボモータを備えている。
【００３３】
上部ユニット２１は、初期状態では、組み立て部８０に搬送されてくるワーク２、部品３と衝突しないように、組み立て部８０の上方に退避しておく。組み立て部８０に部品３が来ると、上部ユニット２１を下降させ、ワークチャック２３を閉じて部品３を保持する。部品３を保持すると、上部ユニット２１は上方に移動する。その後ワーク２が組み立て部８０へ搬送されてくると、再び上部ユニット２１は下降し、ワーク２に部品３を挿入し、組み付ける。部品の組み付けが終わると、ワークチャック２３は開いて部品をリリースし、再び上部ユニット２１は上方に移動する。この上下方向の移動距離は、組み立て部８０にワーク２が存在する場合、約１０ｍｍであり、ワーク２が存在しない場合約６０ｍｍである。
【００３４】
ＣＣＤカメラ３０は、上述した組み立て部８０の斜め上方、部品投入部側に約３０°の方向に配置する。そして、搬送ユニット１０、上下ユニット２０、ワーク搬入部５０、部品投入部６０、ワーク排出部７０を全て１枚の画像に収めるとともに、搬送ユニット１０、上下ユニット２０の各部の動作範囲も全て収めることができる。プロセッサ４０は、ＣＣＤカメラ３０からの画像信号を受信して、搬送ユニット１０、上下ユニット２０それぞれのサーボモータ（図示せず）へ制御信号を送信する。
【００３５】
図１に示すように、プロセッサ４０は、制御部として機能し、画像処理部４１、モータドライバ４２、及びメモリ４３を備える。本実施形態においては、パーソナルコンピュータ（ＰＣ）に内蔵のプログラム、メモリ、ＲＳ２３２Ｃといった外部出力ポート等によって構成する。しかし、プロセッサ４０はこれに限られるものではなく、専用のハードウェア、ファームウェア等で構成してもよい。また、画像処理部４１及びメモリ４３と、モータドライバ４２を、別個のハードウェアとして構成し、互いに通信可能な構成としてもよい。例えば、画像処理部４１及びメモリ４３をＰＣ及び内蔵プログラムで構成し、モータドライバ４２をプログラマブルロジックコントローラ（ＰＬＣ）で構成してもよい。
【００３６】
本実施形態によると、制御される対象である可動部に検出マークが形成される。すなわち、搬送ユニット１０の部材１１の搬入部５０側端部の上面に検出マーク１３を、及び排出部７０側端部の上面に検出マーク１４を取り付ける。検出マーク１３及び１４は、直径５ｍｍの赤い円形シールであり、ＣＣＤカメラ３０で撮影する画像において、搬送ユニット１０がどの位置にあっても、どちらかの検出マークが写り込むようになっている。なお、検出マーク１３及び１４は上記のものに限られるわけではなく、画像上で明確に判別可能なものであればよく、部材１１自体の特有の形状等で代用することも可能である。
【００３７】
また、上下ユニット２０の上部ユニット２１においても、チャックシリンダ２４の上面に検出マーク２５、及びワークチャック２３の上面に検出マーク２６が取り付けられている。検出マーク２５、２６は、搬送ユニットに取り付けた検出マーク同様、直径５ｍｍの赤い円形シールである。さらに、ＣＣＤカメラ３０で撮影する画像において、上部ユニット２１が如何なる位置にあっても、またチャックの開閉によらず、検出マーク２５、２６が写り込むよう構成されている。なお、検出マーク２５、２６は、検出マーク１３、１４と同じマークである必要は無く、画像上で明確に判別可能なものであればよい。
【００３８】
ＣＣＤカメラ３０は、組み立て装置１００の作動中、搬送ユニット１０、上下ユニット２０、及び搬送されてくるワークや部品、排出される組み立て済みワークを全て１枚の画像に収めた静止画を、ビデオレート（３０Ｈｚ）で連続して取得し、プロセッサ４０へ送信する。この目的のため、ＣＣＤカメラ３０として、１／４インチ４１万画素ＣＣＤ、焦点距離４．３ｍｍ（画角６９．８°）、２４ビット（ＲＧＢ各８ビット）出力のものを用いる。しかし、ＣＣＤカメラ３０としては、これに限られるものではなく、組み立て装置の各部を１枚の画像に収めることが可能で、且つ検出マーク等の判別ができるものであればよい。
【００３９】
またプロセッサ４０は、ＣＣＤカメラ３０から画像データを受信すると、画像処理部４１において受信した画像のうち、検出マークの動きによる位置の変化を示す変化後の画像を解析し、搬送ユニット１０や上下ユニット２０等の位置を認識し、認識結果に応じてモータドライバ４２へ指令を送信する。モータドライバ４２は、画像処理部４１から受信した指令に基づいて、搬送ユニット１０又は上下ユニット２０に内蔵されたサーボモータに対して制御信号を送信する。
【００４０】
このようにして、本実施形態によれば、検出マークの位置の変化により、組み立て装置をシーケンス動作させることができる。
【００４１】
以下、フローチャート及びタイミングチャートを参照して、本実施形態に係る駆動制御装置を実装した組み立て装置１００の動作について説明する。
【００４２】
図４及び図５に、本実施形態に係る組み立て装置１００の動作のフローチャートを示す。また図６に、本実施形態に係る組み立て装置の可動部である搬送部１０、上下ユニット中の上部ユニット２１について動作のタイミングチャートを示す。
【００４３】
図６において、上部に示したＳ０２等の記号５０１は、後述する組み立て準備完了、若しくは各可動部の動作終了判定ステップの実行タイミングを示す。また、各可動部の動作を横欄毎に示し、タイミングチャート線５０２がその横欄に存在する場合、各可動部はその横欄の左側欄５０３に示された動作を行うことを表す。どちらの動作を示す欄にも属さず、中間線上にタイミングチャート線５０２が存在する場合、その可動部は動作を行わず、その前状態を保持し続けることを表す。
【００４４】
まず、組み立て準備完了か否かを判定する（ステップＳ００）。この判定は、プロセッサ４０の画像処理部４１が行う。以下（ｉ）〜（ｉｉｉ）の３条件全てを満たす場合、準備完了と判定する。
【００４５】
（ｉ）ワーク搬入部５０の入口５１にワーク２が存在すること
（ｉｉ）ワーク排出部７０の出口７１に完成品４が存在しないこと
（ｉｉｉ）部品投入部６０に部品３が存在すること
ワークや部品等の存在の有無は、以下の手順により調べることができる。
【００４６】
まず、事前準備として、ＣＣＤカメラ３０を通じてワーク２、部品３及び完成品４が入口５１等に存在する場合、及び存在しない場合の画像データをそれぞれ取得する。図７に示すように、取得した画像データを参照し、入口５１や出口７１の位置、部品の存在有無を調べる位置を特定し、関心領域００１〜００３としてその画像上の位置（例えば関心領域の左上端座標と右下端座標）をメモリ４３に保存しておく。次に、関心領域００１〜００３にワーク２、部品３又は完成品４が存在する場合、存在しない場合のそれぞれについて、各関心領域内の平均信号値を求める。そして、各関心領域について、ワーク２、部品３又は完成品４が存在する場合の平均信号値と、存在しない場合の平均信号値との平均値を算出し、閾値Thd001〜Thd003とする。その閾値Thd001〜Thd003を予めメモリ４３に保存しておく。
【００４７】
組み立て装置１００の動作時においては、ＣＣＤカメラ３０から送られてくる画像に対し、メモリ４３に保存した関心領域００１〜００３の位置に基づいて、関心領域００１内の平均信号値AVG001、関心領域００２内の平均信号値AVG002、関心領域００３内の平均信号値AVG003をそれぞれ算出する。メモリ４３から上述した閾値Thd001〜Thd003を呼び出し、平均信号値AVG001〜AVG003とそれぞれ比較する。平均信号値AVG001〜AVG003が、閾値Thd001〜Thd003より、ワーク２、部品３又は完成品４が存在する場合の参照画像データにおける平均信号値に近い場合、ワーク２、部品３又は完成品４が存在すると判定する。
【００４８】
なお、判定方法は上記の方法に限られるものではなく、別の方法を用いてもよい。例えば、上記と同様、事前にワーク２、部品３又は完成品４が存在する参照画像データを取得してメモリ４３に保存しておく。また、上記同様に関心領域００１〜００３を設定する。
【００４９】
そして、組み立て装置１００の動作時において、ＣＣＤカメラ３０から受信した画像データと参照画像データとの間で、関心領域内００１〜００３内の各画素で差分信号値の絶対値を算出し、その平均信号値（平均絶対偏差）を算出する。その平均絶対偏差が所定の許容範囲内であれば、ワーク２、部品３又は完成品４が存在する（または存在しない）と判定する。なお、上記の許容範囲は、組み立て装置が設置された場所の照明など環境条件によって左右される可能性があるため、実験的に決定しておくことが好ましい。
【００５０】
上記の判定方法に基づき、ＣＣＤカメラ３０から連続的に受信した画像データに対し、逐次判定を行う。いずれかの条件を満たさない場合、画像処理部４１は組み立て準備が完了していないと判断し、組み立て装置１００のアイドル状態を維持する。また、受信した画像データは廃棄する。
【００５１】
一方、ある時点で、受信した画像データについて上記（ｉ）〜（ｉｉｉ）の全ての条件を満たすと、画像処理部４１は組み立て準備完了と判断する。そして画像処理部４１は、その画像データをメモリ４３に保存するとともに、モータドライバ４２に対し、搬送ユニット１０をワーク搬送路１に近づくよう前進動作させる指令を送信する。モータドライバ４２は、係る指令を受け取ると、搬送ユニット１０のサーボモータに制御信号を送信する。その制御信号に基づいて、搬送ユニット１０がワークを掴むために前進動作する（ステップＳ０１）。
【００５２】
次に、搬送ユニット１０の前進動作が終了したか否かを判定する（ステップＳ０２）。
【００５３】
係る判定は、搬送ユニット１０に付された検出マーク１３の重心位置及び面積が所定の条件を満たすか否かを判定することによって行う。以下にその方法を詳述する。
【００５４】
事前準備として、搬送ユニット１０の前進動作終了時点に相当する参照画像データを取得する。図７に示すように、取得した参照画像データから、搬送ユニット１０の前進動作終了時点における検出マーク１３の存在すべき位置を含む関心領域１０１を設定し、メモリ４３にその位置・範囲を記憶させておく。ここで関心領域１０１は、検出マーク１３の位置検出に使用する領域であるため、正確な位置認識を行うために検出マーク１３を完全に収めることができる大きさであることが好ましい。一方、位置認識の処理に必要な計算時間を減らすため、関心領域１０１は狭い方が好ましい。具体的には、関心領域１０１は、検出マーク１３の画像上における面積の５倍〜１００倍程度の大きさに設定することが好ましい。さらに参照画像データに基づいて、搬送ユニット１０の前進動作終了時点における検出マーク１３を示す画素の重心位置、画像中の面積をそれぞれ基準重心Ｇorg、基準面積Ｄorgとして算出する。そして基準重心Ｇorg、基準面積Ｄorgを予めメモリに記憶させておく。
【００５５】
図８に、ステップＳ０２の動作手順のフローチャートを示す。
【００５６】
組み立て装置１００の稼動時においては、プロセッサ４０がＣＣＤカメラ３０から受信した画像について、関心領域１０１のみに限定して検出マーク１３の重心位置Ｇ・面積Ｄを調べ、基準重心、基準面積との比較で動作が完了したか否かを判定する。まず、関心領域の位置、範囲、及び基準重心Ｇorg、基準面積Ｄorgをメモリ４３から取得する（ステップＳ２０１）。次に、判定を行う画像データを取得する（ステップＳ２０２）。次に、関心領域１０１内の画像データを、検出マークとそれ以外に分離可能なように２値化する（ステップＳ２０３）。２値化の閾値は組み立て装置１００の設置環境等を勘案して経験的に設定する。
【００５７】
本実施形態では、１画素あたりのデータが赤（Ｒ）、緑（Ｇ）、青（Ｂ）各８ビットで表される。そこで関心領域１０１中の任意の画素の値Ｐ（＝（Ｒ, Ｇ, Ｂ））とし、対応する２値化画像の任意の画素値をＰbinとすると、検出マーク１３は赤色であることから、例えば
Ｐbin  ＝  １  （Ｒ≧１２８、Ｇ＜３２、Ｂ＜３２）（検出マーク１３に相当）
Ｐbin  ＝  ０  （上記以外のとき）
とすることができる。
【００５８】
２値化が終了すると、検出マーク１３に相当する（Ｐbin＝１）画素の重心Ｇ、画素数の合計（面積）Ｄを算出する（ステップＳ２０４）。次に、重心Ｇと、メモリに記憶された基準重心Ｇorgとの距離ΔＧ（＝((Ｇx−Ｇorgx)2+(Ｇy−Ｇorgy)2)1/2）を求める（ただし、Ｇx、Ｇyはそれぞれ重心Ｇの水平座標、垂直座標であり、一方Ｇorgx、Ｇorgyはそれぞれ基準重心Ｇorgの水平座標、垂直座標である）。同様に、面積Ｄと、基準面積Ｄorgとの面積の差の絶対値ΔＤ（＝｜Ｄ−Ｄorg｜）を求める（ステップＳ２０５）。ΔＧ、ΔＤそれぞれについて許容誤差範囲（例えば１画素以内）か否か判定する（ステップＳ２０６）。共に許容誤差範囲内であれば、搬送ユニット１０は正常に前進動作（Ｓ０１）を終了したと判定する。この場合、画像処理部４１は、モータドライバ４２に対して、次の動作を実行させるための指令となるタイミング信号を出力する（ステップＳ２０７）。また、判定に使用した画像データをメモリ４３に保存する（ステップＳ２０８）。
【００５９】
一方、ΔＧ、ΔＤのどちらか一方でも、許容誤差範囲を超えた場合、搬送ユニット１０の前進動作は完了していないと判断し、判定に使用した画像を廃棄するとともに、次にＣＣＤカメラ３０から送られてくる画像に対して同様の判定手順を繰り返す。
【００６０】
なお、搬送ユニット１０が前進動作を始めてから、若しくはステップＳ００の条件が満たされてから、所定時間（例えば１分間）の間にステップＳ０２が搬送ユニット１０の前進動作を終了したと判定できない場合、装置の操作者に対して警告を発生するよう構成してもよい。係る警告は、装置の作動状態を監視するモニタ（図示せず）上への警告表示、又は警告音の発生等で行うことが可能である。
【００６１】
上述した判定方法は、以下に述べるステップＳ０４、Ｓ０６等、組み立て装置１００の可動部の各動作終了判定ステップにおいても同様に使用する。ただし、着目する検出マーク、設定する関心領域、及び基準となる重心位置Ｇorg、面積Ｄorgは、各動作終了判定ステップについて最適化する。この最適化についても、上述した事前準備と同様の方法で、動作終了判定を行う可動部の動作終了時を示す参照画像データを予め取得しておき、その参照画像データから着目する検出マークの重心、面積を調べておけばよい。
【００６２】
このように、検出マークの重心位置、及び面積を検出し、理想状態におけるそれらと比較することにより、その検出マークが付された可動ユニットについて正確な位置決定が可能となり、装置の信頼性を向上させることが可能である。
【００６３】
画像処理部４１が、搬送ユニット１０の前進動作は終了したと判定した場合、次の動作として、モータドライバ４２に対し、搬送ユニット１０を後退動作させる指令を出す。モータドライバ４２は、その指令を受け取ると、搬送ユニット１０のサーボモータに制御信号を送信する。その制御信号に基づいて、搬送ユニット１０はワークを保持したまま後退動作を行う（ステップＳ０３）。なお、この後退動作に伴って、ワーク２に取り付ける部品３が、部品投入部より組み立て部８０に移動する。
【００６４】
次に、搬送ユニット１０の後退が終了したか否かを判定する（ステップＳ０４）。
【００６５】
その判定方法はステップＳ０２と同様である。即ち、予め設定した関心領域内で検出マーク１３の重心位置と面積を算出し、事前に求められているそれらの値との差異が許容範囲内に収まるか否かで判定する。また、ステップＳ０２と同様に、判定基準を満たさない画像データは廃棄し、判定基準を満たした画像はメモリ４３に保存する。
【００６６】
画像処理部４１が、搬送ユニット１０の後退動作は終了したと判定した場合、モータドライバ４２に対し、上部ユニット２１を下降させる指令を出す。モータドライバ４２は、係る指令を受け取ると、上部ユニット２１のサーボモータに制御信号を送信する。その制御信号に基づいて、上部ユニット２１が下降する（ステップＳ０５）。
【００６７】
その後、上部ユニット２１の下降動作が終了したか否かを判定する（ステップＳ０６）。その判定方法はステップＳ０２と同様である。即ち、予め設定した関心領域内で検出マーク２５の重心位置と面積を算出し、事前に求められているそれらの値との差異が許容範囲内に収まるか否かで判定する。また、ステップＳ０２と同様に、判定基準を満たさない画像データは廃棄し、判定基準を満たした画像はメモリ４３に保存する。
【００６８】
本実施形態では、ＣＣＤカメラ３０を、組み立て部８０の直上でなく、斜め３０°の方向に配置したことにより、上部ユニット２１の上下運動も、画像上で位置の変化として捉えることを可能としたので、複数のＣＣＤカメラを用いることを要しない。このように、ＣＣＤカメラ３０は、１台で全ての可動ユニットの動作を調べるために、全てに可動ユニットの動作平面外に配置することが好ましい。また、正確に可動ユニットの位置を把握するために、ＣＣＤカメラ３０で撮影した画像上において、全ての可動ユニットの動作距離が、１０画素以上となるように配置することがさらに好ましい。
【００６９】
画像処理部４１が、上部ユニット２１の下降動作は終了したと判定した場合、モータドライバ４２に対し、ワークチャック２３を閉じる指令を出す。モータドライバ４２は、係る指令を受け取ると、上部ユニット２１のサーボモータに制御信号を送信する。その制御信号に基づいて、ワークチャック２３が閉じて組み立て部８０にある部品３を捕捉する（チャック動作）（ステップＳ０７）。
【００７０】
その後、ワークチャック２３のチャック動作が終了したか否かを判定する（ステップＳ０８）。なお判定方法はステップＳ０２と同様であり、予め設定された関心領域内でワークチャック２３に付された検出マーク２６の重心位置、面積を調べて判定する。また、判定基準を満たさない画像データは廃棄し、判定基準を満たした画像はメモリ４３に保存することも同様である。
【００７１】
画像処理部４１が、ワークチャック２３のチャック動作は終了したと判定した場合、モータドライバ４２に対し、上部ユニット２１を上昇させる指令を出す。モータドライバ４２は、係る指令を受け取ると、上部ユニット２１のサーボモータに制御信号を送信する。その制御信号に基づいて、上部ユニット２１は部品を保持したまま上昇する（ステップＳ０９）。
【００７２】
その後、上部ユニット２１の上昇動作が終了したか否かを判定する（ステップＳ１０）。この判定には、上部ユニット２１に付された検出マーク２５を用いる他、判定方法、画像の廃棄・保存は上記Ｓ０２と同様である。
【００７３】
画像処理部４１が、上部ユニット２１の上昇動作は終了したと判定した場合、モータドライバ４２に対し、搬送ユニット１０を送り動作させ、その後前進動作させる指令を出す。モータドライバ４２は、係る指令を受け取ると、搬送ユニット１０のサーボモータに制御信号を送信する。その制御信号に基づいて、搬送ユニット１０はワーク２を組み立て部８０に搬送するため、部品を保持したままワーク搬送路１に沿って送り動作し、その後前進動作する（ステップＳ１１）。
【００７４】
ステップＳ０２と同様の判定方法により、搬送ユニット１０の移動が完了したか否かを判定する（ステップＳ１２）。画像データの保存、廃棄についても同様である。ただし、搬送ユニット１０がワーク排出部側へ移動したことにより、ワーク搬入部側の検出マーク１３が、上部ユニット２１に隠れて見えなくなるため、ワーク排出部側の検出マーク１４を用いて判定を行い、関心領域も検出マーク１４の存在位置を含むように設定しておく。
【００７５】
画像処理部４１は、搬送ユニット１０の移動は終了したと判定した場合、モータドライバ４２に対し、上部ユニット２１を下降させる指令を出す。モータドライバ４２は、係る指令を受け取ると、上部ユニット２１のサーボモータに制御信号を送信する。その制御信号に基づいて、上部ユニット２１が下降し、組み立て部８０にあるワーク２に、部品３を取り付ける（ステップＳ１３）。この時、下部ユニット２２は、ワーク２を固定する。
【００７６】
ステップＳ０４と同様の判定方法により、上部ユニット２１の下降動作が終了したか否か、判定する（Ｓ１４）。判定に用いる検出マーク、画像データの保存、廃棄についても同様である。
【００７７】
画像処理部４１は、上部ユニット２１の下降動作は終了したと判定した場合、モータドライバ４２に対して、搬送ユニット１０に後退動作させ、その後戻り動作させる指令を出す。同時に、ワークチャック２３に対し、部品３をリリースするよう開く動作（アンチャック動作）を行うよう指令を出す。モータドライバ４２は、係る指令を受け取ると、搬送ユニット１０のサーボモータに制御信号を送信する。その制御信号に基づき、搬送ユニット１０がワーク２をリリースして後退し、その後戻り動作して原点位置に復帰する。また、モータドライバ４２は、上部ユニット２１のサーボモータに制御信号を送信する。その制御信号に基づき、ワークチャック２３はアンチャック動作を行う（ステップＳ１５）。
【００７８】
次に、搬送ユニット１０の移動が完了し、原点位置に復帰したか否かを判定する。同時に、ワークチャック２３のアンチャック動作が完了したか否か判定する（ステップＳ１６）。
【００７９】
搬送ユニット１０の移動完了、アンチャック動作の完了は、それぞれ上述してきた判定方法と同様の方法で行われるが、ステップＳ１６では、それらを同一の画像上で同時に実行することが可能である。即ち、搬送ユニット１０の検出マーク１３の重心位置、面積を調べるための関心領域と、ワークチャック２３に付された検出マーク２６の重心位置、面積を調べるための関心領域をそれぞれ設定し、関心領域毎に判定を行う。
【００８０】
それぞれの判定の結果、搬送ユニットの移動完了、アンチャック動作の完了とも確認できると、画像処理部４１は、モータドライバ４２に対し、上部ユニット２１を上昇させる指令を出す。モータドライバ４２は、係る指令を受け取ると、上部ユニット２１のサーボモータに制御信号を送信する。その制御信号に基づき、上部ユニット２１は上昇する（ステップＳ１７）。
【００８１】
その後、ステップＳ１０と同様に、上部ユニット２１の上昇動作が終了したか否かを判定する（ステップＳ１８）。画像の廃棄・保存も同様に行う。
【００８２】
画像処理部４１が、上部ユニット２１の上昇動作は終了したと判定した場合、モータドライバ４２に対し、部品組み付け済みのワーク（完成品）４を捕捉するため、搬送ユニット１０を前進させる指令を出し、モータドライバ４２は、搬送ユニット１０のサーボモータに対して、搬送ユニット１０を前進動作させる制御信号を送信する。その制御信号に基づいて、搬送ユニット１０は前進動作する（ステップＳ１９）。
【００８３】
なお、本実施形態に係る組み立て装置１００は、複数の組み立て手順をパイプライン処理的に実行することも可能である。即ち、ステップＳ１９では、搬送ユニット１０のワーク排出側のグリッパで完成品４を捕捉することとなるが、同時に、ワーク搬入側のグリッパを用いて、次に搬送されてくるワークを捕捉することができる。このように、パイプライン処理的に実行する場合、ステップＳ１９は、次に搬送されてくるワークに対するステップＳ０１’と兼ねることも可能である。なお、ステップ番号のダッシュは、次に搬送されてくるワークに対するステップであることを示す。また、ステップＳ１９をステップＳ０１’と兼ねる場合、ステップＳ１６〜ステップＳ１８を実行する間に、次に搬送されてくるワークに対するステップＳ００’を実行する。この場合、ステップＳ１６、Ｓ１８の動作終了判定と、次のワークに対する準備完了確認ステップＳ００’を、同じ画像を用いて行うことも可能である。
【００８４】
ステップＳ１９で搬送ユニット１０の前進が終了したか否か判定する（ステップＳ２０）。なお、このステップは、次に搬送されてくるワークに対するステップＳ０２’を兼ねることができる。
【００８５】
ステップＳ２０で、搬送ユニット１０の前進が終了したと判定された場合、画像処理部４１は、モータドライバ４２に対して搬送ユニット１０を後退動作させる指令を出し、モータドライバ４２は、搬送ユニット１０のサーボモータに対して後退動作をさせる制御信号を送信する。その制御信号に基づいて、搬送ユニット１０は完成品４を保持したまま後退する（ステップＳ２１）。なおステップＳ２１は、次に搬送されてくるワークに対するステップＳ０３’を兼ねることができる。
【００８６】
そして、搬送ユニットの後退を確認する（ステップＳ２２）。なお、ステップＳ２２は、次に搬送されてくるワークに対するステップＳ０４’を兼ねることができる。
【００８７】
ステップＳ２２で、搬送ユニット１０の後退が終了したと判定された場合、画像処理部４１は、搬送ユニット１０が送り動作後前進動作するようにモータドライバ４２に対して指令を出し、モータドライバ４２は、搬送ユニット１０のサーボモータに対して送り動作及び前進動作をさせる制御信号を送信する。その制御信号に基づき、搬送ユニット１０は完成品４をワーク排出部７０へ排出するために、完成品４を保持したまま、送り動作し、その後前進する（ステップＳ２３）。
【００８８】
なお、パイプライン処理を行う場合には、ステップＳ２３を実行する前に、次のワークに対するステップＳ０５’〜Ｓ１０’を行い（上部ユニット２１の下降（Ｓ０５’）、下降確認（Ｓ０６’）、チャック動作（Ｓ０７’）、チャック確認（Ｓ０８’），上部ユニット上昇（Ｓ０９’），上昇確認（Ｓ１０’））、その後、次のワークに対するステップＳ１１’の動作（ワーク２の組み立て部８０への移動）と同時に、完成品４を保持したまま、送り動作し、その後前進する（ステップＳ２３）。また、パイプライン処理を行う場合には、図６のタイミングチャートにおいて、Ｓ２２〜Ｓ２４の間に、Ｓ０５’〜Ｓ１１’に相当する動作が加わることとなる。
【００８９】
次に、ステップＳ２３の搬送ユニット１０の前進が終了したか否か判定する（ステップＳ２４）。なお、このステップは、次に搬送されてくるワークに対するステップＳ１２’を兼ねることができる。
【００９０】
ステップＳ２４で、搬送ユニット１０の前進終了を確認すると、完成品４がワーク排出部７０のワーク出口７１に排出される。そして、画像処理部４１は、モータドライバ４２に対して指令を出し、モータドライバ４２は搬送ユニット１０のサーボモータに対して、搬送ユニット１０が、後退動作した後、戻り動作を行うよう制御信号を送信する。そしてその制御信号に基づき、搬送ユニット１０は原点位置に復帰する（ステップＳ２５）。
【００９１】
最後に、搬送ユニット１０が原点位置に復帰したか否かを確認する（ステップＳ２６）。ステップＳ２６では、搬送ユニット１０に付された検出マーク１３を用いて、他のステップＳ１６同様に判定する。
【００９２】
なお、組み立て装置１００は、さらに不良ワーク排出部を有してもよい。例えば、不良ワーク排出部は、ワーク排出部７０に近接して配置され。そして、ワーク排出部７０に排出された完成品４について、画像処理部４１によって不良ワークと判定された場合、不良ワーク排出部は、ワークガイドをワーク排出部７０へ突き出し、そのワークガイドによって不良ワークをワーク排出部７０から排除する。この不良ワーク排出部についても、ワークガイドといった可動部に検出マークを付し、画像処理部４１でその検出マークの重心、面積を認識することにより、特別なセンサを使用することなく、動作を制御することが可能である。
【００９３】
上記のように、ＣＣＤカメラにより撮像された動画を処理するのではなく、動作終了時点での静止画を用い、また画像全域を用いずに、関心領域のみを対象として判定処理を行うことで、高速に処理を行うことが可能となり、若しくは安価なプロセッサを用いて処理することが可能となる。また上述したように、画像データを解析し、各可動部の位置を確認することで、他のセンサがなくとも、原点位置確認やオーバーラン検知を行うことが可能となり、且つ各部の動作完了を判定した後に、次の動作を行うよう指令を出すことで、誤動作を防止することが可能となる。さらに、検出マークの重心位置、面積を判定に用いることで、各可動部の位置を精密に評価することが可能となり、誤動作の防止をより確実に行うことができる。また、ステップＳ０２〜Ｓ２６の各動作終了判定ステップにおいて、各可動部の動作完了と判定した画像データを保存することにより、事後的にそれらの画像を参照することで組み立て装置１００の動作解析を簡便に行うことが可能となり、特に異常発生時における原因の究明を容易に行うことが可能となる。さらに各可動部の動作未了と判定した画像データを廃棄することにより、保存するデータ量を減らすことができ、そのため事後的な動作解析において参照するデータ数も最小限で済み、ユーザの負担を軽減することが可能となる。
【００９４】
次に、本発明に係る駆動制御装置の第２の実施形態を以下に示す。第２の実施形態においても、組み立て装置として実装したものである。
【００９５】
第２の実施形態においても、各部の機能、及び動作手順（ステップＳ００〜Ｓ２６）は第１の実施形態と同様である。ただし、第２の実施形態では、ステップＳ０２、Ｓ０４等における、各可動部の動作終了判定方法（ステップＳ２０１〜Ｓ２０８）が第１の実施形態と異なる。そのため、以下では、第２の実施形態に係る各可動部の動作終了判定方法についてのみ、ステップＳ０２を例として説明する。
【００９６】
図９及び図１０に、第２の実施形態に係る各可動部の動作終了判定方法のフローチャートを示す。
【００９７】
第１の実施形態と同様に、事前準備として、搬送ユニット１０の前進動作終了時点に相当する参照画像データを取得する。取得した参照画像データから、搬送ユニット１０の前進動作終了時点における検出マーク１３の存在すべき位置を含む関心領域１０１を設定する。そして、搬送ユニット１０の前進動作終了時点における検出マーク１３を示す画素の重心位置、及び画像中の面積を、それぞれ基準重心Ｇorg、基準面積Ｄorgとして算出する。そしてそれら基準重心Ｇorg、基準面積Ｄorgを予めメモリに記憶させておく。また、参照画像データ自身もメモリ４３に記憶させておく。
【００９８】
組み立て装置１００の稼動時においては、画像処理部４１は、メモリ４３から参照画像データを読み出す（Ｓ２１１）。そしてプロセッサ４０がＣＣＤカメラ３０から逐次受信する画像データから、判定に使用する画像データを取得する（Ｓ２１２）。取得した画像データと参照画像データとの間で、上記関心領域内の各画素について信号値の差分絶対値を求め、その平均値（平均絶対偏差）を算出する（Ｓ２１３）。算出した平均絶対偏差が、所定の閾値以下か否かを判定する（Ｓ２１４）。算出した平均絶対偏差が、所定の閾値を超える場合、搬送ユニット１０の前進動作は未了として、画像データを再取得する。一方、上記平均絶対偏差が、閾値以下となった場合には、搬送ユニット１０の前進動作が完了した可能性があるため、画像処理部４１は、検出マーク１３の重心位置Ｇ、面積Ｄを求め、参照画像データから求めた重心Ｇorg、面積Ｄorgとの比較により、搬送ユニット１０の前進動作（Ｓ１０）が終了したか否かを判定する（Ｓ２０３〜Ｓ２０６）。なお、重心位置Ｇ、面積Ｄの算出方法、及び重心Ｇorg、面積Ｄorgとの比較は、第１の実施形態と同様の手順により実行する。搬送ユニット１０の前進動作が終了したと判断した場合、画像処理部４１は、モータドライバ４２に対して、次の動作を実行させるための指令となるタイミング信号を出力する（ステップＳ２０７）。また、判定に使用した画像データをメモリ４３に保存する（ステップＳ２０８）。
【００９９】
一方、ステップＳ２０６で、搬送ユニット１０の前進動作は終了していないと判断した場合、その判断に用いた画像データは廃棄し、画像データの再取得（ステップＳ２１２）に戻る。
【０１００】
上述したように、画像データと参照画像データとの関心領域内の対応画素間の平均絶対偏差を評価する、パターンマッチング処理を導入し、ある程度候補となる画像データを限定することによって、さらに高速に前進動作の判定を行うことが可能となる。
【０１０１】
なお、上述してきた実施形態は、本発明を説明するためのものであり、本発明は、実施形態に限定されるものではない。
【図面の簡単な説明】
【０１０２】
【図１】第１の実施形態に係る駆動制御装置を実装した組み立て装置の構成ブロック図である。
【図２】第１の実施形態に係る駆動制御装置を実装した組み立て装置の概略上面図である。
【図３】第１の実施形態に係る駆動制御装置を実装した組み立て装置の概略斜視図である。
【図４】第１の実施形態に係る駆動制御装置を実装した組み立て装置のフローチャートである。
【図５】第１の実施形態に係る駆動制御装置を実装した組み立て装置のフローチャートである。
【図６】第１の実施形態に係る駆動制御装置を実装した組み立て装置のタイミングチャートである。
【図７】関心領域の設定範囲、及び検出マークの重心の概要を示す図である。
【図８】第１の実施形態に係る各可動部の動作終了判定方法のフローチャートである。
【図９】第２の実施形態に係る各可動部の動作終了判定方法のフローチャートである。
【図１０】第２の実施形態に係る各可動部の動作終了判定方法のフローチャートである。
【符号の説明】
【０１０３】
１０    搬送ユニット
２０    上下ユニット
３０    ＣＣＤカメラ
１３、１４、２５、２６    検出マーク
１００    組み立て装置
１０１    関心領域
【図１】
2006221238.tif 000003
【図２】
2006221238.tif 000004
【図３】
2006221238.tif 000005
【図４】
2006221238.tif 000006
【図５】
2006221238.tif 000007
【図６】
2006221238.tif 000008
【図７】
2006221238.tif 000009
【図８】
2006221238.tif 000010
【図９】
2006221238.tif 000011
【図１０】
2006221238.tif 000012