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

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

▶ セイコーエプソン株式会社の特許一覧

特開2024-127329ロボットの力制御動作の対象となるワークの元形状を単純化する方法、単純化処理装置、及び、コンピュータープログラム
<>
  • 特開-ロボットの力制御動作の対象となるワークの元形状を単純化する方法、単純化処理装置、及び、コンピュータープログラム 図1
  • 特開-ロボットの力制御動作の対象となるワークの元形状を単純化する方法、単純化処理装置、及び、コンピュータープログラム 図2
  • 特開-ロボットの力制御動作の対象となるワークの元形状を単純化する方法、単純化処理装置、及び、コンピュータープログラム 図3
  • 特開-ロボットの力制御動作の対象となるワークの元形状を単純化する方法、単純化処理装置、及び、コンピュータープログラム 図4
  • 特開-ロボットの力制御動作の対象となるワークの元形状を単純化する方法、単純化処理装置、及び、コンピュータープログラム 図5
  • 特開-ロボットの力制御動作の対象となるワークの元形状を単純化する方法、単純化処理装置、及び、コンピュータープログラム 図6
  • 特開-ロボットの力制御動作の対象となるワークの元形状を単純化する方法、単純化処理装置、及び、コンピュータープログラム 図7
  • 特開-ロボットの力制御動作の対象となるワークの元形状を単純化する方法、単純化処理装置、及び、コンピュータープログラム 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024127329
(43)【公開日】2024-09-20
(54)【発明の名称】ロボットの力制御動作の対象となるワークの元形状を単純化する方法、単純化処理装置、及び、コンピュータープログラム
(51)【国際特許分類】
   B25J 9/22 20060101AFI20240912BHJP
   G05B 19/4097 20060101ALI20240912BHJP
【FI】
B25J9/22 A
G05B19/4097 C
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023036426
(22)【出願日】2023-03-09
(71)【出願人】
【識別番号】000002369
【氏名又は名称】セイコーエプソン株式会社
(74)【代理人】
【識別番号】110000028
【氏名又は名称】弁理士法人明成国際特許事務所
(72)【発明者】
【氏名】戸田 淳
(72)【発明者】
【氏名】福泉 尊久
【テーマコード(参考)】
3C269
3C707
【Fターム(参考)】
3C269AB22
3C269AB33
3C269BB03
3C269CC09
3C269EF71
3C269MN07
3C269MN14
3C269MN16
3C269MN26
3C269MN29
3C269MN40
3C269MN44
3C269QE03
3C269QE10
3C269QE22
3C269QE26
3C707AS01
3C707AS07
3C707BS15
3C707CX01
3C707DS01
3C707HS27
3C707KS07
3C707KS16
3C707KS33
3C707KS35
3C707KS37
3C707KV01
3C707LS20
3C707LV17
3C707LW12
3C707LW15
3C707MT04
(57)【要約】
【課題】力制御動作のシミュレーションに適したワーク形状を求めることができる技術を提供する。
【解決手段】本開示の方法は、(a)第1ワークの第1元形状を表す第1CADデータと第2ワークの第2元形状を表す第2CADデータを取得する工程と、(b)単純化処理条件を設定する工程と、(c)第1ワークの第1単純化形状と第2ワークの第2単純化形状を求める工程と、(d)第1元形状と第1単純化形状の表面形状の第1表面差異と、第2元形状と第2単純化形状の表面形状の第2表面差異とを算出する工程と、(e)第1単純化形状と第2単純化形状の重畳の程度を表す重畳量を算出する工程と、を含み、第1表面差異と第2表面差異と重畳量を含む第1評価関数を用いて第1単純化形状と第2単純化形状を最適化する第1最適化処理を実行しつつ、予め設定された第1終了条件が成立するまで処理を繰り返す。
【選択図】図3
【特許請求の範囲】
【請求項1】
ロボットの力制御動作の対象となるワークの元形状を単純化する方法であって、
(a)第1ワークの第1元形状を表す第1CADデータと、前記力制御動作において前記第1ワークに接触する第2ワークの第2元形状を表す第2CADデータを取得する工程と、
(b)単純化処理条件を設定する工程と、
(c)前記単純化処理条件の下で、前記第1元形状を単純化した第1単純化形状と、前記第2元形状を単純化した第2単純化形状を求める単純化処理を実行する工程と、
(d)前記第1元形状と前記第1単純化形状の表面形状の差異を表す第1表面差異と、前記第2元形状と前記第2単純化形状の表面形状の差異を表す第2表面差異と、を算出する工程と、
(e)前記力制御動作で前記第1ワークと前記第2ワークが接触する相対位置関係において、前記第1単純化形状と前記第2単純化形状の重畳の程度を表す重畳量を算出する工程と、
を含み、
前記工程(c)において前記第1表面差異と前記第2表面差異と前記重畳量を含む第1評価関数を用いて前記第1単純化形状と前記第2単純化形状を最適化する第1最適化処理を実行しつつ、予め設定された第1終了条件が成立するまで前記工程(c)~(e)を繰り返す処理を行うことを特徴とする方法。
【請求項2】
請求項1に記載の方法であって、
前記単純化処理は、前記第1単純化形状と前記第2単純化形状のそれぞれを、直方体であるプリミティブ立体の組み合わせとして構成する処理である、方法。
【請求項3】
請求項1に記載の方法であって、
前記単純化処理は、前記第1単純化形状と前記第2単純化形状のそれぞれを、プリミティブ立体の組み合わせとして構成する処理であり、
前記単純化処理条件は、前記単純化処理で使用可能な前記プリミティブ立体の最大数を含む、方法。
【請求項4】
請求項2又は3に記載の方法であって、更に、
前記第1単純化形状と前記第2単純化形状のそれぞれについて、前記プリミティブ立体の一部にカット面を加える工程、
を含む、方法。
【請求項5】
請求項1に記載の方法であって、
前記工程(a)は、前記第1ワークと前記第2ワークを用いて前記ロボットに前記力制御動作を行わせることによって得られていた実機動作データを取得する工程を含み、
前記方法は、更に、
(f)前記第1単純化形状と前記第2単純化形状を用いて前記力制御動作のシミュレーションを実行し、前記シミュレーションでの動作と前記実機動作データでの動作との差異を示す動作距離を求める工程、を含み、
前記工程(b)において前記動作距離を第2評価関数として前記単純化処理条件を最適化する第2最適化処理を実行しつつ、予め設定された第2終了条件が成立するまで前記工程(c)~(e)を繰り返す処理及び前記工程(f)を繰り返して実行する、方法。
【請求項6】
ロボットの力制御動作の対象となるワークの元形状を単純化する単純化処理装置であって、
第1ワークの第1元形状を表す第1CADデータと、前記力制御動作において前記第1ワークに接触する第2ワークの第2元形状を表す第2CADデータと、を取得するデータ取得部と、
単純化処理条件を設定する処理条件設定部と、
前記単純化処理条件の下で、前記第1元形状を単純化した第1単純化形状と、前記第2元形状を単純化した第2単純化形状を求める単純化処理を実行する単純化処理部と、
前記第1元形状と前記第1単純化形状の表面形状の差異を表す第1表面差異と、前記第2元形状と前記第2単純化形状の表面形状の差異を表す第2表面差異と、を算出する表面差異算出部と、
前記力制御動作で前記第1ワークと前記第2ワークが接触する相対位置関係において、前記第1単純化形状と前記第2単純化形状の重畳の程度を表す重畳量を算出する重畳量算出部と、
を備え、
前記単純化処理部は、前記第1表面差異と前記第2表面差異と前記重畳量を含む第1評価関数を用いて前記第1単純化形状と前記第2単純化形状を最適化する第1最適化処理を実行する、単純化処理装置。
【請求項7】
ロボットの力制御動作の対象となるワークの元形状を単純化する処理をプロセッサーに実行させるコンピュータープログラムであって、
(a)第1ワークの第1元形状を表す第1CADデータと、前記力制御動作において前記第1ワークに接触する第2ワークの第2元形状を表す第2CADデータを取得する処理と、
(b)単純化処理条件を取得する処理と、
(c)前記単純化処理条件の下で、前記第1元形状を単純化した第1単純化形状と、前記第2元形状を単純化した第2単純化形状を求める単純化処理と、
(d)前記第1元形状と前記第1単純化形状の表面形状の差異を表す第1表面差異と、前記第2元形状と前記第2単純化形状の表面形状の差異を表す第2表面差異と、を算出する処理と、
(e)前記力制御動作で前記第1ワークと前記第2ワークが接触する相対位置関係において、前記第1単純化形状と前記第2単純化形状の重畳の程度を表す重畳量を算出する処理と、
前記処理(c)において前記第1表面差異と前記第2表面差異と前記重畳量を含む第1評価関数を用いて前記第1単純化形状と前記第2単純化形状を最適化する第1最適化処理を実行しつつ、予め設定された第1終了条件が成立するまで前記処理(c)~(e)を繰り返す処理と、
を前記プロセッサーに実行させるコンピュータープログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ロボットの力制御動作の対象となるワークの元形状を単純化する方法、単純化処理装置、及び、コンピュータープログラムに関する。
【背景技術】
【0002】
ロボットの力制御動作をシミュレーションするために、物理エンジンを搭載したシミュレーターソフトウェアが利用される場合がある。シミュレーターソフトウェアの多くは、メッシュの集合として表現されたワークのCADデータを受け付けてシミュレーションを実行できるが、ワーク同士の接触時に発生する力やトルクまで高精度に再現することは一般に困難である。そこで、ワークの形状を変更することによって、シミュレーションの精度を高めることが望まれる。
【0003】
特許文献1には、任意の物理量の誤差を許容範囲内に抑え、かつ過剰精度とならないようなメッシュ数でCADデータを多面体に変換する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009-048537号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、上記従来技術のように多面体に変換されたワークを力制御動作のシミュレーションで扱う場合には、ワーク同士の接触力の算出処理が不安定になりやすいという問題がある。これは、多面体を構成するメッシュの頂点間の位置関係や、接触するワーク同士の位置関係等の様々な拘束条件を満たすように力の算出を繰り返し演算する必要があるためである。そこで、上記従来技術と異なる方法で、力制御動作のシミュレーションに適したワーク形状を求める技術が望まれる。
【課題を解決するための手段】
【0006】
本開示の第1の形態によれば、ロボットの力制御動作の対象となるワークの元形状を単純化する方法が提供される。この方法は、(a)第1ワークの第1元形状を表す第1CADデータと、前記力制御動作において前記第1ワークに接触する第2ワークの第2元形状を表す第2CADデータを取得する工程と、(b)単純化処理条件を設定する工程と、(c)前記単純化処理条件の下で、前記第1元形状を単純化した第1単純化形状と、前記第2元形状を単純化した第2単純化形状を求める単純化処理を実行する工程と、(d)前記第1元形状と前記第1単純化形状の表面形状の差異を表す第1表面差異と、前記第2元形状と前記第2単純化形状の表面形状の差異を表す第2表面差異と、を算出する工程と、(e)前記力制御動作で前記第1ワークと前記第2ワークが接触する相対位置関係において、前記第1単純化形状と前記第2単純化形状の重畳の程度を表す重畳量を算出する工程と、を含み、前記工程(c)において前記第1表面差異と前記第2表面差異と前記重畳量を含む第1評価関数を用いて前記第1単純化形状と前記第2単純化形状を最適化する第1最適化処理を実行しつつ、予め設定された第1終了条件が成立するまで前記工程(c)~(e)を繰り返す処理を行う。
【0007】
本開示の第2の形態によれば、ロボットの力制御動作の対象となるワークの元形状を単純化する単純化処理装置が提供される。この単純化処理装置は、第1ワークの第1元形状を表す第1CADデータと、前記力制御動作において前記第1ワークに接触する第2ワークの第2元形状を表す第2CADデータと、を取得するデータ取得部と、単純化処理条件を設定する処理条件設定部と、前記単純化処理条件の下で、前記第1元形状を単純化した第1単純化形状と、前記第2元形状を単純化した第2単純化形状を求める単純化処理を実行する単純化処理部と、前記第1元形状と前記第1単純化形状の表面形状の差異を表す第1表面差異と、前記第2元形状と前記第2単純化形状の表面形状の差異を表す第2表面差異と、を算出する表面差異算出部と、前記力制御動作で前記第1ワークと前記第2ワークが接触する相対位置関係において、前記第1単純化形状と前記第2単純化形状の重畳の程度を表す重畳量を算出する重畳量算出部と、を備える。前記単純化処理部は、前記第1表面差異と前記第2表面差異と前記重畳量を含む第1評価関数を用いて前記第1単純化形状と前記第2単純化形状を最適化する第1最適化処理を実行する。
【0008】
本開示の第3の形態によれば、ロボットの力制御動作の対象となるワークの元形状を単純化する処理をプロセッサーに実行させるコンピュータープログラムが提供される。このコンピュータープログラムは、(a)第1ワークの第1元形状を表す第1CADデータと、前記力制御動作において前記第1ワークに接触する第2ワークの第2元形状を表す第2CADデータを取得する処理と、(b)単純化処理条件を取得する処理と、(c)前記単純化処理条件の下で、前記第1元形状を単純化した第1単純化形状と、前記第2元形状を単純化した第2単純化形状を求める単純化処理と、(d)前記第1元形状と前記第1単純化形状の表面形状の差異を表す第1表面差異と、前記第2元形状と前記第2単純化形状の表面形状の差異を表す第2表面差異と、を算出する処理と、(e)前記力制御動作で前記第1ワークと前記第2ワークが接触する相対位置関係において、前記第1単純化形状と前記第2単純化形状の重畳の程度を表す重畳量を算出する処理と、前記処理(c)において前記第1表面差異と前記第2表面差異と前記重畳量を含む第1評価関数を用いて前記第1単純化形状と前記第2単純化形状を最適化する第1最適化処理を実行しつつ、予め設定された第1終了条件が成立するまで前記処理(c)~(e)を繰り返す処理と、を前記プロセッサーに実行させる。
【図面の簡単な説明】
【0009】
図1】実施形態におけるロボットシステムの構成を示す説明図。
図2】情報処理装置の機能ブロック図。
図3】ワークの元形状と単純化形状の一例を示す説明図。
図4】ワークの元形状と単純化形状の他の例を示す説明図。
図5】第1実施形態におけるワーク形状の単純化処理の手順を示すフローチャート。
図6】プリミティブ立体の数を変更する例を示す説明図。
図7】直方体にカット面を付与する例を示す説明図。
図8】第2実施形態におけるワーク形状の単純化処理の手順を示すフローチャート。
【発明を実施するための形態】
【0010】
A.第1実施形態:
図1は、一実施形態におけるロボットシステムの一例を示す説明図である。このロボットシステムは、ロボット100と、ロボット100を制御する制御装置200と、情報処理装置300と、を備える。ロボット100は、架台500上に設置されている。情報処理装置300は、例えばパーソナルコンピューターである。
【0011】
ロボット100は、基台110と、ロボットアーム120とを備えている。ロボットアーム120は、4つの関節J1~J4で順次接続されている。ロボットアーム120の先端部には、力センサー410と、エンドエフェクター150が装着されている。ロボットアーム120の先端近傍には、ロボット100の制御点としてのTCP(Tool Center Point)が設定されている。本実施形態では、4つの関節J1~J4を有する4軸ロボットを例示しているが、複数の関節を有する任意のアーム機構を有するロボットを用いることが可能である。また、本実施形態のロボット100は、水平多関節ロボットであるが、垂直多関節ロボットを使用してもよい。
【0012】
力センサー410は、エンドエフェクター150に掛かる力を検出するセンサーである。力センサー410としては、単軸方向の力を検出可能なロードセルや、複数の軸方向の力成分を検出可能な力覚センサーやトルクセンサーを利用可能である。本実施形態では、力センサー410として、6軸の力覚センサーを用いている。6軸の力覚センサーは、固有のセンサー座標系において互いに直交する3個の検出軸に平行な力の大きさと、3個の検出軸まわりのトルクの大きさとを検出する。なお、力センサー410は、エンドエフェクター150の位置以外の位置に設けるようにしてもよく、例えば、関節J1~J4のうちの1つ以上の関節に設けるようにしてもよい。
【0013】
ロボット100は、力センサー410による検出結果を利用して、第1ワーク610と第2ワーク620を用いた力制御動作を実行する。本実施形態では、第1ワーク610を第2ワーク620に嵌合させる嵌合動作、又は、第2ワーク620を第1ワーク610に挿入させる挿入動作を力制御動作として実行する。ワーク610,620の具体的な形状の例については後述する。力制御動作としては、面合わせ動作や押付け移動動作等の他の動作を実行するようにしてもよい。
【0014】
図2は、実施形態における情報処理装置300の機能を示すブロック図である。情報処理装置300は、例えばパーソナルコンピューターなどの情報処理装置として実現可能である。情報処理装置300は、プロセッサー310と、メモリー320と、インターフェイス回路330と、インターフェイス回路330に接続された入力デバイス340及び表示デバイス350と、を有している。インターフェイス回路330には、更に、制御装置200が接続されている。ロボット100のセンサー類400の計測結果は、制御装置200を介して情報処理装置300に供給される。
【0015】
センサー類(sensors)400は、図1で説明した力センサー410の他に、ロボット100の各関節に設けられたモーターの電流を測定する電流センサー430と、各関節の動作位置を検出する関節エンコーダー440とを含んでいる。
【0016】
プロセッサー310は、シミュレーションのためにワーク610,620の元形状を調整するワーク形状調整部370、及び、ロボット100の動作をシミュレーションするシミュレーター380としての機能を有する。ワーク形状調整部370は、データ取得部371と、処理条件設定部372と、単純化処理部373と、表面差異算出部374と、重畳量算出部375の機能を含む。ワーク形状調整部370に含まれる各部の機能については後述する。ワーク形状調整部370とシミュレーター380の機能は、メモリー320に格納されたコンピュータープログラムをプロセッサー310が実行することによって実現される。但し、これらの機能の一部又は全部をハードウェア回路で実現してもよい。
【0017】
メモリー320には、ワーク610,620の元形状を表すCADデータCDと、ワーク形状の単純化処理条件SCと、ロボット100による力制御動作の実機動作データLDと、ロボット制御プログラムRPが格納される。ロボット制御プログラムRPは、ロボット100を動作させる複数の命令で構成される。
【0018】
図3は、ワーク610,620の元形状と単純化形状の一例を示す説明図である。第1ワーク610は、中空円筒状の本体部611と、本体部611の互いに対向する位置に設けられた2つの嵌合部612とを有する。嵌合部612には円筒状の挿入孔613が形成されている。第2ワーク620は、矩形状の基台621と、基台621の上の2カ所に設けられた円柱状の嵌合部622とを有する。第2ワーク620の嵌合部622は、第1ワーク610の挿入孔613に挿入されるように構成されている。第1ワーク610の嵌合部612を「被挿入部」と呼び、第2ワーク620の嵌合部622を「挿入部」と呼ぶことも可能である。
【0019】
図4において、第2ワーク620の嵌合部622の一つには、第2ワーク620のCADデータで表されるメッシュ構造が描かれている。ワーク610,620の他の部分も同様のメッシュ構造を有しているが、図4では便宜上、メッシュ構造の図示が省略されている。一般に、CADデータによって表されるワークの形状は、多数の小さな三角形で構成されるメッシュ構造で表現される。従って、CADデータで表現されたワーク形状をそのまま使用してシミュレーションを行うと、力やトルクの計算が複雑であり、実機で得られる力やトルクに対して大きな誤差が生じてしまう可能性がある。そこで、本開示では、ワークの形状を単純化することによって、シミュレーションで得られる力やトルクの計算を簡略化する。
【0020】
本開示では、CADデータで表されるワーク610,620の形状So1,So2を「元形状So1,So2」と呼ぶ。単純化処理では、個々のワーク610,620の元形状So1,So2が、プリミティブ立体の組み合わせで構成される単純化形状Ss1,Ss2に変換される。「プリミティブ立体」とは、単純な形状を有する立体を意味する。本実施形態では、プリミティブ立体として直方体を使用する。但し、プリミティブ立体としては、三角柱や円柱などの他の立体を使用してもよい。なお、直方体や三角柱のように、底面が多角形である角柱をプリミティブ立体として使用すれば、ワークの単純化形状を構成する面の数を少なくすることができる。
【0021】
図3の例における第1ワーク610の単純化形状Ss1は、7つの直方体で構成されている。2つの嵌合部612に設けられた円柱形の挿入孔613は、4つの直方体で囲まれた角筒状の孔として表現されている。第2ワーク620の単純化形状Ss2は、3つの直方体で構成されている。2つの円柱状の嵌合部622は、1つの直方体でそれぞれ表現されている。
【0022】
図4は、ワーク610,620の元形状と単純化形状の他の例を示す説明図である。この例では、第1ワーク610の単純化形状Ss1は、4つの直方体で構成されている。2つの挿入孔613は、4つの直方体で囲まれた1つの角筒状の孔として表現されている。第2ワーク620の単純化形状Ss2は、2つの直方体で構成されている。この例では、2つの円柱状の嵌合部622の全体が、1つの直方体で表現されている。図4の例は、単純化処理に使用可能なプリミティブ立体の最大数が、図3の例よりも小さく設定された例である。
【0023】
図5は、第1実施形態におけるワーク形状の単純化処理の手順を示すフローチャートである。ステップS10では、データ取得部371が、第1ワーク610の元形状So1を表すCADデータと、第2ワーク620の元形状So2を表すCADデータを取得する。このステップS10は、メモリー320からCADデータを読み込むことによって実行される。新たなワークを処理対象とする場合には、そのワークのCADデータがユーザーによって入力され、データ取得部371によって受け付けられる。
【0024】
ステップS20では、処理条件設定部372が、単純化処理条件SCの入力をユーザーから受け付けて設定する。単純化処理条件SCは、例えば、以下の項目を含んでいる。
(1)個々のワークの単純化形状を構成するプリミティブ立体の最大数。
(2)ステップS40で算出される表面差異SDのための閾値、及び、ステップS50で算出される重畳量SPのための閾値。
(3)ステップS60の判定で使用される最適化処理の終了条件。
(4)ステップS80で付与されるカット面の最大数、サイズ、及び方向。
(5)嵌合動作終了時のワーク610,620の相対位置。
【0025】
ステップS30では、単純化処理部373が、単純化処理条件SCの下で、ワーク610,620の元形状So1,So2を単純化する単純化処理を実行する。具体的には、前述した図3又は図4で説明したように、第1ワーク610の元形状So1を単純化した第1単純化形状Ss1が決定されるとともに、第2ワーク620の元形状So2を単純化した第2単純化形状Ss2が決定される。
【0026】
単純化処理部373は、CADデータの入力に応じて単純化形状を求める種々のアルゴリズムを用いることができる。このアルゴリズムとしては、例えば、プリミティブ立体としての直方体の最大数を制約条件として、後述する表面差異と重畳量を最小化するように各直方体の辺の長さ及び位置・姿勢を最適化する最適化アルゴリズムを使用することができる。
【0027】
最適化アルゴリズムとしては、例えば、ランダムサーチや遺伝的アルゴリズム、ベイズ最適化、CMA-ES(分散行列適応進化戦略)等を用いることができる。また、単純化処理のアルゴリズムとして、機械学習モデルを用いることも可能である。例えば、ワークのCADデータを入力とし、複数のプリミティブ立体の組み合わせを出力とするニューラルネットワークを用いてもよい。このニューラルネットワークは、表面差異SDと重畳量SPを最小化するように、教師無し学習による学習がなされたものとすることができる。この場合には、単純化レベルを表す実数値等の何らかのパラメーターをニューラルネットワークの入力に加えて学習しておくことが好ましい。こうすれば、ニューラルネットワークの出力を調整できる。
【0028】
最適化アルゴリズムの評価関数としては、例えば、以下の3つの例のいずれか1つを使用することが可能である。
<評価関数E1>
E1 = k1×SD1 + k2×SD2 + k2×SP
ここで、k1~k3は正の係数、SD1は第1ワーク610の表面差異、SD2は第2ワークの表面差異、SPは重畳量である。
<評価関数E2a, E2b>
E2a = k1×SD1 + k2×SD2
E2b = SP
この評価関数E2a, E2bを用いる場合には、多目的最適化処理が実行される。
<評価関数E3a, E3b, E3c>
E3a = SD1
E3b = SD2
E3c = SP
この評価関数E3a, E3b, E3cを用いる場合にも、多目的最適化処理が実行される。
【0029】
上述した評価関数の3つの例のいずれを使用する最適化処理も、「表面差異SD1と表面差異SD2と重畳量SPを含む評価関数を用いて単純化形状を最適化する最適化処理」に相当する。
【0030】
ステップS40では、表面差異算出部374が、個々のワーク610,620について、CADデータで表される元形状と単純化形状との表面形状の差異を表す表面差異SDを算出する。表面差異SDは、ワークの元形状の表面と、単純化形状の表面との近さを表す指標である。表面差異SDは、例えば次式で算出される。
【数1】
【0031】
表面差異SDとしては、第1ワーク610に関する第1表面差異SD1と、第2ワーク620に関する第2表面差異SD2が、(q1)~(q3)に従ってそれぞれ算出される。(q2)式で算出される値Dは、元形状の表面上の点が単純化形状の表面に近いほど小さくなり、(q3)式で算出される値Dは、単純化形状の表面上の点が元形状の表面に近いほど小さくなる。従って、これらの総和である表面差異SDを個々のワークについて算出し、それらを最小化するようなプリミティブ立体の組み合わせをステップS30~S60で探索することによって、個々のワークについて、元形状に近い単純化形状を得ることができる。なお、表面差異SDの計算方法は上述した式に限ったものではなく、例えば、元形状の表面上のN個の点から単純化形状を構成する直方体の面までの距離を用いて表面差異SDを算出するなどの、様々な方法を用いることができる。
【0032】
ステップS50では、重畳量算出部375が、2つのワーク610,620の単純化形状Ss1,Ss2の重畳量SPを算出する。重畳量SPは、力制御動作で第1ワーク610と第2ワーク620が接触する相対位置関係において、第1ワーク610の単純化形状Ss1と、第2ワーク620の単純化形状Ss2の重畳の程度を表す指標である。力制御動作として嵌合動作又は挿入動作を行う場合には、2つのワーク610,620を嵌合完了時又は挿入完了時の相対位置に配置した状態での単純化形状Ss1,Ss2同士の重なりの程度が重畳量SPとして算出される。重畳量SPは、例えば、2つの単純化形状Ss1,Ss2同士が重なった部分の体積である。単純化形状Ss1,Ss2が複数の直方体の組み合わせとして表現される場合には、重畳量SPは、直方体間の重複の総和として計算可能である。重畳量SPを最小化すれば、2つのワーク610,620同士が過度に干渉してしまうことを防止することが可能であり、より実機挙動に近いシミュレーションが可能な単純化形状を得ることができる。
【0033】
ステップS60では、単純化処理部373が、ステップS30の処理で得られた単純化形状について、予め設定された終了条件が成立するか否かを判定する。終了条件としては、例えば、以下の終了条件EC1,EC2,EC3のいずれか1つを使用できる。
<終了条件EC1>
第1ワーク610の表面差異SD1と第2ワークの表面差異SD2と重畳量SPを含む評価関数E1の値が、予め設定された閾値T1以下であること。
E1 = k1×SD1+ k2×SD2 + k2×SP ≦ T1
<終了条件EC2>
第1ワーク610の表面差異SD1と第2ワークの表面差異SD2を含む評価関数E2aと、重畳量SPを含む評価関数E2bの値が、それぞれの閾値T2a, T2b以下であること。
E2a = k1×SD1 + k2×SD2 ≦ T2a
E2b = SP ≦ T2b
<終了条件EC3>
第1ワーク610の表面差異SD1を含む評価関数E3aと、第2ワークの表面差異SD2を含む評価関数E3bと、重畳量SPを含む評価関数E3cの値が、それぞれの閾値T3a, T3b, T3c以下であること。
E3a = SD1 ≦ T3a
E3b = SD2 ≦ T3b
E3c = SP ≦ T3c
【0034】
なお、終了条件としては、上述した3つの終了条件EC1~EC3の他に、例えば、ステップS30~S60のルーチンを所定回数実行したこと、などの他の条件を用いてもよい。ステップS60の終了条件を「第1終了条件」とも呼ぶ。
【0035】
終了条件が成立していない場合には、ステップS30に戻り、ステップS30~S50の処理が再度実行される。この際、ステップS30では、表面差異SD1, SD2と重畳量SPを含む評価関数E1~E3のいずれかを用いて、個々のワークの単純化形状を最適化する最適化処理が実行される。
【0036】
一方、終了条件が成立した場合には、ステップS70に進み、プリミティブ立体の数を変更するか否かがユーザーによって指定される。
【0037】
図6は、プリミティブ立体の数を変更する例を示す説明図である。ウィンドウW1には、ステップS30の処理で得られたワーク610,620の単純化形状Ss1,Ss2_1の一例が表示されている。ユーザーは、任意のプリミティブ立体を選択して、そのプリミティブ立体を削除するか、分割するかを指定することができる。図6の上側の例では、第2ワーク620の単純化形状Ss2_1を構成する1つのプリミティブ立体PM1が選択され、その選択に応じてポップアップウィンドウPW1が表示されている。ポップアップウィンドウPW1では、プリミティブ立体PM1を削除することが指定されている。この後、ステップS70からステップS30に戻り、ステップS30~S60の最適化処理が実行されると、図6の下側のウィンドウW2に示すように、変更された第2ワーク620の単純化形状Ss2_2がステップS70で表示される。単純化形状Ss2_2は、元の単純化形状Ss2_1よりも少数のプリミティブ立体で構成されている。
【0038】
図6の下側の例では、第2ワーク620の単純化形状Ss2_2を構成する1つのプリミティブ立体PM2が選択され、その選択に応じてポップアップウィンドウPW2が表示されている。このポップアップウィンドウPW2では、プリミティブ立体PM2を2分割することが指定されている。プリミティブ立体を分割する際には、所望の分割数を指定できるようにしてもよい。この後、ステップS70からステップS30に戻り、ステップS30~S60の最適化処理が実行されると、図6の上側のウィンドウW1に示すように、変更された第2ワーク620の単純化形状Ss2_1がステップS70で表示される。
【0039】
このように、単純化処理において、ワーク610,620の単純化形状Ss1,Ss2に含まれる任意のプリミティブ立体を選択して、削除するか分割するかを指定できることが好ましい。こうすれば、個々のワークの単純化形状を構成するプリミティブ立体の数を所望の数に調整できる。なお、ステップS70の処理は、ステップS60の後に限らず、任意のタイミングで行うことが可能である。また、ステップS70を省略してもよい。
【0040】
なお、ユーザーがプリミティブ立体の数を変更したい場合に、図6に示したようなグラフィカルユーザーインターフェースを用いるのではなく、ステップS20に戻って、単純化処理条件SCを変更するようにしてもよい。単純化処理条件SCにおけるプリミティブ立体の最大数を変更してステップS30以降の処理を実行すれば、図6の例と同様に、個々のワークの単純化立体を構成するプリミティブ立体の数を変更することができる。なお、ステップS20に戻ってプリミティブ立体の最大数を変更する場合には、他の条件を追加的に変更しても良い。
【0041】
プリミティブ立体の数を変更しない場合には、ステップS70からステップS80に進み、単純化処理部373が、ワーク610,620の単純化形状Ss1,Ss2を構成するプリミティブ立体にカット面を加える処理を実行する。
【0042】
図7は、直方体であるプリミティブ立体にカット面を付与する例を示す説明図である。この例では、左側に示す元の直方体RCの頂部に、直方体RCの底面BPから傾く斜面としてのカット面CSが4つ付与されている。本実施形態では、カット面CSもプリミティブ立体である直方体の側面を用いて付与される。従って、図7の例において、カット面CSを付与する処理は、元の直方体RCの頂部を、底面BPを提供する1つの直方体と、カット面CSを側面とするように斜めに配置された4つの直方体と、で再構成する処理である。これらの5つの直方体は、互いに重複することが許容された状態で配置される。こうすれば、プリミティブ立体のみを用いてカット面CSを付与することができる。
【0043】
個々のプリミティブ立体に対するカット面CSの付与の有無や、カット面CSの最大数、カット面CSのサイズ、及びカット面CSの方向は、単純化処理条件SCとして設定される。カット面CSの付与対象となるプリミティブ立体と付与位置は、ユーザーによって指定するようにしてもよい。例えば、図3の例では、第2ワーク620に含まれる円柱状の2つの嵌合部622の先端部にカット面CSを付与するように指定することが好ましい。直方体などのプリミティブ立体にカット面CSを付与するようにすれば、現実のワークの角部に存在するわずかな丸みと、それによる位置ズレの補正を再現できる。この結果、シミュレーションにおいて実機と同様に引っ掛かりが少ないスムーズな嵌合を再現でき、実機挙動に近い力制御動作のシミュレーションを行うことが可能である。但し、ステップS80は省略可能である。ステップS80の処理が終了すると、図5の単純化処理の全体が終了する。
【0044】
以上のように、第1実施形態では、力制御動作に使用する2つのワークについて、表面差異SDと重畳量SPを最小化する単純化形状を求めるので、力制御動作のシミュレーションに適した単純化形状を得ることができる。
【0045】
B.第2実施形態:
図8は、第2実施形態におけるワーク形状の単純化処理の手順を示すフローチャートである。この処理手順は、図5に示した第1実施形態の処理手順に、ステップS90,S100,S110を追加したものであり、他のステップは図5とほぼ同じである。また、ロボットシステムの構成も第1実施形態と同じである。
【0046】
ステップS90では、シミュレーター380が、ステップS80までの処理で得られたワーク610,620の単純化形状Ss1,Ss2を使用してロボットの力制御動作のシミュレーションを実行する。ステップS100では、単純化処理部373が、シミュレーションでの動作と、実機動作データLDでの動作との差異を示す動作距離を算出する。実機動作データLDは、シミュレーションの対象となった力制御動作を実機のロボット100が実行したときに得られていた時系列データである。実機動作データLDの動作項目は、例えば、TCP(Tool Center Point)等のロボット100の特定位置の軌跡と、力センサー410で測定された力及びトルクの軌跡とを含んでいる。シミュレーションでの動作も同様である。
【0047】
動作距離としては、実機動作データLDにおける力及びトルクの軌跡と、シミュレーションにおける力及びトルクの軌跡との距離を用いることが好ましい。動作距離は、時系列データ同士の距離計算に用いられる様々な方法で算出することができる。具体的には、ユークリッド距離やDTW(Dynamic Time Warping)距離を動作距離として使用してもよい。
【0048】
ステップS110では、単純化処理部373が、予め設定された第2終了条件が成立するか否かを判定する。第2終了条件としては、例えば、動作距離が予め定められた閾値以下か否かという条件を使用することができる。この条件の他に、例えば、ステップS20~S100のルーチンを所定回数実行したこと、などの他の条件を用いてもよい。
【0049】
第2終了条件が成立していない場合には、ステップS110からステップS20に戻り、ステップS20~S100の処理が再度実行される。この際、ステップS20では、単純化処理部373が、動作距離を含む評価関数を用いて、単純化処理条件SCを最適化する第2最適化処理を実行する。なお、図8の手順においてステップS20が最初に実行される際には、単純化処理条件SCを、ユーザーの入力によらずに自動的に決定するようにしてもよく、或いは、ランダムに決定してもよい。
【0050】
このように、第2最適化処理を実行して単純化処理条件SCを修正すれば、次第にシミュレーションでの動作が実機での動作に近づいていくので、より望ましい単純化形状を得ることができる。一方、第2終了条件が成立した場合には、図8の単純化処理の全体が終了する。
【0051】
なお、図8の単純化処理の結果として、ワーク610,620の好ましい単純化形状が得られると、これらの単純化形状を用いて様々なシミュレーションを行うことができる。例えば、力制御動作の更なる高速化や、対象ワークを用いた製造・組立工程全体の最適化等の様々なパターンで多数回の検証が必要な場合に、単純化形状を用いたシミュレーションを活用できる。また、単純化形状を用いたシミュレーションを行う場合には、実機のロボットを用いて繰り返し試行する場合と比較して、検証時間の短縮や、実ワーク・実ロボットの摩耗・消耗の抑制が期待できる。
【0052】
以上の第2実施形態も、上述した第1実施形態とほぼ同様の効果を有する。また、第2実施形態では、シミュレーションでの動作が実機動作データでの動作に近くなるような、より望ましい単純化形状を得ることができる。
【0053】
・他の実施形態:
本開示は、上述した実施形態に限られるものではなく、その趣旨を逸脱しない範囲において種々の形態で実現することができる。例えば、本開示は、以下の形態(aspect)によっても実現可能である。以下に記載した各形態中の技術的特徴に対応する上記実施形態中の技術的特徴は、本開示の課題の一部又は全部を解決するために、あるいは、本開示の効果の一部又は全部を達成するために、適宜、差し替えや、組み合わせを行うことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除することが可能である。
【0054】
(1)本開示の第1の形態によれば、ロボットの力制御動作の対象となるワークの元形状を単純化する方法が提供される。この方法は、(a)第1ワークの第1元形状を表す第1CADデータと、前記力制御動作において前記第1ワークに接触する第2ワークの第2元形状を表す第2CADデータを取得する工程と、(b)単純化処理条件を設定する工程と、(c)前記単純化処理条件の下で、前記第1元形状を単純化した第1単純化形状と、前記第2元形状を単純化した第2単純化形状を求める単純化処理を実行する工程と、(d)前記第1元形状と前記第1単純化形状の表面形状の差異を表す第1表面差異と、前記第2元形状と前記第2単純化形状の表面形状の差異を表す第2表面差異と、を算出する工程と、(e)前記力制御動作で前記第1ワークと前記第2ワークが接触する相対位置関係において、前記第1単純化形状と前記第2単純化形状の重畳の程度を表す重畳量を算出する工程と、を含み、前記工程(c)において前記第1表面差異と前記第2表面差異と前記重畳量を含む第1評価関数を用いて前記第1単純化形状と前記第2単純化形状を最適化する第1最適化処理を実行しつつ、予め設定された第1終了条件が成立するまで前記工程(c)~(e)を繰り返す処理を行う。
この方法によれば、力制御動作に使用する2つのワークについて、表面差異と重畳量を最小化する単純化形状を求めるので、力制御動作のシミュレーションに適した単純化形状を得ることができる。
【0055】
(2)上記方法において、前記単純化処理は、前記第1単純化形状と前記第2単純化形状のそれぞれを、直方体であるプリミティブ立体の組み合わせとして構成する処理であるものとしてもよい。
この方法によれば、直方体であるプリミティブ立体を用いてワーク形状を単純化できる。
【0056】
(3)上記方法において、前記単純化処理は、前記第1単純化形状と前記第2単純化形状のそれぞれを、プリミティブ立体の組み合わせとして構成する処理であり、前記単純化処理条件は、前記単純化処理で使用可能な前記プリミティブ立体の最大数を含むものとしてもよい。
この方法によれば、プリミティブ立体を用いてワーク形状を単純化できる。
【0057】
(4)上記方法は、更に、前記第1単純化形状と前記第2単純化形状のそれぞれについて、前記プリミティブ立体の一部にカット面を加える工程、を含むものとしてもよい。
この方法によれば、カット面が加えられた単純化形状を用いるので、実機挙動に近い力制御動作のシミュレーションを行うことができる。
【0058】
(5)上記方法において、前記工程(a)は、前記第1ワークと前記第2ワークを用いて前記ロボットに前記力制御動作を行わせることによって得られていた実機動作データを取得する工程を含むものとしてもよい。前記方法は、更に、(f)前記第1単純化形状と前記第2単純化形状を用いて前記力制御動作のシミュレーションを実行し、前記シミュレーションでの動作と前記実機動作データでの動作との差異を示す動作距離を求める工程、を含み、前記工程(b)において前記動作距離を第2評価関数として前記単純化処理条件を最適化する第2最適化処理を実行しつつ、予め設定された第2終了条件が成立するまで前記工程(c)~(e)を繰り返す処理及び前記工程(f)を繰り返して実行するものとしてもよい。
この方法によれば、シミュレーションでの動作が実機動作データでの動作に近くなるような、より望ましい単純化形状を得ることができる。
【0059】
(6)本開示の第2の形態によれば、ロボットの力制御動作の対象となるワークの元形状を単純化する単純化処理装置が提供される。この単純化処理装置は、第1ワークの第1元形状を表す第1CADデータと、前記力制御動作において前記第1ワークに接触する第2ワークの第2元形状を表す第2CADデータと、を取得するデータ取得部と、単純化処理条件を設定する処理条件設定部と、前記単純化処理条件の下で、前記第1元形状を単純化した第1単純化形状と、前記第2元形状を単純化した第2単純化形状を求める単純化処理を実行する単純化処理部と、前記第1元形状と前記第1単純化形状の表面形状の差異を表す第1表面差異と、前記第2元形状と前記第2単純化形状の表面形状の差異を表す第2表面差異と、を算出する表面差異算出部と、前記力制御動作で前記第1ワークと前記第2ワークが接触する相対位置関係において、前記第1単純化形状と前記第2単純化形状の重畳の程度を表す重畳量を算出する重畳量算出部と、を備える。前記単純化処理部は、前記第1表面差異と前記第2表面差異と前記重畳量を含む第1評価関数を用いて前記第1単純化形状と前記第2単純化形状を最適化する第1最適化処理を実行する。
【0060】
(7)本開示の第3の形態によれば、ロボットの力制御動作の対象となるワークの元形状を単純化する処理をプロセッサーに実行させるコンピュータープログラムが提供される。このコンピュータープログラムは、(a)第1ワークの第1元形状を表す第1CADデータと、前記力制御動作において前記第1ワークに接触する第2ワークの第2元形状を表す第2CADデータを取得する処理と、(b)単純化処理条件を取得する処理と、(c)前記単純化処理条件の下で、前記第1元形状を単純化した第1単純化形状と、前記第2元形状を単純化した第2単純化形状を求める単純化処理と、(d)前記第1元形状と前記第1単純化形状の表面形状の差異を表す第1表面差異と、前記第2元形状と前記第2単純化形状の表面形状の差異を表す第2表面差異と、を算出する処理と、(e)前記力制御動作で前記第1ワークと前記第2ワークが接触する相対位置関係において、前記第1単純化形状と前記第2単純化形状の重畳の程度を表す重畳量を算出する処理と、前記処理(c)において前記第1表面差異と前記第2表面差異と前記重畳量を含む第1評価関数を用いて前記第1単純化形状と前記第2単純化形状を最適化する第1最適化処理を実行しつつ、予め設定された第1終了条件が成立するまで前記処理(c)~(e)を繰り返す処理と、を前記プロセッサーに実行させる。
【0061】
本開示は、上記以外の種々の形態で実現することも可能である。例えば、ロボットとロボット制御装置とを備えたロボットシステム、ロボット制御装置の機能を実現するためのコンピュータープログラム、そのコンピュータープログラムを記録した一時的でない記録媒体(non-transitory storage medium)等の形態で実現することができる。
【符号の説明】
【0062】
100…ロボット、110…基台、120…ロボットアーム、150…エンドエフェクター、200…制御装置、300…情報処理装置、310…プロセッサー、320…メモリー、330…インターフェイス回路、340…入力デバイス、350…表示デバイス、370…ワーク形状調整部、371…データ取得部、372…処理条件設定部、373…単純化処理部、374…表面差異算出部、375…重畳量算出部、380…シミュレーター、400…センサー類、410…力センサー、430…電流センサー、440…関節エンコーダー、500…架台、610…第1ワーク、611…本体部、612…嵌合部(被挿入部)、613…挿入孔、620…第2ワーク、621…基台、622…嵌合部(挿入部)
図1
図2
図3
図4
図5
図6
図7
図8