(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-11
(45)【発行日】2022-04-19
(54)【発明の名称】位置検出装置
(51)【国際特許分類】
G01B 11/00 20060101AFI20220412BHJP
B66F 9/24 20060101ALN20220412BHJP
【FI】
G01B11/00 H
B66F9/24 Z
(21)【出願番号】P 2018188291
(22)【出願日】2018-10-03
【審査請求日】2021-01-20
(73)【特許権者】
【識別番号】000003218
【氏名又は名称】株式会社豊田自動織機
(74)【代理人】
【識別番号】100105957
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】石▲崎▼ 将崇
【審査官】山▲崎▼ 和子
(56)【参考文献】
【文献】特開2014-089548(JP,A)
【文献】特開2018-091652(JP,A)
【文献】特開2014-225220(JP,A)
【文献】特開平09-272700(JP,A)
【文献】米国特許出願公開第2013/0057658(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G01B 11/00-11/30
B66F 9/00-11/04
(57)【特許請求の範囲】
【請求項1】
移動体に搭載され、前記移動体の存在する路面よりも低い位置である低位置を検出する位置検出装置であって、
ステレオカメラと、
前記ステレオカメラで撮像された画像から各画素に視差が対応付けられた視差画像を取得する視差画像取得部と、
前記視差画像の縦方向の画素と視差との二次元配列に、前記視差画像の各画素に対応付けられた視差を投票する投票部と、
前記投票部による投票数が閾値以上である視差がプロットされており、前記視差をX軸、前記縦方向の画素をY軸とする座標系から直線を抽出する直線抽出部と、
前記直線抽出部によって、第1直線と、前記第1直線の終点座標のX座標よりも始点座標のX座標が大きく前記第1直線との傾きの差が許容範囲内の第2直線とが検出された場合、前記始点座標のY座標に対応する実空間上の位置よりも遠い位置に低位置が存在していると判断する判断部と、を備える位置検出装置。
【請求項2】
前記判断部は、前記第1直線の切片と前記第2直線の切片とが異なり、かつ、前記第1直線の終点座標のX座標と前記第2直線の始点座標のX座標との差が所定値以上の場合、前記低位置を段差により生じた平面であると判断する請求項1に記載の位置検出装置。
【請求項3】
前記判断部は、前記第1直線の切片と前記第2直線の切片との差が許容範囲内であり、
前記第1直線の終点座標から延び、かつ、Y座標が大きくなるほ
どX座標が小さくなる第3直線が存在し、前記第3直線の終点座標のX座標と前記第2直線の始点座標のX座標との差が所定値以上の場合、前記低位置を前記路面から凹む溝であると判断する請求項1に記載の位置検出装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、位置検出装置に関する。
【背景技術】
【0002】
高低差のある場所を移動体が走行している場合、移動体が走行している路面よりも低い位置である低位置に移動体が移動すると、移動体が走行不能となる場合がある。
特許文献1には、フォークリフトがプラットホーム上の路面からプラットホームの下の平面に落下することを抑制する装置が記載されている。特許文献1では、プラットホーム上の路面にガイドワイヤを配置し、フォークリフトにはガイドワイヤを検出するためのセンサが配置されている。センサによってガイドワイヤが検出されると、フォークリフトは強制的に停止させられる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、特許文献1では、低位置を検出するために事前に路面にガイドワイヤを設けるなどのインフラストラクチャーの整備が必要となる。
本発明の目的は、インフラストラクチャーの整備を行うことなく低位置を検出できる位置検出装置を提供することにある。
【課題を解決するための手段】
【0005】
上記課題を解決する位置検出装置は、移動体に搭載され、前記移動体の存在する路面よりも低い位置である低位置を検出する位置検出装置であって、ステレオカメラと、前記ステレオカメラで撮像された画像から各画素に視差が対応付けられた視差画像を取得する視差画像取得部と、前記視差画像の縦方向の画素と視差との二次元配列に、前記視差画像の各画素に対応付けられた視差を投票する投票部と、前記投票部による投票数が閾値以上である視差がプロットされており、前記視差をX軸、前記縦方向の画素をY軸とする座標系から直線を抽出する直線抽出部と、前記直線抽出部によって、第1直線と、前記第1直線の終点座標のX座標よりも始点座標のX座標が大きく前記第1直線との傾きの差が許容範囲内の第2直線とが検出された場合、前記始点座標のY座標に対応する実空間上の位置よりも遠い位置に低位置が存在していると判断する判断部と、を備える。
【0006】
ステレオカメラで撮像された画像から視差を算出すると、ステレオカメラに近いほど大きな視差が算出されることになる。縦方向の画素は、ステレオカメラからの距離を表しているため、路面が平面であれば、視差は縦方向の画素に合わせて徐々に変化し、直線抽出部は単数の直線を抽出する。これに対して、低位置が存在する場合、路面よりも低くなる分だけステレオカメラから低位置までの距離が遠くなることになる。これにより、路面に低位置が存在する場合には、路面から低位置に切り替わる画素を境にして、路面が平坦な場合に比べて視差が大きく変化することになる。視差が大きく変化することで、直線抽出部は、第1直線と第2直線とを抽出することになる。従って、これを利用することで、インフラストラクチャーの整備を行うことなく低位置が存在していることを検出することができる。
【0007】
上記位置検出装置について、前記判断部は、前記第1直線の切片と前記第2直線の切片とが異なり、かつ、前記第1直線の終点座標のX座標と前記第2直線の始点座標のX座標との差が所定値以上の場合、前記低位置を段差により生じた平面であると判断してもよい。これによれば、路面よりも低い平面を検出することができる。
【0008】
上記位置検出装置について、前記判断部は、第1直線の切片と前記2直線の切片との差が許容範囲内であり、前記第1直線の終点座標から延び、かつ、Y座標が大きくなるほどX座標が小さくなる第3直線が存在し、前記第3直線の終点座標のX座標と前記第2直線の始点座標のX座標との差が所定値以上の場合、前記低位置を前記路面から凹む溝であると判断する。これによれば、溝を検出することができる。
【発明の効果】
【0009】
本発明によれば、インフラストラクチャーの整備を行うことなく低位置を検出することができる。
【図面の簡単な説明】
【0010】
【
図1】位置検出装置が搭載されるフォークリフトの側面図。
【
図2】フォークリフト、及び、位置検出装置の概略構成図。
【
図3】フォークリフトの存在する路面と、路面より低い平面とを示す図。
【
図4】第1実施形態の低位置探索処理を示すフローチャート。
【
図9】フォークリフトから段差までの距離と速度規制率との関係を示す図。
【
図10】フォークリフトの存在する路面と、溝とを示す図。
【
図11】第2実施形態の低位置探索処理を示すフローチャート。
【発明を実施するための形態】
【0011】
(第1実施形態)
以下、位置検出装置の第1実施形態について説明する。
図1に示すように、フォークリフト10は、車体11と、車体11に設けられた荷役装置12と、を備える。なお、フォークリフト10は、自動で走行動作及び荷役動作が行われるものであってもよいし、搭乗者による操作によって走行動作及び荷役動作が行われるものであってもよい。
【0012】
図2に示すように、フォークリフト10は、メインコントローラ20と、走行用モータM1と、走行用モータM1を制御する走行制御装置23と、車速センサ24と、を備える。メインコントローラ20は、走行動作及び荷役動作に関する制御を行う。メインコントローラ20は、CPU21と、種々の制御を行うためのプログラムなどが記憶されたメモリ22と、を備える。
【0013】
メインコントローラ20のCPU21は、フォークリフト10の車速が目標速度となるように走行制御装置23に走行用モータM1の回転数の指令を与える。本実施形態の走行制御装置23は、モータドライバである。本実施形態の車速センサ24は、走行用モータM1の回転数を検出する回転数センサである。車速センサ24は、走行用モータM1の回転数を走行制御装置23に出力する。走行制御装置23は、メインコントローラ20からの指令に基づき、走行用モータM1の回転数が指令と一致するように走行用モータM1を制御する。
【0014】
移動体としてのフォークリフト10には、フォークリフト10の存在している路面よりも低い位置である低位置を検出する位置検出装置30が搭載されている。位置検出装置30は、ステレオカメラ31と、ステレオカメラ31によって撮像された画像の画像処理を行う画像処理部41と、を備える。ステレオカメラ31は、例えば、車体11の上部などフォークリフト10の上方からフォークリフト10の走行する路面を鳥瞰できるように配置されている。なお、車体11とは、座席や走行に関する部材を備える基台や、座席の上部に設けられるヘッドガードを含む。本実施形態のステレオカメラ31は、フォークリフト10の後方を撮像する。従って、位置検出装置30は、フォークリフト10の後方に存在する低位置を検出する。
【0015】
なお、フォークリフト10の前方を撮像するステレオカメラを用いてフォークリフト10の前方に存在する低位置を検出するようにしてもよい。また、フォークリフト10の前方及び後方を撮像する個別のステレオカメラを用いてフォークリフト10の前方及び後方の両側の低位置を検出するようにしてもよい。即ち、ステレオカメラ31の配置を変更することで、任意の方向に存在する低位置を検出することが可能である。フォークリフト10の前方を撮像するステレオカメラを設ける場合、例えば、荷役装置12の上部や車体11の上部などにステレオカメラは設けられる。
【0016】
ステレオカメラ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形式の画像である。
【0017】
画像処理部41は、CPU42と、RAM及びROM等からなる記憶部43と、を備える。記憶部43には、ステレオカメラ31によって撮像された画像から低位置を検出するための種々のプログラムが記憶されている。画像処理部41は、各種処理のうち少なくとも一部の処理を実行する専用のハードウェア、例えば、特定用途向け集積回路:ASICを備えていてもよい。画像処理部41は、コンピュータプログラムに従って動作する1つ以上のプロセッサ、ASIC等の1つ以上の専用のハードウェア回路、あるいは、それらの組み合わせを含む回路として構成し得る。プロセッサは、CPU、並びに、RAM及びROM等のメモリを含む。メモリは、処理をCPUに実行させるように構成されたプログラムコードまたは指令を格納している。メモリ、即ち、コンピュータ可読媒体は、汎用または専用のコンピュータでアクセスできるあらゆるものを含む。
【0018】
図3に示すように、本実施形態の位置検出装置30は、フォークリフト10の存在する路面R1よりも低い平面である路面R2を検出する。なお、路面R2に限られず、路面R1よりも低い平面であれば、低位置として検出される。路面R2は、段差STにより生じたものである。路面R1は、例えば、トラックなどへ荷を積む場合やトラックから荷を降ろす際に、トラックの荷台の高さに応じて設けられたプラットホーム上の路面である。路面R2は、トラックが停車する路面である。段差STとは、路面R1と路面R2との境に位置する部分であり、路面R1と路面R2に高低差を生じさせる壁部である。以下、フォークリフト10の存在する路面R1を第1路面R1、第1路面R1よりも低い路面R2を第2路面R2と称して説明を行う。
【0019】
画像処理部41により行われる低位置探索処理について第1実施形態の作用とともに説明する。低位置探索処理は、フォークリフト10が起動状態のときに行われる。起動状態とは、フォークリフト10に走行動作及び荷役動作を行わせることが可能な状態である。本実施形態では、
図3に示すように、ステレオカメラ31で路面R1,R2が撮像された場合の処理を一例として説明する。
【0020】
図4及び
図5に示すように、ステップS1において、画像処理部41は、視差画像dpを取得する。視差画像dpは、画素に対して視差[px]を対応付けた画像である。視差は、第1画像と、第2画像とを比較し、各画像に写る同一特徴点について第1画像と第2画像の画素数の差を算出することで得られる。なお、特徴点とは、物体のエッジなど、境目として認識可能な部分である。特徴点は、輝度情報などから検出することができる。
【0021】
画像処理部41は、ステレオカメラ31によって撮像されている映像から同一フレームの第1画像及び第2画像を取得する。画像処理部41は、各画像を一時的に格納するRAMを用いて、RGBからYCrCbへの変換を行う。なお、画像処理部41は、歪み補正、エッジ強調処理などを行ってもよい。画像処理部41は、第1画像の各画素と第2画像の各画素との類似度を比較して視差を算出するステレオ処理を行う。なお、ステレオ処理としては、画素毎に視差を算出する手法を用いてもよいし、各画像を複数の画素を含むブロックに分割してブロック毎の視差を算出するブロックマッチング法を用いてもよい。各画素の類似度の比較には、例えば、SAD:Sum of Absolute Difference、SSD:Sum of Squared Differenceなどが用いられる。画像処理部41は、第1画像を基準画像、第2画像を比較画像として視差画像dpを取得する。画像処理部41は、第1画像の画素毎に、最も類似する第2画像の画素を抽出し、第1画像の画素と、当該画素に最も類似する画素の横方向の画素数の差を視差として算出する。これにより、基準画像である第1画像の各画素に視差が対応付けられた視差画像dpを取得することができる。なお、視差画像dpとは、必ずしも表示を要するものではなく、視差画像dpにおける各画素に視差が対応付けられたデータのことを示す。本実施形態では、画像処理部41が、視差画像取得部として機能しているといえる。
【0022】
図5には、第1画像と第2画像から得られた視差画像dpの一例を示す。
図5に示す視差画像dpでは、視差の大小を濃淡で表現している。視差は、ステレオカメラ31に近い位置ほど大きくなり、ステレオカメラ31から離れるほど小さくなる。以下、視差画像dpの横方向の座標をX座標とし、視差画像dpの縦方向の座標をY座標とする。X座標は横方向の画素位置を示し、Y座標は縦方向の画素位置を示す。視差画像dpの横方向の画素のうち左の画素ほどX座標が小さく、縦方向の画素のうち上の画素ほどY座標が小さい。縦方向の画素が小さいほどステレオカメラ31から離間しており、縦方向の画素が大きいほどステレオカメラ31に近いといえる。視差画像dpの中心座標のX座標は、フォークリフト10の幅方向の中央に対応している。以下の説明において、縦方向の画素を縦画素、横方向の画素を横画素と称する。
【0023】
図4及び
図5に示すように、次に、ステップS2において、画像処理部41は、視差画像dpから低位置を検出する領域Aを選択する。領域Aは、横方向の画素数が視差画像dpの横方向の画素数よりも少なく、縦方向の画素数が視差画像dpの縦方向の画素数と同一となる範囲である。視差画像dpには、領域Aに含まれない部分が含まれることになり、この部分については低位置の検出が行われない。領域Aの横方向の画素数は、フォークリフト10の幅に合わせて設定されており、領域Aはフォークリフト10が通過すると推測される範囲であるといえる。
【0024】
図4及び
図6に示すように、次に、ステップS3において、画像処理部41は、視差画像dpの縦画素と視差との二次元配列に、領域A内の各画素に対応付けられた視差を投票する。
図6に示すように、二次元配列の行方向は縦画素[px]であり、1~縦画素の最大値までの値となる。二次元配列の列方向は視差であり、1~領域A内の最大視差までの値となる。二次元配列は、縦画素が同一であり、横画素が異なる画素に対応付けられた視差の頻度を表すものとなる。即ち、ステップS3では、領域A内を、同一の縦画素毎に横方向に分割した場合に、縦画素が同一である範囲毎の視差の頻度が求められるといえる。本実施形態において、画像処理部41が投票部として機能する。
【0025】
図4及び
図7に示すように、次に、ステップS4において、画像処理部41は、直線L1,L2を抽出する。
図7に示すように、画像処理部41は、まず、視差をX軸、縦方向の画素をY軸とする座標系に、投票数が閾値以上である視差をプロットする。画像処理部41は、投票数が閾値以上である視差がプロットされた座標系からハフ変換により直線L1,L2の抽出を行う。なお、直線L1,L2の抽出は、ハフ変換に限られず、LSD:Line Segment Detectorや、RANSAC:Random Sample Consensusなどで行うことができる。ここで、縦画素毎に視差の頻度を求めた場合、水平方向に延びる地面である路面R1,R2により生じる視差の頻度が最も多くなる傾向にある。これは、フォークリフト10の上方から下方を撮像した場合に、画像中に占める路面R1,R2の面積が最も大きくなりやすいためである。上記した閾値としては、例えば、各縦画素について、路面R1,R2などの地面により生じる視差を抽出できるようにすることが好ましい。ハフ変換により得られた直線L1,L2は、縦画素の変化に対するステレオカメラ31から路面R1,R2までの距離を表しているともいえる。なお、路面R1,R2上に配置された物体などによって複数の縦画素のうちの一部について、路面R1,R2以外の物体により生じた視差が閾値を超える場合も考えられる。この場合であっても、ハフ変換による特徴検出を行うことで、路面R1,R2により生じた視差による直線L1,L2を得ることができる。本実施形態において、画像処理部41が直線抽出部として機能する。
【0026】
図4及び
図7に示すように、次に、ステップS5において、画像処理部41は、ステップS4で抽出された直線L1,L2の傾きと、切片とを算出する。画像処理部41は、ステップS4で複数の直線L1,L2が抽出されている場合には、直線L1,L2毎に個別に傾きと切片とを算出する。
【0027】
ステップS6において、次に、画像処理部41は、傾きが類似する直線L1,L2が複数あるか否かを判定する。ステレオカメラ31によって撮像された画像に路面R1よりも低い低位置が存在しない場合、路面R1により生じる視差による直線が得られる。この直線は、X座標が大きいほどY座標が大きい単一の直線となる。なお、直線の傾きは、路面R1の傾斜を表しているといえる。
【0028】
図3に示すように、第1路面R1に段差STが存在する場合、段差STを境として第1路面R1よりも低い第2路面R2が存在することになる。
図3には、ステレオカメラ31の撮像範囲IAを模式的に示している。図に示す撮像範囲IAは、ステレオカメラ31の垂直画角により定まる範囲であり、縦画素に対応する範囲である。図から把握できるように、第2路面R2が存在する場合、第2路面R2は第1路面R1よりも低いため、第1路面R1よりも低くなる分だけステレオカメラ31からの距離が遠くなることになる。また、段差STにより第2路面R2の一部が死角となることで、死角の長さd1に起因した距離差も生じることになる。即ち、ステレオカメラ31の画像に段差STが含まれている場合、段差STを境としてステレオカメラ31から第1路面R1までの距離と、ステレオカメラ31から第2路面R2までの距離で大きな差が生じることになる。ステレオカメラ31の画像に第2路面R2が写る場合、第2路面R2が写らない場合に比べてステレオカメラ31からの距離が大きく変化する箇所が存在することになる。視差は、ステレオカメラ31からの距離に応じて変化するため、画像に第2路面R2が存在すると視差にも大きな変化が現れることになる。結果として、ステレオカメラ31によって第1路面R1と、第1路面R1よりも低い第2路面R2が撮像された場合、第1路面R1の視差に対応する直線L2と、第2路面R2の視差に対応する直線L1とが個別に抽出されることになる。なお、得られる直線の数は、段差STの数に合わせて変化することになる。
【0029】
直線L1の傾きと直線L2の傾きが類似しているか否かは、直線L1の傾きと直線L2の傾きの差が許容範囲内か否かにより判定することができる。直線L1,L2の傾きの差が許容範囲内であれば、直線L1と直線L2は傾きが類似しているといえる。なお、許容範囲としては、測定誤差などを加味した上で、直線L1と直線L2との傾きが同一とみなせるように設定されている。
【0030】
図4に示すように、ステップS6の判定結果が否定の場合、画像処理部41は、ステップS7において低位置判定フラグをオフにして低位置探索処理を終了する。詳細にいえば、画像処理部41は、低位置判定フラグがオフの場合であれば低位置判定フラグのオフを維持し、過去の制御周期で低位置判定フラグがオンになっている場合には低位置判定フラグをオフにする。
【0031】
ステップS6の判定結果が肯定の場合、画像処理部41は、ステップS8において切片が異なる直線L1,L2が複数あるか否かを判定する。段差STを境として第1路面R1と第1路面R1よりも低い第2路面R2とが分かれている場合、2つの直線L1,L2はX軸にずれた直線L1,L2となる。2つの直線L1,L2がX軸にずれると、2つの直線L1,L2の切片は異なる値となる。従って、ステップS8の判定結果が否定の場合には第1路面R1よりも低い第2路面R2が存在しないと判定を行うことができる。
【0032】
ステップS8の判定結果が否定の場合、画像処理部41は、ステップS7の処理を行う。ステップS8の判定結果が肯定の場合、画像処理部41は、ステップS9において、傾きが同一であり、切片が異なる複数の直線L1,L2から切片が最小である直線L1を抽出する。次に、ステップS10において、画像処理部41は、傾きが同一であり、切片が異なる複数の直線L1,L2から切片が最大である直線L2を抽出する。直線L1,L2の切片の差は、第1路面R1と第2路面R2との高低差に依存しており、第1路面R1よりも第2路面R2が低いほど直線L1,L2の切片の差は大きくなる。
【0033】
以下、切片が最大である直線L1を第1直線とし、切片が最小である直線L2を第2直線とする。なお、第1直線L1は、第2路面R2による視差で得られた直線であり、第2直線L2は第1路面R1による視差で得られた直線である。
【0034】
図4及び
図7に示すように、ステップS11において、画像処理部41は、切片が最小である第1直線L1の終点座標(x1,y1)を抽出する。終点座標(x1,y1)とは、第1直線L1のうち縦画素=Y座標が最も大きい座標である。終点座標(x1,y1)は、画像に写る第2路面R2のうちステレオカメラ31に最も近い位置を示している。ステップS12において、画像処理部41は、切片が最大である第2直線L2の始点座標(x2,y2)を抽出する。始点座標(x2,y2)とは、第2直線L2のうち縦画素=Y座標が最も小さい座標である。始点座標(x2,y2)は、画像に写る第1路面R1のうちステレオカメラ31から最も遠い位置を示している。段差STの座標は、第2直線L2の始点座標(x2,y2)と同一とみなすことができる。
【0035】
ステップS13において、画像処理部41は、第1直線L1の終点座標(x1,y1)のX座標と第2直線L2の始点座標(x2,y2)のX座標との差である|x2-x1|の値が所定値以上となるか否かを判定する。|x2-x1|は、画像に写る第1路面R1のうち最もステレオカメラ31から離れた位置と、画像に写る第2路面R2のうち最もステレオカメラ31に近い位置との差が大きいほど大きくなる。|x2-x1|は、第1路面R1と第2路面R2との高低差が大きいほど大きくなるといえる。従って、|x2-x1|は第1路面R1と第2路面R2の高低差を表しているといえる。所定値は、第1路面R1と第2路面R2の高低差をフォークリフト10が乗り越え可能か否かを判定するための閾値である。例えば、第1路面R1と第2路面R2の高低差がフォークリフト10の車輪の半径よりも小さければ進行可能であり、半径以上であれば進行不能である。第1路面R1と第2路面R2の高低差が車輪の半径と同一であるときの|x2-x1|に基づき所定値を設定することで、フォークリフト10が進行可能かどうかを判定することができる。ステップS13の判定結果が否定の場合、第1路面R1には進行可能な段差STが存在しているといえる。ステップS13の判定結果が肯定の場合、第1路面R1には進行不可能な段差STが存在しているといえる。本実施形態において、画像処理部41は、判断部として機能する。
【0036】
ステップS13の判定結果が否定の場合、画像処理部41は、ステップS7の処理を行う。一方で、ステップS13の判定結果が肯定の場合、画像処理部41は、ステップS14の処理を行う。ステップS14において、画像処理部41は、低位置判定フラグをオンにする。詳細にいえば、画像処理部41は、低位置判定フラグがオフの場合にはオンにし、過去の制御周期で低位置判定フラグがオンにされている場合にはオンを維持し、低位置探索処理を終了する。
【0037】
低位置判定フラグがオンにされると、車速制限処理が行われる。車速制限処理は、低位置判定フラグがオンの間には継続して行われ、低位置判定フラグがオフになると中止される。以下、車速制限処理について説明する。
【0038】
図8に示すように、画像処理部41は、ステップS21において、ステレオカメラ31から段差STまでの距離を算出する。画像処理部41は、カメラ座標系における段差STの位置を算出する。カメラ座標系は、光軸をZ軸とし、光軸に直交する2つの軸のそれぞれをX軸、Y軸とする3軸直交座標系である。カメラ座標系における段差STの位置は、カメラ座標系におけるZ座標Zc、X座標Xc、Y座標Ycで表わすことができる。Z座標Zc、X座標Xc及びY座標Ycは、それぞれ、以下の(1)式~(3)式を用いて算出することができる。
【0039】
【0040】
【0041】
【数3】
ここで、Bはステレオカメラ31の眼間距離=基線長[m]、fは焦点距離[m]、dは視差[px]である。xpは視差画像dp中の任意のX座標、x’は視差画像dpの中心X座標である。ypは視差画像dp中の任意のY座標、y’は視差画像dpの中心Y座標である。段差STの座標に対応する視差を把握することで、(1)~(3)式からカメラ座標系における段差STの位置を把握することができる。
【0042】
ここで、フォークリフト10の進行方向に延びる軸をY軸、鉛直方向に延びる軸をZ軸、Y軸及びZ軸に直交する軸をX軸とする3軸直交座標系での座標を実空間上での座標であるワールド座標とする。実空間上での物体の位置は、実空間上におけるX座標Xw、Y座標Yw、Z座標Zwで表わすことができる。
【0043】
画像処理部41は、以下の(4)式を用いてカメラ座標系をワールド座標系に変換する。
【0044】
【数4】
ここで、Hはワールド座標系におけるステレオカメラ31の取り付け高さであり、θはカメラ32,33の光軸と、水平面とがなす角+90°の角度である。
【0045】
前述したように、第2直線L2の始点座標(x2,y2)は、段差STの座標、言い換えれば、第1路面R1の終了位置を表している。このため、d=始点座標(x2,y2)のX座標x2、xp=x’、yp=始点座標(x2,y2)のy2とし、(1)~(3)式を用いてカメラ座標系での段差STの位置を算出することができる。そして、カメラ座標系での段差STの位置を(4)式を用いてワールド座標に変換することで、実空間上での段差STの位置を演算することができる。なお、段差STは、視差画像dp中で横方向に延びる傾向があることを考えれば、xpの値は、領域A内のX座標のうち任意の値としてもよい。
【0046】
段差STは、第2直線L2の始点座標(x2,y2)のY座標であるy2に対応する実空間上の座標である。従って、画像処理部41は、第2直線L2の始点座標(x2,y2)のY座標に対応する実空間上の位置よりも遠い位置に第2路面R2が存在していると判断することができる。
【0047】
ワールド座標のうちY座標Ywは、フォークリフト10の進行方向に対するフォークリフト10から段差STまでの距離、即ち、フォークリフト10と段差STとの相対距離を表しているといえる。画像処理部41は、実空間上での段差STの座標をメインコントローラ20に出力する。
【0048】
次に、ステップS22において、メインコントローラ20は、画像処理部41から出力された段差STの座標からフォークリフト10から段差STまでの距離を把握し、当該距離が制限開始距離以下か否かを判定する。制限開始距離とは、フォークリフト10の最高速度やフォークリフト10の使用される環境を考慮した上で、フォークリフト10が段差STに進入することを抑制できるように設定された距離である。メインコントローラ20は、ステップS22の判定結果が否定の場合、処理を終了する。一方で、メインコントローラ20は、ステップS22の判定結果が肯定の場合、ステップS23において速度制限を課す。
【0049】
図9示すように、速度制限は、フォークリフト10から段差STまでの距離が短くなるほど厳しい制限が課される。本実施形態では、フォークリフト10の到達し得る最高速度に対する速度規制率として速度制限が課される。メインコントローラ20は、制限開始距離から、速度規制率が最大となる最短距離に向けて徐々に速度規制率を大きくしていく。なお、速度規制率の最大は100%=フォークリフト10の停止であってもよいし、100%未満の値であってもよい。メインコントローラ20は、速度規制率に応じた速度を上限として走行制御装置23に指令を与えることで、フォークリフト10の速度制限を実施する。これにより、フォークリフト10が段差STに進入することで、フォークリフト10が走行不能になることを抑制できる。
【0050】
第1実施形態の効果について説明する。
(1-1)画像処理部41は、ステレオカメラ31によって得られた画像から視差画像dpを取得し、視差を用いて段差STを検出している。そして、段差STにより生じる視差から、フォークリフト10から段差STまでの距離を演算することができる。従って、インフラストラクチャーの整備を行うことなく低位置を検出できる。
【0051】
(1-2)画像処理部41は、切片の異なる複数の直線L1,L2を抽出し、第1直線L1の終点座標(x1,y1)と第2直線L2の始点座標(x2,y2)とを抽出している。そして、第1直線L1の終点座標(x1,y1)のX座標と第2直線L2の始点座標(x2,y2)のX座標とを比較することで、段差STにより生じた第2路面R2を検出することができる。
【0052】
(第2実施形態)
以下、位置検出装置の第2実施形態について説明する。なお、以下の説明において、第1実施形態と同様の部分については記載を省略する。
【0053】
図10に示すように、第2実施形態では、低位置としてフォークリフト10の存在する路面R11から鉛直方向に凹んだ溝Gを検出する。なお、溝Gとは、溝Gを挟んだ両側の部分R11A,R11Bを仮想的に延長した場合に、両部分R11A,R11Bが起伏なく重なり合う位置をいう。路面R11が傾斜していない平面であれば、溝Gを挟んだ両側の部分R11A,R11Bには、高低差がない、あるいは、フォークリフト10を走行させるのに無視できる程度の高低差が存在することになる。
【0054】
図11に示すように、画像処理部41は、ステップS1~ステップS7までは第1実施形態と同様の処理を行う。以下、第2実施形態の低位置探索処理について第2実施形態の作用とともに説明する。
【0055】
図11及び
図12に示すように、画像処理部41は、ステップS1~S6の処理の次に、ステップS31の処理を行う。ステップS31において、画像処理部41は、傾きが類似する複数の直線L1,L2のうち切片が類似する直線L1,L2が複数あるか否かを判定する。切片が類似するか否かは、複数の直線L1,L2同士の切片同士の差が許容範囲内か否かにより判定することができる。許容範囲は、測定誤差などを加味した上で、直線L1,L2同士の切片が同一とみなせる値に設定される。複数の直線L1,L2のうちの1つを第1直線L1とし、第1直線L1の終点座標(x1,y1)のX座標よりも始点座標(x2,y2)のX座標が大きい直線L2を第2直線L2とする。傾き及び切片の両方が類似する直線L1,L2が抽出されることになる。なお、傾き及び切片の両方が類似する直線が3つ以上存在する場合、3つ以上の直線のうちの任意の2組の直線を第1直線及び第2直線とし、第1直線と第2直線の各組み合わせについて以下の処理を行ってもよい。また、傾き及び切片の両方が類似する直線が3つ以上存在する場合、各直線の始点座標を比較し、最もY座標の大きい直線を第2直線、第2直線の次にY座標の大きい直線を第1直線としてもよい。Y座標が大きいほど、ステレオカメラ31に近いため、Y座標の最も大きい直線を用いることで、ステレオカメラ31に最も近い溝Gの検出を行うことができる。
【0056】
ステップS31の判定結果が否定の場合、画像処理部41は、ステップS7において、低位置判定フラグをオフにする。一方で、ステップS31の判定結果が肯定の場合、画像処理部41は、ステップS32の処理を行う。
【0057】
ステップS32において、画像処理部41は、第3直線L3が存在するか否かを判定する。第3直線L3は、第1直線L1の終点座標(x1,y1)から延び、かつ、Y座標が大きくなるほどX座標が小さくなる直線である。第3直線L3の傾きの正負は、第1直線L1の傾きの正負とは逆になる。
【0058】
ここで、
図10に示すように、路面R11に溝Gが存在している場合、溝Gよりフォークリフト10側の部分R11Aにより生じる視差により、視差はステレオカメラ31に近付くにつれて徐々に大きくなっていく。ステレオカメラ31によって溝Gが撮像されている場合、各画像には、溝Gを区画している壁面のうち溝Gよりフォークリフト10から離れた部分R11Bに交わる壁面Wが写る部分と、部分R11Aが写る部分との境となる画素が存在する。この部分では、路面R11が平坦である場合に比べて、ステレオカメラ31からの距離が大きく変化することになる。従って、溝Gよりもフォークリフト10側の部分R11Aにより1つの直線L2が得られることになる。この直線L2が第2直線L2である。
【0059】
壁面Wは、鉛直方向に延びる面であるため、縦画素が小さくなるにつれてステレオカメラ31に近付いていく。壁面Wが平坦面であれば、視差画像dpの縦画素が小さくなるにつれて、徐々に視差は大きくなっていく。従って、溝Gを区画する壁面Wにより1つの直線L3が得られることになる。この直線L3が第3直線L3となる。
【0060】
壁面Wと部分R11Bは、交わっており、両者の交点は画像に写る。画像には、壁面Wが写る部分と部分R11Bが写る部分との境となる画素が存在することになる。部分R11Bでは縦画素が大きくなるほど視差が大きくなる。また、溝Gを挟んだ両部分R11A,R11Bは、溝Gがない場合には同一平面となるため、溝Gがある場合には単一の直線から溝Gの分だけ視差が欠落した直線となる。従って、溝Gの分の視差が欠落した部分を除けば、溝Gを挟んだ両部分R11B,R11Aにより得られる直線L1,L2は同一切片であり同一傾きの直線L1,L2となる。従って、第2直線L2と切片が同一である直線L1が第1直線L1となる。第1直線L1と第3直線L3の交点とが画像に写ることで、第3直線L3は第1直線L1の終点座標(x1,y1)から延びる直線となる。第3直線L3の始点座標は第1直線L1の終点座標(x1,y1)と同一座標とみなすことができる。第1直線L1と第3直線L3とのなす角は、壁面Wと部分R11Bとのなす角により変化し、壁面Wと部分R11Bとが直角に交わっていれば第1直線L1と第3直線L3は直角に交わることになる。
【0061】
ステップS32の判定結果が否定の場合、画像処理部41は、ステップS7の処理を行う。ステップS32の判定結果が肯定の場合、画像処理部41は、ステップS33の処理を行う。
【0062】
ステップS33において、画像処理部41は、第3直線L3の終点座標(x3,y3)のX座標と第2直線L2の始点座標(x2,y2)のX座標との差である|x2-x3|の値が所定値以上か否かを判定する。第3直線L3の終点座標(x3,y3)のX座標と第2直線L2の始点座標(x2,y2)のX座標との差|x2-x3|は、両部分R11A,R11B間の溝Gの長さによって変化する。従って、所定値をフォークリフト10の進行可能な溝Gの長さに基づいて設定することで、溝Gが進行可能か否かを判定することができる。ステップS33の判定結果が否定の場合、ステップS7において、画像処理部41は低位置判定フラグをオフにする。一方で、ステップS33の判定結果が肯定の場合、ステップS14において、画像処理部41は低位置判定フラグをオンにする。
【0063】
第2実施形態の効果について説明する。第2実施形態では、第1実施形態の効果(1-1)に加えて以下の効果を得ることができる。
(2-1)画像処理部41は、第1直線L1及び第2直線L2に加えて第3直線L3を抽出することで、低位置は溝Gであると判断することができる。
【0064】
各実施形態は、以下のように変更して実施することができる。各実施形態及び以下の変形例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
○各実施形態において、第1直線L1と第2直線L2が抽出され、第1直線L1の傾きと第2直線L2の傾きとが許容範囲内であれば、低位置が存在していると判定してもよい。即ち、低位置が第1路面R1より低い第2路面R2なのか溝Gなのかの判定や、フォークリフト10による進行が可能か否かの判定を行わなくてもよい。
【0065】
○第1実施形態と第2実施形態とを組み合わせて、低位置の検出とともに、当該低位置が路面R1より低い第2路面R2か溝Gかの判定を行ってもよい。詳細にいえば、第1実施形態におけるステップS8の判定結果が否定になった場合に、第3直線L3が存在するかの判定を行い、この判定結果が肯定であれば低位置は溝Gであると判断すればよい。このようにすることで、低位置が第1路面R1より低い第2路面R2であっても、溝Gであっても検出することができる。
【0066】
○
図13に示すように、視差画像dpの領域Aを複数の範囲に区分してもよい。
図13に示す例では、領域Aは、3つの範囲A1~A3に区分されている。3つの範囲A1~A3のうち中央の範囲A2は、フォークリフト10が進行した場合にフォークリフト10が通過する範囲である。3つの範囲A1~A3のうち中央以外の範囲A1,A3は、フォークリフト10が進行した場合にフォークリフト10の通過する範囲の側方部分となる。この場合、中央の範囲A2に低位置が検出された場合には速度制限、左右の範囲A1,A3に低位置が検出された場合には搭乗者に対する警報を行うなど範囲に合わせて異なる制御を行ってもよい。
【0067】
○第2実施形態において、画像処理部41は、溝Gの深さを推定してもよい。画像処理部41は、第3直線L3の始点座標(x1,y1)のY座標と第3直線L3の終点座標(x3,y3)のY座標とを用いて深さを算出する。詳細にいえば、画像処理部41は第3直線L3の始点座標(x1,y1)のY座標に対応する実空間上の座標と、第3直線L3の終点座標(x3,y3)のY座標に対応する実空間上の座標との差から溝Gの深さを推定する。
【0068】
○各実施形態において、画像処理部41は、低位置の検出をすることに加えて、フォークリフト10の走行の妨げとなる障害物や、壁を検出するようにしてもよい。障害物や壁は、視差から検出することができる。
【0069】
○各実施形態において、速度制限は、段差STまでの距離に関わらず一定の制限が課されるようにしてもよい。
○各実施形態において、カメラ座標系からワールド座標系への座標変換は、(4)式に代えて、テーブルデータによって行われてもよい。テーブルデータは、Y座標YcとZ座標Zcの組み合わせにY座標Ywを対応させたテーブルデータと、Y座標YcとZ座標Zcとの組み合わせにZ座標Zwを対応させたテーブルデータである。これらのテーブルデータを画像処理部41のROMなどに記憶しておくことで、カメラ座標系におけるY座標YcとZ座標Zcから、ワールド座標系におけるY座標Yw及びZ座標Zwを求めることができる。
【0070】
○各実施形態において、フォークリフト10から低位置までの距離が制限開始距離以下のときに速度制限に代えて搭乗者への警報が行われるようにしてもよいし、速度制限と警報の両方が行われるようにしてもよい。警報は、例えば、搭乗者の視認可能な表示器への表示や、音によって行われる。
【0071】
○各実施形態において、第1画像の画素数と第2画像の画素数とは異なっていてもよい。例えば、比較画像である第2画像の画素数を視差画像dpの画素数と同一とし、基準画像である第1画像の画素数を第2画像の画素数よりも多くしてもよい。
【0072】
○各実施形態において、視差画像取得部、投票部、直線抽出部及び判断部は、それぞれ、個別の制御装置によって構成されていてもよい。
○各実施形態において、第1カメラ32と第2カメラ33は、鉛直方向に並んで配置されていてもよい。
【0073】
○各実施形態において、ステレオカメラ31は、3つ以上のカメラを備えていてもよい。
○各実施形態において、フォークリフト10は、エンジンの駆動によって走行するものでもよい。この場合、走行制御装置は、エンジンへの燃料噴射量などを制御する装置となる。
【0074】
○各実施形態において、位置検出装置30は、建設機械、自動搬送車、トラックなどフォークリフト10以外の産業車両や乗用車などの移動体に搭載されていてもよい。
【符号の説明】
【0075】
L1…第1直線、L2…第2直線、L3…第3直線、R1,R2…路面、G…溝、10…フォークリフト(移動体)、30…位置検出装置、31…ステレオカメラ、41…画像処理部(視差画像取得部、投票部、直線抽出部及び判断部)。