(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022176761
(43)【公開日】2022-11-30
(54)【発明の名称】ロボットコントローラ、制御方法および制御プログラム
(51)【国際特許分類】
B25J 9/22 20060101AFI20221122BHJP
【FI】
B25J9/22 A
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2021083349
(22)【出願日】2021-05-17
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】村井 正大
(72)【発明者】
【氏名】源 幸雄
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707AS06
3C707BS12
3C707DS01
3C707JU09
3C707KS03
3C707KS04
3C707KS33
3C707KW03
3C707KX06
3C707LU09
(57)【要約】
【課題】ティーチングに係る手間を低減できるロボットシステム、制御方法および制御プログラムを提供する。
【解決手段】ロボットコントローラは、少なくとも第1動作および第2動作を含む一連の動作をワークを保持した前記ロボットに行わせる動作制御部と、一連の動作の完了後の位置および姿勢を示す動作完了位置から第1動作を開始する前の位置および姿勢を示す動作開始位置を決定する決定部とを含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ロボットを制御するロボットコントローラであって、
少なくとも第1動作および第2動作を含む一連の動作をワークを保持した前記ロボットに行わせる動作制御部と、
前記一連の動作の完了後の位置および姿勢を示す動作完了位置から前記第1動作を開始する前の位置および姿勢を示す動作開始位置を決定する決定部とを備える、ロボットコントローラ。
【請求項2】
前記決定部は、予め定められたマージンを前記動作完了位置からオフセットすることで前記動作開始位置を決定する、請求項1に記載のロボットコントローラ。
【請求項3】
前記決定部は、前記動作完了位置から予め定められたマージンに相当する逆の動作を行うことで前記動作開始位置を決定する、請求項1に記載のロボットコントローラ。
【請求項4】
前記第1動作は、前記ロボットが保持したワークを第1方向に沿って移動させる動作を含み、
前記第2動作は、前記ワークを前記第1方向とは異なる第2方向に沿って移動させる動作を含む、請求項1~3のいずれか1項に記載のロボットコントローラ。
【請求項5】
前記動作制御部は、
前記第1動作において、前記第1方向に予め定められた力が生じるように前記ロボットを制御し、
前記第2動作において、前記第2方向に予め定められた力が生じるように前記ロボットを制御する、請求項4に記載のロボットコントローラ。
【請求項6】
前記動作開始位置の高さを異ならせて、前記ワークを前記第1方向および前記第2方向のいずれにも移動させることでクリアランスを算出し、算出したクリアランスが前記オフセットを確保できる高さを前記動作開始位置の高さとして決定する高さ決定部をさらに備える、請求項4または5に記載のロボットコントローラ。
【請求項7】
前記動作制御部は、前記動作開始位置において前記ワークを予め定められた動作開始傾きだけ傾ける、請求項1~6のいずれか1項に記載のロボットコントローラ。
【請求項8】
前記一連の動作に含まれるいずれかの動作が失敗すると、前記動作開始傾きをより大きい値に変更する傾き決定部をさらに備える、請求項7に記載のロボットコントローラ。
【請求項9】
ロボットを制御する制御方法であって、
少なくとも第1動作および第2動作を含む一連の動作をワークを保持した前記ロボットに行わせるステップと、
前記一連の動作の完了後の位置および姿勢を示す動作完了位置から前記第1動作を開始する前の位置および姿勢を示す動作開始位置を決定するステップとを備える、制御方法。
【請求項10】
ロボットを制御するための制御プログラムであって、前記制御プログラムはコンピュータに、
少なくとも第1動作および第2動作を含む一連の動作をワークを保持した前記ロボットに行わせるステップと、
前記一連の動作の完了後の位置および姿勢を示す動作完了位置から前記第1動作を開始する前の位置および姿勢を示す動作開始位置を決定するステップとを実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットコントローラ、ロボットコントローラにおける制御方法、および、ロボットコントローラを制御するための制御プログラムに関する。
【背景技術】
【0002】
生産現場において、ロボットの用途はますます広がりつつある。例えば、生産工程を担当する産業用のロボットは、多くの場合、製品毎に予め定められた動作をするように設定および制御される。ロボットを精度よく制御するためには、ティーチング(教示)と称される事前設定が一つの重要な容易となる。
【0003】
例えば、特開2017-177279号公報(特許文献1)は、被加工体の加工精度を向上させ得るロボットシステムを開示する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特開2017-177279号公報(特許文献1)に開示されるロボットシステムでは、ロボットアームに取り付けられたエンドエフェクタの先端部を目標軌道に沿って動かすようにしてロボットの動作軌道を教示する必要がある。このようなロボットの動作軌道の教示には時間および手間がかかる。
【0006】
本発明の一つの目的は、ティーチングに係る手間を低減できるロボットコントローラ、制御方法および制御プログラムを提供することである。
【課題を解決するための手段】
【0007】
本発明の一例に従うロボットを制御するロボットコントローラは、少なくとも第1動作および第2動作を含む一連の動作をワークを保持した前記ロボットに行わせる動作制御部と、一連の動作の完了後の位置および姿勢を示す動作完了位置から第1動作を開始する前の位置および姿勢を示す動作開始位置を決定する決定部とを含む。
【0008】
この構成によれば、一連の動作の完了後の動作完了位置から動作開始位置を決定できるので、動作開始位置をユーザがティーチングする必要性がない。そのため、ワークの種類などが変わっても、新たなワークに対応するための時間を短縮できる。
【0009】
決定部は、予め定められたマージンを動作完了位置からオフセットすることで動作開始位置を決定してもよい。この構成によれば、マージンを設定することで、ワークに生じる様々な外乱に対応できる。
【0010】
決定部は、動作完了位置から予め定められたマージンに相当する逆の動作を行うことで動作開始位置を決定してもよい。この構成によれば、実際の動作に応じた動作開始位置を決定できる。
【0011】
第1動作は、ロボットが保持したワークを第1方向に沿って移動させる動作を含み、第2動作は、ワークを第1方向とは異なる第2方向に沿って移動させる動作を含んでいてもよい。この構成によれば、開口部を有するワークに別のワークを挿入する処理などを適切に行うことができる。
【0012】
動作制御部は、第1動作において、第1方向に予め定められた力が生じるようにロボットを制御し、第2動作において、第2方向に予め定められた力が生じるようにロボットを制御するようにしてもよい。この構成によれば、それぞれ予め定められた力が生じるように制御することで、第1動作および第2動作に完了を確実に検出できる。
【0013】
ロボットコントローラは、動作開始位置の高さを異ならせて、ワークを第1方向および第2方向のいずれにも移動させることでクリアランスを算出し、算出したクリアランスがオフセットを確保できる高さを動作開始位置の高さとして決定する高さ決定部をさらに含んでいてもよい。この構成によれば、動作開始位置の高さを最適化できるので、第1動作および第2動作を完了するまでに要する時間を短縮できる。
【0014】
動作制御部は、動作開始位置においてワークを予め定められた動作開始傾きだけ傾けるようにしてもよい。この構成によれば、ワークを動作開始傾きだけ傾けた上で、第1動作および第2動作を行うことで、例えばクリアランスが相対的に小さい場合であっても、ワークに発生する外力をより確実に検出できるようになる。これによって、動作が失敗する可能性を低減できる。
【0015】
ロボットコントローラは、一連の動作に含まれるいずれかの動作が失敗すると、動作開始傾きをより大きい値に変更する傾き決定部をさらに含んでいてもよい。この構成によれば、動作開始傾きをより大きい値に変更することで、第1動作および第2動作が失敗する可能性を低減できる。
【0016】
本発明の別の一例に従うロボットを制御する制御方法は、少なくとも第1動作および第2動作を含む一連の動作をワークを保持した前記ロボットに行わせるステップと、一連の動作の完了後の位置および姿勢を示す動作完了位置から第1動作を開始する前の位置および姿勢を示す動作開始位置を決定するステップとを含む。
【0017】
本発明のさらに別の一例に従うロボットを制御するための制御プログラムは、制御プログラムはコンピュータに、少なくとも第1動作および第2動作を含む一連の動作をワークを保持した前記ロボットに行わせるステップと、一連の動作の完了後の位置および姿勢を示す動作完了位置から第1動作を開始する前の位置および姿勢を示す動作開始位置を決定するステップとを実行させる。
【発明の効果】
【0018】
本発明のある局面によれば、ティーチングに係る手間を低減できる。
【図面の簡単な説明】
【0019】
【
図1】本実施の形態に係るロボットシステムの適用例を示す模式図である。
【
図2】本実施の形態に係るロボットシステムの構成例を示す模式図である。
【
図3】本実施の形態に係るロボットシステムのハードウェア構成例を示す模式図である。
【
図4】本実施の形態に係るロボットシステムを用いたアプリケーションの一例を示す模式図である。
【
図5】本実施の形態に係るロボットシステムを用いたアプリケーションを実現するための制御構造の一例を示す模式図である。
【
図6】本実施の形態に係るロボットシステムを用いたアプリケーションの処理手順を示すフローチャートである。
【
図7】本実施の形態に係るロボットシステムにおける動作開始位置の決定に係る処理手順を説明するための模式図である。
【
図8】本実施の形態に係るロボットシステムにおける動作開始位置の決定に係る処理手順を示すフローチャートである。
【
図9】本実施の形態に係るロボットシステムにおける動作開始位置の高さの影響を説明するための図である。
【
図10】本実施の形態に係るロボットシステムにおける動作開始位置の高さ成分を決定するための処理手順を示すフローチャートである。
【
図11】本実施の形態に係るロボットシステムにおける動作開始傾きの影響を説明するための図である。
【
図12】本実施の形態に係るロボットシステムにおける動作開始傾きを決定するための処理手順を示すフローチャートである。
【発明を実施するための形態】
【0020】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0021】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
【0022】
図1は、本実施の形態に係るロボットシステム1の適用例を示す模式図である。
図1を参照して、ロボットコントローラ100は、ロボット(
図2など参照)を制御する。ロボットコントローラ100は、主たる機能的な構成要素として、動作制御モジュール160と、位置決定モジュール162と、高さ決定モジュール164と、傾き決定モジュール166とを含む。これらのモジュールは、ロボットコントローラ100のプロセッサがプログラムを実行することで実現されてもよい。
【0023】
適用例として、ワーク70の開口部72の内部でワーク60を走査する処理を想定する。ロボットコントローラ100の動作制御モジュール160は、ロボットが保持したワーク60を動作開始位置に配置する。そして、ロボットコントローラ100の動作制御モジュール160は、少なくとも第1動作および第2動作を含む一連の動作をワークを保持したロボットに行わせる。
図1に示す例では、動作制御モジュール160は、ワーク60を第1方向に沿って移動させる第1動作と、第1動作の完了後、ワーク60を第1方向とは異なる第2方向に沿って移動させる第2動作とを行う。
【0024】
本明細書において、「動作」は、ロボットあるいはロボットが保持したワークに生じる動きの単位を意味する。例えば、
図1に示すように、ロボットが保持したワーク60を同一の方向に沿って移動させる動きを1つの「動作」とすることができる。例えば、ロボットが保持したワーク60を同一の方向に沿って移動させる動きであっても、移動速度を変化させた場合には、移動速度の変化前と変化後とで異なる動作をみなすこともできる。すなわち、移動速度の変化が「動作」を区切る場合もある。このように、本明細書における「動作」は、移動方向、移動速度、姿勢などの要素の変化によって区切られる、動きの単位を包含する用語である。
【0025】
本明細書において、「一連の動作」は、複数の「動作」の集合を包含する用語である。通常、「一連の動作」に含まれる複数の「動作」は、直列的に実行されることが想定されている。但し、「一連の動作」に含まれる複数の「動作」が並列的に実行されてもよい。
【0026】
位置決定モジュール162は、一連の動作の完了後の位置および姿勢を示す動作完了位置から第1動作を開始する前の位置および姿勢を示す動作開始位置を決定する。
【0027】
このように、動作完了位置から動作開始位置を自動的に決定できるので、ユーザは、動作開始位置を正確にティーチング等する必要がない。
【0028】
高さ決定モジュール164は、動作開始位置の高さを決定あるいは変更する。傾き決定モジュール166は、動作開始傾きの大きさを決定あるいは変更する。
【0029】
説明の便宜上、一連の動作が2つの動作からなる例について以下説明するが、一連の動作が3つ以上の動作を含むものであってもよい。一連の動作に含まれる動作の数については制限がない。
【0030】
<B.ロボットシステム1の構成例>
図2は、本実施の形態に係るロボットシステム1の構成例を示す模式図である。
図2を参照して、ロボットシステム1は、多関節ロボット(以下、単に「ロボット10」と称す。)と、ロボット10を制御するロボットコントローラ100とを含む。
【0031】
ロボット10は、ベース11と、複数の可動部12,13,14,15,16,17とを含む。可動部12,13,14,15,16,17は、ロボット10のジョイントに相当する。可動部12,13,14,15,16,17の各々は、
図2に示すような回転軸に沿ってロボット10を構成するリンクを駆動する。ロボット10のアーム先端には、エンドエフェクタ18が取り付けられている。ロボット10のアームにエンドエフェクタ18が取り付けられる部分には、エンドエフェクタ18に発生する荷重を検出する荷重センサ19が設けられている。荷重センサ19は、発生している荷重の大きさ、および、荷重が発生している方向を示す検出結果を出力する。荷重センサ19の検出結果は、一種のベクトルの形で出力されてもよい。
【0032】
エンドエフェクタ18には、ワークを把持するためのグリッパ20が設けられている。ロボットコントローラ100からの指令に従って、グリッパ20の間隔が変化することで、グリッパ20間に配置された任意のワークが把持される。
【0033】
なお、ロボット10がワークを保持できれば、どのような機構を用いてもよい。すなわち、
図2に示すグリッパ20に限らず、例えば、負圧を用いてワークを吸着する構成を採用してもよいし、電磁力を用いてワークを保持する構成を用いてもよい。
【0034】
以下の説明では、主として、エンドエフェクタ18を基準とした座標系XYZ(以下、「TCP座標系」とも称す。)に基づいてロボット10の動作を説明する。なお、TCP座標系において、エンドエフェクタ18の垂直方向がZ軸に相当する。すなわち、Z軸は、グリッパ20により把持されるワークが挿入される方向に相当する。
【0035】
より具体的には、荷重センサ19は、検出結果として、TCP座標系のX軸方向(X)の荷重、Y軸方向(Y)の荷重、Z軸方向(Z)の荷重をそれぞれ出力するとともに、X軸を中心とした回転方向(RX)の荷重(モーメント)、Y軸を中心とした回転方向(RY)の荷重(モーメント)、Z軸を中心とした回転方向(RZ)の荷重(モーメント)を出力する。
【0036】
ロボット10は、ティーチングなどを行うためのティーチングペンダント38を含む。なお、ティーチングペンダント38は、ロボット10から着脱可能に構成されてもよい。
【0037】
図3は、本実施の形態に係るロボットシステム1のハードウェア構成例を示す模式図である。
図3を参照して、ロボット10は、可動部12,13,14,15,16,17にそれぞれ対応付けられたモータ31,32,33,34,35,36,37と、モータ31,32,33,34,35,36,37をそれぞれ駆動するドライバ21,22,23,24,25,26,27とを含む。ロボット10は、グリッパ20を駆動するサーボドライバ28を含む。
【0038】
ドライバ21,22,23,24,25,26,27、サーボドライバ28、荷重センサ19およびティーチングペンダント38は、インターフェイス40を介して、ロボットコントローラ100と電気的に接続される。
【0039】
ロボットコントローラ100は、一種のコンピュータであり、主要なハードウェアコンポーネントとして、プロセッサ102と、メモリ104と、インターフェイス106と、ストレージ110とを含む。これらのコンポーネントはバス108を介して電気的に接続される。
【0040】
プロセッサ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と、制御プログラム114とを格納する。制御プログラム114は、ロボット10を制御するためのコンピュータ読取可能な命令を含む。プロセッサ102は、ストレージ110に格納されたシステムプログラム112および制御プログラム114を読出して、メモリ104に展開して実行することで、後述するようなロボット10を制御するための処理を実現する。
【0041】
インターフェイス106は、ロボットコントローラ100とロボット10との間の信号および/またはデータのやり取りを担当する。ロボットシステム1においては、ドライバ21,22,23,24,25,26,27およびサーボドライバ28を制御するための指令がロボットコントローラ100からロボット10へ送信されるとともに、荷重センサ19による検出結果がロボット10からロボットコントローラ100へ送信される。
【0042】
図3には、プロセッサ102がプログラムを実行することで必要な処理が提供される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
【0043】
図3には、ロボットコントローラ100をロボット10から独立して構成した例を示しているが、ロボットコントローラ100が提供する機能および処理の一部または全部をロボット10に組み入れてもよい。この場合、ロボットコントローラ100は、ロボット制御に専用化されたコントローラとして実装してもよいし、汎用的なPLC(プログラマブルコントローラ)あるいはパーソナルコンピュータを用いて実装してもよい。
【0044】
さらに、ロボットコントローラ100が提供する機能および処理の一部または全部をいわゆるクラウドと称されるネットワーク上のコンピューティングリソースを用いて実現してもよい。
【0045】
以上のように、本実施の形態に係るロボットシステム1は、どのように実装してもよい。
【0046】
<C.ロボットシステム1のアプリケーション例>
次に、ロボットシステム1のアプリケーション例について説明する。
【0047】
図4は、本実施の形態に係るロボットシステム1を用いたアプリケーションの一例を示す模式図である。
図4には、開口部を有するワーク70に棒状のワーク60を挿入するアプリケーションの例を示す。説明の便宜上、ワーク60とワーク70の開口部との物理的な関係を誇張して描いているが、実際には、ワーク60の断面形状とワーク70の開口部の断面形状との間の間隔は相対的に小さい場合が多い。
【0048】
ロボット10は、ワーク配置台50に配置されたワーク60をグリッパ20で把持し、ワーク配置台52に配置されたワーク70に挿入する。より具体的には、ロボット10は、ワーク60を把持して動作開始位置まで移動する(ステップS1)。この状態において、ロボット10は、ワーク70の開口部の奥行き方向に対して、予め定められた傾きをもってワーク60を把持している。
【0049】
続いて、ロボット10は、ワーク70の一つの内面に沿ってワーク60を移動させる(ステップS2)。ステップS2の動作を、便宜上、「一面当て動作」と称することもある。一面当て動作は、ロボット10が保持したワーク60を第1方向に沿って移動させる第1動作に相当する。また、動作開始位置は、一面当て動作(第1動作)を開始する前の位置および姿勢を示すものである。
【0050】
ワーク60がワーク70の隣接した内面に接触したと判断されると(一面当て動作が完了したと判断されると)、ロボット10は、当該接触した内面に沿ってワーク60を移動させる(ステップS3)。ステップS3の動作を、便宜上、「二面当て動作」と称することもある。二面当て動作は、一面当て動作の完了後、ロボット10が保持したワーク60を第1方向とは異なる第2方向に沿って移動させる第2動作に相当する。
【0051】
ワーク60がワーク70の隣接した内面に接触したと判断されると(二面当て動作が完了したと判断されると)、ワーク60は、2つの面の両方に接触した状態になっていると考えられる。すなわち、ワーク60は、ワーク70の2つの内面が規定する角に接触して配置されていると状態であると考えられる。
【0052】
そして、ロボット10は、ワーク60が挿入方向に適合するように、ワーク60の姿勢を調整する(ステップS4)。ステップS4の動作を、便宜上、「起立動作」と称することもある。続いて、ロボット10は、ワーク70の内部(開口部の奥側)に向けてワーク60を挿入する(ステップS5)。ステップS5の動作を、便宜上、「挿入動作」と称することもある。
【0053】
以上のような処理手順によって、ロボット10によるワーク60のワーク70への挿入が完了する。
【0054】
なお、「動作」の一例として、ワークの内面に沿ってワーク60を移動させる一面当て動作および二面当て動作を例示したが、ワーク60を移動させる方向をワーク60の内面に沿わせる必要は必ずしもなく、上述したアプリケーション以外のアプリケーションに適用する場合には、当該アプリケーションに応じた方向にワーク60を移動させることになる。
【0055】
<D.ロボットシステム1の制御構造および処理手順>
次に、ロボットシステム1の制御構造および処理手順について説明する。
【0056】
図5は、本実施の形態に係るロボットシステム1を用いたアプリケーションを実現するための制御構造の一例を示す模式図である。
図5を参照して、ロボットシステム1のロボットコントローラ100は、制御構造として、位置制御ロジック130と、力制御ロジック140と、インピーダンス制御ロジック150とを含む。
【0057】
ロボットコントローラ100は、6軸(X,Y,Z,RX,RY,RZ)の各々について、位置制御、力制御、インピーダンス制御を任意に選択して実行できる。説明の便宜上、
図5には、特定の1つの軸についての制御系を模式的に示す。
【0058】
図5(A)を参照して、位置制御ロジック130は、対象の軸が位置指令(目標位置)になるように、関連する1または複数のドライバ(ドライバ21,22,23,24,25,26,27)に対して角度指令(目標角度)を出力する。より具体的には、位置制御ロジック130は、差分器132と、逆キネマティクス演算部134と、キネマティクス演算部136とを含む。
【0059】
差分器132は、位置指令とキネマティクス演算部136からの位置実績との差分(位置偏差)を算出する。
【0060】
逆キネマティクス演算部134は、ジョイントおよびリンクを含むロボット10のモデルを有しており、入力された位置に対応するモータ31,32,33,34,35,36,37の各角度を算出する。より具体的には、逆キネマティクス演算部134は、差分器132からの位置偏差に応じて、モータ31,32,33,34,35,36,37の角度偏差を算出する。逆キネマティクス演算部134が算出した角度偏差は、対応するドライバへ出力される。
【0061】
キネマティクス演算部136は、逆キネマティクス演算部134と同様に、ジョイントおよびリンクを含むロボット10のモデルを有しており、入力されたモータ31,32,33,34,35,36,37の各角度に対応する位置を算出する。より具体的には、キネマティクス演算部136は、モータ31,32,33,34,35,36,37の角度実績に応じて、ロボット10の位置実績を算出する。
【0062】
図5(B)を参照して、力制御ロジック140は、対象の軸に発生する力が力指令(目標力)になるように、関連する1または複数のドライバ(ドライバ21,22,23,24,25,26,27)に対して角度指令(目標角度)を出力する。より具体的には、力制御ロジック140は、差分器142と、仮想内部モデル144と、位置制御ロジック130とを含む。
【0063】
差分器142は、力指令と荷重センサ19からの力実績との差分(力偏差)を算出する。
【0064】
仮想内部モデル144は、ロボット10が発生する力を数学的に算出するモデルを有しており、入力された力偏差に対応する位置指令(位置補正値)を算出する。仮想内部モデル144が算出した位置指令は、位置制御ロジック130へ入力される。位置制御ロジック130の処理は、上述したものと同様である。
【0065】
図5(C)を参照して、インピーダンス制御ロジック150は、荷重センサ19により検出された荷重に応じてロボット10を制御する。より具体的には、インピーダンス制御ロジック150は、仮想内部モデル154と、位置制御ロジック130とを含む。
【0066】
仮想内部モデル154は、荷重センサ19からの力実績が入力に応答して、ロボット10の移動量を示す位置指令(位置補正値)を算出する。仮想内部モデル154が算出した位置指令は、位置制御ロジック130へ入力される。位置制御ロジック130の処理は、上述したものと同様である。
【0067】
図6は、本実施の形態に係るロボットシステム1を用いたアプリケーションの処理手順を示すフローチャートである。
図6に示す各ステップは、典型的には、ロボットコントローラ100のプロセッサ102が制御プログラム114を実行することで実現される。
【0068】
図6を参照して、ロボットコントローラ100は、ワーク60を把持して動作開始位置まで移動するようにロボット10に指令を与える(ステップS10)。ステップS10の処理は、
図4に示すステップS1に相当する。ステップS10において、ロボットコントローラ100は、各軸について位置制御で指令を生成する。
【0069】
ここで、動作開始位置については、チューニングなどによって、位置および姿勢(X,Y,Z,RX,RY,RZ)が事前に決定されているとする。
【0070】
続いて、ロボットコントローラ100は、ワーク60を予め定められた動作開始傾きとなるように、ロボット10に指令を与える(ステップS12)。このように、ロボットコントローラ100は、動作開始位置においてワーク60を予め定められた動作開始傾きだけ傾ける。
【0071】
続いて、ロボットコントローラ100は、ワーク60がワーク70の一つの内面に沿って移動するように、ロボット10に指令を与える(ステップS14)。そして、ロボットコントローラ100は、X軸方向の荷重が予め定められたしきい値を超えたか否かを判断する(ステップS16)。
【0072】
ステップS14およびS16の処理は、
図4に示すステップS2の一面当て動作に相当する。なお、動作開始位置において、一面当て動作がX軸方向の移動に対応し、二面当て動作がY軸方向の移動に対応するような姿勢でワーク60が配置される。ステップS14において、ロボットコントローラ100は、X,Y,Z,RZについては力制御で指令を生成し、RX,RYについてはインピーダンス制御で指令を生成する。すなわち、ロボットコントローラ100は、一面当て動作の移動方向(X軸方向)に予め定められた力が生じるようにロボット10を制御する。
【0073】
X軸方向の荷重が予め定められたしきい値を超えていなければ(ステップS16においてNO)、ステップS14以下の処理が繰り返される。
【0074】
X軸方向の荷重が予め定められたしきい値を超えていれば(ステップS16においてYES)、一面当て動作が完了したと判断される。そして、ロボットコントローラ100は、ワーク60がワーク70の別の内面に沿って移動するように、ロボット10に指令を与える(ステップS18)。そして、ロボットコントローラ100は、Y軸方向の荷重が予め定められたしきい値を超えたか否かを判断する(ステップS20)。
【0075】
ステップS18およびS20の処理は、
図4に示すステップS3の二面当て動作に相当する。ステップS18において、ロボットコントローラ100は、X,Y,Z,RZについては力制御で指令を生成し、RX,RYについてはインピーダンス制御で指令を生成する。すなわち、ロボットコントローラ100は、二面当て動作の移動方向(Y軸方向)に予め定められた力が生じるようにロボット10を制御する。
【0076】
Y軸方向の荷重が予め定められたしきい値を超えていなければ(ステップS20においてNO)、ステップS18以下の処理が繰り返される。
【0077】
Y軸方向の荷重が予め定められたしきい値を超えていれば(ステップS20においてYES)、二面当て動作が完了したと判断される。そして、ロボットコントローラ100は、ワーク60が水平姿勢になるように、X軸を中心とした回転方向(RX)、および、Y軸を中心とした回転方向(RY)についての指令を与える(ステップS22)。そして、ロボットコントローラ100は、X軸およびY軸の回転角度が予め定められた目標角度と一致したか否かを判断する(ステップS24)。すなわち、ロボットコントローラ100は、X軸およびY軸の回転角度が予め定められた目標角度と一致するように、ロボット10へ指令を与える。
【0078】
ステップS22およびS24の処理は、
図4に示すステップS4の起立動作に相当する。ステップS22およびS24において、ロボットコントローラ100は、X,Y,Z,RZについては力制御で指令を生成し、RX,RYについては位置制御で指令を生成する。
【0079】
X軸およびY軸の回転角度が予め定められた目標角度と一致していなければ(ステップS24においてNO)、ステップS22以下の処理が繰り返される。
【0080】
X軸およびY軸の回転角度が予め定められた目標角度と一致していれば(ステップS24においてYES)、起立動作が完了したと判断される。そして、ロボットコントローラ100は、ワーク60をワーク70に挿入するように、ロボット10に指令を与える(ステップS26)。続いて、ロボットコントローラ100は、Z軸方向の荷重が予め定められたしきい値を超えたか否かを判断する(ステップS28)。Z軸方向の荷重が予め定められたしきい値を超えていなければ(ステップS28においてNO)、ステップS26以下の処理が繰り返される。
【0081】
Z軸方向の荷重が予め定められたしきい値を超えていれば(ステップS28においてYES)、ロボットコントローラ100は、ワーク60がZ軸方向に予め定められた位置まで挿入されているか否かを判断する(ステップS30)。ワーク60がZ軸方向に予め定められた位置まで挿入されていなければ(ステップS30においてNO)、ロボットコントローラ100は、ワーク60をワーク70から予め定められた距離だけ引き出すように、ロボット10に指令を与える(ステップS32)。そして、ステップS26以下の処理が繰り返される。すなわち、ステップS32は、ワーク60がワーク70に対して傾いた状態(いわゆる、こじた状態)で挿入されている場合に、一旦、ワーク60を引き出して、再度挿入する処理に相当する。
【0082】
ステップS26~S32の処理は、
図4に示すステップS5の挿入動作に相当する。ステップS26~S32において、ロボットコントローラ100は、X,Y,RZについては力制御で指令を生成し、Zについては位置制御で指令を生成し、RX,RYについてはインピーダンス制御で指令を生成する。
【0083】
ワーク60がZ軸方向に予め定められた位置まで挿入されていれば(ステップS30においてYES)、挿入動作が完了したと判断される。
【0084】
以上のような処理手順によって、ワーク60を把持してワーク70に挿入する処理が完了する。
【0085】
<E.動作開始位置の決定>
次に、動作開始位置を決定するための処理例について説明する。
【0086】
図7は、本実施の形態に係るロボットシステム1における動作開始位置の決定に係る処理手順を説明するための模式図である。
【0087】
図7(A)を参照して、まず、ユーザは、ティーチングペンダント38を操作して、ロボット10に把持されたワーク60をワーク70の近傍に配置する。その後、ユーザによるティーチングの完了を受けて、ロボットコントローラ100は、ワーク70の表面と接触する程度までワーク60を下降させる。そして、
図7(B)に示されるように、ワーク60とワーク70とが面同士で接触した状態で、ロボット10は動作を停止する。
【0088】
続いて、
図7(C)に示されるように、ユーザは、ティーチングペンダント38を操作して、ロボット10に把持されたワーク60をワーク70の開口部72の近傍に配置する。
図7(C)に示されるように、ワーク60がワーク70の開口部72の近傍に配置された状態が、いわば仮の動作開始位置に相当する。
【0089】
ユーザによるティーチングが完了すると、ロボットコントローラ100は、一面当て動作、二面当て動作、および、起立動作を実行する。より具体的には、
図7(D)に示すように、ロボットコントローラ100は、ワーク60をワーク70の内面74に沿って移動させ(ステップS2)、ワーク70が内面76に接触したと判断されると、ワーク60をワーク70の内面76に沿って移動させる(ステップS3)。最終的に、ロボットコントローラ100は、ワーク60の姿勢を調整する(ステップS4)。ワーク60の姿勢の調整が完了すると、ロボットコントローラ100は、現在の位置および姿勢(以下、「動作完了位置」とも称す。)から動作開始位置を決定する。
【0090】
このように、ロボットコントローラ100は、一面当て動作(第1動作)および二面当て動作(第2動作)を含む一連の動作が完了後の位置および姿勢を示す動作完了位置を取得し、取得した動作完了位置から動作開始位置を決定する。
【0091】
ここで、動作完了位置および動作開始位置について説明する。
図7に示す例において、動作完了位置は、ワーク60の挿入動作を開始する位置および姿勢を意味する。理想的には、動作完了位置に近く位置を動作開始位置として設定することで、一面当て動作、二面当て動作、挿入動作に要する時間を短くできる。一方で、ワーク60およびワーク70の形状ばらつき、ロボット10によるワーク60の把持位置ばらつき、ワーク70の配置位置ばらつきなどの様々な誤差が存在している。そのため、動作開始位置を動作完了位置に近付けすぎると、このような誤差によって、一面当て動作、二面当て動作、挿入動作を適切に行うことができない場合もある。
【0092】
そこで、動作完了位置に対して、外乱等を考慮したマージンを考慮して動作開始位置を決定する。動作開始位置の決定方法の詳細については後述する。
【0093】
図8は、本実施の形態に係るロボットシステム1における動作開始位置の決定に係る処理手順を示すフローチャートである。
図8に示す各ステップは、典型的には、ロボットコントローラ100のプロセッサ102が制御プログラム114を実行することで実現される。
【0094】
図8を参照して、ロボットコントローラ100は、ユーザによるティーチング操作に従って、ロボット10に把持されたワーク60をワーク70の近傍に配置する(ステップS100)(
図7(A)参照)。
【0095】
ロボットコントローラ100は、ティーチング完了のユーザ操作を受けたか否かを判断する(ステップS102)。ティーチング完了のユーザ操作を受けていなければ(ステップS102においてNO)、ステップS100以下の処理が繰り返される。
【0096】
ティーチング完了のユーザ操作を受けていれば(ステップS102においてYES)、ロボットコントローラ100は、ワーク60をZ軸方向に押し付けるように、ロボット10に指令を与える(ステップS104)。ステップS104において、ロボットコントローラ100は、X,Yについては位置制御で指令を生成し、Zについては力制御で指令を生成し、RX,RYについてはインピーダンス制御で指令を生成する。そして、ロボットコントローラ100は、Z軸方向の荷重が予め定められたしきい値を超えたか否かを判断する(ステップS106)。
【0097】
Z軸方向の荷重が予め定められたしきい値を超えていなければ(ステップS106においてNO)、ステップS104以下の処理が繰り返される。Z軸方向の荷重が予め定められたしきい値を超えていれば(ステップS106においてYES)、ロボットコントローラ100は、X軸を中心とした回転方向(RX)のモーメントがしきい値未満であり、かつ、Y軸を中心とした回転方向(RY)のモーメントがしきい値未満であるか否かを判断する(ステップS108)。
【0098】
X軸を中心とした回転方向(RX)のモーメントがしきい値以上であるか、Y軸を中心とした回転方向(RY)のモーメントがしきい値以上であれば(ステップS108においてNO)、ステップS104以下の処理が繰り返される。
【0099】
X軸を中心とした回転方向(RX)のモーメントがしきい値未満であり、かつ、Y軸を中心とした回転方向(RY)のモーメントがしきい値未満であれば(ステップS108においてYES)、ロボットコントローラ100は、ロボット10の動作を停止する(ステップS110)。この状態において、
図7(B)に示されるように、ワーク60とワーク70とが面同士で接触した状態であると判断される。
【0100】
ロボットコントローラ100は、ユーザによるティーチング操作に従って、ロボット10に把持されたワーク60をワーク70の開口部72の近傍に配置する(ステップS112)(
図7(C)参照)。
【0101】
ロボットコントローラ100は、ティーチング完了のユーザ操作を受けたか否かを判断する(ステップS114)。ティーチング完了のユーザ操作を受けていなければ(ステップS114においてNO)、ステップS112以下の処理が繰り返される。
【0102】
ティーチング完了のユーザ操作を受けていれば(ステップS114においてYES)、ロボットコントローラ100は、ワーク60を予め定められた動作開始傾きとなるように、ロボット10に指令を与える(ステップS116)。このように、ロボットコントローラ100は、動作開始位置(あるいは、仮の動作開始位置)においてワーク60を予め定められた動作開始傾きだけ傾ける。
【0103】
そして、ロボットコントローラ100は、ワーク60をZ軸方向に沿って予め定められた距離だけワーク70に近付くように、ロボット10に指令を与える(ステップS118)。その後、一面当て動作および二面当て動作を実行する。
【0104】
すなわち、ロボットコントローラ100は、ロボット10が保持したワーク60をX軸方向(第1方向)に沿って移動させる第1動作を行う。より具体的には、ロボットコントローラ100は、ワーク60がワーク70の一つの内面に沿って移動するように、ロボット10に指令を与える(ステップS120)。そして、ロボットコントローラ100は、X軸方向の荷重が予め定められたしきい値を超えたか否かを判断する(ステップS122)。ステップS120において、ロボットコントローラ100は、X,Y,Z,RZについては力制御で指令を生成し、RX,RYについてはインピーダンス制御で指令を生成する。すなわち、ロボットコントローラ100は、一面当て動作の移動方向(X軸方向)に予め定められた力が生じるようにロボット10を制御する。
【0105】
X軸方向の荷重が予め定められたしきい値を超えていなければ(ステップS122においてNO)、ステップS120以下の処理が繰り返される。
【0106】
X軸方向の荷重が予め定められたしきい値を超えていれば(ステップS122においてYES)、一面当て動作が完了したと判断される。
【0107】
そして、ロボットコントローラ100は、一面当て動作の完了後、ワーク60をX軸方向(第1方向)とは異なるY軸方向(第2方向)第2方向に沿って移動させる第2動作を行う。より具体的には、ロボットコントローラ100は、ワーク60がワーク70の別の内面に沿って移動するように、ロボット10に指令を与える(ステップS124)。そして、ロボットコントローラ100は、Y軸方向の荷重が予め定められたしきい値を超えたか否かを判断する(ステップS126)。ステップS124において、ロボットコントローラ100は、X,Y,Z,RZについては力制御で指令を生成し、RX,RYについてはインピーダンス制御で指令を生成する。すなわち、ロボットコントローラ100は、二面当て動作の移動方向(Y軸方向)に予め定められた力が生じるようにロボット10を制御する。
【0108】
Y軸方向の荷重が予め定められたしきい値を超えていなければ(ステップS126においてNO)、ステップS124以下の処理が繰り返される。
【0109】
Y軸方向の荷重が予め定められたしきい値を超えていれば(ステップS126においてYES)、二面当て動作が完了したと判断される。そして、ロボットコントローラ100は、ワーク60が水平姿勢になるように、X軸を中心とした回転方向(RX)、および、Y軸を中心とした回転方向(RY)についての指令を与える(ステップS128)。そして、ロボットコントローラ100は、X軸およびY軸の回転角度が予め定められた目標角度と一致したか否かを判断する(ステップS130)。すなわち、ロボットコントローラ100は、X軸およびY軸の回転角度が予め定められた目標角度と一致するように、ロボット10へ指令を与える。ステップS128およびS130において、ロボットコントローラ100は、X,Y,Z,RZについては力制御で指令を生成し、RX,RYについては位置制御で指令を生成する。
【0110】
X軸およびY軸の回転角度が予め定められた目標角度と一致していなければ(ステップS130においてNO)、ステップS128以下の処理が繰り返される。
【0111】
X軸およびY軸の回転角度が予め定められた目標角度と一致していれば(ステップS130においてYES)、起立動作が完了したと判断される。
【0112】
そして、ロボットコントローラ100は、ステップS130におけるワーク60の位置および姿勢(動作完了位置)から動作開始位置を決定する(ステップS132)。このように、ロボットコントローラ100は、一面当て動作(第1動作)および二面当て動作(第2動作)を含む一連の動作の完了後の位置および姿勢を示す動作完了位置から一面当て動作(第1動作)を開始する前の位置および姿勢を示す動作開始位置を決定する。
【0113】
最終的に、ロボットコントローラ100は、決定した動作開始位置を格納する(ステップS134)。以上のような処理手順により、動作開始位置を決定する処理は完了する。
【0114】
<F.動作開始位置の決定方法>
次に、動作完了位置から動作開始位置を決定する方法について説明する。
【0115】
(f1:マージンのオフセット)
動作開始位置を決定する方法の一つとして、動作完了位置から予め定められたマージン分だけオフセットする方法が挙げられる。
【0116】
例えば、動作完了位置を(Xe,Ye,Ze,RXe,RYe,RZe)とすると、予め定められたマージン(ΔX,ΔY,ΔZ,0,0,0)を付加して、(Xe+ΔX,Ye+ΔY,Ze+ΔZ,RXe,RYe,RZe)を動作開始位置として決定できる。
【0117】
すなわち、マージンとして、水平位置ずれ量(ΔX,ΔY)と、高さずれ量(ΔZ)とを考慮するようにしてもよい。
【0118】
マージンは、例えば、(1)ワーク60の形状ばらつき、(2)ワーク70の形状ばらつき、(3)ロボット10によるワーク60の把持位置ばらつき、(4)ワーク70の配置位置ばらつきなどが挙げられる。
【0119】
マージンは、ユーザが任意の値を入力するようにしてもよいし、設計データなどに基づいて算出するようにしてもよい。例えば、ワーク60および/またはワーク70の形状ばらつきは、部品設計における加工公差などから算出あるいは推定できる。また、複数の部品を組み合わせる場合には、マージンは、アセンブリ図における組付公差などから算出あるいは推定できる。特に、組み合わせる部品の数と各部品の加工公差との積から最悪値を推定してもよい。
【0120】
あるいは、実際のワーク60および/またはワーク70を実測した値に基づいて、マージンを決定してもよい。
【0121】
なお、一般的には、マージンについては、回転方向の成分(傾き)を含めなくてもよいが(ΔRXe=ΔRYe=ΔRZe=0)、必要に応じて、1または複数の回転方向の成分(傾き)を含めるようにしてもよい。
【0122】
このように、ロボットコントローラ100は、予め定められたマージンを動作完了位置からオフセットすることで動作開始位置を決定してもよい。
【0123】
(f2:逆動作)
動作開始位置を決定する方法の別の一つとして、動作完了位置から予め定められたマージンおよび動作開始傾きに相当する逆の動作をさせることで、動作開始位置を決定してもよい。
【0124】
より具体的には、動作完了位置(Xe,Ye,Ze,RXe,RYe,RZe)からマージン(ΔX,ΔY,ΔZ,0,0,0)分だけ逆に動作(すなわち、動作開始位置に戻るように動作)させる。この結果、ロボット10の移動後の位置は、(Xe+ΔX,Ye+,Ze+ΔZ,RXe,RYe,RZe)となる。この移動後の位置および姿勢(Xe+ΔX,Ye+,Ze+ΔZ,RXe,RYe,RZe)を動作開始位置として決定してもよい。
【0125】
さらに、予め定められた動作開始傾き(RXs,RYs,0)(X軸を中心とした回転成分、および、Y軸を中心とした回転成分のみ)だけ傾きを補正するようにしてもよい。
【0126】
この場合、移動後の位置および姿勢(Xe+ΔX,Ye+,Ze+ΔZ,RXe-RXs,RYeRYs,RZe)を動作開始位置として決定してもよい。
【0127】
このように、ロボットコントローラ100は、動作完了位置から予め定められたマージンに相当する逆の動作を行うことで動作開始位置を決定してもよい。
【0128】
(f3:動作開始位置の高さ成分(Z)を自動的に決定)
次に、動作開始位置の高さ成分を自動的に決定する方法について説明する。
【0129】
図9は、本実施の形態に係るロボットシステム1における動作開始位置の高さの影響を説明するための図である。
図9には、ワーク60をワーク70の開口部72に挿入する処理の側面図を示す。
【0130】
図9(A)に示すように、ワーク60の動作開始位置がワーク70の開口部72に対して離れすぎていると、ワーク60の下降に要する時間が過大になる。この結果、より多くの処理時間が必要になる。
【0131】
一方、
図9(B)に示すように、ワーク60の動作開始位置がワーク70の開口部72に対して近すぎると、ワーク60の下降時に、ワーク60とワーク70とが干渉し易くなる。この結果、ワーク60のワーク70への挿入が失敗する可能性が高まる。
【0132】
そこで、
図9(C)に示すように、ワーク60の水平方向(XY平面)のワーク70に対するクリアランスを評価することで、動作開始位置の最適な高さ成分を自動的に決定するようにしてもよい。すなわち、ワーク70に対して予め定められたクリアランスを確保できる高さを動作開始位置の高さ成分として決定してもよい。
【0133】
図10は、本実施の形態に係るロボットシステム1における動作開始位置の高さ成分を決定するための処理手順を示すフローチャートである。
図10に示す各ステップは、典型的には、ロボットコントローラ100のプロセッサ102が制御プログラム114を実行することで実現される。
【0134】
図10を参照して、ロボットコントローラ100は、ワーク60を把持して現在の動作開始位置に移動するようにロボット10に指令を与える(ステップS200)。続いて、ロボットコントローラ100は、ワーク60が予め定められた動作開始傾きとなるように、ロボット10に指令を与える(ステップS202)。
【0135】
ロボットコントローラ100は、ワーク60を水平方向に移動させてワーク70との接触位置を取得する(ステップS204)。ステップS204において、ロボットコントローラ100は、ワーク60をX軸に沿って振幅移動させ、また、ワーク60をY軸に沿って振幅移動させる。X軸およびY軸のそれぞれでワーク60を振幅させることで、ワーク70までのクリアランスを算出できる。そして、ロボットコントローラ100は、X軸方向におけるクリアランス、および、Y軸方向におけるクリアランスを算出する(ステップS206)。すなわち、ロボットコントローラ100は、X軸においてワーク70と接触する位置の最大値と最小値との差をX軸方向におけるクリアランスとして算出する。同様に、ロボットコントローラ100は、Y軸においてワーク70と接触する位置の最大値と最小値との差をY軸方向におけるクリアランスとして算出する。
【0136】
ロボットコントローラ100は、X軸方向におけるクリアランスおよびY軸方向におけるクリアランスが、予め定められたマージンのX成分(ΔX)およびY成分(ΔY)よりそれぞれ大きいか否かを判断する(ステップS208)。
【0137】
X軸方向におけるクリアランスおよびY軸方向におけるクリアランスが、予め定められたマージンのX成分(ΔX)およびY成分(ΔY)よりそれぞれ大きければ(ステップS208においてYES)、ロボットコントローラ100は、ワーク60を予め定められた距離だけZ軸方向に沿ってワーク70に近付けるように、ロボット10に指令を与える(ステップS210)。そして、ステップS204以下の処理が繰り返される。
【0138】
一方、X軸方向におけるクリアランスおよびY軸方向におけるクリアランスが、予め定められたマージンのX成分(ΔX)およびY成分(ΔY)以下であれば(ステップS208においてNO)、ロボットコントローラ100は、現在のZ軸の位置を動作開始位置の高さ成分(Z)として決定する(ステップS212)。そして、処理は終了する。
【0139】
図9および
図10を参照して説明したように、予め定められた動作開始傾きで下降するワーク60に対して、予め定められたマージンの水平成分(XY平面)のクリアランスを確保できる高さを動作開始位置として決定できる。すなわち、ロボットコントローラ100は、動作開始位置の高さを異ならせて、ワーク60を第1方向(X軸方向)および第2方向(Y軸方向)のいずれにも移動させることでクリアランスを算出し、算出したクリアランスがオフセットを確保できる高さを動作開始位置の高さとして決定する。
【0140】
このような動作開始位置の高さ成分(Z)を自動的に決定できる機能を採用することで、ユーザが入力する手間を削減できる。また、動作開始位置の高さを最適化できるので、処理時間が過大に長くなることを防止できる。
【0141】
<G.動作開始傾きの決定方法>
次に、動作開始傾きを自動的に決定する方法について説明する。
【0142】
図11は、本実施の形態に係るロボットシステム1における動作開始傾きの影響を説明するための図である。
図11には、ワーク60をワーク70の開口部72に挿入する処理の側面図を示す。
【0143】
図11(A)に示すように、ワーク60の動作開始傾きが小さいと、ワーク60がワーク70と接触する面積が小さくなり、荷重センサ19が検出する荷重も小さくなる。そのため、ワーク60とワーク70との接触の判断に失敗する可能性が高くなる。
【0144】
一方、
図11(B)に示すように、ワーク60の動作開始傾きが大きいと、起立動作において、ワーク60の傾きを戻すのに必要な時間が長くなる。この結果、より多くの処理時間が必要になる。
【0145】
そのため、動作開始傾きの大きさを最適化することが好ましい。より具体的には、一連の動作に失敗しない範囲で、可能な限り小さい動作開始傾きを採用することが好ましい。
【0146】
図12は、本実施の形態に係るロボットシステム1における動作開始傾きを決定するための処理手順を示すフローチャートである。
図12に示す各ステップは、典型的には、ロボットコントローラ100のプロセッサ102が制御プログラム114を実行することで実現される。
図12に示すフローチャートは、
図8に示すフローチャートに対して、ステップS123,S127,S140,S142の処理を追加したものである。
【0147】
ステップS123において、ロボットコントローラ100は、一面当て動作が失敗したか否かを判断する。また、ステップS127において、ロボットコントローラ100は、二面当て動作が失敗したか否かを判断する。
【0148】
一面当て動作が失敗した場合(ステップS123においてYES)、または、二面当て動作が失敗した場合(ステップS127においてYES)には、ロボットコントローラ100は、現在の動作開始傾きを予め定められた角度だけ大きく変更する(ステップS140)。そして、ロボットコントローラ100は、ユーザによるティーチングされた位置にワーク60を戻すように、ロボット10に指令を与える(ステップS142)。そして、ステップS116以下の処理が繰り返される。
【0149】
このように、ロボットコントローラ100は、一連の動作に含まれるいずれかの動作が失敗すると、動作開始傾きをより大きい値に変更するようにしてもよい。
【0150】
なお、
図12に示す動作開始傾きを決定あるいは変更する処理は、
図6に示すロボットシステム1を用いたアプリケーションの処理において、動作が失敗したときに実行するようにしてもよい。
【0151】
図11および
図12を参照して説明したように、動作が失敗した場合において、動作開始傾きを変更した上で、再度処理を実行することで、動作が失敗しない動作開始傾きを決定できる。このような動作開始傾きを自動的に決定できる機能を採用することで、ワーク種別やマージンなどに応じて適切な動作開始傾きを自動的に決定できる。また、動作開始傾きを最適化できるので、処理時間が過大に長くなることを防止できる。
【0152】
<H.利点>
本実施の形態によれば、動作完了位置から動作開始位置を自動的に決定できるので、ユーザは、動作開始位置を正確にティーチング等する必要がない。
【0153】
<I.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
【0154】
[構成1]
ロボット(10)を制御するロボットコントローラ(100)であって、
少なくとも第1動作および第2動作を含む一連の動作をワークを保持した前記ロボットに行わせる動作制御部(160)と、
前記一連の動作の完了後の位置および姿勢を示す動作完了位置から前記第1動作を開始する前の位置および姿勢を示す動作開始位置を決定する決定部(162)とを備える、ロボットコントローラ。
【0155】
[構成2]
前記決定部は、予め定められたマージンを前記動作完了位置からオフセットすることで前記動作開始位置を決定する、構成1に記載のロボットコントローラ。
【0156】
[構成3]
前記決定部は、前記動作完了位置から予め定められたマージンに相当する逆の動作を行うことで前記動作開始位置を決定する、構成1に記載のロボットコントローラ。
【0157】
[構成4]
前記第1動作は、前記ロボットが保持したワークを第1方向に沿って移動させる動作を含み、
前記第2動作は、前記ワークを前記第1方向とは異なる第2方向に沿って移動させる動作を含む、構成1~3のいずれか1項に記載のロボットコントローラ。
【0158】
[構成5]
前記動作制御部は、
前記第1動作において、前記第1方向に予め定められた力が生じるように前記ロボットを制御し、
前記第2動作において、前記第2方向に予め定められた力が生じるように前記ロボットを制御する、構成4に記載のロボットコントローラ。
【0159】
[構成5]
前記動作開始位置の高さを異ならせて、前記ワークを前記第1方向および前記第2方向のいずれにも移動させることでクリアランスを算出し、算出したクリアランスが前記オフセットを確保できる高さを前記動作開始位置の高さとして決定する高さ決定部(164)をさらに備える、構成4に記載のロボットコントローラ。
【0160】
[構成6]
前記動作制御部は、前記動作開始位置において前記ワークを予め定められた動作開始傾きだけ傾ける、構成4または5に記載のロボットコントローラ。
【0161】
[構成7]
前記一連の動作に含まれるいずれかの動作が失敗すると、前記動作開始傾きをより大きい値に変更する傾き決定部(166)をさらに備える、構成7に記載のロボットコントローラ。
【0162】
[構成8]
ロボット(10)を制御する制御方法であって、
少なくとも第1動作および第2動作を含む一連の動作をワークを保持した前記ロボットに行わせるステップ(S120,S122,S124,S126)と、
前記一連の動作の完了後の位置および姿勢を示す動作完了位置から前記第1動作を開始する前の位置および姿勢を示す動作開始位置を決定するステップ(S132)とを備える、制御方法。
【0163】
[構成10]
ロボット(10)を制御するための制御プログラム(114)であって、前記制御プログラムはコンピュータ(100)に、
少なくとも第1動作および第2動作を含む一連の動作をワークを保持した前記ロボットに行わせるステップ(S120,S122,S124,S126)と、
前記一連の動作の完了後の位置および姿勢を示す動作完了位置から前記第1動作を開始する前の位置および姿勢を示す動作開始位置を決定するステップ(S132)とを実行させる、制御プログラム。
【0164】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0165】
1 ロボットシステム、10 ロボット、11 ベース、12,13,14,15,16,17 可動部、18 エンドエフェクタ、19 荷重センサ、20 グリッパ、21,22,23,24,25,26,27 ドライバ、28 サーボドライバ、31,32,33,34,35,36,37 モータ、38 ティーチングペンダント、40,106 インターフェイス、50,52 ワーク配置台、60,70 ワーク、72 開口部、74,76 内面、100 ロボットコントローラ、102 プロセッサ、104 メモリ、108 バス、110 ストレージ、112 システムプログラム、114 制御プログラム、130 位置制御ロジック、132,142 差分器、134 逆キネマティクス演算部、136 キネマティクス演算部、140 力制御ロジック、144,154 仮想内部モデル、150 インピーダンス制御ロジック、160 動作制御モジュール、162 位置決定モジュール、164 高さ決定モジュール、166 傾き決定モジュール。