(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0017】
<実施形態>
以下、本発明の一実施形態によるフォークリフト1に備えられる判定装置80について説明する。
フォークリフト1は、
図1に示すように、第1のフォーク10、第2のフォーク20を備える。また、フォークリフト1は、
図2に示すように、撮像装置30、傾斜センサ40、荷重センサ50、操作装置60、表示装置70、判定装置80を備える。
【0018】
第1のフォーク10及び第2のフォーク20は、荷役対象物(以下、荷物と呼ぶ)を支持して昇降することができるフォークである。
【0019】
撮像装置30は、フォークリフト1のマストに設けられ、フォークリフト1の前方を撮像する装置である。撮像装置30は、第1のフォーク10の先端部及び第2のフォーク20の先端部などの第1のフォーク10及び第2のフォーク20の周辺を撮像する。したがって、撮像装置30は、パレットの穴を撮像することが可能である。なお、パレットとは、例えば、
図3に示すような形状をしており、フォークリフト1の荷役対象となる荷物が置かれている台状のものである。なお、
図3は、フォークを挿入するパレットの穴の面を示す正面図であり、符号Aによって示される2つの部分がパレットの穴を表している。
ここでは、撮像装置30は、1つのレンズを備える単眼カメラであるものとする。撮像装置30は、所定の撮像タイミングごとに撮像画像を生成する。
【0020】
傾斜センサ40は、第1のフォーク10及び第2のフォーク20の傾きを検出するセンサである。傾きの基準(すなわち、傾き0度)は、例えば、第1のフォーク10及び第2のフォーク20が荷物を支持せず、チルト操作も行われていないときの傾きであり、このときの傾きを水平とする。
【0021】
荷重センサ50は、第1のフォーク10及び第2のフォーク20の負荷、すなわち第1のフォーク10及び第2のフォーク20によって持ち上げられる荷物の重量を検出するセンサである。
【0022】
操作装置60は、運転者がフォークリフト1の荷役作業を行うために操作する装置である。運転者が操作装置60を操作することによって、フォークリフト1が走行したり、第1のフォーク10とともに第2のフォーク20を昇降させるリフト制御を行ったり、第1のフォーク10及び第2のフォーク20の基部を回動させて第1のフォーク10及び第2のフォーク20の先端部を上下方向に傾けるチルト制御が行われる。
【0023】
表示装置70は、判定装置80による制御に基づいて画像を表示する装置である。表示装置70は、第1のフォーク10の先端部から、撮像装置30が撮像した撮像画像に写る障害物までの距離と、第1のフォーク10の先端部の位置とに応じた画像を、撮像装置30が撮像した撮像画像とともに表示する。表示装置70は、例えば、HUD(Head Up Display)、モニター、スクリーンなどである。
【0024】
判定装置80は、撮像画像に基づいて、画像内のパレットの種別を判定し、その判定結果に基づいて、フォークリフト1の有するフォークをパレットが有する穴に挿入できるか否かを判定する装置である。
【0025】
判定装置80は、
図4に示すように、画像取得部801、種別判定部802、座標特定部803、正対判定部804、高さ判定部805、挿入判定部806、制御部807、報知部808(正対判定結果報知部の一例、高さ判定結果報知部の一例)、記憶部809を備える。
画像取得部801は、フォークリフト1のマストに設けられた撮像装置30が撮像した撮像画像を取得する。
【0026】
種別判定部802は、撮像装置30が撮像した撮像画像に基づいて、その撮像画像内のパレットの種別を判定する。
例えば、種別判定部802は、撮像画像と、撮像画像においてパレットが写っているであろう領域と、当該パレットのラベルとの組み合わせを教師データとして、パレットが写っている領域を含む矩形の範囲の画像を出力するように学習された第1のニューラルネットワークである。種別判定部802がニューラルネットワークである場合、種別判定部802は、フォークリフト1が顧客に引き渡される前に、学習データを第1のニューラルネットワークに入力し、教師データと比較することによって学習される。ここでの学習データとは、学習モデルの訓練時に第1のニューラルネットワークの入力層に入力されるデータのことである。また、ここでの教師データとは、第1のニューラルネットワークの出力層の値と比較するための正解となるデータのことである。この学習によって、顧客に引き渡されるフォークリフト1において、種別判定部802として、パレットの種別を判別可能な(すなわち、材質や形状などの違いに基づいてパレットの種別を特定可能な)学習済みモデルが適用されることになる。学習済みモデルが適用された種別判定部802に撮像画像が入力されると、学習済みモデルによって、パレットの種別に応じた矩形の範囲を示す座標で切り取られた画像がラベルとともに種別判定部802から座標特定部803に出力される。
【0027】
座標特定部803は、種別判定部802が判定した判定結果に基づいて、フォークリフト1の有するフォークをパレットの外形の四隅の座標を特定する。
例えば、座標特定部803は、撮像画像において矩形の範囲を示す座標で切り取られたパレットが写っている画像と、当該パレットのラベルとの組み合わせを教師データとして、当該パレットの四隅の座標を出力するように学習された第2のニューラルネットワークである。座標特定部803がニューラルネットワークである場合、座標特定部803は、フォークリフト1が顧客に引き渡される前に、学習データを第2のニューラルネットワークに入力し、教師データと比較することによって学習される。ここでの学習データとは、学習モデルの訓練時に第2のニューラルネットワークの入力層に入力されるデータのことである。また、ここでの教師データとは、第2のニューラルネットワークの出力層の値と比較するための正解となるデータのことである。この学習によって、顧客に引き渡されるフォークリフト1において、座標特定部803として、パレットの四隅の座標を特定可能な学習済みモデルが適用されることになる。学習済みモデルが適用された座標特定部803に種別判定部802の判定結果が入力されると、学習済みモデルによって、パレットの外形の四隅を示す座標が座標特定部803から高さ判定部805に出力される。
【0028】
正対判定部804は、フォークリフト1がパレットに正対しているか否かを判定する。
例えば、正対判定部804は、撮像画像におけるパレットの形状に基づいてフォークリフト1がパレットに正対しているか否かを判定する。具体的には、例えば、撮像装置30がマストの中心部に設けられている場合、正対判定部804は、撮像画像におけるパレットの形状が左右対称である場合に、フォークリフト1がパレットに正対していると判定する。また、撮像装置30がマストの中心部に設けられている場合、正対判定部804は、撮像画像におけるパレットの形状が左右対称でない場合に、フォークリフト1がパレットに正対していないと判定する。
【0029】
高さ判定部805は、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さであるか否かを判定する。
例えば、高さ判定部805は、座標特定部803が特定したパレットの四隅の座標から、パレットの四隅の対角の2点を結ぶ2本の対角線の交点の座標を算出する。高さ判定部805は、パレットの実際の大きさと撮像画像における画素数との関係、及び、撮像画像を映している角度から、フォークとパレットとの位置関係を算出する。高さ判定部805は、フォークの位置がパレットの位置に対して所定の高さの範囲内にあると判定した場合、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さであると判定する。また、高さ判定部805は、フォークの位置がパレットの位置に対して所定の高さの範囲外にあると判定した場合、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さではないと判定する。
【0030】
挿入判定部806は、種別判定部802が判定した判定結果に基づいて、フォークリフト1の有するフォークをパレットが有する穴に挿入できるか否かを判定する。
例えば、種別判定部802が判定した種別のパレットについて、フォークリフト1がそのパレットに正対していると正対判定部804が判定し、かつ、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さであると高さ判定部805が判定した場合に、挿入判定部806は、フォークをパレットが有する穴に挿入できると判定する。また、種別判定部802が判定した種別のパレットについて、フォークリフト1がそのパレットに正対していないと正対判定部804が判定した場合、または、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さでないと高さ判定部805が判定した場合には、挿入判定部806は、フォークをパレットが有する穴に挿入できないと判定する。
【0031】
制御部807は、フォークの移動を制御する。例えば、制御部807は、フォークからパレットの穴までの距離が短くなるにつれて、フォークの移動速度が低速になるように制御する。また、制御部807は、フォークからパレットの穴までの距離が長くなるにつれて、フォークの移動速度が高速になるように制御する。また、制御部807は、パレットの穴に挿入可能な位置でフォークを停止させる。
【0032】
報知部808は、正対判定部804が判定した判定結果を、フォークリフト1の運転者に報知する。また、報知部808は、高さ判定部805が判定した判定結果を、フォークリフト1の運転者に報知する。
記憶部809は、判定装置80が行う処理に必要な種々の情報を記憶する。
【0033】
次に、判定装置80が行う処理について説明する。
ここでは、
図5に示す判定装置80の処理フローについて説明する。
なお、判定装置80の種別判定部802及び座標特定部803は、フォークリフト1が顧客に引き渡される前に学習された、学習済みモデルによるニューラルネットワークであるものとする。
【0034】
画像取得部801は、撮像装置30から撮像画像を取得する(ステップS1)。
種別判定部802は、撮像装置30が撮像した撮像画像に基づいて、その撮像画像内のパレットの種別を判定する(ステップS2)。
具体的には、学習済みモデルが適用された種別判定部802に撮像画像が入力されると、学習済みモデルによって、パレットの種別に応じた矩形の範囲を示す座標で切り取られた画像(すなわち、クロップした画像)がラベルとともに種別判定部802から座標特定部803に出力される。
【0035】
座標特定部803は、種別判定部802が判定した判定結果に基づいて、フォークリフト1の有するフォークをパレットの外形の四隅の座標を特定する(ステップS3)。
具体的には、学習済みモデルが適用された座標特定部803に種別判定部802の判定結果が入力されると、学習済みモデルによって、パレットの外形の四隅を示す座標が座標特定部803から高さ判定部805に出力される。
【0036】
正対判定部804は、フォークリフト1がパレットに正対しているか否かを判定する(ステップS4)。
例えば、正対判定部804は、撮像画像におけるパレットの形状に基づいてフォークリフト1がパレットに正対しているか否かを判定する。具体的には、例えば、撮像装置30がマストの中心部に設けられている場合、正対判定部804は、撮像画像におけるパレットの形状が左右対称である場合に、フォークリフト1がパレットに正対していると判定する。また、撮像装置30がマストの中心部に設けられている場合、正対判定部804は、撮像画像におけるパレットの形状が左右対称でない場合に、フォークリフト1がパレットに正対していないと判定する。
【0037】
フォークリフト1がパレットに正対していないと正対判定部804が判定した場合(ステップS4においてNO)、報知部808は、正対判定部804が判定した判定結果(すなわち、フォークリフト1がパレットに正対していないこと)を、フォークリフト1の運転者に報知する(ステップS5)。報知部808は、ステップS4の処理に戻す。この場合、運転者は、フォークリフト1がパレットに正対していないという報知に応じて、フォークリフト1がパレットに正対するようにフォークリフト1を操作する。
【0038】
また、フォークリフト1がパレットに正対していると正対判定部804が判定した場合(ステップS4においてYES)、報知部808は、正対判定部804が判定した判定結果(すなわち、フォークリフト1がパレットに正対していること)を、フォークリフト1の運転者に報知する(ステップS6)。この場合、運転者は、フォークリフト1がパレットに正対しているという報知に応じて、フォークリフト1の位置が固定されるようにフォークリフト1を操作する。
【0039】
ステップS6の処理によってフォークリフト1がパレットに正対していることを報知部808がフォークリフト1の運転者に報知した場合、高さ判定部805は、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さであるか否かを判定する(ステップS7)。
例えば、高さ判定部805は、座標特定部803が特定したパレットの四隅の座標から、パレットの四隅の対角の2点を結ぶ2本の対角線の交点の座標を算出する。高さ判定部805は、パレットの実際の大きさと撮像画像における画素数との関係、及び、撮像画像を映している角度から、フォークとパレットとの位置関係を算出する。そして、高さ判定部805は、フォークの位置がパレットの位置に対して所定の高さの範囲内にあると判定した場合、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さであると判定する。また、高さ判定部805は、フォークの位置がパレットの位置に対して所定の高さの範囲外にあると判定した場合、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さではないと判定する。
【0040】
フォークの存在する高さがパレットの穴にフォークを挿入可能な高さでないと高さ判定部805が判定した場合(ステップS7においてNO)、報知部808は、高さ判定部805が判定した判定結果(すなわち、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さでないこと)を、フォークリフト1の運転者に報知する(ステップS8)。
【0041】
制御部807は、フォークの移動を制御する(ステップS9)。具体的には、制御部807は、フォークの高さをパレットの穴の高さまで、すなわち、フォークからパレットの穴までの距離が短くなるように、フォークを移動させる。このとき、制御部807は、フォークからパレットの穴までの距離が短くなるにつれて、フォークの移動速度が低速になるように制御するものであってもよい。そして、制御部807は、パレットの穴に挿入可能な位置でフォークを停止させる。制御部807は、ステップS7の処理に戻す。
【0042】
また、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さであると高さ判定部805が判定した場合(ステップS7においてYES)、報知部808は、高さ判定部805が判定した判定結果(すなわち、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さであること)を、フォークリフト1の運転者に報知する(ステップS10)。
【0043】
挿入判定部806は、種別判定部802が判定した判定結果に基づいて、フォークリフト1の有するフォークをパレットが有する穴に挿入できるか否かを常時判定している。
挿入判定部806は、種別判定部802が判定した種別のパレットについて、フォークリフト1がそのパレットに正対していると正対判定部804が判定し、かつ、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さであると高さ判定部805が判定した場合に、初めて、フォークをパレットが有する穴に挿入できると判定する(ステップS11)。すなわち、ステップS7の処理において、フォークの存在する高さがパレットの穴にフォークを挿入可能な高さであると高さ判定部805が判定した場合に、初めて、挿入判定部806は、フォークをパレットが有する穴に挿入できると判定する。
それ以外の場合には、挿入判定部806は、フォークをパレットが有する穴に挿入できないと判定する。
【0044】
なお、本発明の一実施形態によるフォークリフト1は、最も近い位置にあるパレットを荷役の対象とするものである。
【0045】
以上、本発明の一実施形態によるフォークリフト1について説明した。
本発明の一実施形態によるフォークリフト1の判定装置80において、種別判定部802は、撮像装置30が撮像した撮像画像に基づいて、その撮像画像内のパレットの種別を判定する。挿入判定部806は、種別判定部802が判定した判定結果に基づいて、フォークリフト1の有するフォークをパレットが有する穴に挿入できるか否かを判定する。
こうすることで、判定装置80は、パレットの種別の判定結果に基づいて、パレットの外形の四隅の座標を特定し、パレットの四隅の対角の2点を結ぶ2本の対角線の交点の座標を算出する。そして、判定装置80は、交点の位置が所定の範囲に入っているか否かに基づいて、フォークリフト1のフォークがパレットの穴に挿入できる位置にあるか否かを判定するため、容易にその判定を行うことができる。
【0046】
また、本発明の一実施形態では、高さ判定部805は、パレットの実際の大きさと撮像画像における画素数との関係、及び、撮像画像を映している角度から、フォークとパレットとの位置関係を算出する。このときの撮像画像は、単眼の撮像装置30によって撮像された画像であるため、高さ判定部805が行うフォークとパレットとの位置関係の算出は、簡単な演算で済む。その結果、判定装置80の制御部807による、フォークのパレットの穴の位置までの移動の追従性が、複眼の撮像装置30によって撮像された画像の場合に比べて向上する。
【0047】
また、本発明の一実施形態では、報知部808は、正対判定部804と高さ判定部805のそれぞれの判定結果を、フォークリフト1の運転者に報知する。そのため、運転者は、フォークをパレットが有する穴に挿入できない場合に、フォークリフト1がパレットに正対していないことが原因であるか、フォークの高さがパレットの穴の高さに合っていないことが原因であるかを、容易に知ることができる。
【0048】
なお、本発明の別の実施形態では、種別判定部802、座標特定部803のそれぞれは、ニューラルネットワークである場合、学習済みモデルでなくてもよい。
【0049】
なお、本発明の別の実施形態では、正対判定部804は、正対しているか否かを、TOF(Time of Flight)センサやステレオカメラを用いて判定するものであってもよい。
【0050】
なお、本発明の別の実施形態では、撮像装置30は複眼であり、判定装置80は、複眼の視差を用いて、フォークリフト1からパレットまでの距離を算出するものであってもよい。
【0051】
なお、本発明の別の実施形態では、判定装置80は、正対判定部804を備えなくてもよい。この場合、運転者がフォークリフト1をパレットに正対させた後に、判定装置80に処理させればよい。
【0052】
なお、本発明の別の実施形態では、フォークリフト1への操作に基づいて、荷役の対象とするパレットを選択するものであってもよい。例えば、本発明の別の実施形態では、次に近いパレットの位置に移動させるためのボタンの押下に応じて、判定装置80は、最も近いパレットの位置に停止したフォークを移動させるものであってもよい。
また、本発明の別の実施形態では、例えば、タッチパネル上に表示されるパレットをタップすることで、荷役の対象とするパレットを選択するものであってもよい。この場合、例えば、制御部807は、フォークからパレットの穴までの距離が短くなるにつれて、フォークの移動速度が低速になるように制御し、フォークからパレットの穴までの距離が長くなるにつれて、フォークの移動速度が高速になるように制御するものであってもよい。
【0053】
なお、本発明の実施形態における処理は、適切な処理が行われる範囲において、処理の順番が入れ替わってもよい。
【0054】
本発明の実施形態における記憶部809、その他の記憶装置のそれぞれは、適切な情報の送受信が行われる範囲においてどこに備えられていてもよい。また、記憶部809、その他の記憶装置のそれぞれは、適切な情報の送受信が行われる範囲において複数存在しデータを分散して記憶していてもよい。
【0055】
本発明の実施形態について説明したが、上述の撮像装置30、操作装置60、表示装置70、判定装置80、その他の制御装置は内部に、コンピュータシステムを有していてもよい。そして、上述した処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。コンピュータの具体例を以下に示す。
図6は、少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
コンピュータ5は、
図6に示すように、CPU6、メインメモリ7、ストレージ8、インターフェース9を備える。
例えば、上述の撮像装置30、操作装置60、表示装置70、判定装置80、その他の制御装置のそれぞれは、コンピュータ5に実装される。そして、上述した各処理部の動作は、プログラムの形式でストレージ8に記憶されている。CPU6は、プログラムをストレージ8から読み出してメインメモリ7に展開し、当該プログラムに従って上記処理を実行する。また、CPU6は、プログラムに従って、上述した各記憶部に対応する記憶領域をメインメモリ7に確保する。
【0056】
ストレージ8の例としては、HDD(Hard Disk Drive)、SSD(Solid State Drive)、磁気ディスク、光磁気ディスク、CD−ROM(Compact Disc Read Only Memory)、DVD−ROM(Digital Versatile Disc Read Only Memory)、半導体メモリ等が挙げられる。ストレージ8は、コンピュータ5のバスに直接接続された内部メディアであってもよいし、インターフェース9または通信回線を介してコンピュータ5に接続される外部メディアであってもよい。また、このプログラムが通信回線によってコンピュータ5に配信される場合、配信を受けたコンピュータ5が当該プログラムをメインメモリ7に展開し、上記処理を実行してもよい。少なくとも1つの実施形態において、ストレージ8は、一時的でない有形の記憶媒体である。
【0057】
また、上記プログラムは、前述した機能の一部を実現してもよい。さらに、上記プログラムは、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるファイル、いわゆる差分ファイル(差分プログラム)であってもよい。
【0058】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例であり、発明の範囲を限定しない。これらの実施形態は、発明の要旨を逸脱しない範囲で、種々の追加、省略、置き換え、変更を行ってよい。
【解決手段】判定装置は、フォークリフトのマストに設けられた撮像装置が撮像した撮像画像を取得する画像取得部と、前記撮像画像に基づいて、画像内のパレットの種別を判定する種別判定部と、前記種別判定部が判定した判定結果に基づいて、前記フォークリフトの有するフォークを前記パレットが有する穴に挿入できるか否かを判定する挿入判定部と、を備える。