<用語>
本開示の実施形態を説明する前に、本明細書において使用する用語の定義を説明する。
「無人搬送車」(AGV)とは、本体に人手または自動で荷物を積み込み、指示された場所まで自動走行し、人手または自動で荷卸しをする無軌道車両を意味する。「無人搬送車」は、無人牽引車および無人フォークリフトを含む。
「無人」の用語は、車両の操舵に人を必要としないことを意味しており、無人搬送車が「人(たとえば荷物の積み下ろしを行う者)」を搬送することは除外しない。
「無人牽引車」とは、人手または自動で荷物の積み込み荷卸しをする台車を牽引して、指示された場所まで自動走行する無軌道車両である。
「無人フォークリフト」とは、荷物移載用のフォークなどを上下させるマストを備え、フォークなどに荷物を自動移載し指示された場所まで自動走行し、自動荷役作業をする無軌道車両である。
「無軌道車両」とは、車輪と、車輪を回転させる電気モータまたはエンジンを備える移動体(vehicle)である。
「移動体」とは、人または荷物を載せて移動する装置であり、移動のための駆動力(traction)を発生させる車輪、二足もしくは多足歩行装置、またはプロペラなどの駆動装置を備える。本開示における「移動体」の用語は、狭義の無人搬送車のみならず、モバイルロボット、サービスロボット、およびドローンを含む。
「自動走行」は、無人搬送車が通信によって接続されるコンピュータの運行管理システムの指令に基づく走行と、無人搬送車が備える制御装置による自律的走行とを含む。自律的走行には、無人搬送車が所定の経路に沿って目的地に向かう走行のみならず、追尾目標に追従する走行も含まれる。また、無人搬送車は、一時的に作業者の指示に基づくマニュアル走行を行ってもよい。「自動走行」は、一般には「ガイド式」の走行および「ガイドレス式」の走行の両方を含むが、本開示では「ガイドレス式」の走行を意味する。
「ガイド式」とは、誘導体を連続的または断続的に設置し、誘導体を利用して無人搬送車を誘導する方式である。
「ガイドレス式」とは、誘導体を設置せずに誘導する方式である。本開示の実施形態における無人搬送車は、自己位置推定装置を備え、ガイドレス式で走行することができる。
「自己位置推定装置」は、レーザレンジファインダなどの外界センサによって取得されたセンサデータに基づいて環境地図上における自己位置を推定する装置である。
「外界センサ」は、移動体の外部の状態をセンシングするセンサである。外界センサには、たとえば、レーザレンジファインダ(測域センサともいう)、カメラ(またはイメージセンサ)、LIDAR(Light Detection and Ranging)、ミリ波レーダ、および磁気センサがある。
「内界センサ」は、移動体の内部の状態をセンシングするセンサである。内界センサには、たとえばロータリエンコーダ(以下、単に「エンコーダ」と称することがある)、加速度センサ、および角加速度センサ(たとえばジャイロセンサ)がある。
「SLAM(スラム)」とは、Simultaneous Localization and Mappingの略語であり、自己位置推定と環境地図作成を同時に行うことを意味する。
<実施形態>
従来の技術では、移動体の車輪の回転そのものに基づいて空転の有無が判断される。しかし、移動体が溝にはまったり、床が滑るような場合には、駆動輪がそのまま回転し続けるため、空転を正確に検出できないことがある。
駆動輪が空転したままの状態が続くと、最悪の場合、床が削られるなどの問題が生じる。このため、駆動輪の空転を放置することは望ましくない。空転が生じた場合には、早期に検出することが望まれる。
そこで、本開示の実施形態では、以下の2つの観点の少なくとも一方から、移動体の動作が評価される。
・一定時間内に移動体が進むべき距離または回転すべき角度と、実際に進んだ距離または回転した角度が同程度か?
・移動体が一定距離だけ進むまたは一定角度だけ回転する場合に想定される所要時間と、実際の所要時間が同程度か?
いずれか一方の観点でも異なると判断された場合、駆動輪が空転していると判断される。
上記の観点から空転の有無を判断することにより、従来よりも正確に空転を検出することが可能である。
以下、添付の図面を参照しながら、本開示による移動体および移動体システムの実施形態を説明する。なお、必要以上に詳細な説明は省略する場合がある。たとえば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。本発明者らは、当業者が本開示を十分に理解するために添付図面および以下の説明を提供する。これらによって特許請求の範囲に記載の主題を限定することを意図するものではない。以下の説明において、同一または類似の構成要素には、同一の参照符号を付している。
図1は、本開示の例示的な実施形態における移動体10の概略的な構成を示すブロック図である。移動体10は、複数の駆動輪111と、複数の電気モータ(以下、単に「モータ」と称する)106と、外界センサ101と、第1位置推定装置103と、駆動装置107と、制御回路105と、記憶装置113と、通信回路104とを備える。駆動装置107は、第2位置推定装置109を備える。図1には、移動体10の外部の装置である運行管理装置(以下、「管理装置」とも称する)50も示されている。
複数のモータ106は、複数の駆動輪111にそれぞれ接続されている。複数のモータ106は、駆動装置107によって駆動され、複数の駆動輪111をそれぞれ回転させる。駆動装置107は、制御回路105からの指示に従い、複数のモータ106の回転を制御する。つまり、制御回路105は、駆動装置107を介して、複数のモータ106を制御する。
駆動装置107は、インバータ回路などのモータ駆動回路を、モータ106ごとに備え得る。本実施形態では、駆動装置107は、オドメトリ情報を生成する第2位置推定装置109を備えている。第2位置推定装置109は、駆動装置107から独立して設けられていてもよい。第2位置推定装置109は省略される場合もある。
本実施形態では、複数の駆動輪111および複数のモータ106のそれぞれの個数は2個である。しかし、この例に限定されず、他の個数、たとえば3個または4個であってもよい。
外界センサ101は、移動体10の周囲の環境を繰り返し(たとえば周期的に)スキャンすることによって得たセンサデータを逐次出力する。外界センサ101の典型例はレーザレンジファインダである。外界センサ101はイメージセンサまたは超音波センサなどの他の種類のセンサであってもよい。
第1位置推定装置103は、外界センサ101から出力されたセンサデータに基づき、移動体10の位置および姿勢の推定値を示す第1位置情報を順次出力する。第1位置推定装置103は、たとえば、記憶装置113に記録されている環境地図を参照し、環境地図とセンサデータとのマッチングを行うことにより、第1位置情報を生成する。この処理の具体例については後述する。第1位置推定装置103は、たとえばマイクロコントローラユニット(MCU)などの、プロセッサを含む回路によって実現され得る。第1位置推定装置103は、第1位置情報に加えて、位置推定結果の確からしさを示す信頼度データを出力してもよい。信頼度データは、たとえば環境地図とセンサデータとの一致度を示す。
第2位置推定装置109は、複数の駆動輪111の各々の回転速度の計測値または推定値を取得し、その値に基づいて、移動体10の位置および向きの推定値を示す第2位置情報を生成して順次出力する。第2位置推定装置109は、第2位置情報を必要に応じて補正したオドメトリ情報を生成してもよい。第2位置推定装置109は、たとえば駆動装置107内のマイコンなどの、プロセッサを含む回路によって実現され得る。
図1に示す例では、移動体10は、複数の駆動輪111の回転速度をそれぞれ計測する複数のロータリエンコーダ108を備える。第2位置推定装置109は、複数のロータリエンコーダ108から出力されたデータに基づき、第2位置情報を生成することができる。第2位置推定装置109は、たとえば複数のロータリエンコーダ108によって計測された複数の駆動輪111の回転速度に既知の計算式を適用して、移動体10の変位ベクトルを繰り返し算出することができる。ここで変位ベクトルとは、位置(x,y)および姿勢(θ)の単位時間あたりの変化量の組を意味する。その変位ベクトルを第2位置情報とすることができる。ここで、(x,y)は、移動体10が移動する環境に固定された2次元座標系における移動体10の基準点(たとえば外界センサが位置する点)の座標値である。θは、移動体10の正面方向が基準方向(たとえばx方向)となす角度(反時計回りを正とする)を表す。計算式は、たとえば各駆動輪111と路面との間に滑りが生じないと仮定したときの各駆動輪111の回転速度と移動体10の変位とを関係付ける式であり得る。駆動輪111の単位時間(たとえば1秒)あたりの回転数をn、駆動輪111の直径をdとすると、πdnが、その駆動輪111の単位時間あたりの移動量であるといえる。複数の駆動輪111のそれぞれについて、単位時間あたりの移動量を求め、それらの移動量の組み合わせから、ある一定の時間内の移動体10の位置(x,y)および姿勢(θ)の変化量を求めることができる。計算式に代えて、同様の関係を規定するテーブルを利用して第2位置情報を求めてもよい。第2位置推定装置109または制御回路105は、複数のロータリエンコーダ108からの情報を用いる代わりに、各モータ駆動回路における電流または電圧の計測値に基づいてモータ106の回転速度を推定してもよい。
制御回路105は、移動体10の動作を制御する回路である。制御回路105は、第1位置推定装置103から第1位置情報を取得し、第2位置推定装置109から第2位置情報を取得する。制御回路105は、以下の(1)、(2)の少なくとも一方に基づいて、複数の駆動輪111の少なくとも1つの空転を検出する。
(1)一定時間内に移動体10が行うべき移動または回転の量と、第1位置情報に基づいて計算される、当該一定時間内に移動体10が行った移動または回転の量との差
(2)移動体10の一定量の移動または回転に要すると見込まれる時間と、第1位置情報に基づいて計算される、当該一定量の移動または回転に要した時間との差
なお、本明細書では、「比」に基づいて判断する場合も、「差」に基づいて判断することに含まれる。一定時間内に移動体10が行うべき移動または回転の量は、複数のモータ106への回転速度の指令値、または取得した第2位置情報に基づいて計算できる。移動体10の一定量の移動または回転に要すると見込まれる時間も同様に、複数のモータ106への回転速度の指令値、または取得した第2位置情報に基づいて計算できる。
制御回路105は、一定時間内に移動体10が行うべき移動または回転の量と、第1位置情報に基づいて計算される、一定時間内に前記移動体が行った移動または回転の量との差が、第1の閾値よりも大きいとき、空転が生じていることを示す信号を出力する。制御回路105はまた、一定量の移動または回転に要すると見込まれる時間と、第1位置情報に基づいて計算される、一定量の移動または回転に要した時間との差が、第2の閾値よりも大きいとき、空転が生じていることを示す信号を出力する。これらの信号は、例えば各モータ106を停止させる指令であり得る。あるいは、移動体10がスピーカを備える場合には、当該信号は、スピーカに警告音を出させる指令であってもよい。制御回路105は、少なくとも1つの駆動輪111の空転を検出したとき、例えば各モータ106に停止指示を送り、移動体10を停止させる。これにより、空転が生じたときに床を傷けたりするなどの問題を回避できる。
制御回路105は、空転を検出したとき、移動体10を後退させ、空転が生じた場所から退避するようにしてもよい。その場合、制御回路105は、空転が生じた場所を回避する経路で移動体10を目的地に向かわせてもよい。
制御回路105は、空転を検出したとき、通信回路104を介して管理装置50などの他の装置に、空転が生じていることを示す信号を送信してもよい。他の装置は、管理装置50に限らず、管理者または使用者が持つタブレットなどのコンピュータであってもよい。あるいは、他の装置は、空転を解消するための動作を実行する装置であってもよい。そのような装置は、例えば、移動体10の筐体を持ち上げて空転が生じた場所から移動させる動作を実行してもよい。
制御回路105は、移動体10が任意の動作を行っているときに上記の空転検出のための演算を行うことができる。例えば、直進しているとき、移動体10が曲線的に移動しているとき、移動体10が旋回しているときのそれぞれにおいて、空転を検出するための演算を実行できる。演算を容易にするために、複数の駆動輪111の各々の回転速度が一定値に保たれている期間に、上記演算を実行してもよい。
図2は、一定距離Sの移動に要する時間に基づいて空転の有無を判断する方法を説明するための図である。簡単のため、移動体10が一定の速度vで一方向に直進する場合の例を説明する。この場合、距離Sの移動に要する時間の予測値txは、tx=S/vの演算によって求められる。この時間txを基準として、閾値ttが、tt=tx+Δtに設定される。Δtはマージン時間である。マージン時間Δtは、txよりも小さい値、例えばtxの5%から30%程度の値に設定され得る。制御回路105は、移動中に繰り返し出力される第1位置情報における座標の変化量を時間的に積算することにより、初期位置からの移動距離の推定値を計算することができる。この移動距離の推定値がSに達すると、制御回路105は、その移動に要した時間を、閾値ttと比較する。制御回路105は、t≦ttの場合には、空転が生じていないと判断し、t>ttの場合には、空転が生じていると判断する。
この例では、移動体10が高速で移動している場合に、短い時間で空転を検出することができる。逆に、低速で移動している場合には、空転の検出までに長い時間を要する可能性がある。
そこで、制御回路105は、距離Sの設定値を、移動体10の速度の指令値に応じて変更してもよい。例えば、距離Sを、速度の指令値に比例するように設定してもよい。そのようにすれば、低速で移動している場合でも、空転の検出までの時間を短縮することができる。
なお、図2の例では、空転が生じた場合、いつまで経っても移動距離の推定値がSに達しない場合があり得る。そのような状況を避けるため、制御回路105は、t>ttになった時点で空転が生じていると判断してもよい。
図3は、一定時間Tの間に移動した距離に基づいて空転の有無を判断する方法を説明するための図である。この例でも、移動体10は一定の速度vで一方向に直進している。この場合、一定時間Tの間に移動する距離の予測値sxは、sx=v×Tの演算によって求められる。この距離sxを基準として、距離の閾値stが、st=sx−Δsに設定される。Δsはマージン距離である。マージン距離Δsは、sxよりも小さい値、例えばSxの5%から30%程度の値に設定され得る。制御回路105は、移動中に定期的に出力される第1位置情報における座標の変化量を時間的に積算することにより、時間Tの間に移動した距離の推定値sを計算できる。制御回路105は、時間Tの間に移動した距離の推定値sを、閾値stと比較する。制御回路105は、s≧stの場合には、空転が生じていないと判断し、s<stの場合には、空転が生じていると判断する。
この例では、一定の時間Tで空転の有無を判断できる。このため、時間Tを小さい値に設定すれば、低速で移動している場合でも短い時間で空転を検出することができる。この例において、制御回路105は、時間Tの設定値を、移動体10の速度の指令値に応じて変更してもよい。例えば、時間Tを、速度の指令値に比例するように設定してもよい。
図2および図3の各例では、移動体10が一定の速度で一定の方向に移動するが、移動体10は、曲線的な軌道に沿って移動したり、右折または左折したりすることもある。その場合でも、上記の空転検出方法は有効である。制御回路105は、第1位置推定装置103から定期的に出力される第1位置情報から、ある位置から他の位置までの移動量を推定できるからである。ここで、比較に用いられる移動量は、直線距離であってもよいし、移動の軌跡に沿った距離であってもよい。
制御回路105は、空転検出動作を任意のタイミングで行うことができる。制御回路105は、上記の空転検出動作を、移動体10の移動中、常に実行してもよいし、移動体10がたとえば直進しているときだけ行ってもよい。
空転検出動作を移動体10の旋回中に行うこともできる。旋回している状態は、左右の駆動輪111の回転数がほぼ等しく、回転方向が互いに逆の状態である。旋回中の空転検出には、座標(x,y)ではなく姿勢(θ)の変化量が利用される。
第1位置推定装置103が第1位置情報の信頼度を示すデータを出力する場合、制御回路105は、信頼度が閾値を超えているときのみ、空転検出のための演算を行ってもよい。本実施形態における空転検出は、第1位置情報の信頼度が高いことを前提としている。このため、第1位置情報の信頼度が一定値以上の場合にのみ、空転検出を行うことは合理的である。信頼度は、たとえば地図データとセンサデータとの間でICP(Iterative Closest Point)マッチングを行ったときの、マッチングできたセンサデータのセンサデータ全体に対する割合であり得る。
制御回路105は、空転の有無の判断結果を示すデータを移動体10の位置と関連付けて記憶装置113に記録してもよい。制御回路105は、移動体10の走行経路上の複数の位置ごとに当該データを生成し、当該データを当該複数の位置と関連付けて記憶装置113に記録してもよい。このような記録を行っておくことで、空転が生じやすいエリアを記録しておくことができる。システム内に複数の移動体10が存在する場合、管理装置50は、各移動体10から、空転が生じた位置のデータを収集してもよい。これにより、空転が高い頻度で生じる場所を避けて各移動体10の経路を決定するなどの調整が可能になる。
以下、図4Aから図4Cを参照しながら、第1位置情報と第2位置情報の両方を利用して空転の有無を判定する処理の例を説明する。空転が生じているときには、第1位置情報に基づく変位と第2位置情報に基づく変位との差が大きいと考えられる。そこで、この変位の差と、閾値との比較によって空転の有無を検出することができる。ここで「変位」とは、座標(x,y)および姿勢(θ)の時間変化を意味する。図4Aから図4Cの例において、移動体10は4つの車輪を有している。そのうちの2つ(たとえば後輪)が駆動輪111である。
図4Aは、判定処理の第1の例を模式的に示す図である。この例では、移動体10が左にカーブを描きながら移動している。この状態は、左側の駆動輪111よりも右側の駆動輪111の方が高い回転速度で回転している状態である。
ここで、時刻tにおける移動体10の位置および姿勢(以下、「基準位置」と称する)を(x(t),y(t),θ(t))とする。基準位置は、たとえば時刻tにおけるセンサデータから推定される第1位置情報が示す位置であり得る。第1位置推定装置103および第2位置推定装置109の各々は、時刻tから時間Δtが経過した後の基準位置からの変位を推定する。時間Δtは、外界センサ101がセンサデータを出力する周期(たとえば数十ミリ秒から数百ミリ秒程度)よりも長い時間である。時間Δtは、1秒以上に設定してもよい。時刻t+Δtにおける第1位置情報を(x1(t+Δt),y1(t+Δt),θ1(t+Δt))とする。時刻t+Δtにおける第2位置情報を(x2(t+Δt),y2(t+Δt),θ2(t+Δt))とする。
第1位置情報に基づいて計算される移動体10の変位は、(x1(t+Δt)−x(t),y1(t+Δt)−y(t),θ1(t+Δt)−θ(t))で表される。第2位置情報に基づいて計算される移動体10の変位は、(x2(t+Δt)−x(t),y2(t+Δt)−y(t),θ2(t+Δt)−θ(t))で表される。よって、これらの変位の差は、(Δx,Δy,Δθ)=(x1(t+Δt)−x2(t+Δt),y1(t+Δt)−y2(t+Δt),θ1(t+Δt)−θ2(t+Δt))と表される。
ここで、第1位置情報がほぼ正確であると仮定する。第1位置情報による変位と第2位置情報による変位との差(Δx,Δy,Δθ)は、第2位置情報の誤差を表すといえる。この誤差は、駆動輪111の空転によって生じ得る。
制御回路105は、この変位差ベクトル(Δx,Δy,Δθ)を計算し、その値に基づいて空転の有無または程度を推定する。たとえば、変位差ベクトルの二乗和(Δx)2+(Δy)2+(Δθ)2またはその平方根の値が、閾値よりも小さい場合に、空転が生じていると判断され得る。この例ではΔθも考慮するが、Δθを考慮せず、(Δx)2+(Δy)2の値に基づいて空転の程度を決定してもよい。
変位差に代えて、変位の比(x2(t+Δt)/x1(t+Δt),y2(t+Δt)/y1(t+Δt),θ2(t+Δt)/θ1(t+Δt))を用いて同様の判定を行ってもよい。以下の他の例についても同様である。
制御回路105は、変位差(Δx,Δy,Δθ)を時間的に積算することにより、一定時間Tにおける変位量を計算してもよい。あるいは、Δtそのものを一定時間Tとして用いてもよい。
図4Bは、判定処理の第2の例を模式的に示す図である。この例では、移動体10が直進しているときに判定が行われる。この状態は、左側の駆動輪111および右側の駆動輪111が同じ回転速度で回転している状態である。なお、左右の駆動輪111の摩耗量が異なる場合、同じ回転速度で回転していても直進しないが、ここでは両者の摩耗量が同じであると仮定する。
この例では、時刻t+Δtでの第1位置情報における姿勢θ1(t+Δt)と、時刻t+Δtでの第2位置情報における姿勢θ2(t+Δt)とが、ともに時刻tでの姿勢θ(t)に実質的に等しい。このため、姿勢の変化は無視することができる。そこで、制御回路105は、座標の変位差を示すベクトル(Δx,Δy)を計算し、その値に基づいて空転の有無または程度を推定することができる。たとえば、変位差ベクトルの二乗和(Δx)2+(Δy)2またはその平方根の値と、閾値とが比較される。制御回路105は、その比較結果に基づいて、空転の有無または程度を決定することができる。
図4Cは、判定処理の第3の例を模式的に示す図である。この例では、移動体10が旋回しているときに空転判定が行われる。ここでは移動体10が右に旋回している場合の例を説明する。この状態は、左右の駆動輪111の回転方向が互いに逆であり、単位時間あたりの回転数が等しい状態である。この場合、座標(x,y)の変化量は無視できる。つまり、x1(t+Δt)≒x2(t+Δt)≒x(t)かつy1(t+Δt)≒y2(t+Δt)≒y(t)と仮定できる。このため、制御回路105は、姿勢の変位差Δθ=θ1(t+Δ)−θ2(t+Δt)のみに基づいて駆動輪111の空転判定を行う。Δθを時間的に積算することにより、ある時間内の回転量を計算できる。その値を用いて、前述の空転判定を行ってもよい。
本実施形態では、記憶装置113は環境地図を記憶している。環境地図は、移動体10が移動する環境のレイアウトを示すデータである。環境地図は、たとえばレーザレンジファインダによって取得される点群データの集合であり得る。環境地図は、線分データの集合であってもよい。制御回路105は、環境地図における複数のエリアごとに上記の変位差を示すデータを生成し、当該データを複数のエリアと関連付けて記憶装置113に記憶させてもよい。
図5は、環境地図の一例を示す図である。図6は、環境地図を複数のエリアに分けた例を示す図である。図6に示すように、環境地図は、たとえば一定の大きさを有する複数の矩形のエリアに分割して管理されていてもよい。各エリアの一辺の長さは、たとえば数百ミリメートルから数メートル程度であり得る。制御回路105は、図示されるような複数のエリアごとに、空転が生じたことを示すデータを、エリアを示す識別子とともに記憶装置113に記憶させてもよい。管理装置50は、複数の移動体10から、そのようなデータを収集してもよい。図6においては、空転が生じた頻度に応じて異なる濃さでエリアが表現されている。濃く表現されたエリアほど、空転が多く生じたことを表す。このようなマップデータを予め生成しておくことにより、管理装置50は、駆動輪111の空転が生じやすいエリアを避けて経路設定を行うことができる。
図7Aは、空転検出動作の他の例を示すフローチャートである。この例では、まず第1位置推定装置103は、外界センサ101からセンサデータを周期的に取得する(ステップS101)。第1位置推定装置103は、このセンサデータに基づき、前述の方法で、移動体の位置を推定し、第1位置情報を生成する(ステップS102)。他方、第2位置推定装置109は、駆動輪の回転速度の計測値または推定値に基づき、移動体10の位置を推定し、第2位置情報を生成する(ステップS103)。なお、ステップS103はステップS102の前に行われてもよい。次に、制御回路105は、第1位置情報に基づいて計算される変位と、第2位置情報に基づいて計算される変位との差を計算する(ステップS104)。計算方法は、たとえば前述のいずれかの方法が用いられ得る。制御回路105は、計算した変位差が第1の閾値を超えるか否かを判定する(ステップS105)。判定がYesの場合、制御回路105は、空転が生じている旨の信号を出力する(ステップS106)。ステップS105の判定がNoの場合、ステップS101に戻り、前述の動作が再び実行される。
図7Bは、空転検出動作のさらに他の例を示すフローチャートである。この例では、ステップS204およびS205のみが図7Aに示す動作と異なる。ステップS103の後、制御回路105は、第1位置情報に基づいて計算される一定量の移動または回転に要する時間と、第2位置情報に基づいて計算される一定量の移動または回転に要する時間との差を計算する(ステップS204)。制御回路105は、計算した変位差が第2の閾値を超えるか否かを判定する(ステップS205)。判定がYesの場合、制御回路105は、空転が生じている旨の信号を出力する(ステップS106)。ステップS105の判定がNoの場合、ステップS101に戻り、前述の動作が再び実行される。
以下、移動体および移動体システムのより具体的な例を説明する。以下の説明では、移動体が無人搬送車であるものとし、無人搬送車を「AGV」と記述する。AGVについても参照符号「10」を付して、「AGV10」と表記する。なお、以下の説明は、矛盾がない限り、AGV以外の移動体、たとえば複数の駆動輪を有するロボットまたは有人の車両などにも同様に適用することができる。
(1)システムの基本構成
図8は、本開示による例示的な移動体管理システム100の基本構成例を示している。移動体管理システム100は、少なくとも1台のAGV10と、AGV10の運行管理を行う運行管理装置50とを含む。図8には、ユーザ1によって操作される端末装置20も記載されている。
AGV10は、走行に磁気テープなどの誘導体が不要な「ガイドレス式」走行が可能な無人搬送台車である。AGV10は、自己位置推定を行い、推定の結果を端末装置20および運行管理装置50に送信することができる。AGV10は、運行管理装置50からの指令に従って移動空間S内を自動走行することが可能である。
運行管理装置50は各AGV10の位置をトラッキングし、各AGV10の走行を管理するコンピュータシステムである。運行管理装置50は、デスクトップ型PC、ノート型PC、および/または、サーバコンピュータであり得る。運行管理装置50は、複数のアクセスポイント2を介して、各AGV10と通信する。たとえば、運行管理装置50は、各AGV10が次に向かうべき位置の座標のデータを各AGV10に送信する。各AGV10は、定期的に、たとえば100ミリ秒ごとに自身の位置および姿勢(orientation)を示すデータを運行管理装置50に送信する。指示した位置にAGV10が到達すると、運行管理装置50は、さらに次に向かうべき位置の座標のデータを送信する。AGV10は、端末装置20に入力されたユーザ1の操作に応じて移動空間S内を走行することも可能である。端末装置20の一例はタブレットコンピュータである。典型的には、端末装置20を利用したAGV10の走行は地図作成時に行われ、運行管理装置50を利用したAGV10の走行は地図作成後に行われる。
図9は、3台のAGV10a、10bおよび10cが存在する移動空間Sの一例を示している。いずれのAGVも図中の奥行き方向に走行しているとする。AGV10aおよび10bは天板に載置された荷物を搬送中である。AGV10cは、前方のAGV10bに追従して走行している。なお、説明の便宜のため、図9では参照符号10a、10bおよび10cを付したが、以下では、「AGV10」と記述する。
AGV10は、天板に載置された荷物を搬送する方法以外に、自身と接続された牽引台車を利用して荷物を搬送することも可能である。図10Aは接続される前のAGV10および牽引台車5を示している。牽引台車5の各足にはキャスターが設けられている。AGV10は牽引台車5と機械的に接続される。図10Bは、接続されたAGV10および牽引台車5を示している。AGV10が走行すると、牽引台車5はAGV10に牽引される。牽引台車5を牽引することにより、AGV10は、牽引台車5に載置された荷物を搬送できる。
AGV10と牽引台車5との接続方法は任意である。ここでは一例を説明する。AGV10の天板にはプレート6が固定されている。牽引台車5には、スリットを有するガイド7が設けられている。AGV10は牽引台車5に接近し、プレート6をガイド7のスリットに差し込む。差し込みが完了すると、AGV10は、図示されない電磁ロック式ピンをプレート6およびガイド7に貫通させ、電磁ロックをかける。これにより、AGV10と牽引台車5とが物理的に接続される。
再び図8を参照する。各AGV10と端末装置20とは、たとえば1対1で接続されてBluetooth(登録商標)規格に準拠した通信を行うことができる。各AGV10と端末装置20とは、1または複数のアクセスポイント2を利用してWi−Fi(登録商標)に準拠した通信を行うこともできる。複数のアクセスポイント2は、たとえばスイッチングハブ3を介して互いに接続されている。図8には2台のアクセスポイント2a、2bが記載されている。AGV10はアクセスポイント2aと無線で接続されている。端末装置20はアクセスポイント2bと無線で接続されている。AGV10が送信したデータはアクセスポイント2aで受信され、スイッチングハブ3を介してアクセスポイント2bに転送され、アクセスポイント2bから端末装置20に送信される。また、端末装置20が送信したデータは、アクセスポイント2bで受信され、スイッチングハブ3を介してアクセスポイント2aに転送され、アクセスポイント2aからAGV10に送信される。これにより、AGV10および端末装置20の間の双方向通信が実現される。複数のアクセスポイント2はスイッチングハブ3を介して運行管理装置50とも接続されている。これにより、運行管理装置50と各AGV10との間でも双方向通信が実現される。
(2)環境地図の作成
自己位置を推定しながらAGV10が走行できるようにするため、移動空間S内の地図が作成される。AGV10には位置推定装置およびレーザレンジファインダが搭載されており、レーザレンジファインダの出力を利用して地図を作成できる。
AGV10は、ユーザの操作によってデータ取得モードに遷移する。データ取得モードにおいて、AGV10はレーザレンジファインダを用いたセンサデータの取得を開始する。レーザレンジファインダは周期的にたとえば赤外線または可視光のレーザビームを周囲に放射して周囲の空間Sをスキャンする。レーザビームは、たとえば、壁、柱等の構造物、床の上に置かれた物体等の表面で反射される。レーザレンジファインダは、レーザビームの反射光を受けて各反射点までの距離を計算し、各反射点の位置が示された測定結果のデータを出力する。各反射点の位置には、反射光の到来方向および距離が反映されている。測定結果のデータは「計測データ」または「センサデータ」と呼ばれることがある。
位置推定装置は、センサデータを記憶装置に蓄積する。移動空間S内のセンサデータの取得が完了すると、記憶装置に蓄積されたセンサデータが外部装置に送信される。外部装置は、たとえば信号処理プロセッサを有し、かつ、地図作成プログラムがインストールされたコンピュータである。
外部装置の信号処理プロセッサは、スキャンごとに得られたセンサデータ同士を重ね合わせる。信号処理プロセッサが重ね合わせる処理を繰り返し行うことにより、空間Sの地図を作成することができる。外部装置は、作成した地図のデータをAGV10に送信する。AGV10は、作成した地図のデータを内部の記憶装置に保存する。外部装置は、運行管理装置50であってもよいし、他の装置であってもよい。
外部装置ではなくAGV10が地図の作成を行ってもよい。上述した外部装置の信号処理プロセッサが行った処理を、AGV10のマイクロコントローラユニット(マイコン)などの回路が行えばよい。AGV10内で地図を作成する場合には、蓄積されたセンサデータを外部装置に送信する必要が無くなる。センサデータのデータ容量は一般には大きいと考えられる。センサデータを外部装置に送信する必要がないため、通信回線の占有を回避できる。
なお、センサデータを取得するための移動空間S内の移動は、ユーザの操作に従ってAGV10が走行することによって実現し得る。たとえば、AGV10は、端末装置20を介して無線でユーザから前後左右の各方向への移動を指示する走行指令を受け取る。AGV10は走行指令にしたがって移動空間S内を前後左右に走行し、地図を作成する。AGV10がジョイスティック等の操縦装置と有線で接続されている場合には、当該操縦装置からの制御信号にしたがって移動空間S内を前後左右に走行し、地図を作成してもよい。レーザレンジファインダを搭載した計測台車を人が押し歩くことによってセンサデータを取得してもよい。
なお、図8および図9には複数台のAGV10が示されているが、AGVは1台であってもよい。複数台のAGV10が存在する場合、ユーザ1は端末装置20を利用して、登録された複数のAGVのうちから一台のAGV10を選択して、移動空間Sの地図を作成させることができる。
地図が作成されると、以後、各AGV10は当該地図を利用して自己位置を推定しながら自動走行することができる。自己位置を推定する処理の説明は後述する。
(3)AGVの構成
図11は、本実施形態にかかる例示的なAGV10の外観図である。
AGV10は、2つの駆動輪11aおよび11bと、4つのキャスター11c、11d、11eおよび11fと、フレーム12と、搬送テーブル13と、走行制御装置14と、レーザレンジファインダ15とを有する。2つの駆動輪11aおよび11bは、AGV10の右側および左側にそれぞれ設けられている。4つのキャスター11c、11d、11eおよび11fは、AGV10の4隅に配置されている。なお、AGV10は、2つの駆動輪11aおよび11bに接続される複数のモータも有するが、複数のモータは図14には示されていない。また、図14には、AGV10の右側に位置する1つの駆動輪11aおよび2つのキャスター11cおよび11eと、左後部に位置するキャスター11fとが示されているが、左側の駆動輪11bおよび左前部のキャスター11dはフレーム12の蔭に隠れているため明示されていない。4つのキャスター11c、11d、11eおよび11fは、自由に旋回することができる。以下の説明では、駆動輪11aおよび駆動輪11bを、それぞれ車輪11aおよび車輪11bとも称する。
AGV10は、さらに、障害物を検知するための少なくとも1つの障害物センサ19を備えている。図11の例では、フレーム12の4隅に4つの障害物センサ19が設けられている。障害物センサ19の個数および配置は、図11の例とは異なっていてもよい。障害物センサ19は、たとえば、赤外線センサ、超音波センサ、またはステレオカメラなどの、距離計測が可能な装置であり得る。障害物センサ19が赤外線センサである場合、たとえば一定時間ごとに赤外線を出射し、反射された赤外線が戻ってくるまでの時間を計測することにより、一定距離以内に存在する障害物を検知することができる。AGV10は、少なくとも1つの障害物センサ19から出力された信号に基づいて経路上の障害物を検知したとき、その障害物を回避する動作を行ってもよい。
走行制御装置14は、AGV10の動作を制御する装置であり、主としてマイコン(後述)を含む集積回路、電子部品およびそれらが搭載された基板を含む。走行制御装置14は、上述した端末装置20とのデータの送受信、および、前処理演算を行う。
レーザレンジファインダ15は、たとえば赤外線または可視光のレーザビーム15aを放射し、当該レーザビーム15aの反射光を検出することにより、反射点までの距離を測定する光学機器である。本実施形態では、AGV10のレーザレンジファインダ15は、たとえばAGV10の正面を基準として左右135度(合計270度)の範囲の空間に、0.25度ごとに方向を変化させながらパルス状のレーザビーム15aを放射し、各レーザビーム15aの反射光を検出する。これにより、0.25度ごと、合計1081ステップ分の角度で決まる方向における反射点までの距離のデータを得ることができる。なお、本実施形態では、レーザレンジファインダ15が行う周囲の空間のスキャンは実質的に床面に平行であり、平面的(二次元的)である。しかしながら、レーザレンジファインダ15は高さ方向のスキャンを行ってもよい。
AGV10の位置および姿勢(向き)と、レーザレンジファインダ15のスキャン結果とにより、AGV10は、空間Sの地図を作成することができる。地図には、AGVの周囲の壁、柱等の構造物、床の上に載置された物体の配置が反映され得る。地図のデータは、AGV10内に設けられた記憶装置に格納される。
一般に、移動体の位置および姿勢は、ポーズ(pose)と呼ばれる。二次元面内における移動体の位置および姿勢は、XY直交座標系における位置座標(x, y)と、X軸に対する角度θによって表現される。AGV10の位置および姿勢、すなわちポーズ(x, y, θ)を、以下、単に「位置」と呼ぶことがある。
レーザビーム15aの放射位置から見た反射点の位置は、角度および距離によって決定される極座標を用いて表現され得る。本実施形態では、レーザレンジファインダ15は極座標で表現されたセンサデータを出力する。ただし、レーザレンジファインダ15は、極座標で表現された位置を直交座標に変換して出力してもよい。
レーザレンジファインダの構造および動作原理は公知であるため、本明細書ではこれ以上の詳細な説明は省略する。レーザレンジファインダ15によって検出され得る物体の例は、人、荷物、棚、壁である。
レーザレンジファインダ15は、周囲の空間をセンシングしてセンサデータを取得するための外界センサの一例である。そのような外界センサの他の例としては、イメージセンサおよび超音波センサが考えられる。
走行制御装置14は、レーザレンジファインダ15の測定結果と、自身が保持する地図データとを比較して、自身の現在位置を推定することができる。なお、保持されている地図データは、他のAGV10が作成した地図データであってもよい。
図12Aは、AGV10の第1のハードウェア構成例を示している。また図12Aは、走行制御装置14の具体的な構成も示している。
AGV10は、走行制御装置14と、レーザレンジファインダ15と、2台のモータ16aおよび16bと、駆動装置17と、車輪11aおよび11bと、2つのロータリエンコーダ18aおよび18bとを備えている。
走行制御装置14は、マイコン14aと、メモリ14bと、記憶装置14cと、通信回路14dと、位置推定装置14eとを有している。マイコン14a、メモリ14b、記憶装置14c、通信回路14dおよび位置推定装置14eは通信バス14fで接続されており、相互にデータを授受することが可能である。レーザレンジファインダ15もまた通信インタフェース(図示せず)を介して通信バス14fに接続されており、計測結果である計測データを、マイコン14a、位置推定装置14eおよび/またはメモリ14bに送信する。マイコン14aは、図1に示す制御回路105および第2位置推定装置109としての機能を有する。
マイコン14aは、走行制御装置14を含むAGV10の全体を制御するための演算を行うプロセッサまたは制御回路(コンピュータ)である。典型的にはマイコン14aは半導体集積回路である。マイコン14aは、制御信号であるPWM(Pulse Width Modulation)信号を駆動装置17に送信して駆動装置17を制御し、モータに印加する電圧を調整させる。これによりモータ16aおよび16bの各々が所望の回転速度で回転する。
左右のモータ16aおよび16bの駆動を制御する1つ以上の制御回路(たとえばマイコン)を、マイコン14aとは独立して設けてもよい。たとえば、モータ駆動装置17が、モータ16aおよび16bの駆動をそれぞれ制御する2つのマイコンを備えていてもよい。それらの2つのマイコンは、エンコーダ18aおよび18bから出力されたエンコーダ情報を用いた座標計算をそれぞれ行い、所与の初期位置からのAGV10の移動距離を推定してもよい。また、当該2つのマイコンは、エンコーダ情報を利用してモータ駆動回路17aおよび17bを制御してもよい。その場合、モータ駆動装置17における2つのマイコンが「第2位置推定装置」として機能する。
メモリ14bは、マイコン14aが実行するコンピュータプログラムを記憶する、揮発性の記憶装置である。メモリ14bは、マイコン14aおよび位置推定装置14eが演算を行う際のワークメモリとしても利用され得る。
記憶装置14cは、不揮発性の半導体メモリ装置である。ただし、記憶装置14cは、ハードディスクに代表される磁気記録媒体、または、光ディスクに代表される光学式記録媒体であってもよい。さらに、記憶装置14cは、いずれかの記録媒体にデータを書き込みおよび/または読み出すためのヘッド装置および当該ヘッド装置の制御装置を含んでもよい。
記憶装置14cは、走行する空間Sの地図データM、および、1または複数の走行経路のデータ(走行経路データ)Rを記憶する。地図データMは、AGV10が地図作成モードで動作することによって作成され記憶装置14cに記憶される。走行経路データRは、地図データMが作成された後に外部から送信される。本実施形態では、地図データMおよび走行経路データRは同じ記憶装置14cに記憶されているが、異なる記憶装置に記憶されてもよい。
走行経路データRの例を説明する。
端末装置20がタブレットコンピュータである場合には、AGV10はタブレットコンピュータから走行経路を示す走行経路データRを受信する。このときの走行経路データRは、複数のマーカの位置を示すマーカデータを含む。「マーカ」は走行するAGV10の通過位置(経由点)を示す。走行経路データRは、走行開始位置を示す開始マーカおよび走行終了位置を示す終了マーカの位置情報を少なくとも含む。走行経路データRは、さらに、1以上の中間経由点のマーカの位置情報を含んでもよい。走行経路が1以上の中間経由点を含む場合には、開始マーカから、当該走行経由点を順に経由して終了マーカに至る経路が、走行経路として定義される。各マーカのデータは、そのマーカの座標データに加えて、次のマーカに移動するまでのAGV10の向き(角度)および走行速度のデータを含み得る。AGV10が各マーカの位置で一旦停止し、自己位置推定および端末装置20への通知などを行う場合には、各マーカのデータは、当該走行速度に達するまでの加速に要する加速時間、および/または、当該走行速度から次のマーカの位置で停止するまでの減速に要する減速時間のデータを含み得る。
端末装置20ではなく運行管理装置50(たとえば、PCおよび/またはサーバコンピュータ)がAGV10の移動を制御してもよい。その場合には、運行管理装置50は、AGV10がマーカに到達する度に、次のマーカへの移動をAGV10に指示してもよい。たとえば、AGV10は、運行管理装置50から、次に向かうべき目的位置の座標データ、または、当該目的位置までの距離および進むべき角度のデータを、走行経路を示す走行経路データRとして受信する。
AGV10は、作成された地図と走行中に取得されたレーザレンジファインダ15が出力したセンサデータとを利用して自己位置を推定しながら、記憶された走行経路に沿って走行することができる。
通信回路14dは、たとえば、Bluetooth(登録商標)および/またはWi−Fi(登録商標)規格に準拠した無線通信を行う無線通信回路である。いずれの規格も、2.4GHz帯の周波数を利用した無線通信規格を含む。たとえばAGV10を走行させて地図を作成するモードでは、通信回路14dは、Bluetooth(登録商標)規格に準拠した無線通信を行い、1対1で端末装置20と通信する。
位置推定装置14eは、地図の作成処理、および、走行時には自己位置の推定処理を行う。位置推定装置14eは、AGV10の位置および姿勢とレーザレンジファインダのスキャン結果とにより、移動空間Sの地図を作成する。走行時には、位置推定装置14eは、レーザレンジファインダ15からセンサデータを受け取り、また、記憶装置14cに記憶された地図データMを読み出す。レーザレンジファインダ15のスキャン結果から作成された局所的地図データ(センサデータ)を、より広範囲の地図データMとのマッチングを行うことにより、地図データM上における自己位置(x, y, θ)を同定する。位置推定装置14eは、局所的地図データが地図データMに一致した程度を表す「信頼度」のデータを生成する。自己位置(x, y, θ)、および、信頼度の各データは、AGV10から端末装置20または運行管理装置50に送信され得る。端末装置20または運行管理装置50は、自己位置(x, y, θ)、および、信頼度の各データを受信して、内蔵または接続された表示装置に表示することができる。
本実施形態では、マイコン14aと位置推定装置14eとは別個の構成要素であるとしているが、これは一例である。マイコン14aおよび位置推定装置14eの各動作を独立して行うことが可能な1つのチップ回路または半導体集積回路であってもよい。図15Aには、マイコン14aおよび位置推定装置14eを包括するチップ回路14gが示されている。以下では、マイコン14aおよび位置推定装置14eが別個独立に設けられている例を説明する。
2台のモータ16aおよび16bは、それぞれ2つの車輪11aおよび11bに取り付けられ、各車輪を回転させる。つまり、2つの車輪11aおよび11bはそれぞれ駆動輪である。本実施形態では、モータ16aおよびモータ16bは、それぞれAGV10の右輪および左輪を駆動する。
移動体10は、さらに、車輪11aおよび11bの回転位置または回転速度を測定するエンコーダユニット18をさらに備えている。エンコーダユニット18は、第1ロータリエンコーダ18aおよび第2ロータリエンコーダ18bを含む。第1ロータリエンコーダ18aは、モータ16aから車輪11aまでの動力伝達機構のいずれかの位置における回転を計測する。第2ロータリエンコーダ18bは、モータ16bから車輪11bまでの動力伝達機構のいずれかの位置における回転を計測する。エンコーダユニット18は、ロータリエンコーダ18aおよび18bによって取得された信号を、マイコン14aに送信する。マイコン14aは、位置推定装置14eから受信した信号だけでなく、エンコーダユニット18から受信した信号を利用して、移動体10の移動を制御してもよい。
駆動装置17は、2台のモータ16aおよび16bの各々に印加される電圧を調整するためのモータ駆動回路17aおよび17bを有する。モータ駆動回路17aおよび17bの各々はいわゆるインバータ回路を含む。モータ駆動回路17aおよび17bは、マイコン14aまたはモータ駆動回路17a内のマイコンから送信されたPWM信号によって各モータに流れる電流をオンまたはオフし、それによりモータに印加される電圧を調整する。
図12Bは、AGV10の第2のハードウェア構成例を示している。第2のハードウェア構成例は、レーザ測位システム14hを有する点、および、マイコン14aが各構成要素と1対1で接続されている点において、第1のハードウェア構成例(図12A)と相違する。
レーザ測位システム14hは、位置推定装置14eおよびレーザレンジファインダ15を有する。位置推定装置14eおよびレーザレンジファインダ15は、たとえばイーサネット(登録商標)ケーブルで接続されている。位置推定装置14eおよびレーザレンジファインダ15の各動作は上述した通りである。レーザ測位システム14hは、AGV10のポーズ(x, y, θ)を示す情報をマイコン14aに出力する。
マイコン14aは、種々の汎用I/Oインタフェースまたは汎用入出力ポート(図示せず)を有している。マイコン14aは、通信回路14d、レーザ測位システム14h等の、走行制御装置14内の他の構成要素と、当該汎用入出力ポートを介して直接接続されている。
図12Bに関して上述した構成以外は、図12Aの構成と共通である。よって共通の構成の説明は省略する。
本開示の実施形態におけるAGV10は、図示されていないバンパースイッチなどのセーフティセンサを備えていてもよい。AGV10は、ジャイロセンサなどの慣性計測装置を備えていてもよい。ロータリエンコーダ18a、18bまたは慣性計測装置などの内界センサによる測定データを利用すれば、AGV10の移動距離および姿勢の変化量(角度)を推定することができる。これらの距離および角度の推定値は、オドメトリデータまたはオドメトリ情報と呼ばれ、位置推定装置14eによって得られる位置および姿勢の情報を補助する機能を発揮し得る。オドメトリデータは、位置推定装置14eによって得られる位置および姿勢の推定値の信頼性が低い場合、または地図の切り替え動作を行うときなどに使用される。
(4)地図データ
図13A〜図13Fは、センサデータを取得しながら移動するAGV10を模式的に示す。ユーザ1は、端末装置20を操作しながらマニュアルでAGV10を移動させてもよい。あるいは、図12Aおよび6Bに示される走行制御装置14を備えるユニット、または、AGV10そのものを台車に載置し、台車をユーザ1が手で押す、または牽くことによってセンサデータを取得してもよい。
図13Aには、レーザレンジファインダ15を用いて周囲の空間をスキャンするAGV10が示されている。所定のステップ角毎にレーザビームが放射され、スキャンが行われる。なお、図示されたスキャン範囲は模式的に示した例であり、上述した合計270度のスキャン範囲とは異なっている。
図13A〜図13Fの各々では、レーザビームの反射点の位置が、記号「・」で表される複数の黒点4を用いて模式的に示されている。レーザビームのスキャンは、レーザレンジファインダ15の位置および姿勢が変化する間に短い周期で実行される。このため、現実の反射点の個数は、図示されている反射点4の個数よも遥かに多い。位置推定装置14eは、走行に伴って得られる黒点4の位置を、たとえばメモリ14bに蓄積する。AGV10が走行しながらスキャンを継続して行うことにより、地図データが徐々に完成されてゆく。図13Bから図13Eでは、簡略化のためスキャン範囲のみが示されている。当該スキャン範囲は例示であり、上述した合計270度の例とは異なる。
地図は、地図作成に必要な量のセンサデータを取得した後、そのセンサデータに基づいて、このAGV10内のマイコン14aまたは外部のコンピュータを用いて作成してもよい。あるいは、移動しつつあるAGV10が取得したセンサデータに基づいてリアルタイムで地図を作成してもよい。
図13Fは、完成した地図80の一部を模式的に示す。図13Fに示される地図では、レーザビームの反射点の集まりに相当する点群(Point Cloud)によって自由空間が仕切られている。地図の他の例は、物体が占有している空間と自由空間とをグリッド単位で区別する占有格子地図である。位置推定装置14eは、地図のデータ(地図データM)をメモリ14bまたは記憶装置14cに蓄積する。なお図示されている黒点の数または密度は一例である。
こうして得られた地図データは、複数のAGV10によって共有され得る。
AGV10が地図データに基づいて自己位置を推定するアルゴリズムの典型例は、ICP(Iterative Closest Point)マッチングである。前述したように、レーザレンジファインダ15のスキャン結果から作成された局所的地図データ(センサデータ)を、より広範囲の地図データMとのマッチングを行うことにより、地図データM上における自己位置(x, y, θ)を推定することができる。
AGV10が走行するエリアが広い場合、地図データMのデータ量が多くなる。そのため、地図の作成時間が増大したり、自己位置推定に多大な時間を要するなどの不都合が生じる可能性がある。そのような不都合が生じる場合には、地図データMを、複数の部分地図のデータに分けて作成および記録してもよい。
図14は、4つの部分地図データM1、M2、M3、M4の組み合わせによって1つの工場の1フロアの全域がカバーされる例を示している。この例では、1つの部分地図データは50m×50mの領域をカバーしている。X方向およびY方向のそれぞれにおいて隣接する2つの地図の境界部分に、幅5mの矩形の重複領域が設けられている。この重複領域を「地図切替エリア」と呼ぶ。1つの部分地図を参照しながら走行しているAGV10が地図切替エリアに到達すると、隣接する他の部分地図を参照する走行に切り替える。部分地図の枚数は4枚に限らず、AGV10が走行するフロアの面積、地図作成および自己位置推定を実行するコンピュータの性能に応じて適宜設定してよい。部分地図データのサイズおよび重複領域の幅も、上記の例に限定されず、任意に設定してよい。
(5)運行管理装置の構成例
図15は、運行管理装置50のハードウェア構成例を示している。運行管理装置50は、CPU51と、メモリ52と、位置データベース(位置DB)53と、通信回路54と、地図データベース(地図DB)55と、画像処理回路56とを有する。
CPU51、メモリ52、位置DB53、通信回路54、地図DB55および画像処理回路56は通信バス57で接続されており、相互にデータを授受することが可能である。
CPU51は、運行管理装置50の動作を制御する信号処理回路(コンピュータ)である。典型的にはCPU51は半導体集積回路である。CPU51は、図1に示す第1制御回路51として機能する。
メモリ52は、CPU51が実行するコンピュータプログラムを記憶する、揮発性の記憶装置である。メモリ52は、CPU51が演算を行う際のワークメモリとしても利用され得る。
位置DB53は、各AGV10の行き先となり得る各位置を示す位置データを格納する。位置データは、たとえば管理者によって工場内に仮想的に設定された座標によって表され得る。位置データは管理者によって決定される。
通信回路54は、たとえばイーサネット(登録商標)規格に準拠した有線通信を行う。通信回路54はアクセスポイント2(図1)と有線で接続されており、アクセスポイント2を介して、AGV10と通信することができる。通信回路54は、AGV10に送信すべきデータを、バス57を介してCPU51から受信する。また通信回路54は、AGV10から受信したデータ(通知)を、バス57を介してCPU51および/またはメモリ52に送信する。
地図DB55は、AGV10が走行する工場等の内部の地図のデータを格納する。当該地図は、地図80(図13F)と同じであってもよいし、異なっていてもよい。各AGV10の位置と1対1で対応関係を有する地図であれば、データの形式は問わない。たとえば地図DB55に格納される地図は、CADによって作成された地図であってもよい。
位置DB53および地図DB55は、不揮発性の半導体メモリ上に構築されてもよいし、ハードディスクに代表される磁気記録媒体、または光ディスクに代表される光学式記録媒体上に構築されてもよい。
画像処理回路56はモニタ58に表示される映像のデータを生成する回路である。画像処理回路56は、専ら、管理者が運行管理装置50を操作する際に動作する。本実施形態では特にこれ以上の詳細な説明は省略する。なお、モニタ59は運行管理装置50と一体化されていてもよい。また画像処理回路56の処理をCPU51が行ってもよい。
(6)運行管理装置の動作
図16を参照しながら、運行管理装置50の動作の概要を説明する。図16は、運行管理装置50によって決定されたAGV10の移動経路の一例を模式的に示す図である。
AGV10および運行管理装置50の動作の概要は以下のとおりである。以下では、あるAGV10が現在、地点(マーカ)M1におり、幾つかの位置を通過して、最終的な目的地であるマーカMn+1(n:1以上の正の整数)まで走行する例を説明する。なお、位置DB53にはマーカM1の次に通過すべきマーカM2、マーカM2の次に通過すべきマーカM3等の各位置を示す座標データが記録されている。
運行管理装置50のCPU51は、位置DB53を参照してマーカM2の座標データを読み出し、マーカM2に向かわせる走行指令を生成する。通信回路54は、アクセスポイント2を介して走行指令をAGV10に送信する。
CPU51は、AGV10から、アクセスポイント2を介して、定期的に現在位置および姿勢を示すデータを受信する。こうして運行管理装置50は、各AGV10の位置をトラッキングすることができる。CPU51は、AGV10の現在位置がマーカM2に一致したと判定すると、マーカM3の座標データを読み出し、マーカM3に向かわせる走行指令を生成してAGV10に送信する。つまり運行管理装置50は、AGV10がある位置に到達したと判定すると、次に通過すべき位置に向かわせる走行指令を送信する。これにより、AGV10は最終的な目的地であるマーカMn+1に到達することができる。
上記の包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラム、または記録媒体によって実現されてもよい。あるいは、システム、装置、方法、集積回路、コンピュータプログラム、および記録媒体の任意の組み合わせによって実現されてもよい。