以下、監視装置の一実施形態について説明する。以下の説明において、上下とは鉛直方向の上下である。
図1に示すように、フォークリフト10は、車体11と、荷役装置12と、を備える。車体11は、運転席Cの上部に設けられたヘッドガード13と、ヘッドガード13を支持する支柱14と、を備える。支柱14同士の間は、開放されている。即ち、フォークリフト10は、キャビンを備えず、運転席Cが外部に開放されたフォークリフトである。本実施形態のフォークリフト10は、操作者による操作によって走行動作及び荷役動作が行われるものである。
図2に示すように、フォークリフト10は、メインコントローラ20と、走行用モータM1と、走行用モータM1を制御する走行制御装置23と、車速センサ24と、アクセルセンサ25と、ディレクションセンサ26と、を備える。メインコントローラ20は、走行動作及び荷役動作に関する制御を行う。メインコントローラ20は、CPU21と、種々の制御を行うためのプログラムなどが記憶されたメモリ22と、を備える。
アクセルセンサ25は、アクセル開度を検出し、検出結果をメインコントローラ20に出力する。ディレクションセンサ26は、進行方向を指示するディレクションレバーの操作方向を検出する。ディレクションセンサ26は、中立位置を基準として、前進を指示する方向にディレクションレバーが操作されているか、後進を指示する方向にディレクションレバーが操作されているかを検出する。ディレクションセンサ26は、検出結果をメインコントローラ20に出力する。
メインコントローラ20のCPU21は、フォークリフト10の車速が目標速度となるように走行制御装置23に走行用モータM1の回転数の指令を与える。目標速度は、アクセル開度に応じて設定される。本実施形態の走行制御装置23は、モータドライバである。本実施形態の車速センサ24は、走行用モータM1の回転数を検出する回転数センサである。車速センサ24は、走行用モータM1の回転数を走行制御装置23に出力する。走行制御装置23は、メインコントローラ20からの指令に基づき、走行用モータM1の回転数が指令と一致するように走行用モータM1を制御する。詳細にいえば、走行制御装置23は、走行用モータM1に流れる電流を制御することで、フォークリフト10の車速が目標速度となるように制御を行う。メインコントローラ20は、走行制御装置23から車速センサ24の検出結果を取得可能である。
フォークリフト10には、監視装置SSが搭載されている。監視装置SSは、物体検出ユニット30と、近傍カメラ51と、警告装置61と、を備える。物体検出ユニット30は、ステレオカメラ31と、ステレオカメラ31によって撮像された画像から物体の検出を行う物体検出装置41と、を備える。物体検出ユニット30は、ステレオカメラ31と、物体検出装置41と、をユニット化したものである。ユニット化とは、例えば、ステレオカメラ31と、物体検出装置41とが同一の筐体に収容されることで1つの部材として取り扱われることを示す。
図1、図3及び図4に示すように、物体検出ユニット30及び近傍カメラ51は、ヘッドガード13の後方に配置されている。物体検出ユニット30及び近傍カメラ51は、互いに隣接して配置されている。物体検出ユニット30は、外面に露出して設けられた第1コネクタ34を備える。近傍カメラ51は、外面に露出して設けられた第2コネクタ52を備える。第1コネクタ34及び第2コネクタ52には、物体検出ユニット30から近傍カメラ51に電力を供給する供給部と、物体検出ユニット30と近傍カメラ51とのデータの送受信に用いられる信号伝達部と、が含まれる。なお、物体検出ユニット30には、フォークリフト10に搭載されたバッテリから電力が供給されている。第1コネクタ34と第2コネクタ52とが接続されることで、物体検出ユニット30と近傍カメラ51とが接続されている。
近傍カメラ51は、例えば、CCDイメージセンサや、CMOSイメージセンサである。近傍カメラ51は、単眼カメラである。近傍カメラ51の画角は、例えば、120°である。近傍カメラ51は、レンズが下方を向くように配置されている。近傍カメラ51は、ヘッドガード13から下方を撮像するように配置されているといえる。
図5及び図6に示すように、近傍カメラ51の撮像範囲A1は、下方を向いている。近傍カメラ51は、側方領域SA及び後方領域RAが撮像範囲A1に含まれるように配置されている。側方領域SAは、車体11の側方に位置しており、車体11に沿う領域である。後方領域RAは、車体11の後方に位置しており、車体11に沿う領域である。支柱14同士の間が開放されているため、近傍カメラ51は、支柱14同士の間から側方領域SA及び後方領域RAを撮像することができる。側方領域SA及び後方領域RAは、車体11に沿った領域であるため、フォークリフト10の周辺の領域といえる。本実施形態では、1つの近傍カメラ51で、車体11の車幅方向の両側の側方領域SA及び後方領域RAが撮像される。近傍カメラ51が撮像した画像である近傍画像は、物体検出装置41に出力される。近傍画像は、例えば、RGB信号で表される画像である。
図1に示すように、ステレオカメラ31は、フォークリフト10の上方からフォークリフト10の走行する路面を鳥瞰できるように配置されている。本実施形態のステレオカメラ31は、フォークリフト10の進行方向となり得る前後方向のうち後方を撮像するように配置されている。ステレオカメラ31は、近傍カメラ51の撮像範囲A1よりも車体11から離れた位置が撮像範囲A2に含まれるように配置されている。ステレオカメラ31は、近傍カメラ51よりも後方を撮像可能であるといえる。ステレオカメラ31の撮像範囲A2は、少なくとも一部が近傍カメラ51の撮像範囲A1よりも遠ければよく、撮像範囲A1と撮像範囲A2は一部が重なっていてもよい。
図2に示すように、ステレオカメラ31は、2つのカメラ32,33を備える。カメラ32,33としては、例えば、CCDイメージセンサや、CMOSイメージセンサが用いられる。各カメラ32,33は、互いの光軸が平行となるように配置されている。本実施形態において、2つのカメラ32,33は、水平方向に並んで配置されている。
2つのカメラ32,33のうち、一方を第1カメラ32、他方を第2カメラ33とする。第1カメラ32によって撮像された画像を第1画像、第2カメラ33によって撮像された画像を第2画像とすると、第1画像と第2画像では同一物体が横方向にずれて写ることになる。詳細にいえば、同一物体を撮像した場合、第1画像に写る物体と、第2画像に写る物体では、横方向の画素[px]にカメラ32,33間の距離に応じたずれが生じることになる。第1画像及び第2画像は、画素数が同じであり、例えば、640×480[px]=VGAの画像が用いられる。第1画像及び第2画像は、RGB信号で表される画像である。第1画像及び第2画像は、物体検出装置41に出力される。
物体検出装置41は、CPU42と、RAM及びROM等からなる記憶部43と、を備える。物体検出装置41は、各種処理のうち少なくとも一部の処理を実行する専用のハードウェア、例えば、特定用途向け集積回路:ASICを備えていてもよい。物体検出装置41は、コンピュータプログラムに従って動作する1つ以上のプロセッサ、ASIC等の1つ以上の専用のハードウェア回路、あるいは、それらの組み合わせを含む回路として構成し得る。プロセッサは、CPU、並びに、RAM及びROM等のメモリを含む。メモリは、処理をCPUに実行させるように構成されたプログラムコードまたは指令を格納している。メモリ、即ち、コンピュータ可読媒体は、汎用または専用のコンピュータでアクセスできるあらゆるものを含む。
記憶部43には、ステレオカメラ31によって撮像された画像から物体を検出するための種々のプログラムが記憶されている。また、記憶部43には、近傍カメラ51によって撮像された画像である近傍画像から動体物を検出するための種々のプログラムが記憶されている。即ち、本実施形態では、ステレオカメラ31によって撮像された画像を用いた物体検出処理と、近傍カメラ51によって撮像された近傍画像を用いた動体検出処理の両方が1つの物体検出装置41によって行われる。
物体検出ユニット30と、近傍カメラ51とは別体として設けられており、第1コネクタ34と第2コネクタ52との接続によって両者は接続されている。物体検出装置41は、近傍カメラ51が接続されていなければステレオカメラ31の画像から物体を検出し、近傍カメラ51が接続されていればステレオカメラ31の画像から物体を検出することに加えて、近傍カメラ51の近傍画像から動体物を検出する。即ち、近傍カメラ51を設けることによる動体物の検出は、監視装置SSの拡張機能として設けられている。
物体検出装置41は、CAN:Controller Area NetworkやLIN:Local Interconnect Networkなどの車両用の通信プロトコルに従った通信を行うことで、メインコントローラ20とデータの送受信を行うことが可能である。
警告装置61は、音、光等によって警告を行う装置である。警告装置61は、フォークリフト10の操作者及びフォークリフト10の周辺にいる人の少なくともいずれかに警告を行う。
以下、物体検出装置41により行われる監視処理について説明する。監視処理は、フォークリフト10が起動状態のときに所定の制御周期で繰り返し行われる。起動状態とは、フォークリフト10に走行動作及び荷役動作を行わせることが可能な状態である。
図7に示すように、ステップS1において、物体検出装置41は、フォークリフト10が停止状態か否かを判定する。フォークリフト10が停止状態か否かの判定は、種々の態様で行うことができる。例えば、フォークリフト10が停止状態か否かは、車速センサ24の検出結果をメインコントローラ20から取得することで判定することができる。また、アクセルセンサ25の検出結果をメインコントローラ20から取得することでも判定を行うことができる。ステップS1の処理を行うことで、物体検出装置41は、走行判定部として機能している。
ステップS1の判定結果が肯定の場合、物体検出装置41は、ステップS2の処理を行う。ステップS2以降の処理は、フォークリフト10の周辺を監視する処理である。フォークリフト10の停止中には、フォークリフト10の周辺が監視される。ステップS2において、物体検出装置41は、走行操作の有無を判定する。本実施形態における走行操作とは、ディレクションレバーによりフォークリフト10の後進が指示されることである。即ち、物体検出装置41は、ディレクションセンサ26の検出結果からステップS2の判定を行う。ステップS2の判定結果が否定の場合、物体検出装置41は、ステップS3の処理を行う。
ステップS3において、物体検出装置41は、近傍画像から動体物を検出する動体検出処理を行う。動体検出処理は、近傍カメラ51から複数のフレームに亘って近傍画像を取得し、画素の変化を検出することで行われる。撮像範囲A1に動体物が存在している場合、フレーム間で動体物の位置が異なる。従って、撮像範囲A1に動体物が存在している場合、動体物の位置の変化によりフレーム間で画素に変化が生じる。物体検出装置41は、画素の変化から動体物が近傍画像に存在するか否かを判定することができる。画素の変化とは、例えば、画素の輝度値の変化である。動体検出処理は、例えば、オプティカルフローやフレーム間差分法を用いて行うことができる。なお、動体物とは、人、車両、ロボットなど時間経過に伴い移動する物体である。
図5に示すように、側方領域SA及び後方領域RAが撮像範囲A1に含まれるように近傍カメラ51を配置すると、撮像範囲A1には運転席Cが含まれることになる。運転席Cに、フォークリフト10の操作者が存在する場合、フォークリフト10の周辺に動体物が存在していないにも関わらず、動体物が存在していると判定されることになる。従って、物体検出装置41は、動体検出処理を行うに際して、近傍画像のうち運転席Cが写る領域については、動体物の有無に関わらず、動体物は存在していないと扱う。物体検出装置41は、近傍画像のうち運転席Cが写る領域を予め把握し、当該領域については動体検出処理を行わなくてもよい。また、物体検出装置41は、近傍画像の全体の領域について動体検出処理を行った後に、運転席Cが写る領域の動体物は動体物とみなさないようにしてもよい。このように、物体検出装置41は、種々の態様で運転席Cが写る領域の動体物を無効化することができる。
図6に示すように、運転席Cの写る領域については動体物が存在していないと扱うことで、近傍カメラ51の撮像範囲A1は、実質的には図6に示す破線で囲まれる範囲になるといえる。近傍カメラ51の撮像範囲A1からは実質的に運転席Cが除外されるといえる。言い換えれば、撮像範囲A1に含まれる領域は、側方領域SA及び後方領域RAに制限されることになる。ステップS3の処理を行うことで、物体検出装置41は動体検出部として機能している。
図7に示すように、ステップS4において、物体検出装置41は、近傍カメラ51の撮像範囲A1に動体物が存在するか否かを判定する。即ち、ステップS3の動体検出処理により動体物が検出されたか否かを判定する。近傍画像は、撮像範囲A1を撮像した画像なので、近傍画像に動体物が存在する場合、撮像範囲A1に動体物が存在しているといえる。ステップS4の判定結果が肯定の場合、物体検出装置41は、ステップS5において警告フラグをオンにする。詳細にいえば、物体検出装置41は、警告フラグがオフの場合には警告フラグをオンにし、警告フラグが既にオンされている場合にはオンを維持する。一方で、ステップS4の判定結果が否定の場合、物体検出装置41は、ステップS6において警告フラグをオフにする。詳細にいえば、物体検出装置41は、警告フラグがオンの場合には警告フラグをオフにし、警告フラグが既にオフされている場合にはオフを維持する。ステップS5又はステップS6の処理を終えると、物体検出装置41は監視処理を終了する。
ステップS2の判定結果が肯定の場合、物体検出装置41はステップS7の処理を行う。ステップS7において、物体検出装置41は、警告フラグがオンか否かを判定する。即ち、ステップS7の処理を行う以前の制御周期で、警告フラグがオンにされているか否かの判定を行う。ステップS7の判定結果が否定の場合、物体検出装置41は監視処理を終了する。一方で、ステップS7の判定結果が肯定の場合、物体検出装置41はステップS8の処理を行う。
物体検出装置41は、ステップS8において、警告処理を行う。警告処理とは、警告装置61によってフォークリフト10の操作者及び撮像範囲A1内の動体物のうちの少なくともいずれかに対して警告を行う処理である。撮像範囲A1内に動体物が存在するにも関わらずディレクションレバーが操作された場合、操作者はフォークリフト10の周辺に動体物が存在していることを認識せずにフォークリフト10を後進させようとしているおそれがある。フォークリフト10の操作者に警告を行うことで、フォークリフト10の周辺に動体物が存在していることを操作者に認識させる。また、動体物は人である可能性もあり、人はフォークリフト10が後進しようとしていることを認識していないおそれがある。動体物に警告を行うことで、フォークリフト10が後進しようとしていることをフォークリフト10の周辺の人に認識させる。
本実施形態の物体検出装置41は、警告処理とともに発進抑制処理を行う。発進抑制処理とは、警告フラグがオンの状態で、操作者にフォークリフト10を発進させる意図があると判定された場合に、フォークリフト10の発進を抑制する処理である。操作者にフォークリフト10を発進させる意図があるか否かは、アクセル開度から判定することができる。
図8に示すように、アクセル開度には、不感帯が設定されている。不感帯とは、アクセル開度を大きくしているにも関わらず、走行用モータM1の出力を生じさせない領域である。不感帯の範囲内でアクセル開度に発進意図閾値が設定されている。物体検出装置41は、メインコントローラ20を介してアクセルセンサ25の検出結果を取得する。物体検出装置41は、アクセル開度が発進意図閾値を超えた場合、操作者にフォークリフト10を発進させる意図があると判定する。物体検出装置41は、アクセル開度が発進意図閾値を越えた場合には、発進の抑制を行う。発進の抑制は、フォークリフト10の発進を禁止したり、フォークリフト10に速度制限を課すことで行われる。これにより、フォークリフト10の周辺に動体物が存在しているにも関わらず、フォークリフト10が発進することが抑制される。
図7に示すように、物体検出装置41は、警告処理及び発進抑制処理を終えると、ステップS9の処理を行う。警告処理及び発進抑制処理の終了条件は、任意に設定することができる。例えば、警告処理及び発進抑制処理の終了条件は、撮像範囲A1に動体物が存在しなくなることでもよいし、警告処理及び発進抑制処理を開始してからの所定時間の経過であってもよい。ステップS9において、物体検出装置41は、警報フラグをオフにして監視処理を終了する。
ステップS1の判定結果が否定の場合、物体検出装置41は、ステップS10の処理を行う。ステップS10において、物体検出装置41は、物体検出処理を行う。物体検出処理とは、ステレオカメラ31によって撮像された画像から物体を検出する処理である。ステレオカメラ31の撮像範囲A2は、近傍カメラ51の撮像範囲A1よりもフォークリフト10から離れているため、物体検出処理では、フォークリフト10の進行方向に位置する物体であり、かつ、動体検出処理により検出できる動体物よりも遠方の物体を検出できる。これにより、フォークリフト10の走行中には、フォークリフト10の進行方向が監視される。
ステレオカメラ31によって撮像される画像を用いることで、物体検出装置41は、種々の手法により物体の大きさや、フォークリフト10から物体までの距離を導出することができる。以下、物体検出処理の一例について説明するが、物体検出装置41は、他の手法により物体を検出してもよい。
物体検出装置41は、視差画像を取得する。視差画像は、画素に対して視差[px]を対応付けた画像である。視差は、第1画像と、第2画像とを比較し、各画像に写る同一特徴点について第1画像と第2画像の画素数の差を算出することで得られる。なお、特徴点とは、物体のエッジなど、境目として認識可能な部分である。特徴点は、輝度情報などから検出することができる。
物体検出装置41は、ステレオカメラ31によって撮像されている映像から同一フレームの第1画像及び第2画像を取得する。物体検出装置41は、各画像を一時的に格納するRAMを用いて、RGBからYCrCbへの変換を行う。なお、物体検出装置41は、歪み補正、エッジ強調処理などを行ってもよい。物体検出装置41は、第1画像の各画素と第2画像の各画素との類似度を比較して視差を算出するステレオ処理を行う。なお、ステレオ処理としては、画素毎に視差を算出する手法を用いてもよいし、各画像を複数の画素を含むブロックに分割してブロック毎の視差を算出するブロックマッチング法を用いてもよい。物体検出装置41は、第1画像を基準画像、第2画像を比較画像として視差画像を取得する。物体検出装置41は、第1画像の画素毎に、最も類似する第2画像の画素を抽出し、第1画像の画素と、当該画素に最も類似する画素の横方向の画素数の差を視差として算出する。これにより、基準画像である第1画像の各画素に視差が対応付けられた視差画像を取得することができる。視差画像とは、必ずしも表示を要するものではなく、視差画像における各画素に視差が対応付けられたデータのことを示す。なお、物体検出装置41は、視差画像から路面の視差を除去する処理を行ってもよい。
次に、物体検出装置41は、ワールド座標系における特徴点の座標を導出する。まず、物体検出装置41は、カメラ座標系における特徴点の座標を導出する。カメラ座標系は、光軸をZ軸とし、光軸に直交する2つの軸のそれぞれをX軸、Y軸とする3軸直交座標系である。カメラ座標系における特徴点の座標は、カメラ座標系におけるZ座標Zc、X座標Xc及びY座標Ycで表わすことができる。Z座標Zc、X座標Xc及びY座標Ycは、それぞれ、以下の(1)式~(3)式を用いて導出することができる。
(1)式~(3)式におけるBは基線長[mm]、fは焦点距離[mm]、dは視差[px]である。xpは視差画像中の任意のX座標であり、x’は視差画像の中心座標のX座標である。ypは視差画像中の任意のY座標であり、y’は視差画像の中心座標のY座標である。
xpを視差画像中の特徴点のX座標とし、ypを視差画像中の特徴点のY座標とし、dを特徴点の座標に対応付けられた視差とすることで、カメラ座標系における特徴点の座標が導出される。
ここで、フォークリフト10の進行方向に延びる軸をY軸、鉛直方向に延びる軸をZ軸、Y軸及びZ軸に直交する軸をX軸とする3軸直交座標系での座標を実空間上での三次元座標系であるワールド座標系とする。ワールド座標系での特徴点の座標は、ワールド座標系におけるX座標Xw、Y座標Yw及びZ座標Zwで表わすことができる。
物体検出装置41は、以下の(4)式を用いてカメラ座標をワールド座標に変換するワールド座標変換を行う。
ここで、(4)式におけるHはワールド座標系におけるステレオカメラ31の設置高さ[mm]であり、θはカメラ32,33の光軸と、水平面とがなす角+90°の角度である。
ワールド座標変換で得られたワールド座標のうちX座標Xwは、フォークリフト10の左右方向に対するフォークリフト10から特徴点までの距離を示す。Y座標Ywは、フォークリフト10の進行方向に対するフォークリフト10から特徴点までの距離を示す。Z座標Zwは、路面から特徴点までの高さを示す。
次に、物体検出装置41は、特徴点のワールド座標から、所定範囲内に位置する特徴点を1つの点群とみなすクラスタ化を行う。物体検出装置41は、クラスタ化された点群を1つの物体とみなす。物体検出装置41は、点群を構成する特徴点の座標から、物体の大きさ及び物体の位置を把握することができる。
また、物体検出装置41は、検出した物体が人か人以外の障害物かを判別することもできる。物体検出装置41は、物体のワールド座標系での座標から、物体が写る第1画像上での座標を導出する。そして、第1画像上での物体の座標に対して、人検出処理を行うことで、物体が人か否かの判定を行うことができる。人検出処理は、第1画像から特徴量を抽出する特徴量抽出法により行われ、例えば、HOG:Histograms of Oriented Gradientsや、SIFT:Scale Invariant Feature Transformを用いて行われる。ステップS10の処理を行うことで、物体検出装置41は物体検出部として機能している。
次に、物体検出装置41は、ステップS11の処理を行う。ステップS11において、物体検出装置41は、ステレオカメラ31によって撮像された画像に物体が存在するか否かを判定する。即ち、ステップS10における物体検出処理によって、物体が検出されたか否かを判定する。ステップS11の判定結果が否定の場合、物体検出装置41は監視処理を終了する。一方で、ステップS11の判定結果が肯定の場合、物体検出装置41はステップS12の処理を行う。
ステップS12において、物体検出装置41は、物体が警告領域に存在するか否かを判定する。警告領域とは、フォークリフト10から後方に閾値以上離れた領域であり、警告を行うか否かを判定するために設定された領域である。閾値としては、フォークリフト10が物体の回避を行うのに必要となる距離、フォークリフト10の制動距離、人にフォークリフト10を回避させるのに必要となる距離などに基づき設定される。即ち、フォークリフト10と物体とが過剰に近付く前に警告装置61による警告を行えるように警告領域は設定されている。ステップS12の判定結果が否定の場合、物体検出装置41は監視処理を終了する。一方で、ステップS12の判定結果が肯定の場合、物体検出装置41はステップS13の処理を行う、
ステップS13において、物体検出装置41は、警告処理を行う。ステップS13の警告処理としては、ステップS8の警告処理と同一であってもよいし異ならせてもよい。なお、ステップS8では、警告処理に合わせて発進抑制処理を行ったが、ステップS13では発進抑制処理は行われない。
上記したように、物体検出装置41は、フォークリフト10の停止中には動体検出処理を行い、フォークリフト10の走行中には物体検出処理を行うように切り替えられる。両者の切り替えは、ステップS1の判定結果によって行われるため、ステップS1の処理を行うことで、物体検出装置41は走行判定部に加えて、切替部としても機能しているといえる。
本実施形態の作用について説明する。
物体検出装置41は、近傍カメラ51の近傍画像から動体物を検出している。近傍カメラ51を下方に向けて配置することで、側方領域SA及び後方領域RAを撮像範囲A1に含めることができる。このため、フォークリフト10の周辺に動体物が存在するか否かを監視することができる。特に、フォークリフト10の停止中には、フォークリフト10の周辺に動体物が存在するか否かを監視することが好ましい。走行中のフォークリフト10に対して車体11の側方から近付く動体物があることは稀である。また、車体11の側方からフォークリフト10に近付く動体物が存在する場合であっても、フォークリフト10が走行していれば、動体物とフォークリフト10は離れていく。ステレオカメラ31はフォークリフト10の後方を向いて配置されているため、フォークリフト10の走行中には近傍カメラ51の撮像範囲A1に動体物が入る前に、物体検出処理による物体の検出により動体物を検出することができる。このように、フォークリフト10の走行中には、フォークリフト10の側方領域SA及び後方領域RAを監視しないでもフォークリフト10の進行に際して動体物が進行を妨げる可能性は低い。一方で、フォークリフト10の停止中には、側方領域SAや後方領域RAに動体物が近付く場合がある。側方領域SA及び後方領域RAはステレオカメラ31の死角となっている場合がある。従って、仮にフォークリフト10の停止中に、ステレオカメラ31による画像を用いた物体検出処理を行っても側方領域SA及び後方領域RAに存在する動体物を検出することはできない。このため、フォークリフト10の停止中には、近傍カメラ51の近傍画像を用いてフォークリフト10の周辺を監視することが好ましい。フォークリフト10の停止中に動体検出処理を行うことで、図1に示すように、撮像範囲A1内に人M11が存在する場合、人M11を検出することができる。
前述したように、フォークリフト10の走行中にはフォークリフト10の周辺に存在する動体物を検出する必要性は低い。一方で、フォークリフト10の走行中には、進行の妨げとなる障害物や人を検出するために、フォークリフト10の進行方向に位置する物体を検出する必要がある。フォークリフト10の走行中には、ステレオカメラ31の画像を用いて物体検出処理を行うことで、進行方向に位置する物体を検出することができる。フォークリフト10の走行中に物体検出処理を行うことで、図1に示すように、撮像範囲A1よりも遠くに人M12が存在する場合、人M12を検出することができる。
なお、フォークリフト10の周辺の物体を検出するために超音波センサやレーザー距離計などを用いることも考えられる。この場合には、車体11の周辺に物体が存在しているか否かは判定できるが、物体が動体物か否かの判定を行うことはできない。物体が動体物か否かにより異なる処理を行う場合には、物体の検出に加えて、物体が動体物か否かを判定する必要がある。また、全天球カメラを用いることで、車体11の周辺を監視することも考えられる。全天球カメラは、遠方での解像度が低く、人の検出が困難である。人を検出できるように解像度を上げると、処理負荷が増加する。
これに対して、ヘッドガード13に近傍カメラ51を配置し、下方を見下ろすようにすることで、近傍カメラ51として全天球カメラを用いなくても、側方領域SA及び後方領域RAの監視が可能になる。
本実施形態の効果について説明する。
(1)近傍カメラ51はフォークリフト10の周辺を撮像するように配置されている。物体検出装置41は、近傍カメラ51によって撮像された近傍画像から動体物を検出することができる。フォークリフト10の周辺に、人や人以外の動体物が存在するか否かを判定することで、監視装置SSはフォークリフト10の周辺を監視することができる。
(2)物体検出装置41は、フォークリフト10の走行中には物体検出処理による物体の検出を行っている。これにより、フォークリフト10の走行の妨げとなる物体を検出することができる。物体検出装置41は、フォークリフト10の停止中には動体検出処理による動体物の検出を行っている。物体検出装置41は、フォークリフト10の停止中に人等の動体物がフォークリフト10に近付いた場合に、動体物を検出することができる。物体検出装置41は、物体検出処理による物体の検出と、動体検出処理による動体物の検出とを状況に合わせて切り替えることができる。
(3)物体検出ユニット30と近傍カメラ51とを別体とし、物体検出装置41によって近傍カメラ51の近傍画像から動体物の検出を行えるようにしている。近傍カメラ51による動体検出処理を監視装置SSの拡張機能とすることができる。フォークリフト10は、様々な環境で用いられることがある関係上、種々のオプションを設定することが可能である。近傍カメラ51による動体検出処理を監視装置SSの拡張機能とすることで、顧客の要望に応じてフォークリフト10の周辺を監視するか否かを設定することができる。
(4)第1コネクタ34と第2コネクタ52との接続によって、物体検出ユニット30と近傍カメラ51とを接続している。電源線や信号線により接続を行う場合に比べて、容易に接続を行うことができる。
(5)1つの近傍カメラ51で、側方領域SA及び後方領域RAの両方を撮像できるようにしている。このため、近傍カメラ51を複数設ける場合に比べて、物体検出装置41の処理負荷を軽減することができる。また、近傍カメラ51を複数設けることによる製造コストの増加を抑制することができる。
実施形態は、以下のように変更して実施することができる。実施形態及び以下の変形例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
○フォークリフト10の進行方向に位置する物体を検出する必要がない場合、監視装置SSはステレオカメラ31を備えていなくてもよい。この場合、物体検出装置41は、フォークリフト10の周辺の監視のみを行うことになる。
○動体検出処理として、近傍画像から人を検出する人検出処理を行ってもよい。人検出処理は、近傍画像から特徴量を抽出する特徴量抽出法により行われ、例えば、HOG:Histograms of Oriented Gradientsや、SIFT:Scale Invariant Feature Transformを用いて行われる。また、人検出処理は、教師有り学習モデルによる機械学習を行った判定部を用いて行ってもよい。判定部としては、例えば、サポートベクタマシン、ニューラルネットワーク、ナイーブベイズ、ディープラーニング、決定木等の教師有り学習器を採用することが可能である。機械学習に用いる教師データとしては、画像から抽出された人の形状要素や、外観要素などの画像固有成分が用いられる。形状要素として、例えば、人の大きさや輪郭などが挙げられる。外観要素としては、例えば、光源情報、テクスチャ情報、カメラ情報などが挙げられる。光源情報には、反射率や、陰影等に関する情報が含まれる。テクスチャ情報には、カラー情報等が含まれる。カメラ情報には、画質、解像度、画角等に関する情報が含まれる。動体検出処理として人検出処理を行う場合、物体検出装置41は、動体物として人を検出することができる。また、人検出処理を行う場合、物体検出装置41はフォークリフト10の走行中に、近傍カメラ51の近傍画像から人検出処理を行ってもよい。
○物体検出装置41は、発進抑制処理を行う際に、メインコントローラ20から情報を取得することなく、操作者にフォークリフト10を発進させる意図があるか否かの判定を行ってもよい。物体検出装置41は、動体検出処理と同様の手法により操作者にフォークリフト10を発進させる意図があるか否かの判定を行うことができる。フォークリフト10が停止している場合、フレーム間で画素の変化が生じるのは、動体物が存在する領域のみである。これに対して、フォークリフト10が発進した場合、近傍画像の全体についてフレーム間で画素の変化が生じる。従って、フレーム間で近傍画像の全体について画素の変化が生じた場合には、フォークリフト10が発進したと判定することができる。物体検出装置41は、フォークリフト10が発進したと判定した場合には、フォークリフト10の走行の禁止や、フォークリフト10の速度制限を行う。物体検出装置41は、フォークリフト10の発進を検出してから発進抑制処理を行うため、フォークリフト10の走行の禁止やフォークリフト10の速度制限が課されるまでは、フォークリフト10は進行することになる。しかしながら、フォークリフト10は停止中の状態から発進するため、速度は低く、発進の抑制までに走行する距離は僅かと考えられる。
○近傍カメラ51の近傍画像から動体検出処理を行う動体検出部を物体検出装置41とは別に設けてもよい。即ち、ステレオカメラ31の画像から物体検出処理を行う物体検出装置41と、近傍カメラ51の近傍画像から動体検出処理を行う動体検出部とを別々にしてもよい。この場合、動体検出部は、近傍カメラ51とユニット化されていてもよい。
○図9に示すように、監視装置70は、物体検出ユニット30と近傍カメラ51とをユニット化したものでもよい。
○物体検出ユニット30と近傍カメラ51とは、電源線と信号線とを含むワイヤハーネスによって接続されていてもよい。
○物体検出装置41は、ステップS8において、警告処理及び発進抑制処理のいずれかを行ってもよい。
○フォークリフト10のサイズに応じて、近傍カメラ51の配置位置を変更してもよい。例えば、大型のフォークリフトの場合、車体11の後方に備えられるカウンタウェイトが大きく、ヘッドガード13に近傍カメラ51を設けると死角が生じるおそれがある。この場合、近傍カメラ51をカウンタウェイトの後端に配置してもよい。
○警告装置61は、フォークリフト10が備えていてもよい。
○近傍カメラ51は、複数設けられていてもよい。この場合、1つの近傍カメラ51の撮像範囲A1に側方領域SA及び後方領域RAの両方が含まれていなくてもよい。複数の近傍カメラ51の少なくともいずれかの撮像範囲A1に側方領域SAが含まれ、複数の近傍カメラ51の少なくともいずれかの撮像範囲A1に後方領域RAが含まれていればよい。
○ステレオカメラ31は、フォークリフト10の進行方向となり得る方向を向いて配置されていればよく、フォークリフト10の前方を向いて配置されていてもよい。物体検出装置41は、フォークリフト10が前進するときに物体検出処理を行う。また、物体検出装置41は、フォークリフト10の前方及び後方の両側の物体を検出するものであってもよい。この場合、ステレオカメラ31は、フォークリフト10の前方を撮像するものと、フォークリフト10の後方を撮像するものの両方が設けられる。物体検出装置41は、フォークリフト10の進行方向に応じた方向の物体を検出する。
○フォークリフト10としては、自動で走行動作及び荷役動作が行われるものであってもよい。この場合、フォークリフト10が前進しているか後進しているかは、メインコントローラ20から取得することができる。また、フォークリフト10は、自動での操作と手動での操作とを切り替えられるものでもよい。
○ワールド座標系は、直交座標系に限られず、極座標系としてもよい。
○物体検出処理によって検出された物体が人か否かを判定する場合、ステレオカメラ31によって撮像された画像のうち第2画像から人を検出するようにしてもよい。物体検出装置41は、第2画像上での物体の座標を導出し、当該座標に対して人検出処理を行うが、第2画像は比較画像であるため、物体のワールド座標から画像上での物体の座標を導出すると、基線長に応じたずれが生じる。このため、物体検出装置41は、基線長に応じて第2画像上での物体の座標を補正し、補正した座標に対して人検出処理を行う。
○動体検出部、物体検出部、走行判定部及び切替部は、それぞれ、個別の制御装置によって構成されていてもよい。
○カメラ座標からワールド座標への変換はテーブルデータによって行われてもよい。テーブルデータは、Y座標YcとZ座標Zcの組み合わせにY座標Ywを対応させたテーブルデータと、Y座標YcとZ座標Zcとの組み合わせにZ座標Zwを対応させたテーブルデータである。これらのテーブルデータを物体検出装置41のROMなどに記憶しておくことで、カメラ座標系におけるY座標YcとZ座標Zcから、ワールド座標系におけるY座標Yw及びZ座標Zwを求めることができる。
○第1カメラ32と第2カメラ33は、鉛直方向に並んで配置されていてもよい。
○第1画像の画素数と第2画像の画素数とは異なっていてもよい。例えば、比較画像である第2画像の画素数を視差画像の画素数と同一とし、基準画像である第1画像の画素数を第2画像の画素数よりも多くしてもよい。
○ステレオカメラ31は、3つ以上のカメラを備えていてもよい。
○フォークリフト10は、エンジンの駆動によって走行するものでもよい。この場合、走行制御装置は、エンジンへの燃料噴射量などを制御する装置となる。
○物体検出装置41は、建設機械、自動搬送車、トラックなどフォークリフト10以外の産業車両や乗用車などの車両に搭載されていてもよい。