IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ オムロン株式会社の特許一覧

特開2024-115395コントローラ、制御方法および制御プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024115395
(43)【公開日】2024-08-26
(54)【発明の名称】コントローラ、制御方法および制御プログラム
(51)【国際特許分類】
   B25J 9/16 20060101AFI20240819BHJP
   B25J 13/08 20060101ALI20240819BHJP
【FI】
B25J9/16
B25J13/08 Z
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2023021070
(22)【出願日】2023-02-14
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】恵木 守
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707AS07
3C707BS12
3C707DS01
3C707ES03
3C707HS27
3C707KS34
3C707KW03
3C707KX07
3C707LT07
3C707LT12
3C707LU08
3C707LV17
3C707MS05
(57)【要約】
【課題】2つのワークを嵌合させる場合のアプローチ位置の少なくとも一部を適切に決定するための方法を提供する。
【解決手段】ロボットを用いて第1ワークと第2ワークとを嵌合させるコントローラが提供される。ロボットは、第1ワークを把持するための把持機構と力覚センサとを有している。コントローラは、ロボットに、第1ワークを予め定められた力で第2ワークに押し付ける動作と、第1ワークを第2ワークに押し付けた状態で、第2ワークに対する第1ワークの姿勢を変化させる動作とを実行させる。コントローラは、第1ワークと第2ワークとの距離に関連する評価指標に基づいて、第1ワークの第2ワークと接触する第1面と、第2ワークの第1ワークと接触する第2面とが平行になる第1ワークの姿勢を探索する。
【選択図】図1
【特許請求の範囲】
【請求項1】
ロボットを用いて第1ワークと第2ワークとを嵌合させるためのコントローラであって、前記ロボットは、前記第1ワークを把持するための把持機構と力覚センサとを有しており、前記コントローラは、前記ロボットに、
前記第1ワークを予め定められた力で前記第2ワークに押し付ける動作と、
前記第1ワークを前記第2ワークに押し付けた状態で、前記第2ワークに対する前記第1ワークの姿勢を変化させる動作とを実行させ、
前記コントローラは、前記第1ワークと前記第2ワークとの距離に関連する評価指標に基づいて、前記第1ワークの前記第2ワークと接触する第1面と、前記第2ワークの前記第1ワークと接触する第2面とが平行になる前記第1ワークの姿勢を探索する、コントローラ。
【請求項2】
前記評価指標は、前記第2ワークに予め設定された面から、前記ロボットのアーム先端を基準とした座標系において設定された計測ポイントまでの距離である、請求項1に記載のコントローラ。
【請求項3】
前記計測ポイントは、前記計測ポイントを前記第1面を含む面へ投影したときに、前記第1ワークの姿勢を変化させる動作において、前記第2面と接触する前記第1面の2つの最外辺によって規定される範囲内に、当該投影位置が存在するように設定される、請求項2に記載のコントローラ。
【請求項4】
前記評価指標は、前記第1ワークを予め定められた力で前記第2ワークに押し付けるための、前記ロボットに与えられる指令についての補正量である、請求項1に記載のコントローラ。
【請求項5】
前記コントローラは、前記評価指標が極値となる姿勢を、前記第1面と前記第2面とが平行になる前記第1ワークの姿勢として決定する、請求項1に記載のコントローラ。
【請求項6】
前記ロボットの位置および姿勢を制御するための基準ポイントは、前記第1ワークの前記第1面の内側に設定される、請求項1に記載のコントローラ。
【請求項7】
前記第2ワークに対する前記第1ワークの姿勢を変化させる動作は、
前記第1ワークを前記第2ワークに押し付ける方向と直交する軸の周りに、前記第1ワークを第1方向に回転させる動作と、
前記第1ワークを前記第1方向とは反対方向である第2方向に回転させる動作とを含む、請求項1~6のいずれか1項に記載のコントローラ。
【請求項8】
前記コントローラは、前記第1ワークを前記第1方向に回転することで決定された前記第1ワークの第1姿勢と、前記第1ワークを前記第2方向に回転することで決定された前記第1ワークの第2姿勢との平均を、前記第1面と前記第2面とが平行になる前記第1ワークの姿勢として決定する、請求項7に記載のコントローラ。
【請求項9】
前記第2ワークに対する前記第1ワークの姿勢を変化させる動作は、
前記第2ワークに対する前記第1ワークの姿勢を第1変化速度で変化させる動作と、
前記第2ワークに対する前記第1ワークの姿勢を前記第1変化速度とは異なる第2変化速度で変化させる動作とを含む、請求項1~6のいずれか1項に記載のコントローラ。
【請求項10】
前記第2変化速度は、前記第1変化速度より小さい、請求項9に記載のコントローラ。
【請求項11】
前記コントローラは、
前記第1ワークを前記第2ワークに押し付ける方向と直交する軸の周りに、前記第1ワークを第1方向にのみ回転することで探索された結果に基づいて、前記第1面と前記第2面とが平行になる前記第1ワークの姿勢を決定し、
続いて、前記第1ワークを前記第1方向に回転することで探索された結果、および、前記第1ワークを前記第1方向とは反対方向である第2方向に回転することで探索された結果に基づいて、前記第1面と前記第2面とが平行になる前記第1ワークの姿勢を更新する、請求項1~6のいずれか1項に記載のコントローラ。
【請求項12】
前記第1ワークを第1方向にのみ回転させる場合には、前記第1ワークを第1変化速度で回転させ、
前記第1ワークを前記第1方向および前記第2方向に回転させる場合には、前記第1ワークを前記第1変化速度より小さい第2変化速度で回転させる、請求項11に記載のコントローラ。
【請求項13】
前記コントローラは、前記第1ワークと前記第2ワークとが非接触の状態で、前記力覚センサから出力されている力覚情報に基づいてオフセットを除去する、請求項1~6のいずれか1項に記載のコントローラ。
【請求項14】
ロボットを用いて第1ワークと第2ワークとを嵌合させるための制御方法であって、前記第1ワークは前記ロボットの把持機構により把持されており、前記制御方法は、
前記第1ワークを予め定められた力で前記第2ワークに押し付けるステップと、
前記第1ワークを前記第2ワークに押し付けた状態で、前記ロボットが前記第2ワークに対する前記第1ワークの姿勢を変化させるステップと、
前記第1ワークと前記第2ワークとの距離に関連する評価指標に基づいて、前記第1ワークの前記第2ワークと接触する第1面と、前記第2ワークの前記第1ワークと接触する第2面とが平行になる前記第1ワークの姿勢を探索するステップとを備える、制御方法。
【請求項15】
第1ワークと第2ワークとを嵌合させるための制御プログラムであって、前記第1ワークはロボットの把持機構により把持されており、前記制御プログラムは、コンピュータに、
前記第1ワークを予め定められた力で前記第2ワークに押し付けるための指令を前記ロボットに与えるステップと、
前記第1ワークを前記第2ワークに押し付けた状態で、前記第2ワークに対する前記第1ワークの姿勢を変化させるための指令を前記ロボットに与えるステップと、
前記第1ワークと前記第2ワークとの距離に関連する評価指標に基づいて、前記第1ワークの前記第2ワークと接触する第1面と、前記第2ワークの前記第1ワークと接触する第2面とが平行になる前記第1ワークの姿勢を探索するステップとを実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コントローラ、制御方法および制御プログラムに関する。
【背景技術】
【0002】
産業オートメーション(Industrial Automation)の分野において、様々な用途にロボットが利用されている。このような用途の一つとして、2つのワークを嵌合する作業がある。
【0003】
例えば、特開2018-199172号公報(特許文献1)は、探り動作を行わずに、挿入物を被挿入物に挿入する作業を効率的に行う方法を開示する。より具体的には、第2接触動作において、第1方向と直交する第2方向における目標力の成分を0より大きい値とした力制御を行うことにより、第1接触動作での接触部分とは異なる部分に挿入物と被挿入物とを接触させる制御方法が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2018-199172号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
例えば、ロボットを用いて2つのワークを嵌合させる場合には、探り動作により、ワークの適切な位置および姿勢を決定する必要がある。探り動作を開始するためには、一方のワークを他方のワークに設けられた嵌合孔の近傍に配置する必要がある。探り動作を開始する前のワークの初期位置および初期姿勢(以下、「アプローチ位置」とも称す。)を適切に決定する必要がある。
【0006】
上述の先行技術文献は、アプローチ位置を適切に決定する方法については開示していない。
【0007】
本発明は、2つのワークを嵌合させる場合のアプローチ位置の少なくとも一部を適切に決定するための方法を提供する。
【課題を解決するための手段】
【0008】
ある実施の形態に従えば、ロボットを用いて第1ワークと第2ワークとを嵌合させるためのコントローラが提供される。ロボットは、第1ワークを把持するための把持機構と力覚センサとを有している。コントローラは、ロボットに、第1ワークを予め定められた力で第2ワークに押し付ける動作と、第1ワークを第2ワークに押し付けた状態で、第2ワークに対する第1ワークの姿勢を変化させる動作とを実行させる。コントローラは、第1ワークと第2ワークとの距離に関連する評価指標に基づいて、第1ワークの第2ワークと接触する第1面と、第2ワークの第1ワークと接触する第2面とが平行になる第1ワークの姿勢を探索する。
【0009】
この構成によれば、第1ワークと第2ワークとの距離に関連する評価指標に基づいて、第1ワークの第2ワークと接触する第1面と、第2ワークの第1ワークと接触する第2面とが平行になる第1ワークの姿勢を決定できるので、決定された第1ワークの姿勢に基づいて、アプローチ位置に必要な少なくとも一部の情報を決定できる。
【0010】
評価指標は、第2ワークに予め設定された面から、ロボットのアーム先端を基準とした座標系において設定された計測ポイントまでの距離であってもよい。この構成によれば、第2ワークに予め設定された面から第1ワークまでの距離に基づいて評価できるので、実運用に適したアプローチ位置を決定できる。
【0011】
計測ポイントは、計測ポイントを第1面を含む面へ投影したときに、第1ワークの姿勢を変化させる動作において、第2面と接触する第1面の2つの最外辺によって規定される範囲内に、当該投影位置が存在するように設定されてもよい。この構成によれば、評価指標の値は、第1面と第2面との関係をより正確に反映したものとなるので、アプローチ位置の決定精度を向上できる。
【0012】
評価指標は、第1ワークを予め定められた力で第2ワークに押し付けるための、ロボットに与えられる指令についての補正量であってもよい。この構成によれば、制御系において算出される補正量に基づいて、第1面と第2面とが平行になる第1ワークの姿勢を決定できるので、アプローチ位置の決定精度を向上できる。
【0013】
コントローラは、評価指標が極値となる姿勢を、第1面と第2面とが平行になる第1ワークの姿勢として決定してもよい。この構成によれば、第2ワークに対する第1ワークの姿勢に応じて変化する評価指標の値に基づいて、第1面と第2面とが平行になる第1ワークの姿勢を決定できる。
【0014】
ロボットの位置および姿勢を制御するための基準ポイントは、第1ワークの第1面の内側に設定されてもよい。この構成によれば、第2ワークに対する第1ワークの姿勢をより正確に制御できる。
【0015】
第2ワークに対する第1ワークの姿勢を変化させる動作は、第1ワークを第2ワークに押し付ける方向と直交する軸の周りに、第1ワークを第1方向に回転させる動作と、第1ワークを第1方向とは反対方向である第2方向に回転させる動作とを含んでもよい。この構成によれば、一方向に回転させる場合に生じ得る遅延による誤差を低減できる。
【0016】
コントローラは、第1ワークを第1方向に回転することで決定された第1ワークの第1姿勢と、第1ワークを第2方向に回転することで決定された第1ワークの第2姿勢との平均を、第1面と第2面とが平行になる第1ワークの姿勢として決定してもよい。この構成によれば、第1方向に回転させる場合に生じ得る遅延と、第2方向に回転させる場合に生じ得る遅延とを打ち消すことができるので、アプローチ位置の決定精度を向上できる。
【0017】
第2ワークに対する第1ワークの姿勢を変化させる動作は、第2ワークに対する第1ワークの姿勢を第1変化速度で変化させる動作と、第2ワークに対する第1ワークの姿勢を第1変化速度とは異なる第2変化速度で変化させる動作とを含んでいてもよい。この構成によれば、第1ワークの姿勢を変化させる変化速度を異ならせることで、短時間かつ高精度の探索を行うことができる。
【0018】
第2変化速度は、第1変化速度より小さくてもよい。この構成によれば、第1ワークの姿勢を第1変化速度で変化させて第1面と第2面とが平行になる第1ワークの姿勢を決定した後に、第1変化速度より小さい第2変化速度で第1面と第2面とが平行になる第1ワークの姿勢を決定できるので、アプローチ位置の決定精度を向上できる。
【0019】
コントローラは、第1ワークを第2ワークに押し付ける方向と直交する軸の周りに、第1ワークを第1方向にのみ回転することで探索された結果に基づいて、第1面と第2面とが平行になる第1ワークの姿勢を決定してもよい。コントローラは、続いて、第1ワークを第1方向に回転することで探索された結果、および、第1ワークを第1方向とは反対方向である第2方向に回転することで探索された結果に基づいて、第1面と第2面とが平行になる第1ワークの姿勢を更新してもよい。この構成によれば、第1ワークを第1方向にのみ回転することで探索に要する時間を短縮しつつ、第1ワークを両方向に回転することで探索の精度を向上できる。
【0020】
第1ワークを第1方向にのみ回転させる場合には、第1ワークは、第1変化速度で回転させられる。第1ワークを第1方向および第2方向に回転させる場合には、第1ワークは、第1変化速度より小さい第2変化速度で回転させられる。この構成によれば、第1ワークを第1方向および第2方向に回転させる場合には、変化速度を小さくすることで、探索の精度を向上できる。
【0021】
コントローラは、第1ワークと第2ワークとが非接触の状態で、力覚センサから出力されている力覚情報に基づいてオフセットを除去してもよい。この構成によれば、第1ワークと第2ワークとが非接触の状態において力覚センサに存在するオフセットに起因する誤差を低減できる。
【0022】
別の実施の形態に従えば、ロボットを用いて第1ワークと第2ワークとを嵌合させるための制御方法が提供される。第1ワークはロボットの把持機構により把持されている。制御方法は、第1ワークを予め定められた力で第2ワークに押し付けるステップと、第1ワークを第2ワークに押し付けた状態で、ロボットが第2ワークに対する第1ワークの姿勢を変化させるステップと、第1ワークと第2ワークとの距離に関連する評価指標に基づいて、第1ワークの第2ワークと接触する第1面と、第2ワークの第1ワークと接触する第2面とが平行になる第1ワークの姿勢を探索するステップとを含む。
【0023】
さらに別の実施の形態に従えば、第1ワークと第2ワークとを嵌合させるための制御プログラムが提供される。第1ワークはロボットの把持機構により把持されている。制御プログラムは、コンピュータに、第1ワークを予め定められた力で第2ワークに押し付けるための指令をロボットに与えるステップと、第1ワークを第2ワークに押し付けた状態で、第2ワークに対する第1ワークの姿勢を変化させるための指令をロボットに与えるステップと、第1ワークと第2ワークとの距離に関連する評価指標に基づいて、第1ワークの第2ワークと接触する第1面と、第2ワークの第1ワークと接触する第2面とが平行になる第1ワークの姿勢を探索するステップとを実行させる。
【発明の効果】
【0024】
本発明によれば、2つのワークを嵌合させる場合のアプローチ位置の少なくとも一部を適切に決定できる。
【図面の簡単な説明】
【0025】
図1】本実施の形態に従うロボットシステムの組立動作の一例を示す模式図である。
図2】本実施の形態に従うロボットシステムにおけるTCPの設定例を示す模式図である。
図3】本実施の形態に従うロボットシステムにおけるTCPの設定例を示す模式図である。
図4】本実施の形態に従うロボットシステムのハードウェア構成例を示す模式図である。
図5】本実施の形態に従うアプローチ位置の校正処理の処理手順を示すフローチャートである。
図6】本実施の形態に従うアプローチ位置の校正処理により決定される位置関係を説明するための図である。
図7】本実施の形態に従うRx/Ry/Z校正処理の処理内容を説明するための図である。
図8】本実施の形態に従うRx/Ry/Z校正処理におけるTCPおよび計測ポイントの設定例を説明するための図である。
図9】本実施の形態に従うRx/Ry/Z校正処理における計測ポイントの設定例を説明するための図である。
図10】本実施の形態に従うRx/Ry/Z校正処理において受入面(設計値)からの距離を評価指標とした場合の処理内容を説明するための図である。
図11】本実施の形態に従うZt軸についての力制御を実現する制御系の一例を示す模式図である。
図12】本実施の形態に従うRx/Ry/Z校正処理においてZ位置補正量を評価指標とした場合の処理内容を説明するための図である。
図13】本実施の形態に従うRx/Ry/Z校正処理においてZ位置補正量を評価指標とした場合の処理結果の一例を示す図である。
図14】本実施の形態に従うRx/Ry/Z校正処理のより詳細な処理手順を示すフローチャートである。
図15】本実施の形態に従うRx/Ry/Z校正処理のZ校正値を決定する際の動作例を説明するための図である。
図16】本実施の形態に従うRx/Ry/Z校正処理のRy校正値を決定する際の動作例を説明するための図である。
図17】本実施の形態に従うRx/Ry/Z校正処理のZ位置補正量の時間変化を説明するための図である。
図18】本実施の形態に従うRx/Ry/Z校正処理に含まれる低速探索の処理手順を示すフローチャートである。
図19】本実施の形態に従うRx/Ry/Z校正処理に含まれる低速探索の処理手順を示すフローチャートである。
図20】本実施の形態に従うRx/Ry/Z校正処理のZ校正値を決定する処理を説明するための図である。
図21】本実施の形態に従うX/Y/Rz校正処理の第1方向ベクトルを決定する処理を説明するための図である。
図22】本実施の形態に従うX/Y/Rz校正処理の第2方向ベクトルを決定する処理を説明するための図である。
図23】本実施の形態に従うX/Y/Rz校正処理のXtYt原点を決定する処理を説明するための図である。
図24】本実施の形態に従うX/Y/Rz校正処理のより詳細な処理手順を示すフローチャートである。
図25】本実施の形態に従うX/Y/Rz校正処理のより詳細な処理手順を示すフローチャートである。
図26】本実施の形態に従うX/Y/Rz校正処理の方向ベクトルを算出するための位置計測方法の一例を説明するための図である。
図27】本実施の形態に従うX/Y/Rz校正処理の方向ベクトルを算出処理の変形例を説明するための図である。
【発明を実施するための形態】
【0026】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0027】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
【0028】
図1は、本実施の形態に従うロボットシステム1の組立動作の一例を示す模式図である。図1を参照して、ロボットシステム1は、多関節ロボット(以下、単に「ロボット10」とも称す。)と、ロボット10を制御するコントローラ100とを含む。
【0029】
ロボットシステム1は、第1ワーク50と第2ワーク60とを嵌合させる。第1ワーク50および第2ワーク60は、剛性をもった材料で構成されている。第2ワーク60には嵌合孔62が設けられており、第1ワーク50は嵌合孔62に挿入される。すなわち、ロボットシステム1は、第1ワーク50を第2ワーク60の嵌合孔62に挿入する。
【0030】
本明細書において、「嵌合」は、任意の断面形状を有する孔(嵌合孔)に別のワークが挿入された状態と、挿入された状態にするための動作との両方を包含する。なお、孔(嵌合孔)に別のワークが挿入される動作を意図する場合には、「嵌合動作」との表現を用いることもある。嵌合孔は、どのような断面形状であってもよいが、以下の説明では、一例として断面形状四角形とする。
【0031】
嵌合動作において、通常、第2ワーク60は予め定められた位置に配置されている。ロボット10は、第1ワーク50を把持した状態で、第1ワーク50を初期の位置および姿勢(アプローチ位置)に移動させる。その後、探り動作および挿入動作が行われる。
【0032】
本明細書において、「アプローチ位置」は、第2ワーク60(被嵌合ワーク)の嵌合孔62に挿入される第1ワーク50(嵌合ワーク)の初期位置および初期姿勢を意味する。説明の便宜上、「アプローチ位置」と記載するが、典型的には、位置(3要素)および姿勢(3要素)の合計6要素を含む。
【0033】
本明細書において、「把持」は、ロボットなどがワークを保持するための任意の動作を包含する。図1には、複数の爪部を用いてワークを保持する例を示すが、磁力(例えば、電磁石)を用いる方式を採用してもよいし、圧力差(負圧)を用いる方式を採用してもよいし、その他の任意の方式を採用してもよい。
【0034】
図1に示すロボット10は、ベース11と、複数の可動部12,13,14,15,16,17とを含む。可動部12,13,14,15,16,17は、ロボット10のジョイントに相当する。可動部12,13,14,15,16,17の各々は、図1に示すような回転軸に沿ってロボット10を構成するリンクを駆動する。
【0035】
ロボット10のアーム先端には、把持機構20が設けられている。把持機構20には、第1ワーク50を把持するための2つの爪部21,22を有している。爪部21と爪部22との間の距離を調整することで、第1ワーク50が把持および解放される。以下に説明するアプローチ位置の校正処理において、第1ワーク50はロボット10の把持機構20により把持された状態に維持される。
【0036】
ロボット10のアーム先端と把持機構20との間には、力覚センサ18が設けられている。力覚センサ18は、把持機構20などに発生している荷重の大きさ、および、荷重の方向などを含む検出結果を出力する。力覚センサ18の検出結果は、ベクトル値で出力されてもよい。
【0037】
このように、ロボット10は、複数のジョイントに加えて、把持機構20および力覚センサ18を有している。
【0038】
コントローラ100には、情報処理装置200が接続されてもよい。情報処理装置200は、例えば、汎用コンピュータである。情報処理装置200は、コントローラ100からの情報をユーザに提示するとともに、ユーザ操作に従ってユーザ指示をコントローラ100へ与える。
【0039】
図1に示す例では、ロボット10を基準としたロボット座標系2が定義されている。また、アーム先端を基準としたツール座標系30が定義されている。ツール座標系30は、アーム先端の面に平行なXt軸およびYt軸、ならびに、当該面と直交するZt軸を含む。典型的には、Xt軸とYt軸とは直交するようにツール座標系30が定義されるが、Xt軸とYt軸とが平行にならなければ、どのように定義してもよい。
【0040】
ロボット10の位置および姿勢を制御するための基準ポイントをTCP(tool center point)と称す。TCPは、一例として、ツール座標系30において定義される。TCPは、位置(X,Y,Z)および姿勢(Rx,Ry,Rz)の6要素を含む。位置(X,Y,Z)は、ツール座標系30のXt,Yt,Zt軸上のそれぞれの位置である。姿勢(Rx,Ry,Rz)は、ツール座標系30のXt,Yt,Zt軸周りのそれぞれの角度である。
【0041】
コントローラ100は、TCPが目標の位置および姿勢となるように、ロボット10(可動部12,13,14,15,16,17の角度)を制御する。
【0042】
コントローラ100は、ロボット10のアーム先端の位置および姿勢をオフセットベクトル(位置および姿勢)で補正することで、TCPの位置および姿勢を算出することができる。TCPは、嵌合動作の内容に応じて、任意の位置に設定してもよい。例えば、第2ワーク60に挿入される第1ワーク50の面(以下、「先端面52」とも称す。)の角(かど)にTCPに設定してもよいし、第1ワーク50の先端面52の中心をTCPに設定してもよい。図1に示す例では、第1ワーク50の先端面52の角(かど)にTCPが設定されている。
【0043】
図2および図3は、本実施の形態に従うロボットシステム1におけるTCPの設定例を示す模式図である。
【0044】
図2には、一例として、第2ワーク60の嵌合孔62の角(かど)を探索する動作に適したTCPの設定例を示す。すなわち、第1ワーク50の先端面52の角(かど)をTCPに設定することで、設定されたTCPに基づいて、第1ワーク50の角(かど)と第2ワーク60の嵌合孔62の角(かど)とが接触する位置および姿勢を探索できる。
【0045】
図3には、一例として、第2ワーク60の嵌合孔62の位置を探索するのに適したTCPの設定例を示す。すなわち、第1ワーク50の先端面52の中心をTCPに設定することで、設定されたTCPに基づいて、第1ワーク50を挿入すべき第2ワーク60の嵌合孔62を探索できる。また、第1ワーク50と第2ワーク60との接触も探索できる。
【0046】
<B.ロボットシステム1のハードウェア構成例>
図4は、本実施の形態に従うロボットシステム1のハードウェア構成例を示す模式図である。図4を参照して、ロボット10は、可動部12,13,14,15,16,17にそれぞれ対応付けられたモータ32,33,34,35,36,37と、モータ32,33,34,35,36,37をそれぞれ駆動するドライバ42,43,44,45,46,47とを含む。
【0047】
ロボット10は、爪部21,22を駆動するためのモータ38、および、モータ38を駆動するドライバ48を含む。
【0048】
ドライバ42,43,44,45,46,47,48、力覚センサ18、ティーチングペンダント26は、インターフェイス40を介して、コントローラ100と電気的に接続される。
【0049】
ティーチングペンダント26は、ユーザ操作に応じて、ロボット10のティーチングなどを行う。ティーチングペンダント26は、ロボット10に対して着脱可能に構成されてもよい。
【0050】
コントローラ100は、一種のコンピュータであり、主要なハードウェアコンポーネントとして、プロセッサ102と、メモリ104と、インターフェイス106と、ストレージ110とを含む。これらのコンポーネントはバス108を介して電気的に接続される。
【0051】
プロセッサ102は、例えば、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)などで構成される。メモリ104は、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)などの揮発性記憶装置で構成される。ストレージ110は、SSD(Solid State Disk)、フラッシュメモリなどの不揮発性記憶装置で構成される。ストレージ110は、基本的な処理を実現するためのシステムプログラム112と、ロボット10を制御するための制御プログラム114とを格納する。制御プログラム114は、ロボット10を制御するためのコンピュータ読取可能な命令を含む。プロセッサ102は、ストレージ110に格納されたシステムプログラム112および制御プログラム114を読み出して、メモリ104に展開して実行することで、後述するようなロボット10を制御するための処理を実現する。
【0052】
インターフェイス106は、コントローラ100とロボット10との間の信号および/またはデータのやり取りを担当する。ロボットシステム1においては、ドライバ42,43,44,45,46,47,48を制御するための指令がコントローラ100からロボット10へ送信されるとともに、力覚センサ18による検出結果がロボット10からコントローラ100へ送信される。
【0053】
図4には、プロセッサ102がプログラムを実行することで必要な処理が提供される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
【0054】
図4には、コントローラ100をロボット10から独立して構成した例を示しているが、コントローラ100が提供する機能および処理の一部または全部をロボット10に組み入れてもよい。ロボット10がコントローラ100を内蔵していてもよい。コントローラ100は、ロボットの制御に専用化されたコントローラであってもよいし、汎用的なPLC(プログラマブルコントローラ)あるいはパーソナルコンピュータであってもよい。
【0055】
コントローラ100が提供する機能および処理の一部または全部をいわゆるクラウドと称されるネットワーク上のコンピューティングリソースを用いて実現してもよい。
【0056】
以上のように、本実施の形態に従うロボットシステム1は、どのような構成で実装してもよい。
【0057】
<C.アプローチ位置の校正処理>
次に、本実施の形態に従うアプローチ位置の校正処理について説明する。
【0058】
図5は、本実施の形態に従うアプローチ位置の校正処理の処理手順を示すフローチャートである。図5に示す各ステップは、コントローラ100のプロセッサ102がシステムプログラム112および/または制御プログラム114を実行することで実現されてもよい。
【0059】
図5を参照して、コントローラ100は、Rx/Ry/Z校正処理を実行する(ステップS1)。Rx/Ry/Z校正処理は、アプローチ位置を定義するための、Xt軸周りの角度Rx、Yt軸周りの角度Ry、Zt軸上の位置Zを決定する。
【0060】
続いて、コントローラ100は、X/Y/Rz校正処理を実行する(ステップS2)。X/Y/Rz校正処理は、アプローチ位置を定義するための、Xt軸上の位置X、Yt軸上の位置Y、Zt軸周りの角度Rzを決定する。
【0061】
コントローラ100は、Rx/Ry/Z校正処理において決定した情報、および、X/Y/Rz校正処理において決定した情報に基づいて、第2ワーク60の嵌合孔62の角(かど)に対応する位置および姿勢(以下、「受けワーク角位置」とも称す。)を決定する(ステップS3)。コントローラ100は、受けワーク角位置から予め定められたクリアランスΔXtc,ΔYtc,ΔZtcをオフセットして、アプローチ位置を算出する(ステップS4)。そして、処理は終了する。
【0062】
図6は、本実施の形態に従うアプローチ位置の校正処理により決定される位置関係を説明するための図である。図6を参照して、受けワーク角位置を(Xtl,Ytl,Ztl,Rxl,Ryl,Rzl)とすると、アプローチ位置は、(Xtl+ΔXtc,Ytl+ΔYtc,Ztl+ΔZtc,Rxl,Ryl,Rzl)と算出できる。すなわち、受けワーク角位置をクリアランスΔXtc,ΔYtc,ΔZtcだけそれぞれの軸に沿って平行移動させることで、アプローチ位置を決定できる。
【0063】
<D.Rx/Ry/Z校正処理>
次に、図5のRx/Ry/Z校正処理(ステップS1)の処理内容について説明する。
【0064】
(d1:基本的な考え方)
Rx/Ry/Z校正処理においては、第1ワーク50と第2ワーク60とが面倣い状態になる角度Rxおよび角度Ryを探索する。「面倣い状態」とは、一方の面と他方の面とが平行になる状態を意味する。図1に示すロボットシステム1においては、第1ワーク50の先端面52と、第1ワーク50を受け入れる第2ワーク60の面(以下、「受入面64」とも称す。)とが平行になっている状態が面倣い状態である。
【0065】
Rx/Ry/Z校正処理においては、一例として、Zt軸についての位置情報を用いて、面倣い状態を探索する。
【0066】
図7は、本実施の形態に従うRx/Ry/Z校正処理の処理内容を説明するための図である。図7を参照して、コントローラ100は、Zt軸について力制御を行う。より具体的には、コントローラ100は、把持機構20が把持した第1ワーク50を予め定められた力で第2ワーク60に押し付ける動作をロボットに実行させる。
【0067】
力制御において、コントローラ100は、Zt軸方向に発生する力Fzが目標値と一致するように、位置Zの指令を調整する。コントローラ100は、Xt軸上の位置XおよびYt軸上の位置Yについては位置制御を行う。このように、コントローラ100は、それぞれの目標値(目標位置)と一致するように位置Xおよび位置Yを調整する。力制御および位置制御は、任意に設定されるTCPに基づいて行われる。
【0068】
上述の力制御および位置制御が行われている状態において、Xt軸周りの角度RxまたはYt軸周りの角度Ryを変化させると、第2ワーク60に対する第1ワーク50の姿勢が変化する。すなわち、コントローラ100は、第1ワーク50を第2ワーク60に押し付けた状態で、第2ワーク60に対する第1ワーク50の姿勢を変化させる動作をロボットに実行させる。このとき、Zt軸についての力制御によって、第1ワーク50の先端面52の少なくとも一部は第2ワーク60の受入面64に接触した状態が維持される。
【0069】
コントローラ100は、第1ワーク50と第2ワーク60との距離に関連する評価指標に基づいて、第1ワーク50の第2ワーク60と接触する先端面52(第1面)と、第2ワーク60の第1ワーク50と接触する受入面64(第2面)とが平行(すなわち、面倣い)になる第1ワーク50の姿勢を探索する。
【0070】
評価指標は、第1ワーク50の先端面52に設定された計測ポイントに基づいて算出されてもよい。計測ポイントは、第1ワーク50に関連付けて設定される。この場合、評価指標は、計測ポイントのZt軸上の位置情報を反映する。
【0071】
面倣い状態において、計測ポイントの位置Z(ロボット座標系2)は最小値となる。図7のグラフに示すように、角度Rxまたは角度Ryの回転量を増加させると、面倣い状態において位置Zは最小値となる。面倣い状態から離れるに従って、第1ワーク50が傾くことになり、第1ワーク50の先端面52の角(かど)と第2ワーク60とが接触することで、位置Zは増加する。
【0072】
すなわち、角度Rxまたは角度Ryに関して位置ZはV字の軌跡を描くので、位置Zが極値(ピーク)または最小値となる角度Rxまたは角度Ryが面倣い状態であると判断できる。このように、コントローラ100は、角度Rxまたは角度Ryを変化させつつ、位置Zの変化を収集する。コントローラ100は、位置Zが極値となる姿勢(角度Rxまたは角度Ry)を面倣い状態として決定する。
【0073】
面倣い状態における位置Zに基づいて、面倣い状態における計測ポイントのZt軸上の位置を決定することもできる。
【0074】
(d2:TCPおよび計測ポイントの設定例)
次に、図5のRx/Ry/Z校正処理におけるTCPおよび計測ポイントの設定例について説明する。
【0075】
コントローラ100は、TCPの位置および姿勢に基づいてロボット10を制御する。すなわち、TCPは、ロボット10を制御するための目標値(位置および姿勢)を算出するために用いられる。TCPと計測ポイントとを一致させてもよいし、TCPとは異なる位置に計測ポイントを設定してもよい。
【0076】
面倣い状態を探索するためには、第1ワーク50の姿勢(角度Rxまたは角度Ry)の変化に応じて、計測ポイントの位置Zの変化量が大きい方が有利である。第1ワーク50のZt軸方向の変化量は、TCPの位置と第1ワーク50のXt軸方向の幅(長さ)およびYt軸方向の幅(長さ)とに依存する。
【0077】
図8は、本実施の形態に従うRx/Ry/Z校正処理におけるTCPおよび計測ポイントの設定例を説明するための図である。
【0078】
図8の(A)には、TCPと計測ポイントが一致している設定例を示す。図8の(A)を参照して、TCP(および、計測ポイント)は、第1ワーク50の先端面52の中心に設定されている。第1ワーク50の先端面52が四角形である場合には、対向する2辺の中点同士を結ぶ線と対向する別の2辺の中点同士を結ぶ線との交点、2つの対角線の交点、四角形の重心などにTCPを設定してもよい。あるいは、TCPおよび計測ポイントは、ツール座標系30のZt軸と第1ワーク50の先端面52との交点に設定されてもよい。
【0079】
図8の(B)には、TCPとは異なる位置に計測ポイントが設定されている例を示す。図8の(B)に示す設定例においては、TCPは、第1ワーク50の先端面52の中心に設定されている。このとき、計測ポイントは、力覚センサ18の位置に設定されてもよい。
【0080】
ロボット10の位置および姿勢を制御するための基準ポイント(TCP)は、第1ワーク50の先端面52の内側に設定されてもよい。さらに、TCPは、第1ワーク50の先端面52の中心に設定されてもよいし、先端面52とZt軸との交点に設定されてもよい。
【0081】
第1ワーク50の計測ポイントは、第1ワーク50の姿勢(角度Rxまたは角度Ry)を変化させたときに、第1ワーク50が傾いた状態において、第2ワーク60に接触する先端面52の2つの最外辺(対辺)の間に設定されてもよい。一方の最外辺は、第1ワーク50を第2ワーク60に対して一方の方向に傾けることで決定され、他方の最外辺は、第1ワーク50を第2ワーク60に対して逆の方向に傾けることで決定される。
【0082】
図9は、本実施の形態に従うRx/Ry/Z校正処理における計測ポイントの設定例を説明するための図である。
【0083】
図9を参照して、例えば、角度Rxを変化させて、第1ワーク50を傾ける場合には、最外辺56,57は、Xt軸に平行な2つの辺となり、Yt軸上の2つの位置で定義される。この場合、計測ポイントは、Yt軸上の最外辺56,57に対応する2つの位置の間(設定可能範囲58)に存在すれば、Xt軸上の位置はいずれであってもよい。すなわち、Yt軸上の2つの最外辺の間であれば、第1ワーク50が存在しない位置に計測ポイントが設定されてもよい。
【0084】
一方、角度Ryを変化させて、第1ワーク50を傾ける場合には、最外辺は、Yt軸に平行な2つの辺となり、Xt軸上の2つの位置で定義される。この場合、計測ポイントは、Xt軸上の最外辺に対応する2つの位置の間に存在すれば、Yt軸上の位置はいずれであってもよい。すなわち、Xt軸上の2つの最外辺の間であれば、第1ワーク50が存在しない位置に計測ポイントが設定されてもよい。
【0085】
さらに、計測ポイントのZt軸上の位置についてもいずれであってもよい。そのため、計測ポイントは、第1ワーク50の先端面52上の位置以外の位置に設定されてもよい。
【0086】
このように、計測ポイントは、計測ポイントを先端面52を含む面へ投影したときに、第1ワーク50の姿勢を変化させる動作において、受入面64と接触する先端面52の2つの最外辺によって規定される範囲内に、当該投影位置が存在するように設定してもよい。
【0087】
このような位置に計測ポイントを設定することで、面倣い状態を探索する処理において、極値の検出を容易化できる。
【0088】
(d3:評価指標)
次に、面倣い状態を探索するための評価指標について説明する。
【0089】
上述の図5においては、面倣い状態を探索するための評価指標として、計測ポイントの位置Zを例示したが、これに限らず、他の評価指標を用いることができる。
【0090】
例えば、第2ワーク60の受入面64がロボット座標系2(グローバル座標系)のいずれの軸とも平行ではない場合などには、受入面64からの距離の算出が煩雑化し得る。そのため、第2ワーク60に対して、受入面(設計値)66を設定した上で、受入面(設計値)66からの距離(Zt軸上の距離)を評価指標にしてもよい。
【0091】
図10は、本実施の形態に従うRx/Ry/Z校正処理において受入面(設計値)66からの距離を評価指標とした場合の処理内容を説明するための図である。コントローラ100は、Zt軸についての力制御を行う。
【0092】
図10を参照して、角度Rxまたは角度Ryに関して、受入面(設計値)66からの距離はV字の軌跡を描くので、受入面(設計値)66からの距離が極値となる角度Rxまたは角度Ryが面倣い状態であると判断できる。面倣い状態における位置Zに基づいて、面倣い状態におけるZt軸上の位置を決定することもできる。
【0093】
このように、評価指標は、第2ワーク60に予め設定された受入面(設計値)66から、ロボット10のアーム先端を基準としたツール座標系30において設定された計測ポイントまでの距離であってもよい。すなわち、評価指標は、第2ワーク60の受入面64に対して垂直方向における、受入面64とロボット10に設定した計測ポイントとの距離であってもよい。
【0094】
図7に示す計測ポイントの位置Z、および、図10に示す受入面(設計値)66からの距離を評価指標として用いる場合には、Zt軸についての位置情報から面倣い状態を探索するので、Zt軸についての力制御の変動要因に起因する影響を低減できる。また、受入面(設計値)66からの距離(Zt軸上の距離)を評価指標とした場合には、面倣い状態として決定された値をそのままアプローチ位置として用いることができる。
【0095】
また、受け入れ面(設計値)66からの距離をツール座標系30のZt軸上の位置で評価する場合には、TCPの位置変化をロボット座標系2に変換することなく、Zt軸上の位置そのままで評価できるので、第2ワーク60の配置姿勢が変化した場合でも、上述した面倣い状態を探索するアルゴリズムをそのまま利用できる。
【0096】
面倣い状態を探索するための別の評価指標として、Zt軸についての力制御に関する情報を用いてもよい。
【0097】
図11は、本実施の形態に従うZt軸についての力制御を実現する制御系の一例を示す模式図である。図11を参照して、コントローラ100は、第1ワーク50を予め定められた力で第2ワーク60に押し付けるための制御系を有している。
【0098】
より具体的には、コントローラ100は、力覚センサフィルタ120と、換算処理モジュール122と、差分器124と、サンプラ126と、力制御演算モジュール128と、リミッタ130と、ホールダ132と、加算器134とを含む。
【0099】
力覚センサフィルタ120は、力覚センサ18からの力覚情報をフィルタリングして出力する。フィルタリングにより、力覚情報に含まれるノイズ成分が低減される。
【0100】
換算処理モジュール122は、力覚センサフィルタ120からの力覚情報に基づいて、予め設定されたTCPに生じている力およびモーメントを算出する。換算処理モジュール122は、TCPにおいてZt軸方向に発生している力Fzを出力する。
【0101】
差分器124は、換算処理モジュール122から出力される力Fzと押付力の目標値(目標力)との差分である偏差を算出する。
【0102】
サンプラ126は、差分器124から出力される偏差をサンプリングして、力制御演算モジュール128に入力する。
【0103】
力制御演算モジュール128は、PID演算により、入力された偏差に対応する出力値を算出する。算出される出力値は、ロボット10に与えられるZt軸上の位置についての指令に相当する。
【0104】
リミッタ130は、力制御演算モジュール128から出力される値を予め定められた上下限値内に制限した上で出力する。
【0105】
力制御演算モジュール128は、サンプラ126が離散的に値を入力することに応じて、出力値を算出する。そのため、リミッタ130から出力される値も離散的になる。ホールダ132は、リミッタ130からの出力が停止しても、直前に入力された値を保持して出力し続ける。ホールダ132から出力される値がZ位置補正量(ΔZref)となる。
【0106】
加算器134は、TCPの目標位置・挙動(Xref,Yref,Zref,Rxref,Ryref,Rzref)に対して、Z位置補正量(ΔZref)を加算して、最終的な指令を算出する。すなわち、加算器134は、補正後目標位置・指令(Xref,Yref,Zref+ΔZref,Rxref,Ryref,Rzref)を出力する。
【0107】
図11に示すZ位置補正量を評価指標にしてもよい。すなわち、評価指標は、第1ワーク50を予め定められた力で第2ワーク60に押し付けるための、制御系が出力するロボット10に与えられる指令についての補正量であってもよい。
【0108】
図12は、本実施の形態に従うRx/Ry/Z校正処理においてZ位置補正量を評価指標とした場合の処理内容を説明するための図である。図12を参照して、角度Rxまたは角度Ryに関して、Z位置補正量はV字の軌跡を描くので、Z位置補正量が極値となる角度Rxまたは角度Ryが面倣い状態であると判断できる。面倣い状態における位置Zに基づいて、面倣い状態におけるZt軸上の位置Zを決定することもできる。
【0109】
図12に示すように、なお、面倣い状態でなければ、第1ワーク50は、第2ワーク60の受入面64に対して傾くことになる。先端面52のZt軸上の位置は、傾きの角度θに依存して変化する。したがって、Z位置補正量は、傾きの角度θに依存することになる。
【0110】
第1ワーク50の先端面52の幅(Xt軸方向またはYt軸方向)Wとすると、Z位置補正量は以下のように表すことができる。
【0111】
Z位置補正量=-(W/2)sin(|Δθ|)cos(|Δθ|)
このように、Z位置補正量は、角度θについての三角関数の二乗に依存する。そのため、Z位置補正量を用いることで、Zt軸についての位置情報を用いる場合に比較して、より高い感度で面倣い状態を探索できる。
【0112】
図13は、本実施の形態に従うRx/Ry/Z校正処理においてZ位置補正量を評価指標とした場合の処理結果の一例を示す図である。図13には、Xt軸周りの角度Rx(または、Yt軸周りの角度Ry)を変化させた場合の測定例を示す。図13には、面倣い状態から-2[deg]程度傾いた状態から処理を開始した例を示す。角度の回転速度は、-0.2[deg/s]であり、力Fzの目標値は-1[N]とした。
【0113】
図13には、Z位置補正量、軸周りのモーメント、Zt軸方向に発生する力Fz、および、角度の回転量の時間変化を示す。
【0114】
図13において、Z位置補正量が極値となる角度が面倣い状態であると判断できる。面倣い状態の前後において、Zt軸方向に発生する力Fzは大きく変化するものの、比較的大きなノイズが含まれているため、面倣い状態になる角度を正確に検出することが難しい。これに対して、Z位置補正量は、力Fzが大きく変化しても、当該変化による影響は小さいと言える。
【0115】
面倣い状態の前後において、軸周りのモーメントの変化が小さくなるので、軸周りのモーメントに基づいて面倣い状態になる角度を正確に検出することは難しい。これに対して、Z位置補正量は、面倣い状態において比較的先鋭なピークを示すので、面倣い状態になる角度をより正確に検出できる。
【0116】
Z位置補正量を用いることで、TCPのZt軸上の位置を正確に算出する必要がないので、面倣いの状態を探索するためのアルゴリズムを簡素化できる。
【0117】
なお、図11に示す制御系に代えて、位置制御ループの外側にZt軸についての力制御ループを設けたカスケード制御系を採用する場合には、面倣い状態を探索するための評価指標として、力制御の操作量となる位置補正量を用いてもよい。
【0118】
上述したいずれの評価指標を用いた場合であっても、評価指標は、面倣い状態において極値(極大値または極小値、あるいは、最大値または最小値)をとる。そのため、コントローラ100は、評価指標が極値となる位置および姿勢を、第1ワーク50の先端面52(第1面)と受入面64(第2面)とが平行(すなわち、面倣い)になる第1ワーク50の位置および姿勢として決定する。
【0119】
(d4:処理手順)
次に、Rx/Ry/Z校正処理のより詳細な処理手順について説明する。
【0120】
図14は、本実施の形態に従うRx/Ry/Z校正処理のより詳細な処理手順を示すフローチャートである。図14に示す各ステップは、コントローラ100のプロセッサ102がシステムプログラム112および/または制御プログラム114を実行することで実現されてもよい。
【0121】
Rx/Ry/Z校正処理において、Xt軸周りの角度Rxを変化させて面倣い状態となる角度(以下、「Rx校正値」とも称す。)を決定する処理と、Yt軸周りの角度Ryを変化させて面倣い状態となる角度(以下、「Ry校正値」とも称す。)を決定する処理との組が予め定められた校正回数だけ繰り返される。
【0122】
アプローチ位置の校正処理を開始する初期位置および初期姿勢(以下、「ラフティーチング位置」とも称す。)が予め設定されているとする。ラフティーチング位置は、ユーザがティーチングペンダント26を操作して設定してもよいし、第2ワーク60の大きさおよび配置位置の情報に基づいて予め算出されていてもよい。
【0123】
図14を参照して、コントローラ100は、現在の校正回数を0に初期化する(ステップS101)。
【0124】
コントローラ100は、ロボット10に指令を与えて、第1ワーク50をラフティーチング位置に移動させる(ステップS102)。移動完了後、コントローラ100は、力覚センサ18から出力されている力覚情報に基づいてオフセットを除去する(ステップS103)。コントローラ100は、第1ワーク50をラフティーチング位置に移動させた状態を初期状態とし、初期状態からの変化に応じて、Zt軸方向に発生する力Fzを算出する。ステップS103の処理は、力覚情報のオフセットを除去する処理に相当する。
【0125】
コントローラ100は、第1ワーク50と第2ワーク60とが非接触の状態で、力覚センサ18から出力されている力覚情報を初期値として設定する。コントローラ100は、力覚センサ18のオフセットを除去した上で、第1ワーク50の姿勢を検出する。このようなオフセットの除去は、探索処理を実行する毎に実行される。
【0126】
コントローラ100は、ロボット10に指令を与えて、TCPの角度Rxを開始角度に設定する(ステップS104)。例えば、現在のラフティーチング位置の角度Rxに対して-11[deg]となる角度を開始角度としてもよい。
【0127】
続いて、コントローラ100は、TCPのZt軸方向に発生する力Fzが目標値と一致するように、ロボット10に指令を与える(ステップS105)。この力制御は、Rx校正値が決定されるまで継続される。
【0128】
コントローラ100は、ロボット10に指令を与えて、TCPの角度Rxを開始角度から終了角度まで変化させる(ステップS106)とともに、Z位置補正量の時間変化を収集する(ステップS107)。
【0129】
TCPの角度Rxが終了角度まで変化した後、コントローラ100は、収集したZ位置補正量が極大値(あるいは、最大値;以下の処理において同様である)となる角度RxをRx校正値として決定する(ステップS108)。ラフティーチング位置の角度Rxは、決定されたRx校正値に更新される。
【0130】
なお、TCPの角度Rxを終了角度まで変化させるのではなく、収集したZ位置補正量が極大値となってから所定時間経過後に、Xt軸周りの回転を停止してもよい。
【0131】
ステップS103~S108の処理によって、Rx校正値が決定される。そして、コントローラ100は、ロボット10に指令を与えて、第1ワーク50を更新後のラフティーチング位置に移動させる(ステップS109)。続いて、Ry校正値を決定する処理が開始される。
【0132】
より具体的には、コントローラ100は、力覚センサ18から出力されている力覚情報に基づいてオフセットを除去する(ステップS110)。ステップS110の処理は、ステップS103の処理と同様に、力覚情報のオフセットを除去する処理に相当する。
【0133】
コントローラ100は、ロボット10に指令を与えて、TCPの角度Ryを開始角度に設定する(ステップS111)。例えば、現在のラフティーチング位置の角度Ryに対して-11[deg]となる角度を開始角度としてもよい。
【0134】
続いて、コントローラ100は、TCPのZt軸方向に発生する力Fzが目標値と一致するように、ロボット10に指令を与える(ステップS112)。この力制御は、Ry校正値が決定されるまで継続される。
【0135】
コントローラ100は、ロボット10に指令を与えて、TCPの角度Ryを開始角度から終了角度まで変化させる(ステップS113)とともに、Z位置補正量の時間変化を収集する(ステップS114)。
【0136】
TCPの角度Ryが終了角度まで変化した後、コントローラ100は、収集したZ位置補正量が極大値となる角度RyをRy校正値として決定する(ステップS115)。ラフティーチング位置の角度Ryは、決定されたRy校正値に更新される。
【0137】
なお、TCPの角度Ryを終了角度まで変化させるのではなく、収集したZ位置補正量が極大値となってから所定時間経過後に、Yt軸周りの回転を停止してもよい。
【0138】
ステップS110~S115の処理によって、Ry校正値が決定される。そして、コントローラ100は、ロボット10に指令を与えて、第1ワーク50を更新後のラフティーチング位置に移動させる(ステップS116)。
【0139】
コントローラ100は、校正回数を1だけインクリメントし(ステップS117)、インクリメント後の校正回数が予め定められた校正回数に到達したか否かを判断する(ステップS118)。インクリメント後の校正回数が予め定められた校正回数に到達していなければ(ステップS118においてNO)、ステップS103以下の処理が繰り返される。
【0140】
インクリメント後の校正回数が予め定められた校正回数に到達していれば(ステップS118においてYES)、コントローラ100は、第1ワーク50が第2ワーク60に接触する位置Z(以下、「Z校正値」とも称す。)を決定し(ステップS119)、Rx/Ry/Z校正処理は終了する。
【0141】
(d5:Rx/Ry/Z校正処理の動作例)
次に、Rx/Ry/Z校正処理の動作例について説明する。
【0142】
図15は、本実施の形態に従うRx/Ry/Z校正処理のZ校正値を決定する際の動作例を説明するための図である。図16は、本実施の形態に従うRx/Ry/Z校正処理のRy校正値を決定する際の動作例を説明するための図である。
【0143】
図14の処理手順に示すように、角度Rxおよび角度Ryを同時に校正することはできないので、1つの角度ずつ順番に校正する。なお、角度Rxおよび角度Ryの校正を複数回繰り返すことで、センサ誤差を低減できる。
【0144】
図15を参照して、コントローラ100は、第1ワーク50をラフティーチング位置に移動させて、力覚センサ18から出力されている力覚情報のオフセットを除去する(図15の(A):図14のステップS102およびS103)。
【0145】
続いて、コントローラ100は、TCPの角度Rxを開始角度に設定する(図15の(B):図14のステップS104)。例えば、開始角度は、ラフティーチング位置の角度Rxに対して-11[deg]としてもよい。
【0146】
続いて、コントローラ100は、第1ワーク50をZt軸方向に移動(下降)させて、Zt軸方向に発生する力Fzが目標値に到達すると移動を停止する(図15の(C):図14のステップS105)。すなわち、コントローラ100は、第1ワーク50を第2ワーク60に押し付ける。例えば、Zt軸方向の移動速度は1[mm/s]としてもよいし、力Fzの目標値は-3.5[N]としてもよい。
【0147】
続いて、コントローラ100は、Zt軸方向の力制御を行いながら、TCPの角度Rxを開始角度から終了角度まで変化させる(図15の(D):図14のステップS106)。すなわち、コントローラ100は、面倣い状態になる角度Rxを探索する。例えば、角度Rxの回転速度(変化速度)は0.4[deg/s]としてもよい。Z位置補正量が極大値となる角度RxがRx校正値となる。
【0148】
コントローラ100は、角度Rxが終了角度に到達すると、Xt軸周りの回転を停止させる(図14のステップS106)。なお、Z位置補正量が極大値となってから所定時間経過後に、Xt軸周りの回転を停止してもよい。
【0149】
最終的に、コントローラ100は、ラフティーチング位置の角度RxをRx校正値に更新し、第1ワーク50を更新後のラフティーチング位置に移動させる(図15の(E):図14のステップS108,S109)。
【0150】
図16を参照して、コントローラ100は、第1ワーク50を更新後のラフティーチング位置に移動させて、力覚センサ18から出力されている力覚情報のオフセットを除去する(図16の(A):図14のステップS109およびS110)。
【0151】
続いて、コントローラ100は、TCPの角度Ryを開始角度に設定する(図16の(B):図14のステップS111)。例えば、開始角度は、ラフティーチング位置の角度Ryに対して-11[deg]としてもよい。
【0152】
続いて、コントローラ100は、第1ワーク50をZt軸方向に移動(下降)させて、Zt軸方向に発生する力Fzが目標値に到達すると移動を停止する(図16の(C):図14のステップS112)。すなわち、コントローラ100は、第1ワーク50を第2ワーク60に押し付ける。例えば、Zt軸方向の移動速度は1[mm/s]としてもよいし、力Fzの目標値は-3.5[N]としてもよい。
【0153】
続いて、コントローラ100は、Zt軸方向の力制御を行いながら、TCPの角度Rxを開始角度から終了角度まで変化させる(図16の(D):図14のステップS113)。すなわち、コントローラ100は、面倣い状態になる角度Ryを探索する。例えば、角度Ryの回転速度(変化速度)は0.4[deg/s]としてもよい。Z位置補正量が極大値となる角度RyがRy校正値となる。
【0154】
コントローラ100は、角度Ryが終了角度に到達すると、Yt軸周りの回転を停止させる(図14のステップS113)。なお、Z位置補正量が極大値となってから所定時間経過後に、Yt軸周りの回転を停止してもよい。
【0155】
最終的に、コントローラ100は、ラフティーチング位置の角度RyをRy校正値に更新し、第1ワーク50を更新後のラフティーチング位置に移動させる(図16の(E):図14のステップS115,S116)。
【0156】
(d6:Z位置補正量の時間変化)
次に、面倣い状態を探索するための評価指標の一例であるZ位置補正量の時間変化について説明する。
【0157】
図17は、本実施の形態に従うRx/Ry/Z校正処理のZ位置補正量の時間変化を説明するための図である。説明の便宜上、図17においては、第1ワーク50と第2ワーク60との位置関係を強調して描いており、実際のワークの挙動とは必ずしも一致しない。
【0158】
図17の(A)を参照して、Rx/Ry/Z校正処理の初期状態(TCPの角度Rxが開始角度である状態)においては、第1ワーク50の左端点が第2ワーク60と接触している。この状態において、第1ワーク50の回転により接触点が移動するため、押付力である力Fzは目標値に到達していない。そのため、力Fzを目標値に一致させるために、Z位置補正量が増加する。
【0159】
その後、図17の(B)に示すように、第1ワーク50と第2ワーク60とが面倣い状態になったタイミングでも、第1ワーク50と第2ワーク60との接触が不十分であり、力Fzは目標値に到達していない。そのため、力Fzを目標値に一致させるために、Z位置補正量の増加も継続する。
【0160】
さらに、図17の(C)に示すように、面倣い状態を超えて第1ワーク50が傾くと、第1ワーク50と第2ワーク60とがさらに接触するため、力Fzは目標値に近付く。そのため、Z位置補正量の増加も緩やかになる。
【0161】
最終的に、図17の(D)に示すように、第1ワーク50の右端点が第2ワーク60と接触している状態において、押付力は安定する。
【0162】
上述したように、力Fzが目標値と一致するタイミングは、第1ワーク50と第2ワーク60とが面倣い状態になったタイミングに対して遅延し得る。但し、タイミングの遅延時間は、第1ワーク50を時計回りに回転させた場合と、第1ワーク50を反時計回りに回転させた場合との間で実質的に同じであると考えられる。
【0163】
そのため、第1ワーク50を両方向にそれぞれ回転させて計測した結果を平均することで、タイミングの遅延時間を打ち消すことができる。このような遅延時間の影響を低減することで、校正結果の精度を高めることができる。そこで、以下に説明するように、低速探索を採用してもよい。
【0164】
(d7:面倣い状態の探索)
図14には、第1ワーク50をXt軸周りに回転させてRx校正値を決定する処理と、第1ワーク50をYt軸周りに回転させてRy校正値を決定する処理とを交互に実行する処理例を示すが、Rx校正値およびRy校正値を決定する処理を高速探索および低速探索の2段階で行ってもよい。
【0165】
図14に示す高速探索においては、第1ワーク50をXt軸周りの一方向に回転させる処理と、第1ワーク50をYt軸周りの一方向に回転させる処理とを繰り返し実行する。これに対して、図18に示す低速探索においては、第1ワーク50をXt軸周りの両方向に回転させる処理と、第1ワーク50をYt軸周りの両方向に回転させる処理とを繰り返し実行する。すなわち、Xt軸周りおよびYt軸周りの各々について、往復回転させることで、Rx校正値およびRy校正値を決定する。
【0166】
低速探索において、第2ワーク60に対する第1ワーク50の姿勢を変化させる動作は、第1ワーク50を第2ワーク60に押し付ける方向(Zt軸方向)と直交する軸(Xt軸またはYt軸)の周りに、第1ワーク50を第1方向(例えば、時計回り)に回転させる動作(往路)と、第1ワーク50を第1方向とは反対方向である第2方向(例えば、反時計周り)に回転させる動作とを含む。
【0167】
すなわち、低速検索においては、回転方向を異ならせて、アプローチ位置(Rx校正値および/またはRy校正値)を更新する。より具体的には、第1ワーク50を第1方向に回転させて面倣い状態になる姿勢を探索した後、第1ワーク50を第2方向に回転させて面倣い状態になる姿勢を探索することで、アプローチ位置(Rx校正値および/またはRy校正値)を更新する。
【0168】
なお、低速探索において、第1ワーク50を第1方向(例えば、時計回り)に回転させる動作(往路)、および、第1ワーク50を第1方向とは反対方向である第2方向(例えば、反時計周り)に回転させる動作は、複数回繰り返されてもよい。
【0169】
また、低速探索においては、第1ワーク50を回転させる回転速度(変化速度)(絶対値)を高速探索の回転速度に比較して小さくしてもよい。すなわち、低速探索において、第2ワーク60に対する第1ワーク50の姿勢を変化させる動作は、第2ワーク60に対する第1ワーク50の姿勢を第1変化速度で変化させる動作と、第2ワーク60に対する第1ワーク50の姿勢を第1変化速度とは異なる第2変化速度で変化させる動作とを含んでもよい。なお、第2変化速度の絶対値は、第1変化速度の絶対値より小さくなるように設定されてもよい。
【0170】
このように、第1ワーク50の姿勢を変化させる変化速度は、面倣い状態を探索する処理に応じて異ならせてもよい。典型的には、面倣い状態の探索回数が増加するほど、変化速度を低減させてもよい。
【0171】
図18および図19は、本実施の形態に従うRx/Ry/Z校正処理に含まれる低速探索の処理手順を示すフローチャートである。図18および図19に示す処理は、図14に示すステップS116の実行後、または、ステップS118においてYESの後に実行されてもよい。
【0172】
図18を参照して、コントローラ100は、力覚センサ18から出力されている力覚情報に基づいてオフセットを除去する(ステップS120)。なお、第1ワーク50は、更新後のラフティーチング位置に配置されている。
【0173】
コントローラ100は、ロボット10に指令を与えて、TCPの角度Rxを開始角度に設定する(ステップS121)。例えば、現在のラフティーチング位置の角度Rxに対して-2.5[deg]となる角度を開始角度としてもよい。
【0174】
続いて、コントローラ100は、TCPのZt軸方向に発生する力Fzが目標値と一致するように、ロボット10に指令を与える(ステップS122)。この力制御は、Rx校正値が決定されるまで継続される。
【0175】
コントローラ100は、ロボット10に指令を与えて、TCPの角度Rxを所定の回転速度で回転させる(ステップS123)とともに、Z位置補正量の時間変化を収集する(ステップS124)。例えば、角度Rxの回転速度(変化速度)は0.28[deg/s]としてもよい。
【0176】
コントローラ100は、Z位置補正量が極大値となったか否かを判断する(ステップS125)。Z位置補正量が極大値となれば(ステップS125においてYES)、コントローラ100は、Z位置補正量が極大値となる角度RxをRx校正値(往路)として決定する(ステップS126)。
【0177】
コントローラ100は、Z位置補正量が極大値となってから所定時間経過後に、ロボット10に指令を与えて、Xt軸周りの回転を停止させる(ステップS127)。
【0178】
コントローラ100は、ロボット10に指令を与えて、TCPの角度Rxを所定の回転速度で逆回転させる(ステップS128)とともに、Z位置補正量の時間変化を収集する(ステップS129)。例えば、角度Rxの回転速度(変化速度)は-0.28[deg/s]としてもよい。
【0179】
コントローラ100は、Z位置補正量が極大値となったか否かを判断する(ステップS130)。Z位置補正量が極大値となれば(ステップS130においてYES)、コントローラ100は、Z位置補正量が極大値となる角度RxをRx校正値(復路)として決定する(ステップS131)。
【0180】
コントローラ100は、Z位置補正量が極大値となってから所定時間経過後に、ロボット10に指令を与えて、Xt軸周りの回転を停止させる(ステップS132)。
【0181】
コントローラ100は、Rx校正値(往路)(ステップS126)、および、Rx校正値(復路)(ステップS131)に基づいて、Rx校正値を決定する(ステップS133)。例えば、Rx校正値(往路)とRx校正値(復路)との平均をRx校正値として決定してもよい。ラフティーチング位置の角度Rxは、決定されたRx校正値に更新される。
【0182】
このように、コントローラ100は、第1ワーク50を第1方向に回転することで決定された第1ワーク50の第1姿勢と、第1ワーク50を第2方向に回転することで決定された第1ワーク50の第2姿勢との平均を、第1ワーク50の先端面52と第2ワーク60の受入面64とが平行になる第1ワーク50の姿勢として決定する。すなわち、往復動作において、面倣い状態であるか否かを判断し、往路において決定した第1ワーク50の姿勢と、復路において決定した第1ワーク50の姿勢との平均を面倣い状態に対応する姿勢として決定してもよい。
【0183】
ステップS120~S133の処理によって、低速探索によるRx校正値が決定される。そして、コントローラ100は、ロボット10に指令を与えて、第1ワーク50を更新後のラフティーチング位置に移動させる(ステップS134)。
【0184】
図19を参照して、コントローラ100は、力覚センサ18から出力されている力覚情報に基づいてオフセットを除去する(ステップS135)。
【0185】
コントローラ100は、ロボット10に指令を与えて、TCPの角度Ryを開始角度に設定する(ステップS136)。例えば、現在のラフティーチング位置の角度Ryに対して-2.5[deg]となる角度を開始角度としてもよい。
【0186】
続いて、コントローラ100は、TCPのZt軸方向に発生する力Fzが目標値と一致するように、ロボット10に指令を与える(ステップS137)。この力制御は、Ry校正値が決定されるまで継続される。
【0187】
コントローラ100は、ロボット10に指令を与えて、TCPの角度Ryを所定の回転速度で回転させる(ステップS138)とともに、Z位置補正量の時間変化を収集する(ステップS139)。例えば、角度Ryの回転速度(変化速度)は0.28[deg/s]としてもよい。
【0188】
コントローラ100は、Z位置補正量が極大値となったか否かを判断する(ステップS140)。Z位置補正量が極大値となれば(ステップS140においてYES)、コントローラ100は、Z位置補正量が極大値となる角度RyをRy校正値(往路)として決定する(ステップS141)。
【0189】
コントローラ100は、Z位置補正量が極大値となってから所定時間経過後に、ロボット10に指令を与えて、Yt軸周りの回転を停止させる(ステップS142)。
【0190】
コントローラ100は、ロボット10に指令を与えて、TCPの角度Ryを所定の回転速度で逆回転させる(ステップS143)とともに、Z位置補正量の時間変化を収集する(ステップS144)。例えば、角度Ryの回転速度(変化速度)は-0.28[deg/s]としてもよい。
【0191】
コントローラ100は、Z位置補正量が極大値となったか否かを判断する(ステップS145)。Z位置補正量が極大値となれば(ステップS145においてYES)、コントローラ100は、Z位置補正量が極大値となる角度RyをRy校正値(復路)として決定する(ステップS146)。
【0192】
コントローラ100は、Z位置補正量が極大値となってから所定時間経過後に、ロボット10に指令を与えて、Yt軸周りの回転を停止させる(ステップS147)。
【0193】
コントローラ100は、Ry校正値(往路)(ステップS141)、および、Rx校正値(復路)(ステップS146)に基づいて、Ry校正値を決定する(ステップS148)。例えば、Ry校正値(往路)とRy校正値(復路)との平均をRy校正値として決定してもよい。ラフティーチング位置の角度Ryは、決定されたRy校正値に更新される。
【0194】
このように、コントローラ100は、第1ワーク50を第1方向に回転することで決定された第1ワーク50の第1姿勢と、第1ワーク50を第2方向に回転することで決定された第1ワーク50の第2姿勢との平均を、第1ワーク50の先端面52と第2ワーク60の受入面64とが平行になる第1ワーク50の姿勢として決定する。
【0195】
ステップS135~S148の処理によって、低速探索によるRy校正値が決定される。そして、コントローラ100は、ロボット10に指令を与えて、第1ワーク50を更新後のラフティーチング位置に移動させる(ステップS149)。
【0196】
コントローラ100は、低速探索が予め定められた校正回数だけで実行されたか否かを判断する(ステップS150)。低速探索が予め定められた校正回数まで実行されていなければ(ステップS150においてNO)、ステップS120以下の処理が繰り返される。
【0197】
低速探索が予め定められた校正回数まで実行されていれば(ステップS150においてYES)、低速探索は終了する。
【0198】
上述したように、片道探索である高速探索と、往復探索である低速探索との2段階で面倣い状態に対応するアプローチ位置を決定してもよい。
【0199】
高速探索と低速探索とを組み合わせたアプローチ位置の校正処理において、コントローラ100は、第1ワーク50を第2ワーク60に押し付ける方向(Zt軸方向)と直交する軸(Xt軸またはYt軸)の周りに、第1ワーク50を第1方向(例えば、時計回り)にのみ回転することで探索された結果に基づいて、第1ワーク50の先端面52と第2ワーク60の受入面64とが平行になる第1ワーク50の姿勢を決定する。続いて、コントローラ100は、第1ワーク50を第1方向に回転することで探索された結果、および、第1ワーク50を第2方向に回転することで探索された結果に基づいて、第1ワーク50の先端面52と第2ワーク60の受入面64とが平行になる第1ワーク50の姿勢を更新する。
【0200】
なお、コントローラ100は、第1ワーク50を第1方向にのみ回転させる場合には、第1ワーク50を第1変化速度で回転させ、第1ワーク50を第1方向および第2方向に回転させる場合には、第1ワーク50を第1変化速度より小さい第2変化速度で回転させる。
【0201】
(d8:第1ワーク50が第2ワーク60に接触するZ校正値の決定処理)
次に、第1ワーク50が第2ワーク60に接触するZ校正値を決定する処理(図14のステップS119)について説明する。
【0202】
Rx校正値を決定する処理、および、Ry校正値を決定する処理において、Rx校正値および/またはRy校正値として角度Rxおよび/または角度Ryを採用したときの位置ZをZ校正値として取得しておいてもよい。なお、Z校正値は、複数回取得されることになるので、平均などを採用してもよい。
【0203】
あるいは、Rx校正値およびRy校正値を決定した上で、第1ワーク50が第2ワーク60に接触する位置Z(Z校正値)を改めて探索してもよい。
【0204】
図20は、本実施の形態に従うRx/Ry/Z校正処理のZ校正値を決定する処理を説明するための図である。図20の(A)を参照して、第1ワーク50を更新後のラフティーチング位置に配置した状態で、力覚センサ18から出力されている力覚情報に基づいてオフセットを除去する(オフセット除去)。そして、コントローラ100は、第1ワーク50をZt軸方向に移動(下降)させる。
【0205】
図20の(B)を参照して、Zt軸方向に発生する力Fzが目標値に到達すると、当該タイミングの位置Zを第1ワーク50が第2ワーク60に接触するZ校正値として決定する。決定されたZ校正値は、第2ワーク60の接触面(受入面64)の位置を示す。Z校正値は、ワーク面高さに相当する。その後、図20の(B)を参照して、第1ワーク50を予め定められたアプローチ距離だけZt軸方向に移動(上昇)させる。
【0206】
以上のような処理によって、第1ワーク50が第2ワーク60に接触する位置Z(Z校正値)を決定できる。
【0207】
(d9:変形例)
上述したRx/Ry/Z校正処理においては、Xt軸周りの角度Rx(Rx校正値)、Yt軸周りの角度Ry(Ry校正値)、および、Zt軸上の位置Z(Z校正値)を決定するが、一部の校正値のみを決定するようにしてもよい。
【0208】
例えば、Xt軸およびYt軸のうち一方について位置関係が固定されているような場合には、可動できる軸についてのみ面倣い状態を探索することになる。そのため、Rx校正値を決定する処理(図14のステップS103~S108)と、Ry校正値を決定する処理(図14のステップS110~S115)とのうち一方のみを1または複数回実行するようにしてもよい。
【0209】
あるいは、Xt軸周りの角度RxおよびYt軸周りの角度Ryのうち一方について、予め値が定められているような場合にも、Rx校正値を決定する処理と、Ry校正値を決定する処理とのうち一方のみを1または複数回実行するようにしてもよい。
【0210】
あるいは、Xt軸周りの角度RxおよびYt軸周りの角度Ryのうち一方について、ユーザがティーチングペンダント26を操作することで決定してもよい。
【0211】
また、第1ワーク50が第2ワーク60に接触する位置Z(Z校正値)については、予め定められた設計値を用いるようにしてもよい。この場合には、図14のステップS119の処理などは省略できる。
【0212】
さらに、Rx/Ry/Z校正処理によって、Xt軸周りの角度Rxおよび/またはYt軸周りの角度Ryを決定した後に、ユーザがティーチングペンダント26を操作して、第1ワーク50と第2ワーク60とを接触させることで、Z校正値を決定してもよい。
【0213】
以上のように、Rx/Ry/Z校正処理に含まれる処理の一部のみを実行することも本発明の技術的範囲に含まれる。
【0214】
(d10:小括)
アプローチ位置の決定において、角度Rxおよび/または角度Ryが正しく校正されないと、第1ワーク50と第2ワーク60とが十分に嵌合できないため、第1ワーク50を第2ワーク60に挿入できない可能性がある。また、角度Rxおよび/または角度Ryが適切に校正されないと、第1ワーク50と第2ワーク60との間で位置X、位置Yおよび角度Rzが一致していないにもかかわらず、ロボット10に生じるたわみにより、第1ワーク50と第2ワーク60とが嵌合されていると誤検出される可能性がある。
【0215】
また、アプローチ位置の決定において、位置Zが第2ワーク60の受入面64が正しく校正されていないと、第1ワーク50を挿入しすぎて、ワーク同士が干渉する可能性がある。クリアランスが狭い場合には、第1ワーク50を第2ワーク60に挿入できない可能性がある。
【0216】
Rx/Ry/Z校正処理は、このようなワーク同士の干渉および嵌合状態の誤検出などの発生を抑制する。
【0217】
上述したように、Rx/Ry/Z校正処理は、評価指標に基づいて面倣い状態を判断し、角度Rx、角度Ry、位置Zを校正する。Rx/Ry/Z校正処理においては、第1ワーク50を第2ワーク60に力制御により押し付けた状態を維持しつつ、第1ワーク50の姿勢を変化させる。そして、第1ワーク50の押し付け方向の位置変化、または、第1ワーク50と第2ワーク60との相対距離に基づいて、第1ワーク50と第2ワーク60との面倣い状態を判断し、アプローチ位置の角度Rx、角度Ry、位置Zのうち少なくとも1つを決定する。
【0218】
評価指標としては、ロボット座標系における高さに加えて、力制御において算出されるZ位置補正量を用いてもよい。評価指標としてZ位置補正量を用いる場合には、Z位置補正量が極大値(または、最大値)となるタイミングを探索する。Z位置補正量を用いることで、Zt軸方向の高さを求めるための第2ワーク60の姿勢を考慮した座標変換が不要になる。
【0219】
本実施の形態によれば、アプローチ位置の校正処理により、ラフティーチング位置からアプローチ位置を最適化することで、ティーチングに要する時間を低減できる。アプローチ位置を最適化することで、実運用において、第1ワーク50と第2ワーク60との配置誤差が生じても、探り動作に要する時間を短縮できる。
【0220】
面倣い状態の判断において、第1ワーク50の位置情報を用いるので、力覚センサ18のオフセットおよびヒステリシス、力制御の目標値(目標力)の大きさ、回転速度(変化速度)の大きさ、といった力の変動要因からの影響を受けにくく、校正精度を向上できる。
【0221】
<E.X/Y/Rz校正処理>
次に、図5のX/Y/Rz校正処理(ステップS2)の処理内容について説明する。
【0222】
(e1:基本的な考え方)
X/Y/Rz校正処理においては、第2ワーク60の嵌合孔62の内面を規定する2つの方向ベクトルを決定し、2つの方向ベクトルから嵌合孔62の角(かど)を示すXtYt原点の位置(座標)を決定する。より具体的には、第1ワーク50を嵌合孔62の隣り合う2つの内面(以下、「第1面」および「第2面」とも称す。)に接触させた状態で、Xt-Yt座標上で第1ワーク50を移動させることで、第1面に対応する第1方向ベクトルおよび第2面に対応する第2方向ベクトルを決定する。第1方向ベクトルおよび第2方向ベクトルの各々は、Xt軸およびYt軸の成分を含む。
【0223】
このように、X/Y/Rz校正処理においては、第1ワーク50と第2ワーク60とが接触する位置を基準にして、嵌合孔62に対応する方向ベクトルを算出することで、位置X、位置Yおよび角度Rzを校正する。第1ワーク50を、第2ワーク60の受入面64に対して傾けた状態で、第2ワーク60と非接触の状態を維持しつつ、嵌合孔62に挿入する。続いて、第1ワーク50を、受入面64の1または複数の面に接触させることで、複数の位置計測点の座標を取得する。取得した位置計測点の座標に基づいて、各面に対応する方向ベクトルを算出する。
【0224】
図21は、本実施の形態に従うX/Y/Rz校正処理の第1方向ベクトルを決定する処理を説明するための図である。
【0225】
まず、第1ワーク50は、第2ワーク60から離れたZt軸上の位置に、Rx/Ry/Z校正処理によって決定されたRx校正値およびRy校正値の姿勢で配置される。この状態において、第1ワーク50の先端面と第2ワーク60の受入面64とは実質的に平行となっている。続いて、第1ワーク50は、Rx校正値から所定の傾斜角度だけ傾けられるとともに、Ry校正値から所定の傾斜角度だけ傾けられる。なお、Xt軸およびYt軸についての傾斜角度は同一であってもよいし、異なっていてもよい。
【0226】
図21の(A)に示すように、第1ワーク50は、傾いた状態で第2ワーク60の嵌合孔62に挿入される。すなわち、コントローラ100は、ロボット10に、把持機構20が把持した第1ワーク50を、第2ワーク60と非接触の状態を維持しつつ、嵌合孔62に挿入する動作を実行させる。なお、第1ワーク50を傾いた状態で第2ワーク60の嵌合孔62に挿入する動作は、ユーザがティーチングペンダント26を操作することで行ってもよい。
【0227】
第1ワーク50は傾いているので、先端面の1つの角(かど)が第2ワーク60の嵌合孔62の第1面68に接近する。コントローラ100は、ロボット10に指令を与えて、第1ワーク50の1つの角(かど)を嵌合孔62の第1面68に押し付ける(例えば、3[N])。
【0228】
続いて、図21の(B)に示すように、コントローラ100は、ロボット10に指令を与えて、第1ワーク50の1つの角(かど)を嵌合孔62の第1面68に押し付けた状態で、第1ワーク50を第1面68に沿って移動させる。
【0229】
第1ワーク50の1つの角(かど)が第2面69に近付くと、第1ワーク50は第2面69からの反力を受ける。コントローラ100は、第2面69からの反力を受けると、当該反力を受けた位置より手前の位置計測点Loc1(例えば、1mm手前)を示す座標(Xt軸およびYt軸の成分)を取得する。
【0230】
続いて、図21の(C)に示すように、コントローラ100は、ロボット10に指令を与えて、第1ワーク50の1つの角(かど)を嵌合孔62の第1面68に押し付けた状態で、第1ワーク50を第1面68に沿って第2面69とは反対方向に移動させる。
【0231】
第1ワーク50の1つの角(かど)が第2面69に対向する面に近付くと、第1ワーク50は反力を受ける。コントローラ100は、反力を受けると、当該反力を受けた位置より手前の位置計測点Loc2(例えば、1mm手前)を示す座標(Xt軸およびYt軸の成分)を取得する。
【0232】
このように、第1ワーク50の第1面68に沿った移動中において、予め定められた値を超える反力を受けた位置から予め定められた距離だけ手前の位置計測点Loc1,Loc2の座標が取得される。
【0233】
続いて、図21の(D)に示すように、コントローラ100は、位置計測点Loc1および位置計測点Loc2に基づいて、第1方向ベクトルVec1(=Loc2-Loc1)を算出する。
【0234】
このように、コントローラ100は、第1ワーク50を嵌合孔62の1つの内面である第1面68に押し付けた状態で、第1ワーク50を第1面68に沿って移動させる動作を実行させる。そして、コントローラ100は、第1ワーク50の第1面68に沿った移動の情報に基づいて第1面68に対応する第1方向ベクトルVec1を算出する。
【0235】
初期設定されていた嵌合孔62の第1面68の方向と、算出された第1方向ベクトルVec1が示す方向との角度差で角度Rzを補正し、補正後の角度RzをRz校正値として決定する。このように、コントローラ100は、第1方向ベクトルVec1に基づいて、Rz校正値を決定する。Rz校正値は、第1ワーク50を第2ワーク60の嵌合孔62に嵌合させるための基準姿勢を示す。なお、Rz校正値は、後述する第2方向ベクトルVec2に基づいて決定することもできる。
【0236】
なお、角度Rzの基準方向と第1方向ベクトルVec1が示す方向とがなす角度をRz校正値として決定してもよい。
【0237】
図22は、本実施の形態に従うX/Y/Rz校正処理の第2方向ベクトルを決定する処理を説明するための図である。
【0238】
次に、図22の(A)に示すように、第1ワーク50は、先端面の1つの角(かど)が第2ワーク60の嵌合孔62の第2面69に接近した位置に配置される。
【0239】
コントローラ100は、ロボット10に指令を与えて、第1ワーク50の1つの角(かど)を嵌合孔62の第2面69に押し付ける(例えば、3[N])。
【0240】
続いて、図22の(B)に示すように、コントローラ100は、ロボット10に指令を与えて、第1ワーク50の1つの角(かど)を嵌合孔62の第2面69に押し付けた状態で、第1ワーク50を第2面69に沿って移動させる。
【0241】
第1ワーク50の1つの角(かど)が第1面68に対向する面に近付くと、第1ワーク50は第1面68に対向する面からの反力を受ける。コントローラ100は、第1面68に対向する面からの反力を受けると、当該反力を受けた位置より手前の位置計測点Loc3(例えば、1mm手前)を示す座標(Xt軸およびYt軸の成分)を取得する。
【0242】
続いて、図22の(C)に示すように、コントローラ100は、ロボット10に指令を与えて、第1ワーク50の1つの角(かど)を嵌合孔62の第2面69に押し付けた状態で、第1ワーク50を第2面69に沿って第1面68の方向に移動させる。
【0243】
第1ワーク50の1つの角(かど)が第1面68に近付くと、第1ワーク50は反力を受ける。コントローラ100は、反力を受けると、当該反力を受けた位置より手前の位置計測点Loc4(例えば、1mm手前)を示す座標(Xt軸およびYt軸の成分)を取得する。
【0244】
このように、第1ワーク50の第2面69に沿った移動中において、予め定められた値を超える反力を受けた位置から予め定められた距離だけ手前の位置計測点Loc3,Loc4の座標が取得される。
【0245】
続いて、図22の(D)に示すように、コントローラ100は、位置計測点Loc3および位置計測点Loc4に基づいて、第2方向ベクトルVec2(=Loc4-Loc3)を算出する。
【0246】
このように、コントローラ100は、第1ワーク50を嵌合孔62の第1面68の隣にある内面である第2面69に押し付けた状態で、第1ワーク50を第2面69に沿って移動させる動作を実行させる。そして、コントローラ100は、第1ワーク50の第2面69に沿った移動の情報に基づいて第2面69に対応する第2方向ベクトルVec2を算出する。
【0247】
図21および図22に示す処理によって、第1方向ベクトルVec1および第2方向ベクトルVec2を算出できる。すなわち、コントローラ100は、第1方向ベクトルVec1および第2方向ベクトルVec2に基づいて、XtYt原点を算出する。XtYt原点は、嵌合孔62の角(かど)に対応する座標であり、第1ワーク50を第2ワーク60の嵌合孔62に嵌合させるための位置基準を示す。
【0248】
図23は、本実施の形態に従うX/Y/Rz校正処理のXtYt原点を決定する処理を説明するための図である。図23を参照して、コントローラ100は、Xt-Yt座標上で、第1方向ベクトルVec1と第2方向ベクトルVec2との交点を算出し、算出された交点をXtYt原点として決定する。
【0249】
すなわち、コントローラ100は、第1方向ベクトルVec1と第2方向ベクトルVec2との交点を示すXt軸上の位置XおよびYt軸上の位置Yを、原点を示す校正値として決定する。第1方向ベクトルVec1を含む面、および、第2方向ベクトルVec2を含む面の交線上にXtYt原点を決定してもよい。以下では、XtYt原点の位置Xを「X校正値」とも称し、XtYt原点の位置Yを「Y校正値」とも称す。
【0250】
上述したように、コントローラ100は、第1方向ベクトルVec1および第2方向ベクトルVec2の少なくとも一方に基づいて、第1ワーク50を嵌合孔62に嵌合させるための第1ワーク50の位置および姿勢の少なくとも一方を決定する。
【0251】
より具体的には、コントローラ100は、第1方向ベクトルVec1および第2方向ベクトルVec2のうち少なくとも1つに基づいて、嵌合孔の角度であるRz校正値を決定する。なお、第1方向ベクトルVec1に基づいてRz校正値(暫定値)を決定するとともに、第2方向ベクトルVec2に基づいてRz校正値(暫定値)を決定した上で、決定された複数のRz校正値(暫定値)の平均をRz校正値として最終的に出力してもよい。
【0252】
また、コントローラ100は、第1方向ベクトルVec1および第2方向ベクトルVec2に基づいて、嵌合孔62の位置基準となるXtYt原点を決定してもよい。
【0253】
(e2:処理手順)
次に、X/Y/Rz校正処理のより詳細な処理手順について説明する。
【0254】
図24および図25は、本実施の形態に従うX/Y/Rz校正処理のより詳細な処理手順を示すフローチャートである。図24および図25に示す各ステップは、コントローラ100のプロセッサ102がシステムプログラム112および/または制御プログラム114を実行することで実現されてもよい。
【0255】
図24を参照して、コントローラ100は、ロボット10に指令を与えて、第1ワーク50を、第2ワーク60の上側にRx校正値およびRy校正値の姿勢で配置する(ステップS201)。続いて、コントローラ100は、ロボット10に指令を与えて、第1ワーク50を、Rx校正値から所定の傾斜角度だけ傾けるとともに、Ry校正値から所定の傾斜角度だけ傾ける(ステップS202)。さらに、コントローラ100は、ロボット10に指令を与えて、第1ワーク50を、第2ワーク60の嵌合孔62に挿入する(ステップS203)。
【0256】
続いて、コントローラ100は、ロボット10に指令を与えて、第1ワーク50の1つの角(かど)を嵌合孔62の第1面68に押し付け(ステップS204)、第1ワーク50を第1面68に沿って第2面69の方向に移動させる(ステップS205)。コントローラ100は、予め定められた値を超える反力を受けたか否かを判断する(ステップS206)。
【0257】
予め定められた値を超える反力を受けると(ステップS206においてYES)、コントローラ100は、第1ワーク50を第1面68に沿って第2面69とは反対方向に所定距離だけ戻し(ステップS207)、当該戻った位置を第1位置計測点として、第1位置計測点の座標を取得する(ステップS208)。なお、第1位置計測点を決定する場合には、第1ワーク50の1つの角(かど)を嵌合孔62の第1面68に押し付ける力を所定値(例えば、1[N])まで低減してもよい(詳細は後述する。他の位置計測点を決定する場合も同様である)。
【0258】
コントローラ100は、ロボット10に指令を与えて、第1ワーク50の1つの角(かど)を嵌合孔62の第1面68に押し付けた状態で、第1ワーク50を第1面68に沿って第2面69とは反対方向に移動させる(ステップS209)。コントローラ100は、予め定められた値を超える反力を受けたか否かを判断する(ステップS210)。
【0259】
予め定められた値を超える反力を受けると(ステップS210においてYES)、コントローラ100は、第1ワーク50を第1面68に沿って第2面69の方向に所定距離だけ戻し(ステップS211)、当該戻った位置を第2位置計測点として、第2位置計測点の座標を取得する(ステップS212)。
【0260】
コントローラ100は、第1位置計測点の位置および第2位置計測点の位置に基づいて、第1方向ベクトルVec1を算出する(ステップS213)。
【0261】
コントローラ100は、第1方向ベクトルVec1に基づいてRz校正値を決定する(ステップS214)。すなわち、コントローラ100は、初期設定されていた嵌合孔62の第1面68の方向と、算出された第1方向ベクトルVec1が示す方向との角度差で角度Rzを補正し、補正後の角度RzをRz校正値として決定する。
【0262】
図25を参照して、続いて、コントローラ100は、ロボット10に指令を与えて、第1ワーク50の別の1つの角(かど)を嵌合孔62の第2面69に押し付け(ステップS215)、第1ワーク50を第2面69に沿って第1面68とは反対方向に移動させる(ステップS216)。コントローラ100は、予め定められた値を超える反力を受けたか否かを判断する(ステップS217)。
【0263】
予め定められた値を超える反力を受けると(ステップS217においてYES)、コントローラ100は、第1ワーク50を第2面69に沿って第1面68の方向に所定距離だけ戻し(ステップS218)、当該戻った位置を第3位置計測点として、第3位置計測点の座標を取得する(ステップS219)。
【0264】
コントローラ100は、ロボット10に指令を与えて、第1ワーク50の1つの角(かど)を嵌合孔62の第2面69に押し付けた状態で、第1ワーク50を第2面69に沿って第1面68の方向に移動させる(ステップS220)。コントローラ100は、予め定められた値を超える反力を受けたか否かを判断する(ステップS221)。
【0265】
予め定められた値を超える反力を受けると(ステップS221においてYES)、コントローラ100は、第1ワーク50を第2面69に沿って第1面68とは反対方向に所定距離だけ戻し(ステップS222)、当該戻った位置を第4位置計測点として、第4位置計測点の座標を取得する(ステップS223)。
【0266】
コントローラ100は、第3位置計測点の位置および第4位置計測点の位置に基づいて、第2方向ベクトルVec2を算出する(ステップS224)。
【0267】
コントローラ100は、第1方向ベクトルVec1と第2方向ベクトルVec2とに基づいて、XtYt原点を算出し(ステップS225)、算出したXtYt原点からX校正値およびY校正値を決定する(ステップS226)。そして、処理は終了する。
(e3:位置計測の高精度化)
次に、方向ベクトルを算出するための位置をより高精度に計測する変形例について説明する。
【0268】
図26は、本実施の形態に従うX/Y/Rz校正処理の方向ベクトルを算出するための位置計測方法の一例を説明するための図である。
【0269】
図26を参照して、第1ワーク50の1つの角(かど)を嵌合孔62のいずれかの面に押し付ける際に、力制御の目標値が所定値(例えば、5[N])以上であると、把持機構20(図1参照)などが数100μmオーダで弾性変形し得る。このような弾性変形によって、計測される位置の精度が低下し得る。
【0270】
例えば、位置を取得する位置計測点において、力制御の目標値を弾性変形が生じない目標値(例えば、1[N]程度)に低下させてもよい。なお、目標値は、力覚センサ18からの力覚情報により検出可能な力の最小値に対して、所定のマージンをもつ値とすることが好ましい。力制御の目標値を変更することで、位置の計測精度を向上できる。
【0271】
このように、コントローラ100は、ロボット10に、位置計測点Loc1,Loc2において、第1面68に対する第1ワーク50の押付力を低減する動作を実行させるとともに、位置計測点Loc3,Loc4において、第2面69に対する第1ワーク50の押付力を低減する動作とを実行させる。
【0272】
このような動作によって、ロボット10に生じ得る弾性変形に起因する誤差を低減でき、方向ベクトルの算出精度を向上できる。
【0273】
また、ある程度の弾性変形が生じている場合には、力制御を無効化した上で、第1ワーク50の角(かど)を押し付けていた面から離れる方向に移動させてもよい。この場合には、力覚センサ18からの力覚情報により検出される反力が予め定められた値に低減するまで第1ワーク50を移動させてもよい。
【0274】
このとき、コントローラ100は、ロボット10に、位置計測点Loc1,Loc2において、第1ワーク50の第1面68への押付を停止するとともに、第1ワーク50が第1面68に接触していることにより生じる反力が予め定められた値以下となるように、第1ワーク50を第2面69から遠ざける動作を実行させる。同様に、コントローラ100は、ロボット10に、位置計測点Loc3,Loc4において、第1ワーク50の第2面69への押付を停止するとともに、第1ワーク50が第2面69に接触していることにより生じる反力が予め定められた値以下となるように、第1ワーク50を第2面69から遠ざける動作を実行させる。
【0275】
上述したように、嵌合孔62のいずれかの面に対する第1ワーク50の角(かど)の位置を調整することで、位置の計測精度を向上できる。これによって、ロボット10に生じ得る弾性変形に起因する誤差を低減でき、方向ベクトルの算出精度を向上できる。
【0276】
(e4:方向ベクトルの算出精度向上)
上述の説明では、2つの位置から方向ベクトルを算出する処理を例示したが、これに限らず、より多くの位置を計測して方向ベクトルの算出精度を向上させてもよい。
【0277】
図27は、本実施の形態に従うX/Y/Rz校正処理の方向ベクトルを算出処理の変形例を説明するための図である。
【0278】
図27を参照して、例えば、上述した位置の計測を複数回繰り返すことで、同一の面に対して、複数の位置を取得できる。あるいは、第1ワーク50の1つの角(かど)を嵌合孔62のいずれかの面に押し付けた状態で、当該角(かど)を面に沿って移動させる際に、軌跡を示す位置を順次格納することで、複数の位置を取得できる。
【0279】
取得された複数の位置を最小二乗法などの統計的手法で線形近似することで、方向ベクトルを算出してもよい。なお、統計的手法を適用する際に、取得された複数の位置に外れ値が含まれている場合には、当該外れ値を除外した上で、方向ベクトルを算出してもよい。なお、方向ベクトルが算出できれば、どのような統計的手法を用いてもよい。
【0280】
このように、コントローラ100は、第1ワーク50の第1面68に沿った移動中に取得された複数の位置計測点の座標に基づいて補間することで、第1方向ベクトルVec1を算出する。同様に、コントローラ100は、第1ワーク50の第2面69に沿った移動中に取得された複数の位置計測点の座標に基づいて補間することで、第2方向ベクトルVec2を算出する。
【0281】
複数の位置計測点の座標を用いた統計的な処理によって、方向ベクトルをより正確に算出できる。
【0282】
(e5:変形例)
上述したX/Y/Rz校正処理においては、XtYt原点の位置X(X校正値)、XtYt原点の位置Y(Y校正値)、Rz校正値を決定するが、一部の校正値のみを決定するようにしてもよい。例えば、Rz校正値については、予め定められた設計値を採用してもよい。この場合、X校正値およびY校正値のみを決定すればよい。また、Rz校正値については、ユーザがティーチングペンダント26を操作することで決定してもよい。
【0283】
また、第2ワーク60の一つの辺については位置関係が固定されているような場合には、他の辺についてのみ方向ベクトルを算出するようにしてもよい。この場合、2つの方向ベクトルを用いて、XtYt原点を算出することになるが、1つの方向ベクトルについては予め算出された情報を用いることができる。
【0284】
以上のように、X/Y/Rz校正処理に含まれる処理の一部のみを実行することも本発明の技術的範囲に含まれる。
【0285】
(e6:小括)
アプローチ位置の決定において、総当たりで探索すれば、適切な位置を決定できるが、探索に要する時間が過大となり、実運用には適さない。また、第1ワーク50の力およびモーメントを制御して探索する方法は、反力によるモーメント誤差、力覚センサ18のオフセットおよびヒステリシスなどに起因する誤差などが生じるため、校正精度が低下し得る。
【0286】
X/Y/Rz校正処理においては、1つの面について、複数の位置計測点の位置をそれぞれ取得し、取得した複数の位置を補間することで当該面についての方向ベクトルを算出する。算出された方向ベクトルに基づいて、Zt軸周りの角度Rzを校正する。
【0287】
角度Rzの校正にモーメント情報を用いる必要がないので、反力によるモーメント誤差、力覚センサ18のオフセットおよびヒステリシスなどの影響を受けにくく、校正精度を向上できる。
【0288】
<F.その他の実施の形態>
アプローチ位置の校正処理として、Rx/Ry/Z校正処理(ステップS1)と、X/Y/Rz校正処理(ステップS2)とを実行する処理例を説明したが、Rx/Ry/Z校正処理のみ、または、X/Y/Rz校正処理のみを実行するようにしてもよい。
【0289】
例えば、Rx/Ry/Z校正処理によって、第1ワーク50と第2ワーク60とを面倣い状態となるためのRx校正値およびRy校正値を決定した後、ユーザがティーチングペンダント26を操作して、その他の値を決定してもよい。
【0290】
また、Rx校正値およびRy校正値をいずれも初期値(例えば、0°)に設定した上で、X/Y/Rz校正処理を実行して、XtYt原点を決定してもよい。
【0291】
さらに、上述したように、Rx/Ry/Z校正処理によって一部の校正値のみを決定してもよく、X/Y/Rz校正処理によって一部の校正値のみを決定してもよい。
【0292】
このように、本発明の技術的範囲は、X校正値、Y校正値、Z校正値、Rx校正値、Ry校正値、および、Rz校正値のうち少なくとも1つを決定する処理を含む。
【0293】
<G.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
【0294】
[構成1]
ロボット(10)を用いて第1ワーク(50)と第2ワーク(60)ととを嵌合させるコントローラ(100)であって、前記ロボットは、前記第1ワークを把持するための把持機構(20)と力覚センサ(18)とを有しており、前記コントローラは、前記ロボットに、
前記第1ワークを予め定められた力で前記第2ワークに押し付ける動作(S105;S112;S122;S137)と、
前記第1ワークを前記第2ワークに押し付けた状態で、前記第2ワークに対する前記第1ワークの姿勢を変化させる動作(S106;S113;S123;S128;S138;S143)とを実行させ、
前記コントローラは、前記第1ワークと前記第2ワークとの距離に関連する評価指標に基づいて、前記第1ワークの前記第2ワークと接触する第1面(52)と、前記第2ワークの前記第1ワークと接触する第2面(64)とが平行になる前記第1ワークの姿勢を探索する(S108;S115;S125,S126;S130,S131;S140,S141;S145,S146)、コントローラ。
【0295】
[構成2]
前記評価指標は、前記第2ワークに予め設定された面(66)から、前記ロボットのアーム先端を基準とした座標系において設定された計測ポイントまでの距離である、構成1に記載のコントローラ。
【0296】
[構成3]
前記計測ポイントは、前記計測ポイントを前記第1面を含む面へ投影したときに、前記第1ワークの姿勢を変化させる動作において、前記第2面と接触する前記第1面の2つの最外辺によって規定される範囲内に、当該投影位置が存在するように設定される、構成2に記載のコントローラ。
【0297】
[構成4]
前記評価指標は、前記第1ワークを予め定められた力で前記第2ワークに押し付けるための、前記ロボットに与えられる指令についての補正量である、構成1に記載のコントローラ。
【0298】
[構成5]
前記コントローラは、前記評価指標が極値となる姿勢を、前記第1面と前記第2面とが平行になる前記第1ワークの姿勢として決定する、構成1~4のいずれか1項に記載のコントローラ。
【0299】
[構成6]
前記ロボットの位置および姿勢を制御するための基準ポイントは、前記第1ワークの前記第1面の内側に設定される、構成1~5のいずれか1項に記載のコントローラ。
【0300】
[構成7]
前記第2ワークに対する前記第1ワークの姿勢を変化させる動作は、
前記第1ワークを前記第2ワークに押し付ける方向と直交する軸の周りに、前記第1ワークを第1方向に回転させる動作(S123;S138)と、
前記第1ワークを前記第1方向とは反対方向である第2方向に回転させる動作(S128;S143)とを含む、構成1~6のいずれか1項に記載のコントローラ。
【0301】
[構成8]
前記コントローラは、前記第1ワークを前記第1方向に回転することで決定された前記第1ワークの第1姿勢と、前記第1ワークを前記第2方向に回転することで決定された前記第1ワークの第2姿勢との平均を、前記第1面と前記第2面とが平行になる前記第1ワークの姿勢として決定する、構成7に記載のコントローラ。
【0302】
[構成9]
前記第2ワークに対する前記第1ワークの姿勢を変化させる動作は、
前記第2ワークに対する前記第1ワークの姿勢を第1変化速度で変化させる動作(S106;S113)と、
前記第2ワークに対する前記第1ワークの姿勢を前記第1変化速度とは異なる第2変化速度で変化させる動作(S123;S128;S138;S143)とを含む、構成1~8のいずれか1項に記載のコントローラ。
【0303】
[構成10]
前記第2変化速度は、前記第1変化速度より小さい、構成9に記載のコントローラ。
【0304】
[構成11]
前記コントローラは、
前記第1ワークを前記第2ワークに押し付ける方向と直交する軸の周りに、前記第1ワークを第1方向にのみ回転することで探索された結果に基づいて、前記第1面と前記第2面とが平行になる前記第1ワークの姿勢を決定し(S106,S108;S113,S115)、
続いて、前記第1ワークを前記第1方向に回転することで探索された結果、および、前記第1ワークを前記第1方向とは反対方向である第2方向に回転することで探索された結果に基づいて、前記第1面と前記第2面とが平行になる前記第1ワークの姿勢を更新する(S123,S126,S128,S131,S133;S138,S141,S143,S146,S148)、構成1~6のいずれか1項に記載のコントローラ。
【0305】
[構成12]
前記第1ワークを第1方向にのみ回転させる場合には、前記第1ワークを第1変化速度で回転させ、
前記第1ワークを前記第1方向および前記第2方向に回転させる場合には、前記第1ワークを前記第1変化速度より小さい第2変化速度で回転させる、構成12に記載のコントローラ。
【0306】
[構成13]
前記コントローラは、前記第1ワークと前記第2ワークとが非接触の状態で、前記力覚センサから出力されている力覚情報に基づいてオフセットを除去する(S103;S110;S120;S135)、構成1~12のいずれか1項に記載のコントローラ。
【0307】
[構成14]
ロボット(10)を用いて第1ワーク(50)と第2ワーク(60)とを嵌合させるための制御方法であって、前記第1ワークは前記ロボット(10)の把持機構(20)により把持されており、前記制御方法は、
前記第1ワークを予め定められた力で前記第2ワークに押し付けるステップ(S105;S112;S122;S137)と、
前記第1ワークを前記第2ワークに押し付けた状態で、前記ロボットが前記第2ワークに対する前記第1ワークの姿勢を変化させるステップ(S106;S113;S123;S128;S138;S143)と、
前記第1ワークと前記第2ワークとの距離に関連する評価指標に基づいて、前記第1ワークの前記第2ワークと接触する第1面(52)と、前記第2ワークの前記第1ワークと接触する第2面(64)とが平行になる前記第1ワークの姿勢を探索するステップ(S108;S115;S125,S126;S130,S131;S140,S141;S145,S146)とを備える、制御方法。
【0308】
[構成15]
第1ワーク(50)と第2ワーク(60)とを嵌合させるための制御プログラム(114)であって、前記第1ワークはロボット(10)の把持機構(20)により把持されており、前記制御プログラムは、コンピュータ(100)に、
前記第1ワークを予め定められた力で前記第2ワークに押し付けるための指令を前記ロボットに与えるステップ(S105;S112;S122;S137)と、
前記第1ワークを前記第2ワークに押し付けた状態で、前記第2ワークに対する前記第1ワークの姿勢を変化させるための指令を前記ロボットに与えるステップ(S106;S113;S123;S128;S138;S143)と、
前記第1ワークと前記第2ワークとの距離に関連する評価指標に基づいて、前記第1ワークの前記第2ワークと接触する第1面(52)と、前記第2ワークの前記第1ワークと接触する第2面(64)とが平行になる前記第1ワークの姿勢を探索するステップ(S108;S115;S125,S126;S130,S131;S140,S141;S145,S146)とを実行させる、制御プログラム。
【0309】
<H.利点>
本実施の形態によれば、2つのワークを嵌合させる場合のアプローチ位置の少なくとも一部を適切に決定するための方法を実現できる。
【0310】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0311】
1 ロボットシステム、2 ロボット座標系、10 ロボット、11 ベース、12,13,14,15,16,17 可動部、18 力覚センサ、20 把持機構、21,22 爪部、26 ティーチングペンダント、30 ツール座標系、32,33,34,35,36,37,38 モータ、40,106 インターフェイス、42,43,44,45,46,47,48 ドライバ、50 第1ワーク、52 先端面、56,57 最外辺、58 設定可能範囲、60 第2ワーク、62 嵌合孔、64 受入面、66 受入面(設計値)、68 第1面、69 第2面、100 コントローラ、102 プロセッサ、104 メモリ、108 バス、110 ストレージ、112 システムプログラム、114 制御プログラム、120 力覚センサフィルタ、122 換算処理モジュール、124 差分器、126 サンプラ、128 力制御演算モジュール、130 リミッタ、132 ホールダ、134 加算器、200 情報処理装置、Loc1,Loc2,Loc3,Loc4 位置計測点、Vec1 第1方向ベクトル、Vec2 第2方向ベクトル。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27