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

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

▶ ファナック株式会社の特許一覧

特許7667181パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム
<>
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図1
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図2
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図3
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図4
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図5
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図6
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図7
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図8
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図9
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図10
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図11
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図12
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図13
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図14
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図15
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図16
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図17
  • 特許-パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-04-14
(45)【発行日】2025-04-22
(54)【発明の名称】パラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラム
(51)【国際特許分類】
   B25J 19/04 20060101AFI20250415BHJP
   G06T 7/00 20170101ALI20250415BHJP
   B25J 13/08 20060101ALI20250415BHJP
【FI】
B25J19/04
G06T7/00 300F
B25J13/08 A
【請求項の数】 8
(21)【出願番号】P 2022563719
(86)(22)【出願日】2021-11-11
(86)【国際出願番号】 JP2021041616
(87)【国際公開番号】W WO2022107684
(87)【国際公開日】2022-05-27
【審査請求日】2023-06-15
(31)【優先権主張番号】P 2020191918
(32)【優先日】2020-11-18
(33)【優先権主張国・地域又は機関】JP
【前置審査】
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100112357
【弁理士】
【氏名又は名称】廣瀬 繁樹
(72)【発明者】
【氏名】和田 潤
【審査官】松浦 陽
(56)【参考文献】
【文献】特開2010-210586(JP,A)
【文献】特開2020-082274(JP,A)
【文献】特開平02-210584(JP,A)
【文献】国際公開第2020/255229(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
視覚センサが撮像したワークのワーク特徴が表示された画像データにおいて前記ワークをモデル化したワークモデルを前記ワーク特徴と照合するためのパラメータを用いて、前記画像データにおける前記ワークの位置を検出位置として求める位置検出部と、
前記ワーク特徴とともに前記ワークモデルを表示する前記画像データを生成する画像生成部と、
前記画像データにおいて前記ワークモデルの位置を変位させるための第1の入力データを受け付ける入力受付部と、
前記画像生成部が前記第1の入力データに応じて前記画像データに表示された前記ワークモデルの位置を変位させて該ワークモデルを前記ワーク特徴に一致するように配置したときの、該画像データにおける該ワークモデルの位置をマッチング位置として取得するマッチング位置取得部と、
前記検出位置と前記マッチング位置との差を表すデータと、予め定めた閾値と、の比較に基づいて調整の要否を判定し、必要と判定された場合に前記パラメータを調整するパラメータ調整部と、を備える、装置。
【請求項2】
前記画像生成部は、
前記位置検出部が取得した前記検出位置に前記ワークモデルを表示するか、
前記画像データにおいてランダムに決定した位置に前記ワークモデルを表示するか、又は、
前記画像データにおいて予め定めた規則に従って決定した位置に前記ワークモデルを表示する、請求項1に記載の装置。
【請求項3】
前記入力受付部は、さらに、前記ワークモデルを前記画像データから削除するか、又は、第2の前記ワークモデルを前記画像データに追加するための第2の入力データを受け付け、
前記画像生成部は、前記第2の入力データに従って、表示した前記ワークモデルを前記画像データから削除し、又は、前記第2のワークモデルを前記画像データに追加で表示する、請求項1又は2に記載の装置。
【請求項4】
前記画像生成部は、予め定めた条件に従って、表示した前記ワークモデルを前記画像データから削除するか、又は、第2の前記ワークモデルを前記画像データに追加で表示する、請求項1又は2に記載の装置。
【請求項5】
前記ワーク特徴は、前記視覚センサをモデル化した視覚センサモデルによって前記ワークモデルを仮想的に撮像することによって取得される、請求項1~4のいずれか1項に記載の装置。
【請求項6】
ワークを撮像する視覚センサと、
前記ワークに対する作業を実行するロボットと、
前記視覚センサが撮像した画像データに基づいて、前記ロボットを動作させるための動作指令を生成する指令生成部と、
請求項1~5のいずれか1項に記載の装置と、を備え、
前記位置検出部は、前記パラメータ調整部によって調整された前記パラメータを用いて、前記視覚センサが撮像した前記画像データにおける前記ワークの位置を検出位置として取得し、
前記指令生成部は、
前記位置検出部が前記調整されたパラメータを用いて取得した前記検出位置に基づいて、前記ロボットを制御するための制御座標系における前記ワークの位置データを取得し、
前記位置データに基づいて、前記動作指令を生成する、ロボットシステム。
【請求項7】
プロセッサが、
視覚センサが撮像したワークのワーク特徴が表示された画像データにおいて前記ワークをモデル化したワークモデルを前記ワーク特徴と照合するためのパラメータを用いて、前記画像データにおける前記ワークの位置を検出位置として求め、
前記ワーク特徴とともに前記ワークモデルを表示する前記画像データを生成し、
前記画像データにおいて前記ワークモデルの位置を変位させるための第1の入力データを受け付け、
前記第1の入力データに応じて前記画像データに表示された前記ワークモデルの位置を変位させて該ワークモデルを前記ワーク特徴に一致するように配置したときの、該画像データにおける該ワークモデルの位置をマッチング位置として取得し、
前記検出位置と前記マッチング位置との差を表すデータと、予め定めた閾値と、の比較に基づいて調整の要否を判定し、必要と判定された場合に前記パラメータを調整する、方法。
【請求項8】
請求項7に記載の方法を前記プロセッサに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像データにおいてワークのワーク特徴とワークモデルとを照合するためのパラメータを調整する装置、ロボットシステム、方法、及びコンピュータプログラムに関する。
【背景技術】
【0002】
視覚センサが撮像した画像データに写るワークの位置を検出するためのパラメータを取得する技術が知られている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【文献】特開平2-210584号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
視覚センサが撮像した画像データに写るワークのワーク特徴と、ワークをモデル化したワークモデルとを、パラメータを用いて互いに照合することで、画像データに写るワークの位置を求める場合がある。従来、このような照合用のパラメータを調整するためには、専門知識を有するオペレータが必要となっていた。
【課題を解決するための手段】
【0005】
本開示の一態様において、装置は、視覚センサが撮像したワークのワーク特徴が表示された画像データにおいてワークをモデル化したワークモデルをワーク特徴と照合するためのパラメータを用いて、画像データにおけるワークの位置を検出位置として求める位置検出部と、画像データにおいてワークモデルをワーク特徴に一致するように配置したときの、該画像データにおける該ワークモデルの位置をマッチング位置として取得するマッチング位置取得部と、位置検出部が検出位置を、マッチング位置に対応する位置として求めるのを可能とするように、検出位置とマッチング位置との差を表すデータに基づいてパラメータを調整するパラメータ調整部とを備える。
【0006】
本開示の他の態様において、方法は、プロセッサが、視覚センサが撮像したワークのワーク特徴が表示された画像データにおいてワークをモデル化したワークモデルをワーク特徴と照合するためのパラメータを用いて、画像データにおけるワークの位置を検出位置として求め、画像データにおいてワークモデルをワーク特徴に一致するように配置したときの、該画像データにおける該ワークモデルの位置をマッチング位置として取得し、検出位置を、マッチング位置に対応する位置として求めるのを可能とするように、検出位置とマッチング位置との差を表すデータに基づいてパラメータを調整する。
【発明の効果】
【0007】
本開示によれば、画像データにおいてワークモデルをワーク特徴にマッチングさせたときに取得したマッチング位置を用いてパラメータを調整している。このため、パラメータの調整に関する専門知識がないオペレータでも、マッチング位置を取得することができ、これによりパラメータを調整することが可能となる。
【図面の簡単な説明】
【0008】
図1】一実施形態に係るロボットシステムの概略図である。
図2図1に示すロボットシステムのブロック図である。
図3】一実施形態に係るパラメータ調整方法を示すフローチャートである。
図4図3中のステップS3で生成される画像データの一例を示す。
図5図3中のステップS4のフローの一例を示す。
図6図5中のステップS11で生成される画像データの一例を示す。
図7】画像データ内でワークモデルがワーク特徴にマッチングしている状態を示す。
図8図3中のステップS5のフローの一例を示す。
図9図3中のステップS4のフローの他の例を示す。
図10図9中のステップS11で生成される画像データの一例を示す。
図11図9中のステップS11で生成される画像データの他の例を示す。
図12図9中のステップS32で生成される画像データの例を示す。
図13図9中のステップS11で生成される画像データにおいて、ワークモデルがランダムに表示された状態を示す。
図14図9中のステップS11で生成される画像データにおいて、ワークモデルが予め定めた規則に従って表示された状態を示す。
図15図3中のステップS4のフローのさらに他の例を示す。
図16図15中のステップS42で生成される画像データの例を示す。
図17】視覚センサによって画像データを取得するフローの一例を示す。
図18】他の実施形態に係るパラメータ調整方法を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。まず、図1及び図2を参照して、一実施形態に係るロボットシステム10について説明する。ロボットシステム10は、ロボット12、視覚センサ14、及び制御装置16を備える。
【0010】
本実施形態においては、ロボット12は、垂直多関節ロボットであって、ロボットベース18、旋回胴20、下腕部22、上腕部24、手首部26、及びエンドエフェクタ28を有する。ロボットベース18は、作業セルの床の上に固定されている。旋回胴20は、鉛直軸周りに旋回可能となるように、ロボットベース18に設けられている。
【0011】
下腕部22は、旋回胴20に水平軸周りに回動可能に設けられ、上腕部24は、下腕部22の先端部に回動可能に設けられている。手首部26は、上腕部24の先端部に回動可能に設けられた手首ベース26aと、手首軸A1周りに回動可能となるように該手首ベース26aに設けられた手首フランジ26bとを有する。
【0012】
エンドエフェクタ28は、手首フランジ26bに着脱可能に取り付けられ、ワークWに対して所定の作業を行う。本実施形態においては、エンドエフェクタ28は、ワークWを把持可能なロボットハンドであって、例えば、開閉可能な複数の指部、又は吸着部(負圧発生装置、吸盤、電磁石等)を有する。
【0013】
ロボット12の各構成要素(ロボットベース18、旋回胴20、下腕部22、上腕部24、手首部26)には、サーボモータ29(図2)が設けられている。これらサーボモータ29は、制御装置16からの指令に応じて、ロボット12の各可動要素(旋回胴20、下腕部22、上腕部24、手首部26、手首フランジ26b)を駆動軸周りに回動させる。その結果、ロボット12は、エンドエフェクタ28を移動させて任意の位置及び姿勢に配置することができる。
【0014】
視覚センサ14は、エンドエフェクタ28(又は手首フランジ26b)に対して固定されている。例えば、視覚センサ14は、撮像センサ(CMOS、CCD等)と、該撮像センサへ被写体像を導光する光学レンズ(コリメートレンズ、フォーカスレンズ等)とを有する3次元視覚センサであって、光軸A2に沿って被写体像を撮像するとともに、該被写体像までの距離dを測定するように構成される。
【0015】
図1に示すように、ロボット12には、ロボット座標系C1、及びツール座標系C2が設定されている。ロボット座標系C1は、ロボット12の各可動要素の動作を制御するための制御座標系である。本実施形態においては、ロボット座標系C1は、その原点がロボットベース18の中心に配置され、そのz軸が鉛直方向と平行となるように、ロボットベース18に対して固定されている。
【0016】
一方、ツール座標系C2は、ロボット座標系C1におけるエンドエフェクタ28の位置を制御するための制御座標系である。本実施形態においては、ツール座標系C2は、その原点(いわゆる、TCP)が、エンドエフェクタ28の作業位置(ワーク把持位置)に配置され、そのz軸が、手首軸A1と平行となる(具体的には、一致する)ように、エンドエフェクタ28に対して設定されている。
【0017】
エンドエフェクタ28を移動させるとき、制御装置16は、ロボット座標系C1においてツール座標系C2を設定し、設定したツール座標系C2によって表される位置にエンドエフェクタ28を配置するように、ロボット12の各サーボモータ29への指令を生成する。こうして、制御装置16は、ロボット座標系C1における任意の位置にエンドエフェクタ28を位置決めできる。なお、本稿において、「位置」とは、位置及び姿勢を意味する場合がある。
【0018】
一方、視覚センサ14には、センサ座標系C3が設定されている。センサ座標系C3は、視覚センサ14が撮像した画像データ(又は、撮像センサ)の各画素の座標を規定する。本実施形態においては、センサ座標系C3は、その原点が撮像センサの中心に配置され、そのz軸が光軸A2と平行となる(具体的には、一致する)ように、視覚センサ14に対して設定されている。
【0019】
センサ座標系C3とツール座標系C2との位置関係は、キャリブレーションにより既知となっており、故に、センサ座標系C3の座標とツール座標系C2の座標とは、既知の変換行列(例えば、同次変換行列)を介して、相互変換可能となっている。また、ツール座標系C2とロボット座標系C1との位置関係は既知であるので、センサ座標系C3の座標とロボット座標系C1の座標とは、ツール座標系C2を介して、相互変換可能である。
【0020】
制御装置16は、ロボット12の動作を制御する。具体的には、制御装置16は、プロセッサ30、メモリ32、及びI/Oインターフェース34を有するコンピュータである。プロセッサ30は、メモリ32及びI/Oインターフェース34とバス36を介して通信可能に接続され、これらコンポーネントと通信しつつ、後述する各種機能を実現するための演算処理を行う。
【0021】
メモリ32は、RAM又はROM等を有し、各種データを一時的又は恒久的に記憶する。I/Oインターフェース34は、例えば、イーサネット(登録商標)ポート、USBポート、光ファイバコネクタ、又はHDMI(登録商標)端子を有し、プロセッサ30からの指令の下、外部機器との間でデータを有線又は無線で通信する。ロボット12の各サーボモータ29及び視覚センサ14は、I/Oインターフェース34に通信可能に接続されている。
【0022】
また、制御装置16には、表示装置38及び入力装置40が設けられている。表示装置38及び入力装置40は、I/Oインターフェース34に通信可能に接続されている。表示装置38は、液晶ディスプレイ又は有機ELディスプレイ等を有し、プロセッサ30からの指令の下、各種データを視認可能に表示する。
【0023】
入力装置40は、キーボード、マウス、又はタッチパネル等を有し、オペレータからの入力データを受け付ける。なお、表示装置38及び入力装置40は、制御装置16の筐体に一体に組み込まれてもよいし、又は、制御装置16の筐体とは別体として該筐体に外付けされてもよい。
【0024】
本実施形態においては、プロセッサ30は、ロボット12を動作させて、容器B内にバラ積みにされたワークWをエンドエフェクタ28で把持して取り上げるワークハンドリング作業を実行する。このワークハンドリング作業を実行するために、プロセッサ30は、まず、視覚センサ14で容器B内のワークWを撮像する。
【0025】
このときに視覚センサ14が撮像する画像データID1は、撮像された各々のワークWの視覚的な特徴点(エッジ、輪郭、面、辺、角、穴、突部等)を写すワーク特徴WPと、視覚センサ14(具体的には、センサ座標系C3の原点)から該ワーク特徴WPの各画素が表すワークW上の点までの距離dの情報とを含む。
【0026】
次いで、プロセッサ30は、ワークWをモデル化したワークモデルWMを、視覚センサ14によって撮像されたワークWのワーク特徴WPと照合するためのパラメータPMを取得する。そして、プロセッサ30は、該パラメータPMを所定のアルゴリズムAL(ソフトウェア)に適用し、該アルゴリズムALに従ってワークモデルWMとワーク特徴WPとを照合することで、画像データID1に写るワークWのセンサ座標系C3における位置(具体的には、位置及び姿勢)のデータ(具体的には、座標)を取得する。そして、プロセッサ30は、取得したセンサ座標系C3の位置をロボット座標系C1に変換することで、撮像したワークWのロボット座標系C1における位置データを取得する。
【0027】
ここで、画像データID1に写るワークWの位置を高精度に取得するためには、パラメータPMを最適化する必要がある。本実施形態においては、プロセッサ30は、視覚センサ14が撮像したワークWのワーク特徴WPを用いて、パラメータPMを最適化するように調整する。
【0028】
以下、図3を参照して、パラメータPMを調整する方法について説明する。図3に示すフローは、例えば、制御装置16が起動されたときに開始される。なお、図3のフローの開始時点で、上述のアルゴリズムALと、予め準備されたパラメータPMとが、メモリ32に格納されている。
【0029】
ステップS1において、プロセッサ30は、パラメータ調整指令を受け付けたか否かを判定する。例えば、オペレータは、入力装置40を操作して、パラメータ調整指令を手動で入力する。プロセッサ30は、I/Oインターフェース34を通して入力装置40からパラメータ調整指令を受け付けるとYESと判定し、ステップS2へ進む。一方、プロセッサ30は、パラメータ調整指令を受け付けていない場合はNOと判定し、ステップS6へ進む。
【0030】
ステップS2において、プロセッサ30は、視覚センサ14によってワークWを撮像する。具体的には、プロセッサ30は、ロボット12を動作させて、視覚センサ14を、図1に示すように、該視覚センサ14の視野に少なくとも1つのワークWが収まる撮像位置に、位置決めする。
【0031】
次いで、プロセッサ30は、視覚センサ14へ撮像指令を送り、該撮像指令に応じて、視覚センサ14は、ワークWを撮像して画像データID1を取得する。上述したように、画像データID1は、撮像された各々のワークWのワーク特徴WPと上述の距離dの情報とを含む。プロセッサ30は、視覚センサ14から画像データID1を取得する。画像データID1の各画素は、センサ座標系C3の座標として表される。
【0032】
ステップS3において、プロセッサ30は、ワーク特徴WPが表示された画像データID2を生成する。具体的には、プロセッサ30は、視覚センサ14から取得した画像データID1を基に、オペレータがワーク特徴WPを視認可能なグラフィカル・ユーザ・インターフェース(GUI)として、画像データID2を生成する。この画像データID2の一例を図4に示す。
【0033】
図4に示す例では、画像データID2において、ワーク特徴WPが、3次元点群として表示されている。また、画像データID2には、センサ座標系C3が設定されており、該画像データID2の各画素は、視覚センサ14が撮像した画像データID1と同様に、センサ座標系C3の座標として表される。
【0034】
そして、ワーク特徴WPを構成する複数の点の各々は、上述の距離dの情報を有しているので、センサ座標系C3の3次元座標(x,y,z)として表すことができるようになっている。すなわち、本実施形態においては、画像データID2は、3次元の画像データである。なお、図4では、理解の容易のために、画像データID2に計3個のワーク特徴WPが表示されている例を示しているが、実際上は、より多くのワーク特徴WP(つまり、ワークW)が示され得ることを理解されたい。
【0035】
プロセッサ30は、画像データID2を、画像データID1よりも視認性に優れたGUIとして、該画像データID1とは異なる画像データとして生成してもよい。例えば、プロセッサ30は、画像データID1に写る、ワーク特徴WP以外の領域を無色にする一方で、ワーク特徴WPに色付け(黒色、青色、赤色等)することによって、オペレータがワーク特徴WPを容易に識別可能とするように、画像データID2を生成してもよい。
【0036】
プロセッサ30は、生成した画像データID2を表示装置38に表示させる。こうして、オペレータは、図4に示すような画像データID2を視認することができる。このように、本実施形態においては、プロセッサ30は、ワーク特徴WPが表示された画像データID2を生成する画像生成部52(図2)として機能する。
【0037】
なお、プロセッサ30は、オペレータによる入力装置40の操作に応じて画像データID2に写るワークWを見る方向を変えるように(例えば、3DCADデータのように)、表示装置38に表示する画像データID2を更新してもよい。この場合、オペレータは、入力装置40操作することで、画像データID2に写るワークWを所望の方向から視認することが可能となる。
【0038】
再度、図3を参照し、ステップS4において、プロセッサ30は、マッチング位置を取得するプロセスを実行する。このステップS4について、図5を参照して説明する。ステップS11において、プロセッサ30は、上述のステップS3で生成した画像データID2に、ワークモデルWMをさらに表示する。本実施形態においては、ワークモデルWMは、3DCADデータである。
【0039】
図6に、このステップS11によって生成される画像データID2の一例を示す。ステップS11において、プロセッサ30は、センサ座標系C3によって規定される仮想空間にワークモデルWMを配置し、ワークWのワーク特徴WPとともにワークモデルWMが配置された仮想空間の画像データID2を生成する。また、プロセッサ30は、センサ座標系C3において、ワークモデルWMとともに、ワーク座標系C4を設定する。このワーク座標系C4は、ワークモデルWMの位置(具体的には、位置及び姿勢)を規定する座標系である。
【0040】
本実施形態においては、プロセッサ30は、このステップS11において、該ステップS11の開始時点でメモリ32に格納されているパラメータPMを用いて、画像データID2におけるワークWの位置を検出位置DPとして求める。検出位置DPを求めるとき、プロセッサ30は、パラメータPMをアルゴリズムALに適用し、該アルゴリズムALに従って、ワークモデルWMを、画像データID2に写るワーク特徴WPと照合する。
【0041】
より具体的には、プロセッサ30は、パラメータPMが適用されたアルゴリズムALに従って、センサ座標系C3によって規定される仮想空間においてワークモデルWMの位置を所定の変位量Eずつ徐々に変化させて、ワークモデルWMの特徴点(エッジ、輪郭、面、辺、角、穴、突部等)と、該特徴点に対応するワーク特徴WPの特徴点とが互いに一致する、ワークモデルWMの位置を検索する。
【0042】
そして、プロセッサ30は、ワークモデルWMの特徴点が、対応するワーク特徴WPの特徴点に一致したときに、該ワークモデルWMに設定されているワーク座標系C4の、センサ座標系C3における座標(x,y,z,W,P,R)を、検出位置DPとして検出する。ここで、座標(x,y,z)は、センサ座標系C3におけるワーク座標系C4の原点位置を示し、座標(W,P,R)は、センサ座標系C3に対するワーク座標系C4の姿勢(いわゆる、ヨー、ピッチ、ロール)を示す。
【0043】
上述のパラメータPMは、ワークモデルWMをワーク特徴WPと照合するためのものであって、例えば、上述の変位量E、画像データID2において互いに照合する特徴点を検索する範囲を画定するウィンドウのサイズSZ、照合時の画像粗さ(又は、分解能)σ、及び、ワークモデルWMとワーク特徴WPのどの特徴点を互いに照合するかを特定するデータ(例えば、ワークモデルWM及びワーク特徴WPの「輪郭」を照合するように特定するデータ)を含む。
【0044】
こうして、プロセッサ30は、パラメータPMを用いてワークモデルWMとワーク特徴WPとを互いに照合することで、検出位置DP(x,y,z,W,P,R)を取得する。したがって、本実施形態においては、プロセッサ30は、パラメータPMを用いて検出位置DPを求める位置検出部54(図2)として機能する。
【0045】
次いで、プロセッサ30は、画像生成部52として機能して、画像データID2において、取得した検出位置DPにワークモデルWMを表示する。具体的には、プロセッサ30は、検出位置DPとして検出したセンサ座標系C3の座標(x,y,z,W,P,R)に配置されたワーク座標系C4によって表される位置に、ワークモデルWMを表示する。
【0046】
こうして、図6に示すように、画像データID2において、3個のワーク特徴WPに対応する位置に、3個のワークモデルWMがそれぞれ表示されることになる。ここで、パラメータPMが最適化されていない場合、図6に示すように、取得した検出位置DP(つまり、図6に表示されたワークモデルWMの位置)が、ワーク特徴WPからずれてしまうことが起こり得る。
【0047】
再度、図5を参照して、ステップS12において、プロセッサ30は、画像データID2においてワークモデルWMの位置を変位させるための入力データIP1(第1の入力データ)を受け付けたか否かを判定する。具体的には、オペレータは、表示装置38に表示された図6に示す画像データID2を視認しつつ、該画像データID2に表示されたワークモデルWMを、対応するワーク特徴WPに一致する位置へ画像上で移動させるべく、入力装置40を操作することで入力データIP1を入力する。
【0048】
プロセッサ30は、I/Oインターフェース34を通して入力装置40から入力データIP1を受け付けるとYESと判定し、ステップS13へ進む。一方、入力装置40から入力データIP1を受け付けていない場合はNOと判定し、ステップS14へ進む。このように、本実施形態においては、プロセッサ30は、画像データID2においてワークモデルWMの位置を変位させるための入力データIP1を受け付ける入力受付部56(図2)として機能する。
【0049】
ステップS13において、プロセッサ30は、入力データIP1に応じて、画像データID2に表示されたワークモデルWMの位置を変位させる。具体的には、プロセッサ30は、画像生成部52として機能して、センサ座標系C3によって規定される仮想空間内で入力データIP1に応じてワークモデルWMの位置を変位させるように、画像データID2を更新する。こうして、オペレータは、表示装置38に表示された画像データID2を視認しつつ入力装置40を操作することで、画像データID2においてワークモデルWMを対応するワーク特徴WPに近づけるように、変位させることができる。
【0050】
ステップS14において、プロセッサ30は、マッチング位置MPを取得するための入力データIP2を受け付けたか否かを判定する。具体的には、オペレータは、ステップS13でワークモデルWMを変位させた結果、画像データID2においてワークモデルWMの位置がワーク特徴WPの位置に一致したときに、入力装置40を操作して、マッチング位置MPを取得するための入力データIP2を入力する。
【0051】
図7に、画像データID2においてワークモデルWMの位置がワーク特徴WPに一致した状態を示す。プロセッサ30は、I/Oインターフェース34を通して入力装置40から入力データIP2を受け付けるとYESと判定し、ステップS15へ進む一方、入力装置40から入力データIP2を受け付けていない場合はNOと判定し、ステップS12へ戻る。こうして、プロセッサ30は、ステップS14でYESと判定するまで、ステップS12~S14をループする。
【0052】
ステップS15において、プロセッサ30は、入力データIP2を受け付けたときの画像データID2におけるワークモデルWMの位置をマッチング位置MPとして取得する。上述したように、プロセッサ30が入力データIP2を受け付けたとき、図7に示すように、画像データID2において、ワークモデルWMが、それぞれ、対応するワーク特徴WPに一致している。
【0053】
プロセッサ30は、マッチング位置MPとして、図7に示すワークモデルWMの各々に設定されているワーク座標系C4のセンサ座標系C3における座標(x,y,z,W,P,R)を取得し、メモリ32に記憶する。このように、本実施形態においては、プロセッサ30は、マッチング位置MPを取得するマッチング位置取得部58(図2)として機能する。
【0054】
再度、図3を参照して、ステップS5において、プロセッサ30は、パラメータPMを調整するプロセスを実行する。このステップS5について、図8を参照して説明する。ステップS21において、プロセッサ30は、パラメータPMの更新回数を特定する番号「n」を「1」にセットする。
【0055】
ステップS22において、プロセッサ30は、位置検出部54として機能し、検出位置DPを取得する。具体的には、プロセッサ30は、このステップS22の開始時点でメモリ32に格納されているパラメータPMを用いて検出位置DPを求める。仮に、このステップS22の開始時点でn=1にセットされている場合(すなわち、第1回目のステップS22を実行する場合)、プロセッサ30は、上述のステップS11と同様に、パラメータPMを用いて図6に示す検出位置DPを求める。
【0056】
ステップS23において、プロセッサ30は、直近のステップS22で求めた検出位置DPと、上述のステップS4で取得したマッチング位置MPとの差を表すデータΔを取得する。このデータΔは、例えば、センサ座標系C3における検出位置DPとマッチング位置MPとの差を表す目的関数の値である。この目的関数は、例えば、互いに対応する一対の検出位置DP及びマッチング位置MPの差の和、二乗和、平均値、又は二乗平均値を示す関数であり得る。プロセッサ30は、取得したデータΔをメモリ32に記憶する。
【0057】
仮に、このステップS23の開始時点でn=1にセットされている場合(すなわち、第1回目のステップS23を実行する場合)、プロセッサ30は、検出位置DPとマッチング位置MPとの差を表すデータΔを取得する。このデータΔは、図6に示すワークモデルWMのセンサ座標系C3の位置(すなわち、検出位置DP)と、図7に示すワークモデルWMのセンサ座標系C3の位置(すなわち、マッチング位置MP)との差を表す。
【0058】
ステップS24において、プロセッサ30は、直近のステップS23で取得したデータΔの値が、予め定めた閾値Δth以下(Δ≦Δth)であるか否かを判定する。この閾値Δthは、オペレータによって定められ、メモリ32に予め格納される。プロセッサ30は、Δ≦Δthである場合はYESと判定し、ステップS5を終了し、図3中のステップS6へ進む。
【0059】
このステップS24でYESと判定したとき、直近のステップS22で求めた検出位置DPがマッチング位置MPに実質一致しており、故に、パラメータPMが最適化されていると見做すことができる。一方、プロセッサ30は、Δ>Δthである場合はNOと判定し、ステップS25へ進む。
【0060】
ステップS25において、プロセッサ30は、直近のステップS23で取得したデータΔに基づいて、画像データID2において検出位置DPとマッチング位置MPとの差を小さくすることができるパラメータPMの変化量αを決定する。具体的には、プロセッサ30は、直近のステップS23で取得したデータΔから、図8中のステップS22~S28のループを繰り返し実行したときにステップS23で取得されるデータΔの値をゼロへ向かって収束させることができる、パラメータPM(例えば、変位量E、サイズSZ、又は画像粗さσ)の変化量αを決定する。プロセッサ30は、この変化量αを、データΔと所定のアルゴリズムとを用いることで求めることができる。
【0061】
ステップS26において、プロセッサ30は、パラメータPMを更新する。具体的には、プロセッサ30は、直近のステップS25で決定した変化量αだけパラメータPM(例えば、変位量E、サイズSZ、又は画像粗さσ)を変化させることによって、該パラメータPMを更新し、新たなパラメータPMn+1とする。プロセッサ30は、更新後のパラメータPMn+1をメモリ32に記憶する。仮に、ステップS26の開始時点でn=1にセットされていた場合、プロセッサ30は、予め準備されたパラメータPMを変化量αだけ変化させて、パラメータPMへ更新する。
【0062】
ステップS27において、プロセッサ30は、パラメータPMの更新回数を特定する番号「n」を「1」だけインクリメントする(n=n+1)。ステップS28において、プロセッサ30は、パラメータPMの更新回数を特定する番号「n」が、最大値nMAXを超えた(n>nMAX)か、又は、直近のステップS25で決定した変化量αが予め定めた閾値αth以下となった(α≦αth)か否かを判定する。この最大値nMAX及び閾値αthは、オペレータによって予め定められ、メモリ32に格納される。
【0063】
ここで、プロセッサ30は、図8に示すように、ステップS24又はS28でYESと判定するまで、ステップS22~S28のループを繰り返し実行する。上述のステップS25にて、プロセッサ30は、検出位置DPとマッチング位置MPとの差(すなわち、データΔの値)を小さくすることができるように変化量αを決定していることから、ステップS22~S28のループを繰り返す毎に、ステップS23で取得するデータΔの値、及び、ステップS25で決定する変化量αが、小さくなっていく。
【0064】
したがって、変化量αが閾値αth以下となった場合は、パラメータPMが最適化されたものと見做すことができる。その一方で、ステップS22~S28のループを多数回に亘って繰り返し実行したとしても、変化量αがある値(>αth)に収束して、閾値αth以下とならない場合がある。このような場合も、パラメータPMが十分に最適化されたと見做すことができる。
【0065】
よって、プロセッサ30は、このステップS28において、n>nMAX、又は、α≦αthであるか否かを判定し、n>nMAX、又は、α≦αthを満たす場合はYESと判定してステップS5を終了する。一方、プロセッサ30は、n≦nMAX、且つ、α>αthである場合はNOと判定し、ステップS22へ戻り、更新後のパラメータPMn+1を用いてステップS22~S28のループを実行する。
【0066】
このように、プロセッサ30は、ステップS24又はS28でYESと判定するまで、ステップS22~S28の一連の動作を繰り返し実行することによって、データΔに基づいてパラメータPMを更新して調整している。したがって、本実施形態においては、プロセッサ30は、データΔに基づいてパラメータPMを調整するパラメータ調整部60(図2)として機能する。
【0067】
プロセッサ30は、位置検出部54として機能して画像データID2から検出位置DPを求める場合に上述のように最適化されたパラメータPMを用いることで、画像データID2における検出位置DPを、マッチング位置MPに対応する(例えば、実質一致する)位置として求めることが可能となる。
【0068】
再度、図3を参照して、ステップS6において、プロセッサ30は、動作終了指令を受け付けたか否かを判定する。例えば、オペレータは、入力装置40を操作して、動作終了指令を手動で入力する。プロセッサ30は、I/Oインターフェース34を通して入力装置40から動作終了指令を受け付けるとYESと判定し、制御装置16の動作を終了する。一方、プロセッサ30は、動作終了指令を受け付けていない場合はNOと判定し、ステップS1へ戻る。
【0069】
例えば、オペレータは、ステップS5の終了後、動作終了指令を入力せずに、図1に示す容器B内のワークWの配置を変化させる。次いで、オペレータは、入力装置40を操作して、上述のパラメータ調整指令を入力する。そうすると、プロセッサ30は、ステップS1でYESと判定し、容器B内の配置が変化した後のワークWに対してステップS2~S5を実行し、パラメータPMを調整する。このように、容器B内のワークWの配置を変化させる毎にステップS2~S5を実行することによって、様々な位置に配置されたワークWについてパラメータPMを最適化することができる。
【0070】
以上のように、本実施形態においては、プロセッサ30は、画像生成部52、位置検出部54、入力受付部56、マッチング位置取得部58、及びパラメータ調整部60として機能して、パラメータPMを調整している。従って、画像生成部52、位置検出部54、入力受付部56、マッチング位置取得部58、及びパラメータ調整部60は、パラメータPMを調整するための装置50(図2)を構成する。
【0071】
この装置50によれば、画像データID2においてワークモデルWMをワーク特徴WPにマッチングさせたときに取得したマッチング位置MPを用いてパラメータPMを調整している。このため、パラメータPMの調整に関する専門知識がないオペレータでも、マッチング位置MPを取得することができ、これによりパラメータPMを調整することが可能となる。
【0072】
また、本実施形態においては、プロセッサ30は、図8中のステップS22~S28の一連の動作を繰り返し実行することによってパラメータPMを調整している。この構成によれば、パラメータPMを自動で調整することができるとともに、該パラメータPMを迅速に最適化できる。
【0073】
また、本実施形態においては、プロセッサ30は、画像生成部52として機能して、画像データID2にワークモデルWMをさらに表示し(ステップS11)、入力データIP1に応じて、画像データID2に表示されたワークモデルWMの位置を変位させている(ステップS13)。そして、プロセッサ30は、画像データID2においてワークモデルWMがワーク特徴WPに一致するように配置されたときに、マッチング位置取得部58として機能し、マッチング位置MPを取得している(ステップS15)。
【0074】
この構成によれば、オペレータは、表示装置38に表示された画像データID2を視認しつつ入力装置40を操作することで、画像データID2においてワークモデルWMをワーク特徴WPに容易に一致させることができ、以って、マッチング位置MPを取得できる。したがって、パラメータPMの調整に関する専門知識がないオペレータでも、画像上でワークモデルWMをワーク特徴WPに位置合わせするだけで、マッチング位置MPを容易に取得可能となる。
【0075】
上述のようにパラメータPMを調整した後、プロセッサ30は、調整後のパラメータPMを用いて、ワークWに対する作業(具体的には、ワークハンドリング作業)をロボット12に実行させる。以下、ロボット12が実行するワークWに対する作業について説明する。プロセッサ30は、オペレータ、上位コントローラ、又はコンピュータプログラムから作業開始指令を受け付けると、ロボット12を動作させて、視覚センサ14を、容器B内のワークWを撮像可能な撮像位置に位置決めし、視覚センサ14を動作させてワークWを撮像する。
【0076】
このときに視覚センサ14が撮像する画像データID3には、少なくとも1つのワークWのワーク特徴WPが示されている。プロセッサ30は、I/Oインターフェース34を通して視覚センサ14から画像データID3を取得し、該画像データID3に基づいて、ロボット12を動作するための動作指令CMを生成する。
【0077】
より具体的には、プロセッサ30は、位置検出部54として機能して、調整後のパラメータPMをアルゴリズムALに適用し、該アルゴリズムALに従って、ワークモデルWMを、画像データID3に写るワーク特徴WPと照合する。その結果、プロセッサ30は、画像データID3における検出位置DPID3を、センサ座標系C3の座標として取得する。
【0078】
次いで、プロセッサ30は、取得した検出位置DPID3をロボット座標系C1(又は、ツール座標系C2)に変換することで、撮像されたワークWのロボット座標系C1(又は、ツール座標系C2)における位置データPDを取得する。次いで、プロセッサ30は、取得した位置データPDに基づいて、ロボット12を制御するための動作指令CMを生成し、該動作指令CMに従って各サーボモータ29を制御することで、位置データPDを取得したワークWをエンドエフェクタ28で把持して取り上げるワークハンドリング作業をロボット12に実行させる。
【0079】
このように、本実施形態においては、プロセッサ30は、動作指令CMを生成する指令生成部62として機能する。調整後のパラメータPMを用いることによって、正確な検出位置DPID3(すなわち、位置データPD)を検出できることから、プロセッサ30は、ロボット12にワークハンドリング作業を高精度に実行させることができる。
【0080】
次に、図9を参照して、上述のステップS4(すなわち、マッチング位置を取得するプロセス)の他の例について説明する。なお、図9に示すフローにおいて、図5に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。図9に示すステップS4においては、プロセッサ30は、ステップS11の後、ステップS31及びS32を実行する。
【0081】
具体的には、ステップS31において、プロセッサ30は、ワークモデルWMを画像データID2から削除するための入力データIP3(第2の入力データ)、又は、さらなるワークモデルWMを画像データID2に追加するための入力データIP4(第2の入力データ)を受け付けたか否かを判定する。
【0082】
ここで、上述のステップS11において、プロセッサ30が、ワークモデルWMを不適切な位置に誤って表示してしまう場合がある。図10に、ワークモデルWMが不適切な位置に表示されている画像データID2の例を示す。図10に示す画像データID2においては、ワークWとは別の部材の特徴Fが写り込んでいる。
【0083】
プロセッサ30は、パラメータPMを用いて検出位置DPを求めたときに、特徴FをワークWのワーク特徴WPと誤認し、特徴Fに対応する検出位置DPを求めてしまう場合がある。このような場合、オペレータは、画像データID2から、特徴Fに対応する位置に表示されたワークモデルWMを削除する必要がある。
【0084】
一方、上述のステップS11において、プロセッサ30が、画像データID2に写るワーク特徴WPを認識できずに、ワークモデルWMを表示し損ねてしまう場合がある。このような例を図11に示す。図11に示す画像データID2においては、計3個のワーク特徴WPのうち、右上のワーク特徴WPに対応するワークモデルWMが表示されていない。このような場合、オペレータは、画像データID2にワークモデルWMを追加する必要がある。
【0085】
そこで、本実施形態においては、プロセッサ30は、ワークモデルWMを画像データID2から削除するための入力データIP3、及び、さらなるワークモデルWMを画像データID2に追加するための入力データIP4を受け付けるように構成されている。具体的には、ステップS11で図10に示す画像データID2が表示された場合、オペレータは、該画像データID2を視認しつつ入力装置40を操作して、削除すべきワークモデルWMを指定する入力データIP3を入力する。
【0086】
また、ステップS11で図11に示す画像データID2が表示された場合、オペレータは、該画像データID2を視認しつつ入力装置40を操作して、追加すべきワークモデルWMの画像データID2(センサ座標系C3)における位置(例えば、座標)を指定する入力データIP4を入力する。
【0087】
プロセッサ30は、このステップS31において、I/Oインターフェース34を通して入力装置40から入力データIP3又はIP4を受け付けるとYESと判定し、ステップS32へ進む。一方、入力装置40から入力データIP3又はIP4を受け付けていない場合はNOと判定し、ステップS12へ進む。
【0088】
ステップS32において、プロセッサ30は、画像生成部52として機能し、受け付けた入力データIP3又はIP4に従って、表示したワークモデルWMを画像データID2から削除するか、又は、さらなるワークモデルWMを画像データID2に追加で表示する。例えば、入力データIP3を受け付けたとき、プロセッサ30は、図10に示す画像データID2から、特徴Fに対応する位置に表示されたワークモデルWMを削除する。その結果、図12に示すように画像データID2が更新される。
【0089】
一方、入力データIP4を受け付けたとき、プロセッサ30は、図11に示す画像データID2において、入力データIP4によって指定された位置にワークモデルWMを追加で表示する。その結果、図6に示すように、全てのワーク特徴WPに対応するように計3個のワークモデルWMが画像データID2に表示されることになる。
【0090】
ステップS32の後、プロセッサ30は、図5のフローと同様にステップS12~S15を実行する。なお、図9に示すフローでは、プロセッサ30は、ステップS14でNOと判定した場合、ステップS31へ戻る。以上のように、本実施形態によれば、オペレータは、ステップS11で表示された画像データID2において、必要に応じてワークモデルWMを削除又は追加することができる。
【0091】
なお、図9中のステップS11において、プロセッサ30は、画像データID2においてランダムに決定した位置にワークモデルWMを表示してもよい。プロセッサ30が、ワークモデルWMを画像データID2にランダムに表示した例を、図13に示す。この場合において、プロセッサ30は、画像データID2に配置するワークモデルWMの個数をランダムに決定してもよいし、又は、オペレータが該個数を予め定めてもよい。
【0092】
代替的には、図9中のステップS11において、プロセッサ30は、画像データID2において、予め定めた規則に従って決定した位置にワークモデルWMを表示してもよい。例えば、この規則は、ワークモデルWMを画像データID2において等間隔で格子状に配置する規則として、定められ得る。プロセッサ30が、等間隔で格子状に配置するという規則に従ってワークモデルWMを画像データID2に表示した例を、図14に示す。
【0093】
プロセッサ30がステップS11でワークモデルWMをランダム又は所定の規則に従って配置した後、オペレータは、ステップS31において入力装置40に入力データIP3又はIP4を入力することで、画像データID2に表示されたワークモデルWMを、必要に応じて削除又は追加することができる。
【0094】
次に、図15を参照して、上述のステップS4(マッチング位置を取得するプロセス)のさらに他の例について説明する。図15に示すステップS4においては、プロセッサ30は、ステップS11の後、ステップS41及びS42を実行する。ステップS41において、プロセッサ30は、画像データID2において、削除対象とする条件G1を満たしているワークモデルWMかあるか否かを判定する。
【0095】
具体的には、プロセッサ30は、画像データID2に写るワークモデルWMの各々について、該ワークモデルWMの占有領域内に存在する、ワーク特徴WPを構成する3次元点群の点(又は、ワーク特徴WPを写す画素)の数Nを算出する。そして、プロセッサ30は、このステップS41において、ワークモデルWMの各々について、算出した数Nが予め定めた閾値Nth以下である(N≦Nth)か否かを判定し、N≦Nthであると判定されたワークモデルWMがある場合に、該ワークモデルWMを削除対象として特定し、YESと判定する。すなわち、本実施形態においては、条件G1は、数Nが閾値Nth以下であることとして、定められている。
【0096】
例えば、プロセッサ30がステップS11で図14に示す画像データID2を生成したとする。この場合、画像データID2に写るワークモデルWMのうち、上列の左側から2番目及び4番目のワークモデルWMと、下列の左側から1番目、3番目及び4番目のワークモデルWMとに関し、その専有領域内に存在するワーク特徴WPの点(画素)が少なくなっている。したがって、この場合、プロセッサ30は、ステップS11において、これら計5個のワークモデルWMを削除対象として特定し、YESと判定することになる。
【0097】
ステップS42において、プロセッサ30は、画像生成部52として機能し、ステップS41で削除対象として特定したワークモデルWMを画像データID2から自動で削除する。図14に示す例の場合、プロセッサ30は、削除対象として特定された上述の計5個のワークモデルWMを、画像データID2から自動で削除する。図16に、これら5個のワークモデルWMが削除された画像データID2の例を示す。このように、本実施形態においては、プロセッサ30は、予め定めた条件G1に従って、表示したワークモデルWMを画像データID2から自動で削除する。
【0098】
代替的には、プロセッサ30は、ステップS41において、画像データID2においてワークモデルWMを追加する条件G2を満たしているか否かを判定してもよい。例えば、プロセッサ30が、ステップS11で図11に示す画像データID2を生成したとする。プロセッサ30は、各々のワーク特徴WPについて、ワークモデルWMの専有領域に含まれる点(又は、画素)を有しているか否かを判定する。
【0099】
そして、プロセッサ30は、ワークモデルWMの専有領域に含まれる点(画素)を有さないワーク特徴WPがある場合に、該ワーク特徴WPをモデル追加対象として特定し、YESと判定する。すなわち、本実施形態においては、条件G2は、ワークモデルWMの専有領域に含まれる点(画素)を有さないワーク特徴WPが存在することとして、定められている。例えば図11に示す例の場合、プロセッサ30は、このステップS41において、画像データID2の右上に示されたワーク特徴WPをモデル追加対象として特定し、YESと判定することになる。
【0100】
そして、ステップS42において、プロセッサ30は、画像生成部52として機能し、ステップS41でモデル追加対象として特定したワーク特徴WPに対応する位置に、ワークモデルWMを画像データID2に自動で追加する。その結果、例えば図6に示すようにワークモデルWMが追加される。
【0101】
このように、本実施形態においては、プロセッサ30は、予め定めた条件G2に従って、ワークモデルWMを画像データID2に追加で表示する。図15に示すフローによれば、プロセッサ30は、条件G1又はG2に従ってワークモデルWMを自動で削除又は追加することができるので、オペレータの作業を低減できる。
【0102】
次に、図17及び図18を参照して、ロボットシステム10の他の機能について説明する。本実施形態においては、プロセッサ30は、まず、図17に示す画像取得プロセスを実行する。ステップS51において、プロセッサ30は、視覚センサ14が撮像する画像データID1_iを識別する番号「i」を「1」にセットする。
【0103】
ステップS52において、プロセッサ30は、撮像開始指令を受け付けたか否かを判定する。例えば、オペレータは、入力装置40を操作して撮像開始指令を入力する。プロセッサ30は、I/Oインターフェース34を通して入力装置40から撮像開始指令を受け付けるとYESと判定し、ステップS53へ進む。一方、プロセッサ30は、撮像開始指令を受け付けていない場合はNOと判定し、ステップS56へ進む。
【0104】
ステップS53において、プロセッサ30は、上述のステップS2と同様に、視覚センサ14によってワークWを撮像する。その結果、視覚センサ14は、第i番目の画像データID1_iを撮像し、プロセッサ30に供給する。ステップS54において、プロセッサ30は、直近のステップS53で取得した第i番目の画像データID1_iを、識別番号「i」とともにメモリ32に記憶する。ステップS55において、プロセッサ30は、識別番号「i」を「1」だけインクリメントする(i=i+1)。
【0105】
ステップS56において、プロセッサ30は、撮像終了指令を受け付けたか否かを判定する。例えば、オペレータは、入力装置40を操作して撮像終了指令を入力する。プロセッサ30は、撮像終了指令を受け付けるとYESと判定し、図17に示すフローを終了する。一方、プロセッサ30は、撮像終了指令を受け付けていない場合はNOと判定し、ステップS52へ戻る。
【0106】
例えば、オペレータは、ステップS55の終了後、撮像終了指令を入力せずに、図1に示す容器B内のワークWの配置を変化させる。次いで、オペレータは、入力装置40を操作して撮像開始指令を入力する。そうすると、プロセッサ30は、ステップS52でYESと判定し、容器B内の配置が変化した後のワークWに対してステップS53~S55を実行し、第i+1番目の画像データID1_i+1を取得する。
【0107】
図17に示すフローの終了後、プロセッサ30は、図18に示すフローを実行する。なお、図18に示すフローにおいて、図3及び図17に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。プロセッサ30は、ステップS1でYESと判定した場合はステップS51へ進む一方、NOと判定した場合はステップS6に進む。
【0108】
そして、プロセッサ30は、ステップS6においてYESと判定した場合は、図18に示すフローを終了する一方、NOと判定した場合は、ステップS1へ戻る。ステップS51において、プロセッサ30は、画像データID1_iの識別番号「i」を「1」にセットする。
【0109】
ステップS62において、プロセッサ30は、ワーク特徴WPが表示された画像データID2_iを生成する。具体的には、プロセッサ30は、識別番号「i」で識別される第i番目の画像データID1_iをメモリ32から読み出す。そして、プロセッサ30は、第i番目の画像データID1_iを基に、第i番目の画像データID1_iに写るワーク特徴WPをオペレータが視認可能なGUIとして、例えば図4に示すような第i番目の画像データID2_iを生成する。
【0110】
ステップS62の後、プロセッサ30は、第i番目の画像データID2_iを用いて上述のステップS4及びS5を順次実行し、第i番目の画像データID2_iに関して最適化するようにパラメータPMを調整する。次いで、プロセッサ30は、ステップS55を実行し、識別番号「i」を「1」だけインクリメントする(i=i+1)。
【0111】
ステップS64において、プロセッサ30は、識別番号「i」が、最大値iMAXを超えた(i>iMAX)か否かを判定する。この最大値iMAXは、図17のフローでプロセッサ30が取得した画像データID1_iの総数である。プロセッサ30は、ステップS64において、i>iMAXである場合はYESと判定し、図18に示すフローを終了する一方、i≦iMAXである場合はNOと判定し、ステップS62へ戻る。こうして、プロセッサ30は、ステップS64でYESと判定するまで、ステップS62、S4、S5、S55及びS64のループを繰り返し実行し、全ての画像データID2_i(i=1,2,3,・・・iMAX)に関してパラメータPMを調整する。
【0112】
以上のように、本実施形態においては、図17に示すフローによって、様々な位置に配置したワークWの画像データID1_iを複数蓄積し、その後に、図18に示すフローにおいて、蓄積した複数の画像データID1_iを用いてパラメータPMを調整している。この構成によれば、様々な位置に配置したワークWについてパラメータPMを最適化することができる。
【0113】
なお、図17に示すフローにおいて、プロセッサ30は、ステップS52を省略し、且つ、ステップS56の代わりに上述のステップS64を実行し、識別番号「i」が最大値iMAXを超えた(i>iMAX)か否かを判定してもよい。このときのステップS64で用いられる閾値iMAXは、2以上の整数としてオペレータによって予め定められる。
【0114】
そして、プロセッサ30は、このステップS64でYESと判定した場合は、図17のフローを終了する方、NOと判定した場合はステップS53へ戻る。ここで、プロセッサ30は、このような図17のフローの変形例において、ステップS53を実行する毎に、視覚センサ14の位置(具体的には、位置及び姿勢)を変更して、ワークWを異なる位置及び視線方向A2から撮像してもよい。この変形例によれば、オペレータが手動でワークWの配置を変えなくとも、様々な配置のワークWを撮像した画像データID1_iを自動で取得し、蓄積することができる。
【0115】
なお、プロセッサ30は、メモリ32に予め格納されたコンピュータプログラムに従って、図3図17及び図18に示すフローを実行してもよい。このコンピュータプログラムは、図3図17及び図18に示すフローをプロセッサ30に実行させるための命令文を含み、メモリ32に予め格納される。
【0116】
上述の実施形態においては、プロセッサ30が、実機のロボット12及び視覚センサ14によって、実物のワークWの画像データID1を取得する場合について述べた。しかしながら、プロセッサ30は、視覚センサ14をモデル化した視覚センサモデル14MによってワークモデルWMを仮想的に撮像することによって、画像データID1を取得してもよい。
【0117】
この場合において、プロセッサ30は、仮想空間内に、ロボット12をモデル化したロボットモデル12Mと、該ロボットモデル12Mのエンドエフェクタモデル28Mに固定した視覚センサモデル14Mとを配置し、ロボットモデル12M及び視覚センサモデル14Mを仮想空間内で模擬的に動作させて、図3図17及び図18に示すフローを実行してもよい(すなわち、シミュレーション)。この構成によれば、実機のロボット12及び視覚センサ14を用いることなく、いわゆるオフライン動作によってパラメータPMを調整することができる。
【0118】
なお、上述の装置50から入力受付部56を省略することもできる。この場合において、プロセッサ30は、図5のステップS12~S14を省略し、ステップS11で生成した画像データID2からマッチング位置MPを自動で取得してもよい。例えば、画像データIDに写るワーク特徴WPとマッチング位置MPとの相関性を示す学習モデルLMがメモリ32に予め格納されてもよい。
【0119】
この学習モデルLMは、例えば、少なくとも1つのワーク特徴WPが写る画像データIDと、該画像データIDにおけるマッチング位置MPのデータとの学習データセットを、機械学習装置に反復して与えることによって(例えば、教師あり学習)、構築することができる。プロセッサ30は、ステップS11で生成した画像データID2を学習モデルLMに入力する。そうすると、学習モデルLMは、入力された画像データID2に写るワーク特徴WPに対応するマッチング位置MPを出力する。こうして、プロセッサ30は、画像データID2からマッチング位置MPを自動で取得できる。なお、プロセッサ30は、この機械学習装置の機能を実行するように構成されてもよい。
【0120】
なお、上述の実施形態においては、画像データID2において、ワーク特徴WPが3次元点群から構成される場合について述べた。しかしながら、これに限らず、プロセッサ30は、ステップS3において、ワーク特徴WPを写す各画素の色又は色調(濃淡)が上述の距離dに応じて変化するように表された距離画像として、画像データID2を生成してもよい。
【0121】
また、プロセッサ30は、ステップS3において、画像データID2を新たに生成することなく、視覚センサ14から取得した画像データID1を、表示装置38に表示するための画像データとして生成し、表示装置38に表示させてもよい。そして、プロセッサ30は、画像データID1を用いてステップS3及びS4を実行してもよい。
【0122】
また、上述の装置50から画像生成部52を省略し、該画像生成部52の機能を外部機器(例えば、視覚センサ14、又はPC)に求めることもできる。例えば、プロセッサ30は、視覚センサ14が撮像した画像データID1を、何ら変更を加えずに元のデータ形式として用いて、パラメータPMを調整してもよい。この場合、視覚センサ14が画像生成部52の機能を担うことになる。
【0123】
視覚センサ14は、3次元視覚センサに限らず、2次元カメラであってもよい。この場合において、プロセッサ30は、2次元の画像データID1を基に、2次元の画像データID2を生成し、ステップS3及びS4を実行してもよい。この場合、センサ座標系C3は、2次元の座標系(x,y)となる。
【0124】
上述の実施形態においては、装置50が制御装置16に実装される場合について述べた。しかしながら、これに限らず、装置50は、制御装置16とは別のコンピュータ(例えば、デスクトップ型PC、タブレット端末装置若しくはスマートフォン等のモバイル電子機器、又は、ロボット12を教示するための教示装置)に実装されてもよい。この場合、該別のコンピュータは、装置50として機能するプロセッサを有し、制御装置16のI/Oインターフェース34に通信可能に接続されてもよい。
【0125】
なお、上述のエンドエフェクタ28は、ロボットハンドに限らず、ワークに対する作業を行う如何なる装置(レーザ加工ヘッド、溶接トーチ、塗料塗布器等)であってもよい。以上、実施形態を通じて本開示を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。
【符号の説明】
【0126】
10 ロボットシステム
12 ロボット
14 視覚センサ
16 制御装置
30 プロセッサ
50 装置
52 画像生成部
54 位置検出部
56 入力受付部
58 マッチング位置取得部
60 パラメータ調整部
62 指令生成部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18