(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023161892
(43)【公開日】2023-11-08
(54)【発明の名称】情報処理装置、クレーンの監視システム、距離算出方法、および距離算出プログラム
(51)【国際特許分類】
G06T 7/60 20170101AFI20231031BHJP
B66C 13/00 20060101ALI20231031BHJP
【FI】
G06T7/60 180B
B66C13/00 D
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022072522
(22)【出願日】2022-04-26
(71)【出願人】
【識別番号】000005119
【氏名又は名称】日立造船株式会社
(74)【代理人】
【識別番号】110000338
【氏名又は名称】弁理士法人 HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】三木 裕介
(72)【発明者】
【氏名】三宅 寿英
(72)【発明者】
【氏名】岡村 敬
(72)【発明者】
【氏名】松下 裕明
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA06
5L096AA09
5L096BA02
5L096CA04
5L096CA08
5L096DA01
5L096DA02
5L096DA03
5L096FA05
5L096FA06
5L096FA32
5L096FA52
5L096FA59
5L096FA64
5L096FA66
5L096FA69
5L096FA77
5L096GA34
5L096GA51
5L096JA03
5L096MA07
(57)【要約】
【課題】点群データから検出した物体間の距離の算出における演算量を抑える。
【解決手段】情報処理装置(1)は、点群データから複数の物体を検出する物体検出部(104)と、検出された複数の物体のうち距離の算出対象となる2つの物体のそれぞれにおける任意の位置を基準として両物体の対向する輪郭部分を特定し、当該輪郭部分の間の距離を当該物体の間の距離として算出する距離算出部(107)と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の物体の表面を示す点を少なくとも含む点群データから、当該複数の物体を検出する物体検出部と、
前記物体検出部が検出した複数の前記物体のうち距離の算出対象となる2つの物体のそれぞれにおける任意の位置を基準として両物体の対向する輪郭部分を特定し、当該輪郭部分の間の距離を当該物体の間の距離として算出する距離算出部と、を備える情報処理装置。
【請求項2】
距離の算出対象となる2つの前記物体を第1の物体および第2の物体としたとき、
前記距離算出部は、
水平面上に投影した前記点群データの中から、前記第2の物体上の任意の位置から最も近い前記第1の物体上の点P1と、前記第1の物体上の任意の位置から最も近い前記第2の物体上の点P2とを特定すると共に、
前記点P1に最も近い前記第2の物体上の点P2’と、前記点P2に最も近い前記第1の物体上の点P1’とを特定し、
前記第1の物体と前記第2の物体の対向する輪郭部分である線分P1-P1’と線分P2-P2’との間の距離を算出する、請求項1に記載の情報処理装置。
【請求項3】
前記点群データの中から、前記物体検出部が検出する複数の前記物体の輪郭を構成する点を検出する輪郭検出部を備え、
前記距離算出部は、前記輪郭検出部が検出する点の中から前記輪郭部分を構成する点を特定する、請求項1に記載の情報処理装置。
【請求項4】
前記距離算出部は、距離の算出対象となる2つの前記物体のそれぞれの中心位置を基準として当該中心位置の間に設定された探索範囲内で前記輪郭部分を特定する、請求項1に記載の情報処理装置。
【請求項5】
前記物体検出部が検出した複数の前記物体上の各点をグリッドが設定された水平面上に投影したときに、2つの物体上の点をそれぞれ含む前記グリッドの数が閾値以上である場合に、当該2つの物体を統合して1つの物体とする統合部を備える、請求項1に記載の情報処理装置。
【請求項6】
ある時点で取得された前記点群データから前記物体検出部が検出した前記物体上の各点と、他の時点で取得された前記点群データから前記物体検出部が検出した前記物体上の各点とを、グリッドが設定された水平面上に投影したときの、各時点で検出された物体上の点を共に含む前記グリッドの数に基づいて、各時点で検出された物体が同一の物体であるか判定する同一性判定部を備える、請求項1に記載の情報処理装置。
【請求項7】
前記物体検出部が検出する物体を示す画像を表示装置に表示させる表示制御部を備え、
前記表示制御部は、前記同一性判定部が同一の物体と判定した物体を共通の表示態様で表示させる、請求項6に記載の情報処理装置。
【請求項8】
クレーンの吊荷およびその周囲の物体の表面を示す点を少なくとも含む点群データを生成する計測装置と、
前記計測装置が生成する前記点群データを用いて、前記吊荷と当該吊荷の周囲の前記物体との間の距離を算出する、請求項1から7の何れか1項に記載の情報処理装置と、
前記情報処理装置が算出する距離に応じて警報を発する警報装置と、を含むクレーンの監視システム。
【請求項9】
1または複数の情報処理装置が実行する距離算出方法であって、
複数の物体の表面を示す点を少なくとも含む点群データから、当該複数の物体を検出する物体検出ステップと、
前記物体検出ステップで検出した複数の前記物体のうち距離の算出対象となる2つの物体のそれぞれにおける任意の位置を基準として両物体の対向する輪郭部分を特定し、当該輪郭部分の間の距離を当該物体の間の距離として算出する距離算出ステップと、を含む距離算出方法。
【請求項10】
請求項1に記載の情報処理装置としてコンピュータを機能させるための距離算出プログラムであって、前記物体検出部および前記距離算出部としてコンピュータを機能させるための距離算出プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、点群データから検出した物体間の距離を算出する情報処理装置等に関する。
【背景技術】
【0002】
従来から、点群データから物体を検出する技術が知られている。例えば、下記の特許文献1には、ガイド情報表示装置を備えたクレーンが開示されている。このガイド情報表示装置は、クレーンの伸縮ブームの先端に配置したレーザスキャナによって取得した点群データから、地表面や、吊荷の上面、および吊荷の周辺に存在する地物の上面を推定する機能を備えている。また、当該ガイド情報表示装置は、吊荷と地物を水平面に投影した際の水平距離が、所定の閾値以下であり、かつ、鉛直方向の距離が所定の閾値以下であった場合に、接触のおそれがあるものと判断する機能も備えている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1には上記の水平距離を算出する具体的な方法は記載されていないが、一般に、点群データで表される物体間の距離を算出する場合、一方の物体の輪郭上の各点と、他方の物体の輪郭上の各点との距離をそれぞれ算出する。そして、算出した距離の最小値を、両物体間の距離とする。例えば、各物体の輪郭線上にそれぞれn個の点が存在するとした場合、距離を算出すべき点の組み合わせはnの二乗通りとなる。
【0005】
このように、点群データから検出した物体間の距離の算出における演算量は多く、この点に改善の余地がある。本発明の一態様は、点群データから検出した物体間の距離の算出における演算量を抑えることが可能な情報処理装置等を実現することを目的とする。
【課題を解決するための手段】
【0006】
上記の課題を解決するために、本発明の一態様に係る情報処理装置は、複数の物体の表面を示す点を少なくとも含む点群データから、当該複数の物体を検出する物体検出部と、前記物体検出部が検出した複数の前記物体のうち距離の算出対象となる2つの物体のそれぞれにおける任意の位置を基準として両物体の対向する輪郭部分を特定し、当該輪郭部分の間の距離を当該物体の間の距離として算出する距離算出部と、を備える。
【0007】
また、上記の課題を解決するために、本発明の一態様に係る距離算出方法は、1または複数の情報処理装置が実行する距離算出方法であって、複数の物体の表面を示す点を少なくとも含む点群データから、当該複数の物体を検出する物体検出ステップと、前記物体検出ステップで検出した複数の前記物体のうち距離の算出対象となる2つの物体のそれぞれにおける任意の位置を基準として両物体の対向する輪郭部分を特定し、当該輪郭部分の間の距離を当該物体の間の距離として算出する距離算出ステップと、を含む。
【発明の効果】
【0008】
本発明の一態様によれば、点群データから検出した物体間の距離の算出における演算量を抑えることが可能になる。
【図面の簡単な説明】
【0009】
【
図1】本発明の一実施形態1に係る情報処理装置の要部構成の一例を示すブロック図である。
【
図2】上記情報処理装置を含む監視システムの構成例を示す図である。
【
図4】1つのクラスタに含まれる各点を、グリッドが設定された水平面に投影した例を示す図である。
【
図6】物体を統合する条件のうち物体の高さと、物体の面の深さに関する条件を説明する図である。
【
図7】統合するか否かの判定対象となる各クラスタに含まれる点を、グリッドが設定された水平面に投影した例を示す図である。
【
図8】物体間の距離の算出方法を説明する図である。
【
図10】上記情報処理装置が実行する処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
〔システム構成〕
本発明の一実施形態に係るクレーンの監視システム100の構成を
図2に基づいて説明する。
図2は、監視システム100の構成例を示す図である。監視システム100は、クレーンCRの安全管理のためのシステムであり、図示のように、監視システム100には、情報処理装置1と、警報装置2と、計測装置3が含まれている。
【0011】
クレーンCRは、重量物(荷)を吊り上げて移動させる機械である。クレーンCRには、台車部CR1、基部CR2、ブームCR3、ケーブルCR4、フックCR5、クレーン室CR6が含まれている。
【0012】
台車部CR1は、基部CR2を載置している。基部CR2は、ブームCR3等を支持する構造体である。基部CR2と台車部CR1は、台車部CR1上で基部CR2が回動できるように接続されている。これにより、クレーンCRは、その周囲360度に位置する荷を運搬することが可能になっている。なお、回動範囲は360度未満であってもよい。また、クレーンCRは、水平面内の回動ができないものであってもよい。
【0013】
ブームCR3の一端は基部CR2に回動可能に接続されている。ブームCR3の他端には図示しない滑車が設けられており、この滑車からケーブルCR4が下垂する構成となっている。
【0014】
ケーブルCR4は、荷を吊り上げるための索であり、その先端に荷を引っ掛けるためのフックCR5が取り付けられている。荷をクレーンCRで移動させる際には、その荷をフックCR5に玉掛けして吊り上げる。
【0015】
クレーン室CR6は、クレーンCRを操作するための各種装置を収容した空間となっており、クレーンCRのオペレータ(以下、単にオペレータと呼ぶ)はクレーン室CR6からクレーンCRの操作を行う。例えば、オペレータは、ブームCR3の長さの調整、ケーブルCR4の巻き上げ/巻き下ろしによるフックCR5(荷)の昇降、基部CR2の構造体の回動などの操作を行うことができる。
【0016】
また、クレーンCRのブームCR3の先端部付近には、計測装置3が取り付けられている。計測装置3は、クレーンCRの吊荷およびその周囲の物体の表面を示す点を少なくとも含む点群データを生成する。例えば、
図2のような状態で計測装置3により点群データを生成した場合、円錐形の計測領域AR1内の各物体、具体的には吊荷A1、物体B1およびB2等の表面の位置を示す点群データが生成される。なお、計測領域AR1の広さは計測装置3の高さ(ブームCR3の長さと角度)に応じて変化し得る。
【0017】
計測装置3は、上述の点群データを生成可能なものであればよい。例えば、計測装置3として各種レーザスキャナ等を適用することができる。例えば、計測装置3としてLiDAR(Light Detection And Ranging)を適用してもよい。また、点群データのデータ形式は特に限定されない。本実施形態では、点群データに含まれる各点が、互いに直交するxyzの3つの軸により規定される直交座標系における座標値(x,y,z)で表される例を説明する。例えば、
図2に示すように鉛直方向下向きをx軸方向の正の向きとし、x軸に直交する水平面上に互いに垂直なy軸とz軸を規定した座標系を適用してもよい。この場合、yz平面が計測対象の面ということになる。また、当該座標系における原点、すなわち座標値が(0,0,0)の点を、計測装置3の位置としてもよい。座標値の単位は例えばメートルであってもよい。
【0018】
情報処理装置1は、計測装置3が生成する点群データを用いて、吊荷と当該吊荷の周囲の物体を検出すると共に、それらの間の距離を算出する。例えば、
図2のような状態においては、情報処理装置1は、吊荷A1と物体B1との距離、および吊荷A1と物体B2との距離をそれぞれ算出する。
【0019】
警報装置2は、情報処理装置1が算出する距離、すなわち吊荷と、吊荷の周囲の物体との間の距離に応じて警報を発する。例えば、警報装置2は、吊荷A1と物体B1またはB2との距離が所定の閾値(例えば2m)以下になったときに警報を発してもよい。これにより、オペレータが吊荷A1と物体B1またはB2との接近に気付かずに吊荷A1を物体B1またはB2に接触させてしまうことを防ぐことができる。なお、警報は、オペレータが認識可能な態様で行えばよい。例えば、警報装置2は、音、光、振動、および画像の表示、の何れかまたはこれらの複数の組み合わせにより警報を行うものであってもよい。
【0020】
以上のように、監視システム100は、クレーンCRの吊荷A1およびその周囲の物体B1およびB2の表面を示す点を少なくとも含む点群データを生成する計測装置3と、計測装置3が生成する点群データを用いて、吊荷A1と当該吊荷A1の周囲の物体B1またはB2との間の距離を算出する情報処理装置1と、情報処理装置1が算出する距離に応じて警報を発する警報装置2と、を含む。詳細は後述するが、情報処理装置1によれば、少ない演算量で吊荷A1とその周囲の物体B1またはB2との距離を算出することができる。また、算出した距離に応じて警報を発するので、クレーンCRの安全管理に寄与することができる。なお、計測領域AR1内に作業員等が立ち入った場合、吊荷A1と立ち入った人物との距離が算出されるから、情報処理装置1は、作業員等の安全確保にも寄与する。
【0021】
監視システム100の装置構成は適宜変更することができる。例えば、情報処理装置1と計測装置3は、1つの筐体を有する1つの装置として構成することもできる。情報処理装置1と警報装置2についても同様である。また、監視システム100には、例えば、音声により警告を行う警報装置2に加えて、吊荷とその周囲の物体とを示す画像を表示するモニタリング装置が含まれていてもよい。
【0022】
また、監視システム100に含まれる各装置はバッテリで駆動するものであってもよい。また、監視システム100に含まれる各装置間での通信は、無線通信で行われてもよいし、有線通信で行われてもよい。また、監視システム100において、情報処理装置1を配置する場所は任意であり、特に限定されない。例えば、クレーンCRから離れた位置にあるコントロールセンター等に情報処理装置1を配置してもよい。また、例えば、クレーン室CR6に情報処理装置1を配置してもよく、この場合、情報処理装置1に警報装置2の機能を持たせて、警報装置2を省略してもよい。
【0023】
〔スキャンパターンについて〕
計測装置3によって計測領域をスキャンする際のスキャンパターンとしては様々なものを適用することができる。これについて
図3に基づいて説明する。
図3は、スキャンパターンの例を示す図である。より詳細には、
図3には、スキャンパターン31および32の2つを示している。同図では、破線矢印によりスキャンの経路を示している。
【0024】
スキャンパターン31は、y方向(水平方向)に平行に等間隔でスキャンするパターンである。スキャンパターン31は、特許文献1にも記載されている一般的なパターンである。スキャンパターン31を適用する場合、例えば最も奥側の破線矢印で示される経路でのスキャンにより得られた点群データから順に物体の輪郭を検出していくことにより、一連の輪郭線を特定することができる。
【0025】
スキャンパターン31には、隣接する破線矢印間の部分における情報が得られず、この部分に物体が存在する場合に検出漏れが生じるおそれがあるという欠点がある。このような欠点を解消したのがスキャンパターン32である。スキャンパターン32は、複数の紡錘型の経路が中央で交わる花型のパターンである。スキャンパターン32では、スキャンの経路が曲線状であり、z軸方向およびy軸方向に対して斜め方向の経路を含むため、スキャンパターン31と比べて物体の検出漏れの可能性が低くなっている。詳細は後述するが、情報処理装置1によれば、スキャンパターン31および32の何れを適用した場合であっても、またこれら以外のスキャンパターンを適用した場合であっても、そのスキャンによって得られた点群データから物体検出等の処理を適切に行うことができる。
【0026】
〔装置構成〕
図1に基づいて情報処理装置1の構成を説明する。
図1は、情報処理装置1の要部構成の一例を示すブロック図である。図示のように、情報処理装置1は、情報処理装置1の各部を統括して制御する制御部10と、情報処理装置1が使用する各種データを記憶する記憶部11を備えている。情報処理装置1は、一例として、パーソナルコンピュータ、サーバー、またはワークステーションであってもよい。
【0027】
また、情報処理装置1は、情報処理装置1が他の装置と通信するための通信部12を備えている。通信部12は、警報装置2を制御するためのインターフェースとして機能すると共に、計測装置3から点群データを取得するためのインターフェースとしても機能する。なお、警報装置2との通信と計測装置3との通信をそれぞれ別の通信部を介して行うようにしてもよい。通信部12は、有線通信を行うものであってもよいし、無線通信を行うものであってもよい。例えば、通信部12として、USB(Universal Serial Bus)により通信を行うものを適用してもよいし、無線または有線のLAN(Local Area Network)により通信を行うものを適用してもよい。
【0028】
また、情報処理装置1は、情報処理装置1に対する各種データの入力を受け付ける入力部13、および情報処理装置1が各種データを出力するための出力部14を備えている。出力部14は、例えば画像を表示する表示部であってもよい。この場合、情報処理装置1は、点群データや、点群データから検出した物体、および物体間の距離の計算結果等を出力部14に表示させることができる。
【0029】
なお、このような情報の表示先は特に限定されない。例えば、情報処理装置1に接続された表示装置に表示させてもよいし、
図2に示した警報装置2が表示部を備えている場合には当該表示部に表示させてもよいし、警報装置2に接続された表示装置に表示させてもよい。外部の表示装置に表示させる場合、例えばリモートデスクトップ機能、VNC(Virtual Network Computing)機能、あるいはSSH(Secure Shell)のX11フォーワード機能を利用してもよい。また、専用アプリにより外部の表示装置に情報を表示させることもできる。また、通常の撮影装置を計測装置3の近傍に配置し、当該撮影装置で撮影した画像を上述のような情報と共に表示させてもよい。
【0030】
また、制御部10には、データ取得部101、クラスタリング部102、投影部103、物体検出部104、輪郭検出部105、統合部106、距離算出部107、報知制御部108、同一性判定部109、および表示制御部110が含まれている。
【0031】
データ取得部101は、複数の物体の表面を示す点を少なくとも含む点群データを取得する。例えば、データ取得部101は、通信部12を介した通信により、
図2に示される計測装置3により生成された点群データを取得してもよい。点群データは、三次元空間における各点の位置を示す座標値であってもよい。
【0032】
クラスタリング部102は、データ取得部101が取得する点群データに含まれる各点をクラスタリングする。点群データのクラスタリングは、点群データの分割あるいは分類と言い換えることもできる。点群データのクラスタリングは各点の位置関係に基づいて行えばよい。つまり、クラスタリング部102は、位置が近い点を1つのクラスタに分類するか、あるいは同一の平面上に位置する点を1つのクラスタに分類すればよい。クラスタリングの具体的な方法については後記「クラスタリング」の項目で説明する。
【0033】
投影部103は、点群をグリッドが設定された水平面に投影する。グリッドおよび投影方法の詳細については後記「点群データの投影」の項目で説明する。
【0034】
物体検出部104は、データ取得部101が取得する、複数の物体の表面を示す点を少なくとも含む点群データから、当該複数の物体を検出する。物体検出の具体的な方法については後記「物体検出」の項目で説明する。
【0035】
輪郭検出部105は、物体検出部104が検出する物体の輪郭を検出する。輪郭検出の具体的な方法については後記「輪郭検出」の項目で説明する。
【0036】
統合部106は、物体検出部104が検出する複数の物体のうち、所定の条件を満たすものを統合して1つの物体とする。統合の具体的な方法については後記「物体の統合」の項目で説明する。
【0037】
距離算出部107は、物体検出部104が検出した複数の物体のうち距離の算出対象となる2つの物体のそれぞれにおける任意の位置を基準として両物体の対向する輪郭部分を特定し、当該輪郭部分の間の距離を当該物体の間の距離として算出する。距離算出の具体的な方法については後記「距離の算出」の項目で説明する。
【0038】
報知制御部108は、クレーンCRのオペレータ等に対して距離算出部107が算出する距離に応じた報知を行う。例えば、報知制御部108は、距離算出部107が算出する距離、すなわち吊荷とその周囲の物体との距離が所定の閾値以下となったときに、警報装置2に警報を出力させてもよい。無論、報知の態様および報知の内容は任意であり、この例に限られない。例えば、報知制御部108は、出力部14を介して報知を行ってもよいし、距離算出部107が算出する距離を報知してもよい。また、画像の表示により報知を行ってもよく、この場合、報知制御部108は省略し、表示制御部110が報知を行うようにしてもよい。
【0039】
同一性判定部109は、異なる時点で取得された点群データからそれぞれ検出された物体が同一の物体であるか判定する。同一性判定の具体的な方法については後記「表示画面例」の項目で説明する。
【0040】
表示制御部110は、物体検出部104が検出する物体を表示装置に表示させる。表示装置は情報処理装置1が備えているものであってもよいし、他の装置が備えているものであってもよい。検出された物体の表示については後記「表示画面例」の項目で説明する。
【0041】
以上のように、情報処理装置1は、複数の物体の表面を示す点を少なくとも含む点群データから、当該複数の物体を検出する物体検出部104と、物体検出部104が検出した複数の物体のうち距離の算出対象となる2つの物体のそれぞれにおける任意の位置を基準として両物体の対向する輪郭部分を特定し、当該輪郭部分の間の距離を当該物体の間の距離として算出する距離算出部107と、を備える。
【0042】
上記の構成によれば、距離の算出対象となる2つの物体のそれぞれにおける任意の位置を基準として各物体の対向する輪郭部分を特定し、当該輪郭部分の間の距離を当該物体の間の距離として算出する。このため、物体の間の距離の算出において、検出した物体の輪郭線上の点の全てを用いる必要がなく、その一部を用いれば足りる。
【0043】
したがって、上記の構成によれば、点群データから検出した各物体の輪郭線上の全ての点を対象として物体間の距離を算出する従来技術と比べて、距離の算出における演算量を抑えることができるという効果を奏する。
【0044】
〔クラスタリング〕
クラスタリング部102は、例えば、表面関数を用いたRANSAC(Random Sample Consensus)によりクラスタリングを行ってもよい。この場合、クラスタリング部102は、三次元の点群データからランダムに点をサンプリングし、サンプリングした点のうち所定の関数(ここでは表面関数)上に位置する複数の点を1つのクラスタとする。すなわち、クラスタリング部102は、RANSACを一回実行することにより、一つの表面上の点(その表面上の全ての点ではない)を取得することができる。次に、クラスタリング部102は、元の点群データからクラスタを決定した点を除いて再度RANSACを実行し、別のクラスタを取得する。クラスタリング部102は、このような処理を複数回(例えば残った点数が元の点群データに含まれる点数の10%以下等になるまで)繰返すことにより、点群データを複数の表面にそれぞれ対応するクラスタに分類することができる。
【0045】
また、例えば、クラスタリング部102は、ユークリッドクラスタリング(Euclidean Cluster Extraction)により点群データのクラスタリングを行ってもよい。この場合、クラスタリング部102は、まず、点群データから1つの点をサンプリングする。そして、クラスタリング部102は、その点から所定距離以内の点を探索して、検出した点からさらに所定距離以内の点を探索する、という処理を所定距離以内の点が検出されなくなるまで繰り返し、その過程で検出した複数の点を1つのクラスタとする。RANSACを用いる場合と同様に、ユークリッドクラスタリングを複数回繰り返すことにより、点群データを複数のクラスタに分類することができる。
【0046】
〔点群データの投影〕
上述のようにしてクラスタリング部102が分類した各クラスタの点群を規則的に処理するために、投影部103は、当該点群をグリッドが設定された水平面に投影する。ここで「規則的」とは各要素が順番通りに並べられていることを指す。例えば、写真の二次元画像では各画素が順番通りに並べられているから当該二次元画像は「規則的」である。一方、点群データを上述したRANSACやユークリッドクラスタリングによって分類した各クラスタに含まれる点は順番通りに並べられておらず「不規則的」である。投影部103の投影により、このような不規則的な点を規則的に処理することができるようになる。
【0047】
以下では、点群データの投影について
図4に基づいて説明する。
図4は、1つのクラスタに含まれる各点を、グリッドが設定された水平面(gy-gz平面)に投影した例を示す図である。
【0048】
点群を水平面に投影するということは、元の点の座標(x,y,z)のうちyとzの値のみを利用することを意味する。また、グリッド座標(gy,gz)は、(y,z)の値を基に算出される整数値とする。例えば、投影部103は、下記の式により(y,z)の値をグリッド座標(gy,gz)に変換してもよい。
gy=y÷係数
gz=z÷係数
なお、上述のようにグリッド座標(gy,gz)は整数値とする。また、上記の係数は、一つのグリッド要素(一つのグリッド座標に対応する要素)内になるべく複数の点が入るように調整する。
図4の例では、gyが0~13、gzが0~11の範囲でグリッドが設定されている。このようなグリッドを設定し、当該グリッドに点群データを投影することにより、例えば
図3に示したスキャンパターン32のような不規則なスキャンにより計測された点群データについても規則的に処理することが可能になる。
【0049】
上述のような投影を行うことにより、あるクラスタに分類された点群の範囲を、グリッド座標により表すことができる。例えば、
図4のgy=9の列では、gz=1からgz=8までの範囲の各グリッドに点が含まれている。よって、この列においてクラスタ(つまり物体)が占める範囲は、グリッド座標(9,1)のグリッド要素41から、グリッド座標(9,8)のグリッド要素42までということになる。以下では、ある列において点が含まれるグリッドのgzの値のうち最小値をgMin_zと呼び、最大値をgMax_zと呼ぶ。例えば、gy=2の列ではgMin_zは4であり、gMax_zは6である。輪郭検出部105は、点が存在する列のそれぞれについてgMin_zとgMax_zを特定する。なお、
図4では、gzの値がgMin_zまたはgMax_zであるグリッド要素をグレーの網掛けで示している。
【0050】
また、
図4には、グリッド要素41の拡大図についても示している。図示のように、グリッド要素41には、点411~414の計4つの点が含まれている。グリッド要素41は、gzの値がgMax_zであり、クラスタ(物体)の上端に位置しているから、点411~414のうち最も上方(gz=0に近い側)に位置する点412は、当該クラスタ(物体)最も外側の部分すなわち輪郭線上に位置する点とみなすことができる。
【0051】
〔輪郭検出〕
輪郭検出部105は、上述のように、投影部103により点が投影されたグリッド要素の各列についてgMin_zとgMax_zを特定する。また、輪郭検出部105は、輪郭(より正確には輪郭を構成する点)を検出する。輪郭を構成する点は、輪郭を構成するグリッド要素に含まれる点のうち最も外側の点であり、
図4では当該点を黒色の星印で示している。例えば上述の点412も黒色の星印で示されている。
【0052】
具体的には、輪郭検出部105は、点が投影されたグリッド要素の列において、gMin_zのグリッド要素に含まれるzが最小の点と、gMax_zのグリッド要素に含まれるzが最大の点とを、当該列における輪郭を構成する点として検出する。輪郭を構成する点の検出は、例えば
図5に示すような手順で行ってもよい。
図5は、輪郭の検出手順の例を示す図である。
【0053】
図5の例では、輪郭検出部105は、(1)~(4)の工程を当該番号の順に実行することにより、gMin_zとgMax_zを特定すると共に輪郭を構成する点を検出する。具体的には、輪郭検出部105は、工程(1)において、gy=0の列に含まれるグリッド要素を上から(gz=0のグリッド要素から)順に探索し、点を含むグリッド要素の検出を試みる。
図5の例ではgy=0の列には点を含むグリッド要素はないため、輪郭検出部105は、次の列(gy=1の列)の探索に進み、この列にも点を含むグリッド要素はないため、さらに次の列(gy=2の列)の探索に進む。
【0054】
ここで、gy=2の列には点を含むグリッド要素がある。輪郭検出部105は、当該列におけるグリッド要素を上から(gz=0から)順に探索し、最初に検出した、点を含むグリッド要素であるグリッド要素51のgzの値である4を当該列のgMin_zと特定する。また、輪郭検出部105は、グリッド要素51に含まれる点のうち最も上側(gz=0に近い側)に位置する点511を、輪郭を構成する点として検出する。
【0055】
次に、輪郭検出部105は、gy=2の列において、gMin_zを特定すると共に、輪郭を構成する点を検出した後、次の列(gy=3の列)の探索に進む。gy=3の列においても、gy=2の列と同様に、点を含むグリッド要素のうち最も上側に位置するものが特定されて、そのグリッド要素のgzの値がgMin_zの値と特定されると共に、当該グリッド要素に含まれる最も上側の点が輪郭を構成する点として検出される。そして、輪郭検出部105は、全ての列の探索が終了するまで(
図5の例ではgy=13の列の探索が終了するまで)同様の処理を繰り返す。
【0056】
続く工程(2)では、輪郭検出部105は、上端の行から下端の行まで順に探索を行う。この探索は、各行において右端から左端に向けて行われる。工程(2)の探索において、輪郭検出部105は、最初に検出した、点を含むグリッド要素に含まれる点のうち最も右側に位置する点を、輪郭を構成する点として検出する。例えば、gz=0の行の探索では、(gy,gz)=(0,8)のグリッド要素が特定され、このグリッド要素に含まれる最も右側に位置する点(y座標の値が最も大きい点)が輪郭を構成する点として検出される。
【0057】
なお、工程(1)で輪郭を構成する点を検出済みであるグリッド要素については、再度輪郭を構成する点を検出する必要はない。輪郭を構成する点を二重に検出しないようにする方法としては、例えば各グリッド要素にDone変数を設定しておく方法が挙げられる。具体的には、輪郭検出の開始時には各グリッド要素のDone変数を「未対応」としておき、輪郭を構成する点の検出(あるいはgMin_zまたはgMax_zの特定)が行われたグリッド要素のDone変数を「対応済み」に更新する。これにより、「対応済み」のグリッド要素について二重に輪郭の検出(あるいはgMin_zまたはgMax_zの特定)を行わないようにすることができる。なお、「対応済み」となっているグリッド要素については、以下説明する工程(3)および(4)においても検出の対象外とする。
【0058】
なお、輪郭検出部105は、(1)と(2)の両工程で特定したグリッド要素については、当該グリッド要素に含まれる点のうち、最も右上端に近いものを、輪郭を構成する点として検出してもよい。同様に、輪郭検出部105は、(2)と(3)の両工程で特定したグリッド要素については、最も右下端に近い点を、輪郭を構成する点として検出してもよく、(3)と(4)の両工程で特定したグリッド要素については、最も左下端に近い点を、輪郭を構成する点として検出してもよい。
【0059】
工程(2)の終了後、輪郭検出部105は工程(3)に進む。工程(3)では、輪郭検出部105は、右端の列から左端の列まで順に探索を行う。工程(3)の探索は、各列において下端から上端に向けて行われる。工程(3)の探索において、輪郭検出部105は、最初に検出した、点を含むグリッド要素のgzの値を当該列のgMax_zと特定する。また、輪郭検出部105は、グリッド要素に含まれる点のうち最も下側に位置する点を、輪郭を構成する点として検出する。
【0060】
そして、工程(3)の終了後、輪郭検出部105は工程(4)に進む。工程(4)では、輪郭検出部105は、下端の行から上端の行まで順に探索を行う。工程(4)の探索は、各行において左端から右端に向けて行われる。工程(4)の探索において、輪郭検出部105は、最初に検出した、点を含むグリッド要素に含まれる点のうち最も左側に位置する点を、輪郭を構成する点として検出する。
【0061】
なお、計測装置3の計測した点群データに含まれるノイズ等の影響により、実際の物体の位置から離れた位置に点が検出されることがある。このため、輪郭検出部105は、点を含むグリッド要素のうち、その周囲に点を含むグリッド要素が所定数以上存在するグリッド要素を探索してもよい。例えば、輪郭検出部105は、
図5のグリッド要素51について、これに隣接する8つのグリッド要素の中に、点を含むものがいくつ含まれているかカウントし、その数が所定の閾値以上である場合に、グリッド要素51のgzの値をgMin_zと特定してもよい。例えば、閾値を2とした場合、グリッド要素51に隣接する、点を含むグリッド要素は3つ存在するから、グリッド要素51のgzの値がgMin_zと特定される。
【0062】
以上のような手順で物体の輪郭を構成する点を検出した場合、検出された点を検出された順に繋ぐことにより、物体の輪郭線を描画することが可能になる。なお、輪郭線を描画する必要がなければ、任意の手順で輪郭を構成する点を検出すればよい。また、輪郭検出は必須ではなく、輪郭検出を行わない場合には、輪郭検出部105は、上述の工程(1)および(3)により、gMin_zとgMax_zを特定すればよく、工程(2)(4)は不要となる。
【0063】
以上のように、情報処理装置1は、点群データの中から、物体検出部104が検出する複数の物体の輪郭を構成する点を検出する輪郭検出部105を備えていてもよい。詳細は後述するが、物体の輪郭を構成する点を検出する場合、距離算出部107は、輪郭検出部105が検出する点の中から、距離の算出に用いる輪郭部分を構成する点を特定することができる。これにより、物体上の全ての点の中から、距離の算出に用いる輪郭部分を特定する場合と比べて、物体間の距離の算出における演算量を抑えることができる。
【0064】
〔物体の検出〕
ここでは、物体検出部104による物体検出の具体的な方法について再度
図2を参照して説明する。
図2に示したクレーンCRの吊荷A1付近の点群データが取得された場合、物体検出部104は、当該点群データから吊荷A1、物体B1、B2、および地面を検出することができる。これらを検出対象とする場合、物体検出部104は、まず地面を検出し、続いて吊荷A1を検出し、最後に物体B1、B2を検出する。
【0065】
地面の検出において、物体検出部104は、クラスタリング部102が点群を分類したクラスタのうち、最も深い位置のクラスタを地面として検出してもよい。なお、ここで、深い位置とは計測装置3まで距離が遠い位置(x座標の値が大きい位置)である。例えば、物体検出部104は、クラスタリング部102が点群を分類した各クラスタについて、当該クラスタに含まれる全ての点のx座標の値の平均値を算出し、算出された平均値が最大のクラスタを地面として検出してもよい。あるいは、物体検出部104は、各クラスタの各グリッドに含まれる点のx座標の値の平均値が最大のクラスタを地面として検出してもよい。
【0066】
また、物体検出部104は、地面として検出したクラスタと、近い深さのクラスタについても地面として検出してもよい。例えば、物体検出部104は、最も深い位置のクラスタと、該クラスタからの距離が所定の閾値以下であるクラスタを地面として検出してもよい。
【0067】
地面の検出後に行われる吊荷A1の検出において、物体検出部104は、クラスタリング部102が点群を分類したクラスタのうち、地面に対応するクラスタを除いたものの中から、吊荷A1に対応するクラスタを検出する。例えば、計測装置3をフックCR5の真上に取り付けた場合、吊荷A1に対応する点は、点群データをyz平面に投影したときに中央付近に位置することになる。このように、吊荷A1に対応する点の分布範囲は予め特定することが可能であるから、物体検出部104は、当該分布範囲内で吊荷A1に対応するクラスタを探索すればよい。
【0068】
例えば、物体検出部104は、各クラスタの点をyz平面に投影したときに、上記の分布範囲内にクラスタの中心が存在し、かつ、yz平面上においてクラスタが占める面積がフックCR5の上面よりも大きく、かつ、深さが最も浅いクラスタを吊荷A1に対応するクラスタとして検出してもよい。なお、フックCR5および吊荷A1が揺れることを考慮して、上記の分布範囲は広めに設定することが好ましい。
【0069】
そして、物体検出部104は、クラスタリング部102が点群を分類したクラスタのうち、地面に対応するクラスタと、吊荷A1に対応するクラスタとを除いた残りを、物体B1、B2のクラスタとする。以上の処理により、点群データから地面と吊荷A1と物体B1、B2が検出される。
【0070】
〔物体の統合〕
点群データをクラスタリングした際に、1つの物体が複数のクラスタに分かれてしまうことがある。また、
図2の吊荷A1のように、深さの異なる複数の面からなる物体は、各面が異なるクラスタに分類され得る。統合部106は、このように実際には1つの物体であるが、その各部分が異なるクラスタに分類されたことにより、各部分が異なる物体として検出されたものを1つの物体に統合する。
【0071】
統合は、所定の条件を満たすクラスタ(物体)を対象として行えばよい。例えば、統合部106は、統合するか否かの判定対象となる一組の物体の高さと、それら物体の面の深さが所定の条件を満たし、かつ、当該一組の物体のグリッドが重畳する場合に、それらの物体を統合して1つの物体としてもよい。
【0072】
ここで、物体の高さと、物体の面の深さに関する上記の条件について
図6に基づいて説明する。
図6は、物体を統合する条件のうち物体の高さと、物体の面の深さに関する条件を説明する図である。
図6には、吊荷がA2である場合と、吊荷がA3でありその下方に物体B3が位置している場合の例を示している。なお、吊荷A2、A3に架けられているケーブルやフックは図示を省略している。
【0073】
吊荷A2の高さはH1であり、吊荷A2の面A21と面A22の深さの差はd1(d1<H1)である。このように、吊荷A2の面A21との深さの差が吊荷A2の高さより小さい面A22は、吊荷A2上の面である可能性がある。
【0074】
一方、吊荷A3は、吊荷A2と同じく高さがH1であるが、吊荷A3の上面である面A31と、物体B3の上面である面B31の深さの差はd2(d2>H1)である。このように、面A31との深さの差が吊荷A3の高さより大きい面は、吊荷A3上の面ではない。
【0075】
このため、統合部106は、高さが既知の物体の面が検出されている場合、その面との深さの差が上記の高さ未満である面は統合の条件を満たしていると判定してもよい。一方、統合部106は、高さが既知の物体の面との深さの差が当該高さよりも大きい面は統合の条件を満たしていないと判定してもよい。
【0076】
また、統合部106は、物体の高さに所定のマージンを加えて上記の判定を行ってもよい。つまり、統合部106は、「面の深さの差<物体の高さ+(所定のマージン)」の条件を満たす面は、統合の条件を満たしていると判定してもよい。なお、物体の高さは、例えば入力部13を介して入力する等して、予め情報処理装置1に記憶させておけばよい。
【0077】
図6の吊荷A2の例では、統合部106は、物体検出部104が検出した吊荷A2(より正確には吊荷A2の上面のうち最も浅い位置にある面A21)と、吊荷A2とは別の物体として検出された面A22の深さの差d1を算出する。そして、統合部106は、予め記憶されている高さH1に所定のマージンを加えた値とd1とを比較し、統合の条件を満たしていると判定する。
【0078】
一方、吊荷A3の例では、統合部106は、物体検出部104が検出した吊荷A3(より正確には吊荷A3の上面のうち最も浅い位置にある面A31)と、吊荷A3とは別の物体として検出された面B32の深さの差d2を算出する。そして、統合部106は、予め記憶されている高さH1に所定のマージンを加えた値とd2とを比較し、統合の条件を満たしていないと判定する。
【0079】
続いて、グリッドの重畳に関する条件について
図7に基づいて説明する。
図7は、統合するか否かの判定対象となる各クラスタに含まれる点を、グリッドが設定された水平面(gy-gz平面)に投影した例を示す図である。
図7には、例71と例72の2つの例を示している。
【0080】
例71と例72の何れにおいても、クラスタ1に分類された点群と、クラスタ2に分類された点群とがgy-gz平面に投影されている。この段階において、クラスタ1に分類された点群と、クラスタ2に分類された点群とは、それぞれ別の物体として検出されている。
【0081】
ここで、実線で枠囲みしたグリッドには、クラスタ1に分類された点と、クラスタ2に分類された点との両方が含まれている。クラスタ1に分類された点群に対応する物体と、クラスタ2に分類された点群に対応する物体とが、1つの物体である場合には、このようなグリッドの重畳が生じる。なお、グリッドが重畳するとは、2つのクラスタ(物体)上の点をそれぞれ含むグリッドが存在することを意味する。
【0082】
そこで、統合部106は、2つのクラスタ(物体)上の点をそれぞれ含むグリッドの数が閾値以上である場合に、当該2つの物体を統合して1つの物体としてもよい。例えば、統合部106は、下記の演算によりグリッドの数を算出することができる。
【0083】
まず、統合部106は、統合するか否かの判定対象である2つのクラスタについて、グリッドのgMax_zとgMin_zを比較する。例えば、クラスタ1と2が、統合するか否かの判定対象である場合、統合部106は、クラスタ1のgMax_zおよびgMin_zと、クラスタ2のgMax_zおよびgMin_zとを比較する。この場合、クラスタ1のgMax_zとクラスタ2のgMax_zの大小関係、クラスタ1のgMax_zとクラスタ2のgMin_zの大小関係、クラスタ1のgMin_zとクラスタ2のgMax_zの大小関係、およびクラスタ1のgMin_zとクラスタ2のgMin_zの大小関係がそれぞれ比較される。なお、大小関係の比較は、クラスタ1のgMax_zおよびgMin_zと、クラスタ2のgMax_zおよびgMin_zの値が何れも有効な値である場合に行われる。
【0084】
次に、統合部106は、上記の比較結果に応じて重畳するグリッドの数を算出する。具体的には、統合部106は、下記の1~4の何れかにより1つの列において重畳するグリッドの数を算出する。統合部106は、この処理を各列のグリッドについて行い、重畳するグリッドの総数を算出する。
1:(クラスタ1のgMin_z)≦(クラスタ2のgMin_z)かつ
(クラスタ2のgMin_z)≦(クラスタ1のgMax_z)である場合、
重畳するグリッド数は(クラスタ1のgMax_z)-(クラスタ2のgMin_z)+1とする。
2:(クラスタ2のgMin_z)≦(クラスタ1のgMin_z)かつ
(クラスタ1のgMin_z)≦(クラスタ2のgMax_z)である場合、
重畳するグリッド数は(クラスタ2のgMax_z)-(クラスタ1のgMin_z)+1とする。
3:(クラスタ1のgMin_z)≦(クラスタ2のgMin_z)かつ
(クラスタ2のgMax_z)≦(クラスタ1のgMax_z)である場合、
重畳するグリッド数は(クラスタ2のgMax_z)-(クラスタ2のgMin_z)+1とする。
4:(クラスタ2のgMin_z)≦(クラスタ1のgMin_z)かつ
(クラスタ1のgMax_z)≦(クラスタ2のgMax_z)である場合、
重畳するグリッド数は(クラスタ1のgMax_z)-(クラスタ1のgMin_z)+1とする。
【0085】
例えば、
図7の例71におけるgy=6の列では、クラスタ1のgMin_z=2、クラスタ1のgMax_z=8、クラスタ2のgMin_z=8、クラスタ2のgMax_z=9である。これらの値は、上記1の条件を満たすから、この列において重畳するグリッド数は(クラスタ1のgMax_z=8)-(クラスタ2のgMin_z=8)+1=1と算出される。gy=7の列からgy=10の列についても同様である。例71では重畳するグリッドの総数は5となる。
【0086】
一方、
図7の例72におけるgy=8の列では、クラスタ1のgMin_z=1、クラスタ1のgMax_z=8、クラスタ2のgMin_z=3、クラスタ2のgMax_z=8である。これらの値は、上記3の条件を満たすから、この列において重畳するグリッド数は(クラスタ2のgMax_z=8)-(クラスタ2のgMin_z=3)+1=6と算出される。例72では重畳するグリッドの総数は6となる。
【0087】
統合部106は、以上のようにして算出したグリッドの総数、すなわち2つの物体上の点をそれぞれ含むグリッドの数が、所定の閾値以上である場合に、当該2つの物体を統合して1つの物体としてもよい。例えば、上記閾値を3とした場合、例71および72の何れにおいても、クラスタ1の物体とクラスタ2の物体は統合される。このような処理は、統合の条件を満たさないクラスタ(物体)のみが残る状態となるまで繰り返される。
【0088】
なお、グリッド要素のサイズが小さく設定された場合、1つの物体が複数の物体に分かれて検出されていたとしても、各物体上の点が1つのグリッドに含まれにくくなる。この場合、統合の対象となる2つの物体のうち少なくとも一方について、gMin_zとgMax_zをより大きい値に補正した上で上述の判定を行ってもよい。補正の方法は特に限定されず、例えば所定の値を加算することにより補正してもよいし、1より大きい所定の値を乗じることにより補正してもよい。
【0089】
以上のように、1つの物体が複数の物体に分かれて検出された場合、検出された各物体は、その輪郭線の一部が近接した位置となる。そして、輪郭線上にあるグリッドには、各物体上の点がそれぞれ含まれることになる。
【0090】
そこで、統合部106は、物体検出部104が検出する複数の物体上の各点をグリッドが設定された水平面上に投影したときに、2つの物体上の点をそれぞれ含むグリッドの数が閾値以上である場合に、当該2つの物体を統合して1つの物体とする。これにより、1つの物体が複数の物体に分かれて検出された場合であっても、それらの物体を正しく1つの物体として扱うことが可能になる。
【0091】
また、以上のように、統合部106は、上記の条件に加えて、2つの物体の面の深さの差が、一方の物体の高さ(あるいは物体の高さに所定のマージンを加えた値)よりも小さいという条件を満たす場合に、当該2つの物体を統合して1つの物体としてもよい。これにより、上下に離れた位置にある物体を1つの物体に統合してしまうことを防ぐことができる。
【0092】
なお、従来のクラスタの統合判定技術には、判定対象の各クラスタの幅に基づいて統合の可否を判定するものがある。例えば、
図7の例72において、クラスタ1はgy=2からgy=8までの範囲に存在するからgy方向の幅は7である。一方、クラスタ2はgy=8からgy=10までの範囲に存在するからgy方向の幅は2である。よって、
図7の例72の例では、従来法を適用してもクラスタ1と2が重なっていると判定し、正しく統合することができる。
【0093】
これに対し、例71において上記従来法を適用した場合、クラスタ1のgy方向の幅はgy=2からgy=11までの10となり、これはクラスタ1の実際の幅よりも大きい。このように、クラスタの分布範囲によっては、従来法を適用したときに、実際には2つの物体であるものを、1つの物体に誤って統合してしまうおそれがある。この点、上述した統合部106による統合方法によれば、クラスタの分布範囲によらず、正確に統合の可否を判定することができる。
【0094】
〔距離の算出〕
距離算出部107による物体間の距離の算出方法について
図8に基づいて説明する。
図8は、物体間の距離の算出方法を説明する図である。
図8には、距離の算出の対象となる2つの物体のそれぞれについて、当該物体上の点の分布範囲を破線81および82で示している。破線81および82は、各物体に対応するクラスタの範囲ともいえる。以下では、破線81に対応する物体を第1の物体、破線82に対応する物体を第2の物体と呼ぶ。第1の物体は例えば吊荷であり、第2の物体は例えば吊荷の付近に存在する物体である。図示は省略しているが、破線81および82の内部には各クラスタに分類された点群が含まれている。これらの点群は水平面(y-z平面あるいはgy-gz平面)に投影されたものである。
【0095】
第1の物体と第2の物体との距離を算出するにあたり、距離算出部107は、第1の物体の中心位置811を特定すると共に、第2の物体の中心位置821を特定する。中心位置811および821の特定方法は特に限定されない。例えば、距離算出部107は、破線81の内部にある全ての点の平均値を、第1の物体の中心位置811としてもよい。また、例えば、距離算出部107は、破線81の内部にある全ての点のうちy座標の最大値から最小値を引いて2で割った値を、第1の物体の中心位置811のy座標とし、同様にして算出したz座標を第1の物体の中心位置811のz座標としてもよい。第2の物体についても同様である。
【0096】
次に、距離算出部107は、水平面上に投影された点群データの中から、第2の物体の中心位置821から最も近い第1の物体上の点P1と、第1の物体の中心位置811から最も近い第2の物体上の点P2とを特定する。点P1と点P2との距離は、第1の物体と第2の物体との距離よりも長くなっている。
【0097】
そこで、距離算出部107は、水平面上に投影された点群データの中から、点P1に最も近い第2の物体上の点P2’と、点P2に最も近い第1の物体上の点P1’とを特定する。
【0098】
このようにして特定された点P1と点P1’を結んだ線分P1-P1’と、点P2と点P2’を結んだ線分P2-P2’とは、
図8に示されるように、第1の物体と第2の物体の対向する輪郭部分に相当する。よって、距離算出部107は、線分P1-P1’と線分P2-P2’との間の距離を算出することにより、第1の物体と第2の物体との距離を求めることができる。
【0099】
ここで、輪郭検出部105が輪郭を検出している場合、距離算出部107は、水平面上に投影された点群データのうち、検出された輪郭上の点の中から点P1、P1’、P2、P2’を特定すればよい。これにより、水平面上に投影された全点群データの中から点P1、P1’、P2、P2’を特定する場合と比べて、これらの点の特定に要する演算量を抑えることができる。
【0100】
なお、輪郭検出部105による輪郭の検出は必須ではない。水平面上に投影された全点群から点P1、P1’、P2、P2’を特定する場合であっても、一方の物体の輪郭上の各点と、他方の物体の輪郭上の各点との距離をそれぞれ算出する従来の手法と比べれば、演算量は低減される。
【0101】
また、輪郭部分の特定において基準とする位置は、距離の算出対象となる2つの物体のそれぞれにおける任意の位置とすることが可能であり、中心位置811および821に限られない。
【0102】
つまり、距離算出部107は、距離の算出対象となる2つの物体を第1の物体および第2の物体としたとき、水平面上に投影した点群データの中から、第2の物体上の任意の位置から最も近い第1の物体上の点P1と、第1の物体上の任意の位置から最も近い第2の物体上の点P2とを特定すると共に、点P1に最も近い第2の物体上の点P2’と、点P2に最も近い第1の物体上の点P1’とを特定し、第1の物体と第2の物体の対向する輪郭部分である線分P1-P1’と線分P2-P2’との間の距離を算出してもよい。
【0103】
上記の構成によれば、4点P1、P2、P1’、P2’を求めるという少ない演算量で第1の物体と第2の物体の対向する輪郭部分を特定することができるので、物体間の距離の算出における演算量を抑えることができる。
【0104】
また、距離算出部107は、中心位置811および821を基準として探索範囲83を設定し、設定した探索範囲83内で、距離の算出に用いる輪郭部分、すなわち点P1、P1’、P2、P2’を特定してもよい。
図8の例では、中心位置811および821を対角の頂点とする長方形を拡大した探索範囲83が設定されている。
【0105】
このように、距離算出部107は、距離の算出対象となる2つの物体のそれぞれの中心位置を基準として当該中心位置の間に設定された探索範囲内で、距離の算出に用いる輪郭部分を特定してもよい。この構成によれば、物体上の全ての点(あるいは輪郭検出部105が検出した輪郭上の全ての点)の中から距離の算出に用いる輪郭部分を特定する場合と比べて、物体間の距離の算出における演算量を抑えることができる。
【0106】
〔表示画面例〕
図9は、物体検出部104が検出した物体の表示画面例を示す図である。
図9に示す画像91には、物体検出部104が検出した物体911と912が描画されている。表示制御部110は、物体検出部104の検出結果等に基づいてこのような画像を生成し、表示装置に表示させる。
【0107】
具体的には、画像91には、y-z平面上における物体911の輪郭線と輪郭線上の点、および物体911上の点群(y-z平面に投影されたもの)が含まれていると共に、「N2 0.3 7.12 -0.4 0.21」との文字列が含まれている。同様に、物体912についても、その輪郭線と輪郭線上の点、および物体912上の点群が含まれていると共に、「7.69 0.13 0.09」との文字列が含まれている。ここで物体912は吊荷であり、物体911は吊荷の周囲に位置する物体である。また、距離の算出に用いた輪郭部分を構成する点(
図8の点P1、P1’、P2、P2’に相当する点)は、他の点と区別できるように黒色で示している。
【0108】
輪郭線は、輪郭検出部105の検出結果に基づいて描画することができる。つまり、表示制御部110は、輪郭検出部105が検出した輪郭を構成する点を、検出順に繋ぐことにより、物体の輪郭線を描画することができる。
【0109】
「N2 0.3 7.12 -0.4 0.21」との文字列は、物体911の識別情報と、物体911から物体912(吊荷)までの距離と、物体911の中心位置座標とを示している。具体的には、「N2」が物体911の識別情報であり、「0.3」が物体911から物体912までの距離(単位は例えばメートル)であり、「7.12 -0.4 0.21」が物体911のxyz空間における中心位置座標である。一方、「7.69 0.13 0.09」との文字列は、物体912のxyz空間における中心位置座標を示している。このように、表示制御部110は、検出された物体に関する各種情報を表示させてもよい。
【0110】
また、表示制御部110は、上述した情報の他にも、例えば計測装置3から物体までの距離等の情報についても表示させてもよい。また、表示制御部110は、距離算出部107が算出する、吊荷とその周囲の物体との距離が所定の閾値以下である場合に、吊荷が周囲の物体に接触する危険があることを報知する警報情報を表示させてもよい。また、通常の撮影装置を計測装置3の近傍に配置した場合、表示制御部110は、上述した各種情報と共に、当該撮影装置で撮影した画像を表示させてもよい。なお、上述した各種の情報のうち、何れを表示させるかを、例えば入力部13を介した入力操作により、ユーザが選択できるようにしてもよい。
【0111】
また、表示制御部110は、吊荷とその周囲の物体の表示色を異ならせてもよく、周囲の物体が複数検出された場合にはそれら物体のそれぞれについて表示色を異ならせてもよい。
【0112】
ここで、吊荷の位置や吊荷の周囲の物体の位置は時系列で変化する可能性がある。このため、計測装置3は、時系列の点群データを生成し、情報処理装置1は、各時点の点群データからその時点における物体の検出と、物体間の距離の演算を行うことが望ましい。そして、表示制御部110は、ある時点で計測された点群データから検出された物体について描画した後、次の時点で計測された点群データから物体が検出されたときには、先の描画内容を最新の検出結果に基づいて更新することが好ましい。
【0113】
例えば、計測装置3が時系列の点群データを生成する場合、データ取得部101は、ある時点で生成された点群データを取得し、それらをフレームバッファに書き込むようにし、新たな点群データを取得する度に、古いフレームバッファを削除してもよい。これにより、常に最新の点群データを用いた物体検出とその物体の描画とを行うことができる。
【0114】
また、ある時点で計測された点群データから物体が検出されると共に、次の時点で計測された点群データからも物体が検出された場合、同一性判定部109は、各時点で計測された点群データから検出された物体が同一の物体であるか否かを判定してもよい。そして、表示制御部110は、同一性判定部109が同一の物体と判定した物体を共通の表示態様で表示させてもよい。
【0115】
これにより、異なる時点で取得された点群データからそれぞれ検出された物体が同じ物体である場合に、そのことをユーザに容易に認識させることができる。例えば、表示制御部110は、同一性判定部109が同一の物体と判定した物体の全体あるいは輪郭線を同じ色で表示してもよい。これにより、描画内容の更新前後における物体の対応関係をユーザに容易に認識させることができる。
【0116】
同一性の判定には、物体の統合の際と同様に、重畳するグリッドの数を用いることができる。具体的には、同一性判定部109は、ある時点で計測された点群データから検出された各物体上の点をグリッドが設定された水平面(gy-gz平面)に投影することにより算出されたgMax_zおよびgMin_zと、次に計測された点群データから検出された各物体上の点をグリッドが設定された水平面(gy-gz平面)に投影することにより算出されたgMax_zおよびgMin_zとを用いて同一性を判定する。
【0117】
例えば、同一性判定部109は、ある時点におけるある物体のグリッドと、次の時点におけるある物体のグリッドとで重畳するものの数を算出し、算出した値が所定の閾値以上であれば、それらの物体は同一であると判定してもよい。
【0118】
また、例えば、同一性判定部109は、同一性の判定の対象となる2つの物体(各物体が占めるグリッドの数の差が閾値以内のもの)間で重畳するグリッド数を、グリッド上における当該物体の面積(当該物体が占めるグリッドの数)で割った値が所定の閾値以上である場合に、同一であると判定してもよい。なお、上記の面積は、同一性の判定の対象となる2つの物体の何れの面積であってもよい。
【0119】
以上のように、情報処理装置1は、ある時点で取得された点群データから物体検出部104が検出した物体上の各点と、他の時点で取得された点群データから物体検出部104が検出した物体上の各点とを、グリッドが設定された水平面上に投影したときの、各時点で検出された物体上の点を共に含むグリッドの数に基づいて、各時点で検出された物体が同一の物体であるか判定する同一性判定部109を備えていてもよい。
【0120】
異なる時点で取得された点群データからそれぞれ検出された物体が、同じような位置および範囲を占めている場合には、それらは同じ物体であると考えられる。したがって、上記の構成によれば、検出された物体が同一の物体であるかを適切に判定することができる。また、この構成によれば、時系列の点群データから同じ物体を追跡することも可能になる。
【0121】
〔処理の流れ〕
情報処理装置1が実行する処理(距離算出方法)の流れを
図10に基づいて説明する。
図10は、情報処理装置1が実行する処理の一例を示すフローチャートである。なお、
図10には、計測装置3による点群データの計測が完了した直後の処理を示している。
【0122】
S11では、データ取得部101が計測装置3により計測された点群データを取得する。例えば、データ取得部101は、通信部12を介した通信により、計測装置3から点群データを取得してもよい。
【0123】
S12では、クラスタリング部102が、S11で取得された点群データをクラスタに分割する。上述のように、点群データをクラスタに分割する、とは、点群データを複数のクラスタに分類することを意味する。続いてS13では、投影部103が、各クラスタの点群データをグリッドが設定された水平面に投影する。
【0124】
S14では、物体検出部104が地面を検出する。より詳細には、物体検出部104は、S12において点群データの分割に用いられた複数のクラスタの中から、地面に対応するクラスタを検出する。
【0125】
S15(物体検出ステップ)では、物体検出部104が複数の物体を検出する。より詳細には、物体検出部104は、S12において点群データが分類された複数のクラスタから、S14で地面に対応するクラスタであると検出したものを除いた上で、それらのクラスタの中から吊荷に対応するクラスタを検出する。そして、物体検出部104は、吊荷および地面の何れにも該当しなかったクラスタのそれぞれを、吊荷の周囲の物体として検出する。
【0126】
S16では、S15で検出された複数の物体のうち1つの物体であるものを統合する統合処理が行われる。統合処理においては、まず、輪郭検出部105が、S15で物体として検出されたクラスタのそれぞれについて、gMax_z、gMin_z、および輪郭を構成する点を検出する。そして、統合部106が、各物体のgMax_zおよびgMin_zを用いてそれらの物体を統合するか否かを判定する。上述のように、統合可否の判定においては、物体の高さと物体の面の深さの差についても考慮してもよい。この処理は、まず吊荷について行われ、次に吊荷の周囲の物体について行われる。そして、吊荷の周囲の物体についての統合処理は、統合の条件を満たさないクラスタ(物体)のみが残る状態となるまで繰り返される。
【0127】
S17(距離算出ステップ)では、距離算出部107が、S15で検出された複数の物体のうち距離の算出対象となる2つの物体のそれぞれにおける任意の位置を基準として両物体の対向する輪郭部分を特定し、当該輪郭部分の間の距離を当該物体の間の距離として算出する。対向する輪郭部分の特定方法は
図8に基づいて説明したとおりであるから、ここでは説明を繰り返さない。具体的には、S17において、距離算出部107は、S15で検出された複数の物体のうち、吊荷とその周囲の物体との距離を算出する。なお、吊荷の周囲の物体が複数検出された場合には、距離算出部107は、検出された複数の物体のそれぞれについて、吊荷との距離を算出する。
【0128】
S18では、報知制御部108が、S17で算出された距離に基づき、警報の要否を判定する。例えば、報知制御部108は、S17で算出された距離が所定の閾値以下である場合に警報要(S18でYES)と判定してもよい。S18でYESと判定された場合にはS19の処理に進み、S18でNOと判定された場合にはS20の処理に進む。S19では、報知制御部108は、吊荷とその周囲の物体との距離が近いことを警報する。例えば、報知制御部108は、警報装置2に指示して警報を発生させてもよい。
【0129】
S20では、表示制御部110が、S15で検出された物体を表示装置に表示させる。なお、表示制御部110は、S15で検出された物体のうち、S16で統合されたものについては、統合した状態で表示させる。また、表示制御部110は、検出された物体を示す情報の他、S17で算出された距離などの各種情報についても表示させてもよい。
【0130】
また、S20の処理を実行するときに、それ以前の時点における物体検出の結果が存在する場合、同一性判定部109は、S20の処理に先立ち、各時点で検出された物体の同一性を判定してもよい。この場合、S20において、表示制御部110は、同一性判定部109が同一の物体と判定した物体を共通の表示態様で表示させる。
【0131】
S21では、データ取得部101が、処理を終了するか否かを判定する。S21でYESと判定された場合には
図10の処理は終了する。一方、S21でNOと判定された場合にはS11の処理に戻り、データ取得部101は新たな点群データ(先に取得したものよりも後の時点で計測されたもの)を取得する。なお、S21における終了条件は予め定めておけばよい。例えば、ユーザの終了操作が検出されたことや、処理の開始後、所定の時間が経過したことを終了条件としてもよい。
【0132】
〔変形例〕
情報処理装置1が行う上述した処理の一部を他のコンピュータ・システムで行う構成としてもよい。例えば、
図10におけるS14およびS15の処理を他のコンピュータ・システムで行う構成としてもよい。この場合、情報処理装置1は、演算に必要な情報を、ネットワークを介した通信により他のコンピュータ・システムに送信する。そして、情報処理装置1は、上記他のコンピュータ・システムから送信される演算結果を受信する。このように、本実施形態に係る距離算出方法は、1または複数の情報処理装置に実行することが可能である。
【0133】
〔ソフトウェアによる実現例〕
情報処理装置1の機能は、情報処理装置1としてコンピュータを機能させるためのプログラムであって、情報処理装置1の各制御ブロック(特に制御部10に含まれる各部)としてコンピュータを機能させるためのプログラム(距離算出プログラム)により実現することができる。
【0134】
この場合、情報処理装置1は、上記プログラムを実行するためのハードウェアとして、少なくとも1つの制御装置(例えばプロセッサ)と少なくとも1つの記憶装置(例えばメモリ)を有するコンピュータを備えている。この制御装置と記憶装置により上記プログラムを実行することにより、上記各実施形態で説明した各機能が実現される。
【0135】
上記プログラムは、一時的ではなく、コンピュータ読み取り可能な、1または複数の記録媒体に記録されていてもよい。この記録媒体は、情報処理装置1が備えていてもよいし、備えていなくてもよい。後者の場合、上記プログラムは、有線または無線の任意の伝送媒体を介して情報処理装置1に供給されてもよい。
【0136】
また、上記各制御ブロックの機能の一部または全部は、論理回路により実現することも可能である。例えば、上記各制御ブロックとして機能する論理回路が形成された集積回路も本発明の範疇に含まれる。この他にも、例えば量子コンピュータにより上記各制御ブロックの機能を実現することも可能である。
【0137】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【0138】
1 情報処理装置
104 物体検出部
105 輪郭検出部
107 距離算出部
109 同一性判定部
110 表示制御部
2 警報装置
3 計測装置
100 監視システム