(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-01
(45)【発行日】2024-07-09
(54)【発明の名称】制御装置、ロボット、制御方法、プログラム
(51)【国際特許分類】
B25J 13/08 20060101AFI20240702BHJP
【FI】
B25J13/08 A
(21)【出願番号】P 2020179106
(22)【出願日】2020-10-26
【審査請求日】2023-08-08
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110002860
【氏名又は名称】弁理士法人秀和特許事務所
(72)【発明者】
【氏名】殿谷 徳和
(72)【発明者】
【氏名】松本 慎也
【審査官】樋口 幸太郎
(56)【参考文献】
【文献】特開2003-166824(JP,A)
【文献】特開2013-033356(JP,A)
【文献】国際公開第2020/183711(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 13/08
(57)【特許請求の範囲】
【請求項1】
3次元センサを有するロボットの制御装置であって、
探索領域に対する前記3次元センサの計測範囲を移動するように前記ロボットを制御する動作制御手段と、
前記3次元センサによる計測結果に基づいて、前記探索領域における各点の探索状況を示すマップ情報を更新するマップ取得手段と、
を有し、
前記動作制御手段は、前記探索領域内の局所的な範囲のマップ情報を更新するように前記3次元センサの計測範囲を移動させる第1の探索処理と、前記第1の探索処理で更新を行っていた前記局所的な範囲とは異なる範囲のマップ情報を更新するために、前記局所的な範囲から離れた位置に前記3次元センサの計測範囲を移動させる第2の探索処理と、を実行
し、
前記動作制御手段は、前記第2の探索処理では、直前の計測範囲と重ならない範囲に前記3次元センサの計測範囲を移動させること、前記3次元センサの視野範囲における未知領域の数に基づき前記3次元センサの計測範囲を移動させること、前記3次元センサを移動させるための前記ロボットの移動しやすさに基づき前記3次元センサの計測範囲を移動させること、の少なくともいずれかを実行し、
前記未知領域とは、物体が存在するか否かが判定されていない領域である、
ことを特徴とする制御装置。
【請求項2】
前記動作制御手段は、前記第1の探索処理では、
前記直前の計測範囲と重なりを有する範囲に前記3次元センサの計測範囲を移動させることと、物体が存在するか否かの信頼度に応じたエントロピーに基づき前記3次元センサの計測範囲を移動させること、前記3次元センサの視野範囲における前記3次元センサと物体領域との間に存在する
前記未知領域の数に基づき前記3次元センサの計測範囲を移動させること、の少なくともいずれかを実行し、
前記物体領域とは、物体が存在すると判定された領域であ
る、
ことを特徴とする請求項1に記載の制御装置。
【請求項3】
前記動作制御手段は、
前記第1の探索処理では、
前記直前の計測範囲と重なりを有する範囲に前記3次元セン
サの計測範囲を移動させ、
前記第2の探索処理では、前記直前の計測範囲と重ならない範囲に前記3次元センサの計測範囲を移動させる、
ことを特徴とする請求項1
または2に記載の制御装置。
【請求項4】
前記マップ情報は、前記探索状況として、各点に対応する領域が、物体が存在するか否かが判定された既知領域と、
前記未知領域とのいずれであるかを少なくとも示す、
ことを特徴とする請求項1から
3のいずれか1項に記載の制御装置。
【請求項5】
前記動作制御手段は、前記マップ取得手段による前記マップ情報の更新量が閾値よりも大きい場合には前記第1の探索処理を実行し、前記更新量が閾値以下である場合には前記第2の探索処理を実行し、
前記更新量は、
前記未知領域が
前記既知領域に更新される数である、
ことを特徴とする請求項
4に記載の制御装置。
【請求項6】
前記動作制御手段は、前記第1の探索処理では、
前記直前の計測範囲とそれぞれが重なりを有する複数の範囲のうち
前記未知領域を最も多く含む範囲に前記3次元センサの計測範囲を移動させる、
ことを特徴とする請求項
4または
5に記載の制御装置。
【請求項7】
前記マップ情報は、各点に対応する領域に物体が存在するか否かの信頼度の情報を含み、
前記動作制御手段は、前記第1の探索処理では、
前記直前の計測範囲とそれぞれが重なりを有する複数の範囲のうちエントロピーの代表値が最も高い範囲に前記3次元センサの計測範囲を移動させ、
前記エントロピーは、前記信頼度の値が0.5に近いほど高い、
ことを特徴とする請求項
4または
5に記載の制御装置。
【請求項8】
前記代表値は、平均値または中央値または最頻値である、
ことを特徴とする請求項
7に記載の制御装置。
【請求項9】
前記動作制御手段は、前記第2の探索処理では、複数の候補位置それぞれでの前記3次元センサの視野範囲における
前記未知領域の数に基づき、前記3次元センサの計測範囲を移動させる、
ことを特徴とする請求項
5から
8のいずれか1項に記載の制御装置。
【請求項10】
前記動作制御手段は、前記第2の探索処理では、前記複数の候補位置それぞれでの前記3次元センサの視野範囲のうち
前記未知領域を最も多く含む範囲に、前記3次元センサの計測範囲を移動させる、
ことを特徴とする請求項
9に記載の制御装置。
【請求項11】
前記マップ情報は、
前記既知領域として、物体が存在すると判定された物体領域と、物体が存在しないと判定された空領域とのいずれかを示し、
前記動作制御手段は、前記第2の探索処理では、前記複数の候補位置それぞれでの前記3次元センサの視野範囲のうち、前記3次元センサと
前記物体領域との間に
前記未知領域を最も多く含む範囲に、前記3次元センサの計測範囲を移動させる、
ことを特徴とする請求項
9に記載の制御装置。
【請求項12】
前記動作制御手段は、前記第2の探索処理では、さらに、前記3次元センサを移動させるための前記ロボットの移動しやすさに基づき、前記3次元センサの計測範囲を移動させ
る、
ことを特徴とする請求項
9に記載の制御装置。
【請求項13】
前記マップ取得手段は、前記探索領域の各点に対応する領域ごとに
前記3次元センサが計測した結果に基づき、初期情報としての前記マップ情報を取得する、
ことを特徴とする請求項1から1
2のいずれか1項に記載の制御装置。
【請求項14】
前記マップ取得手段は、前記探索領域のうち互いに重複しない複数の範囲を前記3次元センサが計測した結果に基づき、初期情報としての前記マップ情報を取得する、
ことを特徴とする請求項1から1
2のいずれか1項に記載の制御装置。
【請求項15】
請求項1から
14のいずれか1項に記載の制御装置と、
探索領域を計測する3次元センサと、
を有することを特徴とするロボット。
【請求項16】
3次元センサを有するロボットの制御方法であって、
探索領域に対する前記3次元センサの計測範囲を移動するように前記ロボットを制御する動作制御ステップと、
前記3次元センサによる計測結果に基づいて、前記探索領域における各点の探索状況を示すマップ情報を更新するマップ取得ステップと、
を有し
前記動作制御ステップでは、前記探索領域内の局所的な範囲のマップ情報を更新するように前記3次元センサの計測範囲を移動させる第1の探索処理と、前記第1の探索処理で更新を行っていた前記局所的な範囲とは異なる範囲のマップ情報を更新するために、前記局所的な範囲から離れた位置に前記3次元センサの計測範囲を移動させる第2の探索処理と、を実行
し、
前記動作制御ステップにおける前記第2の探索処理では、直前の計測範囲と重ならない範囲に前記3次元センサの計測範囲を移動させること、前記3次元センサの視野範囲における未知領域の数に基づき前記3次元センサの計測範囲を移動させること、前記3次元センサを移動させるための前記ロボットの移動しやすさに基づき前記3次元センサの計測範囲を移動させること、の少なくともいずれかを実行し、
前記未知領域とは、物体が存在するか否かが判定されていない領域である、
ことを特徴とする制御方法。
【請求項17】
請求項
16に記載の制御方法の各ステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置、ロボット、制御方法、プログラムに関する。
【背景技術】
【0002】
従来、物を製造する現場などにおいて、ロボットなどが動くことが可能な範囲を予め設定しておき、その範囲をロボットが動くことによってロボットの安全な動作が実現されている。
【0003】
特許文献1には、ロボットが周辺機器などの物体と干渉しないように、ロボットの動作範囲を設定するロボット制御装置が開示されている。特許文献1では、ロボット制御装置は、ロボットに設けられた深度センサ(3次元センサ)が物体の表面上の各点の深度データを取得することにより、物体の領域(干渉領域)を判定している。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1では、ロボット制御装置が、ロボットの姿勢を変更することにより、深度センサの位置を変更しながら深度データを取得することが開示されている。そして、ロボット制御装置は、深度データに基づき物体の領域(干渉領域)を判定している。しかしながら、深度センサの位置を決定する方法の記載がないため、例えば、深度データの取得具合をユーザが確認しながら、当該ユーザが深度センサの位置を決定する必要がある。
【0006】
これに対して、探索をする対象の領域(探索領域)を格子状に分割し、端から順に各格子をセンサが探索するようにセンサの位置を移動させて、探索領域の全体を逐次探索する方法が考えられる。しかし、この方法では、探索領域の探索に時間を要し、効率的ではない。
【0007】
そこで、本発明は、領域の探索を効率的に実施することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するために本発明は、以下の構成を採用する。
【0009】
すなわち、本発明の一側面に係る3次元センサを有するロボットの制御装置は、探索領域に対する前記3次元センサの計測範囲を移動するように前記ロボットを制御する動作制御手段と、前記3次元センサによる計測結果に基づいて、前記探索領域における各点の探索状況を示すマップ情報を更新するマップ取得手段と、を有し、前記動作制御手段は、前記探索領域内の局所的な範囲のマップ情報を更新するように前記3次元センサの計測範囲を移動させる第1の探索処理と、前記第1の探索処理で更新を行っていた前記局所的な範囲とは異なる範囲のマップ情報を更新するために、前記局所的な範囲から離れた位置に前記3次元センサの計測範囲を移動させる第2の探索処理と、を実行する、ことを特徴とする制御装置である。
【0010】
上記構成によれば、局所的な探索と大域的な探索が切り替わり、効果的な範囲を探索するように3次元センサが制御されるため、より効率的に探索領域を探索できるようになる
。
【0011】
上記制御装置において、前記動作制御手段は、前記第1の探索処理では、直前の計測範囲と重なりを有する範囲に前記3次元センサの計測範囲を移動させることと、物体が存在するか否かの信頼度に応じたエントロピーに基づき前記3次元センサの計測範囲を移動させること、前記3次元センサの視野範囲における前記3次元センサと物体領域との間に存在する未知領域の数に基づき前記3次元センサの計測範囲を移動させること、の少なくともいずれかを実行し、前記物体領域とは、物体が存在すると判定された領域であり、前記未知領域とは、物体が存在するか否かが判定されていない領域であってもよい。これによれば、第1の探索処理において、或る範囲を詳細に探索しやすくなる(局所的な探索がしやすくなる)。
【0012】
上記制御装置において、前記動作制御手段は、前記第2の探索処理では、直前の計測範囲と重ならない範囲に前記3次元センサの計測範囲を移動させること、前記3次元センサの視野範囲における未知領域の数に基づき前記3次元センサの計測範囲を移動させること、前記3次元センサを移動させるための前記ロボットの移動しやすさに基づき前記3次元センサの計測範囲を移動させること、の少なくともいずれかを実行し、前記未知領域とは、物体が存在するか否かが判定されていない領域であってもよい。これによれば、第2の探索処理において、第1の探索処理よりも広い範囲を大まかに探索しやすくなる(大域的な探索がしやすくなる)。
【0013】
上記制御装置において、前記動作制御手段は、前記第1の探索処理では直前の計測範囲と重なりを有する範囲に前記3次元センサの計測範囲を移動させ、前記第2の探索処理では前記直前の計測範囲と重ならない範囲に前記3次元センサの計測範囲を移動させてもよい。これによれば、第1の探索処理では直前の計測範囲およびその周囲を、第2の探索処理ではそれよりも離れた範囲を計測することができるため、より効率的な探索が実現できる。
【0014】
上記制御装置において、前記マップ情報は、前記探索状況として、各点に対応する領域が、物体が存在するか否かが判定された既知領域と、物体が存在するか否かが判定されていない未知領域とのいずれであるかを少なくとも示してもよい。
【0015】
前記動作制御手段は、前記マップ取得手段による前記マップ情報の更新量が閾値よりも大きい場合には前記第1の探索処理を実行し、前記更新量が閾値以下である場合には前記第2の探索処理を実行し、前記更新量は、未知領域が既知領域に更新される数であってもよい。これによれば、或る計測範囲におけるマップ更新が十分に可能である場合には第1の探索処理が行われ、そうでない場合には第2の探索処理が行われるので、効率よくマップ情報を更新することが可能になる。具体的には、或る計測範囲に対する探索によるマップ情報の更新量が少なくなっても、第2の探索によって他の範囲を探索するように3次元センサが制御されるため、効率的にマップ情報の更新が行える。
【0016】
上記制御装置において、前記動作制御手段は、前記第1の探索処理では、直前の計測範囲とそれぞれが重なりを有する複数の範囲のうち未知領域を最も多く含む範囲に前記3次元センサの計測範囲を移動させてもよい。これによれば、探索が十分でない範囲を優先して探索するように制御されるため、より効果的な探索を実現できる。
【0017】
上記制御装置において、前記マップ情報は、各点に対応する領域に物体が存在するか否かの信頼度の情報を含み、前記動作制御手段は、前記第1の探索処理では、直前の計測範囲とそれぞれが重なりを有する複数の範囲のうちエントロピーの代表値が最も高い範囲に前記3次元センサの計測範囲を移動させ、前記エントロピーは、前記信頼度の値が0.5
に近いほど高くてもよい。ここで、前記代表値は、平均値または中央値または最頻値であってもよい。これによれば、より多くの情報(詳細な情報)から探索が十分でない範囲を決定し、当該範囲を優先して探索するように制御されるため、より効果的な探索を実現できる。
【0018】
上記制御装置において、前記動作制御手段は、前記第2の探索処理では、複数の候補位置それぞれでの前記3次元センサの視野範囲における未知領域の数に基づき、前記3次元センサの計測範囲を移動させてもよい。これによれば、探索が十分でない範囲を優先して探索するように制御されるため、より効果的な探索を実現できる。
【0019】
上記制御装置において、前記動作制御手段は、前記第2の探索処理では、前記複数の候補位置それぞれでの前記3次元センサの視野範囲のうち、未知領域を最も多く含む範囲に、前記3次元センサの計測範囲を移動させてもよい。
【0020】
上記制御装置において、前記マップ情報は、既知領域として、物体が存在すると判定された物体領域と、物体が存在しないと判定された空領域とのいずれかを示し、前記動作制御手段は、前記第2の探索処理では、前記複数の候補位置それぞれでの前記3次元センサの視野範囲のうち、前記3次元センサと物体領域との間に未知領域を最も多く含む範囲に、前記3次元センサの計測範囲を移動させてもよい。ここで、3次元センサから見て未知領域の先に物体領域が存在しない場合には、当該物体領域を探索の基準とすることができない。このため、このような場合には、当該物体領域が存在する場合と比較して、未知領域の探索の効果が得にくい。従って、上述のような構成をとることによれば、より探索の効果が得やすい範囲に計測範囲を移動させることができる。
【0021】
上記制御装置において、前記動作制御手段は、前記第2の探索処理では、さらに、前記3次元センサを移動させるための前記ロボットの移動しやすさに基づき、前記3次元センサの計測範囲を移動させてもよい。これによれば、3次元センサの移動がより効率的に実現できるため、より高速に探索領域の探索をすることができる。
【0022】
上記制御装置において、前記マップ取得手段は、前記探索領域の各点に対応する領域ごとに3次元センサが計測した結果に基づき、初期情報としての前記マップ情報を取得してもよい。これによれば、1つ1つの領域を確実に探索するため、初期情報としてのマップ情報を詳細に取得できる。
【0023】
上記制御装置において、前記マップ取得手段は、前記探索領域のうち互いに重複しない複数の範囲を前記3次元センサが計測した結果に基づき、初期情報としての前記マップ情報を取得してもよい。これによれば、重複した範囲を探索しないため、初期情報としてのマップ情報をより効率的に取得できる。
【0024】
上記制御装置と探索領域を計測する3次元センサとを有することを特徴とするロボットであってもよい。
【0025】
本発明は、上記手段の少なくとも一部を有する装置として捉えてもよいし、電子機器や制御システム、探索システム、探索装置として捉えてもよい。また、本発明は、上記処理の少なくとも一部を含むロボットの制御方法、領域判定方法、探索方法として捉えてもよい。また、本発明は、かかる方法を実現するためのプログラムやそのプログラムを非一時的に記録した記録媒体として捉えることもできる。なお、上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
【発明の効果】
【0026】
本発明によれば、領域の探索を効率的に実施することができる。
【図面の簡単な説明】
【0027】
【
図3】
図3Aは局所探索を説明する図であり、
図3Bは大域探索を説明する図である。
【
図4】
図4は、干渉領域の判定処理のフローチャートである。
【
図5】
図5Aは初期探索のフローチャートであり、
図5Bは局所探索の位置決定処理のフローチャートであり、
図5Cは大域探索の位置決定処理のフローチャートである。
【発明を実施するための形態】
【0028】
以下、本発明を実施するための実施形態について図面を用いて記載する。
【0029】
<適用例>
以下では、制御装置30を有する探索システム1を説明する。探索システム1は、3次元センサ20により複数の計測位置から探索領域50を計測(探索)することによって、探索領域50において物体の配置された領域(干渉領域)を判定する。干渉領域が判定されれば、例えば、ロボット10は、干渉領域を避けることにより、探索領域50内部を物体に衝突しないように移動することができる。また、ロボット10以外の装置も、同様に、探索領域50内部を物体に衝突しないように移動することができる。なお、「計測位置」とは、3次元センサ20の3次元座標および姿勢(光軸方向)を示す。
【0030】
ここで、探索システム1は、探索領域50の概要を把握するための初期探索後には、例えば、探索領域50を計測するごとに、探索領域50の各点の計測状況(探索状況)を示すマップ情報を更新する。そして、探索システム1は、或る範囲を計測している場合に、例えば、マップ情報の更新量が所定の閾値以下であれば、大域探索(当該或る範囲とは離れた範囲のうち計測が十分でない範囲の計測)をする。また、探索システム1は、或る範囲を計測している場合に、マップ情報の更新量が所定の閾値よりも大きければ、局所探索(当該或る範囲と重なりを有する範囲の計測)をする。
【0031】
これによれば、探索システム1は、計測が十分でない範囲(物体の有無の判定の信頼度が低い範囲)を優先的に計測することになる。このため、探索領域50の計測(探索)を効率的に実施でき、より高速に干渉領域の判定をすることが可能になる。
【0032】
<実施形態1>
[探索システムの構成]
実施形態1に係る探索システム1を、
図1のシステム構成図を用いて説明する。探索システム1は、ロボット10、3次元センサ20、制御装置30、制御サーバ40を有する。
【0033】
ロボット10は、自らの姿勢を変化させることによって、3次元センサ20を移動させる。ロボット10は、例えば、垂直多関節ロボット、移動機構ロボット、パラレルリンクロボット、直動機構ロボットなど任意のタイプのロボットであり得る。本実施形態では、ロボット10は、複数の関節を有するアームを備えており、各関節の角度を制御することによって3次元センサ20の位置(姿勢)を制御する多関節ロボットである。各関節部は、モータにより駆動されてアームを回転させる駆動軸を備えている。
【0034】
3次元センサ20は、探索領域50を計測(探索)して、探索領域50の3次元情報(点群データ)を取得する。3次元センサ20は、ロボット10のアームの先端に設けられている。このため、ロボット10が3次元センサ20を有しているとみなしてもよい。3次元センサ20は、例えば、深度情報を取得する深度センサ、または距離画像を取得する距離画像センサである。互いに異なる複数の計測位置から探索領域50を計測(探索)することを3次元センサ20が繰り返し実行することによって、探索領域50における干渉領域が判定可能になる。なお、3次元センサ20は、カメラ(撮像部)を備えていてもよく、3次元情報を取得することのみならず、2次元画像を撮像(取得)可能であってもよい。また、3次元センサ20は、探索領域50に光を照射して照明する照射部や、画像を投影するプロジェクタを有していてもよい。
【0035】
ここで、3次元センサ20は、3次元センサ20から探索領域50における対象物までの距離が取得できればよいため、アクティブ方式とパッシブ方式のいずれのセンサであってもよい。ここで、アクティブ方式とは、3次元センサ20から投影した光を対象物にあてて、当該対象物での反射光を受光して距離を取得する方式である。一方、パッシブ方式とは、自然光や他の照明によって照らされた対象物からの光を受光して距離を取得する方式である。ここで、アクティブ方式として、例えば、赤外光をプロジェクタが対象物に照射し、当該対象物にて反射した赤外光をカメラが受光することで、三角測量の原理により当該対象物までの距離を取得する方法(スポット法;TOF)を用いてもよい。また、アクティブ方式として、例えば、パターン画像をプロジェクタが対象物に照射し、当該対象物に映し出されたパターン画像をカメラが撮像することで、撮像したパターン画像の歪みに応じて当該対象物までの距離を取得する方法を用いてもよい。また、パッシブ方式として、互いに異なる2点の位置から対象物を撮像して、2つの撮像画像の差分から距離を取得する方法を用いてもよい。
【0036】
制御装置30は、ロボット10および3次元センサ20を制御する。制御装置30は、ロボット10の姿勢(動き;アームの関節の角度)を制御することにより、3次元センサ20の計測位置(姿勢;視点)を制御する。また、制御装置30は、3次元センサ20の計測のタイミングを制御する。さらに、3次元センサ20が計測した結果に基づき、干渉領域を判定することもできる。
【0037】
制御サーバ40は、ネットワーク60を介して、複数の制御装置30を制御する。制御サーバ40は、制御装置30が有する構成要素の全部または一部を有していてもよい。
【0038】
[制御装置の構成]
図2の構成図を参照して、制御装置30の内部構成を説明する。制御装置30は、制御部301、記憶部302、マップ取得部303、領域判定部304、位置決定部305、経路生成部306、動作制御部307、センサ制御部308を有する。
【0039】
制御部301は、記憶部302に記憶されたプログラムに従って、制御装置30の各構成要素を制御する。なお、制御部301の処理は、制御サーバ40が実行してもよい。
【0040】
記憶部302は、各構成要素が動作するための情報を記憶する。記憶部302は、例えば、探索領域50の位置や大きさ、形状を示す情報を記憶する。また、記憶部302は、3次元センサ20のスペック(計測可能な距離の範囲、視野角度など)や、ロボット10のスペック(アームの関節の可動範囲、関節の回転可能速度など)を記憶する。なお、これらの情報は、制御装置30に対してユーザが予め設定可能である。
【0041】
さらに、記憶部302は、探索領域50における各点(ボクセル)の3次元センサ20による計測状況(探索状況)を示すマップ情報を記憶する。ここで、探索領域50におけ
る各点は、それぞれ異なる領域(例えば、立方体)に対応している。例えば、探索領域50における各点は、それぞれ対応する領域の中心の点(重心)である。記憶部302は、探索領域50における各点に対応する領域について、物体が存在するか否かを判定できている領域である既知領域と、物体が存在するか判定できていない領域である未知領域とのいずれかを示すマップ情報を記憶する。ここで、マップ情報では、既知領域は、物体が存在すると判定された領域である物体領域と、物体が存在しないと判定された領域である空領域のいずれかを示す。つまり、マップ情報は、探索領域50における各点が、物体が存在する点と物体が存在しないと点と物体が存在するか否かが不明である点とのいずれに該当するかを示しているといえる。
【0042】
マップ取得部303は、3次元センサ20が計測した結果(計測結果;探索結果)に基づき、上述したマップ情報を生成または更新をする。ここで、3次元センサ20が、複数の計測位置から探索領域50を計測して、マップ取得部303は、その計測結果に基づき、マップ情報を生成(更新)する。
【0043】
ここで、マップ取得部303は、例えば、センサ座標系(3次元センサ20の座標系)で定義された物体の表面上の各点の3次元情報(深度データ)を、計測位置に基づく座標変換によって、ロボット座標系(ロボット10の座標系)で定義される3次元位置情報に変換する。このことにより、マップ取得部303は、深度データが示す物体の、ロボット座標系での位置を判定できる。ここで、様々な計測位置において3次元センサ20が探索領域50を計測すれば、様々な深度データが取得できるため、探索領域50の各点(各領域)における物体の有無の信頼度が向上する。そして、マップ取得部303は、この信頼度に基づき、各点に対応する領域が未知領域と物体領域と空領域とのいずれに該当するかを決定(判定)できる。
【0044】
領域判定部304は、3次元センサ20の計測結果(探索結果)に基づき、干渉領域を判定する(決定する)。具体的には、領域判定部304は、マップ情報に基づき、物体領域から構成される領域を干渉領域として判定する。
【0045】
位置決定部305は、3次元センサ20が計測する際に配置される位置(座標および姿勢)である複数の計測位置(移動位置)を決定する。位置決定部305は、計測位置の複数の候補を決定しておき、複数の候補の中から、3次元センサ20が移動する(ロボット10が3次元センサ20を移動させる)ことが可能な候補のみを計測位置として選択することもできる。ここで、3次元センサ20の計測位置は、3次元センサ20の高さや3次元センサ20の光軸の向き(方向)の情報などにより特定できる。また、3次元センサ20の計測位置は、ロボット10の姿勢により特定できる。なお、3次元センサ20の位置とロボット10の姿勢との対応は、いわゆるキャリブレーション処理によって予め計測(決定)されているものとする。
【0046】
経路生成部306(経路決定部)は、位置決定部305が決定した複数の計測位置の間で3次元センサ20を移動させるための、ロボット10の移動経路を生成(決定)する。例えば、経路生成部306は、複数の計測位置の全てに3次元センサ20を移動させるために要する時間が、最も短い移動経路を決定する。
【0047】
動作制御部307は、3次元センサ20を複数の計測位置に移動させるように、ロボット10を制御する。これにより、動作制御部307は、3次元センサ20が計測する範囲(計測範囲)を、当該複数の計測位置に対応する範囲に移動させる。ここで、動作制御部307は、経路生成部306が決定した移動経路に従ってロボット10の姿勢を制御して、3次元センサ20(3次元センサ20の位置および姿勢)を制御する。
【0048】
センサ制御部308は、3次元センサ20を制御する。センサ制御部308は、例えば、ロボット10が3次元センサ20を計測位置に移動させたタイミングで、3次元センサ20が計測するように制御する。また、センサ制御部308は、3次元センサ20が照明部を有する場合には、照明部の発光量(明るさ)などを制御することもできる。
【0049】
また、制御装置30は、例えば、CPU(プロセッサ)、メモリ、ストレージなどを備えるコンピュータにより構成することができる。その場合、
図2に示す構成は、ストレージに格納されたプログラムをメモリにロードし、CPUが当該プログラムを実行することによって実現されるものである。かかるコンピュータは、パーソナルコンピュータ、サーバコンピュータ、タブレット端末、スマートフォンのような汎用的なコンピュータでもよいし、オンボードコンピュータのように組み込み型のコンピュータでもよい。あるいは、
図2に示す構成の全部または一部を、ASICやFPGAなどで構成してもよい。あるいは、
図2に示す構成の全部または一部を、クラウドコンピューティングや分散コンピューティングにより実現してもよい。
【0050】
[局所探索と大域探索]
本実施形態では、上述のように、探索システム1は、探索領域50の各領域(各点に対応する領域)が、物体領域と空領域と未知領域のいずれであるかを示すマップ情報を生成する(更新する)。なお、以下では、探索領域50の各領域を、1単位の立方体の領域であるボクセルとする。
【0051】
探索システム1は、探索領域50を計測するために、局所的な範囲のマップ情報を更新するための局所探索と、局所的な範囲とは異なる大域的な範囲のマップ情報を更新するための大域探索とを切り替えながら実施(実行)する。ここで、局所探索では、探索システム1は、例えば、現在計測している範囲と重なりを有する範囲を計測する。大域探索では、探索システム1は、例えば、現在計測している範囲から離れた範囲を新たに計測する。
【0052】
以下では、
図3Aおよび
図3Bを参照して、局所探索と大域探索とについて説明する。
図3Aおよび
図3Bは、探索領域50におけるボクセルの配置を示している。また、各ボクセルは、マップ情報によって、物体領域(物体ボクセル)と未知領域(未知ボクセル)と空領域(空ボクセル)のいずれかに分類されている。そして、既知領域(既知ボクセル)は、物体領域(物体ボクセル)と空領域(空ボクセル)のいずれかであるとする。なお、説明を簡単にするために、
図3Aおよび
図3Bが示す探索領域50では、2次元状にボクセルを配置している例を説明するが、実際には3次元状にボクセルが配置される。
【0053】
図3Aは、局所探索を説明する図である。
図3Aにおいて、4つの物体ボクセルからなる範囲401が、3次元センサ20が計測している範囲(3次元センサ20の視野範囲)である。ここで、範囲401の周囲には、物体が存在するか否かが不明な未知ボクセルが存在している。このため、探索システム1が範囲401の周囲を計測すれば、マップ情報を大きく更新できる可能性がある。そこで、範囲401の周囲を計測するために、3次元センサ20は、例えば、範囲401と重なりを有する範囲であって、物体ボクセルを含みつつ、未知ボクセルを多く含む範囲402を、次に計測を行う範囲として決定する。そして、3次元センサ20は、範囲402を計測する。このことによって、3次元センサ20は、現在計測をしている範囲を中心に、順次、詳細に計測することができる。
【0054】
図3Bは、大域探索を説明する図である。
図3Bにおいて、4つの物体ボクセルからなる範囲411が、3次元センサ20が計測している範囲(3次元センサ20の視野範囲)である。ここで、範囲411の周囲には、物体が存在するか否かが不明な未知ボクセルが存在していない。このため、探索システム1は、範囲411の周囲を計測しても、マップ情報を大きく更新できない。そこで、3次元センサ20は、範囲411と重ならない範囲
であって、未知ボクセルを多く含む範囲412を、次に計測を行う範囲として決定する。そして、3次元センサ20は、範囲412を計測する。このことによって、3次元センサ20は、現在計測している範囲およびその近接に多くの未知ボクセルが存在しない場合であっても、多くの未知ボクセルを含む他の範囲を計測することができる。このため、より効率よく、探索領域50の計測を実施することができる。
【0055】
なお、局所探索は或る範囲を詳細に把握するための探索であり、大域探索は当該或る範囲よりも大きな範囲を大まかに把握するための探索である。このため、これに該当するのであれば、探索システム1は、大域探索を行う場合においても、3次元センサ20が計測している範囲(直前の計測範囲)と重なる範囲を、次に計測を行う範囲として決定してもよい。また、探索システム1は、局所探索を行う場合においても、3次元センサ20が計測している範囲(直前の計測範囲)と重ならない範囲を、次に計測を行う範囲として決定してもよい。
【0056】
[干渉領域の判定処理]
図4を参照して、制御装置30が干渉領域を判定する処理を説明する。
図4は、干渉領域の判定処理のフローチャートである。なお、
図4のフローチャートの各処理は、制御部301が記憶部302に記憶されたプログラムを実行して、自身により、または各構成要素を制御することにより実現される。
【0057】
ステップS1001において、制御部301は、マップ情報の初期情報を生成するために探索領域50の初期探索を行う。制御部301は、初期探索として、探索領域50内部の概要を把握するための計測を行う。なお、初期探索の処理は、
図5Aのフローチャートを参照して詳細に後述する。
【0058】
ステップS1002において、制御部301は、局所探索をするための、3次元センサ20の1つの計測位置(姿勢)を決定する。局所探索の計測位置の決定処理は、
図5Bのフローチャートを参照して詳細に後述する。
【0059】
ステップS1003において、制御部301は、前回の計測による、マップ情報の更新量が第1の閾値TH1以下であるか否かを判定する。なお、本実施形態では、マップ情報の更新量は、探索領域50における未知ボクセルが既知ボクセル(物体ボクセルまたは空ボクセル)に変化した数(変化量)である。マップ情報の更新量が第1の閾値TH1以下である場合にはステップS1008に進み、そうでない場合にはステップS1004に進む。なお、前回の計測がない1回目のステップS1003では、ステップS1004に進む。
【0060】
なお、ステップS1003では、制御部301は、局所探索を実行すると仮定した場合に、局所探索により多くの未知ボクセルを計測(探索)できるか否かを判定(推定)している。そして、局所探索により多くの未知ボクセルが計測できると判定された場合に、局所探索を実行するためにステップS1004に進み、そうでない場合に、大域探索を実行するためにステップS1008に進む。このため、制御部301は、マップ情報に基づき、現在計測している範囲を中心とした当該範囲よりも大きい範囲における未知ボクセルの数が所定値以下であるか否かを判定してもよい。この場合には、当該未知ボクセルの数が所定値以下であればステップS1008に進み、そうでない場合にはステップS1004に進む。
【0061】
ステップS1004において、経路生成部306は、ステップS1002またはステップS1009において決定された計測位置に3次元センサ20を移動させるためのロボット10の移動経路を生成(決定)する。このとき、経路生成部306は、ロボット10の
スペック(アームの関節の稼働可能角度や角速度)に基づき、前回の位置から最も短い時間で移動可能な経路を生成するとよい。
【0062】
ステップS1005において、動作制御部307は、ステップS1002またはステップS1009において決定された計測位置に3次元センサ20を移動させるように、ロボット10を制御する。このとき、動作制御部307は、ステップS1004において決定された移動経路を通るように、ロボット10を移動させる。つまり、ステップS1005において、動作制御部307は、ロボット10を移動させることにより、3次元センサ20が計測する範囲(計測範囲)を移動させている。
【0063】
ステップS1006において、センサ制御部308は、移動させた計測位置において3次元センサ20が探索領域50(当該計測位置における3次元センサの視野範囲;計測範囲)を計測するように制御する。これによって、3次元センサ20は、視野範囲における3次元情報(深度データ)を取得することができる。また、3次元センサ20は、取得した3次元情報を制御装置30に送信する。ここで、ステップS1006では、直前のステップS1003においてマップ情報の更新量が第1の閾値TH1以下であると判定された場合には大域探索が行われ、そうでない場合には局所探索が行われる。
【0064】
ステップS1007において、マップ取得部303は、3次元センサ20が取得した3次元情報と、3次元情報の取得時の3次元センサ20の計測位置とに基づき、マップ情報を更新する。
【0065】
ステップS1008において、制御部301は、マップ情報に基づき、探索領域50における未知ボクセル(未知領域)の数が第2の閾値TH2以下であるか否かを判定する。探索領域50における未知ボクセルの数が第2の閾値TH2以下であればステップS1010に進み、そうでなければステップS1009に進む。なお、「未知ボクセルの数」は、「未知ボクセルの体積」と捉えることもできる。ここで、第2の閾値TH2は、探索領域50内の計測がほとんど終了したことを判定できればよいため、例えば、探索領域50における全てのボクセルの数の1%または2%である。
【0066】
ステップS1009において、制御部301は、大域探索をするための、3次元センサ20の計測位置を決定する。大域探索の計測位置の決定処理は、
図5Cのフローチャートを参照して詳細に後述する。
【0067】
ステップS1010において、領域判定部304は、マップ情報に基づき、物体が配置された領域である干渉領域を判定する。具体的には、領域判定部304は、マップ情報が示す物体ボクセル(物体領域)から構成される領域を干渉領域として判定する。
【0068】
[初期探索;S1001]
以下では、
図5Aのフローチャートを参照して、ステップS1001において行われる初期探索の処理について説明する。
【0069】
ステップS2001において、位置決定部305は、初期探索を行うための複数の計測位置を算出(決定)する。ここでは、例えば、位置決定部305は、
図6Aに示すように、各ボクセル(各点)を中心とする範囲の計測が1回ずつ行われるように、3次元センサ20の複数の計測位置を決定する。また、例えば、位置決定部305は、所定数(例えば、4つ)のボクセル単位ごとに計測が行われるように、3次元センサ20の複数の計測位置を決定する。これによれば、初期探索によって探索領域50を詳細に計測できる。また、位置決定部305は、
図6Bに示すように、1回に計測する各範囲が互いに重複しないように、3次元センサの複数の計測位置を決定してもよい。これによれば、少ない処理に
よって初期探索を行うことができるため、初期探索を素早く完了させることができる。なお、これらに限らず、位置決定部305は、任意の位置(座標および姿勢)を複数の計測位置に決定してもよい。
【0070】
ステップS2002において、経路生成部306は、ステップS2001において決定された複数の計測位置を3次元センサ20が移動するために、ロボット10の移動経路を生成(決定)する。ここで、移動経路は、例えば、3次元センサ20を移動させる複数の計測位置の順番を示す情報を含む。また、経路生成部306は、例えば、複数の計測位置のうちロボット10(アームを支える台座部分)から最も遠い計測位置から3次元センサ20が移動を開始するように、ロボット10の移動経路を決定する。そして、開始の計測位置から最も短い時間で、全ての計測位置に3次元センサ20を移動させることができるような、ロボット10の移動経路を決定する。
【0071】
ステップS2003において、動作制御部307は、ロボット10を制御して、複数の計測位置のうち1つの計測位置に3次元センサ20を移動させる。このとき、動作制御部307は、ステップS2002において生成した移動経路に従って、ロボット10の姿勢を制御する。つまり、ステップS2003では、動作制御部307は、移動経路が示す移動順序に従って、複数の計測位置のうち未だ3次元センサ20が移動したことのない計測位置に3次元センサ20を移動させる。
【0072】
ステップS2004において、センサ制御部308は、3次元センサ20を制御して、移動後の計測位置から探索領域50を計測する。これによって、3次元センサ20は、視野範囲の3次元情報(深度データ)を取得することができる。また、3次元センサ20は、取得した3次元情報を制御装置30に送信する。
【0073】
ステップS2005において、マップ取得部303は、ステップS2004において計測された結果と計測時の計測位置に基づき、マップ情報を生成(更新)する。
【0074】
ステップS2006において、制御部301は、マップ情報に基づき、探索領域50の未知ボクセル(未知領域)の数が第3の閾値TH3以上であるか否かを判定する。探索領域50の未知ボクセル(未知領域)の数が第3の閾値TH3以上である場合にはステップS2003に進み、そうでない場合には本フローチャートの処理が終了する。なお、第3の閾値TH3は、探索領域50の概要が把握できたことを判定するための閾値であるため、第2の閾値TH2よりも十分に大きな値である。例えば、第3の閾値TH3は、探索領域50における全てのボクセルの数の30%~50%の任意の値であってよい。なお、制御部301は、ステップS2001の時点からの未知ボクセルの数の変化率(更新量)が、閾値以上であるか否かを判定してもよい。この場合には、未知ボクセルの数の変化率が閾値以上である場合には本フローチャートの処理が終了し、そうでない場合にはステップS2003に進む。また、制御部301は、3次元センサ20により所定回数以上の計測が行われたと判定した場合には、本フローチャートの処理を終了させてもよい。
【0075】
[局所探索の位置決定;S1002]
以下では、
図5Bのフローチャートを参照して、ステップS1002において行われる局所探索の位置決定の処理について説明する。
【0076】
ステップS3001において、位置決定部305は、現在計測している範囲(現在の3次元センサの視野範囲;直前の計測範囲)とそれぞれが重なりを有するような、3次元センサ20が計測を行う複数の候補範囲を算出する。このため、複数の候補範囲は、現在計測している範囲の一部を有する範囲や、現在計測している範囲である。例えば、位置決定部305は、現在計測している範囲から東西南北それぞれに所定の距離移動させた4つの
候補範囲を算出する。なお、位置決定部305は、東西南北に限らず、任意の方向に移動させた候補範囲を算出してもよい。また、複数の候補範囲は、現在計測している範囲に近接していれば、現在計測している範囲と重なりを有していなくてもよい。
【0077】
ステップS3002において、位置決定部305は、マップ情報に基づき、複数の候補範囲のそれぞれに含まれる未知ボクセル(未知領域)の数を算出する。例えば、それぞれの候補範囲は3次元センサ20の位置を頂点として、光軸方向を高さ方向とする四角錘形状に広がっている。このため、
図7Aに示すような候補範囲701には、その長方形範囲に含まれる13個の未知ボクセルが含まれている。なお、例えば、それぞれの候補範囲は3次元センサ20の位置を頂点として、光軸方向を高さ方向とする円錐形状に広がっていてもよい。
【0078】
なお、位置決定部305は、候補範囲に含まれる、3次元センサ20と物体ボクセル(物体領域)との間に存在する未知ボクセルの数を算出してもよい。この場合には、例えば、
図7Bに示す候補範囲711では、該当する未知ボクセルの数は7個であると算出される。ここで、例えば、3次元センサ20から見て未知ボクセルより奥に、物体ボクセルが存在しない場合には、物体ボクセルを計測基準とすることができないため、当該未知ボクセルが物体ボクセルと空ボクセルとのいずれであるかを決定できないことがある。このため、位置決定部305は、効率的に計測を行うために、候補範囲のうち3次元センサ20と物体ボクセル(物体領域)との間に存在する未知ボクセルの数のみを算出してもよい。この場合、物体ボクセルの前面に存在する未知ボクセル(3次元センサ20と物体ボクセルとの間に存在する未知ボクセル)は、その後のステップS1007の処理で、空ボクセルであると判定される。
【0079】
ステップS3003において、位置決定部305は、ステップS3002において算出した未知ボクセルの数が最も多い候補範囲を計測する位置(座標および姿勢)を計測位置として決定する。このため、位置決定部305は、ステップS3002において算出した未知ボクセルの数が最も多い候補範囲を、3次元センサ20が計測する範囲として決定しているともいえる。3次元センサ20が、このような候補範囲を計測することができれば、マップ情報を大きく更新することが可能になる。
【0080】
[大域探索の位置決定;S1009]
以下では、
図5Cのフローチャートを参照して、ステップS1009において行われる大域探索の位置決定の処理について説明する。
【0081】
ステップS4001において、位置決定部305は、マップ情報に基づき、探索領域50における未知ボクセル(未知領域)を検出する。
【0082】
ステップS4002において、位置決定部305は、検出した各未知ボクセルを中心とする(各未知ボクセルが3次元センサ20の光軸上に配置されるように)、3次元センサ20が計測を行う複数の候補範囲を算出(決定)する。ここで、位置決定部305は、ステップS3001において算出される複数の候補範囲よりも3次元センサ20が現在計測している範囲から遠い範囲を、ステップS4002において複数の候補範囲として算出する。
【0083】
ステップS4003において、位置決定部305は、複数の候補範囲のそれぞれに含まれる未知ボクセルの数を算出する。なお、ステップS3002と同様に、位置決定部305は、候補範囲のうち3次元センサ20と物体ボクセル(物体領域)との間に存在する未知ボクセルの数を算出してもよい。
【0084】
ステップS4004において、位置決定部305は、ステップS4003において算出した未知ボクセルの数が最も多い候補範囲を計測する位置(座標および姿勢)を計測位置として決定する。このため、位置決定部305は、ステップS4003において算出した未知ボクセルの数が最も多い候補範囲を、3次元センサ20が計測する範囲として決定しているともいえる。3次元センサ20が、このような候補範囲を計測することができれば、マップ情報を大きく更新することが可能になる。
【0085】
ここで、3次元センサ20は、自身の視野範囲に含まれるボクセルに対して計測を行う。そして、3次元センサ20の位置(座標および姿勢)と視野範囲とは、一意に対応する。このため、ステップS4002では、位置決定部305は、未知ボクセルが3次元センサ20の視野範囲に含まれるような複数の計測位置の候補(候補位置)を決定しているといえる。また、ステップS4002~S4003では、位置決定部305は、複数の候補位置それぞれでの3次元センサ20の視野範囲のうち、未知ボクセルを最も多く含む範囲を計測の対象となる候補範囲として決定しているといえる。この場合、「未知ボクセルを最も多く含む範囲」を「3次元センサ20と物体ボクセルとの間に未知領域を最も多く含む範囲」と読み替えてもよい。
【0086】
このように、探索システム1は、未知領域の更新量によって、大域探索と局所探索とを切り替える。つまり、探索システム1は、現在計測している範囲(計測範囲)またはその周囲を計測することによって多くの未知領域が計測可能である場合には当該範囲またはその周囲の範囲を計測し、そうでない場合には、現在計測している範囲から離れた範囲を計測する。これによって、効果的に探索領域50を計測できる位置に、3次元センサ20を配置することができる。さらに、探索領域を把握するためのマップ情報を効率的に更新することができる。従って、効率的に探索領域を計測することができる。
【0087】
なお、本実施形態では、
図4のフローチャートが示すように、ステップS1006において3次元センサ20が1回の計測(探索)をするごとに、ステップS1007においてマップ取得部303がマップ情報を更新している。しかし、これに限らず、3次元センサ20が複数回、局所探索または大域探索をするごとに、マップ取得部303がマップ情報を更新してもよい。
【0088】
例えば、ステップS1002またはステップS1009において、制御部301は複数の計測位置を決定する。次に、複数の計測位置のそれぞれについて、ステップS1004~S1006のようなロボット10の移動経路の決定、3次元センサ30の移動および3次元センサ30による計測が行われる。そして、3次元センサ30による複数の計測位置での計測結果から、マップ取得部303がマップ情報の更新を行う。
【0089】
なお、例えば、マップ情報の更新量が第1の閾値TH1より大きい場合(ステップS1003でNOである場合)には、複数回の局所探索が行われた後に、マップ取得部303がマップ情報を更新し、そうでない場合(ステップS1003でYESである場合)には、1回の大域探索の後にマップ取得部303がマップ情報を更新してもよい。さらには、マップ情報の更新量が第1の閾値TH1より大きい場合には、複数回の局所探索の後にマップ取得部303がマップ情報を更新し、そうでない場合には、1回の大域探索の後に複数回の局所探索が行われた後に、マップ取得部303がマップ情報を更新してもよい。
【0090】
また、本実施形態では、マップ取得部303が1回マップ情報を更新するごとに、制御部301がマップ情報の更新量が第1の閾値TH1以下か否かを判定している。しかし、複数回の更新ごとに、制御部301は、マップ情報の更新量が第1の閾値TH1以下か否かを判定してもよい。例えば、3次元センサ20が局所探索をする場合には、ステップS1002,S1004~S1007の処理を複数回繰り返すことにより複数回マップ情報
が更新された後に、ステップS1003において制御部301がマップ情報の更新量が第1の閾値TH1以下か否かを判定してもよい。この場合には、ステップS1003において、制御部301は、ステップS1007において行う複数回のマップ情報の更新の更新量の代表値(平均値、中央値、または最頻値)が第1の閾値TH1以下か否かを判定してもよい。つまり、制御部301は、前回のステップS1003の判定から、今回のステップS1003の範囲までの間における複数回のマップ情報の更新量の代表値(平均値、中央値、または最頻値)が第1の閾値TH1以下か否かを判定してもよい。
【0091】
なお、3次元センサ30が有する照明により探索領域50を照らしつつ、3次元センサ30が有するカメラにより2次元画像を撮影することで、3次元センサ30が探索領域50の計測を行う場合がある。例えば、HDR(High Dynamic Range)の画像は、異なる明るさ(露出)の複数枚の2次元画像が撮影されて、当該複数枚の2次元画像が合成されることで取得される。このような場合には、3次元センサ30は、カメラの露光時間、カメラのゲイン、または照明の照度を変更して2次元画像の明るさを制御することで、1つの計測位置から(1つの計測範囲に対して)、複数回、明るさ(露出)の異なる2次元画像を撮影する。そして、複数回撮影された2次元画像に基づき得られた3次元情報から、マップ取得部303は、マップ情報を更新する。なお、3次元センサ30におけるカメラの露光時間、カメラのゲイン、または照明の照度は、センサ制御部308によって制御される。
【0092】
ここで、例えば、マップ情報の更新量が第1の閾値TH1より大きい場合には、局所探索の計測位置において第1の明るさで撮像した2次元画像と第2の明るさ(第1の明るさよりも明るい明るさ)で撮像した2次元画像とを合成した画像に基づく3次元情報から、マップ取得部303がマップ情報を更新する。そうでない場合には、大域探索の計測位置において第1の明るさで撮像した2次元画像と第2の明るさで撮像した2次元画像とを合成した画像に基づく3次元情報から、マップ取得部303がマップ情報を更新する。
【0093】
他にも、例えば、マップ情報の更新量が第1の閾値TH1より大きい場合には、局所探索の計測位置において第1の明るさで撮像した2次元画像に基づく3次元情報から、マップ取得部303がマップ情報を更新し、さらに、当該計測位置において第1の明るさで撮像した2次元画像に基づく3次元情報から、マップ取得部303がマップ情報を更新してもよい。
【0094】
また、本実施形態では、ステップS1003において、制御部301は、マップ情報の更新量が第1の閾値TH1以下であるか否かに応じて、局所探索と大域探索とのいずれを行うかを判定する。しかし、制御部301が局所探索と大域探索とのいずれを行うかを判定する場合に、マップ情報の更新量に基づく必要はない。例えば、制御部301は、局所探索を行った直後には大域探索を行い、大域探索を行った直後には局所探索を行うように制御してもよい。つまり、制御部301は、局所探索と大域探索とを交互に行うように制御してもよい。さらには、制御部301は、局所探索を複数回行うごとに1回の大域探索を行うように制御してもよいし、複数回の大域探索を行うごとに複数回の局所探索を行うように制御してもよい。
【0095】
[変形例1]
実施形態1では、探索システム1は、ステップS3001やS4002において決定した複数の候補範囲に含まれる未知ボクセルの数に基づき、3次元センサ20が計測する範囲(計測範囲;候補範囲)を決定していた。本変形例では、未知ボクセルの数ではなく、計測(探索)の完了度合いを示すエントロピーに基づき、3次元センサ20が計測する候補範囲を決定する探索システム1を説明する。
【0096】
本変形例では、マップ情報は、各ボクセルについて物体の有無の信頼度(確率;可能性)を示す情報として、0~1のいずれかの値を示すスコアPを有する。ここで、スコアPが大きいほど、そのスコアPを有するボクセルが物体ボクセルである可能性が高いことを示す。一方、スコアPが小さいほど、そのスコアPを有するボクセルが空ボクセルである可能性が高いことを示す。また、スコアPは、0または1に近いほど物体の有無の信頼度が高く、0.5に近いほど物体の有無の信頼度が低い。
【0097】
ここで、マップ取得部303は、スコアPに応じて各ボクセルが、未知ボクセルと物体ボクセルと空ボクセルのいずれに該当するかを判定することもできる。例えば、スコアPが0.3以下であれば、マップ取得部303は、そのスコアPを有するボクセルが空ボクセルであると判定できる。また、スコアPが0.3より大きく、かつ、0.7よりも小さい値であれば、マップ取得部303は、そのスコアPを有するボクセルが未知ボクセルであると判定できる。スコアPが0.7以上であれば、マップ取得部303は、そのスコアPを有するボクセルが物体ボクセルであると判定できる。なお、上記の0.3や0.7といった閾値となる数値は、ユーザが任意に設定してよい。
【0098】
そして、本変形例では、制御装置30は、スコアPに基づき、局所探索の位置決定の処理や大域探索の位置決定の処理を実行する。ここで、実施形態1とステップS3002,S3003,S4003,S4004の処理のみが異なるため、これらの処理のみを詳細に説明し、他の処理についての説明は省略する。
【0099】
ステップS3002およびステップS4003において、位置決定部305は、スコアPに基づき、複数の候補範囲のそれぞれのエントロピーを算出する。ここで、或る範囲のエントロピーは、当該範囲の計測が完了していないほど(物体の有無の信頼度が低いほど)、大きな値をとる。具体的には、ボクセルのエントロピーは、下記の式1によって算出することができる。つまり、ボクセルのエントロピーは、そのボクセルについてのスコアPが0.5に近いほど、高い値をとる。そして、或る範囲のエントロピーは、当該範囲に含まれる全てのボクセルのエントロピーの総和または代表値(平均値、中央値、または最頻値)である。
エントロピー=P log(P) - (1-P)log(1-P) ・・・式1
【0100】
ステップS3003およびS4004において、位置決定部305は、複数の候補範囲のうちエントロピーが最も高い候補範囲を計測する位置(座標および姿勢)を計測位置として決定する。
【0101】
本変形例によれば、各ボクセルにおける物体の有無の信頼度に応じて、局所探索および大域探索をするための計測位置を決定することができる。これにより、実施形態1よりも詳細な情報に基づき計測位置を決定できるため、より適切に計測位置を決定することができる。
【0102】
[変形例2]
大域探索の計測位置を決定する処理において、制御装置30は、複数の候補範囲それぞれを計測するための計測位置での移動のしやすさに基づき、3次元センサ20を移動させる計測位置に対応する候補範囲(計測範囲)を決定してもよい。
【0103】
具体的には、ステップS4003において、位置決定部305は、未知ボクセルの数の算出に加えて、複数の候補範囲それぞれを計測するための計測位置に3次元センサ20を配置した場合の、ロボット10の移動しやすさを算出する。本変形例では、ロボット10の移動しやすさ(動きやすさ)を示す指標として、可操作度Kを算出する。可操作度Kは
、より詳細には、或る姿勢からロボットアーム本体の手先の位置や姿勢をどの程度自由に操作できるのかを表す指標である。可操作度Kは、数値が大きいほど、その姿勢から動きやすいことを示す。ここで、ロボット10の関節角度(ジョイント値)をqとすると、下記の式2のように可操作度K(q)が算出できる。なお、Jは、ヤコビ行列を示す。
【数1】
【0104】
そして、ステップS4003において、位置決定部305は、複数の候補範囲のそれぞれについての未知ボクセルの数と可操作度Kとに基づき、3次元センサ20を移動させる計測位置に対応する候補範囲を決定する。例えば、位置決定部305は、複数の候補範囲のうち未知ボクセルの数と可操作度Kとの積や和が一番大きい候補位置を、3次元センサ20を移動させる計測位置に対応する候補範囲として決定する。
【0105】
なお、ロボット10の移動しやすさを表す指標であれば、上記の可操作度以外の指標を用いてもよい。例えば、ロボット10におけるアームの関節の角度が最大値または最小値に近いほど(ロボット10の姿勢が特異姿勢に近いほど)小さな値をとるような指標を、移動しやすさを表す指標として用いることができる。
【0106】
このように、3次元センサ20を移動させる計測位置に対応する候補範囲を決定することによれば、複数の計測位置の間をスムーズに3次元センサ20を移動させることが可能になる。このため、短い時間でより多くの計測が可能になるので、より高速に探索領域50全体の計測を完了させることができる。
【0107】
(その他の実施形態)
なお、局所探索は局所的な範囲のマップ情報を生成(更新)するためのものであればよく、大域探索は大域的な範囲のマップ情報を生成(更新)するためのものであればよい。このため、例えば、局所探索では、或る範囲内で探索するのに対して、大域探索では、当該或る範囲よりも広い範囲で探索してもよい。また、局所探索では、物体が存在するか否かの信頼度に応じたエントロピーに基づく範囲を探索するのに対して、大域探索では、3次元センサを移動させるためのロボットの移動しやすさに基づく範囲を探索してもよい。また、局所探索では、3次元センサの視野範囲における3次元センサと物体領域との間に存在する未知領域の数に基づく範囲を探索するのに対して、大域探索では、3次元センサの視野範囲における未知領域の数に基づく範囲を探索してもよい。
【0108】
なお、実施形態に記載された事項のみによって特許請求の範囲の記載の解釈が限定されるものではない。特許請求の範囲の記載の解釈には、出願時の技術常識を考慮した、発明の課題が解決できることを当業者が認識できるように記載された範囲も含む。
【0109】
(付記1)
3次元センサ(20)を有するロボット(10)の制御装置(30)であって、
探索領域(50)に対する前記3次元センサ(20)の計測範囲を移動するように前記ロボット(10)を制御する動作制御手段(307)と、
前記3次元センサ(20)による計測結果に基づいて、前記探索領域(50)における各点の探索状況を示すマップ情報を更新するマップ取得手段(303)と、
を有し
前記動作制御手段(307)は、前記探索領域(50)内の局所的な範囲のマップ情報を更新するように前記3次元センサ(20)の計測範囲を移動させる第1の探索処理と、前記第1の探索処理で更新を行っていた前記局所的な範囲とは異なる範囲のマップ情報を
更新するために、前記局所的な範囲から離れた位置に前記3次元センサ(20)の計測範囲を移動させる第2の探索処理と、を実行する、
ことを特徴とする制御装置(30)。
【0110】
(付記2)
3次元センサ(20)を有するロボット(10)の制御方法であって、
探索領域(50)に対する前記3次元センサ(20)の計測範囲を移動するように前記ロボット(10)を制御する動作制御ステップ(S1005)と、
前記3次元センサ(20)による計測の結果に基づいて、前記探索領域(50)における各点の探索状況を示すマップ情報を更新するマップ取得ステップ(S1007)と、
を有し、
前記動作制御ステップ(S1005)では、前記探索領域(50)内の局所的な範囲のマップ情報を更新するように前記3次元センサ(20)の計測範囲を移動させる第1の探索処理と、前記第1の探索処理で更新を行っていた前記局所的な範囲とは異なる範囲のマップ情報を更新するために、前記局所的な範囲から離れた位置に前記3次元センサ(20)の計測範囲を移動させる第2の探索処理と、を実行する、
ことを特徴とする制御方法。
【符号の説明】
【0111】
1:探索システム、10:ロボット、20:3次元センサ、30:制御装置、
40:制御サーバ、50:探索領域、60:ネットワーク
301:制御部、302:記憶部、303:マップ取得部、304:領域判定部、
305:位置決定部、306:経路生成部、307:動作制御部、
308:センサ制御部