JP2022152845A - ロボット制御用のキャリブレーション装置 - Google Patents

ロボット制御用のキャリブレーション装置 Download PDF

Info

Publication number
JP2022152845A
JP2022152845A JP2021055774A JP2021055774A JP2022152845A JP 2022152845 A JP2022152845 A JP 2022152845A JP 2021055774 A JP2021055774 A JP 2021055774A JP 2021055774 A JP2021055774 A JP 2021055774A JP 2022152845 A JP2022152845 A JP 2022152845A
Authority
JP
Japan
Prior art keywords
posture
unit
robot
marker
calibration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021055774A
Other languages
English (en)
Other versions
JP7437343B2 (ja
Inventor
毅 北村
Takeshi Kitamura
聡 笹谷
So Sasatani
大輔 浅井
Daisuke Asai
信博 知原
Nobuhiro Chihara
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2021055774A priority Critical patent/JP7437343B2/ja
Priority to PCT/JP2021/040394 priority patent/WO2022208963A1/ja
Publication of JP2022152845A publication Critical patent/JP2022152845A/ja
Application granted granted Critical
Publication of JP7437343B2 publication Critical patent/JP7437343B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/08Controls for manipulators by means of sensing devices, e.g. viewing or touching devices
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • B25J19/04Viewing devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Human Computer Interaction (AREA)
  • Manipulator (AREA)

Abstract

【課題】マーカの遮蔽を考慮してロボットの姿勢集合を教示するとともに、ロボットの姿勢集合の教示に要する工数を削減することができるロボット制御用のキャリブレーション装置を提供する。【解決手段】キャリブレーション装置2は、予め定められた位置から撮像する撮像部32と、ロボット30に取り付けられたマーカ31と、ロボット30の複数の姿勢を含む姿勢集合を生成する姿勢集合生成部23と、その姿勢集合の中から、マーカ31の遮蔽が生じない複数の姿勢を抽出する非遮蔽姿勢抽出部26と、抽出された複数の姿勢に基づいて、ロボットの座標系と撮像部の座標系を変換するための座標変換パラメータを推定するキャリブレーション実行部29と、備える。【選択図】図1

Description

本発明は、ロボット制御用のキャリブレーション装置に関する。
近年の労働力不足を解消するため、従来は人が行ってきた作業、たとえば物流分野におけるピッキング作業や、産業分野における組み立て作業など、何らかのワーク(作業対象物)を取り扱う各種作業を、自律ロボットによって自動化するニーズが高まっている。この自動化を実現するにあたって、適切な自律作業をロボットに実行させるには、ワークなどの周辺環境を高精度に認識するための撮像部が必要となる。
撮像部が撮影した画像に基づいて周辺環境を認識し、この認識結果に応じてロボットが自律的に作業するには、ロボットに対する撮像部の相対的な配置(位置、姿勢)を決定するキャリブレーションの実施が必要である。このキャリブレーションには、たとえば、形状が既知のターゲットマーカ(以下、「マーカ」ともいう。)をロボットに取り付け、様々な姿勢に変更したロボットを撮像部によって撮影し、その撮影画像とロボットの姿勢との関係を対応付けた複数の組のデータを用いて、ロボットと撮像部との間の相対的な位置および姿勢を推定する方法がある。
しかしながら、上記のキャリブレーション方法では、工数の肥大化が懸念される。たとえば、キャリブレーション時に必要とされるロボットの複数の姿勢(以下、「姿勢集合」ともいう。)を教示するには、ロボットシステムの導入先の周辺環境に応じて専門家が試行錯誤する必要がある。このため、キャリブレーションに多くの工数を要する。また、ピッキング作業など不定形な作業をロボットに実行させる場合は、周辺環境に存在する物品に応じて撮像部の配置を変更する可能性がある。そして、実際に撮像部の配置を変更する場合は、その都度、ロボットの姿勢集合を教示する必要がある。したがって、キャリブレーションに必要な工数(以下、「キャリブレーション工数」ともいう。)が膨大になる恐れがある。このような背景から、近年ではキャリブレーション工数を削減するための仕組み、あるいは試作への注目度が高くなっている。
ロボット制御用のキャリブレーションに関して、たとえば特許文献1には、「キャリブレーションを容易に実施する」ための解決手段として、「ロボット制御システムは、撮像部により撮像された画像に基づいて、当該撮像部の視野内に存在する任意の対象物の三次元座標を計測する計測部と、計測された三次元座標とロボットの作用部の位置および姿勢との間の予め算出された対応関係に従って、ロボットの作用部を位置決めするための指令を生成する指令生成部と、対応関係を算出するためのキャリブレーションを実行するキャリブレーション実行部と、キャリブレーションにおいて、ロボットの作用部に関連付けられた基準物体を配置すべき領域であるキャリブレーション領域の設定を受付ける設定受付部とを含む。」と記載されている。
すなわち、特許文献1に記載された技術では、撮像部が撮影したロボットの情報などから、キャリブレーション時にマーカを移動させる空間(キャリブレーション領域)を規定し、その空間内でマーカの配置を自動で生成し、姿勢集合を教示することで、キャリブレーション工数を削減している。特許文献1に記載された技術によれば、設定受付部で設定を受け付けたキャリブレーション領域の範囲内でマーカを移動させるため、ロボットの姿勢集合の教示に要する工数を削減しつつ、キャリブレーションを実行することができる。
特開2019-217571号公報
しかしながら、特許文献1に記載された技術では、ロボットを様々な姿勢に変更した際に生じる可能性がある、マーカの遮蔽(以下、「オクルージョン」ともいう。)については考慮されていない。このため、次のような課題を有する。
一般に、ロボットの周辺や撮像部の周辺にロボット以外のものが存在する場合、あるいは、ロボットに付随する部品のうちマーカ以外の部分がマーカと撮像部との間に介在する場合は、撮像部から見てマーカが遮蔽される可能性がある。また、マーカの遮蔽が生じないようにマーカの移動空間を規定し、ロボットの姿勢集合を教示するには膨大な工数を要する。
本発明の目的は、マーカの遮蔽を考慮してロボットの姿勢集合を教示するとともに、ロボットの姿勢集合の教示に要する工数を削減することができるロボット制御用のキャリブレーション装置を提供することにある。
上記課題を解決するために、たとえば、特許請求の範囲に記載された構成を採用する。
本願は、上記課題を解決する手段を複数含んでいるが、その一つを挙げるならば、予め定められた位置から撮像する撮像部と、ロボットに取り付けられ、ロボットの動作にしたがって変位するマーカと、撮像部によってマーカを撮像可能とするためのロボットの複数の姿勢を含む姿勢集合を生成する姿勢集合生成部と、姿勢集合生成部によって生成された姿勢集合の中から、マーカの遮蔽が生じない複数の姿勢を抽出する非遮蔽姿勢抽出部と、非遮蔽姿勢抽出部によって抽出された複数の姿勢に基づいて、ロボットの座標系と撮像部の座標系を変換するための座標変換パラメータを推定するキャリブレーション実行部と、を備えるロボット制御用キャリブレーション装置である。
本発明によれば、マーカの遮蔽を考慮してロボットの姿勢集合を教示するとともに、ロボットの姿勢集合の教示に要する工数を削減することができる。
上記した以外の課題、構成および効果は、以下の実施形態の説明によって明らかにされる。
第1実施形態に係るロボット制御用のキャリブレーション装置の構成例を示す図である。 本実施形態における制御装置の構成例を示すブロック図である。 本実施形態における現実装置の座標系と座標変換を示す図である。 姿勢集合生成部の機能ブロック図である。 パラメータ取得部が取得するパラメータの一覧を示す図である。 パラメータ取得部によるパラメータの取得手順を示すフローチャートである。 姿勢集合を生成して保存する手順を示すフローチャートである。 教示空間生成部による教示空間の生成方法を説明する図である。 教示空間生成部による教示空間の分割方法を説明する図である。 教示位置生成部による教示位置の生成方法を説明する図である。 各小空間の教示位置にマーカを初期姿勢で配置した場合のマーカの見え方を示す図である。 教示姿勢生成部が生成したマーカの教示姿勢を示す図である。 シミュレータ構築部によって構築されるシミュレータの一例を示す図である。 非物理干渉姿勢抽出部の処理手順を示すフローチャートである。 ロボットが実際にピッキング作業を行うときの姿勢を上から俯瞰した図である。 ロボットが実際にピッキング作業を行うときの姿勢を側面から俯瞰した図である。 非遮蔽姿勢抽出部の処理手順を示すフローチャートである。 非遮蔽姿勢抽出部の動作例を示す模式図である。 姿勢集合評価部の機能ブロック図である。 キャリブレーション実行部の処理手順を示すフローチャートである。 第2実施形態に係るロボット制御用のキャリブレーション装置の構成例を示す図である。
以下、本発明の実施形態について図面を参照して詳細に説明する。本明細書および図面において、実質的に同一の機能または構成を有する要素については、同一の符号を付し、重複する説明は省略する。
<第1実施形態>
図1は、第1実施形態に係るロボット制御用のキャリブレーション装置の構成例を示す図である。本実施形態では、ロボットが行う作業内容の一例として、ワークを所定の位置へと移動させるピッキング作業を想定する。また、本実施形態では、制御対象のロボットの一例として、関節型ロボットであるロボットアーム(以下、単に「ロボット」ともいう。)を想定する。また、本実施形態では、ロボットに取り付けられるマーカの一例として、平面上の治具に寸法が既知の模様を印刷したキャリブレーションボードを想定する。また、本実施形態では、撮像部の一例として、単眼カメラを想定する。また、本実施形態では、ロボットの周辺や撮像部の周辺に設置される環境設置物の一例として、壁およびコンベアを想定する。ただし、本実施形態で想定する内容は、あくまで一例であって、ロボット制御用のキャリブレーション装置の構成は、本実施形態で想定した例に限定されない。
図1に示すように、キャリブレーション装置2は、制御装置1と、現実装置2Aと、キャリブレーション制御装置2Bと、を備えている。
制御装置1は、キャリブレーション装置2全体を統括的に制御する。また、制御装置1は、現実装置2Aにおけるロボット30の動作や撮像部32の動作を制御する。なお、図1においては、制御装置1とキャリブレーション制御装置2Bを別々に表記しているが、キャリブレーション制御装置2Bの機能は、制御装置1のコンピュータハードウェア資源によって実現することが可能である。
現実装置2Aは、ロボットアームによって構成されたロボット30と、ロボット30に取り付けられたマーカ31と、ロボット30の作業空間と周辺を計測する撮像部32と、を有する。また、現実装置2Aは、ロボット30の周辺や撮像部32の周辺に設置される環境設置物33の一例として、壁33Aおよびコンベア33Bを有する。
キャリブレーション制御装置2Bは、事前知識21と、生成パラメータ22と、事前知識21および生成パラメータ22を用いてロボット30の姿勢集合を生成する姿勢集合生成部23と、事前知識21を用いて三次元シミュレータ(以下、単に「シミュレータ」ともいう。)を構築するシミュレータ構築部24と、姿勢集合生成部23が生成した姿勢集合の中から、ロボット30やマーカ31が現実装置2A内のいずれの部分にも物理干渉しない複数の姿勢(姿勢集合)を抽出する非物理干渉姿勢抽出部25と、非物理干渉姿勢抽出部25が抽出した姿勢集合の中から、マーカ31の遮蔽が生じない複数の姿勢(姿勢集合)を抽出する非遮蔽姿勢抽出部26と、非遮蔽姿勢抽出部26が抽出した姿勢集合をキャリブレーション精度の観点から評価する姿勢集合評価部27と、姿勢集合評価部27による評価が低い場合に生成パラメータ22を更新するパラメータ更新部28と、姿勢集合評価部27による評価が高い場合にキャリブレーションを実行するキャリブレーション実行部29と、を備えている。ロボット30の姿勢集合とは、ロボット30の複数の姿勢(姿勢データ)の集合である。
事前知識21は、現実装置2Aの形状等を含む設計情報と、ロボット30が作業を行う空間(以下、「作業空間」ともいう。)を特定可能な情報と、撮像部32の評価値と、各機能部で用いる閾値などのパラメータ情報と、を有するデータベースである。現実装置2Aの設計情報は、現実装置2Aの三次元モデルなどの形状、仕様および配置を含む情報である。撮像部32の評価値は、撮像部32の受け入れ、もしくは出荷時に行う検査で得られる評価値であって、撮像部32の製品スペックに対する実性能や、画像歪みの程度を表す値である。生成パラメータ22は、ロボット30の姿勢集合に含まれる姿勢の数と密度を決定するパラメータを有するデータベースである。
姿勢集合生成部23は、事前知識21と生成パラメータ22とを入力として、ロボット30の姿勢集合を生成するとともに、生成した姿勢集合を制御装置1に保存する。姿勢集合生成部23が生成する姿勢集合に含まれるロボット30の姿勢は、撮像部32によってマーカ31を撮像可能(撮影可能)とするための姿勢である。シミュレータ構築部24は、事前知識21を用いて、仮想的にロボット30の動作および撮像部32を用いた撮影を可能とする三次元シミュレータを構築する。非物理干渉姿勢抽出部25は、姿勢集合生成部23が生成した姿勢集合を制御装置1から読み込むとともに、シミュレータ構築部24が構築した三次元シミュレータ上でロボットを各姿勢に移動することにより、ロボット30やマーカ31が、ロボット30および環境設置物33のいずれとも物理干渉しない複数の姿勢を抽出する。また、非物理干渉姿勢抽出部25は、抽出した複数の姿勢を、物理干渉しない姿勢集合として制御装置1に保存する。非遮蔽姿勢抽出部26は、非物理干渉姿勢抽出部25が抽出した姿勢集合を制御装置1から読み込むとともに、シミュレータ構築部24が構築した三次元シミュレータ上でロボットを各姿勢に移動することにより、撮像部32とマーカ31との間でマーカ31の遮蔽が生じない複数の姿勢を抽出する。また、非遮蔽姿勢抽出部26は、抽出した複数の姿勢を、姿勢集合として制御装置1に保存する。なお、本実施形態においては、姿勢集合生成部23が生成した姿勢集合の保存先や、非物理干渉姿勢抽出部25および非遮蔽姿勢抽出部26がそれぞれ抽出した姿勢集合の保存先を制御装置1としているが、姿勢集合の保存先は制御装置1に限らず、たとえばキャリブレーション制御装置2Bが備える記憶部であってもよい。
姿勢集合評価部27は、非遮蔽姿勢抽出部26が抽出した姿勢集合を制御装置1から読み込むとともに、その姿勢集合を用いたキャリブレーションの推定精度が事前に設定された所定値以上であるか否かを判定し、この判定結果を基に姿勢集合を評価する。パラメータ更新部28は、姿勢集合評価部27で所定値以上に高精度なキャリブレーションが見込めない場合に、生成パラメータ22を更新する。キャリブレーション実行部29は、姿勢集合評価部27で所定以上に高精度なキャリブレーションが見込めると判定された姿勢集合(複数の姿勢)に基づいて、ロボット30と撮像部32とを制御し、ロボット30の座標系と撮像部32の座標系を変換するための座標変換パラメータを推定する。
以降では、制御装置1、現実装置2A、事前知識21、姿勢集合生成部23、シミュレータ構築部24、非物理干渉姿勢抽出部25、非遮蔽姿勢抽出部26、姿勢集合評価部27、パラメータ更新部28、キャリブレーション実行部29について詳細に説明する。
(制御装置1)
図2は、本実施形態における制御装置1の構成例を示すブロック図である。
図2に示すように、制御装置1は、キャリブレーション装置2全体を統括的に制御するためのコンピュータハードウェア資源として、CPU11と、CPU11の指令を伝達するバス12と、ROM13と、RAM14と、記憶装置15と、ネットワークI/F(I/Fはインターフェースの略、以下同じ)16と、撮像部32を接続するための撮像I/F17と、画面出力を行うための画面表示I/F18と、外部入力を行うための入力I/F19と、を有する。すなわち、制御装置1は、一般的なコンピュータ装置によって構成することができる。
記憶装置15には、各機能を実行するためのプログラム15Aと、OS(オペレーティングシステム)15Bと、三次元モデル15Cと、データベースなどのパラメータ15Dとが記憶されている。ネットワークI/F16にはロボット制御装置16Aが接続されている。ロボット制御装置16Aは、ロボット30を制御して動作させる装置である。
(現実装置2A)
本実施形態において、ロボット30は、ピッキング作業を行うピッキングロボットである。一般に、ピッキングロボットは多関節ロボットによって構成される。ただし、ロボット30は、複数の関節を有するロボットであれば、ロボットの種類を問わない。また、ロボット30は、単軸スライダー上に設置し、この単軸スライダーによってロボット30の移動の自由度を増加させることで、広い空間を対象に作業を実行することができる。
マーカ31としては、平面上の治具に、寸法が既知の模様を印刷したキャリブレーションボードを使用する。このようなマーカ31を使用した場合は、撮像部32によって計測したデータを解析することで、三次元空間におけるマーカ31の位置を特定することができる。ただし、撮像部32によって計測したデータにより、マーカ31の三次元位置を特定可能であれば、たとえば球状の治具や特殊な形状の治具などをマーカ31として使用することができる。
マーカ31は、ロボットアームからなるロボット30のアーム先端に取り付けられている。ただし、マーカ31の取り付け位置は、ロボット30の動作にしたがってマーカ31が変位するという条件を満たす位置であれば、アーム先端に限らず、ロボットアーム上であればよい。
また、本実施形態では、撮像部32として単眼カメラを用いている。ただし、撮像部32は、単眼カメラに限らず、たとえばToF(Time of Flight)方式のカメラや、ステレオカメラなどによって構成してもよい。つまり、撮像部32によって得られるデータは、マーカ31の三次元位置を特定可能な画像や点群などのデータである。撮像部32は、予め定められた位置からロボット30の作業空間などを撮影する。撮像部32の取り付け位置は、たとえば、ロボット30が作業を行う建物の天井や壁など、任意の場所に設定することができる。
ここで、現実装置2Aの座標系と座標変換について説明する。
図3は、本実施形態における現実装置2Aの座標系と座標変換を示す図である。
現実装置2Aの座標系には、ロボット30のアーム基部を原点とする基部座標系C1と、ロボット30のアーム先端を原点とするアーム座標系C2と、マーカ31の中心を原点とするマーカ座標系C3と、撮像部32の光学中心を原点とするカメラ座標系C4とがある。各々の座標系は、それぞれ三次元の座標系である。
現実装置2Aの座標変換には、基部座標系C1とカメラ座標系C4との座標変換を表す基部・カメラ変換行列M1と、マーカ座標系C3とカメラ座標系C4との座標変換を表すマーカ・カメラ変換行列M2と、アーム座標系C2と基部座標系C1との座標変換を表すアーム・基部変換行列M3と、アーム座標系C2とマーカ座標系C3との座標変換を表すアーム・マーカ変換行列M4とがある。このうち、基部座標系C1は、ロボット30の座標系に相当し、カメラ座標系C4は、撮像部32の座標系に相当する。また、基部・カメラ変換行列M1は、ロボット30の座標系と撮像部32の座標系を変換するための座標変換パラメータに相当する。座標変換の一例を挙げると、基部・カメラ変換行列M1のうち、回転行列をRca、並進行列をtcaとしたとき、カメラ座標系C4における座標C(Xc,Yc,Zc)は、下記の数式に示すように基部座標系C1の点P(Xr,Yr,Zr)に変換することができる。
Figure 2022152845000002
次に、現実装置2Aの座標変換パラメータ(M1,M2,M3,M4)の取得方法について説明する。
基部・カメラ変換行列M1は、現実装置2Aにおける設計値の1つとして求めることができる。ただし、設計値として求めた基部・カメラ変換行列M1を適用してロボット30を動作させた場合に、ロボット30の位置に誤差が生じることがある。このような誤差が生じる原因の1つとして、たとえば、現実装置2Aにおける撮像部32の取り付け位置のズレが考えられる。具体的には、撮像部32の光軸(z軸)が鉛直方向と平行になるように撮像部32の取り付け位置が設計されていても、実際の取り付け時には僅かな位置ズレが生じることがある。キャリブレーションは、このような位置ズレによってロボット30の位置に誤差が生じないよう、基部・カメラ変換行列Mを正確に求めるために行われる。
基部・カメラ変換行列M1の設計値は事前知識21に含まれている。このため、事前知識21から基部・カメラ変換行列M1の設計値を取得することができる。また、キャリブレーションを実行することにより、上記の位置ズレ等を反映した基部・カメラ変換行列M1の実際の値を取得することができる。本実施形態におけるキャリブレーションとは、ある姿勢へとロボット30を移動したときのマーカ・カメラ変換行列M2とアーム・基部変換行列M3の複数の組のデータから、基部・カメラ変換行列M1を推定することをいう。基部・カメラ変換行列M1の推定は演算によって行われる。
マーカ・カメラ変換行列M2は、撮像部32によりマーカ31を撮影して得た画像を解析することにより取得することができる。アーム・基部変換行列M3は、ロボット30のエンコーダ値から計算することで取得することができる。ロボット30の関節部分には、図示しない関節駆動用のモータと、このモータの回転角を検出するエンコーダとが設けられ、エンコーダ値は、エンコーダの出力値を意味する。アーム・マーカ変換行列M4は未知、もしくは事前知識21より設計値を取得することができる。本実施形態では、アーム・マーカ変換行列M4の設計値は事前知識21に含まれているため、この事前知識21からアーム・マーカ変換行列M4の設計値を取得することができる。なお、本実施形態においては、各座標系の原点、座標系の向き、座標変換を上述のように設定しているが、この例に限定されるものではない。
(事前知識21)
事前知識21は、下記(1)~(11)のパラメータを有するデータベースである。
(1)基部・カメラ変換行列M1の設計値。
(2)アーム・マーカ変換行列M4の設計値。
(3)ロボット30の形状情報を含む三次元モデル。
(4)ロボット30の関節角の上限値などを規定する仕様データ。
(5)マーカ31の種類やサイズを含む形状データ。
(6)撮像部32のカメラパラメータや光学ブラー、解像度、画角などの情報を含む仕様データ。
(7)撮像部32の歪み評価値。
(8)ロボット30の作業空間を規定する情報。
(9)現実装置2Aの設計情報。
(10)環境設置物33の形状と配置を規定する情報。
(11)各機能部で用いる閾値。
なお、本実施形態では、上記の事前知識21を用いた機能について説明するが、一部のみを使用し機能を実装してもよい。
(姿勢集合生成部23)
姿勢集合生成部23は、事前知識21から取得したパラメータと生成パラメータ22から取得したパラメータとに基づいてロボット30の姿勢集合を生成する。また、姿勢集合生成部23は、生成した姿勢集合を制御装置1に保存する。
図4は、姿勢集合生成部23の機能ブロック図である。
図4に示すように、姿勢集合生成部23は、パラメータ取得部231と、教示空間生成部232と、教示位置生成部233と、教示姿勢生成部234と、座標系変換部235と、姿勢集合保存部236と、を備えている。
パラメータ取得部231は、姿勢集合の生成に必要なパラメータを、事前知識21と生成パラメータ22から取得する。教示空間生成部232は、キャリブレーション時にマーカ31を配置する空間を決定し、この空間を複数の小空間に分割する。また、教示空間生成部232は、各小空間にインデックスを付与する。教示位置生成部233は、各小空間においてマーカ31を配置する位置、すなわち教示位置を、カメラ座標系C4を基準に生成する。教示姿勢生成部234は、教示位置生成部233が生成した各教示位置においてマーカ31の姿勢、すなわち教示姿勢を生成する。座標系変換部235は、カメラ座標系C4を基準としたマーカ31の姿勢集合を、事前知識21に含まれる基部・カメラ変換行列M1の設計値に基づいて、基部座標系C1を基準としたロボット30の姿勢集合へと変換する。姿勢集合保存部236は、教示姿勢生成部234が生成した姿勢集合と座標系変換部235が変換した姿勢集合とを、制御装置1に保存する。以下、姿勢集合生成部23の各部の構成についてさらに詳しく説明する。
図5は、パラメータ取得部231が取得するパラメータの一覧を示す図である。
図5に示すように、パラメータ取得部231が取得するパラメータには、基部・カメラ変換行列M1の設計値(回転行列Rca、並進行列tca)、撮像部32の計測範囲(画角、解像度、光学ブラー)、撮像部32の歪み情報(歪み評価)、ロボット30の作業空間(三次元空間情報)、マーカ31の形状(ボード、球体、サイズ)、姿勢集合の各軸方向の分解能(X1,Y1,Z1)が含まれる。
図6は、パラメータ取得部231によるパラメータの取得手順を示すフローチャートである。
まず、パラメータ取得部231は、基部・カメラ変換行列M1の設計値を事前知識21から取得する(ステップS1)。このとき、パラメータ取得部231は、基部・カメラ変換行列M1の設計値として、回転行列Rcaおよび並進行列tcaを取得する。
次に、パラメータ取得部231は、撮像部32の計測範囲と撮像部32の歪み情報とを事前知識21から取得する(ステップS2)。このとき、パラメータ取得部231は、撮像部32の計測範囲として画角、解像度および光学ブラーを取得するとともに、撮像部32の歪み情報として歪み評価値を取得する。
次に、パラメータ取得部231は、ロボット30の作業空間を規定する情報を事前知識21から取得する(ステップS3)。このとき、パラメータ取得部231は、ロボット30の作業空間を規定する情報として、その作業空間を示す三次元空間情報を取得する。
次に、パラメータ取得部231は、マーカ31の形状データを取得する(ステップS4)。このとき、パラメータ取得部231は、マーカ31の形状データとして、マーカ31の種類(ボード、球体)とサイズのデータを取得する。
次に、パラメータ取得部231は、姿勢集合の各軸方向の分解能(X1,Y1,Z1)を生成パラメータ22から取得する(ステップS5)。具体的には、カメラ座標系C4を基準に、各軸において姿勢を作る個数(X1,Y1,Z1)を、各軸方向の分解能を定めるパラメータとして取得する。この場合、各軸において姿勢を作る個数が多いほど(X1,Y1,Z1の各値が大きいほど)、各軸方向の分解能が高くなる。つまり、パラメータX1,Y1,Z1は、姿勢集合に含まれる姿勢の数と密度を決定するパラメータに相当する。
図7は、教示空間生成部232、教示位置生成部233、教示姿勢生成部234および座標系変換部235によって姿勢集合を生成し、この姿勢集合を姿勢集合保存部236によって保存する手順を示すフローチャートである。
図7に示すように、まず、教示空間生成部232は、マーカ31を配置する教示空間を生成する(ステップS6)。このとき、教示空間生成部232が生成する教示空間は、カメラ座標系C4を基準とする三次元空間である。
次に、教示空間生成部232は、先ほど生成した教示空間を複数の小空間に分割し、各小空間にインデックスを付与する(ステップS7)。このとき、教示空間生成部232は、教示空間をX1×Y1×Z1の小空間に分割する。たとえば、X1=3、Y1=3、Z1=3であれば、教示空間生成部232は、教示空間を各軸方向で3つに分解することにより、教示空間を合計27個の小空間に分割する。また、教示空間生成部232は、小空間ごとにインデックス(X,Y,Z)を付与する。
次に、教示位置生成部233は、各小空間内でマーカ31を配置する位置を教示位置として設定する(ステップS8)。これにより、小空間の個数分だけマーカ31の教示位置が生成される。
次に、教示姿勢生成部234は、マーカ31が撮像部32に正対するように、各教示位置におけるマーカ31の教示姿勢を初期設定する(ステップS9)。以降の説明では、初期設定したマーカ31の教示姿勢を初期姿勢という。
次に、教示姿勢生成部234は、各小空間に付与されたインデックスに基づくルールベースもしくはランダムに、初期姿勢からカメラ座標系C4の各軸方向に0度から±θ(閾値)度だけマーカ31の姿勢を回転させることにより、マーカ31の教示姿勢を生成する(ステップS10)。これにより、マーカ31の教示姿勢が小空間の個数分だけ生成される。
次に、座標系変換部235は、ステップS10で教示姿勢生成部234が生成した、カメラ座標系C4を基準とするマーカ31の教示姿勢の座標を、基部・カメラ変換行列M1の設計値を用いて、基部座標系C1の座標へと変換する(ステップS11)。これにより、カメラ座標系C4を基準とするマーカ31の教示姿勢が、基部座標系C1を基準とするロボット30の教示姿勢に変換される。また、ロボット30の教示姿勢は小空間の個数分だけ生成される。
次に、姿勢集合保存部236は、上記ステップS10で教示姿勢生成部234により生成されたマーカ31の姿勢集合(複数の教示姿勢)、および、上記ステップS11で座標系変換部235により生成されたロボット30の姿勢集合(複数の教示姿勢)を、制御装置1に保存する(ステップS12)。これにより、制御装置1には、カメラ座標系C4を基準とするマーカ31の姿勢集合と、基部座標系C1を基準とするロボット30の姿勢集合とが保存される。
図8は、教示空間生成部232による教示空間の生成方法を説明する図である。図示した生成方法は、上記図7のステップS6に適用される。
まず、教示空間は、ロボット30が作業する空間と撮像部32が精度よく撮影可能(計測可能)な空間とが重なり合う、両空間の共通領域とする。
図8においては、カメラ座標系C4を基準にロボット30の作業空間を決定している。作業空間の決定方法としては、たとえば、ロボット30が行う作業がピッキング作業である場合は、ロボット30がワーク(図示せず)を把持する作業を行うときにマーカ31が位置する空間として事前に定めることができる。ロボット30の作業空間を教示空間T1に用いる理由は次の通りである。ロボット30を移動させる場合は、ロボット30の製造誤差などに伴う移動誤差が系統的に生じる。ただし、移動誤差の出方は空間の位置によって異なる。そのため、キャリブレーション時にロボット30が取る姿勢を作業時の姿勢と同様にすることにより、移動誤差の出方が作業時と同じデータをキャリブレーションに使用することができる。
撮像部32が撮影可能な空間は、撮像部32の画角によって決まるが、撮像部32が精度よく撮影可能な空間は、撮影可能な空間よりも狭い範囲に制限される。図8においては、撮像部32が精度よく撮影可能な空間として、カメラ座標系C4におけるZ軸方向の空間の広さは、撮像部32の光学ブラーの値が閾値以下の空間となるよう指定する。図8の例では、光学ブラーの値が1px以下となる範囲で、Z軸方向の空間の広さを指定している。また、撮像部32が精度よく撮影可能な空間として、カメラ座標系C4におけるX軸方向およびY軸方向の空間の広さは、撮像部32が撮像した画像(以下、「撮像画像」ともいう。)に対して歪み補正を実施し、歪み補正前の画像と歪み補正後の画像との輝度差が閾値以下の範囲となるよう指定する。これにより、撮像画像の歪みが生じにくい空間にマーカ31が配置されるように制御することができる。このため、後述するキャリブレーションの誤差を低減することができる。
図8の例では、カメラ座標系C4におけるZ軸方向の空間の広さは、ロボット30の作業空間によって規定されている。これは、Z軸方向の空間の広さを比較した場合に、ロボット30の作業空間が、光学ブラーの値が1px以下の空間よりも狭いためである。一方、カメラ座標系C4におけるX軸方向およびY軸方向の空間の広さは、撮像部32が精度よく撮影可能な空間によって規定されている。これは、X軸方向およびY軸方向の空間の広さを比較した場合に、撮像部32が精度よく撮影可能な空間である、歪み評価による輝度差が閾値以下の空間が、ロボット30の作業空間よりも狭いためである。
以上の方法により、教示空間T1が生成される。
図9は、教示空間生成部232による教示空間の分割方法を説明する図である。図示した分割方法は、上記図7のステップS7に適用される。
教示空間を分割する場合は、姿勢集合の各軸方向の分解能として与えられるパラメータX1,Y1,Z1を用いる。具体的には、上記ステップS6で生成した教示空間T1を、カメラ座標系C4を基準として、x軸方向ではX1個に分割し、y軸方向ではY1個に分割し、z軸方向ではZ1個に分割する。図9の例では、X1=3、Y1=3、Z1=3として、教示空間T1を分割している。このため、教示空間T1は、合計27個の小空間に分割される。このように教示空間T1を複数の小空間に分割したら、各小空間にインデックス(X,Y,Z)を割り振る。インデックス(X,Y,Z)は、座標軸に基づいて割り振られる。たとえば、x軸については図9の右側から左側に向かってX=1、X=2、X=3のインデックスが割り振られ、y軸については図9の手前から奥側に向かってY=1、Y=2、Y=3のインデックスが割り振られ、z軸については図9の上側から下側に向かってZ=1、Z=2、Z=3のインデックスが割り振られる。そうした場合、図9の右下に位置する小空間には、インデックス(X,Y,Z)=(1,1,3)が付与される。
図10は、教示位置生成部233による教示位置の生成方法を説明する図である。図示した生成方法は、上記図7のステップS8に適用される。
まず、1つの例として、インデックス(X,Y,Z)=(1,1,3)が付与された小空間における教示位置については、この小空間の上面の中心位置から、法線方向に小空間の高さの半分だけ移動した位置、すなわちインデックス(1,1,3)が付与された小空間の中心位置を教示位置として生成することができる。この点は、他のインデックスが付与された小空間についても同様である。
続いて、教示姿勢生成部234による教示姿勢の生成方法について説明する。教示姿勢は、上記図7のステップS9およびステップS10の処理によって生成される。
まず、ステップS9の処理内容について説明すると、教示姿勢生成部234は、マーカ31が撮像部32に正対するように、教示姿勢の初期値を設定する。
図11は、各小空間の教示位置にマーカを初期姿勢で配置した場合のマーカの見え方を示す図である。
図11においては、教示空間生成部232で生成した複数の小空間のうち、インデックス(X,Y,Z)=(1,1,1)(1,2,1)(1,3,1)(2,1,1)(2,2,1)(2,3,1)(3,1,1)(3,2,1)(3,3,1)の各小空間について、教示位置生成部233が生成した教示位置に仮にマーカ31を配置し、かつ撮像部32に対してマーカ31が正対するように配置した場合の、マーカ31の見え方を示している。初期姿勢のもとでは、いずれの小空間においても、カメラ座標系C4のZ軸がマーカ座標系C3のZ軸に対して真逆を向くように、マーカ31が配置される。したがって、すべての小空間でマーカ31の見え方は同じである。
次に、ステップS10の処理について説明する。
教示姿勢生成部234は、上記ステップS9で設定した初期姿勢から、マーカ31の姿勢をマーカ座標系C3の各軸方向に回転させることで、教示姿勢を生成する。
図12は、教示姿勢生成部234が生成したマーカ31の教示姿勢を示す図である。なお、図12における各小空間のインデックス(X,Y,Z)は、上記図11における各小空間のインデックス(X,Y,Z)に対応している。例として、インデックス(3,3,1)の小空間におけるマーカ31の教示姿勢は、初期姿勢に対してマーカ座標系C3のx軸まわりにマーカ31を回転させることで生成される。各軸の回転角の大きさは、0度から±θ(閾値)度までとし、インデックスに基づきルールベースもしくはランダムに決定する。本実施形態では、インデックスが(1,1,1)(1,3,1)(3,1,1)の小空間では初期姿勢と同様の姿勢を教示姿勢として用い、他のインデックスの小空間では軸まわりに回転させた姿勢を教示姿勢として用いる。このように、教示姿勢生成部234が生成する複数の姿勢である姿勢集合は、マーカ31が様々な向きとなるよう回転させた姿勢と、マーカ31の向きは同じで並進のみが異なる姿勢との組み合わせによって構成されている。これにより、マーカ31の姿勢をすべてランダムに変えた場合(マーカ31の向きがすべてのインデックスで異なる場合)に比べて、キャリブレーションの推定時の精度を向上させることができる。
以上述べた姿勢集合生成部23の各部(231~236)の処理より、ロボット30の作業空間と撮像部32が精度よく撮影可能な空間の両方を満たす教示空間にて、姿勢集合を自動的に生成することが可能である。
なお、本実施形態では、基部・カメラ変換行列M1の回転を回転行列Rcaの形式で取得しているが、四元数などを使用してもよい。また、教示空間生成部232が生成する教示空間T1の形状は、図8に示す形状に限らない。たとえば、撮像部32が精度よく撮影可能な空間に比べてロボット30の作業空間が狭い場合などは、教示空間T1は直方体などの形状となる。また、教示空間T1を生成するパラメータとして、本実施形態で使用した撮像部32の歪み評価の値が得られない場合は、歪み評価の値を使用せずに画角のみ、もしくは画角のうち予め定めた一部の空間を使うよう決定してもよい。また、教示空間の決定方法として、予めユーザが教示空間の形状や広さを指定してもよい。また、本実施形態では、教示空間の分割方法として、カメラ座標系C4を基準に教示空間T1を分割しているが、任意の座標系を基準として教示空間T1を分割してもよい。また、教示位置生成部233が生成する教示位置は、小空間内であれば任意の位置、たとえば小空間の頂点などを教示位置に設定してもよい。また、教示姿勢生成部234では、マーカ31を高精度に検出するため、各軸まわりのマーカ31の回転角を閾値以内として教示姿勢を生成しているが、マーカ31の種類によっては、閾値を設定しなくてもよい。また、本実施形態では、姿勢集合保存部236が姿勢集合を制御装置1に保存しているが、これに限らず、図示しないメモリ上に保持してもよく、後段の処理は該メモリから姿勢集合を読み込んでもよい。
続いて、シミュレータ構築部24の処理内容について詳しく説明する。
シミュレータ構築部24は、事前知識21に基づきシミュレータを構築することで、仮想的にロボット30を動作させ、撮像部32による撮像画像(撮影画像)を生成する機能を有する。
図13は、シミュレータ構築部24によって構築されるシミュレータの一例を示す図である。
図13においては、現実装置2Aの設計情報を含む三次元モデル、仕様、配置などの情報を事前知識21から取得し、取得した情報を基にロボット30、マーカ31、撮像部32および環境設置物33を仮想的にシミュレータ上に配置している。
ロボット30については、事前知識21から取得した情報である、ロボット30の形状情報として各リンクの長さや仕様として得られる関節の情報を用いることで、仮想的にロボット30を動作させることが可能である。また、仮想的にロボット30を動作させることで、実機にて使用する軌道計画のアルゴリズムを適用することが可能である。
撮像部32については、事前知識21から取得した情報である、撮像部32の画角や解像度、カメラパラメータなどの仕様データを用いることで、撮像部32がシミュレータ上で画像を撮影した際の各画素の値を生成することが可能である。また、シミュレータ上において、ロボット30や環境設置物33の色情報は容易に変更可能である。たとえば、ロボット30や環境設置物33の色を表すRGB値を(255,0,0)などに変更し、シミュレータ上で撮影した画像として生成することも可能である。
以上述べたシミュレータ構築部24の処理により、マーカ31を姿勢集合に基づき教示位置に移動させたときに、撮像部32によって撮影される画像を仮想的に生成することが可能である。また、ロボット30の三次元モデルが得られる場合は、仮想的にロボット30の軌道計画および制御が可能であり、事前知識21の設計上の配置情報により、ロボット30が動作したときに撮像部32が撮影した画像を仮想的に生成することが可能である。
なお、本実施形態では、基部・カメラ変換行列M1の設計値などを含む配置情報を事前知識21から取得し、取得した配置情報に基づいてシミュレータ上に物体を配置しているが、これに限らない。たとえば、撮像部32が撮影した画像などから、現実装置2Aの物体の大きさや配置を示す大まかな値を推定し、この推定結果に基づいてシミュレータ上に物体を配置してもよい。
また、本実施形態では、現実装置2Aをシミュレータに仮想的に配置する際に、現実装置2Aの三次元モデルを使用して形状を再現しているが、三次元モデルが得られない場合は、各座標系の設計値情報のみをシミュレータが保持してもよい。
また、撮像部32が、三次元計測可能なステレオカメラやToFカメラの場合、もしくは単眼カメラによる画像を機械学習することで三次元形状を得られる場合などは、撮像部32によって取得した現実装置2Aの三次元形状を、シミュレータの構築に活用してもよい。
続いて、非物理干渉姿勢抽出部25の処理内容について詳しく説明する。
図14は、非物理干渉姿勢抽出部25の処理手順を示すフローチャートである。
非物理干渉姿勢抽出部25は、姿勢集合生成部23が生成した姿勢集合の中から、現実装置2Aの各部が互いに物理干渉しない姿勢(非物理干渉姿勢)を抽出する。また、非物理干渉姿勢抽出部25は、シミュレータ構築部24が構築するシミュレータを活用することにより、上記物理干渉しない姿勢を抽出する。物理干渉とは、現実装置2Aにおいて、ロボット30やマーカ31が、ロボット30や撮像部32、環境設置物33等に接触することをいう。
まず、非物理干渉姿勢抽出部25は、姿勢集合生成部23が生成した姿勢集合を制御装置1のメモリ上にロードする(ステップS13)。
次に、非物理干渉姿勢抽出部25は、上記の姿勢集合に含まれる姿勢の数N1を取得する(ステップS14)。
次に、非物理干渉姿勢抽出部25は、変数iを初期値(i=1)に設定する(ステップS15)。
次に、非物理干渉姿勢抽出部25は、シミュレータ上でロボット30をi番目の姿勢へと移動するよう軌道計画を指示する(ステップS16)。
次に、非物理干渉姿勢抽出部25は、上記ステップS16で指示した軌道計画が成功したか否かを判定する(ステップS17)。具体的には、非物理干渉姿勢抽出部25は、指示した軌道計画でロボット30を動作させたときに、ロボット30とマーカ31が現実装置2A内のいずれの部分にも物理干渉しない場合は軌道計画が成功したと判定し、物理干渉する場合は軌道計画が失敗したと判定する。
次に、非物理干渉姿勢抽出部25は、上記ステップS17で軌道計画が成功したと判定した場合は、i番目の姿勢を成功パターンとして上記メモリ上に保持した後、(ステップS18)、i番目の姿勢が生成された小空間のインデックスに対する成功/失敗情報を保持する(ステップS19)。小空間のインデックスに対する成功情報を保持する場合は、i番目の姿勢が生成された小空間のインデックスに成功フラグを紐付けて保持する。また、小空間のインデックスに対する失敗情報を保持する場合は、i番目の姿勢が生成された小空間のインデックスに失敗フラグを紐付けて保持する。
一方で、非物理干渉姿勢抽出部25は、上記ステップS17で軌道計画が失敗したと判定した場合は、ステップS18,S19の処理をパスする。ここで、軌道計画が失敗した場合は、物理干渉が有りと判定される場合に相当し、軌道計画が成功した場合は、物理干渉が無しと判定される場合に相当する。
次に、非物理干渉姿勢抽出部25は、変数iの値がi=N1を満たすか否かを判定する(ステップS20)。そして、非物理干渉姿勢抽出部25は、変数iの値がN1未満である場合は、変数iの値を1だけインクリメントした後(ステップS21)、上記ステップS16の処理に戻る。また、非物理干渉姿勢抽出部25は、変数iの値がN1に達した場合は、成功パターンの姿勢集合とインデックスごとの成功/失敗情報を制御装置1に保存した後(ステップS22)、一連の処理を終える。
以上述べた非物理干渉姿勢抽出部25の処理により、姿勢集合のうち、現実装置2Aが互いに物理干渉しない姿勢のみを抽出することができる。
続いて、非物理干渉姿勢抽出部25が軌道計画の成否を判定する例について説明する。
図15は、ロボット30が実際にピッキング作業を行うときの姿勢を上から俯瞰した図である。
図15に示すように、マーカ31を移動先1に移動させる場合は、ロボット30が現実装置2Aのいずれの部分にも物理干渉しない。このため、マーカ31を移動先1に移動させるよう軌道計画を指示した場合は、軌道計画が成功して成功パターンの姿勢となる。これに対して、マーカ31を移動先2に移動させる場合は、ロボット30が環境設置物33(壁33A)に物理干渉するため、軌道計画が失敗する。
物理干渉の有無を判定する方法については、たとえば、軌道計画により生成された軌道の候補について、その軌道に従いロボット30が動作した際に、環境設置物33等とロボット30との三次元上の位置が重なるか否かで判定することができる。
図16は、ロボット30が実際にピッキング作業を行うときの姿勢を側面から俯瞰した図である。
図16に示すように、マーカ31を移動先3に移動させる場合は、ロボット30が現実装置2Aのいずれの部分にも物理干渉しない。このため、マーカ31を移動先3に移動させるよう軌道計画を指示した場合は、軌道計画が成功して成功パターンの姿勢となる。これに対して、マーカ31を移動先4に移動させる場合は、ロボット30が環境設置物33(コンベア33B)に物理干渉するため、軌道計画が失敗する。
本実施形態においては、軌道計画が成功であるか失敗であるかを、ロボット30と環境設置物33との物理干渉の有無で判定しているが、これに限らず、たとえば判定条件の1つとしてロボット30の関節角の制約などをユーザが加えることで判定させてもよい。具体的には、ロボット30を移動先に移動させる場合に、ロボット30の関節角が上限値以下の場合は軌道計画が成功と判定させ、上限値を超える場合は軌道計画が失敗と判定させてもよい。
続いて、非遮蔽姿勢抽出部26の処理内容について詳しく説明する。
図17は、非遮蔽姿勢抽出部26の処理手順を示すフローチャートである。
非遮蔽姿勢抽出部26は、姿勢集合生成部23が生成し、且つ、非物理干渉姿勢抽出部25が抽出した姿勢集合の中から、マーカ31と撮像部32との間でマーカ31の遮蔽が発生しない姿勢(非遮蔽姿勢)を抽出する。また、非遮蔽姿勢抽出部26は、シミュレータ構築部24が構築するシミュレータを活用することにより、マーカ31の遮蔽が発生しない姿勢を抽出する。
まず、非遮蔽姿勢抽出部26は、姿勢集合生成部23が生成し、且つ、非物理干渉姿勢抽出部25が抽出した姿勢集合を制御装置1のメモリ上にロードする(ステップS23)。
次に、非遮蔽姿勢抽出部26は、上記の姿勢集合に含まれる姿勢の数N2を取得する(ステップS24)。
次に、非遮蔽姿勢抽出部26は、変数iを初期値(i=1)に設定する(ステップS25)。
次に、非遮蔽姿勢抽出部26は、シミュレータ上でロボット30をi番目の姿勢へと移動するよう軌道計画を指示する(ステップS26)。
次に、非遮蔽姿勢抽出部26は、シミュレータ上の撮像部32による仮想的な撮影画像を生成する(ステップS27)。
すなわち、非遮蔽姿勢抽出部26は、i番目の姿勢にロボット30を移動させたときに撮像部32によって得られる撮影画像を仮想的に生成する。
次に、非遮蔽姿勢抽出部26は、生成した撮影画像を解析することにより、マーカ・カメラ変換行列M2を推定する(ステップS28)。撮影画像の解析方法としては、たとえば、マーカ31上にサイズと位置が既知の複数の黒丸の模様が印刷されている場合は、この黒丸の既知のサイズおよび位置と、上記仮想的な撮影画像上での黒丸のサイズおよび位置とを対応付けることにより、マーカ・カメラ変換行列M2を推定することができる。マーカ・カメラ変換行列M2を推定することは、実質的に、三次元のカメラ座標系C4においてマーカ31の位置姿勢、すなわちマーカ31の三次元位置を推定することを意味する。
次に、非遮蔽姿勢抽出部26は、マーカ・カメラ変換行列M2の推定に成功したか否かを判定する(ステップS29)。そして、非遮蔽姿勢抽出部26は、マーカ・カメラ変換行列M2の推定に成功した場合は、推定の信頼度を算出した後(ステップS30)、その信頼度が閾値以上であるか否かを判定する(ステップS31)。また、非遮蔽姿勢抽出部26は、算出した推定の信頼度が閾値以上である場合は、i番目の姿勢を成功パターンとして上記メモリ上に保持した後(ステップS32)、i番目の姿勢が生成された小空間のインデックスに対する成功/失敗情報を保持する(ステップS33)。小空間のインデックスに対する成功情報を保持する場合は、i番目の姿勢が生成された小空間のインデックスに成功フラグを紐付けて保持する。また、小空間のインデックスに対する失敗情報を保持する場合は、i番目の姿勢が生成された小空間のインデックスに失敗フラグを紐付けて保持する。
一方で、非遮蔽姿勢抽出部26は、上記ステップS29でマーカ・カメラ変換行列M2の推定に失敗したと判定した場合は、ステップS30~S34の処理をパスし、上記ステップS31で信頼度が閾値以上ではないと判定した場合はステップS32,S33の処理をパスする。ここで、マーカ・カメラ変換行列M2の推定に失敗した場合や、推定の信頼度が閾値以上ではない場合は、マーカ31の遮蔽が有りと判定される場合に相当する。kれに対して、マーカ・カメラ変換行列M2の推定に成功した場合や、推定の信頼度が閾値以上である場合は、マーカ31の遮蔽が無しと判定される場合に相当する。
次に、非遮蔽姿勢抽出部26は、変数iの値がi=N2を満たすか否かを判定する(ステップS34)。そして、非遮蔽姿勢抽出部26は、変数iの値がN2未満である場合は、変数iの値を1だけインクリメントした後(ステップS35)、上記ステップS26の処理に戻る。また、非遮蔽姿勢抽出部26は、変数iの値がN2に達した場合は、成功パターンの姿勢集合と、インデックスごとの成功/失敗情報とを制御装置1のメモリに保存した後(ステップS36)、一連の処理を終える。
以上述べた非遮蔽姿勢抽出部26の処理により、姿勢集合のうち、マーカ31と撮像部32との間でマーカ31の遮蔽が発生しない姿勢のみを抽出することができる。
続いて、非遮蔽姿勢抽出部26による信頼度の算出方法(ステップS30の処理内容)と評価方法(ステップS31の処理内容)について説明する。
まず、ステップS28においては、マーカ31の一部が遮蔽により隠れた場合でも、マーカ・カメラ変換行列M2を推定可能な場合がある。しかし、この場合は、マーカ31の全部が撮影画像に映っている場合に比べて、マーカ・カメラ変換行列M2の推定精度が低い可能性がある。マーカ・カメラ変換行列M2の推定精度が低い姿勢をキャリブレーションに使用することは望ましくない。
そこで、非遮蔽姿勢抽出部26は、各教示姿勢におけるマーカ31と撮像部32との相対的な姿勢がシミュレータ上で既知であることを利用し、たとえば、マーカ31が遮蔽なく撮影画像に映ったときのマーカ31の面積と、シミュレータ上で撮像部32の撮影画像上に実際に映っているマーカ31の面積との比率を、推定の信頼度として算出する。また、これ以外にも、たとえば、撮影画像を解析したときに得られるマーカ31上の特徴点の個数と、特徴点の総数との割合などを信頼度として算出する。そして、非遮蔽姿勢抽出部26は、上述のように算出した信頼度が、事前にマーカ31の種類により定めた閾値に比べて高いか否かを判定する。
図18は、非遮蔽姿勢抽出部26の動作例を示す模式図である。
図18の左側に一点鎖線で示す枠線内には、上記ステップS23で制御装置1のメモリ上にロードした姿勢集合の一部を示している。また、図18の右側に一点鎖線で示す枠線内には、非遮蔽姿勢抽出部26によって抽出された、遮蔽(オクルージョン)判定後の姿勢集合の一部を示している。本例では、シミュレータ上で撮像部32が撮影した画像の上下および左を覆うように環境設置物33が配置されている。
まず、図18の撮影画像I1に示す姿勢では、ロボット30によってマーカ31の一部が遮蔽されており、マーカ31の位置姿勢の推定が失敗する可能性がある。仮に、撮影画像I1に映っているマーカ31の一部から、マーカ31の位置姿勢の推定が可能であった場合は、非遮蔽姿勢抽出部26は、たとえば上述したようにマーカ31が遮蔽なく撮影画像に映ったときのマーカ31の面積と、シミュレータ上で撮像部32の撮影画像上に実際に映っているマーカ31の面積との比率を、推定の信頼度として算出する。この信頼度を算出するにあたって、あるロボット30の姿勢における、カメラ座標系C4とマーカ31の位置姿勢は、姿勢集合生成部23により既知である。したがって、マーカ31の位置姿勢の情報と、撮像部32の画角、解像度、カメラパラメータなどの情報とを用いて、マーカ31が遮蔽なく画像に映った場合の、画像上でのマーカ31のピクセル位置の集合(以下、「ピクセル集合」という。)を特定することができる。
続いて、非遮蔽姿勢抽出部26は、シミュレータでロボット30や環境設置物33の色情報を、マーカ31に含まれない色、たとえばRGB値が(255,0,0)の色に変更するとともに、ロボット30の姿勢を変更して、撮像部32による撮影画像を仮想的に生成する。撮影画像におけるマーカ31の位置はピクセル集合と一致し、遮蔽が生じたピクセルの色は(255,0,0)となる。このため、非遮蔽姿勢抽出部26は、ピクセル集合のうち、(255,0,0)の色ではないピクセルの割合を、推定の信頼度として算出する。したがって、撮影画像I1の場合は、マーカ31がロボット30によって半分ほど遮蔽されているため、推定の信頼度は約50%と算出される。また、信頼度と比較される閾値を予め90%と設定した場合は、撮影画像I1における信頼度は閾値未満となる。
一方、図18の撮影画像I2に示す姿勢では、マーカ31の遮蔽が生じておらず、マーカ31全体が画像上に映っている。このため、撮影画像I2の場合は、マーカ31の位置姿勢の推定が可能であり、推定の信頼度も閾値以上に高くなるため、成功パターンとなる。
また、図18の撮影画像I3に示す姿勢では、撮像部32の画角内にマーカ31が配置されているが、環境設置物33によってマーカ31の一部が遮蔽されている。このため、マーカ31の位置姿勢の推定が失敗する可能性がある。また、撮影画像I3にはマーカ31上の黒丸の総数12個のうち9個が映っているため、仮にマーカ31の位置姿勢の推定が可能であった場合は、信頼度の計算が行われる。その際、非遮蔽姿勢抽出部26は、たとえば上述したように、撮影画像を解析したときに得られるマーカ31上の特徴点の個数と、特徴点の総数との割合を、推定の信頼度として算出する。黒丸の中心を特徴点とする場合は、総数12個の特徴点のうち、画像解析で得られる特徴点の個数は9個となり、推定の信頼度は75%と算出される。また、信頼度と比較される閾値を予め90%と設定した場合は、撮影画像I3における信頼度は閾値未満となる。
以上述べた非遮蔽姿勢抽出部26の処理により、マーカ31の遮蔽の有無が判定され、且つ、マーカ31の遮蔽が無しと判定された姿勢集合(撮影画像I2、I4、I5…に示す姿勢)が生成される。その結果、撮影画像の右と中央部分にマーカ31が映るような姿勢のみが生成される。
また、非遮蔽姿勢抽出部26は、ロボット30を各姿勢(変数i=1~N2に対応する姿勢)へと移動させたときに撮像部32によって得られる撮影画像を仮想的に生成するとともに、生成した撮影画像を解析することによってマーカ31の三次元位置を推定し、推定に成功したか否かによってマーカ31の遮蔽の有無を判断する。具体的には、推定に成功した場合はマーカ31の遮蔽が無しと判定し、推定に失敗した場合はマーカ31の遮蔽が有りと判定する。これにより、マーカ31の遮蔽が生じない姿勢を抽出することができる。
また、非遮蔽姿勢抽出部26は、マーカ31の三次元位置の推定に成功した場合に、推定の信頼度を求め、信頼度が閾値以上であるか否かによってマーカ31の遮蔽の有無を判定する。具体的には、推定の信頼度が閾値以上であれば、マーカ31の遮蔽が無しと判定し、推定の信頼度が閾値未満であれば、マーカ31の遮蔽が有りと判定する。これにより、マーカ31の三次元位置の推定に成功した姿勢のうち、推定の信頼度が閾値以上に高い姿勢のみを、マーカ31の遮蔽が生じない姿勢として抽出することができる。
なお、本実施形態において、非遮蔽姿勢抽出部26は、推定の信頼度を算出しているが、マーカ31の形状や模様によっては推定の信頼度を算出しなくてもよい。すなわち、推定の信頼度は、必要に応じて算出すればよい。また、信頼度の計算は、上述した面積比率や特徴点比率に限らず、たとえば機械学習などを用いてマーカ31の位置姿勢を推定する場合は、推定の信頼度自体を推定させてもよい。
続いて、姿勢集合評価部27の処理内容について詳しく説明する。
姿勢集合評価部27は、姿勢集合生成部23により生成され、且つ、非物理干渉姿勢抽出部25および非遮蔽姿勢抽出部26により抽出された姿勢集合を用いて、所定値以上に高精度なキャリブレーションが見込めるか否かを判定する。また、姿勢集合評価部27は、所定値以上に高精度なキャリブレーションが見込める場合は、キャリブレーション実行部29にキャリブレーションの実行を指示する。また、姿勢集合評価部27は、所定値以上に高精度なキャリブレーションが見込めない場合は、姿勢集合生成部23に対して、姿勢集合を追加する指示、および/または、生成パラメータの値を変更して姿勢集合を再度生成する指示を行う。
図19は、姿勢集合評価部27の機能ブロック図である。
図19に示すように、姿勢集合評価部27は、姿勢数評価部271と、姿勢集合抽出部272と、キャリブレーション評価部273と、インデックス評価部274と、を備えている。
姿勢数評価部271は、姿勢集合生成部23により生成され、且つ、非物理干渉姿勢抽出部25および非遮蔽姿勢抽出部26により抽出された姿勢集合に含まれる姿勢の数を評価する。具体的には、姿勢数評価部271は、姿勢集合に含まれる姿勢の数が、予め設定された所定数以内に収まっているか否かを判別する。
姿勢集合抽出部272は、姿勢集合に含まれる姿勢の数が所定数以内に収まっていないと姿勢数評価部271が判定した場合に、姿勢集合に含まれる複数の姿勢のうち、一部の姿勢であるサブセットを抽出する。たとえば、姿勢集合に合計100個の姿勢が含まれる場合は、100個の姿勢のうち20個の姿勢をサブセットとして抽出する。
キャリブレーション評価部273は、上記の姿勢集合を用いて、シミュレータ上で仮想的にキャリブレーションに用いるマーカ・カメラ変換行列M2とアーム・基部変換行列M3などのデータを生成し、キャリブレーションにて推定するマーカ・カメラ変換行列M2の推定精度を評価する。すなわち、キャリブレーション評価部273は、キャリブレーションの精度を評価する。
インデックス評価部274は、たとえば姿勢数の不足などにより、所定値以上に高いキャリブレーション精度が見込めないとキャリブレーション評価部273が判定した場合に、姿勢集合生成部23に対して姿勢集合を追加もしくは再度生成するよう指示する。
以下に、姿勢集合評価部27の各部の処理内容について詳しく説明する。
まず、姿勢数評価部271は、姿勢集合に含まれる姿勢の数が事前知識21などで定めた閾値より多い場合に、その姿勢集合の中から一部の姿勢、すなわちサブセットを抽出するよう姿勢集合抽出部272に指示する。また、姿勢数評価部271は、姿勢集合抽出部272が抽出したサブセットにて所定値以上の高いキャリブレーション精度が見込めるか否かをキャリブレーション評価部273に判定させる。このように、姿勢集合の中から姿勢の一部をサブセットとして取り出すことにより、姿勢集合に含まれる姿勢の数が多い場合に、キャリブレーションの所要時間が長くなることを抑制し、効率よくキャリブレーション精度を評価することができる。
姿勢集合抽出部272は、複数の姿勢の集合である姿勢集合から、予め決められたルールに基づき、一部の姿勢を抽出する。ルールは、たとえば、各姿勢が生成された小空間に付与されたインデックスが平均的に出現するように抽出する方法がある。具体例を挙げると、姿勢集合抽出部272は、抽出する姿勢の上限個数が21個と設定されている場合、次のようなルールに基づき、一部の姿勢を抽出する。
まず、上記図9に示すように教示空間T1を分割して得られる合計27個の小空間に対応する姿勢(教示姿勢)のうち、Z=1のインデックスが付与された小空間の姿勢が9個、Z=2のインデックスが付与された小空間の姿勢が7個、Z=3のインデックスが付与された小空間の姿勢が7個、つまり合計23個の姿勢が、前段の非物理干渉姿勢抽出部25および非遮蔽姿勢抽出部26によって抽出された場合は、姿勢の抽出数が最も多い、Z=1のインデックスが付与された小空間の姿勢を2つ削減する。これにより、インデックスが平均的に出現するように、一部の姿勢を抽出することができる。
キャリブレーション評価部273は、シミュレータ上で仮想的にキャリブレーションする際に用いるマーカ・カメラ変換行列M2とアーム・基部変換行列M3を生成し、最適化処理(後述)によって基部・カメラ変換行列M1の推定値を求める。さらに、キャリブレーション評価部273は、基部・カメラ変換行列M1の推定値とシミュレータ設計時の正解値とを比較し、ロボット作業の実行に必要なキャリブレーション精度、すなわち所定値以上に高いキャリブレーション精度が出ているか否かを判定する。基部・カメラ変換行列M1の推定値を求める方法は、キャリブレーション実行部29の処理内容とあわせて後段で説明する。
キャリブレーション評価部273は、生成したマーカ・カメラ変換行列M2とアーム・基部変換行列M3に誤差を加えることにより、基部・カメラ変換行列M1の推定値を求めてもよい。その理由は次のとおりである。
実際に現実装置2Aでキャリブレーションを実行する場合は、ノイズなどによる誤差が観測データに乗る。このため、上述したようにマーカ・カメラ変換行列M2とアーム・基部変換行列M3に誤差を加えることにより、実機に近い条件でキャリブレーション評価を行うことができる。
その場合、マーカ・カメラ変換行列M2とアーム・基部変換行列M3に加える誤差は、たとえば、正規分布に従う誤差を採用すればよい。このときの正規分布の標準偏差は、事前知識21などで指定するか、マーカ・カメラ変換行列M2とアーム・基部変換行列M3の値に対して一定の割合を有する値で指定してもよい。
なお、観測データに乗るノイズは、たとえば、観測データがロボット30のエンコーダ値である場合はロボット機構の誤差に起因するノイズであり、観測データが撮像部32による撮影画像である場合は、信号ノイズや画像歪みに起因するノイズである。また、観測データは、撮像部32による撮像画像を解析して得られるマーカ31の位置姿勢であってもよい。
キャリブレーション評価部273は、所定値以上に高精度なキャリブレーションが見込めると判定した場合は、キャリブレーション実行部29に対してキャリブレーションの実行を指示する。キャリブレーション実行部29は、キャリブレーション評価部273からの指示を受けてキャリブレーションを実行することにより、基部・カメラ変換行列M1を推定する。また、キャリブレーション評価部273は、所定値以上に高精度なキャリブレーションが見込めないと判定した場合は、インデックス評価部274に対してインデックス評価の実行を指示する。
インデックス評価部274は、キャリブレーション評価部273からインデックス評価の実行指示を受けた場合(所定値以上に高精度なキャリブレーションが見込めない場合)に、追加で姿勢を生成するよう姿勢集合生成部23に指示する、および/または、生成パラメータ22の値を変更するようパラメータ更新部28に指示する。このようなフィードバックを行うことにより、姿勢集合生成部23では、再度、姿勢集合を生成することが可能になるとともに、追加の姿勢を含む姿勢集合、または、更新後の生成パラメータ22に基づく姿勢集合を生成することが可能となる。これにより、姿勢集合生成部23が再度、姿勢集合を生成した場合に、所定値以上に高精度なキャリブレーションが見込める可能性を高めることができる。
インデックス評価部274は、キャリブレーション評価部273で評価した姿勢集合を取得し、その姿勢集合に含まれる姿勢の数が事前に定めた閾値よりも少ない場合は、各姿勢に割り振られたインデックス(X,Y,Z)のうち、全姿勢集合をサーチした際に登場頻度が最も少ないインデックスをインクリメントするようパラメータ更新部28に指示する。また、インデックス評価部274は、取得した姿勢集合に含まれる姿勢の数が事前に定めた閾値以上に多い場合は、追加の姿勢を生成するよう姿勢集合生成部23に指示する。生成方法の例として、取得した姿勢集合の中から複数の姿勢をランダムに抽出し、その姿勢のインデックスに対応する小空間の中で、教示位置と教示姿勢を生成する方法などがあるが、これに限らない。
以上述べた姿勢集合評価部27の処理により、姿勢集合の評価結果を、姿勢集合生成部23やパラメータ更新部28にフィードバックすることができる。また、所定値以上に高精度なキャリブレーションが見込める場合にのみ、キャリブレーション実行部29にキャリブレーションを実行させることができる。このため、姿勢数の不足などによってキャリブレーションの精度が低下することを抑制できる。また、所定値以上に高精度なキャリブレーションが見込めない場合は、姿勢集合生成部23に再度、姿勢集合を生成させることができる。
なお、本実施形態において、姿勢集合評価部27は、姿勢数評価部271および姿勢集合抽出部272を有しているが、これに限らず、キャリブレーション評価部273およびインデックス評価部274のみを有する構成でもよい。また、キャリブレーション評価部273の機能とインデックス評価部274の機能を、1つの機能部に統合してもよい。
また、本実施形態においては、姿勢集合抽出部272の処理に適用するルールとして、各小空間に付与されたインデックスが平均的に出現するルールを例示したが、これに限らず、たとえば姿勢集合からランダムに一部の姿勢を抽出してもよい。
パラメータ更新部28は、姿勢集合の分解能を定めるパラメータX1,Y1,Z1の値を、姿勢集合評価部27からの指示に基づいてインクリメントする。これにより、生成パラメータ22が更新される。このため、姿勢集合生成部23は、更新後の生成パラメータ22を用いて姿勢集合を生成することになる。
図20は、キャリブレーション実行部29の処理手順を示すフローチャートである。
キャリブレーション実行部29は、現実装置2Aが有するロボット30と撮像部32を制御し、姿勢集合の各姿勢へとロボット30を移動させたときのマーカ・カメラ変換行列M2とアーム・基部変換行列M3とを取得する。さらに、キャリブレーション実行部29は、取得したマーカ・カメラ変換行列M2とアーム・基部変換行列M3との座標変換パラメータにより、基部・カメラ変換行列M1を推定する。
まず、キャリブレーション実行部29は、姿勢集合評価部27が所定値以上に高精度なキャリブレーションが見込めると判断(評価)した姿勢集合を制御装置1のメモリ上にロードする(ステップS37)。
次に、キャリブレーション実行部29は、上記の姿勢集合に含まれる姿勢の数N3を取得する(ステップS38)。
次に、キャリブレーション実行部29は、変数iを初期値(i=1)に設定する(ステップS39)。
次に、キャリブレーション実行部29は、現実装置2Aにおいて実際にロボット30をi番目の姿勢へと移動させる(ステップS40)。
次に、キャリブレーション実行部29は、ロボット30の作業空間を撮像部32によって撮影する(ステップS41)。
次に、キャリブレーション実行部29は、撮像部32によって得られる撮影画像を解析することにより、マーカ・カメラ変換行列M2を推定する(ステップS42)。
次に、キャリブレーション実行部29は、マーカ・カメラ変換行列M2の推定に成功したか否かを判定する(ステップS43)。このステップS43においては、現実装置2Aにおける実際の照明環境、あるいは現実装置2Aが有する撮像部32の設計値との仕様・配置ズレなどにより、マーカ・カメラ変換行列M2の推定に失敗する可能性がある。
次に、キャリブレーション実行部29は、マーカ・カメラ変換行列M2の推定に成功した場合は、i番目のロボット30の姿勢値を示すアーム・基部変換行列M3と、i番目のロボット30の姿勢に対応するマーカ31の位置姿勢を示すマーカ・カメラ変換行列M2とを、制御装置1のメモリ上に格納する(ステップS44)。
次に、キャリブレーション実行部29は、変数iの値がi=N3を満たすか否かを判定する(ステップS45)。そして、キャリブレーション実行部29は、変数iの値がN3未満である場合は、変数iの値を1だけインクリメントした後(ステップS46)、上記ステップS40の処理に戻る。
一方で、キャリブレーション実行部29は、上記ステップS43でマーカ・カメラ変換行列M2の推定に失敗したと判定した場合は、ステップS44の処理をパスする。
その後、キャリブレーション実行部29は、変数iの値がN3に達した場合は、上記メモリ上のデータから最適化問題を解き、基部・カメラ変換行列M1を推定した後(ステップS47)、一連の処理を終える。
ステップS47において最適化問題を解くことが、最適化処理に相当する。この最適化処理によって基部・カメラ変換行列M1を推定する手法としては、下記の参考文献に示す公知技術を用いることができる。
(参考文献)
「Simultaneous Robot-World and Hand-Eye Calibration」F.Dornaika,R.Horaud,Aug1998.
この参考文献に開示された公知技術を概説すると、次のようになる。
ロボット基部とアーム先端の座標変換パラメータ(変換行列)をAA、アーム先端とマーカの座標変換パラメータをBBとすると、ロボット基部からマーカへの座標変換はAA×BBとなる。一方、ロボット基部とカメラの座標変換パラメータをCC、カメラとマーカの座標変換パラメータをDDとすると、ロボット基部からマーカへの座標変換はCC×DDとなる。つまり、AA×BB=CC×DDの条件が成立する。ここで、座標変換パラメータAAはロボットエンコーダ値により既知のパラメータ、座標変換パラメータBBおよびCCはそれぞれ未知のパラメータ、座標変換パラメータDDは画像解析によって既知のパラメータとなる。そこで最適化処理では、それぞれ既知のパラメータである多数の座標変換パラメータAAおよびDDから、AA×BB=CC×DDの条件を満たす座標変換パラメータBBおよびCCを数値計算によって推定する。
以上述べたキャリブレーション実行部29の処理により、現実装置2Aにおける基部・カメラ変換行列M1を推定することができる。
また、本実施形態に係るキャリブレーション装置2によれば、撮像部32によってマーカ31を撮像(撮影)可能とするためのロボット30の姿勢集合を姿勢集合生成部23が生成し、その姿勢集合の中から、マーカ31の遮蔽が発生しない姿勢を非遮蔽姿勢抽出部26が抽出する。このため、マーカ31の遮蔽が発生しない姿勢集合を自動で生成することができる。したがって、マーカ31の遮蔽を考慮してロボット30の姿勢集合を教示するとともに、ロボット30の姿勢集合の教示に要する工数を削減することができる。
また、本実施形態に係るキャリブレーション装置2によれば、姿勢集合生成部23が生成した姿勢集合の中から、ロボット30やマーカ31が物理干渉しない姿勢を非物理干渉姿勢抽出部25が抽出する。このため、ロボット30やマーカ31が物理干渉しない姿勢集合を自動で生成することができる。したがって、現実装置2Aにおける物理干渉を考慮してロボット30の姿勢集合を教示するとともに、ロボット30の姿勢集合の教示に要する工数を削減することができる。
なお、上記実施形態においては、姿勢集合生成部23が生成した姿勢集合の中から非物理干渉姿勢抽出部25が非物理干渉姿勢を抽出し、該抽出した非物理干渉姿勢の姿勢集合の中から非遮蔽姿勢抽出部26が非遮蔽姿勢を抽出する構成になっているが、これに限らない。たとえば、姿勢集合生成部23が生成した姿勢集合の中から非遮蔽姿勢抽出部26が非遮蔽姿勢を抽出し、該抽出した非遮蔽姿勢の姿勢集合の中から非物理干渉姿勢抽出部25が非物理干渉姿勢を抽出する構成になっていてもよい。また、非物理干渉姿勢抽出部25は、姿勢集合生成部23が生成した姿勢集合の中から非物理干渉姿勢を抽出し、非遮蔽姿勢抽出部26は、姿勢集合生成部23が生成した姿勢集合の中から非物理干渉姿勢を抽出し、非物理干渉姿勢抽出部25および非遮蔽姿勢抽出部26がそれぞれに抽出した姿勢集合のうち、共通の姿勢を対象に姿勢集合評価部27が評価する構成であってもよい。また、非物理干渉姿勢抽出部25および非遮蔽姿勢抽出部26のうち、非遮蔽姿勢抽出部26のみを備えた構成であってもよい。以上の点は、後述する第2実施形態についても同様である。
<第2実施形態>
図21は、第2実施形態に係るロボット制御用のキャリブレーション装置の構成例を示す図である。
図21に示すように、キャリブレーション装置2-1は、制御装置1と、現実装置2Cと、キャリブレーション制御装置2Dと、を備えている。
現実装置2Cは、ロボットアームからなるロボット30と、ロボット30に取り付けられたマーカ31と、ロボット30の作業空間と周辺を計測する撮像部32-1と、を有する。現実装置2Cは、撮像部32-1以外の構成は、上記第1実施形態の場合と共通である。撮像部32-2は、複数(図例では2つ)の撮像装置32A,32Bによって構成されている。各々の撮像装置32A,32Bは、たとえば、単眼カメラ、ToF(Time of Flight)方式のカメラ、ステレオカメラなどによって構成される。
キャリブレーション制御装置2Dは、事前知識21-1と、生成パラメータ22-1と、姿勢集合生成部23-1と、シミュレータ構築部24-1と、非物理干渉姿勢抽出部25-1と、非遮蔽姿勢抽出部26-1と、姿勢集合評価部27-1と、パラメータ更新部28-1と、キャリブレーション実行部29-1とに加えて、共通姿勢抽出部201を備えている。共通姿勢抽出部201以外の構成は基本的に上記第1実施形態の場合と共通である。
ただし、本実施形態においては、撮像部32-1が複数の撮像装置32A,32Bによって構成されている。このため、事前知識21-1と、生成パラメータ22-1と、姿勢集合生成部23-1と、シミュレータ構築部24-1と、非物理干渉姿勢抽出部25-1と、非遮蔽姿勢抽出部26-1と、姿勢集合評価部27-1と、パラメータ更新部28-1と、キャリブレーション実行部29-1は、それぞれ複数の撮像装置32A,32Bに対して上記第1実施形態の場合と同様の処理動作を行う。たとえば、姿勢集合生成部23-1は、撮像装置32Aによってマーカ31を撮影可能とするためのロボット30の姿勢集合と、撮像装置32Bによってマーカ31を撮影可能とするためのロボット30の姿勢集合とを、個別に生成する。撮像装置32A,32Bごとの個別処理は、姿勢集合生成部23-1だけでなく、シミュレータ構築部24―1、非物理干渉姿勢抽出部25-1、非遮蔽姿勢抽出部26―1、姿勢集合評価部27―1、パラメータ更新部28―1、およびキャリブレーション実行部29―1でも行われる。
共通姿勢抽出部201は、姿勢集合生成部23-1が撮像装置32A,32Bごとに生成し、且つ、非物理干渉姿勢抽出部25-1および非遮蔽姿勢抽出部26-6が撮像装置32A,32Bごとに抽出した姿勢集合の中から、複数の撮像装置32A,32Bで共通に使用可能な複数の姿勢を抽出する。また、共通姿勢抽出部201は、抽出した複数の姿勢が残るように、各撮像装置32A,32Bの姿勢集合を変更する。以下、詳しく説明する。
共通姿勢抽出部201は、ある撮像装置32Aに対応して生成した姿勢集合に含まれる各々の姿勢が、別の撮像装置32Bにも適用可能であるか否かを判定し、同様の判定処理をすべての撮像装置32A,32Bの組み合わせに対して実施する。例として、ある撮像装置32Aに対応して生成した姿勢集合に含まれる各々の姿勢が、別の撮像装置32Bにも適用可能であるか否かは、シミュレータ構築部24-1が構築するシミュレータ上でロボット30を制御し、各姿勢へとマーカ31を移動した際に、下記(1)~(3)の条件を満たすか否かによって判定可能である。
(1)マーカ31が撮像装置32Bの教示空間内に含まれていること。
(2)マーカ31と撮像装置32Bの回転行列が、事前に設定した閾値の範囲内に収まっていること。
(3)非遮蔽姿勢抽出部26-1の機能にてオクルージョンが発生しないと判定できること。
上記の判定結果において、複数の撮像装置32A,32Bで共通に使用可能な姿勢(以下、「共通姿勢」ともいう。)は、その姿勢を適用可能な撮像装置32A,32Bの姿勢集合を構成する姿勢の1つとして追加する。この処理により、事前に定めた姿勢数の上限を超える場合は、いずれかの撮像装置(32Aまたは32B)でのみ使用可能な姿勢は、撮像装置32A,32Bの姿勢集合から除去することで、キャリブレーション実行部29によるキャリブレーションに適用する姿勢の数を調整(削減)する。姿勢を除去する際の優先度は、たとえば、追加された姿勢が位置する小空間と同様の小空間にある姿勢を優先的に除去する方法がある。
本実施形態に係るキャリブレーション装置2-1によれば、上記第1実施形態と同様の効果に加えて、次のような効果が得られる。
本実施形態においては、複数の撮像装置32A,32Bで共通に使用可能な複数の姿勢を共通姿勢抽出部201が抽出し、抽出した複数の姿勢を適用してキャリブレーション実行部29-1がキャリブレーションを実行する。このため、撮像部32を複数の撮像装置32A,32Bによって構成した場合でも、ロボット30の姿勢集合の教示およびキャリブレーションに要する工数を削減しつつ、キャリブレーションを実行することが可能となる。
なお、本実施形態において、共通姿勢抽出部201は、姿勢集合生成部23-1が撮像装置32A,32Bごとに生成し、且つ、非物理干渉姿勢抽出部25-1および非遮蔽姿勢抽出部26-6が撮像装置32A,32Bごとに抽出した姿勢集合の中から、共通姿勢を抽出する構成になっているが、これに限らない。たとえば、共通姿勢抽出部201は、姿勢集合生成部23-1が撮像装置32A,32Bごとに生成した姿勢集合の中から、共通姿勢を抽出してもよい。また、共通姿勢抽出部201は、非物理干渉姿勢抽出部25-1が撮像装置32A,32Bごとに抽出した姿勢集合の中から、共通姿勢を抽出してもよい。また、共通姿勢抽出部201は、非遮蔽姿勢抽出部26-6が撮像装置32A,32Bごとに抽出した姿勢集合の中から、共通姿勢を抽出してもよい。
また、本実施形態において、共通姿勢抽出部201は、シミュレータ上でロボット30を制御し、共通で使用可能な姿勢を判定したが、これに限らず、たとえば、撮像部32の設計上の配置情報と、マーカ31の教示位置および姿勢のみから判定してもよい。また、各々の撮像装置32A,32Bの姿勢集合に含まれる姿勢数の上限を定めず、キャリブレーション時の姿勢を増やすことで、精度の向上が見込める場合がある。その場合は、事前に姿勢数の上限を定めなくてもよい。
<変形例等>
なお、本発明は、上述した実施形態に限定されるものではなく、様々な変形例を含む。たとえば、上述した実施形態では、本発明の内容を理解しやすいように詳細に説明しているが、本発明は、上述した実施形態で説明したすべての構成を必ずしも備えるものに限定されない。また、ある実施形態の構成の一部を、他の実施形態の構成に置き換えることが可能である。また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、これを削除し、または他の構成を追加し、あるいは他の構成に置換することも可能である。
2,2-1…キャリブレーション装置、2A,2C…現実装置、23,23-1…姿勢集合生成部、25,25-1…非物理干渉姿勢抽出部、26,26-1…非遮蔽姿勢抽出部、27,27-1…姿勢集合評価部、28,28-1…パラメータ更新部、29,29-1…キャリブレーション実行部、30…ロボット(ロボットアーム)、31…マーカ、32…撮像部、32A,32B…撮像装置、33…環境設置物、201…共通姿勢抽出部、M1…基部・カメラ変換行列(座標変換パラメータ)

Claims (8)

  1. 予め定められた位置から撮像する撮像部と、
    ロボットに取り付けられ、前記ロボットの動作にしたがって変位するマーカと、
    前記撮像部によって前記マーカを撮像可能とするための前記ロボットの複数の姿勢を含む姿勢集合を生成する姿勢集合生成部と、
    前記姿勢集合生成部によって生成された前記姿勢集合の中から、前記マーカの遮蔽が生じない複数の姿勢を抽出する非遮蔽姿勢抽出部と、
    前記非遮蔽姿勢抽出部によって抽出された前記複数の姿勢に基づいて、前記ロボットの座標系と前記撮像部の座標系を変換するための座標変換パラメータを推定するキャリブレーション実行部と、
    を備えるロボット制御用のキャリブレーション装置。
  2. 前記撮像部は、複数の撮像装置によって構成され、
    前記姿勢集合生成部は、前記複数の撮像装置の各々について、前記撮像装置によって前記マーカを撮像可能とするための前記ロボットの姿勢集合を個別に生成し、
    前記姿勢集合生成部が前記撮像装置ごとに個別に生成した前記ロボットの姿勢集合の中から、前記複数の撮像装置で共通に使用可能な複数の姿勢を抽出する共通姿勢抽出部をさらに備え、
    前記キャリブレーション実行部は、前記共通姿勢抽出部によって抽出された複数の姿勢を適用して前記座標変換パラメータを推定する
    請求項1に記載のロボット制御用のキャリブレーション装置。
  3. 前記姿勢集合生成部によって生成された前記姿勢集合の中から、前記ロボットと前記マーカが、前記ロボットおよび環境設置物を含む現実装置内のいずれの部分にも物理干渉しない複数の姿勢を抽出する非物理干渉姿勢抽出部をさらに備え、
    前記非遮蔽姿勢抽出部は、前記非物理干渉姿勢抽出部によって抽出された前記複数の姿勢を含む姿勢集合の中から、前記マーカの遮蔽が生じない姿勢を抽出する
    請求項1に記載のロボット制御用のキャリブレーション装置。
  4. 前記非遮蔽姿勢抽出部によって抽出された前記複数の姿勢を含む姿勢集合を用いて、所定値以上に高精度なキャリブレーションが見込めるか否かを判定する姿勢集合評価部をさらに備え、
    前記キャリブレーション実行部は、前記所定値以上に高精度なキャリブレーションが見込めると前記姿勢集合評価部が判定した場合に、前記座標変換パラメータを推定する
    請求項1に記載のロボット制御用のキャリブレーション装置。
  5. 前記姿勢集合評価部は、前記所定値以上に高精度なキャリブレーションが見込めない場合に、前記姿勢集合生成部に対して追加で姿勢を生成するよう指示する
    請求項4に記載のロボット制御用のキャリブレーション装置。
  6. 前記所定値以上に高精度なキャリブレーションが見込めないと前記姿勢集合評価部が判定した場合に、前記姿勢集合生成部が前記姿勢集合の生成に用いるパラメータの値を変更するパラメータ更新部をさらに備える
    請求項4に記載のロボット制御用のキャリブレーション装置。
  7. 前記非遮蔽姿勢抽出部は、前記ロボットを各姿勢へと移動させたときに前記撮像部によって得られる撮影画像を仮想的に生成するとともに、生成した前記撮影画像を解析することによって前記マーカの三次元位置を推定し、前記推定に成功したか否かによって前記マーカの遮蔽の有無を判定する
    請求項1に記載のロボット制御用のキャリブレーション装置。
  8. 前記非遮蔽姿勢抽出部は、前記推定に成功した場合に、前記推定の信頼度を求め、前記信頼度が閾値以上であるか否かによって前記マーカの遮蔽の有無を判定する
    請求項7に記載のロボット制御用のキャリブレーション装置。
JP2021055774A 2021-03-29 2021-03-29 ロボット制御用のキャリブレーション装置 Active JP7437343B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021055774A JP7437343B2 (ja) 2021-03-29 2021-03-29 ロボット制御用のキャリブレーション装置
PCT/JP2021/040394 WO2022208963A1 (ja) 2021-03-29 2021-11-02 ロボット制御用のキャリブレーション装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021055774A JP7437343B2 (ja) 2021-03-29 2021-03-29 ロボット制御用のキャリブレーション装置

Publications (2)

Publication Number Publication Date
JP2022152845A true JP2022152845A (ja) 2022-10-12
JP7437343B2 JP7437343B2 (ja) 2024-02-22

Family

ID=83458339

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021055774A Active JP7437343B2 (ja) 2021-03-29 2021-03-29 ロボット制御用のキャリブレーション装置

Country Status (2)

Country Link
JP (1) JP7437343B2 (ja)
WO (1) WO2022208963A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL2034853A (en) * 2022-11-01 2024-05-23 Univ Guilin Technology Automatic hand-eye calibration method based on neural architecture search calibration board detection
WO2024106610A1 (ko) * 2022-11-15 2024-05-23 한양대학교 에리카산학협력단 다중 연산을 이용한 핸드-아이 캘리브레이션 방법 및 장치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2981397B1 (en) 2013-04-05 2017-06-14 ABB Schweiz AG A robot system and method for calibration
JP6429473B2 (ja) 2014-03-20 2018-11-28 キヤノン株式会社 ロボットシステム、ロボットシステムの校正方法、プログラム、およびコンピュータ読み取り可能な記録媒体
JP7070127B2 (ja) 2018-06-15 2022-05-18 オムロン株式会社 ロボット制御システム
US11254019B2 (en) 2019-03-05 2022-02-22 The Boeing Company Automatic calibration for a robot optical sensor
JP7326911B2 (ja) 2019-06-20 2023-08-16 オムロン株式会社 制御システムおよび制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL2034853A (en) * 2022-11-01 2024-05-23 Univ Guilin Technology Automatic hand-eye calibration method based on neural architecture search calibration board detection
WO2024106610A1 (ko) * 2022-11-15 2024-05-23 한양대학교 에리카산학협력단 다중 연산을 이용한 핸드-아이 캘리브레이션 방법 및 장치

Also Published As

Publication number Publication date
JP7437343B2 (ja) 2024-02-22
WO2022208963A1 (ja) 2022-10-06

Similar Documents

Publication Publication Date Title
US9616569B2 (en) Method for calibrating an articulated end effector employing a remote digital camera
CN106873550B (zh) 模拟装置以及模拟方法
US11338435B2 (en) Gripping system with machine learning
US20200096317A1 (en) Three-dimensional measurement apparatus, processing method, and non-transitory computer-readable storage medium
US9727053B2 (en) Information processing apparatus, control method for information processing apparatus, and recording medium
US11498220B2 (en) Control system and control method
JP6271953B2 (ja) 画像処理装置、画像処理方法
WO2022208963A1 (ja) ロボット制御用のキャリブレーション装置
US20150125034A1 (en) Information processing apparatus, information processing method, and storage medium
WO2021218542A1 (zh) 基于视觉感知设备的机器人本体坐标系的空间标定方法、装置和存储介质
JP2012141962A (ja) 位置姿勢計測装置及び位置姿勢計測方法
CN111360821A (zh) 一种采摘控制方法、装置、设备及计算机刻度存储介质
JP2015212629A (ja) 検出装置およびこの装置を具えたマニプレータの動作制御
CN113379849A (zh) 基于深度相机的机器人自主识别智能抓取方法及系统
JP6973444B2 (ja) 制御システム、情報処理装置および制御方法
WO2019059343A1 (ja) ワーク情報処理装置およびワークの認識方法
US20190255706A1 (en) Simulation device that simulates operation of robot
EP3578321A1 (de) Verfahren zum verwenden mit einer maschine zum erstellen einer erweiterte-realität-anzeigeumgebung
CN114187312A (zh) 目标物的抓取方法、装置、系统、存储介质及设备
KR101972432B1 (ko) 레이저비전 센서 및 그 보정방법
KR102438490B1 (ko) 단일 체커보드를 이용하는 이종 센서 캘리브레이션 방법 및 장치
Motai et al. SmartView: hand-eye robotic calibration for active viewpoint generation and object grasping
CN110900606B (zh) 一种基于小型机械臂手眼联动系统及其控制方法
JP2022006427A (ja) 撮像システム構築装置
JP2021010994A (ja) センサ位置姿勢キャリブレーション装置及びセンサ位置姿勢キャリブレーション方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240105

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240130

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240209

R150 Certificate of patent or registration of utility model

Ref document number: 7437343

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150