以下、作動システムの例示的な実施形態が開示される。以下に示される実施形態の構成や制御(技術的特徴)、ならびに当該構成や制御によってもたらされる作用および結果(効果)は、一例である。
また、以下の複数の実施形態には、同様の構成要素が含まれている。以下では、それら同様の構成要素には共通の符号が付与されるとともに、重複する説明が省略される場合がある。また、本明細書において、序数は、構成要素等を区別するために便宜上付与されており、優先順位や順番を示すものではない。
(第1実施形態)
[概要]
図1は、作動システム1の構成図である。図1に示されるように、作動システム1は、作動装置100を含んでいる。作動装置100は、多関節ロボットであって、関節112を介して互いに可動に連結された複数のアーム111を有している。複数のアーム111は、直列に連結されている。複数のアーム111の先端には、関節112を介してハンド120が設けられている。アーム111やハンド120は、可動部材の一例である。ハンド120は、マニピュレータや、アクセス部、処理部等と称されうる。アーム111やハンド120の位置および姿勢は、アクチュエータ113,114(図2参照)の作動によって、変化したり維持されたりしうる。アクチュエータは、例えばモータや、モータ付きポンプ、ソレノイド、ソレノイド付き電磁弁、ピストンシリンダ等であるが、これらには限定されない。また、ハンド120は、例えば、バキュームチャックや、グリッパ等であるが、これらには限定されない。
フィールド11(エリア、ステージ)には、作動装置100による処理の対象である処理対象物400が置かれている。なお、処理対象物400は、パレットや、コンテナのような容器内に収容されてもよいし、ベルトコンベヤや、ローラコンベヤのような搬送装置上に載置されてもよいし、テーブルや、台のような固定ベース上に載置されてもよい。また、本実施形態では、作動装置100による処理は、一例として、処理対象物400をハンド120で把持し、所定の位置へ運搬することである。ただし、作動装置100による処理は、把持や運搬には限定されない。
作動システム1は、作動装置100による処理をより確実にあるいはより円滑に実行できるよう、深度カメラ200によって撮影した深度画像に基づくサーボ制御を実行する。本実施形態では、作動システム1は、ハンド120が処理対象物400の処理の実行位置または初期位置(目標位置)で、処理対象物400の処理の実行姿勢または初期姿勢(目標姿勢)となるよう、アクチュエータ113(図2参照)を制御する。また、作動システム1は、ハンド120が目標位置に到達しかつ目標姿勢となった時点で、所定の処理を実行するよう、アクチュエータ113,114を制御する。作動システム1は、ロボットハンドリングシステムや、マニピュレータシステム、対象物追従システム、サーボ作動システムとも称されうる。
深度カメラ200は、深度画像を取得する。深度画像データは、2次元の各画素における距離データ(深度データ)である。深度カメラ200は、深度センサの一例である。なお、深度カメラ200は、RGBの画像を取得してもよい。この場合、深度カメラ200は、RGB-Dセンサであり、深度カメラ200から得られるデータには、深度画像データと、2次元のRGB画像データとが含まれる。
図2は、作動システム1のブロック図である。作動システム1は、制御装置300を含む。制御装置300は、制御部310、主記憶部320、補助記憶部330等を有している。制御部310は、例えば、central processing unit(CPU)やコントローラ等であり、主記憶部320は、例えば、read only memory(ROM)や、random access memory(RAM)等である。
制御部310による演算処理や制御は、ソフトウエアによって実行されてもよいし、ハードウエアによって実行されてもよい。また、制御部310による演算処理や制御には、ソフトウエアによる演算処理や制御とハードウエアによる演算処理や制御とが含まれてもよい。ソフトウエアによる演算処理や制御の場合にあっては、制御部310は、ROMや、HDD、SSD、フラッシュメモリ等に記憶されたプログラム(アプリケーション)を読み出して実行する。制御部310は、プログラムにしたがって動作することにより、制御部310に含まれる各部、すなわち、画像処理部311や、目標物決定部312、移動制御部313、処理制御部314等として、機能する。この場合、プログラムには、これら各部に対応するモジュールが含まれる。
プログラムは、それぞれインストール可能な形式または実行可能な形式のファイルでCD-ROMや、FD、CD-R、DVD、USBメモリ等の、コンピュータで読み取り可能な記録媒体に記録されて提供されうる。また、プログラムは、通信ネットワークに接続されたコンピュータの記憶部に記憶され、ネットワーク経由でダウンロードされることによって導入されうる。また、プログラムは、ROM等に予め組み込まれてもよい。
また、制御部310の全部あるいは一部がハードウエアによって構成される場合、制御部310には、例えば、field programmable gate array(FPGA)や、application specific integrated circuit(ASIC)等が含まれうる。
画像処理部311は、深度カメラ200から深度画像データを取得する。深度カメラ200がRGB-Dセンサである場合、画像処理部311は、深度画像データとともに2次元RGBデータを取得することができる。また、作動システム1が深度カメラ200とは別のカメラ(不図示)を備えている場合、画像処理部311は、当該カメラによる深度画像データや2次元RGB画像データを、取得することができる。
また、画像処理部311は、深度カメラ200のカメラ行列を用いた座標変換により、各位置での距離データから、3次元点群データを算出する。3次元点群データは、深度カメラ200の画素毎の3次元位置を示すデータである。
深度画像の座標をu
i,v
i、深度を
、カメラ行列をM
cとすると、3次元点群データは、次の式(1)で表せる。
なお、以下では、3次元点群データも、深度画像データに含まれることとする。すなわち、深度画像データは、深度カメラ200の各画素(深度カメラ200の2次元座標系における位置座標)について、距離データと、3次元点群データ(3次元位置データ)とを含む。
目標物決定部312は、深度画像の初期画像に基づいて、少なくとも一つの処理対象物400中から、存在位置や大きさ等についての所定の条件を満たす目標物410(の画像、図4参照)を決定する。ここで、深度画像の初期画像は、ハンド120が移動制御の開始位置に位置されている状態で、深度カメラ200によって得られた深度画像である。
移動制御部313は、ハンド120が、目標物410および目標面411に対して所定の位置および姿勢、すなわち目標位置および目標姿勢となるよう、アクチュエータ113を制御する。移動制御部313は、深度画像によるサーボ制御を実行する。
処理制御部314は、ハンド120が目標位置に到達しかつ目標姿勢となった状態において、作動装置100(ハンド120)が所定の処理、例えば目標物410の把持動作を実行するよう、アクチュエータ113,114を制御する。
制御部310における位置や、方向、姿勢に関する各種の演算は、例えば、深度カメラ200に固定された3次元座標系での値によって実行されるが、これには限定されず、座標変換処理が施された後、フィールド11に固定された3次元座標系のような他の3次元座標系での値によって実行されてもよい。
図3は、制御装置300による処理の手順を示すフローチャートである。図3に示されるように、まずは、目標物決定部312が目標物410および初期目標位置を決定し(S10)、次に、移動制御部313が移動制御を実行する(S11)。S11では、ハンド120の移動に伴い、各タイムステップ(例えば、フレームレート30[fps]以内)において、現在位置と目標位置との位置偏差と位置閾値との比較、および現在方向と目標方向との方向偏差と方向閾値との比較が実行され、位置偏差が位置閾値以下となり、方向偏差が方向閾値以下となった時点で、移動制御が終了する。次に、処理制御部314が処理制御を実行する(S12)。
なお、本実施形態では、ハンド120が目標物410および目標面411に対して処理(例えば把持)を開始する位置、言い換えると処理を実行する前の位置が、目標位置であり、処理を開始する際の目標位置におけるハンド120の姿勢、言い換えると処理を実行する前のハンド120の姿勢が、目標姿勢(目標方向)であり、制御部310は、移動制御を実行した後に処理制御を実行する。ただし、これには限定されず、ハンド120が目標物410および目標面411に対して処理を実行した際あるいは処理を実行した後の位置が目標位置であり、ハンド120が目標物410および目標面411に対して処理を実行した際あるいは処理を実行した後の姿勢が目標姿勢であってもよい。その場合、制御部310は、移動制御の後段で移動制御とともに処理制御を実行する。
[目標物決定部の詳細な説明]
図4は、複数の処理対象物400の中から決定された目標物410を示す図である。図4に示されるように、目標物決定部312は、例えば、深度画像の初期画像に基づいて、複数の積み重ねられた処理対象物400のうち、最も上に位置する処理対象物400を、目標物410として決定する。目標物決定部312は、処理対象物400が存在するフィールド11に対する深度カメラ200の相対的な位置に基づいて、複数の処理対象物400のうち最も上に位置する処理対象物400を検出することができる。なお、処理対象物400が一つだけであった場合、目標物決定部312は、当該一つの処理対象物400を、目標物410として決定する。
また、目標物決定部312は、例えば、決定された目標物410の表面のうち深度画像中で最も大きく写っている表面の重心(中心、図心)を、初期状態における暫定的な目標位置Pt(ここでは初期目標位置)として決定し、当該目標位置Ptのデータ(例えば、深度画像における座標、深度値、および3次元位置)をデータ記憶部331に記憶する。データ記憶部331は、記憶部の一例である。
なお、目標物決定部312は、深度画像をガウシアンフィルタで畳み込み、深度カメラ200に最も近い点を目標位置Ptとして決定するとともに、当該点を含む処理対象物400を目標物410として決定してもよい。また、目標物決定部312は、ニューラルネットワークにおいて、深度画像と、当該深度画像から決定された目標位置Pt、の多数の組み合わせに基づく学習処理を実行することにより、深度画像に対応する目標位置Ptを決定してもよい。この場合、目標物決定部312は、学習処理によって得られた、深度画像から目標位置Ptを決定する近似関数を用いて、深度画像から目標位置Ptを決定することができる。また、目標物決定部312は、他の処理対象物400から分離した目標物410の表面上で各点における法線方向が互いに閾値以内となる領域を検出し、当該領域における重心(中心、図心)を目標位置Ptとして決定し、かつ当該法線方向の代表値を目標方向Dtとして決定してもよい。
なお、目標物決定部312は、深度カメラ200とは別のカメラ(不図示)による撮影画像や、別のセンサによる検出信号等から、目標物410を決定してもよい。この場合、別のカメラによる撮影画像や別のセンサによる検出信号の座標(位置)と、深度カメラ200による深度画像の座標(位置)との相関関係は予め取得されている。
[移動制御部の詳細な説明]
図5は、目標位置Pt、目標方向Dt、現在位置Pc、および現在方向Dcを示す斜視図である。目標位置Ptおよび目標方向Dtは、検出された目標面411から所定のアルゴリズムにしたがって一義的に定められる。目標位置Ptは、第一位置の一例であり、目標方向Dtは、第一方向の一例である。また、現在位置Pcおよび現在方向Dcは、深度カメラ200の座標系において固定されており、深度カメラ200が設けられたハンド120に対して固定されている。現在位置Pcは、第二位置の一例であり、現在方向Dcは、第二方向の一例である。
移動制御部313は、ハンド120が初期位置(不図示)から目標位置Ptへ移動する途中の各タイムステップにおいて、深度画像から目標面411を検出し、当該検出した目標面411から目標位置Ptおよび目標方向Dtを算出して、目標位置Ptと現在位置Pcとの位置偏差および目標方向Dtと現在方向Dcとの方向偏差が小さくなるようアクチュエータ113に対する指令値を算出する。アクチュエータ113は、算出された指令値に従って動作し、これにより、現在位置Pcが目標位置Ptに近付くとともに現在方向Dcが目標方向Dtに近付くように、ハンド120が移動する。このような各タイムステップにおける処理が繰り返されることにより、ハンド120は目標位置Ptに近付くとともに、ハンド120の姿勢は目標位置Ptにおける目標姿勢に近付く。
図5の例では、目標位置Ptは、各タイムステップにおいて検出された目標面411の重心(中心、図心)に設定されており、目標方向Dtは、各タイムステップにおいて検出された目標面411の近似平面(不図示)の法線方向(ただし深度カメラ200から離れる方向)、あるいは検出された目標面411上の各点における法線方向の例えば平均値のような代表値に設定されている。ただし、目標位置Ptおよび目標方向Dtは、これらには限定されず、検出された目標面411から所定のアルゴリズムによって算出され当該検出された目標面411に対して一義的に定まる他の位置や方向であってもよい。また、目標位置Ptおよび目標方向Dtは、検出された目標面411の重心のような目標面411を代表する位置、および目標面411の法線方向のような目標面411を代表する方向に対して、所定の相対的な位置関係を有する位置および方向であってもよい。また、目標位置Ptおよび目標方向Dtは、処理対象物400の形状や、大きさのようなスペックや、ハンド120の構造や、大きさ、把持方式のようなスペック、ハンド120と深度カメラ200との相対位置、ハンド120に対する深度カメラ200による相対的な撮像方向等に応じて、適宜に設定されうるし、適宜に変更されうる。なお、代表値は平均値には限定されない。
また、現在位置Pcは、ハンド120と目標物410とが所期の相対的な位置関係を有した状態において、目標位置Ptと重なる位置に設定される。具体的に、現在位置Pcは、ハンド120が目標物410を把持した状態で目標位置Ptと重なる位置に、設定されている。図5の例では、ハンド120および深度カメラ200は、ハンド120が目標物410を把持した状態において目標位置Ptが深度画像の中心(座標)に位置されるよう、構成されている。よって、現在位置Pcは、深度画像の中心(座標)に設定されている。ただし、現在位置Pcの設定は、これには限定されず、例えば、処理制御部314が実行する処理制御(例えば、ハンド120による把持制御)の開始時点において目標位置Ptと重なる位置であってもよい。
また、現在方向Dcは、ハンド120と目標物410とが所期の相対的な位置関係を有した状態において、目標方向Dtと重なる方向に設定される。具体的に、現在方向Dcは、ハンド120が目標物410を把持し現在位置Pcと目標位置Ptとが一致した状態で、目標方向Dtと重なる方向に、設定されている。図5の例では、ハンド120および深度カメラ200は、ハンド120が目標物410を把持した状態において深度カメラ200の光軸方向と目標面411の法線方向(ただし深度カメラ200から離れる方向)とが平行となるように、構成されている。よって、現在方向Dcは、深度カメラ200の光軸方向と平行に設定されている。ただし、現在方向Dcの設定は、これには限定されず、例えば、処理制御部314が実行する処理制御(例えば、ハンド120による把持制御)の開始時点において目標方向Dtと重なる方向であってもよい。
図6は、目標位置Pt、仮目標位置Pt’、目標方向Dt、仮目標方向Dt’、距離差分データΔPt、姿勢差分データΔDt、現在位置Pc、および現在方向Dcを示す斜視図である。移動制御部313は、以下のような演算によって、目標位置Ptおよび目標方向Dtを決定してもよい。すなわち、データ記憶部331は、距離差分データΔPtおよび姿勢差分データΔDtを記憶している。移動制御部313は、例えば前のタイムステップにおける目標位置Ptおよび目標方向Dtを、仮目標位置Pt’および仮目標方向Dt’とし、仮目標位置Pt’、距離差分データΔPt、および姿勢差分データΔDtから目標位置Ptを算出するとともに、仮目標方向Dt’および姿勢差分データΔDtから目標方向Dtを算出することができる。
図7は、移動制御部313のブロック図である。図8は、移動制御部313による演算処理および制御の手順を示すフローチャートである。図7に示されるように、移動制御部313は、目標面検出部313aと、位置方向算出部313bと、指令値算出部313cと、を有している。データ記憶部331は、例えば、補助記憶部330によって構成される。データ記憶部331は、各タイムステップで算出されたデータ(値)を記憶する。データ記憶部331に記憶されたデータは、後のタイムステップで使用される。
また、各タイムステップにおいて、図8のS1101からS1111が実行され、S1110においてYesとなった時点で図8のフローによる演算処理および制御は終了する。
移動制御部313は、まず、目標面検出部313aとして機能し、画像処理部311から、現在のタイムステップでの深度画像(3次元点群データを含む)を取得するとともに、データ記憶部331に記憶されている前のタイムステップでの目標位置Ptおよび目標方向Dtを示すデータを取得する(S1101)。前のタイムステップは、第一時刻の一例であり、現在のタイムステップは、第二時刻の一例である。
次に、目標面検出部313aは、深度画像に、目標面411の検出に用いる特定範囲Adを設定する(S1102)。図9は、深度画像に対して設定された特定範囲Adを示す図である。特定範囲Adは、データ記憶部331に記憶されている初期または前のタイムステップでの目標位置Pt’の座標を中心座標Poとする深度画像の2次元座標における四角形状の領域であり、k個の画素を含む領域である。特定範囲Adは、深度画像の全域よりも狭い範囲であり、例えば、深度カメラ200の2次元座標系における座標軸の方向をu方向およびv方向とした場合、u方向に41個、v方向に41個の合計1681(=k)個の画素を含む正方形状の領域である。なお、特定範囲Adの形状は、四角形状でなくてもよい。特定範囲Adの大きさや形状等のスペックは、深度画像における処理対象物400の大きさや形状等に応じて適宜に設定されうる。特定範囲Adの大きさは、深度カメラ200と目標物410との距離が近いほど大きく設定されてもよい。また、特定範囲Adの中心位置(基準位置)の座標は、前のタイムステップでの目標位置Ptの座標と同じ、すなわち深度画像上で不動でなくてもよく、例えば、公知の画像追跡手法や画像ヤコビアンによる深度カメラ200の移動を深度画像上での移動に変換する手法を用いることにより、深度画像上で移動してもよい。また、特定範囲Adは、一定でなくてもよく、例えば、目標物410に応じて変更されたり、各タイムステップで変更されたりしてもよい。
次に、目標面検出部313aは、前のタイムステップでの目標位置Ptと同じ座標の参照位置、および当該参照位置に対して周辺座標(隣接座標)となる周辺位置における、現在のタイムステップでの3次元点群データから、現在のタイムステップにおける目標物410の表面の法線方向(ただし、深度カメラ200から離れる方向)に沿う単位ベクトルを参照ベクトルn
oとして設定する(S1103)。目標面検出部313aは、各画素の法線方向に沿った法線ベクトルを、次の式(2)により算出することができる。なお、以下では、添字u
i,v
iは、演算の対象となる点の深度画像上の位置座標を示しており、iは、タイムステップである。
図10は、各画素の法線ベクトルを算出する近接領域Apを示す図である。図10では、対象画素の近接領域Apに含まれる隣接画素にはドットパターンが付与されている。式(2)に示されるような、u方向の二つの隣接画素の三次元位置の差分値(ベクトルV1)と、v方向の二つの隣接画素の三次元位置の差分値(ベクトルV2)と、の外積からは、当該二つのベクトルV1,V2と直交するベクトル、すなわち当該画素における目標面411の法線ベクトルが得られる。よって、目標面検出部313aは、中心座標Poについて、式(2)を適用することにより、参照ベクトルn
oを算出することができる。ベクトルV1,V2は、近接領域Apに沿う二つのベクトルの一例である。なお、位置偏差または方向偏差が所定の判定閾値以下であった場合には、参照ベクトルn
oを、データ記憶部331に記憶されている前のタイムステップでの目標方向Dtに沿った単位ベクトルとしてもよい。この場合、式(2)による参照ベクトルn
oの演算を省略することができる。
次に、目標面検出部313aは、特定範囲Ad内で次の式(3)を満たす点を、目標面411の第一領域A1として検出する(S1104)。
式(3)の左辺は各位置における法線ベクトルと参照ベクトルとの差の大きさを示し、式(3)の右辺は、目標面411として検出する際の条件となる閾値を示す。式(3)により、参照ベクトルnoに対する角度差が閾値よりも小さい法線ベクトルを有する点が、目標面411の第一領域A1を構成する点として検出される。図11は、図10の例について検出された第一領域A1を示す図である。特定範囲Adは、先行検出範囲とも称されうる。
次に、目標面検出部313aは、第一領域A1に含まれるm個の点の3次元点群データから、目標面411に略沿う参照平面の方程式を算出する(S1105)。参照平面の方程式は、次の式(4)で表せる。
目標面検出部313aは、以下の式(5)で表される関数が最小になる自明でない解n
x,n
y,n
z,dを算出する。ここに、[n
x,n
y,n
z](参照平面の法線ベクトル)の大きさは1であり、n
z>0とする。
このため、次の式(6)で表される行列Aを特異値分解により分解し、得られた最も小さい固有値に関する固有ベクトルが、目標面411の第一領域A1に対する参照平面の法線ベクトルと、dである。
得られた固有ベクトルで表される参照平面は、第一領域A1の近似平面の一例である。なお、平面の算出精度を高めるため、式(5)で表される関数に替えて、次の式(7)で表される1ノルムの関数を用いてもよい。
この場合、反復再重み付き最小二乗法による近似解が得られる。
次に、目標面検出部313aは、式(6)の特異値分解によって得られたベクトル[nx,ny,nz]の単位ベクトルを、新たな参照ベクトルnmとする、言い換えると、目標面検出部313aは、参照ベクトルnoを参照ベクトルnmに更新する(S1106)。
次に、目標面検出部313aは、特定範囲Ad外において目標面411の第二領域A2を検出する(S1107)。図12は、図11の例について検出された第二領域A2を示す図である。具体的に、目標面検出部313aは、領域拡張法により、第一領域A1と繋がる第二領域A2を検出することができる。この場合、目標面検出部313aは、目標面411(開始時点では第一領域A1)の端部の画素であるとともに特定範囲Adの端部であるエッジae1の画素と隣接した各画素のうち、追加条件を満たす画素、すなわち次の式(8)および式(9)のうち一方または両方を満たす画素を検出し、当該画素を目標面411に追加する。追加された画素は目標面411の新たなエッジae1の画素となる。このようにして目標面411が拡張される。
ここに、式(8)は、各画素の法線ベクトルと参照ベクトルn
mとの差の大きさが閾値S
c1以下であることを示し、式(9)は、各画素の3次元位置と参照平面との距離の大きさが閾値S
c2以下であることを示している。
さらに、目標面検出部313aは、拡張された目標面411のエッジ画素と隣接した画素についても、次の式(8)および式(9)のうち一方または両方を満たす画素を検出し、当該画素を目標面411に追加する。目標面411の全てのエッジ画素についてこのような拡張処理を実行し、追加条件を満たす画素が無くなった時点で、目標面411の検出を終了する。目標面411のうち第一領域A1の外側に領域拡張法によって拡張された領域が、目標面411の第二領域A2となる。なお、目標面検出部313aは、第二領域A2の検出開始において、特定範囲Adの端部から離れた第一領域A1のエッジae2の画素からは、上述した領域の拡張は実行しない。これは、S1104における第一領域A1の検出において、エッジae2の外側に隣接した目標面411が存在しないことが明らかだからである。
また、目標面検出部313aは、深度画像中の第一領域A1外の全てあるいは特定の一部の領域内の画素について法線ベクトルと参照ベクトルとの差の大きさを算出し、各画素における当該差(当該差の画像)について、ラベリングや領域分割法のような画像処理を実行することにより、第一領域A1と繋がる第二領域A2(以下、第三領域とする)を検出してもよい。また、目標面検出部313aは、深度画像中の第一領域A1外の全てあるいは特定の一部の領域内の画素について3次元位置と参照平面との距離の大きさを算出し、各画素における当該差(当該差の画像)について、ラベリングや領域分割法のような画像処理を実行することにより、第一領域A1と繋がる第二領域A2(以下、第四領域とする)を検出してもよい。あるいは、目標面検出部313aは、第三領域にも含まれるとともに第四領域にも含まれる画素を、第二領域A2として検出してもよい。
次に、移動制御部313は、位置方向算出部313bとして機能し、検出された目標面411について、目標位置Ptおよび目標方向Dtを算出する(S1108)。S1108において、位置方向算出部313bは、例えば、上述したように、検出された目標面411、すなわち検出された第一領域A1および第二領域A2に含まれる全画素の重心(中心、図心)を、目標位置Ptとして設定する。また、S1108において、位置方向算出部313bは、例えば、上述したように、検出された目標面411、すなわち検出された第一領域A1および第二領域A2に含まれる全画素について、特異値分解を用いて算出した近似平面の法線ベクトル(単位ベクトル)を、目標方向Dtに沿う単位ベクトルとして算出してもよいし、検出された目標面411に含まれる各画素の法線ベクトル(単位ベクトル)の例えば平均値のような代表値を、目標方向Dtに沿う単位ベクトルとして算出してもよい。位置方向算出部313bは、位置算出部の一例であるとともに、方向算出部の一例でもある。
次に、移動制御部313は、指令値算出部313cとして機能し、位置偏差および方向偏差が小さくなるようにアクチュエータ113を作動させる指令値を算出する(S1109)。本実施形態では、深度カメラ200がハンド120に取り付けられているため、深度カメラ200に固定されたカメラ座標系では、現在位置Pcが固定されている。よって、ここでは、目標位置Ptが現在位置Pcに近付くよう制御が実行される場合、すなわち、移動制御部313が、目標位置Ptから深度カメラ200の光軸方向と反対方向に距離dcだけ離れた位置Peが、深度画像の中央に対応する位置Pe
*に近付き、かつ目標方向Dtが深度カメラ200の光軸方向に近付くよう、アクチュエータ113を制御する場合について、考察する。なお、距離dcは、深度カメラ200の性能に応じて設定される。一例として、深度カメラ200の測定範囲が10cm~100cmであれば、10cm以上に設定される。
位置Peは、以下の式(10)のように表せる。
ここに、[p
x,p
y,p
z]は、位置P
eの深度カメラ200に固定された3次元空間座標系における位置、[u
p,v
p]は、位置P
eの深度画像上における位置座標、ρ=z
p/d
c、z
pは、位置P
eの深度(距離)である。
また、光軸方向の単位ベクトルは次の式(11)のように表すことができる。
S1109において、指令値算出部313cは、次に、目標方向Dtの法線ベクトルと光軸方向の単位ベクトル[0,0,1]
Tとの外積ベクトルuを回転軸として、目標方向Dtの法線ベクトルと光軸方向の単位ベクトルとの間の角度θ(角度偏差)を、これらのベクトルの内積から算出する。この場合、外積は以下の式(12)となり、内積は以下の式(13)となる。
目標方向Dtの法線ベクトルと光軸方向の単位ベクトル[0,0,1]
Tとの偏差は、以下の式(14),(15)のように表すことができる。
S1109において、指令値算出部313cは、次に、ハンド120の移動に対するアクチュエータ113への指令値v(速度指令値)を、以下の式(16)のように算出する。これについては、非特許文献1に記載されている。
ここに、
が成り立つ。
また、λは視覚サーボの収束速度を調整する正のスカラーゲインであり、I
3は(3×3)の単位行列である。P
e
*は、深度画像の中心に対応する位置であるため、
P
e
*=M
c
-1[w/2,h/2,1]
T ・・・(17)
と表せる。
次に、移動制御部313は、偏差を閾値と比較する(S1110)。式(16)のベクトルeは、位置偏差と方向偏差とを含んでいる。S1110において、移動制御部313は、位置偏差とそれに対応する位置閾値とを比較するとともに、方向偏差とそれに対応する方向閾値とを比較する。移動制御部313は、位置偏差が位置閾値以下であるとともに、方向偏差が方向閾値以下である場合には(S1110でYes)、移動制御を終了する。他方、移動制御部313は、位置偏差が位置閾値よりも大きいかあるいは方向偏差が方向閾値よりも大きい場合には(S1110でNo)、目標位置Ptのデータ(例えば、深度画像における座標、深度値、および3次元位置)、および目標方向Dtのデータ(例えば、法線ベクトルの値)を、データ記憶部331に記憶する(S1111)。上述したように、データ記憶部331に記憶されたデータは、次のタイムステップでの移動制御で用いられる。S1111の後、次のタイムステップでのS11が実行される。言い換えると、次のタイムステップでの移動制御が開始される。
以上、説明したように、本実施形態では、移動制御部313(制御部310)は、深度画像から検出された目標面411について所定の目標位置Pt(第一位置)および目標方向Dt(第一方向)を算出し、移動制御部313は、ハンド120(可動部材)に対して固定された現在位置Pc(第二位置)と目標位置Ptとの位置偏差が小さくなるとともに、ハンド120に対して固定された現在方向Dc(第二方向)と目標方向Dtとの方向偏差が小さくなるよう、アクチュエータ113を制御する。このような構成によれば、通常のビジュアルサーボに必要な目標物の画像が不要となるため、例えば、未知の物体のように目標物の画像が存在しない場合や、無地の箱のように画像処理による特徴量の抽出が難しいような場合、識別可能な目標面の画像が得られ難いような場合等にあっても、制御装置300は、深度画像から得られた目標面411の位置および方向に基づくサーボ制御を実行することにより、ハンド120を、より容易に、目標位置Ptへ位置させるとともに目標方向Dtに向けさせることができる。
また、本実施形態では、位置方向算出部313b(方向算出部)は、検出された目標面411の近似平面の法線方向として、目標方向Dtを算出する。このような構成によれば、目標面411が、例えば、平面や、平面に略沿う面、平面に略沿って微小な凹凸を有する面、曲率半径が比較的大きい曲面のような、平面から大きく外れない面であるような場合に、比較的簡単な演算によって目標方向Dtを設定することができるというメリットが得られる。
また、本実施形態では、位置方向算出部313bは、検出された目標面411内の各画素について、当該画素と隣接する複数の画素を含む近接領域Apの三次元位置から目標面411の法線方向を算出し、検出された目標面411内の複数の画素における法線方向の代表値として、目標方向Dtを算出する。このような構成によれば、目標面411が、例えば、平面や、平面に略沿う面、平面に略沿って微小な凹凸を有する面、曲率半径が比較的大きい曲面のような、平面から大きく外れない面であるような場合に、比較的簡単な演算によって目標方向Dtを設定することができるというメリットが得られる。
また、本実施形態では、位置方向算出部313bは、近接領域Apに沿う二つのベクトルV1,V2の外積から目標面411の法線方向を算出する。このような構成によれば、例えば、比較的簡単な演算によって法線方向を算出することができる。
また、本実施形態では、目標面検出部313aは、深度画像の全域よりも狭い特定範囲Ad内において目標面411の第一領域A1を検出するとともに、特定範囲Ad外において第一領域A1と繋がる第二領域A2を検出する。このような構成によれば、例えば、深度画像の全域について目標面411の検出を実行する場合や、当初検出された1点あるいは狭い領域から拡張して目標面411の全域を出する場合に比べて、目標面411をより迅速に検出することができる。
また、本実施形態では、後のタイムステップ(第二時刻)において、前のタイムステップ(第一時刻)で検出された目標面411内の少なくとも一点の深度画像における座標に基づいて設定された特定範囲Ad内において第一領域A1を検出し、特定範囲Ad外において第二領域A2を検出する。このような構成によれば、前のタイムステップで検出された目標面411の座標に基づいて後のタイムステップでの特定範囲Adが設定されるので、特定範囲Adが設定されない場合に比べて、目標面411をより迅速に検出することができる。なお、前のタイムステップは、直前のタイムステップよりも前のタイムステップであってもよい。
[第2実施形態]
図13は、本実施形態のハンド120Aの側面図である。図13に示されるように、本実施形態では、ハンド120Aは、二つのサクションカップ120aを有しており、一つまたは二つのサクションカップ120aによって目標面411を吸着保持することにより、目標物410を把持する。
目標物410が比較的軽いような場合や、目標物410が比較的小さいような場合には、二つのサクションカップ120aのうちの一つによって目標物410を把持することができる。目標物410の大きさまたは重さが既知あるいは検出可能であり、少なくとも一方がそれぞれの閾値以下である場合、現在位置Pcを二つのサクションカップ120aのうちいずれか一つのサクションカップ120aによる目標面411の吸着位置に設定するとともに、上記式(17)に替えて、例えば、以下の式(18)を用いる。
Pe
*=Mc
-1[w/2,h/2,1]T+[0,wc/dc,0]T
・・・(18)
ここに、wc/dcは、光軸方向のオフセット長であり、wcは、サクションカップ120aと深度カメラ200との距離である。
他方、二つのサクションカップ120aによって目標物410を把持する場合には、例えば、位置方向算出部313bは、検出された目標面411の目標方向Dtに沿う回転軸回りの、目標面411の代表姿勢(第二目標方向)とハンド120の所定姿勢(基準方向)との間の角度偏差を算出する。
図14は、この場合における制御装置300による処理の手順を示すフローチャートであり、図15は、角度偏差を示す図である。図15に例示されるように、本実施形態における基準方向は、例えば、二つのサクションカップ120aの中心を通り現在方向Dcと直交する線分(基準線分)が延びる方向Dclに設定され、移動制御部313は、検出された目標面411の長手方向Dtlを第二目標方向とし、当該長手方向Dtlと方向Dclとの角度偏差δが小さくなるよう、アクチュエータ113を制御する。第二目標方向は、検出された目標面411から所定のアルゴリズムにしたがって一義的に定められる。長手方向Dtl(第二目標方向)は、目標方向Dt(図5)と直交している。目標方向Dtは、第一目標方向とも称されうる。
図14と図8とを比較すれば明らかとなるように、本実施形態では、第一実施形態のS1108に対して、角度偏差の算出が追加されている。S1108において、位置方向算出部313bは、検出された目標面411の長手方向Dtl(第二目標方向)を、深度カメラ200の2次元座標系における、検出された目標面411に対応した位置座標に対する演算処理により算出する。これにより、第二目標方向および角度偏差の演算処理を比較的容易に実行することができる。これは、ハンド120の基準方向が深度カメラ200の2次元座標系において固定されているからである。また、位置方向算出部313bは、主成分分析を用いて、長手方向Dtl(第二目標方向)を算出する。位置方向算出部313bは、角度偏差算出部の一例である。
具体的に、S1108において、位置方向算出部313bは、検出された目標面411の深度画像における各画素の座標値(u
i,v
i)とその中心値(u
m,v
m)との差を算出する。S1108において、位置方向算出部313bは、次に、算出された差を含む次の式(19)のような行列Aを構成する。
S1108において、位置方向算出部313bは、次に、特異値分解により行列Aを以下の式(20)のように分解する。
A=UDV
T ・・・(20)
これにより、位置方向算出部313bは、第一主成分の方向であるVの第一列ベクトル
を得る。
S1108において、位置方向算出部313bは、次に、深度カメラ200の2次元座標系に当該2次元座標系と直交した1次元座標を加えた3次元空間上でのベクトルを以下の式(21)のように構成する。
S1108において、位置方向算出部313bは、次に、長手方向Dtlと方向Dclとの角度偏差として、式(21)のベクトルと、次の式(22)で表されるベクトルとの偏差を算出する。
式(21)のベクトルと、式(22)のベクトルとの偏差は、以下の式(23)の外積と式(24)の内積とを用いて、式(25)として算出することができる。
S1108において、指令値算出部313cは、以下の式(26)によって示される偏差θuが小さくなるよう、指令値を算出する。
なお、式(26)の偏差θuには、目標方向Dtと光軸方向の単位ベクトル[0,0,1]
Tとの偏差も含まれる。
以上、説明したように、本実施形態によれば、位置方向算出部313b(角度偏差算出部)は、目標方向Dt(第一方向)に沿う回転軸回りの、ハンド120(可動部材)の方向Dcl(基準方向)と検出された目標面411の長手方向Dtl(第二目標方向、所定姿勢)との角度偏差を検出し、移動制御部313は、さらに当該角度偏差が小さくなるよう、アクチュエータ113を制御する。このような構成によれば、制御装置300は、ハンド120を、目標面411の向きや、ハンド120のタイプ、ハンド120のスペック等に応じて、目標物410をより把持しやすい方向に、向けさせることができる。
なお、本実施形態で開示された第二目標方向の検出手法は、ハンド120が例えば挟持のような別の把持方法によって目標物410を把持するような構成にも、適用可能である。その場合、位置方向算出部313bは、例えば、第二目標方向としての目標面411の短手方向に対する基準線分の方向(基準方向)の角度偏差を算出し、指令値算出部313cは、当該角度偏差が小さくなるよう、指令値を算出することができる。この場合には、例えば、内積により、主成分分析によって得られる第二主成分ベクトルと、基準方向の単位ベクトルとの相対角度が角度偏差となる。
[第3実施形態]
[物体ハンドリングシステムの全体概要]
図16は、学習済みのディープニューラルネットワーク(DNN)で構成された目標決定部のブロック図である。DNNは、機械学習の一つである。本実施形態の作動システム1は、第1実施形態の作動システム1の目標物決定部312に替えて、機械学習を用いた演算処理を実行する目標物決定部312Aを備えている。目標物決定部312Aは、信号処理部312a、DNN型把持計画部312b、および出力選択部312cを有している。
信号処理部312aには、3次元情報に変換可能な撮像情報が入力される。ここで、3次元情報に変換可能な撮像情報とは、例えば、深度画像や、視差若しくは超音波の計測により距離情報の取得が可能な複数枚の画像データ、ポイントクラウドのような3次元点群情報である。信号処理部312aは、入力された撮像情報のデータ型式を、DNN型把持計画部312bが演算処理可能な型式のデータ型式に変換する。この変換には、例えば、多視点画像から距離画像への変換のようなデータ形式の変換や、画像サイズの縮小拡大、アスペクトやカメラ歪みの補正などの画像処理、等が含まれる。
DNN型把持計画部312bは、ハンド120で把持可能な把持姿勢候補の座標に加え、算出した座標の有効性を示す評価値、および算出した座標における把持成否予想ラベル情報のうちのいずれか、または両方の情報を出力する。
出力選択部312cは、入力された複数の情報から、最終的に移動制御部313に入力する把持点のX,Y座標等の情報を選択し、出力する。この選択には、DNN型把持計画部312bから出力された把持姿勢候補の中から最も評価値の高い把持姿勢候補を選択する方法や、高い評価値が集中する領域の中心を選択する方法などがある。
図17は、入力画像に対するDNN型把持計画部312bによる出力結果のマッピングを示す説明図である。画像Iiは、入力画像であり、ここでは、一例として、深度カメラ200で撮影された深度画像である。画像Imは、入力画像IiにDNN型把持計画部312bによる出力結果が重畳されたマッピング画像Imである。マッピング画像Imでは、入力画像Ii中の把持姿勢候補のそれぞれに、Good(把持可能、丸形)およびBad(把持不可能、菱形)の把持成否予想ラベルが付与されるとともに、評価値が付与されている。白い丸形はGoodの把持姿勢候補のうち、評価値が最も高いものである。なお、図17の例では、DNN型把持計画部312bが、限定的な範囲内の把持姿勢候補を評価する例が示されているが、これには限定されず、DNN型把持計画部312bは、入力画像Iiの全体に対して評価付けを行い、全画素に対してラベルや評価値を付与してもよい。
図18は、目標物決定部312Aによる初期把持姿勢および目標位置の決定の手順を示すフローチャートである。図18に示されるように、目標物決定部312Aは、まず、入力画像Iiとしての深度画像を取得する(S121)。S121において、信号処理部312aは、データの変換を実行する。次に、DNN型把持計画部312bは、把持姿勢候補を取得する(S122)。次に、出力選択部312cは、複数の把持姿勢候補の中から評価値に基づいて初期把持姿勢を決定するとともに当該初期把持姿勢に対応した目標位置を決定する(S123)。
図19は、DNN型把持計画部312bが用いるDNNを作成する学習システム315の構成を示すブロック図である。図19に示されるように、学習システム315は、環境条件入力部315a、物理シミュレータ部315b、画像取得部315c、ハンド条件入力部315d、把持姿勢候補生成部315e、およびDNN学習処理部315fを有している。環境条件入力部315aは、外部システムまたはユーザインタフェースを通して、ハンドリング対象の物体の基本形状や、出現比率、物体が置かれた周囲環境の情報等を、取得し、物理シミュレータ部315bに入力する。物理シミュレータ部315bは、設定された環境条件をベースとし、ランダムな要素を加味して、ハンドリング対象となる環境モデルを生成する。
図20Aは、物理シミュレータ部315bが計算空間上に生成したバラ積み状態のバーチャルデータモデルを示す斜視図であり、図20Bは、物理シミュレータ部315bが生成したバラ積み状態のバーチャルデータモデルから生成した深度画像の例である。画像取得部315cは、環境モデルとしてのバーチャルデータモデルに対し、深度カメラ200のような撮像処理を模擬した処理を実行し、深度画像を取得する。
ハンド条件入力部315dは、外部システムまたはユーザインタフェースを通して、ハンドリングを実行するハンド120の条件、例えば、ハンド120のサイズや、把持可能サイズを設定する。具体的に、ハンド条件入力部315dは、例えば、ハンド120が吸着ハンドである場合には、ハンド条件として、吸着パッドの位置や、パッドの大きさなどを設定し、ハンド120が挟持ハンドである場合には、ハンド条件として、挟持幅や、差し込み量などを設定する。ハンド条件は、物理的特性の一例である。
把持姿勢候補生成部315eは、入力されたハンド条件と物理シミュレータ部315bが生成した環境モデルから、把持姿勢候補の情報、具体的には、例えば、把持姿勢候補の座標、把持姿勢候補の把持成否予想ラベル情報、把持姿勢候補の有効性を示す評価値等を生成する。図20Cは、把持姿勢候補情報の例を示す。
DNN学習処理部315fは、入力された画像情報と把持姿勢候補を用いて教示または深層学習を実行することにより、DNNを生成する。DNN型把持計画部312bは、DNN学習処理部315fが生成したDNNを用いて、演算処理を実行する。
以上説明したように、本実施形態では、目標物決定部312Aは、撮像された深度画像に基づいて、物が置かれた状態やハンドの特性など複数の条件を加味した初期把持姿勢および目標位置を出力し、移動制御部313は、当該目標物決定部312Aが出力した初期把持姿勢および目標位置を起点として移動制御を実行する。このように、深度画像を用いた目標物決定部312Aおよび移動制御部313を備える作動システム1によれば、例えば、外部システムや人間が、把持候補や把持候補となるゴール画像(RGB画像)を別途入力する必要が無く、新規の未知な物体に対しても、妥当な把持やハンドリングが実現される、という効果が得られる。
また、本実施形態によれば、例えば、目標物決定部312Aは、把持姿勢候補の生成にニューラルネットワークを用いるため、多様な条件を設定できるとともに、候補算出の処理時間が比較的短いという効果が得られる。
さらに、本実施形態によれば、例えば、学習システム315は、ニューラルネットワークの学習時において、シミュレータで生成した環境モデルから、入力となる深度画像と、教示データとを自動的に生成し、教示あり学習を行うことにより、実環境やゴール画像などのカラー画像がない状況でも、目標物決定部312AのDNNを生成することができる、という効果が得られる。
[第4実施形態]
図21は、第4実施形態のピッキングシステム1000の構成図である。図21に示されるように、ピッキングシステム1000は、ピッキングオーダー等の処理を行う上位システム2000と接続されるとともに、ピッキングロボット管理部1001、ピッキングロボット制御部1002、作動システム1の一例であるピッキングロボットシステム1003、収納箱搬送部1004、送付箱搬送部1005、収納箱撮影部1006、および送付箱撮影部1007を備えている。収納箱1008は、ビンとも称され、送付箱1009は、トートとも称されうる。
上位システム2000は、送付する荷物を決定し、自動倉庫等の外部倉庫システムから送付する物品が収納されている収納箱1008の掃き出し処理を実施し、ピッキングシステム1000に対し、送付箱1009へのピッキングオーダーを出力する。ピッキングシステム1000では、ピッキングロボット管理部1001がピッキングオーダーを受信し、ピッキングシステム1000が処理する対象物品個数を取得し、対象物品の重量や外形サイズ、対応したハンドや処理パラメータ等の物品関連情報を決定して、それらの情報をピッキングロボット制御部1002に入力する。ピッキングロボット制御部1002では、物品関連情報に基づいて、ピッキング及び箱詰め作業を行うよう、ピッキングロボットシステム1003を制御する。ピッキングロボットシステム1003は、アーム111や、関節112、ハンド120、ツールチェンジャ部、力センサ、接触センサ、把持関節、吸着パッド等を備えている。
収納箱搬送部1004はピッキングロボット管理部1001の情報に従い、外部倉庫システムから吐き出された収納箱1008をピッキングロボットシステム1003の処理範囲内に引き込む。送付箱搬送部1005は、ピッキングの開始には、空箱の引き込みを行い、搬送箱が満杯になった状態、またはピッキングが終了した状態になった場合には、物品が詰め込まれた送付箱1009の出荷処理を実行する。収納箱撮影部1006は、収納箱1008がピッキングロボットシステム1003の稼働範囲に搬送された状態において、収納箱1008の深度画像または3次元状態を撮影する機能を有している。送付箱撮影部1007は、送付箱1009がピッキングロボットシステム1003の稼働範囲に搬送された状態に置いて、送付箱1009の深度画像または3次元状態を撮影する機能を有している。
図22は、ピッキングシステム1000におけるピッキングの手順を示すフローチャートである。ピッキングシステム1000では、ピッキングロボット管理部1001がピッキングオーダーを受信すると、ピッキングを開始する。
S201において、ピッキングロボット管理部1001はデータベースからピッキングオーダーで指定された物品の情報を取得する。取得した情報から、ハンド120の大きさや、吸着あるいは挟持などの把持方法に基づいて、最適なハンドを決定する。そして、最適なハンド120を持ったピッキングロボットシステム1003にピッキング指示を出すとともに、収納箱搬送部1004を制御して、オーダーされた物品が収納された収納箱1008を、決定されたピッキングロボットシステム1003に届ける。
S202において、ピッキングロボットシステム1003は収納箱撮影部1006を用いて、引き込まれた収納箱1008の撮影を実施し画像を取得する。ピッキングロボットシステム1003の目標物決定部312または目標物決定部312Aにより、取得した画像からピッキングの対象となる物品もしくは物品の把持面を決定する。
S203において、ピッキングロボットシステム1003は、事前に決定された位置情報によりアクチュエータ113,114を制御して、ハンド120を収納箱1008の近くの所定の位置に移動する。
S204において、ピッキングロボットシステム1003は、収納箱撮影部1006のカメラを用いて、S202で得られたピッキングの対象となる物品もしくは物品の把持面が、ハンド120に設けられた深度カメラ200の視野に入るよう、位置制御を実行する。
S205において、ピッキングロボットシステム1003は、ハンド120に設けられた深度カメラを用いて、図3で説明されたフローに従って、ハンド120を対象物品に近づける。
S206において、ピッキングロボットシステム1003は、ハンド120に設けられた力センサの検出値、またはアクチュエータ113,114としてのモータのエンコーダ情報若しくは電流制御量等を用いて、ハンド120にかかる力を計測し、力制御を用いて対象物品にハンド120の突き当てを行い、ハンド120の手先の吸着パッド等を対象物品に倣わせ、対象物品の把持を実行する。
S207において、ピッキングロボットシステム1003は、あらかじめ決められた位置情報に従って、アーム111およびハンド120を動かし、把持物品を送付箱1009に近付くように移動する。
S208において、送付箱撮影部1007は、送付箱1009を撮影する。ピッキングロボットシステム1003は、先に置かれた物品等の状態をセンシングし、箱詰め可能な位置を決定する。
S209において、ピッキングロボットシステム1003は、箱詰め可能な位置情報を用いて、把持物品の位置制御による移動制御を実行し、把持物品を箱詰め可能な位置付近まで移動する。
S210において、ピッキングロボットシステム1003は、力制御によりハンド120の移動を制御することにより把持物品を送付箱1009の内面に押し当て、所定の力に達した状態で、物品の把持を解除し、物品を送付箱1009内に置き、箱詰めする。
S211において、ピッキングロボットシステム1003は、ピッキング終了か否かを判定する。オーダーされた物品で未処理のものが残っている場合には、S202からピッキング処理を再開する。オーダーされた物品の処理をすべて終了している場合には、S212へ移行する。
S212において、ピッキングロボットシステム1003は、アーム111およびハンド120を初期位置に移動するとともに、送付箱1009の出荷を行い、オーダーに対するピッキング処理を完了する。
以上のように、本実施形態では、作動システム1としてのピッキングロボットシステム1003を有したピッキングシステム1000について説明を行ったが、上記実施形態の構成や制御は、例えば、ロボットを用いて部品を保持する組立作業や、ロボットを用いた物体を把持したり搬送したりするフィールドでの活用、ロボットに取り付けたセンサ等のエンドエフェクタを物体に近づけてセンシングを行うような検査などのような、他のシステムにも適用することができる。
以上、本発明の実施形態を例示したが、上記実施形態は一例であって、発明の範囲を限定することは意図していない。実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、組み合わせ、変更を行うことができる。実施形態は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。また、実施形態の構成や形状は、部分的に入れ替えて実施することも可能である。また、各構成や形状等のスペック(構造や、種類、方向、形式、大きさ、長さ、幅、厚さ、高さ、角度、数、配置、位置、材質等)は、適宜に変更して実施することができる。
例えば、深度カメラの位置や数は、上記実施形態には限定されず、2個以上であってもよいし、他の位置でもよい。また、処理対象物(目標物)は、直方体でなくてもよく、種々の形状を有しうる。また、目標面は完全な平面で無くてもよく、目標面検出部における検出基準(閾値)の設定により、例えば、目標面が凹凸面や緩やかな曲面であるような場合にあっても、上記実施形態の構成および方法を適用することができる。また、記憶部には、前のステップでの目標面に含まれる少なくとも一点の座標に替えて、既に算出された特定範囲を示すデータや、後のタイムステップで特定範囲を得る元となるデータが記憶されてもよい。