(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-31
(45)【発行日】2022-11-09
(54)【発明の名称】位置制御システム、位置検出装置、および制御プログラム
(51)【国際特許分類】
G01B 11/00 20060101AFI20221101BHJP
【FI】
G01B11/00 H
(21)【出願番号】P 2017128749
(22)【出願日】2017-06-30
【審査請求日】2020-03-03
【前置審査】
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】枦山 博幸
【審査官】眞岩 久恵
(56)【参考文献】
【文献】国際公開第00/037884(WO,A1)
【文献】特開2002-140694(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G01B 11/00ー11/30
(57)【特許請求の範囲】
【請求項1】
移動機構によって移動する対象物の位置を制御する位置制御システムであって、
前記移動機構を制御する制御手段と、
前記対象物を撮影して得られる画像データを取得する取得手段と、
第1検出処理に従って前記画像データに基づき前記対象物の位置を検出する第1検出手段と、
前記第1検出手段によって前記対象物の位置が検出された場合に、前記対象物の位置を制御するための第1制御指令を前記制御手段に出力する第1出力手段と、
前記第1検出手段によって前記対象物の位置が検出されなかった場合に、前記第1検出処理よりもロバスト性が高い第2検出処理に従って、前記第1検出処理により前記対象物の位置が検出されなかった前記画像データに基づき前記対象物の位置を検出する第2検出手段と、
前記第2検出手段による検出結果に基づき前記対象物の位置を制御するための第2制御指令を前記制御手段に出力する第2出力手段と
、
前記第2検出手段によって前記対象物の位置が検出されなかった場合に、前記対象物の位置を特定可能な位置データを受け付ける受付手段と、
前記画像データとともに前記画像データに対応付けて前記位置データを記憶する記憶手段と、
前記記憶手段に記憶された前記画像データおよび前記位置データに基づき、前記第2検出処理が従うアルゴリズムおよびパラメータの設定値のうちの少なくとも一方を更新する更新手段とを備え、
前記第1検出処理と前記第2検出処理とでは、アルゴリズムおよびパラメータの設定値の少なくともいずれか1つが異なる、位置制御システム。
【請求項2】
移動機構によって移動する対象物の位置を検出する位置検出装置であって、
前記対象物を撮影して得られる画像データを取得する取得手段と、
第1検出処理によって前記画像データに基づき前記対象物の位置を検出する第1検出手段と、
前記第1検出手段によって前記対象物の位置が検出された場合に、前記対象物の位置を制御するための第1制御指令を出力する第1出力手段と、
前記第1検出手段によって前記対象物の位置が検出されなかった場合に、前記第1検出処理よりもロバスト性が高い第2検出処理に従って、前記第1検出処理により前記対象物の位置が検出されなかった前記画像データに基づき前記対象物の位置を検出する第2検出手段と、
前記第2検出手段による検出結果に基づき前記対象物の位置を制御するための第2制御指令を出力する第2出力手段と
、
前記第2検出手段によって前記対象物の位置が検出されなかった場合に、前記対象物の位置を特定可能な位置データを受け付ける受付手段と、
前記画像データとともに前記画像データに対応付けて前記位置データを記憶する記憶手段と、
前記記憶手段に記憶された前記画像データおよび前記位置データに基づき、前記第2検出処理が従うアルゴリズムおよびパラメータの設定値のうちの少なくとも一方を更新する更新手段とを備え、
前記第1検出処理と前記第2検出処理とでは、アルゴリズムおよびパラメータの設定値の少なくともいずれか1つが異なる、位置検出装置。
【請求項3】
前記第2検出処理による前記対象物の位置検出の回数は、前記第1検出処理による前記対象物の位置検出の回数よりも多い、請求項2に記載の位置検出装置。
【請求項4】
前記第2制御指令は、前記対象物を生産ラインから外部へ搬送するように前記対象物の位置を制御するための指令であり、
前記第2出力手段は、前記第2検出手段によって前記対象物の位置が検出されたか否かに関わらず、前記第2制御指令を出力する、請求項
2に記載の位置検出装置。
【請求項5】
前記第1制御指令は、前記対象物を生産ライン上の次工程に搬送するように前記対象物の位置を制御するための指令であり、
前記第2制御指令は、前記対象物を生産ラインから外部へ搬送するように前記対象物の位置を制御するための指令であり、
前記第2出力手段は、
前記第2検出手段によって前記対象物の位置が検出された場合に前記第1制御指令を出力し、
前記第2検出手段によって前記対象物の位置が検出されなかった場合に前記第2制御指令を出力する、請求項
2に記載の位置検出装置。
【請求項6】
コンピュータにより実行されることで移動機構によって移動する対象物の位置を検出する位置検出装置を実現する制御プログラムであって、前記コンピュータに、
前記対象物を撮影して得られる画像データを取得する取得ステップと、
第1検出処理によって前記画像データに基づき前記対象物の位置を検出する第1検出ステップと、
前記第1検出ステップによって前記対象物の位置が検出された場合に、前記対象物の位置を制御するための第1制御指令を出力する第1出力ステップと、
前記第1検出ステップによって前記対象物の位置が検出されなかった場合に、前記第1検出処理よりもロバスト性が高い第2検出処理に従って、前記第1検出処理により前記対象物の位置が検出されなかった前記画像データに基づき前記対象物の位置を検出する第2検出ステップと、
前記第2検出ステップによる検出結果に基づき前記対象物の位置を制御するための第2制御指令を出力する第2出力ステップと
、
前記第2検出ステップによって前記対象物の位置が検出されなかった場合に、前記対象物の位置を特定可能な位置データを受け付ける受付ステップと、
前記画像データとともに前記画像データに対応付けて前記位置データを記憶する記憶ステップと、
前記記憶ステップによって記憶された前記画像データおよび前記位置データに基づき、前記第2検出処理が従うアルゴリズムおよびパラメータの設定値のうちの少なくとも一方を更新する更新ステップとを実行させ、
前記第1検出処理と前記第2検出処理とでは、アルゴリズムおよびパラメータの設定値の少なくともいずれか1つが異なる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、移動機構によって移動する対象物の位置を制御する位置制御システム、移動機構によって移動する対象物の位置を検出する位置検出装置、および位置検出装置を実現する制御プログラムに関する。
【背景技術】
【0002】
従来から、FA(Factory Automation)分野などにおいては、対象物(以下、「ワーク」とも称す。)を撮影して得られる画像データに基づきワークの位置を検出し、検出した位置データに基づきワークを本来の位置に配置する処理が行われている。
【0003】
たとえば、特開2014-203365号公報(特許文献1)は、ステージ上に配置されたワークの位置決めマークを撮影するとともにその画像データに基づきワークの位置を検出し、検出したワークの位置データに基づく指令を、ステージを制御するコントローラに出力する処理装置を開示する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述した従来の処理装置が用いられる生産ラインでは、ワークの位置検出に失敗した場合に、後続のワークを受け入れるために位置検出に失敗したワークを外部へ搬送しなければならない場合がある。この場合、ワークを問題なく外部へ搬送するために、ワークの位置検出に成功したときに検出される位置座標までは正確でなくとも、ある程度、精度のある位置座標をユーザ(オペレータ,作業者など)が目視で設定するようになっていた。ところが、ワークの位置検出に失敗した場合、ユーザが駆けつけるまで生産ラインが停止したり、ユーザの不手際により生産ラインの停止時間が拡大したりといったことが起こる場合があり、生産性が低下する虞があった。
【0006】
本技術は、対象物の位置が検出されなかった場合に生産性が低下することを極力防止することができる技術を提供する。
【課題を解決するための手段】
【0007】
本発明のある局面によれば、移動機構によって移動する対象物の位置を制御する位置制御システムが提供される。位置制御システムは、移動機構を制御する制御手段と、対象物を撮影して得られる画像データを取得する取得手段と、第1検出処理に従って画像データに基づき対象物の位置を検出する第1検出手段と、第1検出手段によって対象物の位置が検出された場合に、対象物の位置を制御するための第1制御指令を制御手段に出力する第1出力手段と、第1検出手段によって対象物の位置が検出されなかった場合に、第1検出処理よりもロバスト性が高い第2検出処理に従って画像データに基づき対象物の位置を検出する第2検出手段と、第2検出手段による検出結果に基づき対象物の位置を制御するための第2制御指令を制御手段に出力する第2出力手段とを備える。
【0008】
本発明の別の局面によれば、移動機構によって移動する対象物の位置を検出する位置検出装置が提供される。位置検出装置は、対象物を撮影して得られる画像データを取得する取得手段と、第1検出処理によって画像データに基づき対象物の位置を検出する第1検出手段と、第1検出手段によって対象物の位置が検出された場合に、対象物の位置を制御するための第1制御指令を出力する第1出力手段と、第1検出手段によって対象物の位置が検出されなかった場合に、第1検出処理よりもロバスト性が高い第2検出処理によって画像データに基づき対象物の位置を検出する第2検出手段と、第2検出手段による検出結果に基づき対象物の位置を制御するための第2制御指令を出力する第2出力手段とを備える。
【0009】
好ましくは、第2検出処理が従うアルゴリズムは、第1検出処理が従うアルゴリズムと異なる。
【0010】
好ましくは、第2検出処理が従うパラメータの設定値は、第1検出処理が従うパラメータの設定値と異なる。
【0011】
好ましくは、第2検出処理による対象物の位置検出の回数は、第1検出処理による対象物の位置検出の回数よりも多い。
【0012】
好ましくは、位置検出装置は、第2検出手段によって対象物の位置が検出されなかった場合に、対象物の位置を特定可能な位置データを受け付ける受付手段をさらに備える。
【0013】
好ましくは、位置検出装置は、画像データとともに画像データに対応付けて位置データを記憶する記憶手段と、記憶手段に記憶された画像データおよび位置データに基づき、第2検出処理が従うアルゴリズムおよびパラメータの設定値のうちの少なくとも一方を更新する更新手段とをさらに備える。
【0014】
好ましくは、第2制御指令は、対象物を生産ラインから外部へ搬送するように対象物の位置を制御するための指令である。第2出力手段は、第2検出手段によって対象物の位置が検出されたか否かに関わらず、第2制御指令を出力する。
【0015】
好ましくは、第1制御指令は、対象物を生産ライン上の次工程に搬送するように対象物の位置を制御するための指令である。第2制御指令は、対象物を生産ラインから外部へ搬送するように対象物の位置を制御するための指令である。第2出力手段は、第2検出手段によって対象物の位置が検出された場合に第1制御指令を出力し、第2検出手段によって対象物の位置が検出されなかった場合に第2制御指令を出力する。
【0016】
本発明の別の局面によれば、コンピュータにより実行されることで移動機構によって移動する対象物の位置を検出する位置検出装置を実現する制御プログラムが提供される。制御プログラムは、コンピュータに、対象物を撮影して得られる画像データを取得する取得ステップと、第1検出処理によって画像データに基づき対象物の位置を検出する第1検出ステップと、第1検出ステップによって対象物の位置が検出された場合に、対象物の位置を制御するための第1制御指令を出力する第1出力ステップと、第1検出ステップによって対象物の位置が検出されなかった場合に、第1検出処理よりもロバスト性が高い第2検出処理によって画像データに基づき対象物の位置を検出する第2検出ステップと、第2検出ステップによる検出結果に基づき対象物の位置を制御するための第2制御指令を出力する第2出力ステップとを実行させる。
【発明の効果】
【0017】
本技術によれば、対象物の位置が検出されなかった場合に生産性が低下することを極力防止することができる。
【図面の簡単な説明】
【0018】
【
図1】本実施の形態に係る位置制御システムが適用される生産ラインの一例を説明するための図である。
【
図2】本実施の形態に係る位置制御システムの全体構成を示す図である。
【
図3】本実施の形態に係る位置検出装置のハードウェア構成を示す図である。
【
図4】本実施の形態に係るモーションコントローラのハードウェア構成を示す図である。
【
図5】本実施の形態に係る位置検出装置において処理フローを設定するときの画面表示例を示す図である。
【
図6】本実施の形態に係る位置検出装置において処理フローを設定するときの画面表示例を示す図である。
【
図7】本実施の形態に係る位置検出装置が実行するアライメント処理を示すフローチャートである。
【
図8】本実施の形態に係る位置検出装置において位置検出に失敗したときの画面表示例を示す図である。
【
図9】本実施の形態に係る位置検出装置が実行する処理フロー決定処理を示すフローチャートである。
【
図10】本実施の形態に係る位置検出装置が実行する処理フロー決定処理の概略を説明するための図である。
【
図11】本実施の形態に係る位置検出装置における処理フローの評価結果を説明するための図である。
【
図12】本実施の形態に係る位置検出装置における第1検出処理と第2検出処理とのロバスト性の違いを説明するための一例を示す図である。
【
図13】本実施の形態に係る位置検出装置における第1検出処理と第2検出処理とのロバスト性の違いを説明するための一例を示す図である。
【
図14】本実施の形態に係る位置検出装置における第1検出処理と第2検出処理とのロバスト性の違いを説明するための一例を示す図である。
【
図15】本実施の形態に係る位置検出装置における第1検出処理と第2検出処理とのロバスト性の違いを説明するための一例を示す図である。
【
図16】本実施の形態の変形例に係る位置検出装置が実行するアライメント処理を示すフローチャートである。
【発明を実施するための形態】
【0019】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0020】
<A.位置制御システムが適用される生産ラインの一例>
図1は、本実施の形態に係る位置制御システム1が適用される生産ラインの一例を説明するための図である。
【0021】
図1を参照して、本実施の形態に係る位置制御システム1は、工業製品の生産ラインなどにおいて、画像処理を用いてアライメントを行う。アライメントは、典型的には、ワークを生産ラインの本来の位置に配置する処理などを意味する。このようなアライメントの一例として、位置制御システム1は、ステージ板2の上面に配置された対象物(ワーク4)を撮影して得られる画像データに基づきワーク4の位置を検出し、検出した位置データ(本実施の形態においては位置座標)に基づきステージ300を制御することでワークを正しい位置に配置する。
【0022】
具体的には、
図1(a)に示すように、搬送ロボット910のアーム911,912によって搬送されたワーク4は、ステージ300によって位置制御されるステージ板2の上面に配置される。
図1(b)に示すように、ワーク4の上面には位置決めマーク12,14が設けられている。本実施の形態においては、位置決めマーク12,14として、ワーク4の四隅のうちの少なくとも一部に十字マークが印刷されている。なお、位置決めマークは、ワーク4の四隅に限らず、中央など、ワーク4上のいずれの位置に設けられてもよい。また、位置決めマークは、十字に限らず、長方形、丸、扇形、任意の多角形などのいずれの形状であってもよい。
【0023】
位置決めマーク12,14は、カメラ102,104によってそれぞれ撮影される。なお、複数の位置決めマークのそれぞれに1台のカメラを割り当てるのではなく、1台のカメラが移動しながら複数の位置決めマークを撮影するものであってもよい。
図1(c)に示すように、カメラ102,104によって得られた位置決めマーク12,14の撮影データに基づきワークの位置検出処理が行われる。
【0024】
ワーク4の位置検出に成功した場合、
図1(d)に示すように、検出されたワーク4の位置座標に基づきステージ300が制御されることでステージ板2が移動する。ここで、ワーク4の位置が要求精度内でなければ、ワーク4の位置が本来の位置に是正される。たとえば、ステージ300の制御によりステージ板2が反時計回りに回転することで、ワーク4の位置が後述する被組立部材5の位置に合うように是正される。なお、図示は省略するが、ワーク4の位置が是正された後、再びカメラ102,104によって位置決めマークが撮影されることで得られる画像データに基づきワーク4の位置が再度検出される。そして、再びワーク4の位置が要求精度内であるか否かが判定される。ワーク4の位置が要求精度内である場合、
図1(e)に示すように、ステージ300の移動に伴いワーク4が成功経路へと導かれ、搬送ロボット930のアーム931,932によって搬送された被組立部材5がワーク4に対して貼り付けられる。このようにして工業製品が組み立てられる。
【0025】
一方、ワーク4の位置検出に失敗した場合、ワーク4を問題なく生産ラインから外部へ搬送するために、ワーク4の位置検出に成功したときに検出される位置座標までは正確でなくとも、ある程度、精度のある位置座標が設定されなければならない。その理由の一例としては、後述する
図1(g)に示すように、ワーク4を外部に搬送するための搬送路920の幅が決まっているためである。具体的には、ステージ300に対して位置座標を示す指令が入力されなかったり、ステージ300に対して位置座標を示す指令が入力されたとしてもその位置座標が適切でない場合、ワーク4が搬送路920に収まらない事態が生じ得る。そうすると、生産ラインが停止してしまう虞がある。よって、円滑に後続のワーク4を受け入れるためには、ワーク4の位置検出に失敗した場合に、ある程度、精度のある位置座標が設定されなければならない。
【0026】
このため、従来では、ワーク4の位置検出に失敗した場合、ユーザによってワーク4の位置座標が手入力されるようになっている。しかし、ワーク4の位置検出に失敗する度にユーザによって位置座標が手入力されると、ユーザが駆けつけるまで生産ラインが停止したり、ユーザの不手際により生産ラインの停止時間が拡大したりといったことが起こる場合があり、生産性が低下する虞がある。
【0027】
そこで、本実施の形態に係る位置制御システム1においては、ユーザによって過去に手入力された位置座標(以下、手入力座標とも称す。)が画像データに対応付けられて記憶される。そして、その蓄積された手入力座標および画像データの組に基づき、ワーク4の位置検出に失敗した場合に2回目の位置検出処理が行われる。この2回目の位置検出処理は、
図1(c)で行われた1回目の位置検出処理よりもロバスト性が高くなっているため、1回目の位置検出処理で位置検出に失敗した場合であっても、2回目の位置検出処理で位置検出に成功する確率が上がる。その結果、ユーザが位置座標を手入力しなくても、自動的に位置座標を設定することができる。
【0028】
図1(f)に示すように、2回目の位置検出処理によって位置座標が検出され、その位置座標に基づきステージ300が制御される。たとえば、ステージ300の制御によりステージ板2が反時計回りに回転することで、ワーク4の位置が、搬送路920に収まるように是正される。そして、
図1(g)に示すように、ステージ300の移動に伴いワーク4が失敗経路へと導かれ、搬送路920によってワーク4が生産ラインから外部に搬送される。
【0029】
<B.位置制御システムの全体構成>
図2は、本実施の形態に係る位置制御システム1の全体構成を示す図である。
図2に示すように、位置制御システム1は、位置検出装置100と、モーションコントローラ200と、ステージ300とを備える。
【0030】
位置検出装置100は、1つ以上のカメラ(
図2の例では、カメラ102,104)が撮影した画像データを取得し、その取得した画像データに含まれる位置決めマーク12,14の位置を検出することでワーク4の位置を特定する。位置検出装置100は、特定したワーク4の位置に基づき、ワーク4を正しい位置に配置するための指令をモーションコントローラ200に出力する。
【0031】
モーションコントローラ200は、位置検出装置100からの指令に従って、ステージ300に対して指令を与えることで、ワーク4に対するアライメントを実現する。
【0032】
ステージ300は、ワーク4を正しい位置に配置できる機構であればどのような自由度のものであってもよい。本実施の形態においては、ステージ300は、水平方向の変位と回転の変位をワーク4に与えることができる。
【0033】
<C.位置検出装置の全体構成>
図3は、本実施の形態に係る位置検出装置100のハードウェア構成を示す図である。
図3に示すように、位置検出装置100は、典型的には、汎用的なコンピュータアーキテクチャに従う構造を有しており、予めインストールされたプログラムをプロセッサが実行することで、後述するような各種の処理を実現する。
【0034】
より具体的には、位置検出装置100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ110と、RAM(Random Access Memory)112と、表示コントローラ114と、システムコントローラ116と、I/O(Input Output)コントローラ118と、ハードディスク120と、カメラインターフェイス122と、入力インターフェイス124と、モーションコントローラインターフェイス126と、通信インターフェイス128と、メモリカードインターフェイス130とを含む。これらの各部は、システムコントローラ116を中心として、互いにデータ通信可能に接続される。
【0035】
プロセッサ110は、システムコントローラ116との間でプログラム(コード)などを交換して、これらを所定順序で実行することで、目的の演算処理を実現する。
【0036】
システムコントローラ116は、プロセッサ110、RAM112、表示コントローラ114、およびI/Oコントローラ118とそれぞれバスを介して接続されており、各部との間でデータ交換などを行うとともに、位置検出装置100全体の処理を司る。
【0037】
RAM112は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置であり、ハードディスク120から読み出されたプログラム、またはカメラ102,104によって取得されたカメラ画像(画像データ)、画像データに関連するデータ(手入力座標など)、およびワークデータなどを保持する。
【0038】
表示コントローラ114は、表示部132と接続されており、システムコントローラ116からの内部コマンドに従って、各種の情報を表示するための信号を表示部132に出力する。
【0039】
I/Oコントローラ118は、位置検出装置100に接続される記録媒体または外部機器との間のデータ交換を制御する。より具体的には、I/Oコントローラ118は、ハードディスク120と、カメラインターフェイス122と、入力インターフェイス124と、モーションコントローラインターフェイス126と、通信インターフェイス128と、メモリカードインターフェイス130と接続される。
【0040】
ハードディスク120は、典型的には、不揮発性の磁気記憶装置であり、プロセッサ110で実行されるアルゴリズムなどの制御プログラム150に加えて、各種設定値などが格納される。このハードディスク120にインストールされる制御プログラム150は、メモリカード136などに格納された状態で流通する。なお、ハードディスク120に代えて、フラッシュメモリなどの半導体記憶装置やDVD-RAM(Digital Versatile Disk Random Access Memory)などの光学記憶装置を採用してもよい。
【0041】
カメラインターフェイス122は、ワークを撮影することで得られる画像データを取得し、プロセッサ110とカメラ102,104との間のデータ伝送を仲介する。カメラインターフェイス122は、カメラ102,104からの画像データをそれぞれ一時的に蓄積するための画像バッファ122a,122bを含む。複数のカメラに対して、カメラの間で共有できる単一の画像バッファを設けてもよいが、処理高速化のため、それぞれのカメラに対応付けて独立に複数配置することが好ましい。
【0042】
入力インターフェイス124は、プロセッサ110とキーボード134、マウス138、タッチパネル、専用コンソールなどの入力装置との間のデータ伝送を仲介する。
【0043】
モーションコントローラインターフェイス126は、プロセッサ110とモーションコントローラ200との間のデータ伝送を仲介する。
【0044】
通信インターフェイス128は、プロセッサ110と図示しない他のパーソナルコンピュータやサーバ装置などとの間のデータ伝送を仲介する。通信インターフェイス128は、典型的には、イーサネット(登録商標)やUSB(Universal Serial Bus)などからなる。
【0045】
メモリカードインターフェイス130は、プロセッサ110と記録媒体であるメモリカード136との間のデータ伝送を仲介する。メモリカード136には、位置検出装置100で実行される制御プログラム150などが格納された状態で流通し、メモリカードインターフェイス130は、このメモリカード136から制御プログラムを読み出す。メモリカード136は、SD(Secure Digital)などの汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)などの磁気記録媒体、またはCD-ROM(Compact Disk Read Only Memory)などの光学記録媒体などからなる。あるいは、通信インターフェイス128を介して、配信サーバなどからダウンロードしたプログラムを位置検出装置100にインストールしてもよい。
【0046】
上述のような汎用的なコンピュータアーキテクチャに従う構造を有するコンピュータを利用する場合には、本実施の形態に係る機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのOS(Operating System)がインストールされていてもよい。この場合には、本実施の形態に係る制御プログラムは、OSの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および/またはタイミングで呼び出して処理を実行するものであってもよい。
【0047】
さらに、本実施の形態に係る制御プログラムは、他のプログラムの一部に組み込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組み合わせられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係る制御プログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
【0048】
なお、代替的に、制御プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【0049】
<D.モーションコントローラの全体構成>
図4は、本実施の形態に係るモーションコントローラ200のハードウェア構成を示す図である。
図4に示すように、モーションコントローラ200は、主制御ユニット210と、複数のサーボユニット240,242,244とを含む。本実施の形態に係る位置制御システム1では、ステージ300が3軸分のサーボモータ310,312,314を有する例を示し、この軸数に応じた数のサーボユニット240,242,244がモーションコントローラ200に含まれる。
【0050】
主制御ユニット210は、モーションコントローラ200の全体制御を司る。主制御ユニット210は、内部バス226を介して、サーボユニット240,242,244と接続されており、互いにデータを遣り取りする。サーボユニット240,242,244は、主制御ユニット210からの内部指令などに従って、サーボドライバ250,252,254に対して制御コマンド(典型的には、駆動パルスなど)をそれぞれ出力する。サーボドライバ250,252,254は、接続されているサーボモータ310,312,314をそれぞれ駆動する。
【0051】
主制御ユニット210は、チップセット212と、プロセッサ214と、不揮発性メモリ216と、主メモリ218と、システムクロック220と、メモリカードインターフェイス222と、通信インターフェイス228と、内部バスコントローラ230とを含む。チップセット212と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【0052】
プロセッサ214およびチップセット212は、典型的には、汎用的なコンピュータアーキテクチャに従う構成を有している。すなわち、プロセッサ214は、チップセット212から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット212は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ214に必要な命令コードを生成する。システムクロック220は、予め定められた周期のシステムクロックを発生してプロセッサ214に提供する。チップセット212は、プロセッサ214における演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【0053】
主制御ユニット210は、不揮発性メモリ216および主メモリ218を有する。不揮発性メモリ216は、OS、システムプログラム、ユーザプログラム、データ定義情報、ログ情報などを不揮発的に保持する。主メモリ218は、揮発性の記憶領域であり、プロセッサ214で実行されるべき各種プログラムを保持するとともに、各種プログラムの実行時の作業用メモリとしても使用される。
【0054】
主制御ユニット210は、通信手段として、通信インターフェイス228および内部バスコントローラ230を有する。これらの通信回路は、データの送信および受信を行う。
【0055】
通信インターフェイス228は、位置検出装置100との間でデータを遣り取りする。内部バスコントローラ230は、内部バス226を介したデータの遣り取りを制御する。より具体的には、内部バスコントローラ230は、バッファメモリ236と、DMA(Dynamic Memory Access)制御回路232とを含む。
【0056】
メモリカードインターフェイス222は、主制御ユニット210に対して着脱可能なメモリカード224とチップセット212とを接続する。
【0057】
<E.処理フロー設定時の画面表示例>
図5および
図6は、本実施の形態に係る位置検出装置100において処理フローを設定するときの画面表示例を示す図である。
図5および
図6には、画像処理の一例として、サーチ検出処理のアルゴリズムを処理フローとして設定する場合の例を示す。なお、位置検出装置100のプロセッサ110および図示しないグラフィックボードなどが協働することで、
図5および
図6に示すような画面を表示させる。このような画面表示は、OS(Operating System)の一部として組み込まれるGUI(Graphical User Interface)プログラムによって実現され、またGUIは、ユーザがキーボード134またはマウス138により操作される画面上のカーソルや矢印アイコンを用いて、さまざまなユーザ設定を行うための環境も提供する。
【0058】
「処理フロー」は、位置検出に用いられるアルゴリズムおよびパラメータの設定値のことである。ユーザは、
図5および
図6に示す画面を介して、処理フローとして、位置検出に用いられるアルゴリズムおよびパラメータの設定値を選択することができる。
【0059】
「サーチ検出処理」は、ワークの検出すべき特徴部分を画像パターン(モデル)として予め登録しておき、登録されたモデルの特徴部分を画像データから探し出すことで、位置座標を特定する処理である。一例として、位置検出装置100は、画像データ上を走査しながら座標ごとの濃淡度合を算出して特徴部分を特定し、特定した特徴部分と登録されたモデルの特徴部分との間の類似度を算出することで、位置決めマークの位置を検出する。なお、サーチ検出処理は、上述した手法に限らず、公知のものを用いてもよい。
【0060】
なお、サーチ検出処理に関わらず、位置検出にその他の処理を用いてもよい。たとえば、ユーザは、位置検出にエッジ検出処理を選択できてもよい。「エッジ検出処理」は、画像データ上のX軸(たとえば横軸)およびY軸(たとえば縦軸)の両方から走査しながら座標ごとの濃淡度合を算出し、隣接する座標間での濃淡度合の差分が閾値を超えた部分をエッジと特定することで、位置座標を特定する処理である。走査する領域は、エッジ領域として予めユーザが設定できる。なお、エッジ検出処理は、上述した手法に限らず、公知のものを用いてもよい。
【0061】
図5に示すように、「モデル登録」のタブ401が選択されると、表示部132に設定画面400Aが表示される。設定画面400Aは、モデル登録エリア401#と、画像表示エリア404と、全体表示エリア406と、表示制御アイコン群408とを含む。
【0062】
画像表示エリア404には、カメラ102,104により取得された画像データが表示される。各種設定中においては、この画像表示エリア404に表示される画像は、リアルタイムで更新される。全体表示エリア406には、画像表示エリア404と同様にカメラ102,104で取得された画像データが表示される。但し、全体表示エリア406には、画像表示エリア404での表示範囲とは独立して、対象の画像データの全体が表示される。さらに、表示制御アイコン群408に対するユーザ操作(拡大または縮小など)に応じて、画像表示エリア404に表示される画像データの表示範囲および表示精度が変更される。
【0063】
モデル登録エリア401#には、モデル編集ボタン430と、登録図形表示ボックス432と、モデルパラメータ設定エリア410と、モデル登録画像エリア440とが表示される。
【0064】
ユーザがサーチすべきモデルを登録する場合には、モデルを含む基準物を、カメラ102,104を用いて予め取得しておき、この取得された画像データを画像表示エリア404および全体表示エリア406に表示させた状態で操作を行う。
【0065】
まず、ユーザは、マウス138などを操作してモデル編集ボタン430を押下すると、図示しない描画ツールダイアログが表示される。ユーザは、この描画ツールダイアログを操作して、画像表示エリア404に表示される画像データの上に重ねてモデルとして登録すべき範囲を指定する。
図5には、画像表示エリア404上に位置決めマーク(十字マーク)を含む四角形の範囲がモデル510として設定されている場合を示す。何らかのモデルが登録済である場合には、登録図形表示ボックス432に、登録済モデルの形状が表示される(
図5の場合には、「四角形」)。なお、モデル登録する形状は、四角形に限られず、長方形、丸、扇形、任意の多角形などのいずれの形状であってもよい。
【0066】
登録済のモデルの設定変更などを行う場合には、ユーザはモデル登録画像エリア440の必要なボタンを押下する。モデル登録に用いられた画像データが保存されており、後から登録済のモデルに関するパラメータだけを変更することができる。より具体的には、登録画面表示ボタン442が押下されると、モデル登録に用いられた画像データが表示される。この登録画面表示ボタン442が再度押下されると、現在入力されている画像データの表示に切り替わる。モデル再登録ボタン444が押下されると、登録済のモデル画像はそのままで、それ以外のパラメータが変更された状態でモデルとして再登録される。さらに、削除ボタン446が押下されると、登録済のモデルが削除される。
【0067】
モデルパラメータ設定エリア410は、設定項目として、サーチモードの選択を受付ける。サーチモードは、モデルとどの程度似ているかを評価する手法の選択である。このサーチモードについては、ラジオボタン412を操作することで、「相関」および「形状」のいずれかを選択できる。「相関」は、入力された画像データの明るさを正規化した上でモデルとの相関値を算出することで類似度を計測する手法である。一方、「形状」は、モデルの輪郭形状との一致度に基づいて類似度を計測するアルゴリズムである。一般的には、「相関」モードの方が安定した計測が可能である。
【0068】
このサーチモードにおいて「相関」が選択されると、「回転」、「安定度」、「精度」の設定が可能となる。一方、サーチモードにおいて「形状」が選択されると、「回転範囲」および「安定度」の設定が可能となる。
【0069】
「回転」では、ワークが回転するような場合に、登録済のモデルを予め定められた角度ずつ回転させた複数のモデルを内部的に生成し、生成したそれぞれのモデルに基づいて類似度を計測する処理に係るパラメータの設定値が指定される。すなわち、回転のチェックボックス414がチェックされると、回転の処理が有効化される。そして、数値ボックス415に、回転範囲(回転角度上限値および回転角度下限値)および刻み角度がそれぞれ入力されると、回転範囲に亘って、刻み角度ずつ回転させたモデルを生成することが指定される。一般的には、刻み角度が小さいほど安定性は高くなるが、処理時間は長くなる。なお、高速に回転サーチを行うことが可能なスマートモードを設定することも可能である。
【0070】
「安定度」では、計測の安定度と処理速度とのいずれを優先するのかが設定される。すなわち、スライドバー416は、所定幅(たとえば、1~15)の範囲でいずれかの値に設定され、この設定される値が小さいほど処理時間が短縮され、この値が大きいほど処理時間が長くなる一方で安定度が高められる。
【0071】
「精度」では、計測の位置精度と処理速度とのどちらを優先するのかが設定される。すなわち、スライドバー418は、所定幅(たとえば、1~3)の範囲でいずれかの値に設定され、この設定される値が小さいほど処理時間が短縮され、この値が大きいほど処理時間が長くなる一方で精度が高められる。
【0072】
OKボタン407が押下されることで、上述したような内容が位置検出の処理として反映される。なお、キャンセルボタン409が押下された場合、未反映の内容はリセットされる。
【0073】
このようなモデル登録に続いて、「領域設定」のタブ402が選択されると、モデルを探す範囲を指定するための設定画面が表示される(図示は省略する)。この設定画面では、ユーザは、画像表示エリア404上で任意の領域をサーチ領域として設定することができる。なお、入力画像データの全体をサーチ領域とすることもできるが、一部の領域にサーチ領域を制限すれば処理時間を短縮することができる。
【0074】
図6に示すように、領域設定の入力に続いて、「計測パラメータ」のタブ403が選択されると、設定画面400Bが表示される。設定画面400Bは、計測パラメータ設定エリア403#と、画像表示エリア404と、全体表示エリア406と、表示制御アイコン群408とを含む。計測パラメータ設定エリア403#には、判定条件設定エリア420と、計測条件設定エリア450と、計測ボタン452とが表示される。
【0075】
画像表示エリア404には、位置決めマークと、領域設定で決められたサーチ領域500とが表示される。
【0076】
計測条件設定エリア450は、サーチ検出処理の付加的な処理(以下、付加処理とも称する。)として、「フィルタ処理」の有効/無効、および「大きさ変動処理」の有効/無効を受け付ける。
【0077】
「フィルタ処理」は、画像データにおける位置決めマークに対応する部分を強調することで位置決めマークを検出しやすくするための処理である。たとえば、位置決めマークが印刷されるような場合、印刷精度が悪ければ位置決めマークとその周辺とで濃淡差が小さくなり、それらの境界が識別し難くなる。このような場合であっても、フィルタ処理を有効に設定していれば、位置決めマークとその周辺との濃淡差を強調した上でサーチ検出処理を行うことができる。但し、フィルタ処理は、位置決めマークとその周辺との濃淡差を調整するための画像処理に時間が掛かるため、サーチ検出処理全体の処理時間が長くなる。
【0078】
「大きさ変動処理」は、画像データにおける位置決めマークに対応する部分の大きさが本来の大きさと異なる場合であっても、その大きさに応じた処理を追加することで位置決めマークを検出しやすくするための処理である。たとえば、位置決めマークの印刷精度が悪ければ、位置決めマークが登録済のモデル画像の大きさと異なって印刷されてしまうことがある。このような場合であっても、大きさ変動処理を有効に設定していれば、位置決めマークの大きさを考慮してサーチ検出処理を行うことができる。処理の一例としては、画像データ上を走査することによって特定された特徴部分が登録済みのモデル画像と比較される際、そのモデル画像の大きさを変動させたものが複数枚生成される。その上で、生成された複数枚のモデル画像の全てまたは一部と特徴部分とが比較される。そして、最も合致するモデル画像に基づく比較によって、特徴部分の位置が特定される。但し、大きさ変動処理は、位置決めマークの大きさに応じた処理に時間が掛かるため、サーチ検出処理全体の処理時間が長くなる。
【0079】
計測条件設定エリア450の項目を設定・変更した場合には、ユーザは、計測ボタン452を押下して、正しくサーチ検出処理が実行可能であるか否かを判断させる。
【0080】
判定条件設定エリア420は、計測された各座標における類似度(相関値)のうち、登録済のモデルと一致する(「OK」である)と判定するものを設定するための条件を受付ける。より具体的には、設定項目として、計測座標X、計測座標Y、計測角度、および相関値の4項目が設定可能である。計測座標Xおよび計測座標Yでは、数値ボックス422,424にそれぞれ数値範囲が入力されることで、計測された座標値(X座標値およびY座標値)が含まれるべきそれぞれの座標範囲が設定される。計測角度では、数値ボックス426に数値範囲が入力されることで、計測されたモデルの回転角度が含まれるべき角度範囲が設定される。さらに、相関値では、数値ボックス428に数値範囲が入力されることで、計測されたモデルとの相関値が含まれるべき数値範囲が設定される。
【0081】
なお、上述のようなサーチ検出処理では、入力画像内において、登録されたモデルとの間の類似度を算出する領域を順次更新していくことで、入力画像のいずれの位置(座標)における類似度が高いのかを探索する。したがって、実際の内部処理としては、入力画像内の複数の座標におけるそれぞれの類似度が算出される。そのため、算出されたすべての類似度のうち、最も高い値をもつものに加えて、2番目、3番目に高い類似度をもつものについても検出結果として出力してもよい。
【0082】
上述したように、ユーザは、「モデル登録」のタブ401、「領域設定」のタブ402、または「計測パラメータ」のタブ403を選択し、そのときに表示された各種の設定画面において位置検出に用いられる処理フロー(アルゴリズム,パラメータの設定値)を設定することができる。
【0083】
本実施の形態における「アルゴリズム」とは、位置検出の手法、およびその手法に関連する付加的な処理(付加処理)を意味する。たとえば、アルゴリズムに含まれる位置検出の手法としては、サーチ検出処理およびエッジ検出処理が含まれる。これらのアルゴリズムは、位置検出を行うための主要なアルゴリズムであるため、以下では、計測アルゴリズムとも称する。アルゴリズムに含まれる付加処理としては、フィルタ処理および大きさ変動処理が含まれる。
【0084】
アルゴリズムは、位置検出の手法(計測アルゴリズム)、およびその手法に関連する付加的な処理(付加処理)を含むため、アルゴリズムを変更することによって、位置検出時の処理量が変わり、それに伴い処理時間も変わる。たとえば、アルゴリズムとして付加処理を有効化すれば、位置検出の成功確率が上がってロバスト性が高くなるが、その分、位置検出時の処理量が多くなって処理時間が長くなる。また、複数種類のアルゴリズムを用いれば、位置検出の成功確率が上がってロバスト性が高くなるが、その分、位置検出時の処理量が多くなって処理時間が長くなる。なお、上述したアルゴリズムは、一例であり、変更することによってロバスト性が変化するものであれば、いずれの位置検出の手法およびその手法に関連する付加処理が含まれてもよい。
【0085】
「パラメータの設定値」とは、これらアルゴリズムに従った位置検出を行う際に用いられる各種の設定値を意味する。たとえば、サーチ検出処理におけるパラメータの設定値としては、
図5に示すモデルパラメータ設定エリア410で設定可能な各種のパラメータの設定値、「領域設定」のタブ402を選択することで設定可能なサーチ領域の設定値、
図6に示す判定条件設定エリア420で設定可能な各種のパラメータの設定値が含まれる。パラメータの設定値は、アルゴリズムに従った位置検出を行う際に用いられる各種の設定値であるため、パラメータの設定値を変更することによって、位置検出時の処理量が変わり、それに伴い処理時間も変わる。たとえば、サーチ領域を広くするようにパラメータの設定値を設定すれば、位置検出の成功確率が上がってロバスト性が高くなるが、その分、位置検出時の処理量が多くなって処理時間が長くなる。また、複数種類のパラメータの設定値を用いれば、位置検出の成功確率が上がってロバスト性が高くなるが、その分、位置検出時の処理量が多くなって処理時間が長くなる。なお、上述したパラメータの設定値は、一例であり、変更することによってロバスト性が変化するものであれば、いずれの種類のパラメータの設定値が含まれてもよい。
【0086】
<F.アライメント処理>
図7は、本実施の形態に係る位置検出装置100が実行するアライメント処理を示すフローチャートである。なお、以下では、各ステップを単に「S」と略す。
【0087】
図7に示すように、位置検出装置100は、ステージ300によって搬送されたワークをカメラ102,104で撮影することで、ワークの画像データを取得する(S2)。位置検出装置100は、1回目の位置検出処理である第1検出処理に従って画像データに基づきワークの位置検出を試みる(S4)。具体的には、位置検出装置100は、
図5および
図6で示した画面においてユーザが設定した処理フローに従って、画像データに基づき位置決めマークの位置検出を試みる。
【0088】
位置検出装置100は、第1検出処理によってワークの位置検出に成功したか否かを判定する(S6)。位置検出装置100は、ワークの位置検出に成功した場合(S6でYES)、ワークの現在位置が要求精度内であるか否かを判定する(S8)。位置検出装置100は、ワークの現在位置が要求精度内である場合(S8でYES)、ステージ300に対してワークの位置を制御するための指令を出力する(S10)。具体的には、位置検出装置100は、成功経路へとワークを導いて生産ラインの次工程へワークを搬送するための指令をモーションコントローラ200に出力する。その後、位置検出装置100は、処理を終了する。
【0089】
一方、位置検出装置100は、ワークの現在位置が要求精度内でない場合(S8でNO)、ワークの位置を本来の位置に是正するためのステージ制御量を算出する(S12)。その後、位置検出装置100は、算出したステージ制御量に基づき、モーションコントローラ200に対してワークの位置を制御するための指令を出力し(S14)、S4の処理に戻る。これにより、ワークの位置が本来の位置に是正される。
【0090】
S6の処理において位置検出装置100がワークの位置検出に失敗した場合(S6でNO)、位置検出装置100は、第2検出処理に従ってS4で用いた画像データと同じ画像データに基づき2回目の位置検出処理である第2検出処理を試みる(S16)。このとき、位置検出装置100は、S4の第1検出処理で用いた処理フローよりもロバスト性の高い処理フローを用いる。
【0091】
たとえば、第2検出処理は、第1検出処理と異なりロバスト性の高いアルゴリズムを用いてもよい。第2検出処理は、第1検出処理と異なりロバスト性の高いパラメータの設定値を用いてもよい。第2検出処理は、第1検出処理と同じアルゴリズムおよびパラメータの設定値を用いるが、第1検出処理よりも検出を試みる回数が多くてもよい。第2検出処理は、第1検出処理と異なりロバスト性の高いアルゴリズムを用い、かつ第1検出処理よりも検出を試みる回数が多くてもよい。第2検出処理は、第1検出処理と異なりロバスト性の高いパラメータの設定値を用い、かつ第1検出処理よりも検出を試みる回数が多くてもよい。このように、第2検出処理は、処理フローの内容(アルゴリズム,パラメータの設定値)や検出回数を第1検出処理と異ならせることで、よりロバスト性の高い位置検出を行う処理である。
【0092】
位置検出装置100は、第2検出処理によってワークの位置検出に成功したか否かを判定する(S18)。位置検出装置100は、ワークの位置検出に成功した場合(S18でYES)、生産ラインから外部へ搬送するためにワークの位置を是正するためのステージ制御量を算出する(S20)。その後、位置検出装置100は、算出したステージ制御量に基づき、モーションコントローラ200に対してワークの位置を制御するための指令を出力する(S22)。具体的には、位置検出装置100は、失敗経路へとワークを導くための指令をモーションコントローラ200に出力する。その後、位置検出装置100は、処理を終了する。
【0093】
一方、位置検出装置100は、ワークの位置検出に失敗した場合(S18でNO)、ユーザによるワークの位置座標(正確には位置決めマークの位置座標)の手入力を受け付ける(S24)。なお、ユーザによる位置座標の手入力の具体的な方法については、
図8を用いて後述する。
【0094】
位置検出装置100は、位置検出に失敗したときの画像データとともに画像データに対応付けてS24でユーザによって手入力された位置座標(手入力座標)を記憶する(S26)。
【0095】
位置検出装置100は、学習開始条件が成立したか否かを判定する(S28)。学習開始条件とは処理フロー決定処理を開始するための条件である。処理フロー決定処理とは、第2検出処理が従う処理フローを機械学習で決定するための処理であり、具体的には
図9を用いて後述する。
【0096】
処理フロー決定処理では、ある程度のサンプルデータがないと適切な処理フローを決定できない。このため、学習開始条件は、たとえば位置検出に失敗したときの画像データと手入力座標との組の数が所定数を超えたときに成立するようにすればよい。なお、学習開始条件は、サンプルデータの数に限らず時間経過、あるいは位置検出の成功または失敗に限らず生産ラインに搬送されたワークの数など、その他の条件を用いてもよい。
【0097】
位置検出装置100は、学習開始条件が成立した場合(S28でYES)、処理フロー決定処理を実行し(S30)、S20以降の処理に移行する。一方、学習開始条件が成立しなかった場合(S28でNO)、処理フロー決定処理を実行することなくS20以降の処理に移行する。
【0098】
このように、位置検出装置100は、第1検出処理に従って画像データに基づきワークの位置を検出し(S4)、ワークの位置が検出された場合に、ワークの位置を制御するための制御指令を出力し(S10)、ワークの位置が検出されなかった場合に、第1検出処理よりもロバスト性が高い第2検出処理に従って画像データに基づきワークの位置を検出し(S16)、その検出結果に基づきワークの位置を制御するための制御指令を出力する(S22)。
【0099】
また、位置検出装置100は、第2検出処理によってワークの位置が検出されたか否かに関わらず、生産ラインから外部へ搬送するようにワークの位置を制御するための制御指令を出力する(S22)。
【0100】
<G.位置検出に失敗したときの画面表示例>
図8は、本実施の形態に係る位置検出装置100において位置検出に失敗したときの画面表示例を示す図である。
図8に示すように、第2検出処理で位置検出に失敗した場合(
図7のS18でNOの場合)、表示部132に座標設定画面400Cが表示される。以下、座標設定画面400Cについて説明する。
【0101】
座標設定画面400Cは、画像表示エリア490と、データ設定エリア470と、座標表示エリア480と、表示制御アイコン群488とを含む。
【0102】
画像表示エリア490には、位置検出が行われた画像データが表示される。画像表示エリア490に表示された画像には、位置決めマークが示されているが、印刷精度が悪かったために、位置決めマークとその周辺との濃淡差が小さくなり、それらの境界が識別し難くなっている。また、画像表示エリア490には、十字アイコン465を含むカーソル460が表示されている。ユーザは、キーボード134またはマウス138を用いて後述する十字ボタン474を選択することでカーソル460を移動することができ、十字アイコン465の中心が位置する座標を、手入力座標として設定することができる。
【0103】
データ設定エリア470には、データ表示欄471と、X座標値欄472と、Y座標値欄473と、十字ボタン474とが表示される。データ表示欄471には、整理No.と、計測座標(ピクセル)と、状態とが表示される。X座標値欄472には、十字アイコン465の中心が位置する座標のうちのX座標値が示される。Y座標値欄473には、十字アイコン465の中心が位置する座標のうちのY座標値が示される。
【0104】
座標表示エリア480には、カメラ102,104で取得された画像データが模式的に表されるとともに、座標を分かり易くするためのX軸およびY軸が示されている。ユーザが十字ボタン474を選択することによってカーソル460を移動させると、それに伴い座標表示エリア480においてポインタ485が移動する。さらに、表示制御アイコン群488に対するユーザ操作(拡大または縮小など)に応じて、座標表示エリア480に表示される画像データの表示範囲および表示精度が変更される。ユーザは、ポインタ485の位置を確認しながら十字ボタン474を選択することで、位置決めマークの位置座標をより正確に決定することができる。
【0105】
ユーザがOKボタン495を押下すると、ユーザによって決定された位置座標が手入力座標の設定値として反映される。このように、第2検出処理で位置検出に失敗した場合、ユーザは、座標設定画面400Cに表示された画像を目視で確認しながら、位置座標を設定することができる。
【0106】
<H.処理フロー決定処理>
図9は、本実施の形態に係る位置検出装置100が実行する処理フロー決定処理を示すフローチャートである。なお、以下では、各ステップを単に「S」と略す。
【0107】
図9に示すように、位置検出装置100は、現行の第2検出処理で用いている処理フローを抽出する(S3202)。具体的には、位置検出装置100は、
図7のS16に示す第2検出処理で用いた処理フローを抽出する。
【0108】
位置検出装置100は、抽出した処理フローに基づき、処理フローの候補を生成する(S3204)。たとえば、位置検出装置100は、現行の処理フローに含まれるアルゴリズムおよびパラメータの設定値を基準として、アルゴリズムおよびパラメータの設定値のうちの少なくとも一方を更新することで、複数種類の処理フローの候補を生成する。なお、処理フローの候補を生成する手法は、いずれの手法を用いてもよい。たとえば、過去に第2検出処理で位置検出に失敗した数と、そのときに用いた処理フローの内容とに基づいて、機械学習によって複数種類の処理フローの候補を生成してもよい。
【0109】
位置検出装置100は、生成した各処理フローに基づき、
図7のS26の処理で蓄積して記憶していた位置検出失敗時の画像データを用いて位置検出を試みる(S3206)。このとき、位置検出装置100は、蓄積して記憶していた過去分全ての画像データを用いて位置検出を試みてもよいし、画像データの数を限定してもよい。
【0110】
位置検出装置100は、生成した各処理フローに基づき検出した結果と、位置検出失敗時の画像データに対応づけて記憶していた手入力座標とに基づき、生成した各処理フローが適切であるか否かを評価する(S3208)。
【0111】
位置検出装置100は、S3208の処理で得られた評価結果に基づき、生成した各処理フローの中から最適な処理フローを決定し、決定した処理フローを次回からの第2検出処理用の処理フローとする(S3210)。その後、位置検出装置100は、処理を終了する。なお、最適な処理フローの決定については、
図11を用いて後述する。
【0112】
このように、位置検出装置100は、記憶した画像データと、画像データに対応付けられた位置データとに基づき、第2検出処理が従うアルゴリズムおよびパラメータの設定値のうちの少なくとも一方を更新することで、最適な処理フローを決定する。
【0113】
<I.処理フロー決定処理の概略>
図10は、本実施の形態に係る位置検出装置100が実行する処理フロー決定処理の概略を説明するための図である。
【0114】
図10に示すように、位置検出装置100は、現行処理フローアプリケーション40によって、現行の第2検出処理で用いている処理フローを抽出する。次に、位置検出装置100は、処理フロー候補生成アプリケーション50によって、抽出した処理フローに基づき、処理フローの候補60を生成する。位置検出装置100は、検出処理アプリケーション22によって、生成した各処理フロー60に基づき、蓄積して記憶していた位置検出失敗時のデータ群10の中から一の画像データ10aを用いて位置検出を試みる。
【0115】
位置検出装置100は、評価処理アプリケーション32によって、検出処理アプリケーション22で出力された検出結果26と、位置検出を試みた画像データ10aに対応する手入力座標10bとに基づき、生成した各処理フロー60が適切であるか否かを評価する。
【0116】
位置検出装置100は、評価処理アプリケーション32によって得られた評価結果70に基づき、生成した各処理フロー60の中から最適な処理フローを決定する。
【0117】
<J.評価結果の概略>
図11は、本実施の形態に係る位置検出装置100における処理フローの評価結果を説明するための図である。
【0118】
図11に示すように、評価結果は、生成された各処理フローの候補1100に対応して、アルゴリズム1200およびパラメータの設定値1300を含む処理フローと、その評価結果1400とを含む。
【0119】
アルゴリズム1200には、計測アルゴリズム1210と、付加処理1220とが含まれる。計測アルゴリズム1210は、サーチ検出処理1211と、エッジ検出処理1212とを含む。付加処理1220は、フィルタ処理1221と、大きさ変動処理1222とを含む。パラメータの設定値1300は、サーチ領域1301を含む。なお、これらアルゴリズム1200およびパラメータの設定値1300は、一例であり、評価結果にはその他のアルゴリズムおよびパラメータの設定値が含まれてもよい。
【0120】
この例では、処理フローの候補として、6種類の候補が生成されている。いずれの候補においても、計測アルゴリズムとして、サーチ検出処理が有効に設定され、エッジ検出処理が無効に設定されている。また、候補1~3は、付加処理として、フィルタ処理および大きさ変動処理のいずれも無効に設定されている。候補4~6は、付加処理として、フィルタ処理が無効に設定される一方で、大きさ変動処理が有効に設定されている。また、いずれの候補においても、パラメータの設定値として、サーチ領域が設定されているが、その設定値に応じてサーチ領域が候補間で異なる。たとえば、候補1および候補4は、全ての候補の中でサーチ領域が最も広い。一方、候補3および候補6は、全ての候補の中でサーチ領域が最も狭い。
【0121】
フィルタ処理が有効に設定された候補は、フィルタ処理が無効に設定された候補よりもロバスト性が高いが、処理時間が長くなる傾向にある。また、サーチ領域が広く設定された候補は、サーチ領域が狭く設定された候補よりもロバスト性が高いが、処理時間が長くなる傾向にある。
【0122】
位置検出装置100は、
図11に示すような評価結果が得られると、所定の採用基準に基づいて、挙げられた候補1~6の中から、最適な処理フローを決定する。採用基準は、ユーザによって適宜設定可能である。
【0123】
たとえば、位置検出装置100は、評価時に検出した位置座標と過去に記憶していた手入力座標との間の乖離度1401が最も小さい候補を、最適な処理フローに決定してもよい。乖離度1401が最も小さい候補が選択された場合、よりロバスト性の高い処理フローが決定される。
【0124】
また、位置検出装置100は、処理時間1402が最も短い候補を、最適な処理フローに決定してもよい。処理時間1402が最も短い候補が選択された場合、より処理時間の短い処理フローが決定される。
【0125】
さらに、位置検出装置100は、評価時に検出した位置座標と過去に記憶していた手入力座標との間の乖離度1401と、処理時間1402とのそれぞれに対して重み付けをした値を算出し、算出した値に基づき最適な処理フローを決定してもよい。なお、乖離度1401と処理時間1402とに対する重み付けの方法および重み付けの比率などは、ユーザが設定できるものであってもよいし、位置検出装置100が蓄積されたデータに基づき機械学習によって決定してもよい。このように、乖離度と処理時間との両方を考慮して候補が選択された場合、ロバスト性と処理時間とが考慮された最適な処理フローが決定される。
【0126】
<K.具体例>
図12~
図15は、本実施の形態に係る位置検出装置100における第1検出処理と第2検出処理とのロバスト性の違いを説明するための一例を示す図である。
【0127】
図12は、第1検出処理と第2検出処理とでアルゴリズムが同じであり、かつパラメータの設定値が異なる場合についての例を示す。具体的には、第1検出処理および第2検出処理のいずれにおいても、アルゴリズムとしてサーチ検出処理が用いられ、付加処理は無効に設定されている。但し、第1検出処理においては、サーチ領域が一部に設定されているのに対して、第2検出処理においては、サーチ領域が全体に設定されている。
【0128】
なお、
図12(A-1)および
図12(B-1)のそれぞれに示す例では、ともに同じ正常な画像データ(以下、正常時画像データとも称する。)に対して位置検出が行われている。たとえば、正常時画像データは、位置決めマークが正常に印刷されかつステージ上の正常な位置に配置されたワークを撮影して得られた画像データである。一方、
図12(A-2)および
図12(B-2)のそれぞれに示す例では、ともに正常でない画像データ(以下、非正常時画像データとも称する。)に対して位置検出が行われている。この例における非正常時画像データは、位置決めマークが正常に印刷されているが、ステージ上の正常ではない位置(この例では正常な位置から左上に外れた位置)に配置されたワークの画像データである。
【0129】
図12(A-1)に示すように、正常時画像データに対して第1検出処理が行われると、サーチ領域500に位置決めマークが収まるため、位置検出装置100は、位置決めマークを検出することができる。一方、
図12(B-1)に示すように、正常時画像データに対して第2検出処理が行われると、第1検出処理と同様にサーチ領域500に位置決めマークが収まるため、位置検出装置100は、位置決めマークを検出することができる。
【0130】
図12(A-2)に示すように、非正常時画像データに対して第1検出処理が行われると、サーチ領域500に位置決めマークが収まらないため、位置検出装置100は、位置決めマークを検出することができない。一方、
図12(B-2)に示すように、非正常時画像データに対して第2検出処理が行われると、サーチ領域500に位置決めマークが収まるため、位置検出装置100は、位置決めマークを検出することができる。但し、第2検出処理は、サーチ領域500が広い分、第1検出処理よりも、位置検出時の処理量が多くなって処理時間が長くなる。
【0131】
図13は、第1検出処理と第2検出処理とでアルゴリズムが異なり、かつパラメータの設定値が同じ場合についての例を示す。具体的には、第1検出処理および第2検出処理のいずれにおいても、アルゴリズムとしてサーチ検出処理が用いられるが、付加処理として、第1検出処理はフィルタ処理が無効に設定されるのに対して、第2検出処理はフィルタ処理が有効に設定されている。
【0132】
なお、
図13(A-1)および
図13(B-1)のそれぞれに示す例では、ともに同じ正常時画像データに対して位置検出が行われている。一方、
図13(A-2)および
図13(B-2)のそれぞれに示す例では、ともに非正常時画像データに対して位置検出が行われている。この例における非正常時画像データは、位置決めマークとその周辺との間の境界が識別し難くなったワークの画像データである。
【0133】
図13(A-1)に示すように、正常時画像データに対して第1検出処理が行われると、位置決めマークが鮮明であるため、位置検出装置100は、位置決めマークを検出することができる。一方、
図13(B-1)に示すように、正常時画像データに対して第2検出処理が行われると、第1検出処理と同様に位置決めマークが鮮明であるため、位置検出装置100は、位置決めマークを検出することができる。
【0134】
図13(A-2)に示すように、非正常時画像データに対して第1検出処理が行われると、位置決めマークが不鮮明であるため、位置検出装置100は、位置決めマークを検出することができない。一方、
図13(B-2)に示すように、非正常時画像データに対して第2検出処理が行われると、フィルタ処理によって位置決めマークが鮮明になるため、位置検出装置100は、位置決めマークを検出することができる。但し、第2検出処理は、フィルタ処理を実行する分、第1検出処理よりも、位置検出時の処理量が多くなって処理時間が長くなる。
【0135】
図14は、第1検出処理と第2検出処理とでアルゴリズムが異なり、かつパラメータの設定値が同じ場合についての例を示す。具体的には、第1検出処理および第2検出処理のいずれにおいても、アルゴリズムとしてサーチ検出処理が用いられるが、付加処理として、第1検出処理は大きさ変動処理が無効に設定されるのに対して、第2検出処理は大きさ変動処理が有効に設定されている。
【0136】
なお、
図14(A-1)および
図14(B-1)のそれぞれに示す例では、ともに同じ正常時画像データに対して位置検出が行われている。一方、
図14(A-2)および
図14(B-2)のそれぞれに示す例では、ともに非正常時画像データに対して位置検出が行われている。この例における非正常時画像データは、位置決めマークが本来よりも大きく印刷されたワークの画像データである。
【0137】
図14(A-1)に示すように、正常時画像データに対して第1検出処理が行われると、位置決めマークが本来の大きさで印刷されているため、位置検出装置100は、位置決めマークを検出することができる。一方、
図14(B-1)に示すように、正常時画像データに対して第2検出処理が行われると、第1検出処理と同様に位置決めマークが本来の大きさで印刷されているため、位置検出装置100は、位置決めマークを検出することができる。
【0138】
図14(A-2)に示すように、非正常時画像データに対して第1検出処理が行われると、位置決めマークが本来よりも大きく印刷されているため、位置検出装置100は、位置決めマークを検出することができない。一方、
図14(B-2)に示すように、非正常時画像データに対して第2検出処理が行われると、大きさ変動処理によって位置決めマークの大きさに応じて生成された複数のモデル画像に基づきサーチ検出処理が行われるため、位置検出装置100は、位置決めマークを検出することができる。但し、第2検出処理は、大きさ変動処理を実行する分、第1検出処理よりも、位置検出時の処理量が多くなって処理時間が長くなる。
【0139】
図15は、第1検出処理と第2検出処理とでアルゴリズムが異なり、かつパラメータの設定値も異なる場合についての例を示す。具体的には、計測アルゴリズムとして、第1検出処理はエッジ検出処理が用いられるのに対して、第2検出処理はサーチ検出処理が用いられている。また、パラメータの設定値として、第1検出処理がエッジ検出処理用のパラメータが用いられるのに対して、第2検出処理がサーチ検出処理用のパラメータが用いられている。たとえば、第1検出処理で用いられるエッジ領域は一部に設定されているのに対して、第2検出処理で用いられるサーチ領域は全体に設定されている。
【0140】
なお、
図15(A-1)および
図15(B-1)のそれぞれに示す例では、ともに同じ正常時画像データに対して位置検出が行われている。一方、
図15(A-2)および
図15(B-2)のそれぞれに示す例では、ともに非正常時画像データに対して位置検出が行われている。この例における非正常時画像データ
は、位置決めマーク(この例では丸型)が正常に印刷されているが、ステージ上の正常ではない位置(この例では正常な位置から左上に外れた位置)に配置されたワークの画像データである。
【0141】
図15(A-1)に示すように、正常時画像データに対して第1検出処理が行われると、エッジ領域600に位置決めマークが収まるため、位置検出装置100は、位置決めマークを検出することができる。一方、
図15(B-1)に示すように、正常時画像データに対して第2検出処理が行われると、サーチ領域500に位置決めマークが収まるため、位置検出装置100は、位置決めマークを検出することができる。
【0142】
図15(A-2)に示すように、非正常時画像データに対して第1検出処理が行われると、エッジ領域600に位置決めマークが収まらないため、位置検出装置100は、位置決めマークを検出することができない。一方、
図15(B-2)に示すように、非正常時画像データに対して第2検出処理が行われると、サーチ領域500に位置決めマークが収まるため、位置検出装置100は、位置決めマークを検出することができる。但し、第2検出処理で用いられるサーチ検出処理は、第
1検出処理で用いられるエッジ検出処理よりも処理量が多く、また、その走査領域も広い。このため、第2検出処理は、第1検出処理よりも処理時間が長くなる。
【0143】
このように、第2検出処理は、第1検出処理よりも処理量が多くなって処理時間が長くなる一方で、ロバスト性が高い処理である。
【0144】
以上のように、位置検出装置100は、第1検出処理によって画像データに基づきワークの位置を検出できなかった場合、第1検出処理よりもロバスト性が高い第2検出処理によって同じ画像データに基づきワークの位置を検出する。そして、位置検出装置100は、第2検出処理によってワークの位置を検出できた場合、検出した位置座標を用いてステージ300の制御量を算出し、算出したステージ制御量に基づき、モーションコントローラ200に対してワークの位置を制御するための指令を出力する。これにより、ワークの位置が検出されなかった場合であっても、ユーザが目視で確認して位置座標を手入力する頻度を減らせることができるため、生産性が低下することを極力防止することができる。
【0145】
また、位置検出装置100は、第2検出処理によって画像データに基づきワークの位置を検出できなかった場合、ユーザの手入力を受け付けるが、それによって得られた手入力座標を、画像データに対応付けて記憶する。そして、位置検出装置100は、蓄積して記憶した画像データおよび手入力座標のセットが所定数を超えると、処理フロー決定処理によってロバスト性や処理時間などを考慮した第2検出処理のための最適な処理フローを決定する。位置検出装置100は、次回から、決定した最適な処理フローを用いて第2検出処理を実行することができる。
【0146】
<L.変形例>
本実施の形態に係る位置制御システム1においては、
図7に示すように、位置検出装置100は、第2検出処理によってワークの位置を検出したか否かに関わらず(S18の結果に関わらず)、ワークを生産ラインから外部へ搬送するようにワークの位置を制御するための指令をモーションコントローラ200に出力するものであった(S22)。しかし、位置検出装置100は、
図16に示すような処理を実行してもよい。
【0147】
図16は、本実施の形態の変形例に係る位置検出装置100が実行するアライメント処理を示すフローチャートである。具体的には、位置検出装置100は、第2検出処理によってワークの位置を検出した場合(S18aでYES)、第1検出処理によってワークの位置を検出したとき(S6でYESのとき)と同じフローを通るように、S8の処理に移行してもよい。たとえば、
図12や
図15に示す非正常時画像データは、ステージ上の正常ではない位置に配置されたに過ぎず、ワークそのものは位置決めマークが正常に印刷されている。このため、
図16に示すように、第1検出処理よりもロバスト性の高い第2検出処理によってワークの位置を検出した場合にワークを生産ラインの次工程に搬送するためのフローへと移行するようにすれば、歩留まりを向上させることができる。
【0148】
本実施の形態に係る位置制御システム1においては、位置検出装置100がワークの位置検出を実行し、さらにステージ300の制御量を算出してステージ300を制御するための指令を出力していた。しかし、位置制御システム1は、位置検出装置100が有する機能に加えて他の機能を有する装置を含んでいてもよい。また、位置制御システム1においては、位置検出装置100がワークの位置を検出する機能のみを有し、ステージ300の制御量を算出する機能やステージ300を制御するための指令を出力する機能は、位置検出装置100とは別の装置、あるいはモーションコントローラ200が有していてもよい。
【0149】
本実施の形態に係る位置制御システム1においては、位置検出装置100は、
図7のS26の処理において、位置検出に失敗した画像データのみを蓄積して記憶していたが、これに限らない。たとえば、位置検出装置100は、位置検出に失敗した画像データに限らず、S18の処理で位置検出に成功した画像データについても、検出した位置座標に対応付けて記憶してもよい。そして、処理フロー決定処理では、位置検出に失敗した画像データに限らず位置検出に成功した画像データに基づいて、最適な処理フローを決定してもよい。
【0150】
<M.利点>
本実施の形態に係る位置制御システム1および位置検出装置100によれば、ワークの位置が検出されなかった場合であっても、ユーザが目視で確認して位置座標を手入力する頻度を減らせることができるため、生産性が低下することを極力防止することができる。
【0151】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0152】
1 位置制御システム、2 ステージ板、4 ワーク、5 被組立部材、100 位置検出装置、102,104 カメラ、110,214 プロセッサ、112 RAM、114 表示コントローラ、116 システムコントローラ、118 コントローラ、120 ハードディスク、122 カメラインターフェイス、122a,122b 画像バッファ、124 入力インターフェイス、126 モーションコントローラインターフェイス、128,228 通信インターフェイス、130,222 メモリカードインターフェイス、132 表示部、134 キーボード、136,224 メモリカード、138 マウス、200 モーションコントローラ、210 主制御ユニット、212 チップセット、216 不揮発性メモリ、218 主メモリ、220 システムクロック、226 内部バス、230 内部バスコントローラ、232 制御回路、236 バッファメモリ、240,242,244 サーボユニット、250,252,254 サーボドライバ、300 ステージ、310,312,314 サーボモータ。