以下、本開示の実施の形態に係る制御装置、ロボットシステム、学習装置、軌跡モデル、制御方法、およびプログラムについて図面を参照して詳細に説明する。なお図中、同一または同等の部分には同一の符号を付す。
(実施の形態1)
複数のリンクと複数の関節とを備えるロボットを例にして、ロボットとロボットを制御する制御装置とを備えるロボットシステムについて実施の形態1で説明する。ロボットは、複数のリンクと、複数のリンクを互いに接続する複数の関節と、複数の関節に対応付けられて、対応する関節を駆動する複数のモータと、を有する。
図1および図2に示すように、ロボット10は垂直多関節型のロボットである。詳細には、ロボット10は、複数のリンクとして、第1アーム110と、第2アーム120と、第3アーム130と、第4アーム140と、第5アーム150と、フランジ160と、ベース170と、を備える。フランジ160は、複数のリンクの内、先端に位置するリンクである先端リンクに相当する。
ロボット10はさらに、平面に固定されてベース170を支持する固定部180と、フランジ160に取り付けられる加工工具200による加工対象物300の加工時にフランジ160が受ける力である反力を測定する力覚センサ190と、を備える。実施の形態1では、固定部180は、主面の形状が正方形である板状部材である。
図1および図2において、固定部180の主面に平行な面に含まれ、互いに直交する軸として、X軸およびY軸を設定し、X軸およびY軸のそれぞれに直交する軸としてZ軸を設定する。X軸およびY軸はそれぞれ、固定部180の端面に沿って延伸する。固定部180が水平面に固定されていれば、Z軸は鉛直方向に延伸する。実施の形態1において、先端リンクの軌跡、具体的には、フランジ160の先端面160aの重心の軌跡は、XYZ直交座標系で表される。XYZ直交座標系の原点は、例えば、ロボット10が初期位置にあるときの先端面160aの重心の位置である。ロボット10が初期位置にあるときとは、後述のモータM1,M2,M3,M4,M5,M6のそれぞれの回転位置が初期位置にあるときを示す。
第1アーム110は、Z軸に平行な回転軸AX1周りに回転可能な状態でベース170に取り付けられる。第2アーム120は、第1アーム110に連結され、回転軸AX2周りに回転可能である。第3アーム130は、第2アーム120に連結され、回転軸AX3周りに回転可能である。第4アーム140は、第3アーム130に連結され、回転軸AX4周りに回転可能である。第5アーム150は、第4アーム140に連結され、回転軸AX5周りに回転可能である。フランジ160は、第5アーム150に連結され、回転軸AX6周りに回転可能である。換言すれば、ロボット10は、回転軸AX1,AX2,AX3,AX4,AX5,AX6に対応する6つの関節を有する。
制御装置1が、加工対象物300の加工を行うための加工工具200が取り付けられたロボット10を制御することで、加工工具200による加工対象物300の加工が可能となる。例えば、図2に示すように、制御装置1はロボット10を制御して、フランジ160の先端面が、ロボット10が固定されている平面に平行な状態で、フランジ160をX軸正方向に移動させる。この結果、フランジ160に取り付けられている加工工具200が加工対象物300のX軸方向と交差する側面に当接して、さらにX軸正方向に移動することで、バリ310を加工対象物300から取り除くことができる。バリ310は、加工対象物300の成形時にできる突起であり、加工対象物300の目標の外形から突出している部分である。
図3に示すように、ロボット10は、回転軸AX1,AX2,AX3,AX4,AX5,AX6に対応するモータM1,M2,M3,M4,M5,M6を備える。モータM1,M2,M3,M4,M5,M6は、サーボモータである。制御装置1が駆動条件に応じてモータM1,M2,M3,M4,M5,M6を制御することで、モータM1,M2,M3,M4,M5,M6が回転し、第1アーム110、第2アーム120、第3アーム130、第4アーム140、第5アーム150、およびフランジ160が回転する。この結果、ロボット10の先端リンクであるフランジ160の軌跡が駆動条件に応じた軌跡となる。ロボット10はさらに、モータM1,M2,M3,M4,M5,M6の回転位置を検出するエンコーダE1,E2,E3,E4,E5,E6を備える。
ロボットシステム100は、上記構成を有するロボット10と、ロボット10を制御する制御装置1と、を備える。制御装置1は、ロボット10の動作開始点および動作終了点を少なくとも指定する駆動条件に応じて、ロボット10の軌跡、具体的には、フランジ160の軌跡を理想軌跡に近づける制御を行う。ロボット10の動作開始点は、ロボット10の可動部分の動作開始点、具体的には、ロボット10が備えるフランジ160の動作開始点を意味する。ロボット10の動作終了点は、ロボット10の可動部分の動作終了点、具体的には、ロボット10が備えるフランジ160の動作終了点を意味する。
実施の形態1では、制御装置1は、ロボット10が備えるフランジ160の動作開始点および動作終了点を少なくとも指定する駆動条件に応じて、ロボット10が備えるモータM1,M2,M3,M4,M5,M6を制御する。制御装置1が上述のように加工工具200が取り付けられたロボット10を制御することで、図2に示す加工対象物300のバリ310を除去するバリ取り、加工対象物300への部品の取付等の加工が可能となる。
駆動条件に応じてロボット10を制御して加工対象物300の加工を行う際に、先端リンクの実際の軌跡は、駆動条件に基づく理想軌跡からずれる。実施の形態1では、理想軌跡は、駆動条件が示す動作開始点から駆動条件が示す動作終了点までの最短の軌跡である。
理想軌跡からのずれは、機械的要因に起因するずれと、外部要因に起因するずれと、を含む。機械的要因に起因するずれは、例えば、加工対象物300の加工が行われない場合にモータM1,M2,M3,M4,M5,M6のそれぞれの動作の遅れの差に起因するずれである。外部要因に起因するずれは、例えば、重力、遠心力、加工反力等の影響を受けて、第1アーム110、第2アーム120、第3アーム130、第4アーム140、第5アーム150、およびフランジ160の少なくともいずれかに機械的なたわみが生じることに起因するずれである。
機械的要因に起因するずれを最小化するため、制御装置1は、非加工時実軌跡の理想軌跡からのずれを示す非加工時軌跡誤差を最小化するための基準中間点を駆動条件に対応付けて記憶している。非加工時実軌跡は、加工対象物300の加工が行われない場合に駆動条件に応じて制御されたロボット10の先端リンクの軌跡を示す。基準中間点は、駆動条件が示す動作開始点から動作終了点に至るまでに先端リンクが通る位置を示す。
外部要因の一例である加工反力に起因するずれを最小化するため、制御装置1は、加工時実軌跡の理想軌跡からのずれを示す加工時軌跡誤差を求め、基準中間点と加工時軌跡誤差との対応付けを学習する。加工反力は、加工対象物300の加工時にフランジ160が受ける力である。加工時実軌跡は、基準中間点を通る基準軌跡に応じてロボット10を制御することで加工対象物300の加工を行う場合の先端リンクの軌跡を示す。上述のように基準中間点と加工時軌跡誤差の対応を学習した後、制御装置1は、加工時軌跡誤差を最小化する目標中間点を駆動条件に応じて示す軌跡モデルを生成し、目標中間点を通る目標軌跡に応じてロボット10を制御する。目標軌跡に応じてロボット10を制御することで、加工時のロボット10の制御精度を向上させることが可能となる。
制御装置1の各部について以下に説明する。
制御装置1は、駆動条件と基準中間点とを対応付けて記憶している駆動条件記憶部11と、基準中間点を通る基準軌跡を決定する基準軌跡決定部12と、ロボット10の実際の軌跡、具体的には、先端リンクであるフランジ160の実際の移動軌跡を取得する実軌跡取得部13と、を備える。制御装置1はさらに、基準軌跡に応じてロボット10を制御することで加工対象物300の加工を行う場合に実軌跡取得部13で取得された実際の軌跡を示す加工時実軌跡の理想軌跡からのずれを示す加工時軌跡誤差を基準中間点のそれぞれについて求める。制御装置1は、基準中間点と加工時軌跡誤差との対応を学習し、加工時軌跡誤差を最小化する目標中間点を駆動条件に応じて示す軌跡モデルを生成する学習部14を備える。
制御装置1はさらに、学習部14の学習結果を記憶する学習済みデータ記憶部15と、軌跡モデルおよび駆動条件を含む駆動指令に基づき、駆動条件に応じた目標中間点を通る目標軌跡を決定する目標軌跡決定部16と、を備える。制御装置1は、基準軌跡または目標軌跡に応じてロボット10、具体的には、モータM1,M2,M3,M4,M5,M6を制御する制御部17と、ロボット10が備える力覚センサ190からセンサ信号を取得して、センサ信号から加工時にロボット10が受ける力である反力を算出する反力取得部18と、を備える。
図4に示すように、制御装置1は、ハードウェア構成として、プロセッサ31と、メモリ32と、インターフェース33と、を備える。プロセッサ31、メモリ32およびインターフェース33は互いにバス34で接続されている。制御装置1の各機能は、プロセッサ31がメモリ32に記憶されたプログラムを実行することにより実現される。インターフェース33は制御装置1と外部装置を接続し、外部装置との通信を可能とする。詳細には、制御装置1は、インターフェース33を介して、モータM1,M2,M3,M4,M5,M6、エンコーダE1,E2,E3,E4,E5,E6、および力覚センサ190に接続される。インターフェース33は、必要に応じて複数の種類のインターフェースモジュールを有する。
図4に示す制御装置1は、プロセッサ31およびメモリ32をそれぞれ1つずつ有するが、制御装置1は、複数のプロセッサ31および複数のメモリ32を有してもよい。この場合、複数のプロセッサ31および複数のメモリ32が連携することで、制御装置1の各機能が実現されればよい。
上記構成を有する制御装置1は、基準中間点を通る基準軌跡に応じてロボット10を制御することを駆動条件ごとに行って、加工時軌跡誤差を最小化する目標中間点を駆動条件に応じて示す軌跡モデルを生成する学習処理と目標中間点を通る目標軌跡に応じてロボット10を制御する運用処理とを行う。軌跡誤差の最小化とは、軌跡誤差を最小値または最小値の近傍値、あるいは、極小値または極小値の近傍値に近づけることを意味する。
制御装置1が行う学習処理の動作の概要について、図5を用いて説明する。例えば、ロボット10の設置後に、制御装置1が初めて動作を開始する際または新たな駆動条件が追加された際に、制御装置1は図5の学習処理を開始する。図5の学習処理は、加工工具200がフランジ160に取り付けられ、加工対象物300に加工をしながら行われる。換言すれば、制御装置1が駆動条件ごとの加工時軌跡誤差を得るために、加工対象物300の加工が行われる。
基準軌跡決定部12は、駆動条件と基準中間点とを対応付けて記憶している駆動条件記憶部11から、駆動条件と基準中間点を取得する(ステップS11)。そして、基準軌跡決定部12は、ステップS11で取得した駆動条件および基準中間点に基づき、基準中間点を通る基準軌跡を決定する(ステップS12)。制御部17は、ステップS12で決定された基準軌跡に応じてロボット10のモータM1,M2,M3,M4,M5,M6を制御し、実軌跡取得部13は、ロボット10の実際の軌跡を取得し、反力を算出する(ステップS13)。
詳細には、制御部17は、基準軌跡に従ってフランジ160を移動させるためモータM1,M2,M3,M4,M5,M6の目標位置を決定し、モータM1,M2,M3,M4,M5,M6を目標位置まで動かす制御を行う。実軌跡取得部13は、エンコーダE1,E2,E3,E4,E5,E6から取得したモータM1,M2,M3,M4,M5,M6の回転位置に基づいて、ロボット10の実際の軌跡を取得する。反力取得部18は、力覚センサ190から取得したセンサ信号に基づいて反力を算出する。学習部14は、ステップS13で取得された軌跡のステップS11で取得された駆動条件に基づく理想軌跡からのずれを示す加工時軌跡誤差を算出して、加工時軌跡誤差とステップS14で算出された反力とを対応付ける(ステップS14)。駆動条件記憶部11に記憶されている全ての駆動条件について加工時軌跡誤差と反力の対応付けが完了していない間は(ステップS15;No)、上述のステップS11からS14の処理が繰り返される。
駆動条件記憶部11に記憶されている全ての駆動条件について加工時軌跡誤差と反力の対応付けが完了すると(ステップS15;Yes)、学習部14は、加工時軌跡誤差を最小化する目標中間点を求め、駆動条件に応じて目標中間点を示す軌跡モデルを生成する(ステップS16)。ステップS16の処理が完了すると、制御装置1は学習処理を終了する。
制御装置1が行う学習処理の詳細について以下に説明する。
駆動条件記憶部11は、図6に示すように、駆動条件と基準中間点とを対応付けた駆動条件テーブルを保持している。駆動条件は、先端リンクであるフランジ160の動作開始点および動作終了点を少なくとも指定する。実施の形態1では、駆動条件は、先端リンクの動作開始点、動作終了点、速度および姿勢を含む。動作開始点および動作終了点は、図1および図2に示すXYZ直交座標系での位置を示す。速度は、先端リンクの動作時の目標速度を示す。姿勢は、先端リンクの向き、具体的には、フランジ160の先端面160aとロボット10が固定されている平面がなす角度を示す。
例えば、図6に示す駆動条件テーブルの一行目のレコードが含む駆動条件は、フランジ160の先端面が、ロボット10が固定されている平面に平行な状態で、フランジ160を動作開始点(0,0,0)から動作終了点(100,0,0)まで目標速度V1で移動させることを示す。この場合、理想軌跡は、動作開始点SP1(0,0,0)から動作終了点EP1(100,0,0)まで延び、X軸上に位置する線分で示される。
実施の形態1では、各駆動条件に対し、基準中間点が定められている。上述したように、基準中間点は、加工対象物300の加工が行われない場合にモータM1,M2,M3,M4,M5,M6のそれぞれの動作の遅れの差に起因するずれを最小化するために、駆動条件が示す動作開始点から動作終了点に至るまでに先端リンクが通る位置を示す。例えば、動作開始点から動作終了点までの間に位置する複数の初期中間点のそれぞれについて、加工対象物300の加工は行わずに、初期中間点を通る軌跡に応じてロボット10を制御した際の実際の先端リンクの軌跡の理想軌跡からのずれを算出し、ずれを最小化する初期中間点を基準中間点として用いればよい。
基準軌跡決定部12は、図6に示す駆動条件テーブルから対応付けられた駆動条件と基準中間点を取得する。そして、基準軌跡決定部12は、駆動条件に基づき、取得した基準中間点を通る基準軌跡を決定する。詳細には、基準軌跡決定部12は、駆動条件が示す動作開始点、基準中間点、および駆動条件が示す動作終了点に基づくスプライン補間を行って、駆動条件が示す動作開始点から、基準中間点を通って、駆動条件が示す動作終了点に至る基準軌跡を算出する。基準軌跡は、例えば、制御周期ごとのXYZ直交座標系における先端リンクの位置を示す。制御周期は、例えば、制御装置1の演算処理能力に応じて定められる。
例えば、基準軌跡決定部12は、図6に示す駆動条件テーブルの一行目のレコードが示す駆動条件と基準中間点を取得する。この駆動条件に含まれる動作開始点(0,0,0)および動作終了点(100,0,0)をそれぞれ、図7に動作開始点SP1および動作終了点EP1として示し、基準中間点(50,-2.5,0)を図7に基準中間点RP1として示す。基準軌跡決定部12は、動作開始点SP1(0,0,0)から動作終了点EP1(100,0,0)までの動作を指示する駆動条件に基づき、基準中間点RP1(50,-2.5,0)を通る基準軌跡RT1を決定する。図7において点線で示す基準軌跡RT1は、動作開始点SP1から基準中間点RP1を通って動作終了点EP1に至る滑らかな曲線であって、XY平面においてY軸負方向に突出する曲線で示される。上述のように基準軌跡を算出すると、基準軌跡決定部12は、駆動条件および決定した基準軌跡を、学習部14および制御部17に送る。
図3に示す制御部17は、基準軌跡決定部12から取得した駆動条件および基準軌跡に応じてモータM1,M2,M3,M4,M5,M6への制御指令を生成し、制御指令をモータM1,M2,M3,M4,M5,M6に送信する。詳細には、制御部17は、基準軌跡が示す先端リンクの位置を示す基準位置に応じてモータM1,M2,M3,M4,M5,M6への制御指令を生成し、制御指令をモータM1,M2,M3,M4,M5,M6に送信することを制御周期ごとに行う。この結果、モータM1,M2,M3,M4,M5,M6が制御指令に従って回転し、第1アーム110、第2アーム120、第3アーム130、第4アーム140、第5アーム150、およびフランジ160が回転する。これにより、先端リンクであるフランジ160が移動する。
制御部17は、エンコーダE1,E2,E3,E4,E5,E6からモータM1,M2,M3,M4,M5,M6の回転位置を取得し、モータM1,M2,M3,M4,M5,M6をフィードバック制御することが好ましい。
上述のように制御部17によって、モータM1,M2,M3,M4,M5,M6が駆動されている間、力覚センサ190は、フランジ160が受ける力である反力を測定し、測定値に応じたセンサ信号を出力する。
反力取得部18は、ロボット10が備える力覚センサ190から取得したセンサ信号を制御周期ごとに検出し、制御周期ごとに検出した値から、加工時にロボット10が受ける力である反力を算出し、算出した反力を制御部17に送る。
実軌跡取得部13は、エンコーダE1,E2,E3,E4,E5,E6からモータM1,M2,M3,M4,M5,M6の回転位置を取得し、モータM1,M2,M3,M4,M5,M6の回転位置から先端リンクの実際の位置を取得する。実軌跡取得部13は、上述の処理を制御周期ごとに行って、制御周期ごとのXYZ直交座標系における先端リンクの実際の位置である実位置を示す実軌跡を決定する。
一例として、図6に示す駆動条件テーブルの一行目のレコードが示す駆動条件と基準中間点RP1に基づく基準軌跡RT1に応じてモータM1,M2,M3,M4,M5,M6が制御された際に、実軌跡取得部13が取得した加工時実軌跡AT1を図7に実線で示す。実軌跡取得部13は、上述のように取得した実軌跡を学習部14に送る。加工対象物300の加工を行わない場合、基準軌跡RT1に応じてモータM1,M2,M3,M4,M5,M6が制御されると、先端リンクは図7に破線で示す実軌跡AT0のように、理想軌跡に近い軌跡を通る。しかしながら、加工対象物300の加工時に受ける反力によって、加工時実軌跡AT1は、理想軌跡からずれる。
学習部14は、実軌跡取得部13から実軌跡を取得すると、ロボット10が基準軌跡に応じて制御されることで加工対象物300の加工が行われた際に実軌跡取得部13で取得された軌跡を示す加工時実軌跡の理想軌跡からのずれを示す加工時軌跡誤差を算出する。詳細には、学習部14は、駆動条件に基づき、動作開始点から動作終了点までの最短の軌跡を示す理想軌跡を決定し、理想軌跡上の制御周期ごとの先端リンクの位置を決定する。そして、学習部14は、理想軌跡が示す制御周期ごとのロボット10の位置、具体的には、ロボット10の先端リンクの位置である理想位置と加工時実軌跡が示す制御周期ごとのロボット10の位置、具体的には、先端リンクの位置である実位置との距離を算出する。学習部14は、距離が最大値となるときの、実位置の理想位置からのずれを加工時軌跡誤差として用いる。
例えば、学習部14は、基準軌跡決定部12から図6に示す駆動条件テーブルの一行目のレコードが示す駆動条件と基準軌跡を取得すると、動作開始点SP1(0,0,0)から動作終了点EP1(100,0,0)までの最短の軌跡である理想軌跡を算出する。この場合、理想軌跡は、図7に示す動作開始点SP1(0,0,0)から動作終了点EP1(100,0,0)まで延び、X軸上に位置する線分である。そして、学習部14は、理想軌跡が示す制御周期ごとの先端リンクの理想位置と加工時実軌跡AT1が示す制御周期ごとの先端リンクの実際の位置との距離を算出する。学習部14は、図7に矢印ER1で示すように、この距離が最大値となるときの、実位置の理想位置からのずれを加工時軌跡誤差として用いる。図7の例では、実位置はXY平面上で理想位置からY軸正方向にずれている。
学習部14はさらに、加工時軌跡誤差に反力を対応付ける。詳細には、学習部14は、理想位置と実位置との距離が最大値となるときの加工時軌跡誤差と反力とを対応付ける。
学習部14は、上述の処理を図6に示す駆動条件テーブルに記憶されている全ての駆動条件について行う。学習部14は、各駆動条件について加工時軌跡誤差の算出を行って、駆動条件、基準中間点、加工時軌跡誤差、および反力の対応を学習する。そして、学習部14は、図8に示す誤差テーブルを生成し、学習済みデータ記憶部15に記憶させる。図8の例では、加工時軌跡誤差は、ベクトルの成分として記憶されている。具体的には、加工時軌跡誤差は、理想位置を始点とし、実位置のずれを示すベクトルの成分で表されている。図8の例では、誤差テーブルに(Fx,Fy,Fz)で表される反力が記憶されている。
全ての駆動条件について加工時軌跡誤差と反力の対応付けが完了すると、学習部14は、基準中間点、加工時軌跡誤差、および反力の対応から加工時軌跡誤差を最小化する目標中間点を求め、駆動条件に応じて目標中間点を示す軌跡モデルを生成する。詳細には、学習部14は、駆動条件ごとに、理想軌跡、基準目標点を通る基準軌跡、加工時軌跡誤差、および反力から、加工時軌跡誤差が最小となる目標中間点を求める。例えば、学習部14は、反力に応じて、基準中間点の位置を調節し、調節した基準中間点を目標中間点とする。図8に示す誤差テーブルの一行目のレコードの例では、反力のY軸成分の大きさは、X軸成分およびZ軸成分の大きさより大きい。そこで、学習部14は、Y軸正方向に加わる反力の影響を最小化するために、基準中間点をY軸負方向に調節し、調節した基準中間点を目標中間点とする。実施の形態1では、学習部14は、軌跡モデルとして図9に示す目標中間点テーブルを生成し、学習済みデータ記憶部15に記憶させる。
上述の学習処理が終了した後に行われるロボット10の制御処理である運用処理の動作の概要について、図10を用いて説明する。例えば、制御装置1は、学習処理が終了した後に、図示しない操作部からの操作によってロボット10の駆動条件を含む駆動指令が入力されると、図10の運用処理を開始する。図10の運用処理は、加工工具200がフランジ160に取り付けられ、加工対象物300に加工をしながら行われる。
目標軌跡決定部16は、駆動条件を含む駆動指令を取得すると、学習済みデータ記憶部15から駆動指令が示す駆動条件に応じた目標中間点を取得する(ステップS21)。そして、目標軌跡決定部16は、駆動条件に基づき、ステップS21で取得した目標中間点を通る目標軌跡を決定する(ステップS22)。制御部17は、ステップS22で決定された目標軌跡に応じてロボット10のモータM1,M2,M3,M4,M5,M6を制御する(ステップS23)。
制御装置1が行う運用処理の詳細について以下に説明する。
目標軌跡決定部16は、駆動指令を取得すると、学習済みデータ記憶部15に記憶されている目標中間点テーブルから駆動指令が示す駆動条件に応じた目標中間点を取得する。そして、目標軌跡決定部16は、駆動条件が示す動作開始点から、目標中間点を通って、駆動条件が示す動作終了点に至る軌跡を示す目標軌跡を算出する。詳細には、目標軌跡決定部16は、駆動条件が示す動作開始点、目標中間点、および駆動条件が示す動作終了点に基づくスプライン補間を行って、駆動条件が示す動作開始点から、目標中間点を通って、駆動条件が示す動作終了点に至る目標軌跡を決定する。目標軌跡は、制御周期ごとの先端リンクの目標位置を示す。
例えば、目標軌跡決定部16は、フランジ160の先端面160aが、ロボット10が固定されている平面に平行な状態で、フランジ160を動作開始点(0,0,0)から動作終了点(100,0,0)まで目標速度V1で移動させる駆動条件を示す駆動指令を取得する。目標軌跡決定部16は、取得した駆動条件に対応する図9に示す目標中間点テーブルの一行目のレコードが示す目標中間点(50,-3.5,0)を取得する。この目標中間点(50,-3.5,0)を図11に目標中間点TP1として示す。そして、目標軌跡決定部16は、動作開始点SP1(0,0,0)から目標中間点TP1(50,-3.5,0)を通って動作終了点EP1(100,0,0)に至る目標軌跡TT1を決定する。図11に点線で示すように、目標軌跡TT1は、動作開始点SP1から目標中間点TP1を通って動作終了点EP1に至る滑らかな曲線であって、XY平面においてY軸負方向に突出する曲線で示される。上述のように目標軌跡を決定すると、目標軌跡決定部16は、駆動条件および算出した目標軌跡を、制御部17に送る。
図3に示す制御部17は、目標軌跡決定部16から取得した目標軌跡に応じてモータM1,M2,M3,M4,M5,M6への制御指令を生成し、制御指令をモータM1,M2,M3,M4,M5,M6に送信する。この結果、モータM1,M2,M3,M4,M5,M6が制御指令に従って回転し、第1アーム110、第2アーム120、第3アーム130、第4アーム140、第5アーム150およびフランジ160が回転する。これにより、先端リンクであるフランジ160が移動する。加工工具200が取り付けられたフランジ160が移動することで、加工工具200による加工対象物300の加工が行われる。加工時軌跡誤差を最小化する目標軌跡に応じてモータM1,M2,M3,M4,M5,M6を制御することで、図11に示すように、加工時の先端リンクの実軌跡AT1’が理想軌跡に近づく。
以上説明したとおり、実施の形態1に係る制御装置1は、基準中間点と加工時軌跡誤差との対応を学習し、さらに反力に基づいて、加工時軌跡誤差を最小化する目標中間点を駆動条件に応じて示す軌跡モデルを生成する。制御装置1が目標中間点を通る目標軌跡に応じてロボット10を制御することで、加工対象物300の加工が行われる。目標軌跡は、反力に応じて調節されるため、加工時の実軌跡が理想軌跡に近づき、加工時の制御装置1によるロボット10の制御精度は高くなる。
(実施の形態2)
ロボット10の制御方法は、実施の形態1の例に限られず、加工時の反力を考慮する方法であれば任意である。加工時のロボット10の制御精度を高めるために、反力の変動の原因となる加工対象物300についての情報に応じてモータM1,M2,M3,M4,M5,M6を制御する制御装置2について、実施の形態1に係る制御装置1と異なる点を中心に実施の形態2で説明する。加工対象物300についての情報は、加工対象物300の重量、形状、材質等を含む。
図12に示す実施の形態2に係るロボットシステム101は、制御装置2と、ロボット10と、を備える。制御装置2は、加工対象物300についての情報を取得する加工対象物特定部19と、加工対象物特定部19が取得した加工対象物300についての情報を学習し、目標中間点を駆動条件および加工対象物300についての情報に応じて示す軌跡モデルを生成する学習部20と、駆動条件を含む駆動指令および加工対象物300についての情報に基づき、目標中間点を通る目標軌跡を決定する目標軌跡決定部21と、を備える。ロボット10は、実施の形態1と異なり、力覚センサ190を備えない。
制御装置2がロボット10の制御を行うことで、実施の形態1と同様に、加工工具200によって加工対象物300のバリ310を取り除くバリ取りが行われる。加工対象物300は、例えば、ウレタン発泡断熱材である。加工対象物300の成形時に、バリ310が生じる。ウレタン発泡断熱材で加工対象物300が形成されていると、バリ310の厚み、長さ等の形状が変動する。バリ310の厚みは、図2の例に示す棒状の加工工具200の延伸方向、すなわち、Z軸方向のバリ310の厚みである。バリ310の長さは、図2の例に示す加工工具200の移動方向、すなわち、X軸方向のバリ310の長さである。バリ310の形状が変動することで、加工時にフランジ160が受ける力である反力が変動し、加工時軌跡誤差が変動する。そこで、制御装置2は、駆動条件およびバリ310の形状に応じた目標中間点を通る目標軌跡に応じてロボット10を制御する。この結果、バリ310の形状が変動しても、加工時のロボット10の制御精度を向上させることができる。
図12に示す加工対象物特定部19は、加工対象物300の画像データを生成する撮影装置191と、撮影装置191が生成した画像データから加工対象物300の形状を決定する形状決定部192と、を有する。
実施の形態2では、加工対象物特定部19は、加工対象物300のバリ310の形状を取得し、取得したバリ310の形状を学習部20に送る。バリ310の形状は、加工工具200の延伸方向、すなわち、Z軸方向のバリ310の厚みの最小値、最大値、および平均値の少なくともいずれかを含む。以下の説明では、加工対象物特定部19は、Z軸方向のバリ310の厚みの最大値を取得するものとする。
学習部20は、加工対象物特定部19からバリ310の形状を取得すると、加工時軌跡誤差と対応付ける。そして、学習部20は、加工時軌跡誤差およびZ軸方向のバリ310の厚みの最大値を対応付け、駆動条件およびバリ310の厚みに応じて加工時軌跡誤差を最小化する目標中間点を求める。
目標軌跡決定部21は、駆動条件を含む駆動指令を取得すると、加工対象物特定部19からバリ310の形状を取得する。そして、目標軌跡決定部21は、学習済みデータ記憶部15から駆動指令が示す駆動条件およびバリ310の形状に応じた目標中間点を取得する。目標中間点を取得すると、駆動条件に基づき、目標軌跡決定部21は目標中間点を通る目標軌跡を算出する。
制御装置2のハードウェア構成は、図4に示す制御装置1のハードウェア構成と同様である。制御装置2は、インターフェース33を介して、モータM1,M2,M3,M4,M5,M6およびエンコーダE1,E2,E3,E4,E5,E6に接続される。
上記構成を有する制御装置2が行う学習処理について図13を用いて説明する。制御装置1と同様に、例えば、ロボット10の設置後に、制御装置2が初めて動作を開始する際に、制御装置2は図13の学習処理を開始する。図13の学習処理は、加工工具200がフランジ160に取り付けられ、加工対象物300に加工をしながら行われる。換言すれば、制御装置2が駆動条件ごとの加工時軌跡誤差を得るために、加工対象物300の加工が行われる。
加工対象物特定部19は、加工対象物300についての情報を取得する(ステップS31)。例えば、加工対象物特定部19は、加工対象物300のバリ310の形状を取得する。詳細には、撮影装置191は、加工対象物300の周囲に設けられる複数のカメラを有し、複数のカメラで加工対象物300を撮影することで、加工対象物300の画像データを生成する。形状決定部192は、画像データから加工対象物300のバリ310の形状を決定する。例えば、外面の位置が急激に変化している部分をバリ310とみなすことができる。形状決定部192で算出された加工対象物300のバリ310の形状は、学習部20に送られる。後続のステップS11からS12までの処理は、図5に示す制御装置1が行う処理と同様である。
制御部17は、ステップS12で決定された基準軌跡に応じてロボット10のモータM1,M2,M3,M4,M5,M6を制御し、実軌跡取得部13は、エンコーダE1,E2,E3,E4,E5,E6から取得したモータM1,M2,M3,M4,M5,M6の回転位置に基づいて、基準軌跡に応じて制御されたロボット10の軌跡を取得する(ステップS32)。学習部20は、ステップS32で取得された軌跡のステップS11で取得された駆動条件に基づく理想軌跡からのずれを示す加工時軌跡誤差を算出し、加工時軌跡誤差とステップS31で取得された加工対象物300についての情報を対応付ける(ステップS33)。学習部20は、図14に示す誤差テーブルを生成し、学習済みデータ記憶部15に記憶させる。図14の例では、バリ310の厚みの最大値が、記憶されている。
駆動条件記憶部11に記憶されている各駆動条件について所定回数の対応付けが完了していない間は(ステップS34;No)、上述の処理が繰り返される。所定回数とは、軌跡モデルを生成するためのデータを取得することが可能となる回数である。加工対象物300のバリ310の形状は、変動するため、各駆動条件について上述の処理を繰り返すことで、図14に示すようにバリ310の変動に応じて変動する加工時軌跡誤差のデータを取得することができる。例えば、上述の処理を行った結果、図14に示すように、各駆動条件について、バリ310の厚みごとの加工時軌跡誤差を示す誤差テーブルが得られる。
駆動条件記憶部11に記憶されている各駆動条件について所定回数の対応付けが完了すると(ステップS34;Yes)、学習部20は、加工時軌跡誤差を最小化する目標中間点を求め、駆動条件および加工対象物300についての情報に応じて目標中間点を示す軌跡モデルを生成する(ステップS35)。
詳細には、学習部20は、バリ310の厚みに応じて加工時目標中間点を示す軌跡モデルを生成し、学習済みデータ記憶部15に記憶させる。例えば、学習部20は、多次元関数フィッティングまたはニューラルネットワークモデルに従って、教師あり学習を行って、軌跡モデルを生成する。教師あり学習とは、入力と結果のデータセットを大量に学習装置に与えることで、学習装置が大量のデータセットにある特徴を学習し、入力から結果を推定するモデルを生成することを意味する。例えば、学習部20は、駆動条件、基準中間点、およびバリ310の厚みを入力データとし、加工時軌跡誤差を結果データとして学習を行い、軌跡モデルを生成する。生成された軌跡モデルを利用して、加工時軌跡誤差を最小化する目標中間点を得ることが可能となる。
機械学習においては、過学習により推定精度が低下することが知られているため、いずれの学習モデルを使用する場合でも、過学習を抑制することが好ましい。過学習を抑制する方法としては、例えば、学習するデータを正規化する方法、学習モデル内のパラメータ数を少なくする方法等がある。一例として、多次元関数フィッティングを行う際には、関数の次元数を制限、例えば、5次以下に制限することが好ましい。他の一例として、ニューラルネットワークモデルにおいて、中間層の数を制限、例えば、10層以下に制限することが好ましい。また、ニューラルネットワークモデルにおいては、学習モデルの特定のレイヤーの出力を学習時にランダムに0としてもよい。さらに、上述の方式を組み合わせることで、過学習を抑制してもよい。
ステップS35の処理が完了すると、制御装置2は学習処理を終了する。上述の学習処理が終了した後に行われる運用処理の動作について、図15を用いて説明する。例えば、制御装置2は、学習処理が終了した後に、図示しない操作部からの操作によってロボット10の駆動条件を含む駆動指令が入力されると、図15の運用処理を開始する。
目標軌跡決定部16は、駆動条件を含む駆動指令を取得すると、加工対象物特定部19から加工対象物300についての情報、例えば、加工対象物300のバリ310の厚みを取得する(ステップS24)。目標軌跡決定部16は、学習済みデータ記憶部15から、ステップS24で取得した駆動指令が示す駆動条件およびステップS24で取得したバリ310の厚みに応じた目標中間点を取得する(ステップS25)。バリ310の厚みが一致するものがなければ、バリ310の厚みの値が近いデータに基づいて補間処理を行って、目標中間点を取得すればよい。
ステップS22,S23の処理は、図10に示す実施の形態1に係る制御装置1が行う処理と同様である。
以上説明したとおり、実施の形態2に係る制御装置2は、基準中間点、加工時軌跡誤差および加工対象物300についての情報の対応を学習して、加工時軌跡誤差を最小化する目標中間点を求め、駆動条件および加工対象物300についての情報に応じて目標中間点を示す軌跡モデルを生成する。制御装置2が目標中間点を通る目標軌跡に応じてロボット10を制御することで、加工対象物300の加工が行われる。目標軌跡は、加工対象物300についての情報、例えば、加工対象物300のバリ310の厚みに応じて調節されるため、加工時の実軌跡が理想軌跡に近づき、加工時の制御装置2によるロボット10の制御精度は高くなる。
(実施の形態3)
加工時の反力を考慮したロボット10の制御は、上述の実施の形態に限られず、上述の実施の形態を組み合わせた方法でロボット10を制御してもよい。加工時の反力および加工対象物300についての情報に応じてロボット10を制御する制御装置3について、実施の形態1,2と異なる点を中心に、実施の形態3で説明する。
図16に示す実施の形態3に係るロボットシステム102は、制御装置3と、ロボット10と、を備える。制御装置3は、実施の形態1に係る制御装置1の構成に加えて、加工対象物300についての情報を取得する加工対象物特定部19を備える。制御装置3は、加工時軌跡誤差、反力、および加工対象物特定部19が取得した加工対象物300についての情報の対応を学習して、加工時軌跡誤差を最小化する目標中間点を求め、駆動条件および加工対象物300についての情報に応じて目標中間点を示す軌跡モデルを生成する学習部22を備える。制御装置3では、制御部17は、反力取得部18から反力を取得する。
制御装置3のハードウェア構成は、図4に示す制御装置1のハードウェア構成と同様である。制御装置3は、インターフェース33を介して、モータM1,M2,M3,M4,M5,M6、エンコーダE1,E2,E3,E4,E5,E6、および力覚センサ190に接続される。
上記構成を有する制御装置3が行う学習処理について図17を用いて説明する。制御装置1と同様に、例えば、ロボット10の設置後に、制御装置3が初めて動作を開始する際に、制御装置3は図17の学習処理を開始する。ステップS31の処理は、図13に示す制御装置2が行う処理と同様である。ステップS11からS13の処理は、図5に示す制御装置1が行う処理と同様である。
ただし、ステップS13において、制御部17は、反力が増大すると、基準軌跡が示す位置を加工対象物300から遠い位置に調節して、調節した基準軌跡に応じてモータM1,M2,M3,M4,M5,M6を制御する。これにより、大きな反力によって先端リンクの軌跡が理想軌跡から大きくずれることが抑制される。
学習部22は、実施の形態1と同様に、ステップS11で取得された駆動条件に基づく理想軌跡とステップS14で測定された実軌跡との差分を示す加工時軌跡誤差を算出し、加工時軌跡誤差とステップS14で算出された反力とステップS31で取得された加工対象物300についての情報を対応付ける(ステップS36)。詳細には、学習部22は、理想軌跡上の制御周期ごとの先端リンクの理想位置と加工時実軌跡が示す制御周期ごとの先端リンクの実際の位置との距離が最大値となるときの加工時軌跡誤差と反力とを対応付ける。学習部22は、図18に示す誤差テーブルを生成し、学習済みデータ記憶部15に記憶させる。図18の例では、誤差テーブルに(Fx,Fy,Fz)で表される反力が記憶されている。図18の例では、バリ310の厚みの最大値が、記憶されている。
図17に示すように、駆動条件記憶部11に記憶されている各駆動条件について所定回数の対応付けが完了していない間は(ステップS34;No)、上述の処理が繰り返される。所定回数とは、軌跡モデルを生成するためのデータを取得することが可能となる回数である。
駆動条件記憶部11に記憶されている各駆動条件について所定回数の対応付けが完了すると(ステップS34;Yes)、学習部20は、加工時軌跡誤差を最小化する目標中間点を駆動条件および加工対象物300についての情報に応じて示す軌跡モデルを生成する(ステップS37)。
詳細には、学習部22は、バリ310の厚みに応じて加工時目標中間点を示す軌跡モデルを生成し、学習済みデータ記憶部15に記憶させる。例えば、学習部22は、ニューラルネットワークモデルに従って、教師あり学習を行って、軌跡モデルを生成する。詳細には、学習部22は、駆動条件、基準中間点、反力およびバリ310の厚みを入力データとし、加工時軌跡誤差を結果データとして学習を行い、軌跡モデルを生成する。生成された軌跡モデルを利用して、加工時軌跡誤差を最小化する目標中間点を決定することが可能となる。過学習を抑制するため、軌跡モデルは、10個未満の中間層を有することが好ましい。
ステップS37の処理が完了すると、制御装置3は学習処理を終了する。上述の学習処理が終了した後に行われる運用処理は、図15に示す制御装置2が行う処理と同様である。
以上説明したとおり、実施の形態3に係る制御装置3は、基準中間点、加工時軌跡誤差、反力および加工対象物300についての情報の対応を学習し、加工時軌跡誤差を最小化する目標中間点を求めて、加工時軌跡誤差を最小化する目標中間点を駆動条件および加工対象物300についての情報に応じて示す軌跡モデルを生成する。制御装置3が目標中間点を通る目標軌跡に応じてロボット10を制御することで、加工対象物300の加工が行われる。目標軌跡は、加工対象物300についての情報、例えば、加工対象物300のバリ310の厚みに応じて調節されるため、加工時の実軌跡が理想軌跡に近づき、加工時の制御装置3によるロボット10の制御精度は高くなる。
加工対象物300についての情報は、上述の例に限られず、反力の変動の要因となる加工対象物300についての情報であれば任意である。一例として、加工対象物特定部19は、加工工具200の移動方向、上述の例ではX軸方向のバリ310の長さの最小値、最大値、または平均値でもよい。
(実施の形態4)
ロボット10の軌跡を取得する方法は、上述の例に限られない。ロボット10と、実施の形態1とは異なる方法でロボット10の軌跡を取得する制御装置4と、を備えるロボットシステム103について、実施の形態1に係るロボットシステム100と異なる点を中心に説明する。
図19に示す制御装置4は、モータM1,M2,M3,M4,M5,M6の回転位置によらずロボット10の軌跡を取得する実軌跡取得部23を備える。実軌跡取得部23は、ロボット10の軌跡を測定する測定器、例えば、三次元測定器を有し、測定器の測定値に応じてロボット10の軌跡を取得する。三次元測定器は、ロボット10の先端リンクの移動範囲にレーザー光を照射し、ロボット10の先端リンクで反射されたレーザー光を受信することで、ロボット10の先端リンクの位置を取得する。
実施の形態4では、実軌跡取得部23は、上述の処理を制御周期ごとに行って、制御周期ごとのXYZ直交座標系における先端リンクの実際の位置である実位置を示す実軌跡を算出する。そして、実軌跡取得部23は、実軌跡を学習部14に送る。
制御装置4のハードウェア構成は、図4に示す制御装置1と同様である。
上記構成を有する制御装置4が行う学習処理は、先端リンクの軌跡の取得方法を除いて、制御装置1と同様である。制御装置4が行う運用処理は、制御装置1と同様である。
以上説明した通り、実施の形態4に係る制御装置4は、モータM1,M2,M3,M4,M5,M6の回転位置によらずロボット10の軌跡を取得するため、取得した実軌跡にロボット10の機械的剛性に起因する誤差が含まれず、実軌跡の精度が向上する。
本開示は、上述の実施の形態に限られない。
駆動条件は、上述の例に限られない。一例として、駆動条件は、加工対象物300についての情報をさらに含むものでもよい。具体的には、駆動条件は、先端リンクの動作開始点、動作終了点、速度、および姿勢、ならびに加工対象物300の重量を含むものでもよい。学習部14は、外部装置、例えば加工対象物300の重量を測定する重量センサから測定値を取得すればよい。詳細には、制御装置1-4は、重量センサから測定値を取得し、駆動条件記憶部11に記憶されている駆動条件に従ってロボット10を制御し、駆動条件および重量センサの測定値に対応する加工時軌跡誤差を算出して、基準中間点と重量センサの測定値と加工時軌跡誤差の対応を学習して、加工時軌跡誤差を最小化する目標中間点を求め、駆動条件および加工対象物300の重量に応じて目標中間点を示す軌跡モデルを生成する。この結果、学習部14は、図20に示すように、先端リンクの動作開始点、動作終了点、速度、および姿勢、ならびに加工対象物300の重量を含む駆動条件と目標中間点とを対応付ける目標中間点テーブルを生成する。
運用時において、目標軌跡決定部16は、駆動指令を取得すると、学習済みデータ記憶部15から、駆動指令が示す先端リンクの動作開始点、動作終了点、速度、および姿勢と重量センサの測定値に応じた目標中間点を取得する。そして、目標軌跡決定部16は、駆動指令が示す先端リンクの動作開始点、動作終了点、速度、および姿勢に基づき、目標中間点を通る目標軌跡を決定する。加工対象物300の重量に応じた目標軌跡に基づいてロボット10が制御されることで、ロボット10の制御精度が向上する。
他の一例として、駆動条件は、先端リンクの動作開始点、動作終了点、動作開始点から動作終了点に至るまでに要する時間および姿勢を含むものでもよい。
上述の実施の形態では、駆動条件は平面での直線的な移動を指示しているが、駆動条件は、三次元での移動、曲線的な移動等を指示してもよい。
上述の実施の形態では、駆動条件記憶部11に記憶されている駆動条件テーブルの1つのレコードには、1つの基準中間点が記憶されているが、駆動条件テーブルの1つのレコードに複数の基準中間点が記憶されてもよい。この場合、基準軌跡決定部12は、同じレコードに記憶されている複数の基準中間点を通る基準軌跡を決定すればよい。
駆動条件記憶部11および学習済みデータ記憶部15は、制御装置1-4の外部に設けられてもよい。一例として、駆動条件記憶部11および学習済みデータ記憶部15は、ネットワーク上の記憶装置の機能として実現されてもよい。
基準軌跡、理想軌跡、および目標軌跡の決定方法は、上述の例に限られない。詳細には、実施の形態1において基準軌跡決定部12が決定する基準軌跡RT1は、動作開始点SP1から基準中間点RP1を通って動作終了点EP1に至る滑らかな曲線であって、XY平面においてY軸負方向に突出する曲線で示されるが、基準軌跡RT1はこのような曲線に限られず、複数の方向に突出する曲線で示されてもよい。一例として、基準軌跡RT1は、動作開始点SP1から動作終了点EP1に至るまでにY軸負方向に突出し、かつ、動作開始点SP1および動作終了点EP1の付近でXY平面においてY軸正方向に突出する曲線でも示されてもよい。
他の一例として、基準軌跡決定部12は、駆動条件が示す動作開始点と基準中間点を線形補間し、基準中間点と駆動条件が示す動作終了点を線形補間することで、基準軌跡を算出してもよい。基準軌跡が線形補間により算出されても、制御部17がモータM1,M2,M3,M4,M5,M6を滑らかに回転させる制御を行うことで、先端リンクは滑らかに移動し、実軌跡は滑らかな曲線となる。
他の一例として、基準軌跡決定部12は、動作開始点、基準中間点、および動作終了点と制御周期ごとの先端リンクの基準位置とが対応付けられている図示しないテーブルを用いて、基準軌跡を決定してもよい。
理想軌跡および目標軌跡についても、上述の基準軌跡の決定方法と同様の方法によって、決定することが可能である。
実施の形態1では、ロボット10を直線的に動かすため、理想軌跡が直線であるが、理想軌跡はロボット10の動かし方に応じて定められればよく、直線に限られない。具体的には、理想軌跡は、円弧、曲線、または直線、円弧、および曲線の組合せでもよい。
実施の形態1において目標軌跡決定部16が決定する目標軌跡TT1は、動作開始点SP1から目標中間点TP1を通って動作終了点EP1に至る滑らかな曲線であって、XY平面においてY軸負方向に突出する曲線で示されるが、目標軌跡TT1はこのような曲線に限られない。一例として、目標軌跡TT1は、動作開始点SP1から動作終了点EP1に至るまでにY軸負方向に突出し、かつ、動作開始点SP1および動作終了点EP1の付近でXY平面においてY軸正方向に突出する曲線で示されてもよい。
他の一例として、目標軌跡決定部16は、駆動条件が示す動作開始点と目標中間点を線形補間し、目標中間点と駆動条件が示す動作終了点を線形補間することで、目標軌跡を決定してもよい。目標軌跡が線形補間により決定されても、制御部17がモータM1,M2,M3,M4,M5,M6を滑らかに回転させる制御を行うことで、先端リンクは滑らかに移動し、実軌跡は滑らかな曲線となる。
目標中間点の決定方法は、上述の例に限られない。一例として、学習部14は、線形回帰、曲線回帰、多項式回帰、多次元関数フィッティング等を用いて、目標中間点を決定してもよい。例えば、学習部14は、基準中間点のXYZ各座標成分を独立変数し、加工時軌跡誤差を目的関数として多次元関数フィッティングを行って、目標中間点を決定してもよい。
学習部14は、理想軌跡が示す制御周期ごとの先端リンクの位置である理想位置と実軌跡が示す制御周期ごとの先端リンクの位置である実位置との距離を算出し、距離が極大値となるときの実位置の理想位置からのずれを軌跡誤差として用いてもよい。この場合、学習部14は、図21に示すように、複数の加工時軌跡誤差を誤差テーブルに記憶してもよい。そして、学習部14は、加工時軌跡誤差として記憶されている極大値に基づいて、目標中間点を算出すればよい。学習部20,22についても同様である。
学習部14は、軌跡誤差に対応する先端リンクの実際の位置を誤差テーブルに記憶してもよい。例えば、学習部14は、制御周期ごとの先端リンクの理想位置と実軌跡が示す制御周期ごとの先端リンクの実際の位置との距離の極大値を加工時軌跡誤差として用いる際には、図22に示すように、距離が極大値となるときの先端リンクの実際の位置である実位置を誤差テーブルに記憶してもよい。そして、学習部14は、加工時軌跡誤差として記憶されている極大値および極大値に対応する先端リンクの実際の位置に基づいて、目標中間点を算出すればよい。学習部20,22についても同様である。
学習部14は、図23に示すように、距離が極大値となるときの反力を誤差テーブルに記憶してもよい。そして、学習部14は、加工時軌跡誤差として記憶されている極大値および極大値に対応する反力に基づいて、目標中間点を算出すればよい。
学習部14,20,22は、学習処理が完了した後に行う運用処理に並行して学習処理を再度行ってもよい。詳細には、学習部14,20,22は、運用処理の際に、目標軌跡決定部16が取得した駆動指令が示す駆動条件に応じた理想軌跡と実軌跡取得部13が取得した実軌跡との差分を示す軌跡誤差を算出し、加工時軌跡誤差を得る。運用処理時と並行して学習処理を行うことで、軌跡誤差を最小化する目標中間点の精度が向上し、結果としてロボット10の制御精度が向上する。
学習部14,20,22は、軌跡誤差として、先端リンクの実位置の理想位置からのずれの絶対値、平均値、中央値を用いて、目標中間点を決定してもよい。
加工対象物特定部19は、加工対象物300についての情報を取得するものであれば、任意である。一例として、撮影装置191は、三次元カメラでもよいし、二次元カメラでもよい。他の一例として、加工対象物特定部19は、ロボット10に取り付けられて、加工対象物300の形状を測定するレーザースキャナを有してもよい。
加工対象物特定部19によるバリ310の形状の決定方法は上述の例に限られない。一例として、加工対象物特定部19が有する形状決定部192は、撮影装置191が生成した画像データと設計データとを比較して、画像データと設計データとが一致しない部分をバリ310と判定してもよい。
制御装置1-4が行う学習処理を、他の装置の機能としてもよい。一例として、実施の形態1に係る制御装置1の機能を、ロボット10の制御を行う制御装置5と軌跡モデルを生成する学習装置6によって実現する例を図24に示す。図24に示すロボットシステム104は、ロボット10と、ロボット10を制御する制御装置5と、ロボット10を制御するための軌跡モデルを生成する学習装置6と、を備える。
学習装置6は、駆動条件記憶部11と、基準軌跡決定部12と、実軌跡取得部13と、学習部14と、学習済みデータ記憶部15と、反力取得部18と、を備える。学習装置6の各部の機能は制御装置1の対応する各部の機能と同様である。制御装置5は、目標軌跡決定部16と、制御部17と、を備える。制御装置5の各部の機能は制御装置1の対応する各部の機能と同様である。制御装置5が備える目標軌跡決定部16は、学習装置6が備える学習済みデータ記憶部15から軌跡モデルを取得すればよい。制御装置5が備える制御部17は、学習装置6が備える基準軌跡決定部12から取得した基準軌跡または目標軌跡決定部16で算出した目標軌跡に応じてロボット10を制御する。学習済みデータ記憶部15は、制御装置5および学習装置6からアクセス可能な独立した記憶装置としてもよい。同様に、制御装置2,3の機能を、制御装置5と学習装置6によって実現することができる。
他の一例として、図24に示すロボットシステム104において、学習装置6が備える学習部14の機能の内、軌跡モデルを生成する処理を制御装置5にもたせてもよい。この場合、学習装置6は、駆動条件に応じた基準中間点ごとに加工時軌跡誤差を算出して、加工時軌跡誤差を学習済みデータ記憶部15に記憶すればよい。制御装置5は、学習装置6が予め学習したデータ、具体的には、学習済みデータ記憶部15に記憶されている加工時軌跡誤差を取得し、保持すればよい。そして、制御装置5は、加工時軌跡誤差を最小化する目標中間点を駆動条件ごとに示す軌跡モデルを生成すればよい。
制御装置1-5の制御対象であるロボット10の軌跡は、先端リンクの軌跡に限られず、ロボット10またはロボット10に取り付けられる加工工具200の内、任意の部位の軌跡である。
実軌跡取得部23による先端リンクの軌跡の取得方法は、上述の例に限られない。一例として、実軌跡取得部23は、測定器として複数のカメラを有する。実軌跡取得部23は、複数のカメラによって、ロボット10の先端リンクの移動範囲を撮影し、複数のカメラで撮影された画像からロボット10の先端リンクの位置を決定してもよい。
他の一例として、実軌跡取得部23は、測定器としてロボット10の先端リンクに取り付けられた加速度センサを有する。実軌跡取得部23は、加速度センサの測定値に基づいてロボット10の先端リンクの位置を決定してもよい。
実軌跡取得部23は、制御周期とは独立した取得周期ごとに、ロボット10の先端リンクの位置を測定してもよい。この場合、学習部14は、取得周期ごとロボット10の先端リンクの位置を補間して、制御周期ごとのロボット10の先端リンクの位置を決定し、理想位置と比較すればよい。詳細には、学習部14は、線形補間、多項式補間等を用いて補間処理を行う。
制御部17は、上述の実軌跡取得部23で取得されたロボット10の先端リンクの位置に応じて、モータM1,M2,M3,M4,M5,M6をフィードバック制御してもよい。
その他、上述のハードウェア構成およびフローチャートは一例であり、任意に変更および修正が可能である。一例として、制御装置1-4および学習装置6は、図示しない操作部の操作に応じて、学習処理を開始してもよい。
上述の実施の形態では、実際にロボット10を動作させて軌跡誤差を求めるが、学習処理をシミュレーションによって行ってもよい。
上述の動作を実行するためのコンピュータプログラムを、フレキシブルディスク、CD-ROM(Compact Disc - Read Only Memory)、DVD-ROM(Digital Versatile Disc - Read Only Memory)などのコンピュータが読み取り可能な記録媒体に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、上述の動作を実行する制御装置1-5および学習装置6を実現してもよい。あるいは、専用のシステムによって、上述の動作を実行する制御装置1-5および学習装置6を実現してもよい。上記コンピュータプログラムは、搬送波に重畳されて通信ネットワークを介して提供されてもよい。
ロボット10は、上述の例に限られず、任意である。一例として、制御装置1-5は、図25に示す水平多関節ロボットであるロボット40を制御してもよい。ロボット40は、第1アーム410と、第2アーム420と、第3アーム430と、ベース440と、を備える。第1アーム410は、Z軸に平行な回転軸AX1周りに回転可能な状態でベース440に取り付けられる。第2アーム420は、第1アーム410に連結され、Z軸に平行な回転軸AX2周りに回転可能である。第3アーム430は、第2アーム420に連結され、Z軸に平行な回転軸AX3周りに回転可能である。さらに第3アーム430は、回転軸AX3に沿う方向に伸縮可能である。ベース440は、平面に固定されて、第1アーム410を支持する。第3アーム430に加工工具200を取り付けることが可能である。制御装置1-5は、ロボット40が備える図示しないモータを制御することで、第3アーム430の先端である先端リンクの位置を制御すればよい。
他の一例として、制御装置1-5は、図26に示す複数の軸を有するロボットであるロボット50を制御してもよい。ロボット50は、第1アーム510と、第2アーム520と、ベース530と、を備える。第1アーム510は、X軸方向に移動可能な状態でベース530に取り付けられる。第2アーム520は、第1アーム510に連結され、Y軸方向に移動可能である。ベース530は、平面に固定されて、第1アーム510を支持する。第2アーム520には、加工工具200が取り付けられている。図26の例では、第2アーム520は印刷ヘッドであって、液体吐出部および吐出ノズルを有する加工工具200によって、ベース530上に設置されたステージ540上の基板に電極を形成する。詳細には、加工工具200の先端は、ステージ540上をX軸方向およびY軸方向に移動可能である。制御装置1-5は、ロボット50が備える図示しないモータを制御することで、第2アーム520の先端である先端リンクの位置を制御すればよい。
上述の例では、ロボット10,40,50の先端リンクの位置は、XYZ直交座標系で定義されたが、円筒座標系で定義されてもよい。
本開示は、本開示の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、この開示を説明するためのものであり、本開示の範囲を限定するものではない。すなわち、本開示の範囲は、実施の形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の開示の意義の範囲内で施される様々な変形が、この開示の範囲内とみなされる。
本出願は、2021年2月18日に出願された、日本国特許出願特願2021-23848号に基づく。本明細書中に日本国特許出願特願2021-23848号の明細書、特許請求の範囲、図面全体を参照として取り込むものとする。