(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-09
(45)【発行日】2022-06-17
(54)【発明の名称】パレット検知装置、フォークリフト、パレット検知方法、及びプログラム
(51)【国際特許分類】
B66F 9/24 20060101AFI20220610BHJP
G01B 11/00 20060101ALI20220610BHJP
G01B 11/26 20060101ALI20220610BHJP
【FI】
B66F9/24 L
G01B11/00 Z
G01B11/26 Z
(21)【出願番号】P 2020145789
(22)【出願日】2020-08-31
【審査請求日】2021-03-31
(73)【特許権者】
【識別番号】000232807
【氏名又は名称】三菱ロジスネクスト株式会社
(74)【代理人】
【識別番号】110000785
【氏名又は名称】誠真IP特許業務法人
(72)【発明者】
【氏名】▲高▼尾 健司
(72)【発明者】
【氏名】藤田 匠
(72)【発明者】
【氏名】北島 克将
(72)【発明者】
【氏名】木内 裕介
【審査官】今野 聖一
(56)【参考文献】
【文献】特開2017-178567(JP,A)
【文献】特開2021-169360(JP,A)
【文献】特開2021-024728(JP,A)
【文献】米国特許出願公開第2019/0194005(US,A1)
【文献】中国特許出願公開第110517314(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
B66F 9/00 - 11/04
G01B 11/00
G01B 11/26
(57)【特許請求の範囲】
【請求項1】
二次元測距装置が計測した点群を深度マップ上で示す点群データを取得するように構成された点群取得部と、
前記点群データにおいて、パレットの前面を含むと推定される領域内の前記点群に基づいて前記パレットの前面に対応する直線を検出するように構成された直線検出部と、
前記直線に基づいて前記パレットの前面を示す線分を検出するように構成された線分検出部と、
前記線分に基づいて前記パレットの位置及び姿勢を取得するように構成された位置姿勢取得部と、
を備え、
前記直線検出部は、前記直線の候補として一以上の直線候補を取得して、前記一以上の直線候補のそれぞれについて、前記直線候補から規定距離以上の手前側の前記点群については他の前記点群よりも選択における優先度が低い定数のスコアを付与し、前記パレットの前面を含むと推定される領域内の前記点群について前記スコアを積算したスコア積算値に基づいて前記一以上の直線候補の中から前記直線を選択する
パレット検知装置。
【請求項2】
前記直線検出部は、前記スコア積算値の算出において、前記直線候補から前記規定距離未満の前記点群については、前記直線候補から前記規定距離以上の手前側の前記点群よりも前記優先度が高く、かつ前記直線候補に近いほど前記優先度が高いスコアを付与する
請求項1に記載のパレット検知装置。
【請求項3】
前記直線検出部は、前記スコア積算値の算出において、前記直線候補から前記規定距離以上の奥側の前記点群については、前記スコア積算値の積算対象から除外する
請求項1又は2に記載のパレット検知装置。
【請求項4】
前記パレットの両端を検知するように構成された両端検知部を備え、
前記直線検出部は、前記スコア積算値が示す前記優先度が高い複数の前記直線を検出し、
前記両端検知部は、検出された複数の前記直線のうち前記スコア積算値が示す前記優先度が高い順に前記直線を選択し、選択した前記直線に基づいて前記パレットの両端を検知するための処理を実行し、
前記位置姿勢取得部は、前記パレットの両端が検知できた前記直線に基づいて前記パレットの位置及び姿勢を取得する
請求項1乃至3の何れか一項に記載のパレット検知装置。
【請求項5】
前記パレットが置かれるスロットより幅が大きい第1検知対象領域を設定するように構成された領域設定部を備え、
前記直線検出部は、前記第1検知対象領域内の前記点群に基づいて前記直線を検出する
請求項1乃至4の何れか一項に記載のパレット検知装置。
【請求項6】
前記領域設定部は、前記第1検知対象領域より幅が狭い第2検知対象領域をさらに設定し、
前記直線検出部は、前記第2検知対象領域の中の前記点群から選択した2つの点を結ぶ直線を前記直線候補として取得し、前記スコア積算値が示す前記優先度が高い前記直線候補には、前記第2検知対象領域外かつ前記第1検知対象領域内の点群を含めて前記直線として選択する
請求項5に記載のパレット検知装置。
【請求項7】
自己位置を示す情報と前記パレットが置かれるスロット位置を示す情報とを取得するように構成された情報取得部を備え、
前記点群取得部は、前記情報取得部が取得した情報に基づいて、前記パレットの前面を含むと推定される領域を特定するように構成される
請求項1乃至6の何れか一項に記載のパレット検知装置。
【請求項8】
前記パレットの両端を検知するように構成された両端検知部を備え、
前記両端検知部は、
前記直線から一以上の線分を抽出し、
抽出した前記一以上の線分の中から設計情報から定まる前記パレットの両端の長さに対応する両端長さを有する一つの前記線分又は二以上の前記線分の組み合わせを探索するための第1両端検知処理を実行し、
前記第1両端検知処理における探索に成功した場合には、見つかった前記線分又は二以上の前記線分の組み合わせの両端を前記パレットの両端と推定する
請求項1乃至7の何れか一項に記載のパレット検知装置。
【請求項9】
前記両端検知部は、前記第1両端検知処理における探索に失敗した場合には、前記第1両端検知処理とは異なる処理で前記パレットの両端を検出するための追加処理を実行する
請求項8に記載のパレット検知装置。
【請求項10】
前記追加処理は、抽出した前記二以上の線分のうちの隣り合う線分端点の間、又は検知対象領域の端部と線分端点の間の隙間が基準値以上である場合に、前記隙間の端点を前記パレットの一端とし、前記一端から前記パレットの両端の長さに対応する長さだけ離れた点を他端とするように前記パレットの両端を検出する第2両端検知処理を含む
請求項9に記載のパレット検知装置。
【請求項11】
前記追加処理は、前記パレットの端部又は前記パレットの孔の端部の間隔と同じ間隔を有する3つの点の組を前記点群の中から探索し、みつかった前記3つの点の組のうち最も手前側に位置する点を前記パレットの一端とし、前記一端から前記パレットの両端の長さに対応する長さだけ離れた点を他端とするように前記パレットの両端を検出する第3両端検知処理を含む
請求項9又は10に記載のパレット検知装置。
【請求項12】
前記直線検出部は、検知対象領域内の前記点群からRANSACアルゴリズムにより選択した2つの点を結ぶ直線を前記直線候補として取得する
請求項1乃至11の何れか一項に記載のパレット検知装置。
【請求項13】
前記直線検出部は、検知対象領域の幅方向中央の右側及び左側のそれぞれの前記点群から1つずつ選択した2つの点を結ぶ直線を前記直線候補として取得する
請求項1乃至11の何れか一項に記載のパレット検知装置。
【請求項14】
前記二次元測距装置は、フォークリフト用の障害物検知機能及び緊急停止機能を有する安全用の2D-LiDARである
請求項1乃至13の何れか一項に記載のパレット検知装置。
【請求項15】
請求項1乃至14の何れか一項に記載のパレット検知装置と、
点群を取得するための二次元測距装置と、
前記パレット検知装置の検知結果に応じてパレットの搬送動作を実行するように構成された駆動部と、
を備えるフォークリフト。
【請求項16】
二次元測距装置が計測した点群を深度マップ上で示す点群データを取得するステップと、
前記点群データにおいて、パレットの前面を含むと推定される領域内の前記点群に基づいて前記パレットの前面に対応する直線を検出するステップと、
前記直線に基づいて前記パレットの前面を示す線分を検出するステップと、
前記線分に基づいて前記パレットの位置及び姿勢を取得するステップと、
を含み、
前記直線を検出するステップにおいて、前記直線の候補として一以上の直線候補を取得して、前記一以上の直線候補のそれぞれについて、前記直線候補から規定距離以上の手前側の前記点群については他の前記点群よりも選択における優先度が低い定数のスコアを付与し、前記パレットの前面を含むと推定される領域内の前記点群について前記スコアを積算したスコア積算値に基づいて前記一以上の直線候補の中から前記直線を選択する
パレット検知方法。
【請求項17】
コンピュータに、
二次元測距装置が計測した点群を深度マップ上で示す点群データを取得する手順、
前記点群データにおいて、パレットの前面を含むと推定される領域内の前記点群に基づいて前記パレットの前面に対応する直線を検出する手順、
前記直線に基づいて前記パレットの前面を示す線分を検出する手順、
前記線分に基づいて前記パレットの位置及び姿勢を取得する手順、
を実行させ、
前記直線を検出する手順において、前記直線の候補として一以上の直線候補を取得して、前記一以上の直線候補のそれぞれについて、前記直線候補から規定距離以上の手前側の前記点群については他の前記点群よりも選択における優先度が低い定数のスコアを付与し、前記パレットの前面を含むと推定される領域内の前記点群について前記スコアを積算したスコア積算値に基づいて前記一以上の直線候補の中から前記直線を選択する
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、パレット検知装置、フォークリフト、パレット検知方法、及びプログラムに関する。
【背景技術】
【0002】
パレットの孔にフォークを差し込み、荷物を搬送するフォークリフトが普及している。このような搬送を無人で行うフォークリフト(AGF:Automated Guided Forklift)も開発されている。
【0003】
パレットが予め定められた位置及び姿勢(平面視における回転角度)で置かれている場合には、AGFはアプローチパスに従って、フォークをパレットの孔に差し込むことができる。しかし、実際のパレットは、所定エリア(スロット)内に収まるように配置されるものの、スロット内における位置及び姿勢は配置のたびに変動する。そのため、アプローチパスに従ってフォークを差し込むだけのAGFでは、フォークをパレットの孔に差し込めない場合がある。
【0004】
このような問題を解決するために、パレットの位置及び姿勢を検知するための手法が提案されている。例えば、3D-LiDAR(LiDAR:Light Detection And Ranging)、2D-LiDAR、又は3Dカメラを用いて、パレットの3次元データを取得し、パレットの位置及び姿勢を検知する手法が知られている。
【0005】
2D-LiDARを用いる手法では、パレットの3次元データを取得するために、レーザを上下方向に移動させながら計測する必要がある。例えば、特許文献1には、レーザセンサを上下方向に昇降させながら3次元距離画像を取得し、パレットの3次元データを取得することが開示されている。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
3D-LiDARは非常に高価であるため、フォークリフトに搭載するにはコスト上の問題がある。また、3Dカメラは日光による精度の低下、計測可能な距離、視野角等の制限等により適用可能な状況が限られており、利便性が低い。そのため、2D-LiDARでパレットの位置及び姿勢を検知することが望ましい。
【0008】
ここで特許文献1では、レーザセンサを上下方向に移動させながらパレットの3次元データを取得することで、パレットの前面から反射される反射光による同一平面上の観測点群に基づき、パレットの前面に対応する直線を抽出している。しかしながらこの手法では、レーザセンサを上下方向に移動させる必要があるため、計測に時間がかかってしまう。
【0009】
上述の事情に鑑みて、本開示は、二次元測距装置を上下方向に移動させなくてもパレットの前面に対応する直線を精度良く抽出し、短時間でパレットの位置及び姿勢を検知することが可能なパレット検知装置等を提供することを目的とする。
【課題を解決するための手段】
【0010】
本開示に係るパレット検知装置は、
二次元測距装置が計測した点群を深度マップ上で示す点群データを取得するように構成された点群取得部と、
前記点群データにおいて、パレットの前面を含むと推定される領域内の前記点群に基づいて前記パレットの前面に対応する直線を検出するように構成された直線検出部と、
前記直線に基づいて前記パレットの前面を示す線分を検出するように構成された線分検出部と、
前記線分に基づいて前記パレットの位置及び姿勢を取得するように構成された位置姿勢取得部と、
を備え、
前記直線検出部は、前記直線の候補として一以上の直線候補を取得して、前記一以上の直線候補のそれぞれについて、前記直線候補から規定距離以上の手前側の前記点群については他の前記点群よりも選択における優先度が低い定数のスコアを付与し、前記パレットの前面を含むと推定される領域内の前記点群について前記スコアを積算したスコア積算値に基づいて前記一以上の直線候補の中から前記直線を選択する。
【0011】
本開示に係るフォークリフトは、
上記のパレット検知装置と、
点群を取得するための二次元測距装置と、
前記パレット検知装置の検知結果に応じてパレットの搬送動作を実行するように構成された駆動部と、
を備える。
【0012】
本開示に係るパレット検知方法は、
二次元測距装置が計測した点群を深度マップ上で示す点群データを取得するステップと、
前記点群データにおいて、パレットの前面を含むと推定される領域内の前記点群に基づいて前記パレットの前面に対応する直線を検出するステップと、
前記直線に基づいて前記パレットの前面を示す線分を検出するステップと、
前記線分に基づいて前記パレットの位置及び姿勢を取得するステップと、
を含み、
前記直線を検出するステップにおいて、前記直線の候補として一以上の直線候補を取得して、前記一以上の直線候補のそれぞれについて、前記直線候補から規定距離以上の手前側の前記点群については他の前記点群よりも選択における優先度が低い定数のスコアを付与し、前記パレットの前面を含むと推定される領域内の前記点群について前記スコアを積算したスコア積算値に基づいて前記一以上の直線候補の中から前記直線を選択する。
【0013】
本開示に係るプログラムは、
コンピュータに、
二次元測距装置が計測した点群を深度マップ上で示す点群データを取得する手順、
前記点群データにおいて、パレットの前面を含むと推定される領域内の前記点群に基づいて前記パレットの前面に対応する直線を検出する手順、
前記直線に基づいて前記パレットの前面を示す線分を検出する手順、
前記線分に基づいて前記パレットの位置及び姿勢を取得する手順、
を実行させ、
前記直線を検出する手順において、前記直線の候補として一以上の直線候補を取得して、前記一以上の直線候補のそれぞれについて、前記直線候補から規定距離以上の手前側の前記点群については他の前記点群よりも選択における優先度が低い定数のスコアを付与し、前記パレットの前面を含むと推定される領域内の前記点群について前記スコアを積算したスコア積算値に基づいて前記一以上の直線候補の中から前記直線を選択する。
【発明の効果】
【0014】
本開示によれば、二次元測距装置を上下方向に移動させなくてもパレット前面に対応する直線を精度良く抽出し、短時間でパレットの位置及び姿勢を検知することが可能なパレット検知装置等を提供することができる。
【図面の簡単な説明】
【0015】
【
図1A】複数のパレットが等間隔で配置された場合の一例を示す平面図である。
【
図1B】パレット同士が接近した状態に配置された場合の一例を示す平面図である。
【
図1C】パレット同士がパレットの孔の幅と同じ幅の間隔で配置された場合の一例を示す平面図である。
【
図1D】パレットがスロットに対して回転した状態で配置された場合の一例を示す平面図である。
【
図1E】パレットが隣接パレットより奥側に配置された場合の一例を示す平面図である。
【
図2A】一実施形態に係るフォークリフトを模式的に示す側面図である。
【
図2B】一実施形態に係るフォークリフトを模式的に示す平面図である。
【
図3】一実施形態に係るパレット検知装置のハードウェア構成を概略的に示すブロック図である。
【
図4】一実施形態に係るパレット検知装置の機能的構成を概略的に示すブロック図である。
【
図5】一実施形態に係るパレット検知装置が実行する処理の一例を説明するためのフローチャートである。
【
図6】一実施形態に係るパレット検知装置が取得する点群の具体例を示す概略図である。
【
図7】一実施形態に係るパレット検知装置が取得する直線候補の具体例を示す概略図である。
【
図8】一実施形態に係るパレット検知装置が付与するスコアの一例を示すグラフである。
【
図9】一実施形態に係るパレット検知装置が実行する第1両端検知処理の一例を示す概略図である。
【
図10】一実施形態に係るパレット検知装置が実行する第2両端検知処理の一例を示す概略図である。
【
図11】一実施形態に係るパレット検知装置が実行する第3両端検知処理の一例を示す概略図である。
【
図12】一実施形態に係るパレット検知装置が取得するパレットの位置及び姿勢の一例を示す概略図である。
【発明を実施するための形態】
【0016】
以下、添付図面を参照して幾つかの実施形態について説明する。ただし、実施形態として記載されている又は図面に示されている構成部品の寸法、材質、形状、その相対的配置等は、発明の範囲をこれに限定する趣旨ではなく、単なる説明例にすぎない。
例えば、「ある方向に」、「ある方向に沿って」、「平行」、「直交」、「中心」、「同心」或いは「同軸」等の相対的或いは絶対的な配置を表す表現は、厳密にそのような配置を表すのみならず、公差、若しくは、同じ機能が得られる程度の角度や距離をもって相対的に変位している状態も表すものとする。
例えば、「同一」、「等しい」及び「均質」等の物事が等しい状態であることを表す表現は、厳密に等しい状態を表すのみならず、公差、若しくは、同じ機能が得られる程度の差が存在している状態も表すものとする。
例えば、四角形状や円筒形状等の形状を表す表現は、幾何学的に厳密な意味での四角形状や円筒形状等の形状を表すのみならず、同じ効果が得られる範囲で、凹凸部や面取り部等を含む形状も表すものとする。
一方、一の構成要素を「備える」、「具える」、「具備する」、「含む」、又は、「有する」という表現は、他の構成要素の存在を除外する排他的な表現ではない。
【0017】
(利用環境)
まず、一実施形態に係るパレット検知装置100を備えるフォークリフト200の利用環境を説明する。パレット10は、予め定められた領域(スロット20)に収まるように配置される。
【0018】
パレット検知装置100は、後述するように、スロット20の位置、パレット10の寸法や形状、フォークリフト200の位置及び二次元測距装置30(
図2A及び
図2B参照)の位置に関する情報を取得することが可能である。二次元測距装置30は、例えば2D-LiDAR等の二次元レーザスキャナであり、測定光を水平方向に走査して反射光を受光することで、一定の計測空間領域内における計測対象物までの距離や方向を計測するものである。以下の説明では、二次元測距装置30が取得した個々の計測点の集合を点群と呼称する。パレット10は、平面視において、スロット20の中心に対する並進変位と回転角度が一定の制限内に収まるように配置される。例えば、制限は、100mm以内の位置ずれ、10°以内の角度ずれである。パレット10は、例えば、床面、地面等に配置される。
【0019】
ここで、パレット10の配置例を説明し、パレット検知装置100が解決すべき種々の問題点を説明する。
図1Aは、複数のパレット10(10A、10B、10C)が等間隔で配置された場合の一例を示す平面図である。
図1Bは、パレット10(10A、10B)同士が接近した状態に配置された場合の一例を示す平面図である。
図1Cは、パレット10(10A、10B)同士がパレット10の孔11の幅Dと同じ幅Dの間隔で配置された場合の一例を示す平面図である。
図1Dは、パレット10(10B)がスロット20に対して回転した状態で配置された場合の一例を示す平面図である。
図1Eは、パレット10(10B)が隣接パレット10(10A、10C)より奥側に配置された場合の一例を示す平面図である。
【0020】
なお、これらの例では、3つのパレット10及びスロット20が隣接している。配置されるパレット10の数及びスロット20の数は、図示の例に限られない。
図1A~
図1Eに示すように、各パレット10は、パレット10の幅方向においてフォークリフト200のフォーク201が差し込まれる2つの孔11を有する。各パレット10は、パレット10の高さ方向に複数組の2つの孔11を有していてもよい。なお、二次元測距装置30は、これらの図において矢印で示すように、パレット10に向かうように測定光(例えばレーザビーム)を照射して、さらに水平方向に走査する。パレット10の前面は、図中下側の端面である。
【0021】
図1Aに示す例は、3つのパレット10が等間隔でそれぞれスロット20の中央に配置され、スロット20に対する回転角度がゼロの状態を示している。これは、理想の配置である。配置のたびにこのような配置を実現できれば、パレット検知をしなくてもスロット20とフォークリフト200の位置関係だけで正面からフォーク201を差し込むことができる。しかし、実際には、例えば、
図1B~
図1Eに示すように、スロット20内におけるパレット10の位置及び姿勢が一定の制限内で変動し得るため、パレット検知なしでフォーク201を差し込むことは困難である。
【0022】
図1Bに示す例では、中央のパレット10(10B)と右側のパレット10(10A)が接近し、隙間がほとんど無い状態である。この場合、単に二次元測距装置30がパレット10からの反射光に基づき計測点の集合である点群P1を取得しても、パレット10ごとの点群P1を識別することは困難である。例えば、中央のパレット10(10B)と右側のパレット10(10A)が一体として識別されたり、両者の境界を識別できなかったりする虞がある。
【0023】
図1Cに示す例では、中央のパレット10(10B)と右側のパレット10(10A)の間隔が孔11と同じ幅Dである。この場合、単に二次元測距装置30で取得される点群P1が存在しない領域の幅に着目しても、パレット10間の隙間と孔11とを区別できない場合がある。
【0024】
図1Dに示す例では、中央のパレット10(10B)がスロット20に対して10°だけ回転した状態である。この場合、中央のパレット10(10B)の姿勢を検出しなければ、正面方向からの角度ずれによってフォーク201を孔11に差し込めない虞がある。
【0025】
図1Eに示す例では、中央のパレット10(10B)が両隣のパレット10(10A、10C)より奥側に配置されている。この場合、中央のパレット10(10B)の前面を検出する場合に、中央のパレット10(10B)の前面より手前側に位置する両隣のパレット10(10A、10C)の前面のいずれかが誤って中央のパレット10(10B)の前面として検出される虞がある。
【0026】
(フォークリフトの構成)
図2Aは、一実施形態に係るフォークリフト200を模式的に示す側面図である。
図2Bは、一実施形態に係るフォークリフト200を模式的に示す平面図である。なお、参考のために、これらの図には、荷物Wが載置されるパレット10も示している。
【0027】
図2A及び
図2Bに示すように、フォークリフト200は、パレット検知装置100と、点群P1を取得するための3つの二次元測距装置30と、パレット検知装置100の検知結果に応じてパレット10の搬送動作を実行するように構成された駆動部(不図示)と、を備える。通常、AGFには、安全のための規格により、障害物検知機能及び緊急停止機能を有する安全用のセンサ(2D-LiDAR)を備えている。二次元測距装置30は、このようなフォークリフト用の安全用のセンサ(2D-LiDAR)であってもよい。
【0028】
安全用のセンサとしての二次元測距装置30は、例えば、フォークリフト200においてフォーク201側の左右の位置に2つ設けられ、フォーク201とは反対側の中央に1つ設けられる。これらの二次元測距装置30は、パレット10の高さ以下の位置に設けられる。パレット検知装置100は、これらの組み合わせによってパレット10検知を行うように構成されてもよい。なお、二次元測距装置30の位置及び数は、図示の例に限定されず、適宜変更可能である。
【0029】
(パレット検知装置の構成)
以下、一実施形態に係るパレット検知装置100の構成について説明する。
図3は、一実施形態に係るパレット検知装置100のハードウェア構成を概略的に示すブロック図である。例えば、
図3に示すように、パレット検知装置100は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)等のプロセッサ72と、RAM(Random Access Memory)74と、ROM(Read Only Memory)76と、HDD(Hard Disk Drive)78と、入力I/F80と、出力I/F82と、を含み、これらがバス84を介して互いに接続されたコンピュータを用いて構成される。パレット検知装置100のプロセッサ72がROM76やRAM74等のメモリに記憶されているプログラムを実行することにより、後述する各種機能を実現する。
【0030】
図4は、一実施形態に係るパレット検知装置100の機能的構成を概略的に示すブロック図である。
図4に示すように、パレット検知装置100は、機能的には、点群データを取得するように構成された点群取得部110と、検知対象領域を設定するように構成された領域設定部120と、パレット10の前面に対応する直線を検出するように構成された直線検出部130と、パレット10の両端を検知するように構成された両端検知部140と、パレット10の前面を示す線分を検出するように構成された線分検出部150と、パレット10の位置及び姿勢を検知するように構成された位置姿勢取得部160と、位置に関する情報を取得するように構成された情報取得部170と、を備える。
【0031】
(パレット検知の流れ)
以下、一実施形態に係るパレット検知装置100が実行する処理の流れについて説明する。なお、この処理の前に、情報取得部170は、自己位置(フォークリフト200の位置)を示す情報とスロット20位置(スロット20が位置する領域)を示す情報とを取得する。情報取得部170は、これらの情報を、メモリを参照して取得してもよいし、センサ(不図示)やサーバ装置(不図示)との通信によって取得してもよい。例えば、スロット20位置は、自己位置推定において使用するマップに関連付けられてメモリ又はサーバ装置(不図示)に記憶され、情報取得部170によって読み出される。この関連付けは、ユーザによって行われる。
【0032】
図5は、一実施形態に係るパレット検知装置100が実行する処理の一例を説明するためのフローチャートである。
図6は、一実施形態に係るパレット検知装置100が取得する点群P1の具体例を示す概略図である。
図5に示すように、パレット検知装置100は、自己位置を示す情報とスロット20位置を示す情報に基づきパレット10の近傍まで接近(アプローチ)し、二次元測距装置30が測定光を水平方向に走査してパレット10を含む一定の計測空間領域からの反射光を計測することで、点群データ(例えば、
図6に示す点群P1)を取得する(ステップS1)。
【0033】
具体的には、まず、点群取得部110は、二次元測距装置30が計測した点群P1を深度マップ上で示す点群データを取得する。深度マップは、上述した一定の計測空間領域を奥行方向(深度)と幅方向との二次元で示すマップである。
【0034】
例えば、
図6に示すように、点群取得部110は、二次元測距装置30から対象とするパレット10の周囲の点群P1を取得する。このとき、点群取得部110は、情報取得部170が取得した情報に基づいて、パレット10の前面を含むと推定される領域を特定し、その特定結果に基づいてパレット10の周囲の点群P1を取得する。点群取得部110が取得する点群P1は、複数の二次元測距装置30(例えば、
図2A及び
図2Bに示す3つの二次元測距装置30のうち2つ以上)から取得した点群P1を重ね合わせたものであってもよい。この場合、密な点群P1を取得することができる。このとき、パレット検知装置100は、複数の二次元測距装置30から取得した点群データを重ね合わせた点群データを取得してもよい。
【0035】
パレット検知装置100は、点群データから一以上の直線候補を取得する(ステップS2)。具体的には、まず、領域設定部120は、検知対象領域を設定する。検知対象領域は、いわゆるROI(Regions Of Interest)である。例えば、
図6に示すように、領域設定部120は、スロット20より幅が大きい第1検知対象領域A1を設定し、第1検知対象領域A1内の点群P1を抽出する。直線検出部130は、パレット10の前面を示す線分を検出するために一以上の直線候補を取得する。直線検出部130は、一以上の直線候補のそれぞれについて、直線候補から規定距離以上の手前側の点群P1については他の点群P1よりも選択における優先度が低い定数のスコアを付与する。直線検出部130は、パレット10の前面を含むと推定される領域内の点群P1についてスコアを積算したスコア積算値に基づいて一以上の直線候補の中からパレット10の前面に対応する直線を選択する。
【0036】
図7は、一実施形態に係るパレット検知装置100が取得する直線候補の具体例(直線候補L1、L2、L3、L4)を示す概略図である。例えば、
図7に示すように、領域設定部120は、第1検知対象領域A1より幅が狭い第2検知対象領域A2をさらに設定し、直線検出部130は、第2検知対象領域A2の中の点群P1から選択した2つの点を結ぶ直線を直線候補として取得してもよい。例えば、直線検出部130は、
図7に示すように、点群P1に基づいて4つの直線候補L1、L2、L3、L4を取得する。なお、第2検知対象領域A2は、隣接パレット10が入り込まない程度の幅に設定される。第2検知対象領域A2は、スロット20より幅が大きくてもよいし、小さくてもよい。
【0037】
ここで、直線候補の取得方法について具体例を説明する。直線検出部130は、検知対象領域内の点群P1からRANSACアルゴリズムにより選択した2つの点を結ぶ直線を直線候補として取得するように構成されてもよい。この場合の検知対象領域は、第2検知対象領域A2である。なお、検知対象領域は第1検知対象領域A1であってもよいし、第1検知対象領域A1や第2検知対象領域A2とは異なる領域であってもよい。RANSAC(RANdom SAmple Consensus)はランダムに2つの点を選択して評価値を算出する手法である。なお、本開示に係るパレット10の検知手法には、RANSACを用いた手法に限られず、PROSAC(PROgressive SAmple Consensus)等の他のアルゴリズムが使用されてもよい。
【0038】
直線検出部130は、検知対象領域の幅方向中央の右側及び左側のそれぞれの点群P1から1つずつ選択した2つの点を結ぶ直線を直線候補として取得するように構成されてもよい。この場合、組み合わせの数が有限となるため、すべての2点の組み合わせについて直線候補としてもよい。
【0039】
パレット検知装置100は、一以上の直線候補のそれぞれについてスコア積算値を算出する(ステップS3)。また、パレット検知装置100は、スコア積算値に基づいて、パレット10の前面に対応する直線を検出する(ステップS4)。具体的には、直線検出部130がスコア積算値を算出し、そのスコア積算値に基づいてパレット10の前面に対応する直線を検出する。直線検出部130は、スコア積算値が示す優先度が高い直線候補に対して、第2検知対象領域A2外かつ第1検知対象領域A1内の点群P1を含めて、それをパレット10の前面に対応する直線として選択(すなわち検出)し、この様な点群P1についても後続の処理の対象としてもよい。例えば、直線検出部130は、スコア積算値に基づいて、
図7に示す直線候補L1をパレット10の前面に対応する直線として選択する。
【0040】
ここで、スコア積算値について説明する。例えば、スコア積算値の高い直線候補を優先的に線分検出に使用する直線として選択する場合には、「優先度が低い定数のスコア」は、スコア積算値を小さくするような値のスコアを意味する。一方、例えば、スコア積算値の低い直線候補を優先的に選択する場合には、「優先度が低い定数のスコア」は、スコア積算値を大きくするような値のスコアを意味する。
【0041】
直線検出部130は、スコア積算値の算出において、点群P1を構成する各計測点と直線候補との垂直距離を利用する。具体的には、直線検出部130は、直線候補から規定距離未満の点群P1については、直線候補から規定距離以上の手前側(二次元測距装置30の測定方向から見た場合)の点群P1よりも優先度が高く、かつ直線候補に近いほど優先度が高いスコアを付与する。例えば、直線検出部130は、規定距離以上の手前側の点群P1はマイナスの定数のスコアを付与するのに対し、規定距離未満の点群P1はプラスのスコアを付与する。プラスのスコアの値は、直線候補からの距離に依存する変数である。
【0042】
図8は、一実施形態に係るパレット検知装置100が付与するスコアの一例を示すグラフである。このグラフの横軸は深度に対応し、各点と直線候補との距離を示し、横軸方向の右に行くほど奥側(二次元測距装置30の観測方向から見た場合)であることを意味する。深度がゼロの位置は直線候補の位置である。縦軸は付与するスコアの値を示している。
図8に示す例では、直線候補から規定距離以上の手前側の点群P1にはマイナスの定数のスコアが付与される。このように、直線候補から規定距離以上の手前側の点群P1には、直線候補と点との距離によらず一定のペナルティを課している。直線候補から規定距離未満の点群P1には、直線候補に近いほど大きいプラスのスコアが付与される。
【0043】
直線検出部130は、スコア積算値の算出において、直線候補から規定距離以上の奥側の点群P1については、スコア積算値の積算対象から除外する。「スコア積算値の積算対象から除外する」とは、それらの点群P1をスコア積算値の積算対象から実質的に除外することを意味し、それらの点群P1にゼロのスコアを付与することであってもよいし、それらの点群P1にスコアを付与しないことであってもよい。
図8に示す例では、直線候補から規定距離以上の奥側の点群P1にゼロのスコアが付与される。この様なスコア積算値の算出方法を採用すると、
図7に示す例では、直線候補L1がパレット10の前面に対応する直線として選択される。なお、直線検出部130は、スコア積算値が示す優先度が高い複数の直線を検出してもよい。
【0044】
図5に示すように、パレット検知装置100は、直線検出部130が直線を検出できたか否かを判定する(ステップS5)。直線を検出できていないと判定した場合(ステップS5;No)、パレット検知装置100は、ステップS10の処理を実行する。直線を検出できたと判定した場合(ステップS5;Yes)、パレット検知装置100は、第1両端検知処理を実行する(ステップS6)。
【0045】
具体的には、第1両端検知処理において、両端検知部140は、直線検出部130が選択した直線から一以上の線分を抽出し、抽出した一以上の線分の中から設計情報から定まるパレット10の両端の長さに対応する両端長さを有する一つの線分又は二以上の線分の組み合わせを探索する。「対応する長さ」とは、許容誤差の範囲内の長さを意味する。パレット10の設計情報は、パレット10の寸法(例えば、両端の長さ、孔11の位置及び間隔等)を示す情報であり、例えば、パレット検知装置100のメモリから読み出される。第1両端検知処理における探索に成功した場合には、両端検知部140は、見つかった線分又は二以上の線分の組み合わせの両端をパレット10の両端と推定する。
【0046】
図9は、一実施形態に係るパレット検知装置100が実行する第1両端検知処理の一例を示す概略図である。
図9に示すように、例えば、両端検知部140は、選択した直線L5から3つの線分(丸で囲まれた点群P1)を抽出し、パレット10の両端の長さに対応する両端長さW2を有する一つの線分又は二以上の線分の組み合わせを探索する。
図9に示す例では、探索の結果、3つの線分の組み合わせの両端長さが検出されている。
【0047】
パレット検知装置100は、第1両端検知処理によってパレット10の両端を検出できたか否かを判定する(ステップS7)。パレット10の両端を検出できたと判定した場合(ステップS7;Yes)、パレット検知装置100は、ステップS12の処理を実行する。パレット10の両端を検出できていないと判定した場合(ステップS7;No)、パレット検知装置100は、第2両端検知処理を実行する(ステップS8)。
【0048】
第2両端検知処理では、両端検知部140は、抽出した二以上の線分のうちの隣り合う線分端点の間、又は検知対象領域の端部と線分端点の間の隙間が基準値以上である場合に、その隙間の端点をパレット10の一端とし、その一端からパレット10の両端の長さに対応する長さだけ離れた点を他端とするようにパレット10の両端を検出する。なお、この場合の検知対象領域は、隙間をみつけやすくするために、第2検知対象領域A2ではなく第1検知対象領域A1であることが好ましい。
【0049】
図10は、一実施形態に係るパレット検知装置100が実行する第2両端検知処理の一例を示す概略図である。この例では、検知対象であるパレット10(10B)の右隣りにもう一つのパレット10(10A)が位置している。第1検知対象領域A1内には、検知対象であるパレット10(10B)ともう一つのパレット10(10A)の一部が入り込んでいる。また、これら2つのパレット10は、接近しているために隙間がほとんどない。この場合、第1両端検知処理が失敗する。
【0050】
しかし、第2両端検知処理では、検知対象であるパレット10(10B)の左端と第1検知対象領域A1の左端の隙間の幅W1が基準値以上である場合に、隙間の右端点に対応する線分の端点(検知対象であるパレット10の左端)をパレット10(10B)の一端とし、そこからパレット10の両端の長さに対応する長さW2だけ離れた線分に沿った位置をパレット10(10B)の他端として検出される。これにより、
図10に示す例においてもパレット10(10B)の両端が検出される。
【0051】
なお、
図10において、検知対象であるパレット10(10B)の左隣りにも、さらにもう一つのパレット10(不図示)が位置し、その一部が第1検知対象領域A1内に入り込んでいる場合、抽出した二以上の線分のうちの隣り合う線分端点の間の隙間が探索される。例えば、もう一つのパレット10(不図示)の点群P1による右端の線分と、検知対象であるパレット10(10B)の点群P1による左端の線分との間が基準値以上であれば、検知対象であるパレット10(10B)の点群P1による左端の線分の左端がパレット10(10B)の一端として検出され、そこからパレット10の両端の長さに対応する長さW2だけ離れた線分に沿った位置をパレット10(10B)の他端として検出される。
【0052】
パレット検知装置100は、第2両端検知処理によってパレット10の両端を検出できたか否かを判定する(ステップS9)。パレット10の両端を検出できたと判定した場合(ステップS9;Yes)、パレット検知装置100は、ステップS12の処理を実行する。パレット10の両端を検出できていないと判定した場合(ステップS9;No)、パレット検知装置100は、第3両端検知処理を実行する(ステップS10)。
【0053】
図11は、一実施形態に係るパレット検知装置100が実行する第3両端検知処理の一例を示す概略図である。第3両端検知処理では、両端検知部140は、例えば、
図11に示すように、パレット10の端部又はパレット10の孔11の端部の間隔と同じ間隔W3、W4を有する3つの点の組を点群P1の中から探索し、みつかった3つの点の組のうち最も手前側に位置する点(二次元測距装置30から最も近い位置にある点)をパレット10の一端とし、その一端からパレット10の両端の長さに対応する長さ(W2)だけ離れた点を他端とするようにパレット10の両端を検出する。
【0054】
図示の例では、二次元測距装置30がパレット10より左側に位置し、パレット10に対して斜め方向からスキャンしている。この場合、パレット10の3つの角部付近の点の組が点群として取得される。これらの3つの点の組のうち、例えば、左に位置する点の組の左端の点が最も手前側に位置するためにパレット10の一端として検出される。その一端からパレット10の両端の長さに対応する長さW2だけ離れた点が他端として検出される。これにより、パレット10の両端が検出される。なお、誤検出を防ぐため、上記の3つの点の組が複数存在する場合は検出失敗としてもよい。
【0055】
ここで、パレット検知装置100は、第3両端検知処理によってパレット10の両端を検出できたか否かを判定する(ステップS11)。パレット10の両端を検出できたと判定した場合(ステップS11;Yes)、パレット検知装置100は、線分フィッティングを実行する(ステップS12)。
【0056】
図12は、一実施形態に係るパレット検知装置100が取得するパレット10の位置及び姿勢の一例を示す概略図である。線分フィッティングでは、まず、線分検出部150は、パレット10の両端が検知された直線に基づいてパレット10の前面を示す線分を検出する。この際、例えば、
図12に示すように、線分検出部150は、点群P1のうち、パレット10の孔11の位置と推定される位置の点群P1を除外して、さらに線分の両端から所定距離以上の点群P1を除外して、残りの点群P1のみを使用してパレット10の前面を示す線分を検出し直してもよい。なお、
図12では、点群P1のうち除外した点群P2を白のプロットで示している。パレット10の孔11の位置の推定は、検出されたパレット10の両端とパレット10の設計情報とに基づいて行われる。また、線分検出部150は、より多くの点群P1の近くを通るように最小二乗法でパレット10の前面を示す線分を検出し直してもよい。
【0057】
また、パレット検知装置100は、最終的に検出したパレット10の前面を示す線分に基づいてパレット10の位置及び姿勢を計算する(ステップS13)。具体的には、位置姿勢取得部160は、線分検出部150が検出した線分に基づいてパレット10の位置及び姿勢を取得する。この際、位置姿勢取得部160は、最終的に検出されたパレット10の前面を示す線分の傾きからパレット10の姿勢を取得し、最終的に検出されたパレット10の前面を示す線分の中点に基づいてパレット10の位置を取得する。
【0058】
パレット10の両端を検出できていないと判定した場合(ステップS11;No)、パレット検知装置100は、ステップS12、S13の処理をスキップする。パレット検知装置100は、このような処理による検知結果をフォークリフト200の駆動部(不図示)に出力する(ステップS14)。
【0059】
上記の処理によれば、
図1B~
図1Eを参照しながら説明した種々の問題を解決可能である。例えば、
図1Bに示すようにパレット10(10B)とパレット10(10A)の隙間がほとんど無い場合であっても、
図10に示す第2両端検知処理によってパレット10(10B)の前面に対応する直線を検出することができる。
図1Cに示すように、パレット10(10B)とパレット10(10A)の隙間が孔11の間隔Dと同じ幅であっても、
図9に示す第1両端検知処理によってパレット10(10B)の前面に対応する直線を検出することができる。
【0060】
図1Dに示すように、パレット10(10B)が角度ズレを有する姿勢であっても、ステップS13によってパレット10(10B)の位置及び姿勢の計算結果に基づいてフォークリフト200がフォーク201を差し込むことにより、パレット10(10B)を搬送することができる。
図1Eに示すように、パレット10(10B)が他のパレット10(10A、10C)より奥側に位置していても、例えば、ステップS3のスコア積算値の算出結果によって手前側の点群P1と奥側の点群P1を区別することにより、パレット10(10B)の前面を検出することができる。
【0061】
以上、パレット検知装置100が実行する処理の流れについて説明した。
図5に示す各ステップの順序は、適宜変更可能である。例えば、第2両端検知処理と第3両端検知処理は順序が逆であってもよい。ステップS4の直線検出では、複数の直線が検出されてもよい。この場合、複数の直線のそれぞれについて、ステップS6、S8、S10の処理が実行されてもよい。例えば、パレット検知装置100は、検出された複数の直線のうちスコア積算値が示す優先度が高い順に直線を選択し、選択した直線に基づいてパレット10の両端を検知するための処理(第1両端検知処理、第2両端検知処理、第3両端検知処理)を実行してもよい。位置姿勢取得部160は、パレット10の両端が検知できた直線に基づいてパレット10の位置及び姿勢を取得する。
【0062】
図11に示す処理では、第1両端検知処理における探索に失敗した場合には、第1両端検知処理とは異なる処理である追加処理(第2両端検知処理や第3両端検知処理)が実行されている。このような追加処理は省略されてもよいし、第2両端検知処理と第3両端検知処理とのいずれか一方のみを含む処理に変形されてもよい。
【0063】
本開示は上述した実施形態に限定されることはなく、上述した実施形態に変形を加えた形態や、複数の実施形態を適宜組み合わせた形態も含む。
【0064】
(まとめ)
上記各実施形態に記載の内容は、例えば以下のように把握される。
【0065】
(1)本開示に係るパレット検知装置(100)は、
二次元測距装置(30)が計測した点群(P1)を深度マップ上で示す点群データを取得するように構成された点群取得部(110)と、
前記点群データにおいて、パレット(10)の前面を含むと推定される領域内の前記点群(P1)に基づいて前記パレット(10)の前面に対応する直線を検出するように構成された直線検出部(130)と、
前記直線に基づいて前記パレット(10)の前面を示す線分を検出するように構成された線分検出部(150)と、
前記線分に基づいて前記パレット(10)の位置及び姿勢を取得するように構成された位置姿勢取得部(160)と、
を備え、
前記直線検出部(130)は、前記直線の候補として一以上の直線候補を取得して、前記一以上の直線候補のそれぞれについて、前記直線候補から規定距離以上の手前側の前記点群(P1)については他の前記点群(P1)よりも選択における優先度が低い定数のスコアを付与し、前記パレット(10)前面を含むと推定される領域内の前記点群(P1)について前記スコアを積算したスコア積算値に基づいて前記一以上の直線候補の中から前記直線を選択する。
【0066】
特許文献1のように2D-LiDARを上下方向に移動させて3次元データを取得する場合には、パレット(10)の前面から反射される反射光による観測点群が同一平面上に多数位置するため、パレット(10)の前面に対応する直線を比較的容易に検出できるが、2D-LiDARを上下方向に移動させず一度のスキャンでパレット(10)の前面に対応する直線を抽出しようとする場合は、パレット(10)の前面から反射される反射光による観測点群と、パレットの孔内から反射される反射光による観測点群との区別が難しく、本来のパレット(10)の前面よりも奥側の直線が抽出される可能性がある。
【0067】
すなわち、パレット(10)の前面よりも奥に位置する孔(11)内の点群(孔(11)の中の側面や上面で反射された点群(P1))に基づいて線分が検出されると検知精度が低下する。この点、上記構成では、手前側の点群(P1)が多い直線候補を選択における優先度が低くなるようにスコア積算値を求めて、スコア積算値に基づいて直線を選択している。そのため、パレット(10)の前面の点群(P1)に基づく線分を検出しやすくなる。従って、二次元測距装置(30)を上下方向に移動させなくてもパレット(10)の前面に対応する直線を精度良く抽出することができ、結果として、短時間でパレット(10)の位置及び姿勢を検知することができる。
【0068】
手前側の点群(P1)について直線候補から離れるほど大きく優先度を低下させる変数のスコアを付与した場合、外れ値の影響(例えば、対象パレット(10)以外の物体による反射源の影響)でパレット(10)の前面よりも手前側で線分が検出される虞がある。この点、上記構成では、定数でスコアを付与しているため、そのような虞が生じにくい。したがって、検知精度を向上させることができる。
【0069】
(2)幾つかの実施形態では、上記(1)に記載の構成において、
前記直線検出部(130)は、前記スコア積算値の算出において、前記直線候補から前記規定距離未満の前記点群(P1)については、前記直線候補から前記規定距離以上の手前側の前記点群(P1)よりも前記優先度が高く、かつ前記直線候補に近いほど前記優先度が高いスコアを付与する。
【0070】
上記構成によれば、直線候補から規定距離未満の点群(P1)については、直線候補から規定距離以上の手前側の点群(P1)よりも高く、かつ直線候補に近いほど高いスコアを付与している。そのため、直線候補の付近に点群が多いほどその直線候補が直線として選択されやすくなる。したがって、パレット(10)の前面である可能性が高い線分を検出することができる。
【0071】
(3)幾つかの実施形態では、上記(1)又は(2)に記載の構成において、
前記直線検出部(130)は、前記スコア積算値の算出において、前記直線候補から前記規定距離以上の奥側の前記点群(P1)については、前記スコア積算値の積算対象から除外する。
【0072】
パレット(10)の前面より奥の点群(P1)は、孔(11)の中の点群(P1)である可能性が高い。このような点群(P1)の位置はパレット(10)の前面の検出においてノイズであるため、直線選択に使用するスコアとしては考慮されない方が好ましい。あえて考慮すると、精度が低下する場合がある。この点、上記構成によれば、直線候補から規定距離以上の奥側の点群(P1)については、スコア積算値の積算対象から実質的に除外する。そのため、孔(11)の中の点群(P1)の影響で精度が低下する虞を低減できる。
【0073】
(4)幾つかの実施形態では、上記(1)乃至(3)の何れか一つに記載の構成において、
前記パレット(10)の両端を検知するように構成された両端検知部(140)を備え、
前記直線検出部(130)は、前記スコア積算値が示す前記優先度が高い複数の前記直線を検出し、
前記両端検知部(140)は、検出された複数の前記直線のうち前記スコア積算値が示す前記優先度が高い順に前記直線を選択し、選択した前記直線に基づいて前記パレット(10)の両端を検知するための処理を実行し、
前記位置姿勢取得部(160)は、前記パレット(10)の両端が検知できた前記直線に基づいて前記パレット(10)の位置及び姿勢を取得する。
【0074】
直線検出部(130)が選択した直線であっても、線分の検出に使用する直線として適切ではない場合がある。この点、上記構成によれば、スコア積算値が示す優先度が高い順に直線を選択してパレット(10)の両端を検知するための処理を実行し、それが成功した直線に基づいてパレット(10)の位置及び姿勢を取得している。そのため、検知精度が向上する。
【0075】
(5)幾つかの実施形態では、上記(1)乃至(4)の何れか一つに記載の構成において、
前記パレット(10)が置かれるスロット(20)より幅が大きい第1検知対象領域(A1)を設定するように構成された領域設定部(120)を備え、
前記直線検出部(130)は、前記第1検知対象領域(A1)内の前記点群(P1)を抽出する。
【0076】
上記構成によれば、スロット(20)より幅が大きい第1検知対象領域(A1)を使用して点群(P1)を抽出するため、第1検知対象領域(A1)がスロット(20)位置から誤差によって少しずれた位置に設定された場合であっても、スロット(20)位置における点群(P1)を漏れなく取得することができる。
【0077】
(6)幾つかの実施形態では、上記(5)に記載の構成において、
前記領域設定部(120)は、前記第1検知対象領域(A1)より幅が狭い第2検知対象領域(A2)をさらに設定し、
前記直線検出部(130)は、前記第2検知対象領域(A2)の中の前記点群(P1)から選択した2つの点を結ぶ直線を前記直線候補として取得し、前記スコア積算値が示す前記優先度が高い前記直線候補には、前記第2検知対象領域(A2)外かつ前記第1検知対象領域(A1)内の点群(P1)を含めて前記直線として選択する。
【0078】
検知対象領域が広いと、対象パレット(10)に隣接するパレット(10)の点群(P1)が検知対象領域内に入り込む虞がある。この場合、対象パレット(10)の前面を示す線分の検出に適した直線が検出されていても、より手前側に位置する隣接パレット(10)の前面による点群(P1)によってスコア積算値の優先度が低下する虞がある。この場合、検知精度が低下し得る。この点、上記構成によれば、第1検知対象領域(A1)より幅が狭い第2検知対象領域(A2)の範囲内の点群(P1)についてスコア積算値を算出するため、隣接パレット(10)によるスコア積算値への影響を抑えることができる。また、直線の検出時には、第1検知対象領域(A1)に含まれる点群(P1)も含めるため、第1検知対象領域(A1)に含まれる対象パレット(10)の点群(P1)が直線選択時に抽出漏れする虞を低減できる。
【0079】
(7)幾つかの実施形態では、上記(1)乃至(6)の何れか一つに記載の構成において、
自己位置を示す情報と前記パレット(10)が置かれるスロット(20)位置を示す情報とを取得するように構成された情報取得部(170)を備え、
前記点群取得部(110)は、前記情報取得部(170)が取得した情報に基づいて、前記パレット(10)の前面を含むと推定される領域を特定するように構成される。
【0080】
上記構成によれば、点群(P1)を取得すべき領域を絞りこむことが可能となる。また、複数のパレット(10)が隣接している場合に、スロット(20)位置を示す情報を利用して、位置及び姿勢を検知対象ではないパレット(10)の点群(P1)を取得する虞を低減できる。
【0081】
(8)幾つかの実施形態では、上記(1)乃至(7)の何れか一つに記載の構成において、
前記パレット(10)の両端を検知するように構成された両端検知部(140)を備え、
前記両端検知部(140)は、
前記直線から一以上の線分を抽出し、
抽出した前記一以上の線分の中から設計情報から定まる前記パレット(10)の両端の長さに対応する両端長さを有する一つの前記線分又は二以上の前記線分の組み合わせを探索するための第1両端検知処理を実行し、
前記第1両端検知処理における探索に成功した場合には、見つかった前記線分又は二以上の前記線分の組み合わせの両端を前記パレット(10)の両端と推定する。
【0082】
上記構成によれば、パレット(10)の両端として推定される一つの線分又は二以上の線分の組み合わせを取得することができる。パレット(10)の孔(11)に関する情報を使用しないため、孔(11)が認識できない状況であっても、第1両端検知処理による探索には影響しないため、ロバスト性が向上する。
【0083】
(9)幾つかの実施形態では、上記(8)に記載の構成において、
前記両端検知部(140)は、前記第1両端検知処理における探索に失敗した場合には、前記第1両端検知処理とは異なる処理で前記パレット(10)の両端を検出するための追加処理を実行する。
【0084】
第1両端検知処理を実行しても、パレット(10)の両端として推定可能な一つの線分又は二以上の線分の組み合わせが見つからない場合があり得る。例えば、対象パレット(10)が隣接パレット(10)と接近している場合、それらのパレット(10)の点群(P1)同士が連続して一つの線分として検出される虞がある。例えば、パレット(10)に対して測定光が入射角をなすことにより、パレット(10)の角部の点群(P1)しか観測できない虞がある。この点、上記構成によれば、第1両端検知処理における探索に失敗しても、追加処理を実行することによってパレット(10)の両端を検出できる場合があるため、パレット(10)の両端検知に成功しやすい。
【0085】
(10)幾つかの実施形態では、上記(9)に記載の構成において、
前記追加処理は、抽出した前記二以上の線分のうちの隣り合う線分端点の間、又は検知対象領域の端部と線分端点の間の隙間が基準値以上である場合に、前記隙間の端点を前記パレット(10)の一端とし、前記一端から前記パレット(10)の両端の長さに対応する長さだけ離れた点を他端とするように前記パレット(10)の両端を検出する第2両端検知処理を含む。
【0086】
第1両端検知処理を実行しても、対象パレット(10)が隣接パレット(10)と接近している場合、それらのパレット(10)の点群(P1)同士が連続して一つの線分として検出される虞がある。この場合、第1両端検知処理では、パレット(10)の両端を検知できない虞がある。この点、上記構成によれば、第1両端検知処理による検知で失敗しても、基準値以上の隙間が見つかった場合には、パレット(10)の両端を検出することができる。
【0087】
(11)幾つかの実施形態では、上記(9)又は(10)に記載の構成において、
前記追加処理は、前記パレット(10)の端部又は前記パレット(10)の孔(11)の端部の間隔と同じ間隔を有する3つの点の組を前記点群(P1)の中から探索し、みつかった前記3つの点の組のうち最も手前側に位置する点を前記パレット(10)の一端とし、前記一端から前記パレット(10)の両端の長さに対応する長さだけ離れた点を他端とするように前記パレット(10)の両端を検出する第3両端検知処理を含む。
【0088】
例えば、パレット(10)に対してレーザ光が入射角をなすことにより、パレット(10)の角部の点群(P1)しか観測できない虞がある。この場合、第1両端検知処理では、パレット(10)の両端を検知できない虞がある。この点、上記構成によれば、第1両端検知処理による検知で失敗しても、パレット(10)の端部又はパレット(10)の孔(11)の端部の間隔と同じ間隔を有する2つ以上の点の組が見つかった場合には、パレット(10)の両端を検出することができる。
【0089】
(12)幾つかの実施形態では、上記(1)乃至(11)の何れか一項に記載の構成において、
前記直線検出部(130)は、検知対象領域内の前記点群(A1)からRANSACアルゴリズムにより選択した2つの点を結ぶ直線を前記直線候補として取得する。
【0090】
上記構成によれば、線分検出において外れ値を除去したロバスト推定が可能となる。
【0091】
(13)幾つかの実施形態では、上記(1)乃至(11)の何れか一項に記載の構成において、
前記直線検出部(130)は、検知対象領域の幅方向中央の右側及び左側のそれぞれの前記点群(P1)から1つずつ選択した2つの点を結ぶ直線を前記直線候補として取得する。
【0092】
上記構成によれば、検知対象領域の全体からランダムで2つの点を選択する場合に比べて、組み合わせの数が減少するため、演算処理量を低減することができ、かつ選択漏れの可能性も低減することができる。
【0093】
(14)幾つかの実施形態では、上記(1)乃至(13)の何れか一項に記載の構成において、
前記二次元測距装置(30)は、フォークリフト(200)用の障害物検知機能及び緊急停止機能を有する安全用の2D-LiDARである。
【0094】
上記構成によれば、フォークリフト(200)の安全用の2D-LiDARを利用してパレット(10)を検知することができる。そのため、パレット検知専用のセンサを設ける必要がなく、コストを低減することができる。
【0095】
なお、フォークリフト(200)の安全用の2D-LiDARは、高さ位置が固定されているため、上下方向にレーザセンサを移動させながらパレット(10)の位置及び姿勢の検知を行う構成に適用することはできない。しかし、上記構成では、レーザセンサを上下方向に移動させなくても、パレット(10)の位置及び姿勢の検知を行うことができるため、このような2D-LiDARを適用可能である。
【0096】
(15)本開示に係るフォークリフト(200)は、
上記(1)乃至(14)の何れか一つに記載のパレット検知装置(100)と、
点群(P1)を取得するための二次元測距装置(30)と、
前記パレット検知装置(100)の検知結果に応じてパレット(10)の搬送動作を実行するように構成された駆動部と、
を備える。
【0097】
上記構成によれば、パレット検知装置(100)の検知結果に基づいてフォークリフト(200)がパレット(10)の搬送動作を実行することができる。
【0098】
(16)本開示に係るパレット検知方法は、
二次元測距装置(30)が計測した点群(P1)を深度マップ上で示す点群データを取得するステップと、
前記点群データにおいて、パレット(10)の前面を含むと推定される領域内の前記点群(P1)に基づいて前記パレット(10)の前面に対応する直線を検出するステップと、
前記直線に基づいて前記パレット(10)の前面を示す線分を検出するステップと、
前記線分に基づいて前記パレット(10)の位置及び姿勢を取得するステップと、
を含み、
前記直線を検出するステップにおいて、前記直線の候補として一以上の直線候補を取得して、前記一以上の直線候補のそれぞれについて、前記直線候補から規定距離以上の手前側の前記点群(P1)については他の前記点群(P1)よりも選択における優先度が低い定数のスコアを付与し、前記パレット(10)の前面を含むと推定される領域内の前記点群(P1)について前記スコアを積算したスコア積算値に基づいて前記一以上の直線候補の中から前記直線を選択する。
【0099】
上記方法によれば、二次元測距装置(30)を上下方向に移動させなくてもパレット(10)の前面に対応する直線を精度良く抽出し、結果として、短時間でパレット(10)の位置及び姿勢を検知することが可能となる。
【0100】
(17)本開示に係るプログラムは、
コンピュータに、
二次元測距装置(30)が計測した点群(P1)を深度マップ上で示す点群データを取得する手順、
前記点群データにおいて、パレット(10)の前面を含むと推定される領域内の前記点群(P1)に基づいて前記パレット(10)の前面に対応する直線を検出する手順、
前記直線に基づいて前記パレット(10)の前面を示す線分を検出する手順、
前記線分に基づいて前記パレット(10)の位置及び姿勢を取得する手順、
を実行させ、
前記直線を検出する手順において、前記直線の候補として一以上の直線候補を取得して、前記一以上の直線候補のそれぞれについて、前記直線候補から規定距離以上の手前側の前記点群(P1)については他の前記点群(P1)よりも選択における優先度が低い定数のスコアを付与し、前記パレット(10)の前面を含むと推定される領域内の前記点群について前記スコアを積算したスコア積算値に基づいて前記一以上の直線候補の中から前記直線を選択する。
【0101】
上記プログラムによれば、二次元測距装置(30)を上下方向に移動させなくてもパレット(10)の前面に対応する直線を精度良く抽出し、結果として、短時間でパレット(10)の位置及び姿勢を検知することが可能となる。
【符号の説明】
【0102】
10 パレット
11 孔
20 スロット
30 二次元測距装置
72 プロセッサ
74 RAM
76 ROM
78 HDD
80 入力I/F
82 出力I/F
84 バス
100 パレット検知装置
110 点群取得部
120 領域設定部
130 直線検出部
140 両端検知部
150 線分検出部
160 位置姿勢取得部
170 情報取得部
200 フォークリフト
201 フォーク
A1 第1検知対象領域
A2 第2検知対象領域
P1 点群