説明

経路探索装置、経路探索方法、及び自律移動体

【課題】並列演算を用いて経路探索を行う際に、経路情報を効率的に取得すること。
【解決手段】本発明に係る経路探索装置1は、並列演算部112と、コントローラ部111と、を備える。並列演算部112は並列演算により領域の評価値を算出する。並列演算器112_nは、各領域の評価値に基づいて近傍に存在する領域から一の選択領域を選択する領域選択部114、自領域から選択領域への方向を示す経路方向情報を生成する経路方向情報生成部115、経路方向情報を受信する受信部116、選択領域の並列演算器112_nに経路方向情報を送信した後に、生成した経路方向情報を送信する送信部118を備える。コントローラ部111は、移動終点の並列演算器112_nから経路方向情報の送信を最初に開始させた後に、並列演算部112内で伝播した経路方向情報の系列を移動始点の並列演算器112_nから取得する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は経路探索装置、経路探索方法、及び自律移動体に関し、特に、並列演算を用いて経路探索を行う際に、探索した経路情報を効率的に取得可能な経路探索装置、経路探索方法、及び自律移動体に関する。
【背景技術】
【0002】
近年、始点から終点へと至る経路を探索し、その探索した経路に従って自律的に移動する自律移動体が開発されている。経路を探索する手法としては、A*(エースター)アルゴリズムやダイキストラ法を用いる手法が良く知られている。
【0003】
このような経路探索手法は、通常、ノイマン型コンピュータを用いて実現される。ノイマン型コンピュータは、互いに独立したユニットとしてのメモリ及び演算部を搭載し、メモリ上に経路探索に係る計算過程を保存しながら処理を行う。すなわち、演算部はメモリへとアクセスを行う際に、経路探索処理に係る処理データをメモリとの間で逐次通信する必要がある。
【0004】
一方、ノイマン型コンピュータを用いた場合と比較して、相互に接続された複数の演算器を用いて並列計算を行うことで、高速に経路探索を行う手法が提案されている(例えば、特許文献1乃至3)。
【0005】
特許文献1には、並列計算機を用いた巡回セールスマン問題解法処理システムが開示されている。特許文献1に開示される解法処理システムでは、巡回対象の都市に対応させた各セルは、メッセージを受信した際にセル情報を追加し、ネットワークを介して隣接セルへメッセージを送信するメッセージ送信手段を備えている。また、最初にメッセージを送信するスタートセルは、受信したメッセージが全ての都市を経由して一番早くスタートセルに戻ってきたメッセージを検出すると、そのメッセージが最短経路を経由したメッセージであるとして経路探索処理を終了させるメッセージ監視手段を備えている。
【0006】
特許文献2には、巡回セールスマン問題処理装置が開示されている。特許文献2では、並列計算による巡回セールスマン問題処理装置において、都市座標をセル数に応じて分割・割り当てる全体問題処理手段と、階層化した都市データを各セルに割り当てた部分問題を処理して解を求める部分問題処理手段を有する。
【0007】
特許文献3には、経路探索システムが開示されている。特許文献4に開示される経路探索システムは、移動領域を複数の領域に分割する領域分割部と、分割された複数の領域に対応し、それぞれの領域の評価値を算出する複数の評価値算出部と、算出された評価値に基づいて経路を決定する経路決定部とを備えている。評価値算出部は、近傍に存在する領域の評価値と、その近傍領域から自領域までの移動コストに基づいて評価値を算出する評価値処理部を有している。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開平8−278889号公報
【特許文献2】特開平8−286920号公報
【特許文献3】特開2009−19932号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、逐次的に処理を行うノイマン型コンピュータを用いて経路探索を行う場合には、演算部がメインメモリへと頻繁にアクセスする必要があり、経路探索自体に要する処理ではなく、メモリへのデータ参照のために多くの計算コストを消費するという問題がある。ノイマン型のコンピュータでは、メモリ及び演算部というそれぞれ独立したユニット構成であるために、両者間のアクセスが発生する。このため、メインメモリへのアクセス速度が遅い場合や、メインメモリへのアクセス頻度が多くなる場合、さらには、メインメモリに保持するデータ量が多くなる場合などには、コンピュータのプロセッサ自体の計算速度に比してメモリアクセス速度が低速なものとなり、メモリアクセス速度が、経路探索処理全体に係る処理能力の制約条件となってしまう。
【0010】
また、特許文献1及び2に開示される技術では、全都市を一巡する経路のうちで最短な経路を探索する巡回セールスマン問題を対象とするものである。このため、特許文献1及び2に開示される経路探索手法を用いては、任意の二地点間で最適な経路を探索することはできない。さらに、例えば特許文献1に開示される巡回セールスマン問題解法処理システムでは、各セルが当該セルまでの経路探索の履歴を保持して、保持する履歴情報をメッセージとして隣接セルに送信する。このため、巡回対象となる都市数の増加に伴って保持及び送信するメッセージ量が増加し、システム全体の処理が遅延するという問題がある。
【0011】
特許文献3に開示される技術では、各領域の評価値処理部がそれぞれ評価値を算出することで、経路探索空間が広大な場合においても、高速に最適な経路を探索することができる。しかし、特許文献3に開示される技術では、経路探索に係る処理のうち、各領域の評価値を高速に算出することは可能であるが、算出した評価値に基づいて決定される経路情報を効率よく取得することができないという問題がある。具体的には、特許文献3に開示される技術では、並列演算を行う各評価値算出ユニットにより各領域の評価値を算出した後に、移動始点を含む領域から開始して、隣接する近傍領域において最小の評価値を持つ領域を経路として選択していく(段落0059など参照。)。ここで、選択された領域の系列である経路情報を取得するためには、経路上の全ての領域に逐次的にアクセスを行う必要があり、さらに、各領域にアクセスを行う都度、近傍領域の選択処理を行う必要があるため、効率よく経路情報を取得することができない。
【0012】
従って、本発明は、互いに接続された複数の並列演算器から構成される並列演算部を用いて経路探索を行う技術において、並列演算部を統括する上位のコントローラ部が、探索した経路情報を効率的に取得することができる経路探索装置、経路探索方法、及び自律移動体を提供することを目的とする。
【課題を解決するための手段】
【0013】
本発明に係る経路探索装置は、経路探索領域内に存在する第1の地点から第2の地点に到達する経路を探索する経路探索装置であって、前記経路探索領域が複数の領域に分割され、分割されたそれぞれの領域に対応する複数の並列演算器から構成される並列演算部と、前記並列演算部を統括するコントローラ部と、を備え、前記並列演算部は、前記複数の並列演算器が並列演算することで、対応するそれぞれの領域の評価値を算出し、前記並列演算器は、前記並列演算することで算出した各領域の評価値に基づいて、近傍に存在する領域から一の選択領域を選択する領域選択手段と、自身に対応する領域から前記選択領域への方向を示す経路方向情報を生成する経路方向情報生成手段と、他の前記並列演算器から送信された経路方向情報を受信する受信手段と、前記選択領域に対応する前記並列演算器に対して、前記受信手段で受信した前記経路方向情報を送信した後に、前記経路方向情報生成手段で生成した前記経路方向情報を送信する送信手段と、を備え、前記コントローラ部は、
前記第2の地点を含む領域に対応する第2の並列演算器から前記経路方向情報の送信を最初に開始させた後に、前記並列演算部内で伝播した前記経路方向情報の系列を、前記第1の地点を含む領域に対応する第1の並列演算器から取得することで、前記経路を探索するものである。
【0014】
このように、各並列演算器間で局所的に経路方向情報を送受信することで、並列演算部内において、第2の地点の並列演算器から第1の地点の並列演算器へと向けて経路方向情報を伝播することができるため、上位のコントローラ部は、第1の地点の並列演算器のみにアクセスすることで、経路である経路方向情報の系列を取得することができる。従って、並列演算を用いて経路探索を行う際に、探索した経路情報を効率的に取得することができる。
【0015】
また、前記並列演算器は、前記受信手段で受信した他の前記並列演算器から送信された経路方向情報を保持する受信バッファと、前記受信バッファに保持した前記経路方向情報又は前記経路方向情報生成手段で生成した前記経路方向情報を送信するために保持する送信バッファと、を更に備え、前記送信手段は、他の前記並列演算器から送信された経路方向情報を受信した場合には、前記受信バッファに保持した前記経路方向情報を、前記送信バッファを介して前記選択領域に対応する前記並列演算器に送信し、他の前記並列演算器から送信された経路方向情報を所定の期間受信しなかった場合には、前記経路方向情報生成手段で生成した前記経路方向情報を、前記送信バッファを介して前記選択領域に対応する前記並列演算器に送信するようにしてもよい。このように、各並列演算器は、他の並列演算器から受信した経路方向情報の転送と、自ら生成した経路方向情報を送信するため、受信バッファには、経路方向情報の系列全体を保持せずに、受信した経路方向情報のみを保持すればよい。
【0016】
さらにまた、前記領域選択手段は、前記並列演算することで算出した各領域の評価値に基づいて、近傍に存在する領域から、前記第1の地点を含む領域により近づく方向の一の選択領域を選択するようにしてもよい。
【0017】
また、前記並列演算器は、近傍に存在する領域の評価値と、当該近傍領域から自身に対応する領域までの移動コストに基づいて評価値を算出する評価値処理部を更に備えるようにしてもよい。
【0018】
本発明に係る経路探索方法は、経路探索領域が複数の領域に分割され、分割されたそれぞれの領域に対応する複数の並列演算器から構成される並列演算部と、前記並列演算部を統括するコントローラ部と、を備える移動体が、前記経路探索領域内に存在する第1の地点から第2の地点に到達する経路を探索する経路探索方法であって、前記並列演算部が、前記複数の並列演算器が並列演算することで、対応するそれぞれの領域の評価値を算出し、前記並列演算器が、前記並列演算することで算出した各領域の評価値に基づいて、近傍に存在する領域から一の選択領域を選択する領域選択ステップと、自身に対応する領域から前記選択領域への方向を示す経路方向情報を生成する経路方向情報生成ステップと、他の前記並列演算器から送信された経路方向情報を受信する受信ステップと、前記選択領域に対応する前記並列演算器に対して、前記受信した前記経路方向情報を送信した後に、前記生成した前記経路方向情報を送信する送信ステップと、を有し、前記コントローラ部が、前記第2の地点を含む領域に対応する第2の並列演算器から前記経路方向情報の送信を最初に開始させた後に、前記並列演算部内で伝播した前記経路方向情報の系列を、前記第1の地点を含む領域に対応する第1の並列演算器から取得することで、前記経路を探索するものである。
【0019】
本発明に係る自律移動体は、経路探索領域内に存在する第1の地点から第2の地点に到達する経路を探索する自律移動体であって、前記経路探索領域が複数の領域に分割され、分割されたそれぞれの領域に対応する複数の並列演算器から構成される並列演算部と、前記並列演算部を統括するコントローラ部と、を備え、前記並列演算部は、近傍に存在する領域の評価値と、当該近傍領域から自身に対応する領域までの移動コストに基づいて、対応するそれぞれの領域の評価値を算出し、前記並列演算器は、前記並列演算することで算出した各領域の評価値に基づいて、近傍に存在する領域のうち最も小さい評価値を有する一の選択領域を選択する領域選択部と、自身に対応する領域から前記選択領域への方向を示す経路方向情報を生成する経路方向情報生成部と、他の前記並列演算器から送信された経路方向情報を受信する受信部と、前記選択領域に対応する前記並列演算器に対して、前記受信部で受信した前記経路方向情報を送信した後に、前記経路方向情報生成部で生成した前記経路方向情報を送信する送信部と、を備え、前記コントローラ部は、前記第2の地点を含む領域に対応する第2の並列演算器から前記経路方向情報の送信を最初に開始させた後に、前記並列演算部内で伝播した前記経路方向情報の系列を、前記第1の地点を含む領域に対応する第1の並列演算器から取得することで、前記経路を探索するものである。
【発明の効果】
【0020】
本発明によれば、並列演算を用いて経路探索を行う際に、探索した経路情報を効率的に取得可能な経路探索装置、経路探索方法、及び自律移動体を提供することができる。
【図面の簡単な説明】
【0021】
【図1】本発明の実施の形態1に係る経路探索装置の構成を示すブロック図である。
【図2】本発明の実施の形態1に係る経路探索領域を分割した複数の領域を示す概念図である。
【図3】本発明の実施の形態1に係る離散化された領域間の接続関係を説明するための概念図である。
【図4】本発明の実施の形態1に係る並列演算器の構成を示す概念図である。
【図5】本発明の実施の形態1に係る経路探索装置による経路探索処理の全体構成を示すフローチャートである。
【図6】本発明の実施の形態1に係る経路探索装置領域の評価値の算出処理を示すフローチャートである。
【図7】本発明の実施の形態1に係る経路探索装置による評価値算出処理の一例を説明するための図である。
【図8】本発明の実施の形態1に係る経路探索装置による経路探索結果の一例を説明するための図である。
【図9】本発明の実施の形態1に係る並列演算器における処理を説明するためのフローチャート図である。
【図10】本発明の実施の形態1に係る経路探索装置の並列演算器間で送受信されるデータ構造の一例を示す図である。
【図11】本発明の実施の形態1に係る経路探索装置による経路方向情報を説明するための図である。
【図12】本発明の実施の形態1に係る経路探索装置による経路方向情報の伝播の様子を説明するための図である。
【図13】本発明の実施の形態1に係る経路探索装置による経路方向情報の伝播の様子を説明するための図である。
【発明を実施するための形態】
【0022】
実施の形態1.
本実施の形態1では、自律移動体としてのロボットに経路探索機能を搭載した場合を例に説明する。ロボットは、例えば、それぞれ独立して回転制御される二つの車輪を備えたものでもよく、2輪よりも多い、例えば4輪走行のロボットや、1輪走行のロボット、2足歩行・4足歩行のロボットであってもよい。また、ロボットに限らず、2輪走行や4輪走行の車両にも適用できる。ロボットは、障害物を検出するセンサやカメラを備え、検出された障害物に応じて、これを避けるように経路探索を行なうようにしてもよい。
【0023】
本実施の形態1に係るロボットが備える経路探索機能によれば、並列演算することで経路探索処理を行う並列演算部内において、各並列演算器間で局所的に経路方向情報を送受信し、第2の地点の並列演算器から第1の地点の並列演算器へと向けて経路方向情報を伝播することができる。このため、並列演算部を統括する上位のコントローラ部は、第1の地点の並列演算器のみにアクセスすることで、経路である経路方向情報の系列を取得することができる。従って、並列演算を用いて経路探索を行う際に、探索した経路情報を効率的に取得することができる。尚、以下では、第1の地点をロボットが移動を開始する移動始点とし、第2の地点を移動目標地点である移動終点として説明するが、本実施の形態1に係る経路探索装置は任意の二点間の最適な経路を探索するものであり、第1の地点を移動終点とし、第2の地点を移動始点としてもよい。以下、図面を参照して本発明の実施の形態1について説明する。
【0024】
図1は、本実施の形態1に係る経路探索装置の概略構成を示すブロック図である。図1に示されるように、経路探索装置1は、経路探索処理部11と経路探索記憶部12により構成されている。経路探索処理部11は、コントローラ部111と、並列演算部112から構成されている。並列演算部112は、複数の並列演算器112_1、112_2、・・・(以下、単に並列演算器112_nと称する場合がある。)を備えている。並列演算器112_nは、それぞれ物理的に独立した演算器であって、後述する評価値算出処理などを並列に実行する。
【0025】
経路探索記憶部12には、ロボットが移動する経路探索領域全体の形状に、略一定間隔d(例えば10cm)に配置された格子点を結ぶグリッド線を仮想的に描写することで得られるグリッドマップが記憶されている。ロボットは、GPS等から得られた位置情報を、このグリッドマップ上における自己の位置に置き換えて、グリッドマップ上における自己位置を認識する。グリッドマップ上において、ロボットの自己位置に相当する場所、および目的地である移動終点、及び移動終点におけるロボットの移動方向が特定される。ロボットは、グリッドマップ上において特定された自己位置を移動始点から、目的地である移動終点までの経路を探索し、探索した経路に従って移動を行う。
【0026】
コントローラ部111は、並列演算部112を統括して制御処理を行い、経路方向情報の系列からなる経路を、並列演算部112から取得する。尚、コントローラ部111による並列演算部112の制御処理の詳細については後述する。
【0027】
また、コントローラ部111は、ロボットが移動する経路探索領域を格子状の領域に分割する分割処理を行う。ここでは、上述の略一定間隔d(例えば10cm)に配置された格子点を囲む複数の領域に分割する。図2は、経路探索領域を分割して、離散化された複数の領域Cを示す概念図である。尚、コントローラ部111による分割方法はこれに限定されない。例えば、上述の分割後の領域よりも大きな領域へと分割することで、経路探索に要する時間をより短縮することができる。
【0028】
そして、コントローラ部111は、分割した領域間の接続関係を定める。以下では、注目する領域に接続する領域を近傍領域と称する。図3は、離散化された領域間の接続関係を説明するための概念図である。図3(a)では、注目する領域Cに対して、隣接領域C乃至Cを近傍領域として定めるものである。また、図3(b)では、注目する領域Cに対して、隣接領域C乃至Cに加えて、さらに領域C乃至C16を近傍領域として定めるものである。このように、自領域に対して隣接した領域を越えた領域を近傍領域として設定可能とすることで、自領域及びそれら近傍領域間を通過する経路を作成することができる。このようにすれば、移動始点から移動終点へと至る経路の角度分解能を柔軟に設定することができ、より滑らかな経路を作成することができる。
【0029】
並列演算部112は、複数の並列演算器112_1、112_2、・・・から構成される。複数の並列演算器112_1、112_2、・・・は、コントローラ部111により分割された各領域にそれぞれ対応する。図4は、並列演算器112_nの構成を示す概念図である。図4(a)に示すように、並列演算器112_nには、少なくとも2つの評価値記憶部32_n及び評価値記憶部33_nと、状態設定用信号線34_nとが接続されている。
【0030】
尚、複数の並列演算器112_1、112_2、・・・はいずれも同一の構成を有しており、簡易な構成により経路探索装置1を構成することができる。各並列演算器112_nは、分割された各領域に一対一で対応付けてもよいし、一つの並列演算器112_nが、複数の分割された領域に対応するようにしてもよい。また、並列演算器112_nは、例えばFPGA(Field Programmable Gate Array)等のプログラム可能な装置を用いることによって容易に構成することができる。そして、図4(b)に示すように、複数の並列演算器112_nが配列され、それぞれが分割された複数の領域に対応する。このような配列構造によれば、ロボットなどに対しても容易に実装化することができる。
【0031】
状態設定用信号線34_nは、コントローラ部111からの指令を受けて、並列演算器112_nによる処理を実行可能状態又は実行不能状態に設定するための状態設定信号を並列演算器112_nへと送信する。これにより、所望の並列演算器112_nについて、評価値算出処理などを行うタイミングを調整することができる。即ち、評価値算出処理などを実行させる場合には、並列演算器112_nへと評価値算出処理を実行可能とする状態設定信号を送信し、評価値算出処理を実行させない場合には、評価値算出処理を実行不能とする状態設定信号を送信する。
【0032】
図1に戻り再び説明を続ける。並列演算器112nは、評価値処理部113と、領域選択部114と、経路方向情報生成部115と、受信部116と、受信バッファ117と、送信部118と、送信バッファ119と、を備えている。
【0033】
評価値処理部113は、近傍に存在する領域の評価値と、その近傍領域から自身に対応する領域までの移動コストとに基づいて評価値を算出する。
【0034】
領域選択部114は、並列演算することで算出した各領域の評価値に基づいて、近傍に存在する領域から一の選択領域を選択する。ここでは、領域選択部114は、近傍に存在する領域から、移動始点を含む領域により近づく方向の一の選択領域を選択する。例えば、移動が禁止される禁止領域を除く他の領域において、移動始点を含む領域の評価値を基準として、移動始点から距離が離れる領域ほど大きな値の評価値を算出した場合には、領域選択部114は、近傍に存在する領域のうち、最も小さな評価値を有する一の選択領域を選択する。尚、以下では、自領域から、移動始点を含む領域により近づく方向を上流方向と称し、また、自領域から、移動終点を含む領域により近づく方向を下流方向と称する場合がある。
【0035】
経路方向情報生成部115は、自身に対応する領域から選択領域への方向を示す経路方向情報を生成する。経路探索装置1により探索される経路は、経路方向情報の系列から構成される。
【0036】
受信部116は、他の並列演算器112_nから送信された経路方向情報を受信する。受信バッファ117は、受信部116で受信した経路方向情報を保持する。尚、受信バッファ117で保持するデータは経路方向情報に限定されず、並列演算器112_n間で送受信される他のデータの受信及び保持に利用してもよい。
【0037】
送信部118は、選択領域に対応する並列演算器112_nに対して、受信部116で受信した経路方向情報を送信した後に、経路方向情報生成部115で生成した経路方向情報を送信する。ここでは、送信部118は、他の並列演算器112_nから受信した経路方向情報を転送し終えた後に、その転送処理に続いて、経路方向情報生成部115で生成した経路方向情報を、送信バッファ119を介して選択領域に対応する並列演算器112_nに送信する。このため、送信部118は、他の並列演算器112_nから経路方向情報を受信した場合には、受信バッファ117に保持した経路方向情報を、送信バッファ119を介して選択領域に対応する並列演算器112_nに送信し、他の並列演算器112_nから経路方向情報を所定の期間受信しなかった場合には、経路方向情報生成部115で生成した経路方向情報を、送信バッファ119を介して選択領域に対応する並列演算器112_nに送信する。
【0038】
送信バッファ119は、受信バッファ117に保持した経路方向情報又は経路方向情報生成部115で生成した経路方向情報を送信するために保持する。尚、送信バッファ119で保持するデータは経路方向情報に限定されず、並列演算器112_n間で送受信される他のデータの送信及び保持に利用してもよい。
【0039】
続いて、本実施の形態1に係る経路探索装置1による経路探索処理について、図5乃至13を参照して説明する。図5は、本実施の形態1に係る経路探索装置1による経路探索処理の全体構成を示すフローチャート図である。
【0040】
まず、コントローラ部111は、グリッドマップ上において、移動始点と移動終点を設定する(ステップS101)。そして、グリッドマップ上において、環境内に存在する障害物の登録(ステップS102)や、禁止領域(ステップS103)の作成を行う。
【0041】
次いで、並列演算部112は、複数の並列演算器102_nが並列演算することで、対応するそれぞれの領域の評価値を算出する(ステップS104)。このため、コントローラ部111は、グリッドマップを複数の領域に分割し、各領域を並列演算器112_nに対応付けた後に、下位の並列演算部112の各並列演算器112_nに対して評価値算出処理の開始を指示する。尚、並列演算部112における評価値算出処理の詳細については後述する。
【0042】
次いで、コントローラ部111は、ステップS104で算出した評価値から各領域の経路方向情報を並列演算器112_nにより生成させて、並列演算部112内で伝播させた経路方向情報を取得する(ステップS105)。尚、並列演算部112からの経路方向情報の取得処理の詳細については後述する。
【0043】
本実施の形態1に係る経路探索装置1は、ステップS101〜S105に係る経路探索処理のうち、特に、S105に係る経路方向情報の効率的な取得処理を可能とする。即ち、本実施の形態1に係る経路探索装置1によれば、並列演算部112の各並列演算器112_nから、経路方向情報を効率よく取得することができる。
【0044】
まず、図6乃至8を参照して図5に示したS104に係る評価値の算出処理について具体的に説明する。図6は、各領域の評価値の算出処理を具体的に示すフローチャートである。
【0045】
まず、コントローラ部111が、経路探索領域を複数の領域に分割し、分割したそれぞれの領域に対して並列演算器112_nを対応付ける(S201)。ここでは、経路探索領域は、グリッド数と等しい数の領域に分割される。例えば、経路探索領域が2次元平面である場合には、それぞれ10cm×10cmの広さを持つ離散的な複数の領域が分割生成される。
【0046】
次に、コントローラ部111は、全ての並列演算器112_nに対して初期値を代入する(S202)。各領域の状態として、進入が禁止される禁止状態、評価値が未計算である未計算状態、及び評価値を計算済みである計算済み状態からなる3状態を想定する。それぞれの状態に対応する初期値を並列演算器112_nに代入する。評価値算出処理の開始段階であるS202では、経路探索対象となる領域のうち、進入禁止領域以外の領域に対応する並列演算器112_nの評価値記憶部32_n及び評価値記憶部33_nには、初期値として十分大きな値(例えば1.0×10^7)を代入する。進入禁止領域に対応する並列演算器112_nの評価値記憶部32_n及び評価値記憶部33_nには、初期値として十分大きな値(例えば1.0×10^9)を代入する。ここでは、初期値として、後述する評価値算出処理によって算出される評価値を十分上回る値を採用して代入する。尚、領域の状態をこのような初期値を設定することで判断してもよいし、領域の状態を示す状態情報を各並列演算器112_nに格納するようにしてもよい。
【0047】
次に、コントローラ部111は、移動始点を指定して、その移動始点を含む領域に対応する並列演算器112_nについて、その評価値記憶部32_n又は評価値記憶部33_nの少なくとも一方に、評価値の最小値(例えば0)を代入する(S203)。以下では、その評価値記憶部32_nのみに評価値の最小値が代入されたものとして説明する。
【0048】
次に、コントローラ部111は、評価値算出処理を開始するための計算開始クロックCを発生する(S204)。状態設定用信号線34_nを介して、CPUのクロックに相当するパルスが各並列演算器112_nへと送信され、各並列演算器112_nでS205乃至208における処理が実行される。またこのとき、評価値算出処理を実行させる並列演算器112_nに対しては、評価値算出処理を実行可能とする状態設定信号が送信され、評価値算出処理を実行させない並列演算器112_nに対しては、評価値算出処理を実行不能とする状態設定信号が送信される。
【0049】
各並列演算器112_nは、対応する自領域の評価値及び近傍領域の評価値に基づいて、以下のようにして自領域の評価値を更新してゆく。まず、評価値記憶部32_nに格納されている値について、自領域の評価値である自己評価値が、初期値から更新されているか否かを判定する(S205)。
【0050】
ステップS205における判定の結果、自己評価値が初期値のままである場合(自領域の評価値が未計算である場合)には、近傍領域に対応する並列演算器112_nで、その評価値記憶部32_nに格納されている値として、初期値ではない評価値が存在しているか否かを判定する(S206)。
【0051】
ステップS206における判定の結果、近傍領域に初期値以外の値が存在する場合(近傍領域の評価値が計算済みである場合)には、近傍領域の評価値のうち最も小さい評価値と、その最小の評価値を持つ近傍領域から自領域までの幾何学的な距離に応じた移動コストに基づいて自己の領域の評価値を算出し、その結果を評価値記憶部33_nに格納する(S207)。ここでは、以下の式に基づいて自己の領域の評価値を算出する。
自己評価値=近傍領域の最小評価値+近傍領域から自領域までの移動コスト
【0052】
一方、ステップS205又はS206における判定の結果、評価値記憶部32_nに格納されている自己評価値が初期値から更新されている場合、又は近傍領域に初期値以外の値が存在しない場合には、現在の自己評価値を更新せずにそのまま維持する(S208)。ここでは、自己評価値を維持する処理として、評価値記憶部32に格納されている評価値を評価値記憶部33_nへと出力して格納する。このように処理することで、現在の自己評価値を簡易な処理によって維持することができる。尚、評価値記憶部32_nに格納されている評価値を評価値記憶部33_nへと出力せずに、何も処理を実行しないようにしてもよい。
【0053】
全ての並列演算器112_nで、ステップS205乃至208における評価値算出処理の実行を、それぞれ評価値記憶部32_nに格納された評価値に基づいて判定し、評価値算出結果を、それぞれ評価値記憶部32_nとは異なる評価値記憶部33_nに出力する。これにより、1回の評価値算出処理の結果、評価値算出結果の干渉を防ぐことができると共に、1近傍領域を越えて評価値が算出されないよう制限することができるため、1近傍領域に含まれる領域の評価値のみを算出させることができる。従って、複数の並列演算器112_nによる評価値算出処理のタイミングを同期させることができる。尚、クロックCの次のクロックCによってステップS205乃至208における処理が実行される場合には、ステップS205乃至S208の処理において、評価値記憶部33_nに格納されている評価値に基づいて評価値算出処理が実行され、その結果が評価値記憶部32に格納される。更には、クロックCの次のクロックCによってS205乃至208における処理が実行される場合には、評価値記憶部32_nに格納されている評価値に基づいて評価値算出処理が実行され、その結果が評価値記憶部33_nに格納される。
【0054】
コントローラ部111は、移動終点を含む領域に対応する並列演算器112_nについて、その評価値記憶部32_n又は評価値記憶部33_nのいずれか一方に初期値ではない評価値が存在しているか否かを判定する(S209)。ステップS209における判定の結果、評価値が存在していない場合には、移動終点を含む領域の評価値は未だに算出されていない未計算状態であるため、ステップS204へと戻り再び各並列演算器112_nにより領域の評価値算出処理を実行する。
【0055】
一方、ステップS209における判定の結果、移動終点に評価値が存在している場合には、移動終点を含む領域の評価値が計算済みの状態となったことから、評価値算出処理を終了して、図5に示したS105に係る経路方向情報の取得処理に進む。
【0056】
尚、ステップS209における評価値算出処理を終了させる条件としては、全ての領域に対応する評価値が変化しなくなった場合に処理を終了させるようにしてもよい。即ち、全ての並列演算器112_nで、評価値記憶部32_n及び33_nに格納された評価値が同じ値のまま変化しなくなった場合に処理を終了させることができる。また、このような終了条件をステップS209における終了条件に加えて判定させるように構成することで、移動始点から移動終点までの経路が存在しない場合であっても評価値算出処理を終了させることができる。
【0057】
以下、図7及び図8に示すグリッドマップを参照して、図6に示した各領域の評価値算出処理に係る具体例について説明する。尚、図7及び図8に示すグリッドマップは、ロボットの目標軌道となる目標経路を、グリッド状に離散化された領域の集合として表現するものである。経路探索装置1を構成するコンピュータの経路探索記憶部12は、グリッドマップに関する情報を格納している。ここで、グリッドマップに関する情報には、各領域の座標情報、各領域の近傍領域を示す領域間の接続情報、及び各領域に関連付けられた評価値情報が含まれる。領域の評価値は、それぞれの領域に対応する並列演算器112_nによって算出される。
【0058】
図7は、評価値算出処理の一例を説明するための図である。図7では、経路探索領域を横16個、縦13個の領域に分割し、評価他値算出処理を簡単に行わせるため、各領域の近傍領域を、各領域に隣接した前後左右4方向に隣接する領域とした。図8では、各領域から斜め4方向に位置する領域についても近傍領域に含めるものとし、各領域から8方向に隣接する領域を近傍領域とした。図において斜線領域は進入禁止領域を示し、外周上の領域は経路探索対象外である領域を示す。図に示す移動始点の領域の初期値を0に設定した場合に、並列演算器112_nによる評価値算出結果を各領域に示す。尚、ここでは、近傍領域から自領域までの移動コストの値を5とした。分割された208個の領域のうち、39個の領域が進入禁止領域であり、169個の領域が経路探索対象領域である。本実施の形態1に係る経路探索装置1によれば、各並列演算器112_nがそれぞれ並列に評価値を算出するため、計22回の計算によって評価値を算出することができる。
【0059】
コントローラ部111は、並列演算部112における各領域の評価値算出処理が終了した後、並列演算部112内の特定の並列演算器112_nから経路方向情報を取得することで、経路方向情報の系列から構成される経路を効率的に取得する。例えば、図8に、生成される経路方向情報を白抜き矢印で示す(各領域間に示す白抜き矢印が、各領域で生成される経路方向情報を示している)。これら経路方向情報の系列が、経路を構成する。移動終点から移動始点へと向かって、これら経路方向情報に沿って規定される経路が、移動終点から移動始点までの最短経路を示している(同時に、移動終点から移動始点までの最短経路を意味する)。尚、移動終点における評価値110は、移動始点から移動終点までに要する移動コストの総コストを意味している。後述するように、並列演算部112は、各領域における経路方向情報を上流方向である移動始点へと向けて伝播させる。コントローラ部111は、移動始点を含む領域に対応する並列演算器112_nから、これら経路方向情報を順次取得する。コントローラ部111は、グリッドマップ上における移動始点又は移動終点の座標と、取得した経路方向情報の系列とから、グリッドマップ上における経路(即ち、経路を構成する座標値の点列)を構成する。これにより、経路探索装置1は、移動始点から移動終点へと至る経路を探索する。
【0060】
続いて、図9乃至13を参照して、図5に示したS105に係る経路方向情報の取得処理について具体的に説明する。コントローラ部111は、評価値算出処理が終了した後、移動終点を含む領域に対応する並列演算器112_nから、経路方向情報の送信を最初に開始させる。並列演算部112内において、分割された各領域の評価値に基づいて、移動終点に対応する領域から上流方向の領域に向けて、各領域の経路方向情報が伝播される。そして、コントローラ部111は、移動始点を含む領域に対応する並列演算器112_nから、伝播した経路方向情報を順次取得してゆく。
【0061】
図9を参照して、並列演算部112内における経路方向情報の伝播処理について説明する。図9は、各並列演算器112_nの処理を説明するためのフローチャート図である。まず、並列演算器112_nの受信部116は、下流方向の並列演算器112_nから送信された受信データを受信して、受信データを受信バッファ117に保持する(ステップS301)。並列演算器112_n間で送受信されるデータは、図10に示すような構造のデータとすることができる。例えば、経路探索処理のモードを示すmode部分と、そのモードにおいて処理されるdata部分とから構成する。例えば、mode部分には、評価値算出処理中には評価値算出モードを設定し、経路方向情報の取得中には経路方向情報取得モードを設定することができる。また、data部分には、近傍領域の評価値や、経路方向情報の値が設定される。受信データのデータ構造をこのように構成することで、受信データのmode部分が経路方向情報取得モードを示す場合にのみ、data部分に設定された経路方向情報を用いて、以下の処理を行えばよい。
【0062】
次に、並列演算器112_nは、受信データを所定の期間内に受信したか否かを判定する(ステップS302)。並列演算器112_nは、下流方向の他の並列演算器112_nから受信した経路方向情報を、上流方向の他の並列演算器112_nへと転送する。ここで、並列演算器112_nは、自身よりも下流方向の他の複数の並列演算器112_nからそれぞれ送信された経路方向情報を全て転送した後に、これら複数の経路方向情報に続けて、後述するようにして生成した経路方向情報を上流方向の他の並列演算器112_nへと送信する。このため、ここでは、下流方向の他の並列演算器112_nから連続して送信される経路方向情報の受信が途絶えた場合(即ち、所定の期間内に受信しなかった場合)には、下流方向からの経路方向情報の送信は終了したものと判断する。
【0063】
ステップS302での判定の結果、所定の期間内に受信した場合には、送信部118は、下流方向の他の並列演算器112_nから受信した経路方向情報を、送信バッファ119にセットし(ステップS303)、上流方向の他の並列演算器112_nへと送信する(ステップS304)。
【0064】
ステップS302での判定の結果、所定の期間内に受信しなかった場合には、経路方向情報生成部115は、上流方向の領域への方向を示す経路方向情報を生成する(ステップS305)。
【0065】
ここで、図11を参照して、経路方向情報の生成処理について説明する。まず、領域選択部114が、近傍に存在する領域から、移動始点を含む領域により近づく方向の一の選択領域を選択する。ここでは、領域選択部114は、近傍に存在する領域のうち、最も小さな評価値を有する一の選択領域を選択する。そして、経路方向情報生成部115は、自身の領域から選択された領域へと向かう方向の情報を、経路方向情報として生成する。例えば、図11に示すように、自身の領域を示す中央の領域から、隣接する近傍の8領域へと向かう白抜き矢印を経路方向とし、これら8方向を、0〜7の番号によりそれぞれ対応付ける。そして、例えば、経路方向情報を8ビットの情報を用いて示す場合には、8ビットの値のうちで、対応するビットの値のみを1とすることで、近傍の8領域のいずれの方向への経路方向情報であるかを示すことができる。具体的には、例えば、下方向(番号4)への経路方向情報を、"00001000"により示すことができる。
【0066】
尚、ここでは、経路方向情報の取得中に、近傍領域から選択領域を選択して経路方向情報を生成するものとして説明したが、上述した評価値算出処理中に経路方向情報を生成して、各並列演算器112_nに予め格納するものとしてもよい。
【0067】
次に、送信部118は、経路方向情報生成部115で生成した経路方向情報を、送信バッファ119にセットし(ステップS306)、上流方向の他の並列演算器112_nへと送信する(ステップS304)。
【0068】
図12及び図13は、経路方向情報の伝播の様子を説明するための図である。図12において、移動始点の領域名をAとし、移動終点の領域名をIとして示す。図12に示す各領域において生成された経路方向情報が、移動始点の領域Aへと向けて伝播する。具体的には、図13に示すように、まず、領域Iに対応する並列演算器112_nにより下方向を示す経路方向情報I(4)が生成され、評価値に基づいて選択された領域Hに対応する並列演算器112_nへと、経路方向情報I(4)が送信される。領域Hに対応する並列演算器112_nは、受信した経路方向情報I(4)を、下流方向の領域Gに対応する並列演算器112_nに転送する。さらに、領域Hに対応する並列演算器112_nは、右下方向を示す経路方向情報H(3)を生成して、領域Gに対応する並列演算器112_nへと経路方向情報H(3)を送信する。以下、領域Gから領域Aにかけて同様の処理を繰り返し、領域Aに対応する並列演算器112_nに対して、経路方向情報I(4)、経路方向情報H(3)、経路方向情報G(4)、経路方向情報F(5)、経路方向情報E(4)、経路方向情報D(5)、経路方向情報C(6)、経路方向情報B(5)が連続して送信される。
【0069】
このように、各領域において生成された経路方向情報が移動始点の領域Aに対応する並列演算器112_nへと伝播する。コントローラ部111は、移動始点の領域Aに対応する並列演算器112_nへとアクセスし、経路方向情報を順次取得する。すなわち、コントローラ部111は、移動始点の領域Aに対応する並列演算器112_nのみにアクセスすることで、経路方向情報の系列を効率的に取得することができる。
【0070】
ここで、並列演算部112内において、移動始点の領域Aに対する並列演算器112_nに全ての経路方向情報を集めるために必要な計算ステップは、経路を構成する領域の個数をnとした場合に、2n−1となる。並列演算部112内で経路方向情報を伝播させずに、コントローラ部111が各並列演算器112_nに直接アクセスして経路方向情報を取得した場合には、コントローラ部111は、各領域にアクセスした都度、上流方向へと向かう領域を選択する処理を全ての領域で行う必要がある。これに対して、本実施の形態1に係る経路方向情報の取得処理では、並列演算部112内において、移動始点の領域に対応する並列演算器112_nへ向けて各領域の経路方向情報が伝播するために、コントローラ部111は、該当の領域のみにアクセスして経路方向情報を取得すれば足りる。すなわち、コントローラ部111が並列演算器112_nにアクセスして経路方向情報を取得する際に、アクセスした領域から上流方向へと向かう領域を選択する処理を行わずに済むために、コントローラ部111が並列演算部112にアクセスする際の計算量を削減することができる。
【0071】
また、コントローラ部111は移動始点に対応する並列演算器112_nのみから経路方向情報を取得すればよいため、上位のコントローラ部111が下位の並列演算部112にアクセスするための接続線の本数を抑制することができる。また、複数の並列演算器112_nに対して一つの接続線を設け、その接続線を切替えて使用する構成とすることで、必要とする接続線の本数をより抑制することができる。さらに、各並列演算器112_nの受信バッファ117には、一つの経路方向情報のみを保持しておけばよいため、受信バッファ117のコストを抑制することができる。
【0072】
尚、移動始点に対応する並列演算器112_nの受信バッファ117のサイズを、経路を構成する経路方向情報の系列全体を保持可能なサイズとした場合には、各並列演算器112_nが搭載する受信バッファ117のコストは増加するものの、コントローラ部111は1度のアクセスにより、経路方向情報の系列全体を取得することができる。このため、並列演算部112とコントローラ部111との間のアクセス量を削減して、より効率的に経路探索処理を実行することができる。
【0073】
以上説明したように、本発明は、並列演算を用いて経路探索を高速に計算する手法において、特に、経路を構成する経路方向情報を、各並列演算器112_nから効率よく取得する手法に関する。本発明によれば、並列演算器112_n間の局所通信のみを利用することで、コントローラ部111は、経路方向情報の系列を効率的に取得することができる。これにより、上位のコントローラ部111と下位の並列演算部112との間の通信コストを削減することができ、経路探索装置1に係る製造コスト及び計算コストを低減することができる。
【0074】
尚、上述した各実施の形態では、ロボットが移動する移動領域を経路探索領域として、移動始点から移動終点へと至る経路を探索するものとして説明したが、本発明はこれに限定されない。すなわち、ロボットが移動する移動領域に限らず、通信ネットワークや動力学モデル場において、任意の二点間の最適な経路を探索するための並列演算などに対しても本発明を適用することができる。
【0075】
尚、本発明は上述した各実施の形態に限定されず、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【0076】
1 経路探索装置、
11 経路探索処理部、12 経路探索記憶部、
111 コントローラ部、112_n 並列演算器、
113 評価値処理部、114 領域選択部、115 経路方向情報生成部、
116 受信部、117 受信バッファ、118 送信部、
119 送信バッファ、
32_n 評価値記憶部、33_n 評価値記憶部、34_n 状態設定用信号線、
領域

【特許請求の範囲】
【請求項1】
経路探索領域内に存在する第1の地点から第2の地点に到達する経路を探索する経路探索装置であって、
前記経路探索領域が複数の領域に分割され、分割されたそれぞれの領域に対応する複数の並列演算器から構成される並列演算部と、
前記並列演算部を統括するコントローラ部と、を備え、
前記並列演算部は、
前記複数の並列演算器が並列演算することで、対応するそれぞれの領域の評価値を算出し、
前記並列演算器は、
前記並列演算することで算出した各領域の評価値に基づいて、近傍に存在する領域から一の選択領域を選択する領域選択手段と、
自身に対応する領域から前記選択領域への方向を示す経路方向情報を生成する経路方向情報生成手段と、
他の前記並列演算器から送信された経路方向情報を受信する受信手段と、
前記選択領域に対応する前記並列演算器に対して、前記受信手段で受信した前記経路方向情報を送信した後に、前記経路方向情報生成手段で生成した前記経路方向情報を送信する送信手段と、を備え、
前記コントローラ部は、
前記第2の地点を含む領域に対応する第2の並列演算器から前記経路方向情報の送信を最初に開始させた後に、前記並列演算部内で伝播した前記経路方向情報の系列を、前記第1の地点を含む領域に対応する第1の並列演算器から取得することで、前記経路を探索する
ことを特徴とする経路探索装置。
【請求項2】
前記並列演算器は、
前記受信手段で受信した他の前記並列演算器から送信された経路方向情報を保持する受信バッファと、
前記受信バッファに保持した前記経路方向情報又は前記経路方向情報生成手段で生成した前記経路方向情報を送信するために保持する送信バッファと、を更に備え、
前記送信手段は、
他の前記並列演算器から送信された経路方向情報を受信した場合には、前記受信バッファに保持した前記経路方向情報を、前記送信バッファを介して前記選択領域に対応する前記並列演算器に送信し、
他の前記並列演算器から送信された経路方向情報を所定の期間受信しなかった場合には、前記経路方向情報生成手段で生成した前記経路方向情報を、前記送信バッファを介して前記選択領域に対応する前記並列演算器に送信する
ことを特徴とする請求項1に記載の経路探索装置。
【請求項3】
前記領域選択手段は、
前記並列演算することで算出した各領域の評価値に基づいて、近傍に存在する領域から、前記第1の地点を含む領域により近づく方向の一の選択領域を選択する
ことを特徴とする請求項1に記載の経路探索装置。
【請求項4】
前記並列演算器は、
近傍に存在する領域の評価値と、当該近傍領域から自身に対応する領域までの移動コストに基づいて評価値を算出する評価値処理部を更に備える
ことを特徴とする請求項1に記載の経路探索装置。
【請求項5】
経路探索領域が複数の領域に分割され、分割されたそれぞれの領域に対応する複数の並列演算器から構成される並列演算部と、前記並列演算部を統括するコントローラ部と、を備える移動体が、前記経路探索領域内に存在する第1の地点から第2の地点に到達する経路を探索する経路探索方法であって、
前記並列演算部が、
前記複数の並列演算器が並列演算することで、対応するそれぞれの領域の評価値を算出し、
前記並列演算器が、
前記並列演算することで算出した各領域の評価値に基づいて、近傍に存在する領域から一の選択領域を選択する領域選択ステップと、
自身に対応する領域から前記選択領域への方向を示す経路方向情報を生成する経路方向情報生成ステップと、
他の前記並列演算器から送信された経路方向情報を受信する受信ステップと、
前記選択領域に対応する前記並列演算器に対して、前記受信した前記経路方向情報を送信した後に、前記生成した前記経路方向情報を送信する送信ステップと、を有し、
前記コントローラ部が、
前記第2の地点を含む領域に対応する第2の並列演算器から前記経路方向情報の送信を最初に開始させた後に、前記並列演算部内で伝播した前記経路方向情報の系列を、前記第1の地点を含む領域に対応する第1の並列演算器から取得することで、前記経路を探索する
ことを特徴とする経路探索方法。
【請求項6】
経路探索領域内に存在する第1の地点から第2の地点に到達する経路を探索する自律移動体であって、
前記経路探索領域が複数の領域に分割され、分割されたそれぞれの領域に対応する複数の並列演算器から構成される並列演算部と、
前記並列演算部を統括するコントローラ部と、を備え、
前記並列演算部は、
近傍に存在する領域の評価値と、当該近傍領域から自身に対応する領域までの移動コストに基づいて、対応するそれぞれの領域の評価値を算出し、
前記並列演算器は、
前記並列演算することで算出した各領域の評価値に基づいて、近傍に存在する領域のうち最も小さい評価値を有する一の選択領域を選択する領域選択部と、
自身に対応する領域から前記選択領域への方向を示す経路方向情報を生成する経路方向情報生成部と、
他の前記並列演算器から送信された経路方向情報を受信する受信部と、
前記選択領域に対応する前記並列演算器に対して、前記受信部で受信した前記経路方向情報を送信した後に、前記経路方向情報生成部で生成した前記経路方向情報を送信する送信部と、を備え、
前記コントローラ部は、
前記第2の地点を含む領域に対応する第2の並列演算器から前記経路方向情報の送信を最初に開始させた後に、前記並列演算部内で伝播した前記経路方向情報の系列を、前記第1の地点を含む領域に対応する第1の並列演算器から取得することで、前記経路を探索する
ことを特徴とする自律移動体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2010−257115(P2010−257115A)
【公開日】平成22年11月11日(2010.11.11)
【国際特許分類】
【出願番号】特願2009−105047(P2009−105047)
【出願日】平成21年4月23日(2009.4.23)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】