(57)【要約】【課題】ワークが位置および／または寸法のばらつきを有する場合でも、ワークへの部品の組付けを高信頼かつ高速で行なえる自動組付け装置を提供する。【解決手段】自動組付け装置１は、部品およびワークの少なくとも一方を、部品とワークとが接触した状態で移動させる移動部２６０と、ワークに対する部品の接触圧を検出する接触圧検出部２４０と、接触圧に基づいて部品の組付けの進捗度を評価する評価部２１０と、評価の結果に基づき、移動部２６０による移動の量を設定する設定部２２０とを備える。【選択図】図４
2012086341.tif 000002
【特許請求の範囲】
【請求項１】
部品をワークに組付ける自動組付け装置であって、
前記部品および前記ワークの少なくとも一方を、前記部品と前記ワークとが接触した状態で移動させる移動手段と、
前記ワークに対する前記部品の接触圧を検出する接触圧検出手段と、
前記接触圧に基づいて前記部品の組付けの進捗度を評価する評価手段と、
前記評価の結果に基づき、前記移動手段による移動の量を設定する設定手段とを備える、自動組付け装置。
【請求項２】
前記評価の結果に基づいた演算を行なう第１の項と、乱数を用いて定義される第２の項とを含む、第１のゆらぎ方程式を格納した記憶手段をさらに備え、
前記設定手段は、前記第１のゆらぎ方程式を用いて前記移動の量を決定する、請求項１に記載の自動組付け装置。
【請求項３】
前記第１の項は、アトラクタを有する制御関数と前記評価の結果を表す第１の変数との積で表され、
前記第２の項は、前記第１の変数の増減に相反して増減するノイズを表す項である、請求項２に記載の自動組付け装置。
【請求項４】
前記設定手段は、
前記第１のゆらぎ方程式を用いて、当該第１のゆらぎ方程式の制御パラメータである第２の変数を更新し、
前記更新された第２の変数に基づいて、前記移動の量を算出し、
前記制御関数は、前記第２の変数を前記アトラクタに近づける作用を有し、
前記評価手段は、前記接触圧が増加すると前記第１の変数の値を増加させることによって前記作用を増大させ、前記接触圧が減少すると前記第１の変数の値を減少させることによって前記作用を減少させる、請求項３に記載の自動組付け装置。
【請求項５】
前記第２の変数は、前記ワークに対する前記部品の押付け力を表す変数と、前記移動の幅を表す変数とで構成され、
前記アトラクタは、前記押付け力の基準値と、前記移動の幅の基準値とで構成され、
前記設定手段は、前記移動の幅を示す変数に予め定められた位相を有する正弦関数または余弦関数を乗じた値を、前記移動の量として設定し、
前記移動手段は、前記部品の組込み方向に垂直となる面内で、前記設定された移動の量だけ前記部品および前記ワークの少なくとも一方を移動させる、請求項４に記載の自動組付け装置。
【請求項６】
前記移動手段は、予め定められた周期毎に前記移動を実行し、
前記予め定められた位相は、前記周期毎に予め定められた規則に基づき変化する、請求項５に記載の自動組付け装置。
【請求項７】
前記第１のゆらぎ方程式は、前記第１の変数と予め定められた定数との差分を含む第３の項をさらに含み、
前記設定手段は、前記第１の変数が前記定数よりも大きい場合には、前記部品の押付け力を表す変数を大きく設定し、前記移動の幅を表す変数を小さく設定し、前記第１の変数が前記定数よりも小さい場合には、前記部品の押付け力を表す変数を小さく設定し、前記移動の幅を表す変数を大きく設定する、請求項５に記載の自動組付け装置。
【請求項８】
前記第２の変数は、前記部品の組込み方向に垂直となる面内における移動方向を示した第３の変数をさらに含み、
前記アトラクタは、前記移動方向についての基準値をさらに含み、
前記記憶手段は、前記評価の結果に基づいた演算を行なう第１の項と、乱数を用いて定義される第２の項とを含む、第２のゆらぎ方程式をさらに格納しており、
前記設定手段は、前記第２のゆらぎ方程式を用いて、前記第３の変数を更新し、
前記移動手段は、前記第３の変数が更新されると、当該更新後の第３の変数が表す移動方向に、前記部品および前記ワークの少なくとも一方を移動させる、請求項３から７のいずれか１項に記載の自動組付け装置。
【請求項９】
前記接触圧は、前記部品の組込み方向の接触圧と、前記部品の組込み方向に垂直な方向の接触圧とを含み、
前記設定手段は、前記垂直な方向の接触圧が予め定められた第１の閾値よりも大きいと判断すると、前記位相を変化させることにより移動の方向を反転させる、請求項６に記載の自動組付け装置。
【請求項１０】
前記移動手段は、前記部品と前記ワークとが接触していない状態において、前記部品および前記ワークの少なくとも一方を移動させ、
前記設定手段は、前記部品が前記ワークに接触していない状態では、前記部品の組込み方向における移動の量を前記部品が前記ワークに接触しているときの移動の量よりも増加させ、前記部品の組込み方向に垂直な方向における移動の量を０に設定する、請求項１から９のいずれか１項に記載の自動組付け装置。
【請求項１１】
前記設定手段は、
前記部品の組込み方向に垂直な方向における移動によって、前記部品が、当該部品が前記ワークに最初に接触した位置から予め定められた距離以上離れたか否かを判断し、
前記予め定められた距離以上離れたと判断すると、前記最初に接触した位置から前記予め定められた距離未満の範囲内に前記部品が位置するように、前記移動の方向および前記移動の量を設定する、請求項１から１０のいずれか１項に記載の自動組付け装置。
【請求項１２】
前記部品は、ネジであり、
前記自動組付け装置は、前記ネジを締めるためのドライバをさらに備える、請求項１から１１のいずれか１項に記載の自動組付け装置。
【請求項１３】
前記自動組付け装置は、前記ネジを締める際の締付けトルクを検出するためのトルク検出手段をさらに備え、
前記評価手段は、前記締付けトルクと前記接触圧とに基づいて前記部品の組付けの進捗度を評価する、請求項１から１２のいずれか１項に記載の自動組付け装置。
【請求項１４】
部品をワークに組付ける自動組付け装置における自動組付け方法であって、
前記自動組付け装置における移動装置が、前記部品および前記ワークの少なくとも一方を、前記部品と前記ワークとが接触した状態で移動させるステップと、
前記自動組付け装置における圧力センサが、前記ワークに対する前記部品の接触圧を検出するステップと、
前記自動組付け装置における制御装置が、前記接触圧に基づいて前記部品の組付けの進捗度を評価するステップと、
前記制御装置が、前記評価の結果に基づき、前記移動の量を設定するステップとを備える、自動組付け方法。
【請求項１５】
部品をワークに組付ける自動組付け装置を制御するためのプログラムであって、
前記部品および前記ワークの少なくとも一方を、前記部品と前記ワークとが接触した状態で移動させるステップと、
前記ワークに対する前記部品の接触圧を取得するステップと、
前記接触圧に基づいて前記部品の組付けの進捗度を評価するステップと、
前記評価の結果に基づき、前記移動の量を設定するステップとを、前記自動組付け装置に実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネジや樹脂ピン等の挿入部品を自動で組付ける自動組付け装置に関する。
【背景技術】
【０００２】
従来、組立ての自動化手段として産業用ロボット等が利用されている。これらの自動組立においては、組付け部品同士の位置合わせ手段として、位置決め機構や冶具による部品位置規制や、カメラと画像認識によるワーク位置測定等が利用されている。しかしながら、これらの手段では部品を外形や代表部分で規制あるいは測定するため、部品内部の寸法公差による組付け挿入部の位置誤差等を把握できない。それゆえ、従来の手段では、精度が不足する場合があった。当該問題点に対する対策として、多点を個別に測定して位置を補正する方式が行われていた。しかしながら、測定回数が増えると作業時間が延びる問題があった。
【０００３】
従来、組立ての代表的な工程であるネジ締めにおいて、自動式のネジ締めドライバと直動式のロボットを組合せた自動ネジ締め機が製品化され、かつ使用されている。しかしながら、これらの自動ネジ締め機は、ワークのばらつき等によってネジ穴の位置が設計位置からずれている場合、適切にネジの位置を補正してネジを締めることができなかった。具体的には、従来の自動ネジ締め機は、ネジ径の略１／１０程度を超える位置ずれがあると、正しくネジ締めできず、斜め噛み込み等の不完全なネジ締めをしたり、エラー停止する。このため、人手による補正が必要になっていた。
【０００４】
このような問題点を解消すべく、特許文献１では、力制御式のロボットを使用し、かつネジを通して受けた反力を元にドライバの位置を修正することによって、ネジと穴とのずれを修正している。これにより特許文献１では、当該修正によって、高信頼の自動ネジ締めを実現している。特許文献１の修正方法では、ネジ先が穴に入りかかっている場合に、ずれの方向を検知してネジの位置を補正することにより、正しくネジ締めを行なうことができる。
【０００５】
しかしながら、特許文献１の修正方法では、以下のような問題点が生じる。図１５は、ネジがワークの穴周囲の平面部分に接触している状態を示した図である。図１６は、ワークの穴周囲の平面部分にバリが生じている状態を示した図である。図１５を参照して、ネジ８００の先端部８０２における平坦面８９０がワーク９００の穴周囲の平面部分に接触している場合、特許文献１の修正方法では、反力によってずれの方向を検知することができないため、正しくネジ締めを行なうことができなかった。さらに、図１６を参照して、ネジ８００が穴７００の周囲のバリ９９０に乗り上げた場合には、特許文献１の修正方法では、ネジ８００を動かすことに対して大きな摩擦抵抗が発生するため、ネジ８００を穴７００へ位置合わせすることができなかった。
【０００６】
また、従来、未知の目標位置を探索する方法として、ニューラルネットワーク、学習アルゴリズム、または遺伝アルゴリズムを適用した方法や、特許文献２のような適応制御方法が開発されている。特許文献２には、生物を模した状態変化により、ランダム動作と非ランダム動作と評価関数とを組合せて、状況に適用し最適化するためのアルゴリズムが開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−３３１４２８号公報
【特許文献２】特開２００５−２８５０１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ニューラルネットワーク、学習および遺伝アルゴリズムについては、繰返し作業によって作業対象の性質を学習し、探索の効率を向上させるものである。しかしながら、組付け作業においてワーク位置ばらつきは方向性がなく、また摩擦ばらつき等のワーク個体差に対して、予め最適化された学習結果では十分に対応できない。
【０００９】
また、特許文献２に示されたアルゴリズムによれば、作業対象が未知の状態であってもランダム性を増減させつつ探索を行なうことによって、所望の作業を達成することができる。しかしながら、当該制御手法を具体的に生産等の物理的作業に適用した例は従来なく、アルゴリズム上のパラメータと装置の入出力手段との組合せ方法は特定されていない。このため、当該制御手法を装置制御に適用することができなかった。
【００１０】
本発明は、上記の問題点に鑑みなされたものであって、その目的は、部品のワークへの組付け工程において、ワークが位置および／または寸法のばらつきを有する場合でも、部品の組付けを高信頼かつ高速で行なえる自動組付け装置、自動組付け方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明のある局面に従うと、自動組付け装置は、部品をワークに組付ける自動組付け装置である。自動組付け装置は、部品およびワークの少なくとも一方を、部品とワークとが接触した状態で移動させる移動手段と、ワークに対する部品の接触圧を検出する接触圧検出手段と、接触圧に基づいて部品の組付けの進捗度を評価する評価手段と、評価の結果に基づき、移動手段による移動の量を設定する設定手段とを備える。
【００１２】
好ましくは、自動組付け装置は、評価の結果に基づいた演算を行なう第１の項と、乱数を用いて定義される第２の項とを含む、第１のゆらぎ方程式を格納した記憶手段をさらに備える。設定手段は、第１のゆらぎ方程式を用いて移動の量を決定する。
【００１３】
好ましくは、第１の項は、アトラクタを有する制御関数と評価の結果を表す第１の変数との積で表される。第２の項は、第１の変数の増減に相反して増減するノイズを表す項である。
【００１４】
好ましくは、設定手段は、第１のゆらぎ方程式を用いて、当該第１のゆらぎ方程式の制御パラメータである第２の変数を更新する。設定手段は、更新された第２の変数に基づいて、移動の量を算出する。制御関数は、第２の変数をアトラクタに近づける作用を有する。評価手段は、接触圧が増加すると第１の変数の値を増加させることによって作用を増大させ、接触圧が減少すると第１の変数の値を減少させることによって作用を減少させる。
【００１５】
好ましくは、第２の変数は、ワークに対する部品の押付け力を表す変数と、移動の幅を表す変数とで構成される。アトラクタは、押付け力の基準値と、移動の幅の基準値とで構成される。設定手段は、移動の幅を示す変数に予め定められた位相を有する正弦関数または余弦関数を乗じた値を、移動の量として設定する。移動手段は、部品の組込み方向に垂直となる面内で、設定された移動の量だけ部品およびワークの少なくとも一方を移動させる。
【００１６】
好ましくは、移動手段は、予め定められた周期毎に移動を実行する。予め定められた位相は、周期毎に予め定められた規則に基づき変化する。
【００１７】
好ましくは、第１のゆらぎ方程式は、第１の変数と予め定められた定数との差分を含む第３の項をさらに含む。設定手段は、第１の変数が定数よりも大きい場合には、部品の押付け力を表す変数を大きく設定し、移動の幅を表す変数を小さく設定し、第１の変数が定数よりも小さい場合には、部品の押付け力を表す変数を小さく設定し、移動の幅を表す変数を大きく設定する。
【００１８】
好ましくは、第２の変数は、部品の組込み方向に垂直となる面内における移動方向を示した第３の変数をさらに含む。アトラクタは、移動方向についての基準値をさらに含む。記憶手段は、評価の結果に基づいた演算を行なう第１の項と、乱数を用いて定義される第２の項とを含む、第２のゆらぎ方程式をさらに格納している。設定手段は、第２のゆらぎ方程式を用いて、第３の変数を更新する。移動手段は、第３の変数が更新されると、当該更新後の第３の変数が表す移動方向に、部品およびワークの少なくとも一方を移動させる。
【００１９】
好ましくは、接触圧は、部品の組込み方向の接触圧と、部品の組込み方向に垂直な方向の接触圧とを含む。設定手段は、垂直な方向の接触圧が予め定められた第１の閾値よりも大きいと判断すると、位相を変化させることにより移動の方向を反転させる。
【００２０】
好ましくは、移動手段は、部品とワークとが接触していない状態において、部品およびワークの少なくとも一方を移動させる。設定手段は、部品がワークに接触していない状態では、部品の組込み方向における移動の量を部品がワークに接触しているときの移動の量よりも増加させ、部品の組込み方向に垂直な方向における移動の量を０に設定する。
【００２１】
設定手段は、部品の組込み方向に垂直な方向における移動によって、部品が、当該部品がワークに最初に接触した位置から予め定められた距離以上離れたか否かを判断する。設定手段は、予め定められた距離以上離れたと判断すると、最初に接触した位置から予め定められた距離未満の範囲内に部品が位置するように、移動の方向および移動の量を設定する。
【００２２】
好ましくは、部品は、ネジである。自動組付け装置は、ネジを締めるためのドライバをさらに備える。
【００２３】
好ましくは、自動組付け装置は、ネジを締める際の締付けトルクを検出するためのトルク検出手段をさらに備える。評価手段は、締付けトルクと接触圧とに基づいて部品の組付けの進捗度を評価する。
【００２４】
本発明の他の局面に従うと、自動組付け方法は、部品をワークに組付ける自動組付け装置における自動組付け方法である。自動組付け方法は、自動組付け装置における移動装置が、部品およびワークの少なくとも一方を、部品とワークとが接触した状態で移動させるステップと、自動組付け装置における圧力センサが、ワークに対する部品の接触圧を検出するステップと、自動組付け装置における制御装置が、接触圧に基づいて部品の組付けの進捗度を評価するステップと、制御装置が、評価の結果に基づき、移動の量を設定するステップとを備える。
【００２５】
本発明のさらに他の局面に従うと、プログラムは、部品をワークに組付ける自動組付け装置を制御するためのプログラムである。プログラムは、部品およびワークの少なくとも一方を、部品とワークとが接触した状態で移動させるステップと、ワークに対する部品の接触圧を取得するステップと、接触圧に基づいて部品の組付けの進捗度を評価するステップと、評価の結果に基づき、移動の量を設定するステップとを、自動組付け装置に実行させる。
【発明の効果】
【００２６】
上記の発明によれば、部品のワークへの組付け工程において、ワークが位置および／または寸法のばらつきを有する場合でも、部品の組付けを高信頼かつ高速で行なえる。
【図面の簡単な説明】
【００２７】
【図１】自動組付け装置の概略構成を示した図である。
【図２】ネジ締めドライバの先端部と、吸着機構と、ワークとの断面を示した断面図である。
【図３】自動組付け装置の制御系の構成を示した図である。
【図４】自動組付け装置の機能的構成を示した機能ブロック図である。
【図５】自動組付け装置によるネジ締め付け動作の処理の流れを示したフローチャートである。
【図６】図５のステップＳ６の詳細な処理の流れを示したフローチャートである。
【図７】図６のステップＳ１１８の処理の詳細を示したフローチャートである。
【図８】ネジ吸着機構に吸着したネジをワークに組付ける作業の遷移を示した図である。
【図９】関数Ｆ（Ｘ１，Ｘ２）の出力を、Ｘ１，Ｘ２平面上の高さとしてプロットした曲面をグラフ化した図である。
【図１０】ネジ締めドライバ１３５の先端周辺を表す図である。
【図１１】パラメータの時系列変化をグラフ化した図である。
【図１２】自動組付け装置Ｍの一部の断面と、ワークの断面とを示した図である。
【図１３】他の自動組付け装置の一部を示した図である。
【図１４】制御部として機能するコンピュータシステムのハードウェア構成を表わすブロック図である。
【図１５】ネジがワークの穴周囲の平面部分に接触している状態を示した図である。
【図１６】ワークの穴周囲の平面部分にバリが生じている状態を示した図である。
【発明を実施するための形態】
【００２８】
以下、図面を参照しつつ、本発明の各実施の形態に係る自動組付け装置について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００２９】
［実施の形態１］
図１は、本実施の形態に係る自動組付け装置１の概略構成を示した図である。図１を参照して、自動組付け装置１は、部品をワークに組付ける装置である。具体的には、自動組付け装置１は、ネジ８００をワーク９００のネジ穴に対して締め付けるための自動ネジ締め装置である。
【００３０】
自動組付け装置１は、基部１１と、スカラロボット１２と、組付け部１３と、ネジ供給機構１４とを備える。スカラロボット１２は、リンク１２１と、関節１２８と、リンク１２２と、関節１２９と、リンク１２３とをこの順に備える。組付け部１３は、直動軸１３１と、直動軸１３２と、直動軸１３３と、力センサ１３４と、ネジ締めドライバ１３５と、ネジ吸着機構１３６と、衝撃緩和機構（図示せず）とを備える。
【００３１】
基部１１は、金属製の土台である。基部１１は、直方体形状を有している。基部１１は、上面の寸法が約１５００ｍｍ×約１５００ｍｍである。
【００３２】
スカラロボット１２は、ＳＣＡＲＡ（Selective Compliance Assembly Robot Arm）型のロボットである。スカラロボット１２は、鉛直方向の回転軸を持ち、かつ先端部を水平面内で移動可能とする。リンク１２１は、基部１１に固定されている。リンク１２１とリンク１２２とは関節１２８によって接続されている。リンク１２２とリンク１２３とは関節１２９によって接続されている。スカラロボット１２は、図示しないロボット制御部２１（図３参照）によって関節１２８および１２９の角度を制御することにより、所定の位置に先端部を移動させる。
【００３３】
関節１２８と１２９との距離は、４５０ｍｍである。関節１２９と、直動軸１３１，１３２を原点位置にしたときのネジ締めドライバ１３５の軸との距離は、５５０ｍｍである。スカラロボット１２は、関節１２８を中心として半径１０００ｍｍの範囲内にネジ締めドライバ１３５を移動できる。
【００３４】
組付け部１３は、後述する組付け処理と、ネジ締め動作とを行なうための機構である。組付け部１３は、スカラロボット１２のリンク１２３の先端に固定され、スカラロボット１２によって移動する。
【００３５】
直動軸１３１，１３２，１３３は、ネジ８００を移動させる。直動軸１３１，１３２，１３３は、直動型アクチュエータである。直動軸１３１，１３２，１３３は、モーターとボールネジとで構成される。
【００３６】
直動軸１３３の基部は、リンク１２３に固定されている。直動軸１３３は、先端側を図１の上下方向（ｚ軸方向）に駆動する。直動軸１３２の基部は、直動軸１３３の先端側に固定されている。直動軸１３２は、先端側を図１の左右方向（ｙ軸方向）に駆動する。直動軸１３１の基部は、直動軸１３２の先端側に固定されている。直動軸１３１は、先端側を図１の紙面垂直方向（ｚ軸とｙ軸とに垂直な方向（以下、「ｘ方向」と称する））に駆動する。
【００３７】
直動軸１３１および直動軸１３２は、２０ｍｍのストロークを持ち、ストロークの中央を原点とする動作をする。直動軸１３３は、５０ｍｍのストロークを持ち、ストローク上端を原点と動作をする。直動軸１３１，１３２，１３３は、図示しない組付け制御部２２（図３参照）の制御により、それぞれ、先端側を指定された位置に移動する。
【００３８】
力センサ１３４は、ワーク９００に対するネジ８００の接触圧を検出する。力センサ１３４は、ｘ軸、ｙ軸、およびｚ軸の３軸方向に加えられた力の大きさを検出する３軸力覚センサである。以下では、ｘ軸に加えられた力の大きさを「力ＦＸ」と、ｙ軸に加えられた力の大きさを「力ＦＹ」と、ｚ軸に加えられた力の大きさを「力ＦＺ」と称する。
【００３９】
力センサ１３４の基部は、直動軸１３１の先端側に固定されている。力センサ１３４のｘ，ｙ，ｚの３軸は、各々直動軸１３１，１３２，１３３の駆動方向と平行となるように取り付けられている。力センサ１３４の力測定レンジはｘ，ｙ，ｚの各方向に±１００Ｎである。力センサ１３４は、１ｍｓごとに力ＦＸ，ＦＹ，ＦＺを測定し、後述の制御部２０（図３参照）からの読取り処理に応じて、制御部２０に出力する。力センサ１３４の出力は、図１の状態（すなわち、先端にネジ締めドライバ１３５が搭載された状態）で、力ＦＸ，ＦＹ，ＦＺが０になるようオフセット調整されている。
【００４０】
ネジ締めドライバ１３５は、トルク管理による自動ネジ締めが可能なドライバである。ネジ締めドライバ１３５は、力センサ１３４の先端側に取り付けられている。ネジ締めドライバ１３５は、ネジ締め開始の指示を受けると、先端のビット１３５１（図２参照）を回転させてネジ締めを行なう。ネジ締めドライバ１３５は、ビット１３５１からの反トルクが所定の完了トルクに達するとビット１３５１の回転を停止し、ネジ締めが完了したことを表す完了信号を制御部２０に出力する。
【００４１】
ビット１３５１の付け根には、バネによる衝撃緩和機構が内蔵されている。衝撃緩和機構は、ネジの押し込み方向の力に応じてビット１３５１の突き出し量を短縮する。これによって、衝撃緩衝機構は、直動軸１３３が駆動されてビット１３５１がワーク９００に接触するときの衝撃を緩和する。また、衝撃緩和機構により、Ｚ軸位置変動時の反力変化が緩和され、後述する探索移動中の押付け力となる力ＦＺを一定に保つ制御が安定しやすくなる。
【００４２】
ネジ締めドライバ１３５は、異常判定機能を持つ。ネジ締めドライバ１３５は、ネジ締め中に所定の締結回転角度より少ない回転でトルクが上昇した場合、エラー信号を制御部２０に対して出力するとともに、ビット１３５１の回転を停止する。ネジ締めドライバ１３５は、ネジ締め開始後に所定時間が経過してもトルクが上昇しない場合には、タイムオーバーしたことを表す信号を制御部２０に対して出力するとともに、ビット１３５１の回転を停止する。
【００４３】
図２は、ネジ締めドライバ１３５の先端部と、ネジ吸着機構１３６と、ワーク９００との断面を示した断面図である。図２を参照して、ネジ吸着機構１３６は、ネジ８００を把持する把持手段としての機能を果たす。具体的には、ネジ吸着機構１３６は、負圧によりネジ８００をビット１３５１に吸着する機構である。ネジ吸着機構１３６は、ビット１３５１の付け根に取り付けられている。ネジ吸着機構１３６は、図示しない空圧パイプにより、外部の負圧源に接続されている。ネジ吸着機構１３６は、先端にゴム部材１３６１を備える。ネジ吸着機構１３６は、ゴム部材１３６１がネジ８００の頭部に接触すると、空圧パイプによる吸引処理によりゴム部材１３６１は当該頭部に密着する。これにより、負圧による密閉空間が形成される。
【００４４】
また、ネジ８００がビット１３５１に対して傾斜した場合でも、ゴム部材１３６１の弾性によってゴム部材１３６１が変形し追従するため密閉が保たれる。それゆえ、吸着力は、維持される。さらに、ネジ８００がビット１３５１に対して傾斜した場合、当該傾斜を無くそうとする反力がゴム部材１３６１から発生する。
【００４５】
ネジ供給機構１４は、一般的な自動式のネジ供給機である。ネジ供給機構１４は、予め内部にストックした複数のネジを整列した後、１個のネジを取り出す。さらに、ネジ供給機構１４は、取り出したネジの頭部を上に向けた状態で、ネジ供給機構１４上面の所定の供給位置にネジを移動させる。
【００４６】
ネジ供給機構１４は、略直方体の形状を有する。ネジ供給機構１４は、基部１１上のワーク９００の設置範囲に隣接して設置されている。ネジ供給機構１４は、スカラロボット１２を駆動することによって、ネジ締めドライバ１３５をネジ供給機構１４の供給位置上へ移動させることができる。ネジ供給機構１４は、供給位置にネジがあるかどうかを検知するセンサを持つ。ネジ供給機構１４は、ネジが取り去られると内部機構を駆動して次のネジを供給位置に移動させる。
【００４７】
ネジ８００は、Ｍ３、ネジ長６ｍｍ、バインド頭のメートルネジである。なお、ネジ８００のサイズや種別は、これに限定されるものではない。
【００４８】
ワーク９００は、ネジ８００により締結される部材である。ワーク９００は、ともに長方形平板状のワーク９０１とワーク９０２とからなる。ワーク９０１は、ワーク９０２に対して、上面と外周を覆う形で乗せられており、横方向に一定の誤差範囲内で位置決めされている。
【００４９】
ワーク９０１とワーク９０２とには、上面外周に沿って１０箇所に、締結用の穴が開けられている。ワーク９０１の厚みは１．０ｍｍであり、ワーク９００の全体厚みは４０ｍｍである。ワーク９０１の穴は、φ３．８のバカ穴である。ワーク９０２の穴は、Ｍ３のメネジである。
【００５０】
ワーク９００は、図示しない外部の搬送装置により、基部１１上の所定位置に設置される。また自動組付け装置１によるネジ締めが終わると、ワーク９００は、外部の搬送装置により搬出される。基部１１上の所定位置に設置されたワーク９００の穴の位置は、以下の要因による誤差を持つ。
【００５１】
・外部の搬送装置がワーク９００を設置する動作のばらつき
・ワーク９０２に対するワーク９０１のガタつき、
・ワーク９０１およびワーク９０２の寸法公差
以上の累積として、基部１１上の所定位置に設置されたワーク９０１およびワーク９０２の穴の位置は、その設計上の基準位置を中心に、±１．５ｍｍの範囲のばらつきを持つ。
【００５２】
＜制御系の構成＞
図３は、自動組付け装置１の制御系の構成を示した図である。自動組付け装置１は、制御部２０と、ロボット制御部２１と、組付け制御部２２と、ネジ供給機構１４と、ネジ締めドライバ１３５と、力センサ１３４と、ネジ吸着機構１３６と、関節１２８と、関節１２９と、直動軸１３１と、直動軸１３２と、直動軸１３３とを備える。
【００５３】
制御部２０は、それぞれ後述する、移動量の設定、ノイズμの生成、組付けの進捗度の評価、各種パラメータの記憶、当該パラメータの更新を行なうための計算機である。具体的には、制御部２０は、一般的なＰＣ（Personal Computer）である（図１４参照）。
【００５４】
制御部２０は、後述する自動組付け装置１の制御フロー（図５）を実行するためのアルゴリズムと、後述するネジ締め動作の制御フロー（図６および図７）を実行するためのアルゴリズムと、後述する計算式および当該計算式に用いる各種パラメータを、予め記憶部２３０（図４参照）に記憶している。
【００５５】
制御部２０は、ロボット制御部２１，組付け制御部２２、ネジ締めドライバ１３５および力センサ１３４と通信線で接続され、当該各機器の状態読取りおよび制御を行なう。具体的には、制御部２０は、ロボット制御部２１に対して、スカラロボット１２の関節１２８および１２９の角度読取りと目標角度との指令を行なう。制御部２０は、組付け制御部２２に対して、直動軸１３１，１３２，１３３の位置の取得と目標位置との指令を行なう。制御部２０は、ネジ締めドライバ１３５に対して、異常状態および完了状態の読取りと、締結開始の指示とを行なう。制御部２０は、力センサ１３４に対して、最新の力ＦＸ、ＦＹ，ＦＺの読取りを行なう。制御部２０は、計算パラメータとして、直動軸１３１，１３２，１３３の各々の目標位置ＰＸ，ＰＹ，ＰＺと、その移動量ＭＸ，ＭＹ，ＭＺを記憶しており、制御計算によって更新する。
【００５６】
＜機能ブロック＞
図４は、自動組付け装置１の機能的構成を示した機能ブロック図である。図４を参照して、自動組付け装置１は、制御部２０と、接触圧検知部２４０と、トルク検出部２５０と、移動部２６０とを備える。制御部２０は、評価部２１０と、設定部２２０と、記憶部２３０とを備える。設定部２２０は、更新部２２１と、移動量算出部２２２とを備える。
【００５７】
接触圧検出部２４０は、力センサ１３４に対応する。接触圧検出部２４０は、ワーク９００に対するネジ８００の接触圧を検出し、検出結果を制御部２０に送る。
【００５８】
トルク検出部２５０は、ネジ締め付けドライバ１３５に対応する。トルク検出部２５０は、ネジ８００を締める際の締付けトルクを検出し、検出結果を制御部２０に送る。移動部２６０は、直動軸１３１，１３２，１３３に対応する。移動部２６０は、制御部２０からの指示に基づき動作する。
【００５９】
記憶部２３０には、上記計算式として、ゆらぎ方程式が格納されている。ここで、ゆらぎ方程式の基本形について、式（１７）に基づいて説明する。
【００６０】
【数１】
2012086341.tif 000003
【００６１】
式（１７）において、Ｐは、制御パラメータ（第２の変数）である。ゆらぎ方程式は、右辺において、上記評価の結果に基づいた演算を行なう第１項と、乱数を用いて定義される第２項とを含む。第１項は、アトラクタを有する制御関数ｆ（Ｐ）と、上記評価の結果を表すパラメータＡｃｔ（第１の変数）との積で表される。第２項は、パラメータＡｃｔの増減に相反して増減するノイズμを表す項である。なお、以下では、パラメータＡｃｔを、「アクティビティＡｃｔ」、「変数Ａｃｔ」とも称する。
【００６２】
より詳しく説明すると、制御関数ｆ（Ｐ）は、手本データ（つまり、アトラクタ）に近づける作用を有する制御関数である。ノイズμは、ランダムに変化する成分（ゆらぎ）である。
【００６３】
評価部２１０は、接触圧検出部２４０によって検出された接触圧に基づいて、ネジ８００の組付けの進捗度を評価する。具体的には、評価部２１０は、パラメータＡｃｔの値を算出する。より詳しくは、評価部２１０は、接触圧が増加するとパラメータＡｃｔの値を増加させ、接触圧が減少するとパラメータＡｃｔの値を減少させる。評価部２１０は、算出したパラメータＡｃｔを、設定部２２０に送る。
【００６４】
設定部２２０は、ゆらぎ方程式を用いて、移動量（ＭＸ，ＭＹ，ＭＺ）を決定する。具体的には、設定部２２０は、上記評価の結果（つまり、パラメータＡｃｔ）に基づき、移動部２６０による移動量（つまり、ＭＸ，ＭＹ，ＭＺ）を設定する。より詳しくは、設定部２２０における更新部２２１が、ゆらぎ方程式を用いて、当該ゆらぎ方程式の制御パラメータＰを更新する。設定部２２０における移動量算出部２２２が、更新された制御パラメータＰに基づいて、移動量を算出する。
【００６５】
自動組付け装置１が利用するゆらぎ方程式は、式（１７）を拡張した方程式である。当該方程式の構成については、後述する式（６）に基づいて説明する。また、自動組付け装置１は、制御パラメータＰとして、後述する振幅Ｘ１（移動の幅を表す変数），推力Ｘ２（ワークに対するネジの押付け力を表す変数），角度Ｘ３（ネジの組込み方向に垂直となる面内における移動方向を示したの変数）の３つのパラメータを用いる。また、以下では、振幅Ｘ１をパラメータＸ１、推力Ｘ２をパラメータＸ２、角度Ｘ３をパラメータＸ３とも称する。なお、制御部２０の詳細については、以降において順次説明する。
【００６６】
＜制御構造＞
図５は、自動組付け装置１によるネジ締め付け動作の処理の流れを示したフローチャートである。まず始めに、組付け部１３は、以下のような状態にある。直動軸１３１，１３２は、それぞれ原点位置にある。直動軸１３３は、後述する所定の供給高さにある。ネジ締めドライバ１３５は、回転を停止している。ネジ吸着機構１３６は、真空吸引を行っており、ビット１３５１にネジ８００が装着されている。スカラロボット１２は、関節１２８，１２９の駆動により、図１における左側に退避した状態にあり、基部１１のワーク設置位置上空は開放されている。以上の状態において、外部の搬送装置によりワーク９００が搬入され、基部１１上のワーク設置位置に設置される。ワーク９００が設置されると、制御部２０は、図５のフローを開始する。
【００６７】
ステップＳ２において、制御部２０は、規定本数のネジを締めたかどうかの判定を行なう。具体的には、制御部２０は、ワーク９００の穴の数と締結済み本数とを比較して、締結済み本数がワーク９００の穴の数と等しいか否かを判断する。
【００６８】
制御部２０は、締結済み本数がワーク９００の穴の数と等しくなければ、規定本数のネジを締めていないと判断し（ステップＳ２においてＮＯ）、ステップＳ４において、スカラロボット１２を既定の穴位置へ移動させる制御を行なう。具体的には、制御部２０は、ワーク９００が所定位置に置かれたときの各穴位置にネジ締めドライバ１３５の軸を一致させるための関節１２８，１２９の角度の組をあらかじめ記憶部２３０に格納しており、次の穴位置に対する関節１２８，１２９の角度を記憶部２３０から読み出して、ロボット制御部２１に目標として指示する。これにより、スカラロボット１２は、組付け部１３を移動し、ネジ締めドライバ１３５の軸がワーク９００の穴の所定位置の上空に移動する。この結果、前述のワーク９００の設置位置誤差により、ネジ締めドライバ１３５の軸とワーク９００の穴とは±１．５ｍｍ以内の位置ずれを持つ。
【００６９】
なお、上記比較に必要なワーク９００の穴の数（本実施の形態では１０）および締結済み本数は、予め記憶部２３０に格納されている。また、締結済み本数は、図５の制御フローの開始時に０クリアされ、後述のステップＳ１２に入るたびに１ずつ加算される。
【００７０】
ステップＳ６において、制御部２０は、後述する図６のフローによるネジ締め動作の制御を開始する。当該ネジ締め動作の制御は、図５のフローと並行して実行される。制御部２０は、ネジ締め動作が開始されると、ステップＳ８において、ネジ締め動作の完了を待つ。具体的には、制御部２０は、後述の図６のフローが完了するまで、図５に示した処理を停止して待機する。
【００７１】
ステップＳ１０において、制御部２０は、ビット１３５１を退避させる制御を行なう。具体的には、制御部２０は、まず、直動軸１３１，１３２，１３３を駆動させて各々の原点位置へと直動軸１３１，１３２，１３３を移動させる。ステップＳ１２において、制御部２０は、次のネジを取得するための制御を行なう。
【００７２】
制御部２０は、スカラロボット１２の関節１２８，１２９を駆動して、スカラロボット１２を所定の供給姿勢へと移動させる。「所定の供給姿勢」とは、直動軸１３１，１３２が原点位置にあるときにネジ締めドライバ１３５の軸がネジ供給機構１４の供給位置上に位置する関節角度の組合せである。当該組合せは、予め記憶部２３０に格納されている。さらに、制御部２０は、直動軸１３３を所定の供給高さに下降させる。この場合の所定の供給高さは、ビット１３５１およびネジ吸着機構１３６が供給位置に供給されているネジ８００の頭部に接触する高さである。なお、ネジ吸着機構１３６は真空吸引を行っているため、ネジ８００は上方へ吸引され、ネジ８００の頭部の十字穴がビット１３５１と噛み合う。次いで、制御部２０は、直動軸１３３を駆動して、直動軸１３３を原点位置に移動させる。ネジ供給機構１４は、ネジ８００が吸着され取り去られたことを検知すると、次のネジ８００を供給位置に供給する。
【００７３】
制御部２０は、締結済み本数がワーク９００の穴の数と等しければ規定本数のネジを締めたと判断し（ステップＳ２においてＹＥＳ）、ステップＳ１４において、スカラロボット１２を退避させる制御を行なう。具体的には、制御部２０は、スカラロボット１２を上記開始前の退避位置に移動させる制御を行なう。以上により自動組付け装置１によるワーク９００への所定本数のネジ締めが完了する。ネジ締めが完了すると、外部の搬送装置によりワーク９００が搬出される。
【００７４】
図６は、図５のステップＳ６の詳細な処理の流れを示したフローチャートである。図６の制御フローは、組付け部１３がネジ締めドライバ１３５の軸とワーク９００の穴との位置誤差を適切に補正してネジ締めを行なうためのアルゴリズムである。制御部２０は、内部計算のために、変数として、振幅Ｘ１と、推力Ｘ２と，角度Ｘ３と，位相ＰＨＩＸと、位相ＰＨＩＹとを記憶しており、下記の各計算により各々の値を更新する。また、制御部２０は、式（１）〜（１５）と、各々が定数である、アトラクタ座標（Ｘ１１，Ｘ２１）〜（Ｘ１５，Ｘ２５）、アトラクタ値Ｘ３１〜Ｘ３５、判定距離ＤＩＳＧ、制御周期ＣＹＣＣ、振動周期ＣＹＣＳ、閾値である許容力ＦＭＡＸ、および円周率π等を予め記憶している。アトラクタ座標（Ｘ１１，Ｘ２１）〜（Ｘ１５，Ｘ２５）の各々は、押付け力の基準値と、移動の幅の基準値との組で構成される。アトラクタ値Ｘ３１〜Ｘ３５の各々は、移動方向についての基準値である。
【００７５】
図６のフロー開始時点で、制御部２０は、以下の初期化を行なう。制御部２０は、振幅Ｘ１と推力Ｘ２とを、後述するアトラクタＡｔ１の値に合わせて、Ｘ１＝Ｘ１１，Ｘ２＝Ｘ２１に設定する。制御部２０は、角度Ｘ３，位相ＰＨＩＸ，ＰＨＩＹを、それぞれ０に設定する。制御部２０は、位置ＰＸ，ＰＹ、ＰＺを０に設定する。図６のフロー開始時点で、直動軸１３１，１３２は原点位置にあり、ネジ締めドライバ１３５の軸線とワーク９００の穴中心とが所定の誤差範囲内（本実施の形態では±１．５ｍｍ以内）の値だけずれた状態にある。
【００７６】
図６のフロー開始後、ステップＳ１０２において、制御部２０は、ネジ８００の先がワーク９００に接触しているかどうかの判定を行なう。具体的には、制御部２０は、力センサ１３４から力ＦＺを読み出し、所定の閾値ＦＴより大きいか否かを判定する。当該閾値ＦＴは、１．０Ｎであり、予め制御部２０に格納されている。
【００７７】
制御部２０は、力ＦＺが閾値ＦＴより大きい場合に、ネジ８００の先がワーク９００に接触していると判断し（ステップＳ１０２においてＹＥＳ）、ステップＳ１０４において、パラメータＸ１，Ｘ２，Ｘ３の更新を行なう。具体的には、制御部２０は、記憶部２３０に格納している以下の各種パラメータ（パラメータＸ１，Ｘ２，Ｘ３除く）の更新計算を、後述する式（５）〜（１５）で示す手順に従って実行することにより、振幅Ｘ１、推力Ｘ２、角度Ｘ３を更新する。
【００７８】
後述の計算の結果、力センサ１３４からの出力に基づいて、ネジ８００の先がワーク９００の穴に入るにつれて振幅Ｘ１を減少させ、推力Ｘ２を増加させる変化が生じる。これにより、自動組付け装置１は、ネジ８００の先が穴に入っていくと横移動の振幅を狭めつつ押付を強める。このため、自動組付け装置１は、ネジ８００を倒すことなく、ネジ８００の先を穴の中心に精度良く収束させることができる。
【００７９】
逆に、ネジ８００の先がワーク９００の穴に入らない場合は、振幅Ｘ１を増大させ、推力Ｘ２を減少させる変化が生じる。これにより、自動組付け装置１は、ネジ８００の先が穴に入らないと、軽い押付け状態でより広い範囲を探索するため、ワーク９００を傷つけず、かつ大きなずれ量に対しても探索を行なうことができる。
【００８０】
また、角度Ｘ３は、ネジ８００の先がワーク９００の穴に合わされていく間は固定され、ネジ８００の先がワーク９００の穴と長時間合わない場合は、別の角度に変化するように振舞う。これにより、自動組付け装置１は、穴がない方向に探索方位を固定することがなく、効率的に探索を行なうことができる。
【００８１】
ステップＳ１０６において、制御部２０は、ネジ締め開始の条件を満たしたか否かを判断する。具体的には、制御部２０は、ステップＳ１０４にて更新した振幅Ｘ１と推力Ｘ２とが、それぞれ所定の値Ｘ１Ｇおよび所定の値Ｘ２Ｇに十分近いかどうかを、下記の式（１）で算出されるＤＩＦが所定の判定値ＤＩＦＧより小さいか否かで判断する。
【００８２】
【数２】
2012086341.tif 000004
【００８３】
上記ＤＩＦが所定の判定値ＤＩＦＧより小さい場合、すなわち（Ｘ１，Ｘ２）がアトラクタ座標（Ｘ１５，Ｘ２５）に近い場合、制御部２０は、ネジ８００がワーク９００の中心に一致したと判断して、ネジ締め開始の条件を満たしたと判断する。この場合、制御部２０は、処理をステップＳ１０８に進める。
【００８４】
一方、ＤＩＳが所定の判定値ＤＩＦＧより小さくない場合、制御部２０は、（Ｘ１，Ｘ２）がアトラクタ座標（Ｘ１５，Ｘ２５）に近くないと判断し、ネジ締め開始の条件を満たしていないと判断する。この場合、制御部２０は、処理をステップＳ１１８に進める。なお、アトラクタ座標（Ｘ１５，Ｘ２５）は、後述するアトラクタＡｔ５の位置を示している。ステップＳ１１８において、制御部２０は、位相更新の計算を行なう。
【００８５】
図７は、図６のステップＳ１１８の処理の詳細を示したフローチャートである。詳しくは、図７は、位相更新の処理の流れを示したフローチャートである。制御部２０は、図７に示す制御フローによって、位相ＰＨＩＸおよび位相ＰＨＩＹを更新する。位相ＰＨＩＸ，ＰＨＩＹは、ラジアン[rad]の単位で表される値であり、後述のＳ５５において振動動作を生成するための入力値である。位相ＰＨＩＸとＰＨＩＹとの更新処理は実質的に同じであるため、以下では両者を代表して、ＰＨＩＸの更新処理について説明する。
【００８６】
ステップＳ２０２において、制御部２０は、反力が大きいかの判定を行なう。具体的には、制御部２０は、前回の移動量ＭＸと最新の力センサ出力ＦＸとの積を計算し、積の符号が負の場合であって、かつＦＸの絶対値が所定の許容力ＦＭＡＸよりも大きい場合に、反力が大きいと判定する。この場合、制御部２０は、処理をステップＳ２０４に進める。なお、積の符号が負となるのは、移動方向と力の向きとが逆の場合である。積の符号が負でないか、またはＦＸの絶対値が許容力ＦＭＡＸよりも小さい場合、制御部２０は、反力が大きくないと判定する。この場合、制御部２０は、処理をステップＳ２０６に進める。ステップＳ２０６において、制御部２０は、以下の式（２）による位相進めの計算を行なう。
【００８７】
ＰＨＩＸ＝ＰＨＩＸ＋２π/（ＣＹＣＳ／ＣＹＣＣ）  …  （２）
ＣＹＣＳは、ステップＳ１２０により出力する振動動作の周期である。本実施の形態においては、ＣＹＣＳ＝３００［ｍｓｅｃ］である。制御部２０は、制御周期ＣＹＣＣ毎に上記計算を行なうので、ＰＨＩＸは周期ＣＹＣＳの間に０から２πまで変化する。さらに制御部２０は、計算後のＰＨＩＸが２πより大きいか否かを判断し、ＰＨＩＸが２πより大きい場合にはＰＨＩＸを０にクリアする。このような処理により、ＰＨＩＸは０〜２πの間で繰返し増加する。なお、本実施の形態では、制御周期ＣＹＣＣは、２［ｍｓｅｃ］である。このように、位相ＰＨＩＸは、制御周期ＣＹＣＣ毎に予め定められた規則に基づき変化する。具体的には、２［ｍｓｅｃ］毎に、ＰＨＩＸは、π／７５だけ進むことになる。
【００８８】
ステップＳ２０４において、制御部２０は、以下の位相リセットの処理を行なう。制御部２０は、ＭＸが０より小さい場合、ＰＨＩＸを３π／２に書き換える。制御部２０は、ＭＸが０より大きい場合、ＰＨＩＸをπ／２に書き換える。当該書き換え処理により、次回のステップＳ１２０における移動量の算出において、ネジ８００の移動方向が反転されて直前の移動と反対の方向にネジ８００が進むことになる。以上により、ＰＨＩＸの位相更新が完了する。なお、ＰＨＩＹについては上記処理でＰＨＩＸをＰＨＩＹに、ＦＸをＦＹに置き換えた処理が行われる。
【００８９】
許容力ＦＭＡＸは、ネジ吸着機構１３６が吸着しているネジ８００の先端を横方向に押したときに、吸着状態を保てなくなってネジ８００が落下するときの力の大きさである。なお、許容力ＦＭＡＸは、予め実験により求めた値である。以上の処理により、ネジ８００に対してネジ吸着機構１３６の吸着力を超えるような横方向の力を加えることが防止され、ネジの外れが防止できる。それゆえ、ネジ８００の組付け処理の信頼性を高めることができる。
【００９０】
再度、図６を参照して、ステップＳ１２０において、制御部２０は、探索用の移動量の計算を行なう。具体的には、制御部２０の設定部２２０は、直動軸１３１，１３２，１３３の移動量ＭＸ，ＭＹ，ＭＺを以下の式（３．１），（３．２），（３．３）により算出する。
【００９１】
ＭＸ＝Ｘ１×ｃｏｓ（ＰＨＩＸ）×ｃｏｓ（Ｘ３）  …  （３．１）
ＭＹ＝Ｘ１× ｃｏｓ（ＰＨＩＹ）×ｓｉｎ（Ｘ３）  …  （３．２）
ＭＺ＝ＧＺ×（ＦＺ−Ｘ２）  …  （３．３）
ＧＺは、Ｚ方向の力フィードバックのゲイン定数である。数式（３．１），（３．２）により、直動軸１３１および直動軸１３２は、先端に取り付けられたネジ締めドライバ１３５を、振幅Ｘ１、水平面内の角度Ｘ３，周期ＣＹＣＳの正弦波型の速度（２ｍｓｅｃ当たりの移動量）で駆動する。
【００９２】
このように、自動組付け装置１では、設定部２２０が、移動の幅を示す変数（Ｘ１×ｃｏｓ（Ｘ３），Ｘ１×ｓｉｎ（Ｘ３））に予め定められた位相（ＰＨＩＸ，ＰＨＩＹ）を有する正弦関数を乗じた値を、移動の量（ＭＸ，ＭＹ）として設定する。なお、正弦関数の代わりに、余弦関数を乗じてもよい。
【００９３】
なお、角度Ｘ３が更新されない間は、ネジ８００は、各回の移動において、角度Ｘ３で規定される方向に、順次位置を更新しつつ移動することになる。ただし、ステップＳ２０４において位相ＰＨＩＸまたは位相ＰＨＩＹがリセットされた場合には、速度（２ｍｓｅｃ当たりの移動量）を示すベクトルの向きが前回とは反対向きとなる。直動軸１３３は、ネジ８００の先からの反力ＦＺを、推力Ｘ２に保って押付けるように動作する。
【００９４】
さらに、制御部２０は、範囲制限のための計算を行なう。具体的に説明すると、以下のとおりである。設定部２２０は、ネジ８００の組込み方向に垂直な方向における移動によって、ネジ８００が、ネジ８００がワーク９００に最初に接触した位置から予め定められた距離以上離れたか否かを判断する。設定部２２０は、予め定められた距離以上離れたと判断すると、最初に接触した位置から当該予め定められた距離未満の範囲内にネジ８００が位置するように、移動の方向および移動の量を設定する。
【００９５】
さらに詳しく説明すると、以下のとおりである、制御部２０は、以下の式（３．４）と式（３．５）とにより、ＰＸとＰＹとを総合した、開始位置からの距離が所定の閾値ＤＩＳＲを越えると、開始位置ＰＸ＝０，ＰＹ＝０に戻る方向への移動量ＭＲを加える。
【００９６】
【数３】
2012086341.tif 000005
【００９７】
【数４】
2012086341.tif 000006
【００９８】
式（３．４）の右辺の第２項において、ＰＸ／｜ＰＸ｜はＰＸの符号を表し、右辺の第２項全体はＰＸが正の時は負、ＰＸが負の時は正の値となる。Ｓはステップ関数であり、Ｓ（ｘ）はｘ＜０において０、ｘ≧０において１を出力する。したがって、式（３．４）および式（３．５）におけるステップ関数の項は、ＰＸとＰＹとを総合した距離がＤＩＳＲ以上のときに１、当該距離がＤＩＳＲ未満のとき０となる。このため、右辺の第２項全体は、距離がＤＩＳＲ以上のときだけ、移動量ＭＸ，ＭＹを所定量であるＭＲだけ小さくする。つまり、ＰＸおよびＰＹを０（開始位置）に近づける作用をする。このような処理により、ネジ８００の先の位置ＰＸ、ＰＹが初期値０から際限なく離れてしまうことを防止できる。それゆえ、穴の探索失敗が防止されるとともに、所定誤差内にある穴を探索する効率が向上する。なお、閾値ＤＩＳＲは１．５ｍｍである。
【００９９】
制御部２０は、移動量ＭＸ，ＭＹ，ＭＺを、それぞれ記憶部２３０に格納している目標位置ＰＸ，ＰＹ，ＰＺに加算することにより、目標位置ＰＸ，ＰＹ，ＰＺを更新する。制御部２０は、算出した移動量ＭＸ，ＭＹ，ＭＺを、組付け制御部２２に指令し、これにより直動軸１３１，１３２，１３３が駆動する。その後、制御部２０は、所定の制御周期ＣＹＣＣだけ待機した後、ステップＳ１０２に再度進む。つまり、移動部２６０は、予め定められた周期（制御周期ＣＹＣＣ）毎に移動を実行することになる。
【０１００】
制御部２０は、ネジ締め開始の条件を満たしたと判断した場合（ステップＳ１０６においてＹＥＳ）、ステップＳ１０８において、ネジ締め開始処理を行なう。具体的には、制御部２０は、ネジ締めドライバ１３５に対して締結開始の指令を送る。当該指令により、ネジ締めドライバ１３５は、ビット１３５１の回転を開始し、トルク管理に基づいたネジ締め制御を行なう。
【０１０１】
ステップＳ１１０において、制御部２０は、ネジ締め用の移動量の計算を行なう。具体的には、制御部２０は、以下の力フィードバック計算による移動量ＭＸ，ＭＹ，ＭＺの算出を行なう。
【０１０２】
ＭＸ＝ＧＸ×ＦＸ  …  （４．１）
ＭＹ＝ＧＹ×ＦＹ  …  （４．２）
ＭＺ＝ＧＺ×（ＦＺ−ＦＺＦ）  …  （４．３）
ＧＸ，ＧＹ，ＧＺは、それぞれＸ，Ｙ，Ｚ方向の力フィードバックのゲイン定数である。推力ＦＺＦは、締結用の押付け力であり定数である。本発明において推力ＦＺＦは、２０[Ｎ]である。ＧＸ，ＧＹ，ＧＺおよびＦＺＦは、予め記憶部２３０に格納されている。制御部２０は、算出した移動量ＭＸ，ＭＹ，ＭＺに基づく指令を、組付け制御部２２に送信する。組付け制御部２２は、当該指令に基づき、直動軸１３１，１３２，１３３を駆動させる。制御部２０は、移動量ＭＸ，ＭＹ，ＭＺを、それぞれ記憶部２３０に記憶している目標位置ＰＸ，ＰＹ，ＰＺに加算し、目標位置ＰＸ，ＰＹ，ＰＺを更新する。その後、制御部２０は、所定の制御周期ＣＹＣＣだけ待機した後、ステップＳ１１２に処理を進める。
【０１０３】
ステップＳ１１２において、制御部２０は、ネジ締め中止判定を行なう。制御部２０は、ネジ締めドライバ１３５の出力を読出し、エラー停止またはタイムオーバー出力が出されている場合には、ネジ締め中止と判断し（ステップＳ１１２においてＹＥＳ）、ステップＳ１０２に処理を進める。これにより、ネジ締め開始後に異常が発覚した場合でも、再度探索動作からやり直すこととなり、ネジ締めの信頼性が高められる。
【０１０４】
制御部２０は、ネジ締め中止と判断しなかった場合、ステップＳ１１４において、ネジ締め完了判定を行なう。制御部２０は、ネジ締めドライバ１３５の出力を読出し、完了信号がオン状態か否かを判断する。完了信号がオン状態（フラグが立っている状態）の場合、制御部２０は、ネジ締め完了と判断し（ステップＳ１１４においてＹＥＳ）、図６のネジ締めフローを完了する。制御部２０は、完了信号がオフ状態（フラグが立っていない状態）の場合、ネジ締め完了と判断せず（ステップＳ１１４においてＮＯ）、処理をステップＳ１１０に進める。
【０１０５】
制御部２０は、力ＦＺが閾値ＦＴより大きくない場合に、ネジ８００の先がワーク９００に接触していないと判断し（ステップＳ１０２においてＮＯ）、ステップＳ１１６において、降下用の移動量計算を行なう。具体的には、制御部２０は、ＭＸ＝０、ＭＹ＝０とする。すなわち、制御部２０は、直動軸１３１，１３２を移動させない。また、制御部２０は、ＭＺ＝−ＺＤとする。すなわち、制御部２０は、直動軸１３３を一定量ＺＤだけ降下させる制御を行なう。制御部２０は、算出した移動量ＭＸ，ＭＹ，ＭＺに基づく指令を、組付け制御部２２に送信する。組付け制御部２２は、当該指令に基づき、直動軸１３１，１３２，１３３を駆動させる。
【０１０６】
制御部２０は、移動量ＭＸ，ＭＹ，ＭＺを、それぞれ記憶部２３０に格納している目標位置ＰＸ，ＰＹ，ＰＺに加算し、目標位置ＰＸ，ＰＹ，ＰＺを更新する。その後、制御部２０は、制御周期ＣＹＣＣだけ待機した後、ステップＳ１０２に再度進む。ネジ８００の先がワーク９００に接触していない場合に直動軸１３１および１３２の移動量を０とする理由は、ネジ８００の倒れを防止するためである。
【０１０７】
図８は、ネジ吸着機構１３６に吸着したネジ８００をワーク９００に組付ける作業の遷移を示した図である。図８を参照して、ネジ８００の先端部８０２（以下、「ネジ先８０２」とも称する）がワーク９００の穴７００に入りかけた状態で、ネジ８００を図の横方向に移動させると、ネジ８００の先側面がワーク９００に押される。このときネジ８００の先下面がワーク９００に接触していない状態ではネジ８００をワーク９００に垂直に保とうとする反力ＦＸおよびＦＹが弱い。反力ＦＸおよびＦＹが弱いと、ステップＳ１１８における力制限が正しく作用せず、ネジ８００が倒れて作業が失敗する虞がある。
【０１０８】
また、ＺＤは、高速化のため、ワーク９００の衝撃許容範囲でなるべく大きな値を設定する。ＺＤの実際の設定方法としては、力センサ１３４で衝撃量を見ながら、ＺＤを増加させて繰り返し下降動作を行い、力ＦＺのピーク値がワーク９００の許容値程度になったところでＺＤを確定する。
【０１０９】
＜パラメータＸ１，Ｘ２，Ｘ３の更新処理の詳細＞
以下では、ステップＳ１０４におけるパラメータ更新の詳細を説明する。パラメータ更新は、分子のブラウン運動等を記述するランジュバン方程式を元に拡張した式（５）および式（１２）を利用する。具体的には、パラメータ更新は、振幅Ｘ１、推力Ｘ２および角度Ｘ３を、ランダム性と基準値（アトラクタ座標）への収束性との複合作用により、ワーク位置および反力情報に基づいて変化させる計算である。式（５）および式（１２）の計算に必要な中間計算値は、後述の式（６）〜（１１）および式（１３）〜（１５）により、式（５）および式（１２）の計算の前に算出される。振幅Ｘ１および推力Ｘ２は、下記の式（５）により更新される。
【０１１０】
（Ｘ１，Ｘ２）＝（Ｘ１，Ｘ２）＋ｄＦ（Ｘ１，Ｘ２）×Ａｃｔ＋ＵＧ×（Ｕ１，Ｕ２）＋（ＢＧ１，ＢＧ２）×（Ａｃｔ−Ａｃｔ０）  …  （５）
式（５）におけるｄＦ（Ｘ１，Ｘ２）は後述する式（６）〜（８）で定義される関数である。Ａｃｔは、後述する式（９）で算出されるアクティビティ値である。Ｕ１、Ｕ２は、正規分布パターンを持つノイズ生成器から生成されるノイズ値である。Ｕ１およびＵ２は、期待値０、標準偏差１の乱数として生成される。ノイズゲインＵＧは、ノイズＵ１，Ｕ２の影響の大きさを決める定数であり、予め記憶部２３０に格納されている。
【０１１１】
なお、式（１７）に関する説明において述べたように、Ａｃｔは、評価の結果を表すパラメータ（第１の変数）である。また、ＵＧ×（Ｕ１，Ｕ２）は、パラメータＡｃｔの増減に相反して増減するノイズμを表す項である。ｄＦ（Ｘ１，Ｘ２）は、アトラクタを有する制御関数ｆ（Ｐ）である。
【０１１２】
式（５）に示したゆらぎ方程式（第１のゆらぎ方程式）は、右辺の第４項として、Ａｃｔと予め定められた定数Ａｃｔ０との差分を含む項をさらに備える。ＢＧ１、ＢＧ２は、バイアスゲイン定数である。Ａｃｔ０は、アクティビティＡｃｔの基底値となる定数である。式（５）の右辺の第４項は、アクティビティＡｃｔの大きさによって作業の進む方向または戻る方向に、振幅Ｘ１および推力Ｘ２を変化させる作用をする。具体的には、本実施の形態においては、ＢＧ１＝−０．０６、ＢＧ２＝０．０６、Ａｃｔ０＝１．０である。これにより、アクティビティＡｃｔがＡｃｔ０より大きいときには、振幅Ｘ１を減少させ、推力Ｘ２を増加させる変化が加わる。逆に、アクティビティＡｃｔがＡｃｔ０より小さいときには、振幅Ｘ１を増加させ、推力Ｘ２を減少させる変化が加わる。
【０１１３】
振幅Ｘ１（第２の変数）について述べると、設定部２２０は、ＡｃｔがＡｃｔ０よりも大きい場合には、振幅Ｘ１を小さく設定し、ＡｃｔがＡｃｔ０よりも小さい場合には、振幅Ｘ１を大きく設定する。
【０１１４】
次に、式（５）における関数ｄＦ（Ｘ１，Ｘ２）について説明する。ｄＦ（Ｘ１，Ｘ２）は、以下の式（６）に示すように、関数Ｆ（Ｘ１，Ｘ２）を、Ｘ１方向およびＸ２方向に微分した値からなるベクトルを出力する関数である。
【０１１５】
【数５】
2012086341.tif 000007
【０１１６】
Ｆ（Ｘ１，Ｘ２）は、Ｘ１，Ｘ２で構成する２次元空間中において、以下の予め設定されたｉ個のアトラクタ座標（Ｘ１１，Ｘ２１）〜（Ｘ１ｉ，Ｘ２ｉ）のそれぞれを中心とするガウス分布Ｇｎ（Ｘ１，Ｘ２）を重ね合わせた、混合ガウス関数である。
【０１１７】
Ｆ（Ｘ１，Ｘ２）＝Ｇ１（Ｘ１，Ｘ２）＋Ｇ２（Ｘ１，Ｘ２）＋  …  ＋Ｇｉ（Ｘ１，Ｘ２）  …  （７）
Ｇｎ（Ｘ１，Ｘ２）＝ｅｘｐ（−０．７５×（（Ｘ１−Ｘ１ｎ）＾２＋（Ｘ２−Ｘ２ｎ）＾２）））  …  （８）
式（８）において、ＧｎおよびＸ１ｎ，Ｘ２ｎ中のｎは１〜ｉのどれかの整数である。本実施の形態では、アトラクタ数ｉ＝５であり、アトラクタＡｔ１〜Ａｔ５が存在する。アトラクタＡｔ１〜Ａｔ５の座標（Ｘ１１，Ｘ２１）〜（Ｘ１５，Ｘ２５）は、記憶部２３０に予め格納されている。なお、“＾（ハットマーク）”は、べき乗計算を示す演算子である。
【０１１８】
図９は、関数Ｆ（Ｘ１，Ｘ２）の出力を、Ｘ１，Ｘ２平面上の高さとしてプロットした曲面をグラフ化した図である。図９（ａ）は、Ｘ１，Ｘ２平面を垂直に見たときの等高線図であり、図９（ｂ）はＸ１，Ｘ２方向に等間隔でＦ（Ｘ１，Ｘ２）をプロットした斜視図である。図９を参照して、Ｆ（Ｘ１，Ｘ２）は、Ａｔ１（Ｘ１１，Ｘ２１）〜Ａｔ５（Ｘ１５，Ｘ２５）をそれぞれ中心とする５個のガウス分布の凹み形状を重ね合わせた形状となっている。式（２）のｄＦ（Ｘ１，Ｘ２）は、図９における曲面上の位置（Ｘ１，Ｘ２）における傾斜量を表している。すなわち、式（５）におけるｄＦ（Ｘ１，Ｘ２）×Ａｃｔの項の作用は、図９の斜面によるパラメータＸ１，Ｘ２の移動として表現されている。当該項は、Ｘ１，Ｘ２が最寄のアトラクタ座標（Ｘ１ｎ，Ｘ２ｎ）に近づくように作用し、その作用（傾斜）はアクティビティＡｃｔによって増減する。
【０１１９】
アトラクタ座標（Ｘ１１，Ｘ２１）〜（Ｘ１５，Ｘ２５）は、人がネジ締め作業を行なう際の状態変化に合わせた配置されている。人は、まず弱い推力でネジ８００をワーク９００に押し当てて、横に広い範囲で動かしてネジ先８０２を穴７００に入れる。ネジ８００が穴７００に入ると人はネジ８００の推力を強め、狭い範囲でネジを動かして穴７００の中心とネジ先８０２を一致させる。これに相当するように、アトラクタ位置（Ｘ１１，Ｘ２１）は、大きい振幅と小さい推力との座標を持ち、アトラクタ位置（Ｘ１５，Ｘ２５）は、小さい振幅と大きい推力との座標を持ち、残りのアトラクタ座標（Ｘ１２，Ｘ２２）〜（Ｘ１４，Ｘ２４）は、上記２点間を概ね等間隔に補間するように配置されている。具体的な（Ｘ１１，Ｘ２１）〜（Ｘ１５，Ｘ２５）の値のうちＸ２１，Ｘ２５は、人のネジ締め作業を力センサによって測定した値を元に設定する。また、Ｘ１１は、装置の仕様に基づいて決定すればよい。Ｘ１５は、Ｘ２５以上の圧力が加わった場合における実際の移動量に基づいて決定すればよい。
【０１２０】
アクティビティＡｃｔは、より具体的には、作業が進展しているかどうかを評価する評価関数であり、以下の式（９）で記述される。
【０１２１】
Ａｃｔ＝Ｋ×ＶＺ＋Ｓ（ＶＦ−ＶＦＧ）×ＢＯ  …  （９）
式（９）の右辺第１項において、Ｋは定数である。ＶＺは、直近の過去における位置ＰＺの変動の大きさを評価する関数であり、以下の式（１０．１）で定義される。
【０１２２】
ＶＺ＝ＭＥ２Ｚ−ＭＥＺ＾２  …  （１０．１）
ＭＥＺは、位置ＰＺの指数移動平均である。ＭＥ２Ｚは、ＰＺの２乗の指数移動平均である。ＭＥＺおよびＭＥ２Ｚは、忘却係数λＺに基づいて、それぞれ以下の式（１０．２），（１０．３）により更新される。
【０１２３】
ＭＥＺ＝λＺ×ＭＥＺ＋（１−λＺ）×ＰＺ  …  （１０．２）
ＭＥ２Ｚ＝λＺ×ＭＥ２Ｚ＋（１−λＺ）×ＰＺ＾２  …  （１０．３）
以上の式に基づくＶＺは、位置ＰＺの分散を表す。ＰＺが時間とともに少しずつ変動する場合には、ＶＺは小さな値をとり、短時間の内に上下に大きく変動した場合には、ＶＺは増大する。
【０１２４】
式（９）の右辺第２項において、Ｓはステップ関数であり、Ｓ（ｘ）はｘ＜０において０、ｘ≧０において１を出力する。閾値ＶＦＧおよびボーナス量ＢＯは、定数である。力変動ＶＦは、横方向における力の変動の激しさを評価した値であり、以下の式（１１．１）で定義される。したがって、式（９）の右辺第２項は、ＶＦ≧ＶＦＧのときＢＯを返し、ＶＦ＜ＶＦＧのとき０を返す。これにより、横方向の力の変動が大きいときだけ、Ａｃｔはボーナス量ＢＯだけ大きな値をとる。
【０１２５】
【数６】
2012086341.tif 000008
【０１２６】
ＭＥＸは、反力ＦＸの指数移動平均である。ＭＥ２Ｘは、反力ＦＸの２乗の指数移動平均である。ＭＥＹは、反力ＦＹの指数移動平均である。ＭＥ２Ｙは、反力ＦＹの２乗の指数移動平均である。ＭＥＸ，ＭＥ２Ｘ，ＭＥＹ，ＭＥ２Ｙは、忘却係数λＸＹに基づいて、それぞれ以下の式（１１．２），（１１．３），（１１．４），（１１．５）により更新される。
【０１２７】
ＭＥＸ＝λＸＹ×ＭＥＸ＋（１−λＸＹ）×ＦＸ  …  （１１．２）
ＭＥ２Ｘ＝λＸＹ×ＭＥ２Ｘ＋（１−λＸＹ）×ＦＸ＾２  …  （１１．３）
ＭＥＹ＝λＸＹ×ＭＥＹ＋（１−λＸＹ）×ＦＹ  …  （１１．４）
ＭＥ２Ｙ＝λＸＹ×ＭＥ２Ｙ＋（１−λＸＹ）×ＦＹ＾２  …  （１１．５）
以上の構成による式（９）の右辺第２項は、ネジ８００と穴７００との芯出しが完了した時にアクティビティＡｃｔを増大させるための項である。ネジ８００がワーク９００の穴底に一致すると、ＸおよびＹ方向に移動させようとしたときの力変動ＶＦが増加する。この力変動ＶＦを予め測定しておき、軸が一致したときの力変動ＶＦよりやや低い値に、閾値ＶＦＧを設定しておく。閾値ＶＦＧは、予め定めて記憶部２３０に格納されている。軸が一致すると、ＶＦ≧ＶＦＧとなるため、アクティビティＡｃｔが増大し内部状態（Ｘ１，Ｘ２）がアトラクタＡｔ５に向かって素早く変化する。この結果、芯出しがされると、内部状態（Ｘ１，Ｘ２）がアトラクタ値（Ｘ１５，Ｘ２５）に接近して、ステップＳ１０６においてネジ締め開始の条件を満たした（ＹＥＳ）と判断される。
【０１２８】
さらに、制御部２０は、算出したＡｃｔに対して、以下の丸め処理を行なう。制御部２０は、Ａｃｔが所定の上限値ＡｃｔＭＡＸより大きいか否かを判断し、Ａｃｔ＞ＡｃｔＭＡＸであった場合、Ａｃｔ＝ＡｃｔＭＡＸの代入処理を行なう。制御部２０は、Ａｃｔが所定の上限値ＡｃｔＭＩＮより小さいか否かを判断し、Ａｃｔ＜ＡｃｔＭＩＮであった場合には、Ａｃｔ＝ＡｃｔＭＩＮの代入処理を行なう。本実施の形態では、ＡｃｔＭＡＸ＝２．０、ＡｃｔＭＩＮ＝０．９であり、これらの値は予め記憶部２３０に格納されている。
【０１２９】
以上により、式（５）に代入されるアクティビティＡｃｔが算出される。アクティビティＡｃｔは、ワーク９００の上面に沿って動こうとするネジ先８０２の、位置および力変動の激しさを示す指標となる。
【０１３０】
また、角度Ｘ３は、以下の式（１２）に示すゆらぎ方程式（第２のゆらぎ方程式）により更新される。なお、Ｆ’（Ｘ３）は、Ｆ（Ｘ３）の微分を表わすものではない。上述したＦ（Ｘ１，Ｘ２）と異なる関数であることを示すために、記号「’」を用いている。
【０１３１】
Ｘ３＝Ｘ３＋ｄＦ’（Ｘ３）×Ａｃｔ＋ＵＧ３×Ｕ３  …  （１２）
ｄＦ’（Ｘ３）は、関数Ｆ’（Ｘ３）を、Ｘ３方向に微分する関数である。Ｕ３は、期待値０、標準偏差１のノイズ生成器から生成される乱数である。ＵＧ３は、ノイズＵ３の影響度を決める定数であり、予め記憶部２３０に格納されている。
【０１３２】
【数７】
2012086341.tif 000009
【０１３３】
Ｆ’（Ｘ３）は、以下の予め設定されたｉ個のアトラクタ値Ｘ３１〜Ｘ３ｉのそれぞれを中心とするガウス分布Ｇ’ｎ（Ｘ３）を重ね合わせた、混合ガウス関数である。
【０１３４】
Ｆ’（Ｘ３）＝Ｇ’１（Ｘ３）＋Ｇ’２（Ｘ３）＋  …  ＋Ｇ’ｉ（Ｘ３）  …  （１４）
Ｇ’ｎ（Ｘ３）＝ｅｘｐ（−０．７５×（Ｘ３−Ｘ３ｎ）＾２）  …  （１５）
本実施の形態においては、ｉ＝５であり、５個のアトラクタ値Ｘ３１〜Ｘ３５が存在する。アトラクタ値Ｘ３１〜Ｘ３５は、０〜２πを５等分するように配置されており、Ｘ３１＝０、Ｘ３２＝２π／５、Ｘ３３＝４π／５、Ｘ３４＝６π／５、Ｘ３５＝８π／５、である。以上の計算の結果、角度Ｘ３は、以下のように振舞う。
【０１３５】
ネジ先８０２がワーク９００の穴に入る方向に進んでアクティビティＡｃｔが大きいとき、角度Ｘ３は、アトラクタ値Ｘ３１〜Ｘ３５のうち一番近い値に引き込まれてほぼ一定の値を保つ。ネジ先８０２がワーク９００の穴７００に一致せずアクティビティＡｃｔが小さいとき、角度Ｘ３は、ノイズＵ３の影響を大きく受けて０〜２πの間でランダムに変化する。このため、ネジ先８０２がワーク９００の穴７００に入りにくい場合には、角度Ｘ３が変化して、より広い範囲を探そうとする挙動が発生する。
【０１３６】
＜ネジ締め動作のまとめ＞
次に、図６に示したフローによるネジ締め動作を、図１０および図１１を用いて説明する。
【０１３７】
図１０は、ネジ締めドライバ１３５の先端周辺（つまり、ネジ吸着機構１３６が設けられている箇所）を表す図である。より詳しくは、図１０は、ワーク９００へのネジ８００の組付け作業の遷移を示した図である。
【０１３８】
図１１は、パラメータの時系列変化をグラフ化した図である。図１１は、横軸が時間、縦軸が各パラメータの単位で描かれている。図１１において、アクティビティＡｃｔ、振幅Ｘ１、推力Ｘ２、および位置ＰＺは左軸でプロットしており、下端が０である。一方、力ＦＸおよび位置ＰＸは、右軸でプロットしており、グラフ右側に記した０位置が０である。力ＦＺと位置ＰＹとは、それぞれ力ＦＸ、位置ＰＸと同様の挙動を示すが、図１１においては示していない。図１１におけるＦＸの０線（右端縦軸）の上下の点線が、ステップＳ１１８における処理で用いる許容力ＦＭＡＸを表す。
【０１３９】
まず、ネジ先８０２が空中にあるときはステップＳ１１６の計算により、制御部２０は、ネジ８００を高速で降下させる。具体的には、制御部２０は、ネジ８００の組込み方向における移動の量（制御周期ＣＹＣＣ毎の移動量）をネジ８００がワーク９００に接触しているときの移動の量よりも増加させる。
【０１４０】
ネジ先８０２が空中にあるのは、ネジ締めフロー開始直後（図１０（ａ））、およびステップＳ１０４，１０６，１１８，１２０による探索移動によってネジ先８０２が穴７００に入るとき（図１０（ｃ））である。図１１においては、図１０(ｃ)は時間が短いため識別できない。
【０１４１】
ネジ先８０２がワーク９００に接触すると、制御部２０は、ステップＳ１０４，１０６，１１８，１２０の計算によって、ネジ先８０２をワーク９００に押付けつつ横に滑らせて、穴７００の探索を行なう（図１０（ｂ））。探索動作は、「反力測定」→「アクティビティ算出（ステップＳ１０４）」→「内部状態（Ｘ１，Ｘ２，Ｘ３、他）更新（ステップＳ１０４）」→「作業状態判断（ステップＳ１０６）」→「ネジ８００の移動（ステップＳ１２０）」→「反力測定」→ … の繰り返しにより実行される。
【０１４２】
位置ＰＸ，ＰＹは正弦波形状で駆動され、摩擦力により反対方向に力ＦＸ、ＦＹが発生する。ＦＸの絶対値がＦＭＡＸより大きく、かつＰＸの移動と反対方向に発生した場合（図１１におけるＲＥＳＥＴ）、ステップＳ１１８の処理によりＰＸの移動方向が反転され、ネジ８００は逆方向に移動し始める。制御部２０は、位置ＰＺおよび反力ＦＸ，ＦＹの変化に基づきステップＳ１０４において内部状態を変化させ、始めは弱い押付で広い範囲を探し、穴７００に入るにつれて推力Ｘ２を強く、かつ振幅Ｘ１を狭くしていく。
【０１４３】
ネジ先８０２がワーク９００の穴７００に入るとネジ８００の位置が拘束されるため、ステップＳ１２０による振動動作を行った際に位置ＰＺの変動が激しくなる。このため、式（９）によって、アクティビティＡｃｔが増加する。アクティビティＡｃｔが増加すると、式（５）にて振幅Ｘ１が減少し、推力Ｘ２が増加していく。
【０１４４】
アクティビティＡｃｔが１よりも大きな値をとり続けると、パラメータ（Ｘ１，Ｘ２）は、（Ｘ１１，Ｘ２１）から離れ、（Ｘ１５，Ｘ２５）に向かって遷移する。さらに、ネジ先８０２が穴７００の底に一致した状態（図１０（ｄ））になると、式（９）におけるＶＦが増加してＶＦＧよりも大きくなり、式（９）の右辺第２項が０からＢＯに変化する。この様子は、図１１におけるアクティビティＡｃｔの階段状の変化として、探索動作の終了直前に現れている。
【０１４５】
式（９）の右辺第２項がＢＯに変化することに基づくアクティビティＡｃｔの増加によって、パラメータ（Ｘ１，Ｘ２）が（Ｘ１５，Ｘ２５）に向かう変化が加速される。パラメータ（Ｘ１，Ｘ２）が（Ｘ１５，Ｘ２５）に十分近い状態になると、制御部２０は、ステップＳ１０６においてネジ８００がワーク９００の穴に一致したと判断し、ネジ締め開始の条件を満たした（ステップＳ１０６においてＹＥＳ）と判断する。これにより、ステップＳ１０８において、ネジ締めが開始される。制御部２０は、ネジ締めを開始させると、ネジ締めの中断または完了までネジ締めを続行させる。
【０１４６】
以上の構成により、以下の特徴を有する自動組付け装置１が実現される。
・自動組付け装置１は、ネジ８００の半径程度までの誤差に対して、ネジ先８０２を動かして穴７００の位置を探索する。自動組付け装置１は、探索が完了した後にネジ締めを行なう。したがって、ネジ締めの失敗が少なく、かつ高信頼のネジ締め装置が実現できる。
【０１４７】
・自動組付け装置１は、反力と位置変動とを元に算出した作業の進行度の評価（アクティビティ）が低い場合にランダム性を増加させ、水平移動の振幅を増加させて探索を行なう。それゆえ、自動組付け装置１は、ネジ８００と穴７００との初期ずれ量が未知の状況において、徐々に範囲を広げて探索を行なうことができる。したがって、探自動組付け装置１は、探索失敗を極力減らしてネジ締めを達成できる。また、自動組付け装置１は、ネジ８００と穴７００との初期ずれ量が小さい場合には、反力と位置の変動とが増加してアクティビティを増加させ、パラメータが振幅を減少させ推力を増す方向（図９で左上方向）に変化させる。これにより、自動組付け装置１は、探索を収束させ、素早くネジ締結を開始する。それゆえ、自動組付け装置１は、素早く探索を完了してネジ締めを行なうことができる。さらに、図１６に示すバリ９９０や局所的に高い摩擦力が生じる箇所等がある場合にも、制御部２０の評価部２１０の動作によって、押付け力を下げ、かつ横移動幅を広げて探索できる。それゆえ、ネジ８００は、バリ９９０や局所的に高い摩擦力が生じる箇所を乗越えるか、あるいは回り込んで穴７００に到達ことができる。したがって、自動組付け装置１は、探索の信頼性を向上できる。
【０１４８】
・探索中にネジ先８０２が穴７００から外れた場合、反力が低下することによって、アクティビティが低下する。このため、パラメータは、振幅を増加させ、かつ推力を減らす方向（図９で右下方向）に変化する。それゆえ、自動組付け装置１は、自動的に広域の探索に再度移行するため、さらに信頼性が高められる。
【０１４９】
・自動組付け装置１は、ネジ先８０２が穴７００に入ったか否かを反力の上昇に基づいて判定するので、画像等による非接触の方式と比べて誤検出が少ない。また、自動組付け装置１は、ネジ８００の挿入と並行して、探索およびフローに示した判定処理を行なう。それゆえ、自動組付け装置１は、測定時間が増加することなく、高速な組付け処理を実現できる。
【０１５０】
・自動組付け装置１は、ネジ８００がワーク９００と接触することによりネジ８００が倒れかけた場合に、ゴム部材１３６１を備えたネジ吸着機構１３６によって、ネジ８００を垂直に戻す反力を発生させる。それゆえ、自動組付け装置１は、ネジ倒れによる組付けの失敗を防止できる。また、自動組付け装置１は、力センサ１３４によって、ネジ８００が倒れかけている状態を正確に認識することができる。
【０１５１】
・自動組付け装置１は、横方向に過大な抗力を受けた場合に抗力の方向に移動する。それゆえ、自動組付け装置１は、探索移動中にネジ８００を倒すことがない。このため、自動組付け装置１は、信頼性が高い。
【０１５２】
・自動組付け装置１は、ネジ先８０２がワーク９００に押付けられていないときには、ネジ８００を横方向に動かさない。それゆえ、自動組付け装置１は、ネジ８００を倒すことがない。このため、自動組付け装置１は、信頼性が高い。また、自動組付け装置１は、ネジ先８０２がワーク９００に押付けられていないときには、ネジ８００を高速で下降させる。それゆえ、自動組付け装置１は、作業時間を短縮できる。このとき、ネジ締めドライバ１３５内の衝撃緩和機構によってワーク９００の衝撃を緩和するため、自動組付け装置１は、ワーク９００を傷つけることがない。
【０１５３】
・自動組付け装置１は、ネジ先８０２の位置が開始位置から所定距離以上離れた場合には、ネジ８００の位置を戻す作用を有する。それゆえ、自動組付け装置１は、探索により際限なく移動することがない。したがって、自動組付け装置１は、トラブルを起こすことがなく、かつ開始位置近傍を効率よく探索することができる。
【０１５４】
＜変形例＞
上述した自動組付け装置１の一部を変更して、以下のような構成とすることも可能である。なお、以下では、自動組付け装置１の一部を変更した自動組付け装置を、説明の便宜上、「自動組付け装置Ｍ」と称し、上述した自動組付け装置１と区別する。
【０１５５】
図１２は、自動組付け装置Ｍの一部の断面と、ワークの断面とを示した図である。図１２を参照して、ネジを、より全長の長いネジ８００Ａとし、ワークをより穴の深いワーク９００Ａとする。ネジ８００Ａは、Ｍ３で、ネジ長１８ｍｍである。ワーク９００Ａは、ワーク９１０とワーク９２０とで構成される。ワーク９１０は、上側のワーク９１１と下側のワーク９１２の２層で構成され、ともに同じ径（φ３．８ｍｍ）のバカ穴が開けられている。ワーク９２０は、上側のワーク９２１と下側のワーク９２２との２層で構成されている。ワーク９１１とワーク９１２とは、事前に組付けられ一体となっている。同様に、ワーク９２１とワーク９２２とは、事前に組付けられ一体となっている。
【０１５６】
自動組付け装置Ｍは、ステップＳ１１８の力制限の判定に使用される許容力ＦＭＡＸ（閾値）だけが、自動組付け装置１とは異なっている。許容力ＦＭＡＸはネジ吸着機構１３６に吸着されているネジ８００の先端を横から押したときにネジが外れる限界の力であり、ネジの長さによって変化する。したがって、変更後の自動組付け装置においても適切な許容力ＦＭＡＸを事前に測定し、記憶部２３０に予め格納しておく。自動組付け装置Ｍは、その他の構成は、自動組付け装置１と同一である。
【０１５７】
自動組付け装置Ｍによるネジ締め動作は以下の特徴をさらに有する。ワーク９００Ａがワーク９１１，９１２，９２１，９２２の４層構成となっていることから、新たにワーク同士の穴位置ずれが発生しうる。これによりネジ８００Ａを穴に入れる際、ワーク９１１とワーク９１２との間、ワーク９１２とワーク９２１との間において、ネジ８００Ａがワーク９００Ａの穴７００Ａに引っかかる場合がある。このとき、図６のフローによるネジ締め動作では、ネジ先８０２Ａがワーク９００Ａに押付けられていれば探索動作を行ない（ステップＳ１０４，１０６，１１８，１２０）、離れていれば下降動作を行なう（ステップＳ１１６）。ワーク９００Ａのいずれの層間にずれがあってネジ８００Ａが何回引っかかるかは未知であるが、ネジ先８０２Ａが穴底に当たってステップＳ１０６のネジ締め開始の条件判定されるまで探索と下降とが繰り返されるので、ネジ締め開始を誤判定することがない。このため、自動組付け装置Ｍは、信頼性の高いネジ締めが実現できる。
【０１５８】
また、自動組付け装置Ｍを、以下のような構成にしてもよい。力センサ１３４を、３軸方向の並進力に加えてＺ軸周りのトルクＴＺを測定可能な４軸の力センサとする。また、図６に示したフローのステップＳ１１０において式（４．１）〜（４．３）の計算を行なう前に、新しいアクティビティＡｃｔ２を上記４軸の力センサで検出した反トルクＴＺに基づいて算出するように、制御部２０を構成する。また、反トルクＴＺが減少するほどＡｃｔ２が大きな値を出力するように、制御部２０を構成する。制御部２０は、当該アクティビティＡｃｔ２と、ランダム生成したノイズ信号と、式（１４）と同様の式とに基づいて、推力Ｘ２を変化させる。当該推力Ｘ２を、式（４．３）においてＦＺＦの代わりに使用した以下の式（１６）によって、移動量ＭＺを計算する。
【０１５９】
ＭＺ＝ＧＺ×（ＦＺ−Ｘ２）  …  （１６）
この方法を用いると、反トルクＴＺを減少させるように推力Ｘ２が変化する。したがって、最適な推力Ｘ２が選択されることにより、摩擦抵抗を極小化してより高速にネジ締めを行なう、自動組付け装置を実現できる。
【０１６０】
また、自動組付け装置Ｍを、以下のような構成にしてもよい。上述した式（５）において、ノイズＵ１，Ｕ２として正規分布ノイズの代わりに、べき分布ノイズを使用するように、制御部２０を構成してもよい。べき分布ノイズは、低確率で、正規分布の通常上限（３σ）に比べて非常に大きな値を出力する。この結果、振幅Ｘ１と推力Ｘ２とは低確率で非常に大きく変化するようになる。したがって、自動組付け装置Ｍは、探索動作が長時間行われたときに、振幅Ｘ１と推力Ｘ２とがより広い範囲で変化しやすくなる。自動組付け装置Ｍは、このような振幅Ｘ１と推力Ｘ２との特性を用いるため、ネジ締めドライバ１３５とワーク９００，９００Ａとの穴位置との初期ずれ量が自動組付け装置１で説明したよりもさらに大きくなるような装置条件において、広い範囲での探索を、より効率的に行なうことができる。
【０１６１】
また、上記においては、ネジ８００の組込み方向に垂直となる面内で、移動部２６０が設定部２２０により設定された移動の量だけネジ８００を移動させる例を挙げて説明したが、ネジ８００の代わりにワーク９００を移動させる構成としてもよい。また、ネジ８００とワーク９００とを移動させる構成としてもよい。
【０１６２】
［実施の形態２］
本発明に係る自動組付け装置の他の実施態様について、図１３を参照して説明すると以下のとおりである。本実施の形態に係る自動組付け装置は、挿入式の樹脂ピンをワークに挿入する点において、ネジ８００をワーク９００に挿入する構成を有する実施の形態１の自動組付け装置１装置とは異なる。
【０１６３】
図１３は、本実施の形態に係る自動組付け装置１Ａの一部を示した図である。図１３を参照して、自動組付け装置１Ａは、ネジ締めドライバ１３５の代わりに、把持機構１３９を持つ。ネジ供給機構１４はネジ８００の代わりに樹脂ピン６００を供給する機構である。ワーク９００Ｂは２層の板状のワーク９３０，９４０からなり、ワーク９３０とワーク９４０との重なる位置に同一径の穴が設けられている。
【０１６４】
樹脂ピン６００は、板状の上部から下方向に固定用の爪が出た形状の樹脂製の固定ピンである。樹脂ピン６００をワーク９００Ｂの穴に挿入すると爪の引っ掛かりによって、ワーク９３０とワーク９４０とが固定される。把持機構１３９は、真空吸着式の部品把持機構である。把持機構１３９の下面には樹脂ピン６００の上部と勘合する凹形状が形成されている。凹形状の内部に吸引用の真空源へと接続される穴が設けられている。
【０１６５】
自動組付け装置１Ａの制御動作は、図６に示したフローにてネジ締めドライバ１３５を操作してネジの回転を開始および異常読出しを行なう処理を実行しないこと以外は、実施の形態１に係る自動組付け装置１と同一である。このような自動組付け装置１Ａにより、挿入型の樹脂ピンを、位置ずれのある設置条件で、高信頼に自動挿入することができる。
【０１６６】
＜制御部２０のハードウェア構成＞
図１４は、実施の形態１、２における制御部２０として機能するコンピュータシステム３００のハードウェア構成を表わすブロック図である。
【０１６７】
コンピュータシステム３００は、主たる構成要素として、プログラムを実行するＣＰＵ３１０と、コンピュータシステム３００の使用者による指示の入力を受けるマウス３２０およびキーボード３３０と、ＣＰＵ３１０によるプログラムの実行により生成されたデータ、又はマウス３２０若しくはキーボード３３０を介して入力されたデータを揮発的に格納するＲＡＭ３４０と、データを不揮発的に格納するハードディスク３５０と、ＤＶＤ−ＲＯＭ駆動装置３６０と、モニタ３７０と、通信ＩＦ３８０とを含む。各構成要素は、相互にデータバスによって接続されている。ＤＶＤ−ＲＯＭ駆動装置３６０には、ＤＶＤ−ＲＯＭ３６１が装着される。
【０１６８】
コンピュータシステム３００における処理は、各ハードウェアおよびＣＰＵ３１０により実行されるソフトウェアによって実現される。このようなソフトウェアは、ハードディスク３５０に予め記憶されている場合がある。また、ソフトウェアは、ＤＶＤ−ＲＯＭ３６１その他の記憶媒体に格納されて、プログラムプロダクトとして流通している場合もある。あるいは、ソフトウェアは、いわゆるインターネットに接続されている情報提供事業者によってダウンロード可能なプログラムプロダクトとして提供される場合もある。このようなソフトウェアは、ＤＶＤ−ＲＯＭ駆動装置３６０その他の読取装置によりその記憶媒体から読取られて、あるいは、通信ＩＦ３８０を介してダウンロードされた後、ハードディスク３５０に一旦格納される。そのソフトウェアは、ＣＰＵ３１０によってハードディスク３５０から読み出され、ＲＡＭ３４０に実行可能なプログラムの形式で格納される。ＣＰＵ３１０は、そのプログラムを実行する。
【０１６９】
同図に示されるコンピュータシステム３００を構成する各構成要素は、一般的なものである。したがって、本発明の本質的な部分は、ＲＡＭ３４０、ハードディスク３５０、ＤＶＤ−ＲＯＭ３６１その他の記憶媒体に格納されたソフトウェア、あるいはネットワークを介してダウンロード可能なソフトウェアであるともいえる。なお、コンピュータシステム３００の各ハードウェアの動作は周知であるので、詳細な説明は繰り返さない。
【０１７０】
なお、記録媒体としては、ＤＶＤ-ＲＯＭ、ＣＤ−ＲＯＭ、ＦＤ（Flexible Disk）、ハードディスクに限られず、磁気テープ、カセットテープ、光ディスク（ＭＯ（Magnetic Optical Disc）／ＭＤ（Mini Disc）／ＤＶＤ（Digital Versatile Disc））、ＩＣ（Integrated Circuit）カード（メモリカードを含む）、光カード、マスクＲＯＭ、ＥＰＲＯＭ（Electronically Programmable Read-Only Memory）、ＥＥＰＲＯＭ（Electronically Erasable Programmable Read-Only Memory）、フラッシュＲＯＭなどの半導体メモリ等の固定的にプログラムを担持する媒体でもよい。また、記録媒体は、当該プログラム等をコンピュータが読取可能な一時的でない媒体である。
【０１７１】
ここでいうプログラムとは、ＣＰＵにより直接実行可能なプログラムだけでなく、ソースプログラム形式のプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
【０１７２】
＜付記＞
（１）自動組付け装置は、挿入部品を把持する把持手段と、挿入部品とワークとの接触力を検出する力検出手段と、挿入部品の位置を変動させる変動手段と、変動手段の位置を変動させる量を算出するための算出手段と、ノイズ生成手段と、組付けが進んだかどうかを評価する評価手段と、探索動作の指標となる探索値を記憶する探索値記憶手段と、前記探索値の既定の基準値を記憶する基準記憶手段と、前記探索値を繰り返し更新する更新手段とを備える。当該自動組付け装置は、（ａ）前記評価手段は前記変動手段から得た挿入部品の位置と前記力検出手段から得た接触力とに基づいて組付けが進んだかどうかの評価となる変数Ａｃｔを算出し、（ｂ）前記評価手段は変数Ａｃｔを組付けが進んだ場合には増加させ、組付けが進まない場合には減少させるように構成され、（ｃ）前記更新手段は前記基準値と、前記評価手段が算出した変数Ａｃｔと、前記ノイズ生成手段が生成したノイズμとに基づいて前記探索値を更新し、（ｄ）前記更新手段は前記変数Ａｃｔが増加するとノイズμの作用に対して相対的に探索値が基準値に近づく作用を増加させ、また変数Ａｃｔが減少するとノイズμの作用に対して相対的に探索値が基準値に近づく作用を減少させるように構成され、（ｅ）前記算出手段は前記探索値に基づいて変動手段による位置変動量を算出し、前記変動手段は前記位置変動量に基づいて挿入部品を移動させるように構成する。
【０１７３】
（２）前記評価手段は、挿入部品の挿入方向の位置変動率の増減に対応して前記変数Ａｃｔを増減させる。さらに、前記評価手段は、挿入方向に垂直な面内方向の接触力の変動率の増減に対応して前記変数Ａｃｔを増減させて算出する。
【０１７４】
（３）前記探索値は、挿入部品の押付け力Ｆと、移動幅Ａとのセットで構成される。前記基準値は、押付け力の基準値と、移動幅の基準値とのセットで構成される。前記変動手段は、挿入部品を押付け力Ｆでワークに押付けつつ挿入軸に垂直な面内で移動幅Ａの略振動動作を行なう。
【０１７５】
（４）前記更新手段は、さらに基底値Ａｃｔ０を予め記憶しており、前記探索値を更新する際に、前記変数Ａｃｔが基底値Ａｃｔ０よりも大きい場合には探索値を狭域かつ高精度の動作を生成する状態へと変化させ、前記変数Ａｃｔが基底値Ａｃｔ０よりも小さい場合には探索値を広域かつ素早い動作を生成する状態へと変化させる。
【０１７６】
（５）前記探索値は、さらに探索方向θを加えて構成される。前記基準値は、さらに探索方向の基準値を加えて構成される。前記更新手段は、さらに、探索方向θを上記基準値と上記変数Ａｃｔとノイズμとに基づいて更新する。前記算出手段は、さらに、挿入軸に垂直な面内の探索方向θに沿って挿入部品を移動させることにより、部品組付けを行なう。
【０１７７】
（６）前記算出手段は、挿入部品の挿入方向に直交する方向の接触力が所定の閾値より大きい場合に、直行方向の力に沿って挿入部品を移動させるように、前記位置変動量を算出する。
【０１７８】
（７）前記算出手段は、前記力検出手段の出力を元に挿入部品とワークとの接触の有無を判定し、接触が検知されない間は挿入部品の挿入方向の移動量を増加させ、挿入方向に直交する方向の移動量を０とするように前記位置変動量を算出する。
【０１７９】
（８）前記算出手段は、前記位置変動量の累積値が所定の値より大きくなったときに、位置変動量の累積値を減少させるように位置変動量を変化させる。
【０１８０】
（９）前記挿入部品はネジであり、前記自動組付け装置はネジ締め用のドライバをさらに備えている。
【０１８１】
（１０）前記評価手段はさらに、ネジ締めの反トルクに基づいて変数Ａｃｔを算出する。
【０１８２】
今回開示された実施の形態は例示であって、上記内容のみに制限されるものではない。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【産業上の利用可能性】
【０１８３】
本発明は、挿入部品の部品組付けを行なう自動組付け装置全般に利用可能である。
【符号の説明】
【０１８４】
１，１Ａ  自動組付け装置、１１  基部、１２  スカラロボット、１３  組付け部、１４  ネジ供給機構、２０  制御部、２１  ロボット制御部、２２  組付け制御部、７０，７００，７００Ａ  穴、１２１，１２２，１２３  リンク、１２８，１２９，１２８，１２９  関節、１３１，１３２，１３３  直動軸、１３４  力センサ、１３５  ネジ締めドライバ、１３６  ネジ吸着機構、１３９  把持機構、２１０  評価部、２２０  設定部、２２１  更新部、２２２  移動量算出部、２３０  記憶部、２４０  接触圧検出部、２４０  接触圧検知部、２５０  トルク検出部、２６０  移動部、９００，９００Ａ，９００Ｂ，９０１，９０２，９１０，９１１，９１２，９２０，９２１，９２２，９３０，９４０  ワーク、９９０  バリ、１３５１  ビット、１３６１  ゴム部材。
【図１】
2012086341.tif 000010
【図２】
2012086341.tif 000011
【図３】
2012086341.tif 000012
【図４】
2012086341.tif 000013
【図５】
2012086341.tif 000014
【図６】
2012086341.tif 000015
【図７】
2012086341.tif 000016
【図８】
2012086341.tif 000017
【図９】
2012086341.tif 000018
【図１０】
2012086341.tif 000019
【図１１】
2012086341.tif 000020
【図１２】
2012086341.tif 000021
【図１３】
2012086341.tif 000022
【図１４】
2012086341.tif 000023
【図１５】
2012086341.tif 000024
【図１６】
2012086341.tif 000025