(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024111676
(43)【公開日】2024-08-19
(54)【発明の名称】搬送装置、走行制御方法および走行制御プログラム
(51)【国際特許分類】
G05D 1/43 20240101AFI20240809BHJP
【FI】
G05D1/02 J
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023016314
(22)【出願日】2023-02-06
(71)【出願人】
【識別番号】000006655
【氏名又は名称】日本製鉄株式会社
(74)【代理人】
【識別番号】110000338
【氏名又は名称】弁理士法人 HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】佐藤 隆哉
【テーマコード(参考)】
5H301
【Fターム(参考)】
5H301AA01
5H301BB05
5H301CC03
5H301CC06
5H301CC10
5H301GG08
(57)【要約】
【課題】搬送装置等が周辺環境の変化が少ない狭い領域を走行する際等の自己位置推定をより正確に行うことができる。
【解決手段】第1の3次元座標系で、搬送装置の位置と搬送装置の回転角とを推定する位置角度推定部と、位置角度推定部の推定結果に基づいて、角筒領域内の走行のための駆動信号を生成する駆動信号生成部と備え、位置角度推定部は、第2の3次元座標系で、角筒領域を含む搬送装置の周囲の物体に対応する点群を取得する点群取得部と、点群に基づいて、対となる柱によって規定される角筒領域の幅方向と平行な平面を検出する平面検出部と、平面を通過した回数と平面までの距離とに基づいて、第1の3次元座標系で、搬送装置の角筒領域の奥行方向における位置を算出し、平面に含まれる点群に基づいて、第1の3次元座標系で、搬送装置の角筒領域の幅方向における位置と、角筒領域の奥行方向に対する搬送装置の回転角とを算出する算出部とを備える。
【選択図】
図5
【特許請求の範囲】
【請求項1】
地面上を走行して角筒形の領域である角筒領域に進入する搬送装置であって、
前記角筒領域内には、前記搬送装置が進入する前記角筒領域の奥行方向に既知の間隔で、前記角筒領域の幅方向の両側で対となる柱が配置され、
前記角筒領域を基準とした座標系である第1の3次元座標系で、前記搬送装置の位置と前記搬送装置の回転角とを推定する位置角度推定部と、
前記位置角度推定部の推定結果に基づいて、前記角筒領域内の走行のための駆動信号を生成する駆動信号生成部と、
を備え、
前記位置角度推定部は、
前記搬送装置に取り付けられたセンサを用い、前記搬送装置を基準とした座標系である第2の3次元座標系で、前記角筒領域を含む前記搬送装置の周囲の物体に対応する点群を取得する点群取得部と、
前記点群に基づいて、前記対となる柱によって規定される前記角筒領域の幅方向と平行な平面を検出する平面検出部と、
前記平面を通過した回数と前記平面までの距離とに基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の奥行方向における位置を算出し、前記平面に含まれる点群に基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の幅方向における位置と、前記角筒領域の奥行方向に対する前記搬送装置の回転角とを算出する算出部と、
を備える、搬送装置。
【請求項2】
前記位置角度推定部は、前記平面検出部での処理の前に、
前記点群取得部で取得した前記点群から、所定の範囲外に位置する点群をフィルタリングする第1のフィルタリング処理を行う第1フィルタリング処理部と、
前記第1のフィルタリング処理を経て得られた点群をクラスタリングしてクラスタを生成するクラスタリング処理部と、
前記クラスタを、第2の3次元座標系におけるy軸上の位置に基づいてフィルタリングする第2のフィルタリング処理を行う第2フィルタリング処理部と、
を備える、請求項1に記載の搬送装置。
【請求項3】
前記算出部は、
前記点群の中で、高さ方向の座標の値が予め定められた範囲内の値であって、前記第2の3次元座標系で、前記幅方向の座標の値が0に最も近い負の値である第1の値を有する点と、前記幅方向の値が0に最も近い正の値である第2の値を有する点とを特定し、
前記角筒領域の幅と、前記第1の値と、前記第2の値とを用いて前記第1の3次元座標系における前記搬送装置の前記幅方向の位置を算出する、請求項1に記載の搬送装置。
【請求項4】
前記算出部は、
前記平面検出部により検出された平面に含まれる点群の前記第2の3次元座標系における座標から、前記平面を表す式の係数を算出し、前記係数を用いて前記角筒領域の奥行方向に対する前記搬送装置の回転角を算出する、請求項1に記載の搬送装置。
【請求項5】
地面上を走行して角筒形の領域である角筒領域に進入する搬送装置の走行制御方法であって、
前記角筒領域内には、前記搬送装置が進入する前記角筒領域の奥行方向に既知の間隔で、前記角筒領域の幅方向の両側で対となる柱が配置され、
前記角筒領域を基準とした座標系である第1の3次元座標系で、前記搬送装置の位置と前記搬送装置の回転角とを推定する位置角度推定ステップと、
前記位置角度推定ステップの推定結果に基づいて、前記角筒領域内の走行のための駆動信号を生成する駆動信号生成ステップと、
を備え、
前記位置角度推定ステップは、
前記搬送装置に取り付けられたセンサを用い、前記搬送装置を基準とした座標系である第2の3次元座標系で、前記角筒領域を含む前記搬送装置の周囲の物体に対応する点群を取得する点群取得ステップと、
前記点群に基づいて、前記対となる柱によって規定される前記角筒領域の幅方向と平行な平面を検出する平面検出ステップと、
前記平面を通過した回数と前記平面までの距離とに基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の奥行方向における位置を算出し、前記平面に含まれる点群に基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の幅方向における位置と、前記角筒領域の奥行方向に対する前記搬送装置の回転角とを算出する算出ステップと、
を備える、搬送装置の走行制御方法。
【請求項6】
コンピュータに、請求項5に記載の走行制御方法を実行させる
ことを特徴とする走行制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、搬送装置、走行制御方法および走行制御プログラムに関し、周辺環境の変化が少ない狭い領域を走行する際等の自己位置推定をより正確に行うことができる搬送装置、走行制御方法および走行制御プログラムに関する。
【背景技術】
【0002】
LiDAR(Light Detection And Ranging)を用い、搬送装置の周囲にある物体に対応する点群からなる点群情報を取得して、自己位置推定を行う技術が活用されている。LiDARは、搬送装置の周囲にある物体にレーザを照射し、レーザが当たった部分から反射された反射光を受光することで、周囲にある物体の存在や、当該物体までの距離等の周辺環境を認識可能な装置である。移動体が、移動しながら自己位置推定を行う際には、周辺環境の変化を認識することで自分の位置を推定することができる。
【0003】
例えば、特許文献1では、樹木が生い茂る環境で走行するトラクター等の移動体におけるLiDARを用いた自己位置推定手法が提案されている。
【0004】
また、特許文献2では、取得された点群情報を基に、機械学習を用いて低消費電力で自己位置推定を行うシステムが提案されている。特許文献1および特許文献2では地図情報も作成しながら自己位置を同時に推定するSLAM(Simultaneous Localization and Mapping)を行っており、作成された地図情報を基に自己位置を推定している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】WO2022/107587
【特許文献2】WO2021/205276
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、移動中に同じ景色が続く状況下では、周辺環境に変化が少なくなる。例えば、周辺環境に、所定の間隔で配置された同じ形状の構造物以外に特徴的な物体が存在しない場合には、周辺環境の変化が少なくなる。
【0007】
SLAMを用いた自己位置推定の場合、周辺環境の変化が少ないと、同じような点群情報が取得されるため、推定の精度が低下する。このため、例えば、周辺環境の変化が少ない狭い領域内を走行する移動体の走行制御には、SLAMだけでは不十分であり、さらに精度の高い自己位置推定が必要となる。
【0008】
例えば、製鉄所のパレットヤードや、パレット内などでは、周辺環境の変化が少ないことから、自己位置推定が難しい状況になる。また、製鉄所内で鋼板などを搬送するキャリアは、パレット内に進入する必要があるが、パレット内には、キャリアの幅に対する空間的な余裕が少ないことから、精度の高い走行制御が必要となる。
【0009】
以上を踏まえ、本発明の一態様は、搬送装置等が周辺環境の変化が少ない狭い領域を走行する際等の自己位置推定をより正確に行うことができるようにする技術を実現することを目的とする。
【課題を解決するための手段】
【0010】
上記課題を解決すべく、本発明の一態様に係る搬送装置は、地面上を走行して角筒形の領域である角筒領域に進入する搬送装置であって、前記角筒領域内には、前記搬送装置が進入する前記角筒領域の奥行方向に既知の間隔で、前記角筒領域の幅方向の両側で対となる柱が配置され、前記角筒領域を基準とした座標系である第1の3次元座標系で、前記搬送装置の位置と前記搬送装置の回転角とを推定する位置角度推定部と、前記位置角度推定部の推定結果に基づいて、前記角筒領域内の走行のための駆動信号を生成する駆動信号生成部と、を備え、前記位置角度推定部は、前記搬送装置に取り付けられたセンサを用い、前記搬送装置を基準とした座標系である第2の3次元座標系で、前記角筒領域を含む前記搬送装置の周囲の物体に対応する点群を取得する点群取得部と、前記点群に基づいて、前記対となる柱によって規定される前記角筒領域の幅方向と平行な平面を検出する平面検出部と、前記平面を通過した回数と前記平面までの距離とに基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の奥行方向における位置を算出し、前記平面に含まれる点群に基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の幅方向における位置と、前記角筒領域の奥行方向に対する前記搬送装置の回転角とを算出する算出部と、を備える。
【0011】
上記課題を解決すべく、本発明の一態様に係る走行制御方法は、地面上を走行して角筒形の領域である角筒領域に進入する搬送装置の走行制御方法であって、前記角筒領域内には、前記搬送装置が進入する前記角筒領域の奥行方向に既知の間隔で、前記角筒領域の幅方向の両側で対となる柱が配置され、前記角筒領域を基準とした座標系である第1の3次元座標系で、前記搬送装置の位置と前記搬送装置の回転角とを推定する位置角度推定ステップと、前記位置角度推定部の推定結果に基づいて、前記角筒領域内の走行のための駆動信号を生成する駆動信号生成ステップと、を備え、前記位置角度推定ステップは、前記搬送装置に取り付けられたセンサを用い、前記搬送装置を基準とした座標系である第2の3次元座標系で、前記角筒領域を含む前記搬送装置の周囲の物体に対応する点群を取得する点群取得ステップと、前記点群に基づいて、前記対となる柱によって規定される前記角筒領域の幅方向と平行な平面を検出する平面検出ステップと、前記平面を通過した回数と前記平面までの距離とに基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の奥行方向における位置を算出し、前記平面に含まれる点群に基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の幅方向における位置と、前記角筒領域の奥行方向に対する前記搬送装置の回転角とを算出する算出ステップと、を備える。
【0012】
本発明の各態様は、コンピュータによって実現してもよく、この場合には、コンピュータを上記システムが備える各部(ソフトウェア要素)として動作させることによりシステムをコンピュータにて実現させる走行制御プログラム、および、それを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
【発明の効果】
【0013】
本発明の一態様によれば、搬送装置等が周辺環境の変化が少ない狭い領域を走行する際等の自己位置推定をより正確に行うことができる。
【図面の簡単な説明】
【0014】
【
図1】第一実施形態における搬送装置の一例となるキャリアの例を示す図である。
【
図2】キャリアの進入方向から見たパレットの外観の例を示す図である。
【
図4】キャリアの角筒領域の内部への進入を説明する図である。
【
図5】走行制御部の機能的構成例を示すブロック図である。
【
図7】第1のフィルタリング処理を説明する図である。
【
図8】第2のフィルタリング処理を説明する図である。
【
図9】平面検出部により検出されるyz平面の例を示す図である。
【
図10】算出部によるyの値の算出の例について説明する図である。
【
図11】パレット内走行制御処理の流れの一例を説明するフローチャートである。
【
図12】前処理の流れの一例を説明するフローチャートである。
【
図13】平面検出処理の流れの一例を説明するフローチャートである。
【
図14】位置角度推定処理の流れの一例を説明するフローチャートである。
【
図15】第一実施形態に係るキャリアが対象パレットの角筒領域に進入する実験の結果を示すグラフである。
【
図16】走行制御部として用いられるコンピュータの物理的構成を例示したブロック図である。
【発明を実施するための形態】
【0015】
<第一実施形態>
以下、本発明の例示的実施形態について、図面を参照して詳細に説明する。
【0016】
図1は、本実施形態における搬送装置の一例となるキャリアの例を示す図である。同図に示されるようにキャリア20は、その上部にスラブが載せられたパレット等の貨物を載せて、地面10上を走行するように構成されている。なお、
図1には、貨物が載置されていない状態のキャリア20が示されている。キャリア20を上からみた場合、走行方向が長手方向となる長方形になる。
【0017】
キャリア20は、本実施形態における搬送装置の一例であり、例えば、上部にパレットを積んで、自動走行により搬送するように構成されている。キャリア20は、製鉄所内を自動走行してパレットヤード(パレットが1又は複数台設置された、製鉄所内におけるスラブ等の一時保管場所)に到達する。
【0018】
図2は、キャリア20の進入方向から見たパレットの外観の例を示す図である。同図に示されるように、パレット50は、主に天板51と、幅方向の両側で天板51を支える柱52a-1、柱52a-2、柱52b-1、柱52b-2、・・・によって構成されている。天板51上には、例えば、鋼板やスラブなどが載置される。
【0019】
柱52a-1および柱52a-2は、キャリア20が進入するパレット50の奥行方向に既知の間隔で、パレット50の幅方向の両側で対となるように配置されている。例えば、柱52a-1が、天板51の先端部(キャリア20の進入方向から見て最も手前側)から1.5mの距離に配置されている場合、柱52a-2もやはり、天板51の先端部から1.5mの距離に配置される。柱52b-1および柱52b-2、・・・も同様に、対となるように配置されている。なお、各柱を個々に区別する必要がない場合、単に柱52、または柱対52a、柱対52b、・・・と称することにする。
【0020】
このように、対となる柱は、それぞれ、パレット50の奥行方向の所定の位置に配置されている。例えば、パレットの奥行方向1.5mの位置に対となる柱52aが配置され、パレットの奥行方向3.2mの位置に対となる柱52bが配置される。パレット50を上から見た場合、奥行方向が長手方向となる長方形になる。
【0021】
キャリア20は、天板51と各柱52により形成される空間に進入する。天板51と、各柱52と、地面10とにより形成される空間は、矩形の面をパレット50の奥行方向に平行に並べて得られる角筒形の領域となるので、以下では、パレット50の天板51と奥行方向に並ぶ各柱52とで形成される空間を、角筒領域と称することにする。パレット50等を載置するために、キャリア20は、地面上を走行して、角筒形の領域である角筒領域の内部に進入する。
【0022】
柱52a-1と柱52a-2との間の距離が角筒領域の幅に対応する。上述したように、角筒領域内には、キャリア20が進入する角筒領域の奥行方向に既知間隔で、角筒領域の幅方向の両側で対となるように柱が配置されている。対となる柱が配置される角筒領域の奥行方向の間隔は、一定間隔であっても一定間隔でなくてもよく、対となる柱の奥行方向の位置が、予め既知でありさえすればよい。角筒領域の幅は、キャリア20の幅に対して数%だけ大きく構成されている。換言すれば、角筒領域は、キャリア20の寸法に関し、空間的な余裕があまりない(狭い領域)と考えられる。また、上述したように、キャリア20は、製鉄所内をパレットヤードまで走行する。この場合、キャリア20が通る製鉄所内の道は、キャリア20の寸法に関し、空間的な余裕が大きい(広い領域)と考えられる。
【0023】
キャリア20は、製鉄所内をパレットヤードまで走行する場合等、広い領域を走行する際には、周囲の物体に衝突する可能性が相対的に低い。このため、広い領域を走行する際には、キャリア20は、必ずしも高精度ではないものの計算負荷の小さい通常モードで自動走行する。通常モードにおいては、周囲の建造物や交差点の位置等に基づいて自己位置推定が行われる。
【0024】
一方、キャリア20は、角筒領域の内部へ進入する場合等、狭い領域を走行する際には、空間的な余裕がない状態の下、周囲の物体に衝突しないようにするために、高精度モードで自動走行する。詳細は、後述するが、高精度モードにおいては、より精度の高い自己位置推定が行われる。
【0025】
図3は、パレットヤードの例を示す図である。この例では、パレットヤードに、パレット50-1、パレット50-2およびパレット50-3が配置されている。キャリア20が進入すべきパレットが、パレット50-1である場合、キャリア20は、パレット50-1の近辺まで通常モードで自動走行する。その後、キャリア20は、高精度モードで自動走行することにより、角筒領域の内部に進入する。
【0026】
図4は、キャリア20とパレット50-1とを上から見た図であり、キャリア20の角筒領域の内部への進入を説明する図である。ここでは、キャリア20の走行方向(キャリア20の長手方向)の中心線が点線20xとして示されている。
【0027】
図4は、パレット50-1を基準とした(即ち、角筒領域を基準とした)座標系(第1の3次元座標系)で規定されている。第1の3次元座標系では、パレット50-1の奥行方向がx軸とされ、パレット50-1の幅方向がy軸とされ、紙面と垂直となる高さ方向がz軸に対応する。なお、各パレット50の中でキャリア20が進入すべきパレットを、適宜、対象パレットと称することにする。
【0028】
図4の例では、対象パレット50-1の中心となる位置Gの位置が、第1の3次元座標系における原点とされ、
図4の紙面上の任意の点が、3次元座標系(x,y,z)により表される。なお、説明を簡単にするために、第1の3次元座標系の原点、並びに、x軸、y軸およびz軸の方向を上記のように決めたが、第1の3次元座標系は角筒領域に固定された座標系でありさえすれば良く、角筒領域を基準とする座標系であれば、上記と異なる3次元座標系を規定してもよい。
【0029】
通常モードでの走行が完了した時点で、キャリア20は、
図4中下側の位置にあるものとし、高精度モードで自動走行することにより、キャリア20が
図4中上側のように、パレット50-1の内部に進入する。
【0030】
図4に示される例では、通常モードでの走行が完了した時点で、キャリア20の向きは、好ましい進入方向に対して左方向に傾いており、このまま直進すると、角筒領域の内部への進入することはできない。このため、キャリア20は、高精度モードで自動走行してキャリア20の中心となる点Pの位置が、例えば、図中の曲線で示される経路を辿るように移動するよう制御される必要がある。
【0031】
対象パレット50-1の角筒領域の内部に進入したキャリア20は、高精度モードでの自動走行の結果、キャリア20の中心となる点Pが対象パレット50-1の中心となる位置Gに重なる位置に到達して停止する。この状態において中心線である点線20xの向きは、x軸の向きと一致する。
【0032】
本実施形態では、高精度モードで自動走行する際に高精度な自己位置推定が行われる。自己位置推定には、LiDAR(Light Detection And Ranging)21が用いられる。
【0033】
図4の例では、キャリア20の走行方向の先端部であって、キャリア20の短手方向の中心となる位置に、LiDAR21が取り付けられている。すなわち、LiDAR21は、キャリア20の走行方向(長手方向)の中心線である点線20x上の位置に取り付けられている。
【0034】
LiDAR21は、例えば、レーザ光をパルス状に照射し、物体で反射して返ってくる光を検出し、物体に反射されて返ってくるまでの時間から当該物体までの距離、方向などを測定する。このとき、検出された反射光は、LiDAR21を基準とした(即ち、キャリア20を基準とした)座標系である3次元座標系(第2の3次元座標系)で、キャリア20の周囲の物体に対応する点群として記憶される。この第2の3次元座標系は、キャリア20と共に移動するキャリア20に固定された座標系であり、LiDAR21の位置に対する相対的な位置を示す座標系である。キャリア20上でのLiDAR21の取り付け位置は既知であり、キャリア20の形状も既知であるため、LiDAR21の位置に対する相対的な位置として、キャリア20の中心となる点Pの位置を求めることができる。
【0035】
以下では、LiDAR21の位置を第2の3次元座標系における原点とし、キャリア20の中心線である点線20xをxL軸、キャリア20の幅方向をyL軸、高さ方向をzL軸として説明を行う。また、第2の3次元座標系で規定される任意の点を(xL,yL,zL)で表すものとする。
【0036】
また、キャリア20の自己位置を推定するためには、キャリア20の位置および向きを考える必要があるが、キャリア20は、平坦な地面上を走行するので、自己位置推定では、2次元空間における位置および向きが問題となり、高さ方向は問題にはならない。このため、パレット50を構成する部材(各柱52や天板51等)の位置と向きが、第2の3次元座標系の高さを無視した(xL,yL,θL)と表される座標として得られれば、原点Gと部材との相対位置は既知であるため、第1の3次元座標系を基準としたキャリアの中心点Pの位置と中心線の向き(x,y,θ)も、簡単な座標変換により算出することが可能となる。
【0037】
θは、第1の3次元座標系において、キャリア20の中心線である図中の点線20xと、x軸とのずれを表す角度であり、対象パレット50-1の向きに対するキャリア20の回転角を意味する。なお、キャリア20の中心線(点線20x)は、LiDAR21から真っすぐ前方に照射されるレーザ光の向きと一致するものとする。
【0038】
通常モードでの走行が完了した時点で、キャリア20は、角筒領域への進入に好適なように、角筒領域正面の予め定められた位置の範囲内にあり、かつ、予め定められた向きの範囲内にあるものとする。例えば、通常モードでの走行が完了した時点で、キャリア20は、LiDAR21が、対象パレット50-1の奥行方向において、対象パレット50-1の入口の手前1m~2mの範囲内となるように位置するものとする。また、通常モードでの走行が完了した時点で、キャリア20は、例えば、LiDAR21の位置が、対象パレット50-1の幅方向において原点Gから1mの範囲内となるように位置するものとする。
【0039】
例えば、通常モードでの走行が完了した時点でのLiDAR21の第1の3次元座標系上の位置を(a,b,c)とし、パレット50-1の天板51の先端中心部(対象パレット50-1の入口の中心部)の位置を(p,0,c)とする。この場合、(a,b,c)は、1m≦(a-p)≦2m、および、-1m≦(b-0)≦1mの関係を満たすものとする。
【0040】
また、通常モードでの走行が完了した時点で、例えば、キャリア20の中心線(点線20x)とx軸とのずれは、±5°以内であるものとする。
【0041】
(走行制御部の構成)
図5は、キャリア20の走行制御部100の機能的構成例を示すブロック図である。この例では、走行制御部100が、位置角度推定部101および駆動信号生成部102を有している。
【0042】
(位置角度推定部101)
位置角度推定部101は、点群取得部121、前処理部122、平面検出部123および算出部124を有している。位置角度推定部101は、角筒領域を基準とした座標系である第1の3次元座標系において、キャリア20の位置およびキャリア20の回転角とを推定する。
【0043】
(点群取得部121)
点群取得部121は、キャリア20に取り付けられたLiDAR等のセンサを用い、キャリア20を基準とした座標系である第2の3次元座標系で、角筒領域を含むキャリア20の周囲の物体に対応する点群を取得する機能部である。より具体的には、点群取得部121は、LiDAR21を用いてレーザ光を照射し、キャリア20の周囲にある物体で反射した光に基づいて、キャリア20の周囲の物体の表面に対応する点からなる点群を取得する。ここで、点群は、第2の3次元座標系における点の集まりである。
【0044】
(前処理部122)
前処理部122は、点群取得部121により取得された点群のフィルタリング、ダウンサンプリング、クラスタリングなどを行う。
図6に前処理部122の構成を説明する図を示す。前処理部122は、
図6に示すように、第1フィルタリング処理部122a、ダウンサンプリング処理部122b、クラスタリング処理部122c、及び、第2フィルタリング処理部122dを有している。
【0045】
(第1フィルタリング処理部122a)
第1フィルタリング処理部122aは、点群取得部121で取得した点群から、所定の範囲外に位置する点群をフィルタリングする第1のフィルタリング処理を行う機能部である。より具体的には、第1フィルタリング処理部122aは、第2の3次元座標系における、xL軸、yL軸およびzL軸のそれぞれの座標の値に基づくフィルタリングであって、不要な点群を除去する処理を実行する。この処理を、第1のフィルタリング処理と称することにする。
【0046】
第1のフィルタリング処理のyL軸に関しては、対象パレット50-1の幅をW_palletとすると、例えばyL<-2×W_pallet、または、2×W_pallet<yLをフィルタリングの条件とすることができる。例えば、対象パレット50-1の幅が2.5mである場合、yL軸は、左右方向と言い換えることができるので、原点(LiDAR21の位置)より5mを超えて左に位置する点群と、原点より5mを超えて右に位置する点群とが除去されることになる。
【0047】
第1のフィルタリング処理のxL軸に関しては、LiDAR21と対象パレットの入口との間の距離のおおよその値が分っている場合には、その距離に余裕代を加えた値を超えて位置する点群を除去する。例えば、LiDAR21と対象パレット50-1の入口の中心部との間の距離が2m未満である場合、余裕代2mを加えた4mを閾値として、xL>4mをフィルタリング条件としても良く、この場合、LiDAR21の位置より4mを越えて前方(キャリア20のx軸方向の前方)に位置する点群が除去される。
【0048】
第1のフィルタリング処理のzL軸に関しては、パレット50の天板51の高さを超えて位置する点群を除去する。例えば、LiDAR21からパレット50の天板51までの高さがZ_palletである場合は、zL>Z_palletをフィルタリング条件とすれば、天板51より高い位置にある点群が除去される。また、地面の点群も不要であることから、地面を区別するための閾値Z_(just_above_ground)を設けて、zL<Z_(just_above_ground)となる点群も除去するのが好ましい。
【0049】
図7は、第1のフィルタリング処理を説明する図である。同図は、パレットヤードのキャリア20およびパレット50を上から見た図である。
【0050】
同図には、点線の矩形71が示されており、矩形71は、x
L軸またはy
L軸と平行な辺により構成されている。第1のフィルタリング処理では、
図7の矩形71の範囲外にある点群が除去される。
【0051】
このようにして、第1フィルタリング処理部122aは、x軸、y軸およびz軸方向において所定の範囲外に位置する点群をフィルタリングする第1のフィルタリング処理を実行する。これにより、xL軸、yL軸およびzL軸のそれぞれの方向において、不要な点群が除去されることになる。
【0052】
(ダウンサンプリング処理部122b)
次に、ダウンサンプリング処理部122bは、第1のフィルタリング処理を経た点群をダウンサンプリングする機能部である。より具体的には、ダウンサンプリング処理部122bは、第1のフィルタリング処理を経た点群、すなわち、
図7の矩形71の範囲内にある点群をダウンサンプリングするダウンサンプリング処理を行う。一例として、点群を構成する点のそれぞれを、Point Cloud Library(PCL)のVoxelGridクラスを用いてVoxelグリッドとして表現することでダウンサンプリングが行われる。この際、Voxelグリッドは、例えば、5cm
3のVoxelグリッドであってもよい。
【0053】
このようにすることで、例えば、位置角度推定部101の処理負荷を低減させることができる。なお、例えば、位置角度推定部101の処理能力に余裕がある場合には、ダウンサンプリング処理は省略してもよい。
【0054】
(クラスタリング処理部122c)
クラスタリング処理部122cは、第1のフィルタリング処理を経て得られた点群をクラスタリングしてクラスタを生成する機能部である。より具体的には、クラスタリング処理部122cは、第1のフィルタリング処理(およびダウンサンプリング処理)を経た点群をクラスタリングするクラスタリング処理を実行する。例えば、3次元座標系において、所定範囲内に位置する点が同一物を表していると想定し、それらの点の集合を1つのクラスタとみなすクラスタリングが行われる。この際、クラスタリングのアルゴリズムとして、PCLが用いられるようにしてもよい。
【0055】
(第2フィルタリング処理部122d)
第2フィルタリング処理部122dは、クラスタリング処理部122cで生成されたクラスタを、第2の3次元座標系におけるy軸上の位置に基づいてフィルタリングする第2のフィルタリング処理を行う機能部である。すなわち、第2フィルタリング処理部122dは、クラスタリング処理を経て得られた各クラスタのフィルタリングであって、不要なクラスタの点群を除去する処理を実行する。この処理を第2のフィルタリング処理と称することにする。
【0056】
上述したように、通常モードでの走行が完了した時点で、キャリア20は、予め定められた位置の範囲内において予め定められた向きの範囲内にある。このため、クラスタリング処理を経て得られた各クラスタのうち、対象パレット50-1の一部であるクラスタは、
図7においてy
L=0となる点を含んでいると考えられる。
【0057】
図8は、第2のフィルタリング処理を説明する図である。同図は、
図7の矩形71によって示される範囲内において、対象パレット50-1を上から見た図である。
【0058】
第2のフィルタリング処理では、y
L=0となる点を含むクラスタが特定される。
図8の例の場合、y
L=0となる点を含むクラスタは、図中水平方向の線50-1aに対応するクラスタである。例えば、対象パレット50-1の天板51などに対応する点群が、線50-1aに対応する。
【0059】
第2フィルタリング処理部122dは、線50-1aのy
L軸上の最大値y_maxおよび最小値y_minを特定する。
図8の例の場合、線50-1aの図中左端部のy
L座標の値が最小値y_minとなり、線50-1aの図中右端部のy
L座標の値が最大値y_maxとなる。
【0060】
そして、第2フィルタリング処理部122dは、y_min<y
L<y_maxとなる点群以外の点群によって構成されるクラスタを除去する。これにより、
図8の点線により示される矩形72の範囲外にあるクラスタの点群が除去される。例えば、対象パレット50-1とは異なるパレットであるパレット50-2およびパレット50-3の一部となるクラスタの点群が除去される。
【0061】
このようにして、第2フィルタリング処理部122dは、クラスタリング処理の結果得られたクラスタを、yL軸上の位置に基づいてフィルタリングする第2フィルタリング処理を実行する。
【0062】
なお、前処理部122を構成する各部の処理は、後述する平面検出部123による処理の前に実行される。
【0063】
(平面検出部123)
位置角度推定部101の平面検出部123は、点群に基づいて、対となる柱によって規定される前記角筒領域の幅方向と平行な平面を検出する機能部である。より具体的には、平面検出部123は、好ましくは第2フィルタリング処理を経た点群に基づいて、角筒領域の幅方向と平行な平面であるyz平面を検出する。yz平面の検出は、例えば、PCLを用いて行われるようにしてもよい。
【0064】
ここで、yz平面は、z軸と平行なクラスタと、y軸に平行なクラスタとにより規定される平面となる。対象パレット50-1において、柱52a-1、柱52a-2、柱52b-1、柱52b-2、・・・に対応するクラスタは、z軸と平行なクラスタであり、天板51に対応するクラスタは、y軸に平行なクラスタとなる。
【0065】
図9は、平面検出部123により検出されるyz平面の例を示す図である。同図は、
図8の矩形72の範囲内において検出されたyz平面を上から見た様子を示している。この例では、検出されたyz平面として、平面80-1、平面80-2、・・・および平面80-6が示されている。
【0066】
平面80-1は、天板51、地面10、柱52a-1および柱52a-2によって形成された平面であり、平面80-2は、天板51、地面10、柱52b-1および柱52b-2によって形成された平面である。このように、検出された平面は、各柱対52a、52b、・・・の位置に対応して形成されることになり、角筒領域内において検出されるyz平面は、各柱対によって規定されることになる。
【0067】
なお、上述したように、点群取得部121により取得された点群は、(xL,yL,zL)の第2の3次元座標系に記憶されるが、x軸とxL軸とのずれが±5%程度である場合、PCLを用いたyLzL平面の検出によって、yz平面を検出することが可能である。
【0068】
このようにして、平面検出部123は、柱対によって規定される角筒領域の幅方向と平行な平面を検出する。
【0069】
(算出部124)
位置角度推定部101の算出部124は、平面を通過した回数と前記平面までの距離とに基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の奥行方向における位置を算出し、前記平面に含まれる点群に基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の幅方向における位置と、前記角筒領域の奥行方向に対する前記搬送装置の回転角とを算出する機能部である。より具体的には、算出部124は、平面検出部123により検出された平面に基づいてキャリア20の位置及び回転角を示すx,y,θの値を算出する。なお、位置角度推定部101は、対象パレット50-1の寸法を予め記憶しているものとし、例えば、各対となる柱がどの位置に配置されているかなどの情報が予め記憶されているものとする。
【0070】
算出部124は、平面検出部123により検出された平面のうち、LiDAR21のレーザの照射方向において、LiDAR21に最も近い平面を特定する。この平面を、直近平面と称することにする。例えば、通常モードでの走行が完了した時点で、直近平面は、
図9の平面80-1となる。その後、キャリア20が対象パレット50-1の角筒領域内に進行すると、直近平面が、平面80-2、平面80-3、平面80-4、・・・へと変更されることになる。
【0071】
(xの算出)
算出部124は、原点(LiDAR21の位置)から直近平面までの距離を算出する。ここで算出される距離は、LiDAR21と直近平面とが角筒領域の奥行方向にどれだけ離れているかを表すものなので、算出された距離に基づいてxの値を算出することができる。
【0072】
なお、平面80-1乃至平面80-6のそれぞれから位置Gまでの距離であって、角筒領域の奥行方向の距離は、対象パレット50-1の寸法に基づいて予め特定されているものとする。従って、LiDAR21の位置から直近平面までの距離を算出することにより、第1の3次元座標系におけるLiDAR21の位置のx座標の値を求めることができる。
【0073】
また、算出部124は、直近平面を通過した回数(通過平面数)を記憶しており、現在の直近平面が、平面80-1~平面80-6のいずれかであるかを特定して、xの値を算出する。
【0074】
なお、直近平面を通過したか否かは、例えば、LiDAR21から直近平面までの距離を、閾値と比較することにより判定される。閾値は、例えば、現在の直近平面から次の直近平面までの距離に基づいて設定される。
【0075】
対象パレット50-1の寸法が既知であれば、柱の配置間隔を参照して、現在の直近平面から次の直近平面までの距離を算出することができる。例えば、現在の直近平面が平面80-1である場合、次の直近平面は、平面80-2となる。
【0076】
例えば、角筒領域の奥行方向の距離である、平面80-1と平面80-2との間の距離は、柱52a-1と柱52b-1との間隔と等しくなる。算出部124は、このように、対象パレット50-1の寸法に基づいて、隣接する平面間の距離を算出し、現在の直近平面から次の直近平面までの距離を算出することができる。
【0077】
算出部124は、例えば、対象パレット50-1の寸法に基づいて現在の直近平面から次の直近平面までの距離Dsを算出し、閾値を0.9×Dsに設定する。原点(LiDAR21の位置)から直近平面までの距離が閾値以上である場合、直近平面を1つ通過したと判定される。
【0078】
このように、平面を通過した回数および平面までの距離に基づいて、第1の3次元座標系におけるキャリア20の角筒領域の奥行方向における位置(x軸上の位置)が算出される。
【0079】
(yの算出)
また、算出部124は、直近平面の水平方向の端部を構成する点群(すなわち、柱対に対応する点群)を特定し、特定された点群に基づいてyの値を算出する。
【0080】
LiDAR21の高さ付近の点群のうち最もyL=0に近いマイナス側とプラス側の2点を求める。なお、LiDAR21の高さ付近の点群を用いるのは、そのような点群は高い精度で検出されたと考えられるからである。
【0081】
LiDAR21の高さは、zL=0なので、算出部124は、例えば、-0.1m<zL<0.1mとなるzL座標の値を有し、yL<0であり、絶対値の最も小さいyL座標の値を有する点を第1点として特定する。第1点のyL座標の値は、-dpで表されるものとする。また、算出部124は、例えば、-0.1m<zL<0.1mとなるzL座標の値を有し、yL>0であり、絶対値の最も小さいyL座標の値を有する点を第2点として特定する。第2点のyL座標の値は、dmで表されるものとする。
【0082】
図10は、算出部124によるyの値の算出の例について説明する図である。同図は、直近平面を概略的に示した図であり、図中の上下方向がz
L軸とされ、図中の左右方向がy
L軸とされている。x
L軸は、紙面の奥行方向となる。図中のハッチングにより示された部分が点群を表し、y
L軸と平行な部分は、対象パレット50-1の天板51に対応し、z
L軸と平行な部分が柱対に対応する。
【0083】
第1点は、例えば、対象パレット50-1の柱52a-1に対応する点群の中の1点であり、第2点は、例えば、対象パレット50-1の柱52a-2に対応する点群の中の1点である。すなわち、キャリア20の進行方向の左側の柱に対応する点群の中の1点が第1点となり、右側の柱に対応する点群の中の1点が第2点となる。
【0084】
第1点は、(yL,zL)=(0,0)の位置から、角筒領域の幅方向に距離dpだけ離れている。第2点は、(yL,zL)=(0,0)の位置から、角筒領域の幅方向に距離dmだけ離れている。
【0085】
算出部124は、対象パレット50-1の幅W_pallet(≒dp+dm)を、dpおよびdmの値を用いて比例配分することにより、第1の3次元座標系におけるキャリア20のy座標の値を算出する。すなわち、算出部124は、y座標の値を次の式(1)によって算出する。
【0086】
y=W_pallet/2-dp×(W_pallet/(dp+dm))
・・・(1)
すなわち、算出部124は、対象パレット50-1の角筒領域の幅、および、第1点および第2点を用いて第1の3次元座標系におけるキャリア20の角筒領域の幅方向における位置(y軸上の位置)を算出する。
【0087】
このように、平面に含まれる点群に基づいて、第1の3次元座標系におけるキャリア20のy軸上の位置が算出される。
【0088】
(θの算出)
さらに、算出部124は、直近平面を表す式に基づいてθを算出する。なお、yz平面は、次の式(2)により表すことができる。
【0089】
ax+by+cz+d=0
・・・(2)
ここで、係数a,b,c,およびdは直近平面に含まれる点群の座標(第2の3次元座標系の座標)に基づいて算出することができる。
【0090】
θを算出する際にはzの値を用いる必要はないので、算出部124は、次の式(3)によってθの値を算出する。
【0091】
θ=atan(-a/b)
・・・(3)
なお、ここで算出されるθは、実際には、キャリア20の中心線(点線20x)に対する対象パレット50-1の中心線のずれを表すものであるが、このθはパレット50-1の向きに対するキャリア20の回転角と考えることもできる。
【0092】
このように、平面に含まれる点群に基づいて、前記第1の3次元座標系におけるキャリア20の回転角が算出される。これにより、角筒領域の奥行方向に対するキャリア20の回転角(パレット50-1の向きに対するキャリア20の回転角θ)が算出される。
【0093】
(駆動信号生成部102)
駆動信号生成部102は、位置角度推定部101の推定結果に基づいて、角筒領域内の走行のための駆動信号を生成する機能部である。より具体的には、
図5において、位置角度推定部101は、算出部124によって算出されたx、yおよびθの値を、駆動信号生成部102に供給する。駆動信号生成部102は、例えば、キャリア20の車輪を回転させ、または、車輪の向きを変えさせるための駆動信号を生成し、生成した駆動信号を出力する。すなわち、駆動信号生成部102は、位置角度推定部101の推定結果に基づいて、角筒領域内の走行のための駆動信号を生成する。
【0094】
このようにすることで、キャリア20の走行制御部100は、自己位置推定を行いながら、走行して角筒領域の内部にキャリア20を進入させる。そして、キャリア20の中心となる点Pが、対象パレット50-1の中心となる点Gと一致する位置までキャリア20が移動したとき、走行を停止させる。
【0095】
(パレット内走行制御処理の流れ)
次に、
図11を参照して、キャリア20の走行制御部100によるパレット内走行制御処理の例について説明する。
図11は、パレット内走行制御処理の流れの一例を説明するフローチャートである。この処理は、例えば、キャリア20が高精度モードで走行するときに実行される。
【0096】
ステップS101において、点群取得部121は、LiDAR21にレーザ光を照射させ、反射した光に対応する点からなる点群を取得する。ここで、点群は、第2の3次元座標系において記憶された点の集まりである。
【0097】
ステップS102において、前処理部122は、前処理を実行する。これにより、点群取得部121により取得された点群のフィルタリング、ダウンサンプリング、クラスタリングなどが行われる。
【0098】
ステップS103において、平面検出部123は、平面検出処理を実行する。これにより、上述したyz平面が検出されるとともに、直近平面を表す式の係数が算出される。
【0099】
ステップS104において、算出部124は、位置角度推定処理を実行する。これにより、上述したx、yおよびθの値が算出されることにより、自己位置推定が行われる。推定結果は、駆動信号生成部102に供給される。
【0100】
ステップS105において、駆動信号生成部102は、ステップS104の処理による推定結果に基づいて、角筒領域内の走行のための駆動信号を生成する。これにより、キャリア20は、例えば、車輪の向きを変えながら徐行することにより、角筒領域内に進入する。
【0101】
ステップS106において、キャリア20は、停止位置に到達したか否かを判定する。例えば、キャリア20の中心となる点Pが、対象パレット50-1の中心となる点Gと一致する位置までキャリア20が移動したとき、ステップS106において停止位置に到達したと判定される。
【0102】
ステップS106において、まだ停止位置に到達していないと判定された場合、処理は、ステップS101に戻り、それ以降の処理が繰り返し実行される。
【0103】
ステップS106において、停止位置に到達したと判定された場合、キャリア20は、停止し、パレット内走行制御処理は終了する。
【0104】
このようにして、パレット内走行制御処理が実行される。
【0105】
(前処理の流れ)
次に、
図12を参照して、
図11のステップS102の前処理の詳細について説明する。
図12は、前処理の詳細な例を説明するフローチャートである。
【0106】
ステップS121において、前処理部122に含まれる第1フィルタリング処理部122aは、第1のフィルタリング処理を実行して、第2の3次元座標系におけるxL軸、yL軸およびzL軸方向において所定の範囲外に位置する点群を除去する第1のフィルタリング処理を実行する。
【0107】
このとき、例えば、yL軸に関しては、原点より所定の距離(例えば、対象パレット50-1の幅の2倍)を超えて左に位置する点群と、原点より所定の距離を超えて右に位置する点群とが除去されることになる。また、xL軸に関しては、例えば、LiDAR21と対象パレットの入口との間の距離に余裕代を加えた値を超えて位置する点群が除去される。さらに、zL軸に関しては、例えば、パレット50の天板51の高さを超えて位置する点群と地面の点群が除去される。
【0108】
これにより、例えば、
図7に示される点線の矩形71の範囲外にある点群が除去される。
【0109】
ステップS122において、前処理部122に含まれるダウンサンプリング処理部122bは、ダウンサンプリング処理を実行して、第1のフィルタリング処理を経た点群、すなわち、
図7の矩形71の範囲内にある点群をダウンサンプリングする。このとき、例えば、点群を構成する点のそれぞれを、PCLのVoxelGridクラスを用いてVoxelグリッドとして表現することでダウンサンプリングが行われるようにしてもよい。
【0110】
なお、例えば、位置角度推定部101の処理能力に余裕がある場合、ステップS122の処理は、省略されるようにしてもよい。
【0111】
ステップS123において、前処理部122に含まれるクラスタリング処理部122cは、クラスタリング処理を実行する。これにより、例えば、3次元座標系において、所定範囲内に位置する点が同一物を表していると想定し、それらの点の集合を1つのクラスタとみなすクラスタリングが行われる。この際、クラスタリングのアルゴリズムとして、PCLが用いられるようにしてもよい。
【0112】
ステップS124において、前処理部122に含まれる第2フィルタリング処理部122dは、第2のフィルタリング処理を実行して、クラスタリング処理を経て得られた各クラスタのうち、不要なクラスタを除去する。
【0113】
このとき、y
L=0となる点を含むクラスタが特定され、当該クラスタのy
L軸上の最大値y_maxおよび最小値y_minを特定し、y_min<y
L<y_maxとなる点群以外の点群によって構成されるクラスタが除去される。これにより、例えば、
図8の点線により示される矩形72の範囲外にあるクラスタが除去される。
【0114】
このようにして前処理が実行される。
【0115】
(平面検出処理の流れ)
次に、
図13を参照して、
図11のステップS103の平面検出処理の詳細について説明する。
図13は、平面検出処理の詳細な例を説明するフローチャートである。
【0116】
ステップS141において、平面検出部123は、第2フィルタリング処理を経た点群に基づいて、柱対によって規定される角筒領域の幅方向と平行な平面であるyz平面を検出する。yz平面の検出は、例えば、PCLを用いて行われるようにしてもよい。
【0117】
これにより、例えば、
図9の平面80-1、平面80-2、・・・、および、平面80-6がされる。
【0118】
ステップS142において、算出部124は、直近平面を表す式の係数を算出する。このとき、ステップS141で検出された平面のうち、LiDAR21のレーザの照射方向において、LiDAR21に最も近い平面が特定される。そして当該直近平面を表す式(上述した式(2))の係数が直近平面に含まれる点群の座標(第2の3次元座標系の座標)に基づいて算出される。
【0119】
このようにして平面検出処理が実行される。
【0120】
(位置角度推定処理の流れ)
次に、
図14を参照して、
図11のステップS104の位置角度推定処理の詳細について説明する。
図14は、位置角度推定処理の詳細な例を説明するフローチャートである。
【0121】
ステップS161において、算出部124は、現在の直近平面を特定する。このとき、算出部124は、通過平面数に基づいて、現在の直近平面が、平面80-1乃至平面80-6のいずれかであるかを特定する。
【0122】
ステップS162において、算出部124は、直近平面までの距離を算出する。このとき、LiDAR21の位置から直近平面までの距離であって、角筒領域の奥行方向の距離が算出される。
【0123】
ステップS163において、算出部124は、ステップS162において算出された距離が閾値以上であるか否かを判定する。
【0124】
閾値は、例えば、現在の直近平面から次の直近平面までの距離に基づいて設定される。なお、まだ1つも直近平面を通過していない場合、すなわち、通過平面数が0である場合、閾値は充分に大きい値である初期値に設定されるものとする。
【0125】
ステップS163において、ステップS162において算出された距離が閾値以上であると判定された場合、ステップS164の処理が実行される。ステップS164において、算出部124は、通過平面数を1つインクリメントする。
【0126】
ステップS163において、ステップS162において算出された距離が閾値以上ではないと判定された場合、ステップS164の処理はスキップされ、ステップS165の処理が実行される。
【0127】
ステップS165において、算出部124は、第1の3次元座標系におけるキャリア20に取り付けられたLiDAR21の位置のx座標の値を算出する。
【0128】
なお、平面80-1乃至平面80-6のそれぞれから位置Gまでの距離は、対象パレット50-1の寸法に基づいて求めることができるので、ステップS162で算出された距離を加算することで、LiDAR21の位置から位置Gまでの距離を求めることもできる。
【0129】
ステップS166において、算出部124は、θを算出する。このとき、算出部124は、上述したように、直近平面を表す式(2)に基づいてθを算出する。なお、式(2)の係数は、
図13のステップS142で求めた値が用いられる。そして、算出部124は、上述した式(3)によってθの値を算出する。
【0130】
なお、ここで算出されるθは、実際には、LiDAR21のレーザ光の照射方向に対する対象パレット50-1の中心線のずれを表すものであるが、このθはパレット50-1の向きに対するキャリア20の回転角と考えることもできる。
【0131】
ステップS167において、算出部124は、第1の3次元座標系におけるキャリア20に取り付けられたLiDAR21の位置のy座標の値を算出する。このとき、上述したように、算出部124は、直近平面の水平方向の端部を構成する点群(すなわち、柱対に対応する点群)の位置を特定し、特定された点群に基づいてyの値を算出する。
【0132】
すなわち、LiDAR21の高さ付近の点群のうち最もy
L=0に近いマイナス側とプラス側の2点が求められ、
図10に示される距離dpおよび距離dmが求められる。そして、算出部124は、上述した式(1)によってyの値を算出する。
【0133】
このようにして、位置角度推定処理が実行される。ステップS165で算出されたxの値、ステップS166のθの値、および、ステップS167で算出されたyの値が、位置角度推定処理の推定結果として出力され、駆動信号生成部102に供給されることになる。
【0134】
(第一実施形態の効果)
このように、本実施形態によれば、搬送装置であるキャリア20の自己位置を推定することができる。本実施形態によれば、LiDAR21を用いて点群を取得することで自己位置推定が行われる。従って、既存の自己位置推定に係る機器、設備等を有効に活用することができ、特別な機器、設備等を用いる必要はない。
【0135】
また、本実施形態によれば、寸法が既知である角筒領域内において、角筒領域の奥行方向をx軸とした場合のyz平面が検出され、検出されたyz平面までの距離に基づいて搬送装置であるキャリア20のx軸上の位置が算出される。従って、簡単な計算により搬送装置のx軸上の位置を正確に算出することができる。
【0136】
さらに、本実施形態によれば、検出されたyz平面に含まれる点群に基づいて搬送装置のy軸上の位置と回転角とが算出される。従って、より正確に搬送装置のy軸上の位置と回転角とを算出することができ、特に、狭い領域内を自動走行する際に必要となる高精度な自己位置推定が可能となる。
【0137】
また、本実施形態では、上述のように平面を検出することができれば、自己位置推定を行うことができるので、似たような景色が続く領域内であっても、正確な自己位置推定が可能となる。その結果、周辺環境の変化が少ない狭い領域を走行する移動体の自己位置推定をより正確に行うことができる。
【0138】
<実験結果>
図15は、第一実施形態に係るキャリア20が対象パレット50-1の角筒領域に進入する際の自己位置推定精度を検証する実験の結果を示すグラフである。実験は、実機を模擬したシミュレーションとして行われ、
図3に示されるように、キャリア20を対象パレット50-1に進入させた。なお、シミュレーションにおいては、点群取得部121により取得される点群にノイズが加算されている。
【0139】
図15に示される3つのグラフには、それぞれ真値を表す曲線と、位置角度推定部101による推定結果(計算値)を表す曲線とが表示されている。ここで、
図15で示している値は、キャリア20の中心の点Pの位置とキャリア20の角度を示している。
【0140】
図15の最も上側のグラフは、横軸が時間を示し、縦軸がxの値(距離)を示し、xの値の時間の経過に伴う変化が示されている。図中において、answer_xで示される曲線が、xの値の時間の経過に伴う変化の真値を表し、cal_xで示される曲線が、xの値の時間の経過に伴う変化の計算値を表している。
【0141】
図15の中央のグラフは、横軸が時間を示し、縦軸がyの値(距離)を示し、yの値の時間の経過に伴う変化が示されている。図中において、answer_yで示される曲線が、yの値の時間の経過に伴う変化の真値を表し、cal_yで示される曲線が、yの値の時間の経過に伴う変化の計算値を表している。
【0142】
図15の最も下側のグラフは、横軸が時間を示し、縦軸がθの値(角度)を示し、θの値の時間の経過に伴う変化が示されている。図中において、answer_thetaで示される曲線が、θの値の時間の経過に伴う変化の真値を表し、cal_thetaで示される曲線が、θの値の時間の経過に伴う変化の計算値を表している。
【0143】
同図のグラフのそれぞれから分かる通り、xの値の推定結果は、ほぼ真値に追従している。yおよびθの値の推定結果は、経過時間によっては誤差が大きくなっているが、平均的には真値に追従できている。
【0144】
xの値に関する推定誤差は平均60mmであり、標準偏差σ=80mmであった。yの値に関する推定誤差は、平均10mmであり、標準偏差σ=20mmであった。θの値に関する推定誤差は、平均0.09°であり、標準偏差σ=0.50°であった。
【0145】
<第二実施形態>
第一実施形態においては、搬送装置がキャリアによって構成され、角筒領域がパレットによって形成される領域である場合の例について説明した。
【0146】
しかし、搬送装置は、例えば、トラック、乗用車などの車両によって構成されるようにしてもよい。また、角筒領域は、例えば、機械式駐車場のパレット、高架橋などによって形成される領域であってもよい。
【0147】
<その他の実施形態>
上述した実施形態においては、自己位置推定の際にLiDAR21によって取得した点群を用いている。しかしながら、LiDAR以外のその他のセンサ、例えば、2つのカメラを用いた三角測量方式で対象物までの距離を測定する方式のセンサ等を用いて、点群情報を取得するようにしても良い。また、自己位置推定は、必ずしも点群のみを用いて行われる必要はなく、平面を示す関数を用いたり、マップ情報を補助的に用いるなどしても良い。
【0148】
例えば、IMU(Inertial Measurement Unit)や画像、磁気センサ、RTK(Real Time Kinematic)等を、LiDAR21と併用してもよい。
<ソフトウェアによる実現例>
走行制御部100の機能は、当該装置としてコンピュータを機能させるためのプログラムであって、当該装置の各ブロックとしてコンピュータを機能させるためのプログラムにより実現することができる。
【0149】
図16は、走行制御部100として用いられるコンピュータ500の物理的構成を例示したブロック図である。走行制御部100は、
図16に示すように、バス510と、プロセッサ501と、主メモリ502と、補助メモリ503と、通信インタフェース504と、入出力インタフェース505とを備えたコンピュータによって構成可能である。プロセッサ501、主メモリ502、補助メモリ503、通信インタフェース504、及び入出力インタフェース505は、バス510を介して互いに接続されている。入出力インタフェース505には、入力装置506および出力装置507が接続されている。
【0150】
プロセッサ501としては、例えば、CPU(Central Processing Unit)、マイクロプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ、またはこれらの組み合わせ等が用いられる。
【0151】
主メモリ502としては、例えば、半導体RAM(random access memory)等が用いられる。
【0152】
補助メモリ503としては、例えば、フラッシュメモリ、HDD(Hard Disk Drive)、SSD(Solid State Drive)、またはこれらの組み合わせ等が用いられる。補助メモリ503には、上述した走行制御部100の動作をプロセッサ501に実行させるためのプログラムが格納されている。プロセッサ501は、補助メモリ503に格納されたプログラムを主メモリ502上に展開し、展開したプログラムに含まれる各命令を実行する。
【0153】
通信インタフェース504は、ネットワークに接続するインタフェースである。
【0154】
入出力インタフェース505としては、例えば、USBインタフェース、赤外線やBluetooth(登録商標)等の近距離通信インタフェース、またはこれらの組み合わせが用いられる。
【0155】
入力装置506としては、例えば、キーボード、マウス、タッチパッド、マイク、又はこれらの組み合わせ等が用いられる。出力装置507としては、例えば、ディスプレイ、プリンタ、スピーカ、又はこれらの組み合わせが用いられる。
【0156】
走行制御部100の機能を、当該装置としてコンピュータを機能させるためのプログラムにより実現する場合、プロセッサ501と主メモリ502により上記プログラムを実行することにより、上記各実施形態で説明した各機能が実現される。
【0157】
上記プログラムは、一時的ではなく、コンピュータ読み取り可能な、1または複数の記録媒体に記録されていてもよい。この記録媒体は、上記装置が備えていてもよいし、備えていなくてもよい。後者の場合、上記プログラムは、有線または無線の任意の伝送媒体を介して上記装置に供給されてもよい。
【0158】
また、上記各ブロックの機能の一部または全部は、論理回路により実現することも可能である。例えば、上記各制御ブロックとして機能する論理回路が形成された集積回路も本発明の範疇に含まれる。
【0159】
また、上記各ブロックの機能の一部または全部は、上記装置で動作するものであってもよいし、他の装置(例えばエッジコンピュータまたはクラウドサーバ(cloud server)等)で動作するものであってもよい。
【0160】
なお、本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【0161】
〔まとめ〕
本発明の態様1に係る搬送装置は、地面上を走行して角筒形の領域である角筒領域に進入する搬送装置であって、前記角筒領域内には、前記搬送装置が進入する前記角筒領域の奥行方向に既知の間隔で、前記角筒領域の幅方向の両側で対となる柱が配置され、前記角筒領域を基準とした座標系である第1の3次元座標系で、前記搬送装置の位置と前記搬送装置の回転角とを推定する位置角度推定部と、前記位置角度推定部の推定結果に基づいて、前記角筒領域内の走行のための駆動信号を生成する駆動信号生成部と、を備え、前記位置角度推定部は、前記搬送装置に取り付けられたセンサを用い、前記搬送装置を基準とした座標系である第2の3次元座標系で、前記角筒領域を含む前記搬送装置の周囲の物体に対応する点群を取得する点群取得部と、前記点群に基づいて、前記対となる柱によって規定される前記角筒領域の幅方向と平行な平面を検出する平面検出部と、前記平面を通過した回数と前記平面までの距離とに基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の奥行方向における位置を算出し、前記平面に含まれる点群に基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の幅方向における位置と、前記角筒領域の奥行方向に対する前記搬送装置の回転角とを算出する算出部と、を備える。
【0162】
本発明の態様2に係る搬送装置は、上記の態様1において、前記位置角度推定部は、前記平面検出部での処理の前に、前記点群取得部で取得した前記点群から、所定の範囲外に位置する点群をフィルタリングする第1のフィルタリング処理を行う第1フィルタリング処理部と、前記第1のフィルタリング処理を経て得られた点群をクラスタリングしてクラスタを生成するクラスタリング処理部と、前記クラスタを、第2の3次元座標系におけるy軸上の位置に基づいてフィルタリングする第2のフィルタリング処理を行う第2フィルタリング処理部と、を備える。
【0163】
本発明の態様3に係る搬送装置は、上記の態様1または2において、前記算出部は、前記点群の中で、高さ方向の座標の値が予め定められた範囲内の値であって、前記第2の3次元座標系で、前記幅方向の座標の値が0に最も近い負の値である第1の値を有する点と、前記幅方向の値が0に最も近い正の値である第2の値を有する点とを特定し、前記角筒領域の幅と、前記第1の値と、前記第2の値とを用いて前記第1の3次元座標系における前記搬送装置の前記幅方向の位置を算出する。
【0164】
本発明の態様4に係る搬送装置は、上記の態様1乃至3のいずれかにおいて、前記算出部は、前記平面検出部により検出された平面に含まれる点群の前記第2の3次元座標系における座標から、前記平面を表す式の係数を算出し、前記係数を用いて前記角筒領域の奥行方向に対する前記搬送装置の回転角を算出する。
【0165】
本発明の態様5に係る走行制御方法は、地面上を走行して角筒形の領域である角筒領域に進入する搬送装置の走行制御方法であって、前記角筒領域内には、前記搬送装置が進入する前記角筒領域の奥行方向に既知の間隔で、前記角筒領域の幅方向の両側で対となる柱が配置され、前記角筒領域を基準とした座標系である第1の3次元座標系で、前記搬送装置の位置と前記搬送装置の回転角とを推定する位置角度推定ステップと、前記位置角度推定部の推定結果に基づいて、前記角筒領域内の走行のための駆動信号を生成する駆動信号生成ステップと、を備え、前記位置角度推定ステップは、前記搬送装置に取り付けられたセンサを用い、前記搬送装置を基準とした座標系である第2の3次元座標系で、前記角筒領域を含む前記搬送装置の周囲の物体に対応する点群を取得する点群取得ステップと、前記点群に基づいて、前記対となる柱によって規定される前記角筒領域の幅方向と平行な平面を検出する平面検出ステップと、前記平面を通過した回数と前記平面までの距離とに基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の奥行方向における位置を算出し、前記平面に含まれる点群に基づいて、前記第1の3次元座標系で、前記搬送装置の前記角筒領域の幅方向における位置と、前記角筒領域の奥行方向に対する前記搬送装置の回転角とを算出する算出ステップと、を備える。
【0166】
本発明の態様6に係るプログラムは、コンピュータに、上記態様5に記載の走行制御方法を実行させる。
【符号の説明】
【0167】
20 キャリア
21 LiDAR
50 パレット
52 柱
80 平面
100 走行制御部
101 位置角度推定部
102 駆動信号生成部
121 点群取得部
122 前処理部
122a 第1フィルタリング処理部
122b ダウンサンプリング処理部
122c クラスタリング処理部
122d 第2フィルタリング処理部
123 平面検出部
124 算出部