以下、図面を参照して本発明に係る無人車両の走行経路生成方法の実施の形態について説明する。なお、本実施形態では、無人車両としてオフロードダンプトラックを想定している。
図1は、無人車両走行システムの全体構成を示すとともに、作業現場の全体図を示している。
作業現場1には、積込場2、排土場3、給油所4、駐機所5といった各エリアがある。これら各エリアがホールロード6と呼ばれる整備された搬送路やアクセスロード7と呼ばれるホールロード6から各エリアへの引込み線や交差点により接続されている。
積込場2は、ダンプトラック20へ土砂を積み込む作業を行う場所であり、ホイールローダ(フロントエンドローダ)、バックホー、ショベルといった掘削作業車両91による掘削作業およびダンプトラック20への土砂の積み込み作業が行なわれる。
排土場3は、ダンプトラック20に積み込まれた土砂の排出(排土)を行う場所であり、固定位置に排土する場合と、エリア内に規則的に排土する場合とがある。固定位置に排土する場合とは、クラッシャと呼ばれる岩石の破砕機を備えたホッパと呼ばれる投入口92に排土する場合である。また、排土場3では、ドーザ93によって、排出された土砂の均し作業が行なわれることがある。この際に荒れた路面を補修するためにドーザ93によって排土位置が指示され、指示された排土位置へ排土が行われることがある。
給油所4には、燃料ポンプが設置されている。給油所4は、駐機場5に併設されていることが多い。他のダンプトラック20の運行の妨げにならないように給油車を用いて給油を行う場合であっても給油所を設ける場合もある。
駐機所5は、有人作業の場合は、食事やオペレータ交代などのために車両を止める場所である。無人車両走行システムにおいては、定期点検時など、安全にダンプトラック20に乗り込むためにダンプトラック20を引き込んだり、発進操作が行われる場所である。
図2は、実施形態の走行経路10が生成される経路生成範囲8の様子を例示している。経路生成範囲8は、たとえば上述の排土場3である。本実施形態では、土砂などの積荷を搭載したダンプトラックが無人車両20として走行経路10に沿って誘導走行されて経路生成範囲8内を走行する場合を想定する。すなわち、一例として、無人車両20は、経路生成範囲8に入口点11から入り、スイッチバック点12に向かい、スイッチバック点12でスイッチパックを行い、排土点である停止点(スポット点)13で停止して、土砂を排出する作業を行い、出口点14に向かい、出口点14から経路生成範囲8を出るという走行経路10を辿る。ただし、無人車両20は、経路生成範囲8内の障害物9を回避するように走行経路10に沿って走行する。こうした経路生成範囲8内に生成され、障害物9を回避しつつ入口点11から出口14まで無人車両20が走行する経路のことを、本実施形態では、「走行経路」というものとする。
無人車両20は、車体前方に運転席(キャブ)が設けられ、車体後方に荷台(ベッセル、ボディ)が設けられ、前輪と後輪が備えられた前輪ステアリングの車両である。
スイッチバック点12の前後では、無人車両20の進行方向は、前進方向から後進方向に、あるいは後進方向から前進方向に変化する。
無人車両20は、停止点(スポット点;排土点)13に向けて、後進状態で進入する。
図3は、実施形態の無人車両走行システムのブロック図を示している。
作業現場1には、多数の車両20、20…を管理、監視する管制装置30が設けられている。管制装置30には、処理部31とデータ入力部32と通信部33とが設けられている。一方、車両20には、通信部21と処理部22と位置計測部23と走行機構部24と操舵機構部25と走行経路記憶部26が設けられている。
車両20の位置計測部23では、自己の車両位置が計測される。位置計測の手段としては、たとえば車両20に設けられたタイヤ回転数センサとジャイロが使用される。これらタイヤ回転数センサの出力信号とジャイロの出力信号とに基づいて、車両位置が計測される。またGPS衛星94(図1)から送信される信号をGPSアンテナで受信し、GPSセンサで検出することにより車両位置を計測してもよい。
車両20で計測された位置データは、処理部22で処理され通信部21を介して管制装置30に送信される。管制装置30の通信部33では、複数の車両20、20…から送信された位置データを受信する。受信した位置データは、複数の車両20の管理、監視に使用される。
管制装置30のデータ入力部32には、後述するように、無人車両20の車幅、最小旋回半径を含む車両拘束条件が入力されるとともに、無人車両20が走行すべき走行経路生成8の範囲、回避すべき障害物9、入口点11および出口点14の位置と方向を含む幾何学的拘束条件が入力される。
走行経路10は、無人車両20から要求がある前に管制装置30で生成し保存、記憶しておく場合(図4(a))と、無人車両20から要求がある毎に生成する場合(図4(b)、(c))とがある。さらに無人車両20から要求がある毎に走行経路10を生成する場合でも管制装置30で走行経路10を生成する場合(図4(b))と管制装置30から無人車両20に走行経路10を生成するためのデータを送り無人車両20で走行経路10を生成する場合(図4(c))がある。
各場合の処理手順につき図4を併せ参照して説明する。
無人車両20から要求がある前に管制装置30で走行経路10を生成し保存、記憶しておく場合には、図4(a)に示すように、車両拘束条件および幾何学的拘束条件のデータ入力があると(ステップ101)、処理部31で車両拘束条件および幾何学的拘束条件に基づいて走行経路10を生成する処理が行われ、生成された走行経路10のデータが記憶される(ステップ102)。無人車両20から走行経路10を要求する旨の指令が通信部21から送信されると(ステップ103)、通信部33で受信され、処理部31は、この指令を受けて、記憶された走行経路10のデータを取り出し、通信部33に送出し、通信部21に向けて送信する(ステップ104)。
車両20の処理部22は、受信された走行経路10のデータに基づいて車両20を走行させ操舵するための走行指令および操舵指令を生成する。これら走行指令および操舵指令は、走行機構部24および操舵機構部25に出力される。この結果車両20は、管制装置30から送信された走行経路10に沿って走行、操舵される(ステップ105)。
無人車両20から要求がある毎に管制装置30で走行経路10を生成する場合には、図4(b)に示すように、まず、車両拘束条件および幾何学的拘束条件のデータが入力される(ステップ101)。
そして、無人車両20から走行経路10を要求する旨の指令が通信部21から送信されると(ステップ103)、通信部33で受信され、処理部31は、この指令を受けて、車両拘束条件および幾何学的拘束条件に基づいて走行経路10を生成する処理を行う(ステップ102)。そして、走行経路10のデータを通信部33に送出し、通信部21に向けて送信する(ステップ104)。車両20の処理部22は、受信された走行経路10のデータに基づいて車両20を走行させ操舵するための走行指令および操舵指令を生成する。これら走行指令および操舵指令は、走行機構部24および操舵機構部25に出力される。この結果車両20は、管制装置30から送信された走行経路10に沿って走行、操舵される(ステップ105)。
無人車両20から要求がある毎に管制装置30から無人車両20に走行経路10を生成するためのデータを送り無人車両20で走行経路10を生成する場合には、図4(c)に示すように、まず、車両拘束条件および幾何学的拘束条件のデータが入力される(ステップ101)。そして、無人車両20から走行経路10を生成するためのデータを要求する旨の指令が通信部21から送信されると(ステップ106)、通信部33で受信され、処理部31は、この指令を受けて、車両拘束条件および幾何学的拘束条件のデータを通信部33に送出し、通信部21に向けて送信する(ステップ107)。車両20の処理部22は、受信された車両拘束条件および幾何学的拘束条件のデータに基づいて走行経路10を生成する処理を行う(ステップ102)。つぎに、生成された走行経路10のデータに基づいて車両20を走行させ操舵するための走行指令および操舵指令を生成する。これら走行指令および操舵指令は、走行機構部24および操舵機構部25に出力される。この結果車両20は、管制装置30から送信された走行経路10に沿って走行、操舵される(ステップ105)。
つぎに、図5を参照して、本実施形態の走行経路10の生成方法の基本的処理手順について説明する。
図5(a)は、上述の図4(a)、(b)、(c)におけるステップ101のデータ入力処理およびステップ102の走行経路生成処理に相当する部分を抜き出したものである。
すなわち、本実施形態の方法は、図5(a)に示すように、つぎの手順からなる。
なお、つぎの手順以降に出てくるコスト要素は、無人車両20の運転にかかわるコストの要素であり、具体的には無人車両が走行する経路の長さ、走行経路上のカーブ等の曲率、無人車両のステアリング操作量を要素とするものである。つまり、走行時には、走行、制動が行なわれ、タイヤ、ブレーキ等の磨耗が生じる。同様にカーブの曲率が小さい、あるいはステアリング操作量が大きく(据え切り等)なればタイヤの負荷が大きくなりタイヤの磨耗が増大する。またこのような状態では走行速度が低下し生産性の低下を招くこととなるのでコスト要素に影響を与える。
また、コスト関数は、前記内容のものを関数化したものである。
(条件入力ステップ)
無人車両20の車幅、最小旋回半径を含む車両拘束条件を入力するとともに、無人車両20が走行すべき走行経路生成範囲8、回避すべき障害物9、入口点11および出口点14の位置と方向を含む幾何学的拘束条件を入力する(ステップ201)。
(走行経路生成ステップ)
車両拘束条件および幾何学的拘束条件を満足し、かつカーブの大きさまたは/およびカーブの変化率を少なくともコスト要素とするコスト関数の関数値が最小になるように、走行経路10を生成する。具体的には、カーブの大きさは、走行経路の曲率あるいはステアリング角より求め、カーブの変化率は、走行経路の曲率の変化率あるいはステアリング操作量より求める。すなわち、車両拘束条件および幾何学的拘束条件を満足し、かつ走行経路の曲率あるいはステアリング角または/および走行経路の曲率の変化率あるいは無人車両のステアリング操作量を少なくともコスト要素とするコスト関数の関数値が最小になるように、走行経路を生成する(ステップ202)。
ここで、コスト関数Eについて定義する。以下、コスト関数Eについて説明する。
最適性を考慮した経路生成を行う場合、距離だけではなく曲率の大きさやその変化率も問題となる。本実施例では、後述する改良ダイクストラ法により経路探索を行う。その際に各頂点に辿りつくまでのコストを距離だけではなく、以下のように曲率の大きさの推定値、曲率の変化率の推定値を加え、コストを見積もる。また、始点及び終点における車両方向も以下のように考慮して探索を行う。
・始点、終点における車両方向の考慮
始点、終点における車両方向を考慮するために、図40に示すように仮想点Ps、Pgを配置する、ただし、
とする。
・ 曲率
曲線における曲率κは、接線傾斜θの変動率と定義され、以下の式(1)で表される。
κ=dθ/ds …(1)
そこで、図41に示すように、以下の式(2)に接合点Piにおける辺の角度変化Δθiを前後の辺の長さの平均値で割ることにより接合点Piにおける曲率の推定値κiを見積もることとする。
ここで、スタート点P0、ゴール点Pnにおける曲率の推定値κ0、κnは、それぞれ三点P0、Ps、P1、三点Pn-1、Pg、Pnを通る円を曲率円と近似することで求める(図40参照)。図42に示すように、三点PA、PB、PCを通る円の中心P0(x0、y0)は下記式(3)、(4)から求めることができる。よって、半径rは下記式(5)で求められる。
この半径rの逆数として曲率κを下記式(6)のごとく見積もる。
κ=1/r …(6)
・ 曲率変化率
上記のごとく求めた曲率の推定値κから、下記式(7)に示すように辺の接合点Piにおける曲率変化率の値を見積もることとする。ただし、始点P0における曲率変化率を0とする。
・ コスト関数E
以上より、距離だけでなく曲率の大きさ、曲率変化率も考慮したコスト関数Eを下記(8)式のごとく定義する。式(8)における第一項は曲率を小さくすることで車両の旋回半径を小さくする項である。同第二項は曲率変化率を小さくすることで単位距離当たりのステアリング操作量を小さくする項である。同第三項は走行距離を短くする項である。ただし、α、β、γは重み定数とする。
上記式(7)において、第一項の「走行経路の曲率」の代わりに「車両のステアリング角」を用いてもよい。また第二項の「走行経路の曲率の変化率」の代わりに「車両のステアリング操作量」を用いてもよい。
図5(b)は、図5(a)における走行経路生成ステップ(ステップ201)に含まれる処理手順を示したものである。
すなわち、走行経路生成ステップ(ステップ201)は、つぎの手順を含む。
(スイッチバック点12を導入して、無人車両20の走行経路を生成するステップ)
コスト関数の関数値が最小になるようにスイッチバック点12を定めて、無人車両20の走行経路10を生成する(ステップ211)。
図5(c)は、図5(a)における走行経路生成ステップ(ステップ201)に含まれる処理手順を示したものである。
すなわち、走行経路生成ステップ(ステップ201)は、つぎの手順を含む。
(スイッチバック点12の必要性を判断するステップ)
生成された走行経路10が車両拘束条件または/および幾何学的拘束条件を満足しないか、あるいはスイッチバック点12を導入した方がコスト関数の関数値が小さくなると判断する(ステップ221)。
(スイッチバック点12を導入して、無人車両20の走行経路を生成するステップ)
生成された走行経路10が車両拘束条件または/および幾何学的拘束条件を満足しないと判明された場合あるいはスイッチバック点12を導入した方がコスト関数の関数値が小さくなることが判明された場合に(ステップ221の判断YES)、コスト関数の関数値が最小になるようにスイッチバック点12を定めて、無人車両20の走行経路10を生成する(ステップ222)。
図5(d)は、図5(a)における走行経路生成ステップ(ステップ201)に含まれる処理手順を示したものである。
すなわち、走行経路生成ステップ(ステップ201)は、つぎの手順を含む。
(補間点探索ステップ)
無人車両20が走行すべき走行経路10の各補間点を探索する(ステップ231)。
(補間ステップ)
入口点11から各補間点を経由して出口点14に至る経路の各補間点を補間する(ステップ232)。
ただし、補間点探索ステップにおける探索または/および補間ステップにおける補間は、コスト関数の関数値が最小になるように行う。
また、補間ステップにおける補間は、B−スプライン曲線を用いて行う。
以下、上述の走行経路生成方法の内容について具体的に説明する。
(車両拘束条件)
図6(a)は、無人車両20のサイズ、走行、操縦等の限界としての拘束条件を示した表である。図6(b)は、無人車両20の上面図であり、無人車両20の各サイズを示す。図6(c)は、無人車両20が旋回する様子を示した上面図である。図7(a)は、無人車両20がステアリングを切る様子を示した上面図である。
車両拘束条件は、無人車両20の車両基準点20cから車体前端までの距離FSize(図6(a)、(b)参照)、車両基準点20cから車体後端までの距離RSize(図6(a)、(b)参照)、車幅Width(図6(a)、(b)参照)、ホイールベースWBL(図6(a)、(b)参照)、最小旋回半径(図6(a)、(c)参照)、最高前進速度、最高後進速度、最大加速度、最大減速度、最大許容後進加速度、単位時間当たりの平均的最大ステアリング操作量(図6(a)、図7(a)参照)などである。
(幾何学的拘束条件)
図7(b)は、無人車両20が走行する領域の拘束条件である幾何学的拘束条件を示したものである。無人車両20が走行すべき走行経路生成範囲8、回避すべき障害物9、入口点11の位置と方向、出口点14の位置と方向、停止点13の位置の方向、スイッチバック点12の位置と方法などが幾何学的拘束条件となる。
(経路の最適性条件)
無人車両20の走行コストを削減するためには、無人車両20の走行に要する所要時間を短くすること、低燃費であること、タイヤや車体への負荷を少なくすることが必要である。低燃費にするには、加減速度を小さくすること、総距離を短くすることなどが必要がである。また、車体やタイヤへの負荷を少なくするためには、単位距離当たりのステアリング操作量が少ないこと(曲率の変化率が小さいこと)、滑らかにステアリング操作が行えること(ステアリングの操作量の変化量が小さいこと)が必要である。なお、曲率の2次微分値を用いることによりステアリングの操作量の変化量の近似値とすることができる。
本実施形態では、上記の車両拘束条件、幾何学的拘束条件に加えて、上述するコストを考慮した経路の最適性条件が満たされるように走行経路10を生成するようにしている。
(基本的経路の生成)
以下では、走行経路10の基本的経路の生成方法について説明する。
図8は、基本的経路の生成方法の処理手順を示す。以下、図8を参照して説明する。
図8に示す処理は、図5に示す走行経路生成ステップ(ステップ201)の具体的処理手順を示したものである。
(ミンコフスキー和(Minkowski Sum)計算)
幾何学的拘束条件にミンコフスキ和の計算手法を適用して、経路生成範囲8、障害物9を膨張させる処理を行う。具体的には、無人車両20の車幅分の直径の円盤を経路生成範囲8、障害物9の境界に沿って移動させ、その総和となる部分を膨張範囲とする。膨張した経路生成範囲8、障害物9の外側を無人車両20が走行できる範囲と定めることにより、無人車両20が経路生成範囲8、障害物9に干渉しないようにすることができる。
図16(a)、(b)は、ミンコフスキー和の計算を説明するための図である。
図16(a)は、入力された経路生成範囲8と障害物9を示している。
経路生成範囲8の境界8a、障害物9の境界9aおよび走行すべき円盤の境界は、多角形に近似されて、ミンコフスキー和の計算が行われる。本実施例では、経路生成範囲8の境界や障害物9と干渉せずに無人車両20を移動させるために、経路生成範囲8の境界や障害物9を車幅の半分だけ拡大する。この量は、無人車両20が走行している場合に障害物に干渉させないための最小の量である。このため、必ずしも干渉を妨げるというものではない。走行中の無人車両20の向きは多様である。このため、適した量を見積もることは困難である。具体的には、セットAとセットBの和を、
と定義するミンコフスキー和を用いる。
図16(b)は、経路生成範囲8、障害物9と円盤とのミンコフスキー和を示す。経路生成範囲8はその境界8aが外形線8bまで膨張される。同様に障害物9はその境界9aが外形線9bまで膨張される。
ミンコフスキ和で見積もられた経路生成範囲8と障害物9の外形線8b、9bは、円弧と直線で示される。円弧状になっている部分は、後述の可視グラフを引くために、円弧上に数点を取り、外形を多角形とする。
以上がミンコフスキー和計算処理の内容である(ステップ301)。
(可視グラフ(Visibility Graph)の作成)
つぎに、ミンコフスキー和で見積もられた経路生成範囲8と障害物9に対して可視グラフを引く。可視グラフとは、経路生成範囲8と障害物9の外形線(多角形)の各頂点同士を相互に結んだ辺の集合のことであって、障害物9を通り抜けない互いに「見える」ように結んだ辺の集合のことである。可視グラフは、最短距離を求めるためによく用いられるグラフである。ここで、最適な経路を求める場合、各頂点における可視辺が接線とならないとき最短経路となり得ない辺であるため、そのような接線とならない辺は予め除かれる。
図17は、ミンコフスキー和された経路生成範囲8と障害物9の外形線8b、9bに対して引かれた可視グラフを例示する。ミンコフスキー和された経路生成範囲8と障害物9の外形線8b、9bが円弧となっている部分については、弧長を五等分する点をとり、多角形とした。
ある2頂点に対して、「互いに見える」とき、つまり2頂点を結んだ線分が、どのミンコフスキー和された経路生成範囲8、障害物9の外形線8b、9bにも交差しないとき、互いに可視であるとして、それらを結ぶ線分(可視辺)を引く。障害物9上の隣り合う頂点からなる辺は可視辺となる。
最短距離を求める場合、各頂点において可視辺が接線とならない辺は最短距離となり得ない辺であるので、この辺は取り除かれる。凹形状となるときには接線にはならない。
接線か否かを判定する方法を図18を用いて説明する。
同図18に示すように、頂点Pから可視グラフ上のある点Qへ向かうベクトルをVとし、またPの両隣の頂点へ向うベクトルを
と表される。上記(3.1)式における係数α、βを求めて、この2つの係数α、βの関係が
αβ<0
となるとき接線であると判定する。
つぎに、2頂点において、可視辺であり、この接線であるという条件を満たしているときのみ、線分を引く。こうして図17に示す可視グラフから接線にならない辺を取り除いたグラフを図19に示す。
ただし、この時点では、入口点11、出口点14、スイッチバック点12、停止点13の方向は考慮されていない。
以上が可視グラフを作成する処理の内容である(ステップ302)。
(改良ダイクストラ法による最適となる経路候補の辺(補間点候補)の探索)
つぎに改良ダイクストラ法を適用して最適となる経路候補の辺を探索する。
さて、一般的なダイクストラ法は、複数個の多角形障害物があるエリアの始点から終点までの最短経路をグラフ理論により求める手法である。しかし、無人車両20の経路生成の場合は、距離だけではなく曲率の大きさや曲率の変化率がコスト上、問題となる。そこで、本実施形態では、一般的なダイクストラ法を拡張した探索法を適用する。
まず、はじめに図20を用いて、基本的な距離を重みとする一般的なダイクストラ法について説明する。
図20は、始点から終点までの最短距離となる経路を示している。
図20に示す経路を求めるアルゴリムはおよそ以下のとおりである。すなわち、予め可視グラフで辺を形成している頂点i、jに対して距離を計算し、最大n×nの2次元配列MのMij,Mjiに格納しておく。ただし、辺を形成していない場合には、十分大きな値を格納する。始点から可視グラフのすべての辺へ等速度で広がっていくように調べていき、各頂点における始点からの最短距離を求める。1点づつ最短距離となる頂点を調べていき、終点まで辿りついたら終了させる。
このように距離を各辺の重みとすることで、重みが最小となる辺の組み合わせ、つまり総距離が最小となる辺の組み合わせを探索する。
こうして図20に示すごとく、最短距離となる経路が求められる。
ただし、一般的なダイクストラ法では、入口点11、出口点14、スイッチバック点12、停止点13の方向は考慮されていない。
これに対して本実施例では、一般的なダイクストラ法を改良した改良ダイクストラ法を適用する。改良ダイクストラ法では、各辺に対して距離に加えて、予想できる曲率の大きさ、単位距離当たりのステアリング操作量等を予測して重みを決めることで無人車両20にとって最適となる経路候補の辺の組み合わせを探索するものである。つまり、走行経路長に加えて走行経路10の曲率、無人車両20のステアリング操作量(曲率の変化率)をコスト要素とするコスト関数の関数値が最小になるように、経路候補の辺の組み合わせ、つまり補間点の候補を探索する。また、当然、経路の始点と始点の方向を考慮して探索を行う。
コスト関数Eは、以下のように定義される。
ただし、κは曲率、θはステアリング操作量、sは始点からの距離である。また、w1、w2、w3は重み定数である。上記式の第1項は、旋回半径(曲率κの逆数)を大きくするための項、第2項は、単位距離当たりのステアリング操作量を少なくするための項、第3項は、走行距離を短くする項である。各項を小さくして、コスト関数Eの関数値を小さくすれば、旋回半径が大きくなり、単位距離当たりのステアリング操作量が少なくなり、走行距離が短くなる。
ステアリング角θと曲率κの関係は、ホイールベース長をWBLとすると、下記式の関係が成立する。
よって、右辺第1項は、下記式のごとくなる。
ただし、w´1=w1/WBLであり、θは小さいとし、また区間毎の曲率は一定として近似する。
また、右辺第2項は、図21に示すように、ある頂点の周りの2つの直線の変化角をステアリング操作量とし、それをその区間の距離で割ることで単位距離当たりのステアリング操作量として近似する。よって上記(3.2)式は、
のようになる。
始点と終点では方向が与えられているため以下のような補正が必要となる。
図22におけるP点のコストを求めるには、始点の方向ベクトルと始点からつぎの点へのベクトルからなる角度を2分する直線上に、始点の向きを考慮するため、仮想的に点Stを配置する。また、Pから終点までのベクトルと終点の方向ベクトルの角度を2分する点Gtを同様に配置する。これらにより、始点と終点の向きを考慮に入れた経路を求めることができる。計算に用いる点は、たとえばDouglas-Peucker Algorithumによって特徴点のみを抽出して行う。これは、点の数が増えるとコストが増えるためである。計算アルゴリズムは、ダイクストラ法のアルゴリズムと同様であり、この方法により得られる結果は、図23に示すごとくなる。ここで図20に示す一般的なダイクストラ法を適用した結果では、始点と終点の向きは考慮されなかったが、図23に示す改良ダイクストラ法を適用した結果では、始点と終点の向きが考慮されているのがわかる。
以上が改良ダイクストラ法による処理の内容である(ステップ303)。
(B−スプライン曲線による補間)
つぎに、改良ダイクストラ法を適用して得られた辺を結ぶ頂点を補間点として、たとえば3次のB-スプライン曲線を用いて補間を行う。ただし、3次以外のBスプライン曲線でで補間してもよい。
以下では、n+1個の補間点{Qk}、k=0,…,nと、始点と終点における向きが与えられている場合のB-スプライン補間曲線の求め方を説明する。
B-スプライン曲線を描くには、制御点とノットベクトルが必要である。そこで、まず、ノットベクトルの求め方を示す。
とすると、ノットベクトルの各成分は、p次の場合には、
として求める。
つぎに、次数が3次の場合の制御点を求める。
制御点を{Pi}とする。ここで、始点と終点は向きが与えられているため、
となり、P0,P1,Pn+1,Pn+2は直接求めることができる。ここでDiはそれぞれの単位ベクトルである。
のようになる。ただし、k=1,…,n−1である。
の対角システムを解くことにより制御点{Pi}を求める。このシステムは、未知数(n−1)個の線形システムである。図24に補間したB−スプライン曲線を例示する。
以上がB-スプライン曲線による補間処理の内容である(ステップ304)。
改良ダイクストラ法で得られた補間点の候補は、ミンコフスキ和された障害物9等の上にあることがある。このため、その補間点候補から求められる曲線は、無人車両20の旋回限界を満たさないなど、必ずしも最適な経路とはいえない。よって、補間点候補が無人車両20の最小旋回半径などの車両拘束条件を満たすか否かの判断を行うことにより、補間点の移動が必要か否かを判断する(ステップ305)。
(補間点の最適化)
補間点の移動が必要な場合(ステップ305の判断YES)には、補間点の移動を行い、補間点を最適化する。これは、改良ダイクストラ法で得られた補間点の近辺に任意の格子を設け、その格子点の中から、曲率やステアリング操作量をコスト要素とするコスト関数の関数値が最小となる点を新たな補間点とすることにより行う。
すなわち、ここまでに得られた補間点は、ミンコフスキー和された障害物上にあるため、その補間点を通過するように描かれた曲線は、図25(a)に修正前経路として示すように、無人車両20の最小旋回半径を満たさないなど、必ずしも適した経路とはなっていない。そこで、ここまでに得られた補間点に基づいて補間点を適宜移動して補間点の最適化を行う。
補間点を最適化するためのコスト関数(目的関数エネルギー)Eを
と定義し、その関数値の最小化を行う。ここで、w4、w5は重み定数である。上述の式(3.5)と同様の近似により、
となる。補間点近辺に車両幅Widthの二分の一となる幅となる格子を作り、その格子点の中からコスト関数Eの関数値が最小となる格子点を新たな補間点とする。
図25(b)に、新たな補間点とその補間点を通過するように描かれた修正後経路を示す(ステップ306)。
(最適補間)
補間点が同じであっても、補間点を通過する曲線の形状によって、無人車両20にかかるコストは異なるものとなる。そこで、曲率やステアリング操作量をコスト要素とするコスト関数の関数値が最小となるように各補間点を通過する曲線の形状を求める。具体的には、曲線の始点、終点における接線ベクトルα、βの大きさを最適化することにより行う。通常、曲線の始点、終点におけるα、βは単位ベクトルであり、大きさは与えられていない。方向ベクトルα、βの大きさによって各補間点を結ぶ曲線の曲率などが変動する。そこで、コストが最小となるように方向ベクトルα、βの大きさを調整して各補間点を結ぶ曲線の曲率を最適なものとする。
以下、具体的に説明する。
図26は、上述の(3.9)式に示す係数αと上述の(3.10)式に示す係数βの値によって補間点同士を結ぶ曲線の形状が変化する様子を示したものである。
そこで、以下の式をコスト関数(目的関数エネルギー)として、その関数値が最小になるように係数α、βを決定する。
上記式の右辺第1項は、曲率の絶対値を小さくする項である。同右辺第2項は、単位距離当たりのステアリング操作量を少なくする項である。
ここで、上述した(3.13)式を解くことにより、制御点は、
のように表される。
となる。これらの式を上述の(3.16)式に適用することでコスト関数Eが求められる。このコスト関数Eの関数値を最小化するために、たとえばSteepest Descent法を用いて最適化を行う。
Steepst Descent法は、最適化問題に用いられる手法である。この方法は、図27に示すように、ポテンシャル面の傾き(一階微分)のみから、系のエネルギーが小さくなる方向へ更新を繰り返すことにより、より小さくなる関数値E1、E2、E3、E4を順次探索し、最終的に最小値Eminを探索するというものである。計算方法の手順は以下のようになる。
を入力する。
2. 状態xがx(k)のとき状態xの値を以下のように更新する。
ここで、λは一回で更新する数値の割合を決めるパラメータであり、通常、λは小さな正の値をとる。
となるまで状態xの更新を繰り返す。
ここで、状態xの更新割合λについて説明する。
の条件を満たす必要がある。また、精度の良い最適化には、λは極めて微小な値が望ましいが、更新の回数が増えて計算に時間がかかってしまう。そこで、図28に示すようにλをパラメータとしたコスト関数(目的関数)E(λ)を、下に凸な二次関数で近似が可能となるように適当に三点を与え、近似を行う。この近似した二次関数の最小値をとる値λを状態xの更新割合と定める。この手法により効率的な計算が可能となる(ステップ307)。
(最大曲率の低減手法の適用)
3次のB−スプライン曲線は曲率連続であり、経路に適した曲線である。しかし、無人車両20の最小旋回半径よりも小さい経路半径では物理的に走行できない。そこで、最小の経路半径を大きくする、つまり最大曲率を小さくする方法を適用することにより、経路生成を行い易くする。
B−スプライン曲線は、曲線上の点を求めるために影響する制御点をノットベクトルの間隔により変えることができる。よって、曲率が大きいところのノット間隔を大きくすれば、その付近の制御点の影響が広範囲にわたる。これにより、元の曲線の凸形状よりも緩やかな凸形状になる。このことを利用したノットベクトルの変更方法を以下に示す。
すなわち、B−スプライン曲線は、Bezier曲線がノットの間隔ごとに連続的につながっているものである。そこで、各ノットごとに、
を求める。ここで、曲率κには、最大曲率値Cmaxを割り当て、dsには、各ノットの間隔Δu=ui+1−uiを用いる。そこで各曲線の最大曲率を
ノット間隔をΔu1,Δu2,…,Δui,…とする。ノットの間隔を変えるために、新しい間隔比を
とする。ただし、Δu´iは新しいノット間隔比である。この操作を最大曲率を満たすまで、もしくは、一定回数繰り返す(ステップ308)。
(無人車両20との干渉チェック)
つぎに、無人車両20が障害物8等と干渉しないか否かをチェックする(ステップ309)。
無人車両20との干渉があると判断された場合には(ステップ309の判断YES)、手順はステップ306に戻り、補間点の移動を再度行う。
無人車両20との干渉がないと判断された場合には(ステップ309の判断NO)、処理を終える(ステップ310)。
以上が基本的経路の生成方法の内容である。
さて、無人車両20が停止点13にて排土作業(あるいは積込作業)を行うとき、後進状態で停止点13に進行する必要がある。このときには、経路生成範囲8内に単独のスイッチバック点12を設けて、無人車両20の車体の進行方向の転換(切り返し)を行う必要がある。また、上述の基本的経路生成の方法で得られた曲線で無人車両20の最小旋回半径を満たさないときにも、二点のスイッチバック点12、12を設けて、切り返しを行う必要がある。
スイッチバックの1点には、位置(x、y)と向き(θ)の3つの未知数がある。スイッチバック点12の位置(x、y)、そのスイッチバック点12における無人車両20の向き(θ)によって、得られる走行経路10は異なるものとする。また、これらの値により、無人車両20にかかる負荷が大きく異なる。
そこでスイッチバック点12を定める際にもコスト関数を定義して、コスト関数の関数値が最小になるように計算して、走行経路10を最適化する。スイッチバック点12を定める際に用いられるコスト関数のコスト要素は、後述するように曲率、ステアリング操作量、経路長、ステアリングの据えきり量からなる。
スイッチバック点12を最適化する処理を行う場合、経路生成範囲8内にはスイッチバック点12の候補となる点が無数に存在する。また、局所的な最適解も多く存在する。このため局所探索法は好ましくない。そこで、大域探索法として、シミュレーテッド アニーリング(Simulated Anneaiing)法を用いてスイッチバック点12の最適化を行う。
(スイッチバックの必要性判定)
スイッチバックの必要性があるとする判定基準は、以下に列挙するとおりである。
a)始点からの移動方向が後進かつ終点到達時の移動方向が前進
b)始点からの移動方向が前進かつ終点到達時の移動方向が後進
c)生成された経路が車両拘束条件を満足しない場合、たとえば最小旋回半径を満足しない場合である。
d)生成された経路が幾何学的拘束条件を満足しない場合、たとえば障害物9に干渉するおそれがある場合である。ただし、可視グラフ上での経路が存在しない場合は、スイッチバック点を増やすことにより改善されないので経路生成は失敗と判断する。
e)スイッチバックを導入した方がコスト関数の関数値が小さくなる場合。つまり最適化のためにスイッチバックを挿入した場合と、スイッチバックを挿入しない場合とを対比して、スイッチバックを挿入した方がコスト関数の関数値が小さくなる場合にスイッチバックの必要性があると判断する。
無人車両20の最小旋回半径を満足しないときにスイッチバックを導入する場合を図29に例示する。
すなわち、図29(a)に示すように、始点から終点までの経路がスイッチバックなく生成されたとする。しかし、この経路は、無人車両20の最小旋回半径を満足しない。そこで、図29(b)に示すように、二点のスイッチバック点12、12を経路の途中に設けて経路を生成し、無人車両20が最小旋回半径以上の旋回半径で走行できるようにする。
つぎに、スイッチバック点12の最適化に用いられるコスト関数について説明する。
スイッチバック点12を含めた経路のコスト関数Eは、以下のような各コスト要素からなる。
コスト関数E=A×旋回半径コスト
+B×ステアリング操作量コスト
+C×ステアリング操作の滑らかさコスト
+D×経路長コスト
+Ee×スイッチバック点におけるすえ切りコスト
(3.25)
ここで、A、B、C、D、Eeは、どのコストを重要視するかを規定する重み定数である。また、旋回半径コスト、ステアリング操作量コスト、ステアリング操作の滑らかさコスト、経路長コスト、スイッチバック点におけるすえ切りコストは、以下のように定義される。
(旋回半径コスト)
旋回半径コストは、曲率から求められる瞬時コストを経路に沿って全積分することによって得られる。例えば、経路に沿ってs移動した位置における曲率κ(s)が、しきい値κ0(s)より大きくなるときに、その地点における最高速度Vmax(s)に到達できないとすると、
であるから、κ0(s)を用いて曲率から求められる瞬時コストEρ(s)を次のように定義する。
このとき、旋回半径コストは、以下のとおりとなる。
曲率κとステアリング角θの関係、
tan(θ)=ホイールベース長×κ
により、曲率κ(s)に対応するステアリング角θ(s)、しきい値κ0(s)に対応するステアリング角θ0(s)を求め、瞬時旋回半径コストEθ(s)、旋回半径コストを下記のように求めてもよい。
としてもよい。
(ステアリング操作量コスト)
ステアリング操作量コストは、ステアリング操作量から求められる瞬時コストを経路に沿って線積分することによって得られる。例えば、経路に沿ってs移動した位置において、単位距離当たりのステアリング操作量dθ(s)がdθ0(s)より大きくなると、その地点の最高速度Vmax(s)に到達できないとすると、
であるから、d0(θ)を用いてステアリング操作量から求められる瞬時コストEdθ(s)を次のように定義する。
このときステアリング操作量コストは、以下のとおりとなる。
η|dθ(s)|は、低速域におけるふらつき防止効果向上のための項であり、ηは重み定数である。
また、dθ0(s)の式を曲率κ(s)で解くと、対応する曲率の変化量dκ0(s)は、
である。これを用いて、瞬時コストEdκ(s)、ステアリング操作量コストを下記のように求めてもよい。
すなわち、ステアリング操作量コストは、曲率の変化量の経路沿いの線積分として求められる。
(ステアリング操作の滑らかさコスト)
ステアリング操作の滑らかさコストは、ステアリング操作量の変化量から求められる瞬時コストを経路に沿って線積分することによって得られる。例えば、瞬時コストおよびステアリング操作の滑らかさコストは、以下のとおりとなる。
ステアリング操作の滑らかさコストは、曲率の2次微分値の経路沿いの線積分となるように求めてもよい。この場合、瞬時コストおよびステアリング操作の滑らかさコストは、以下のとおりとなる。
(経路長コスト)
経路長コストは、
経路長コスト=経路長
なる式で求めることができる。ただし、前進と後進とで著しく走破性能が異なる場合などにおいては、
経路長コスト=前進コスト×前進経路長+後進コスト×後進経路長
のように、コースの性質に合わせて重み付けをして求めてもよい。
(スイッチバック点におけるすえ切りコスト)
スイッチバック点およびスイッチバック点の極近傍においてステアリング操作を行う経路となっているときには、すえ切りが発生する。このため、単位距離当たりのステアリング操作量dθ(s)をスイッチバック点の前後の短い区間に限定して線積分することによって、スイッチバック点におけるすえ切りコストを計算することができる。
すなわち、n番目のスイッチバック点が経路に沿ってsn移動した位置にあるとすると、短い距離定数Lを用いて、次のように、スイッチバック点におけるすえ切りコストを定義することができる。
また、スイッチバック点におけるすえ切りコストは、つぎのとおり、曲率の変化率の線積分となるように求めてもよい。
以上がスイッチバック点12を定める際のコスト関数Eの内容である。
シミュレーテッド アニーリング(Simulated Anneaiing;以下、SAと略す)法を用いてスイッチバック点12の最適化を行うアルゴリズムは、図9に示される。
さて、シミュレーテッド アニーリング(SA)は、モンテカルロ法的な最適化手法である。その名称は、金属工学における「焼きなまし」から来ている。焼きなましとは、金属材料を熱した後で徐々に冷やし、結晶を成長させてその欠陥を減らす作業である。熱によって原子は初期の内部エネルギーがローカルな極小状態から離され、よりエネルギーの高い状態へ遷移する。ゆっくり冷却することで、原子は初期状態よりも内部エネルギーがさらに極小な状態を得る可能性が多くなる。SAは焼きなまし法を計算で模倣したものである。局所探索法では局所最適解に陥った場合の対処を考慮する必要がある。しかし、SAの場合には、そのような必要がない。SAでは、探索空間の各点“s”は上記の“状態”に対応し、最小化すべき目的関数E(s)が内部エネルギーに対応する。以下では、スイッチバック点一つにつき三つのパラメータ(x、y、θ)をもつSAの計算過程を説明する。
すなわち、まず、アニーリングの温度T、スイッチバック点12の位置、方向の初期値の設定を行う。
状態sの初期設定、つまりスイッチバック点12の初期値設定は、スイッチバック点12が一点設けられる場合と二点設けられる場合とで異なる。
(一点設定の場合)
図30に示すように、経路の曲線上の停止点13から一定の距離L1の点(曲線長がL1に満たない場合、曲線のパラメータにおける中点)から曲線の凸側法線方向へ一定の距離L2分だけ距離をとった点を初期のスイッチバック点12とする。また、法線方向をそのスイッチバック点12における方向θとして指定する。
(二点設定の場合)
図31(a)に示すように、経路上で曲率半径が無人車両20の最小旋回半径を満たさない部分(破線部で示す)の始めの点をP(i1)とし、曲率最大値となる点を越えて曲率半径が無人車両20の最小旋回半径を満たさない部分の終わりの点をP(i2)とする。また、パラメータ上でi1,i2の中点となる点をQ(i0)とする。
つぎに、図31(b)に示すように、点P(i1)を基準としパラメータ降順に曲線長が一定距離L3分になる点をQ(i3)、同様に昇順に一定距離L4分になる点をQ(i4)とする。求めたQ(i3) 、Q(i4)から曲線の凸側法線方向へ一定距離L5だけ移動した点の位置をそれぞれスイッチバック点12、12の初期値(x1,y1)、(x2,y2)とする。また、その法線方向をスイッチバック点12、12における方向(θ1)、(θ2)として指定する(ステップ401)。
以下、初期温度Tからアニーリングを行う(ステップ402〜407)。
すなわち、各ステップでは、SAのヒューリスティック(heuristik;正解導入方法)は、現在状態soldのいくつかの近傍snewを検討し、現在状態sのままでよいか、いずれかの近傍状態に遷移するのがよいかを確率的に決定する。その際にシステムが最終的にエネルギーの低い状態へ向かうように考慮する。遷移確率は、
である。kはボルツマン定数、Tは温度である。
遷移条件は、
P>R (3.43)
であり、Rは、0<R<1を満たす無作為の実数である。
式(3.41)のように、EnewがEoldより小さいときには必ず遷移する。しかし、 EnewがEoldより大きいときには確率により遷移可能となる。これは局所的な最適解に張り付いてしまうことを防ぐためである。
状態s(x、y、θ)は温度Tに依存させて変化させる。その具体的な変化は以下のようになる。
は経路生成範囲8のバウンディングボックス(bounding box;境界線を表す四角いエリア)におけるそれぞれの方向の辺の半分の値を最大値となる無作為の数である。
は、範囲−π〜πの範囲の無作為な数である。
このアニーリングのステップは温度Tを徐々に上げていき、系のエネルギーの変化率が十分に大きくなるまで、たとえば10000%になるまで、あるいは予定された計算時間が尽きるまで、たとえば繰り返し200回になるまで行う。
以下、手順を説明する。
まず、乱数を用いて無作為な数を取得し、温度Tに依存させながら状態s(x、y、θ)を変化させ、上記式(3.44)のごとく、スイッチバック点12(位置x、y、方向θ)を変更する(ステップ402)。
つぎに、変更されたスイッチバック点12を通過するように基本的経路を生成する。基本的経路は、B−スプライン曲線を用いて生成される。前述の図8のステップ302ないしステップ310の処理が実行されて、スイッチバック点12を通過する基本的経路が生成される(ステップ403)。
つぎに、生成された基本経路の経路形状コストEを算出する。すなわち、生成された基本経路について、前述の(3.25)式のコスト関数Eを計算する(ステップ404)。
つぎに、遷移条件を満たすか否かが判断される。上述したようにコスト関数Eの関数値Enewが以前のものEoldよりも小さいときには、必ず遷移するが、コスト関数Eの関数値Enewが以前のものEoldよりも大きいときには確率により遷移可能となる(ステップ405)。
遷移条件を満たす場合には、スイッチバック点12(位置x、y、方向θ)を更新する(ステップ406)。
しかし、遷移条件を満たさない場合には、ステップ407に移行し、クーリング条件を満たすか否かを判断する。上述したように一定回数のカウント値を超えた場合あるいはコスト関数Eの変化が十分に小さくなったときをもって、クーリング条件が満たされたとして、つぎのステップ408のクーリングに移行する。
クーリングでは、アニーリング終了時の温度Tから温度を徐々に下げていく。このようにすると、システムは最初のうちはエネルギー関数Eの小さな変化を無視して最適解を求めて探索空間の広い領域をさまよい、徐々にエネルギーの低い領域に向かって探索範囲を狭めていき、最終的に最もエネルギーの低い状態に降りていく。クーリングスケジュールには、様々な方法がある。ただし、最終的には温度T=0で終わらなければならない。本実施形態では、図32に示すように、
なる式で示すクーリングスケジュールでクーリングを行う。ただし、iはサイクルである(0≦i≦N)。
クーリングの具体定な手順は以下のとおりである。
すなわち、図32に示すクーリングスケジュールに従い、温度Tを更新していく(ステップ408)。
つぎにクーリングの終了条件が満たされているか否かが判断される。具体的には、図32に示すクーリングスケジュールが終了するか、あるいは、コスト関数Eの関数値がしきい値よりも小さくなったときをもって終了したと判断する(ステップ409)。クーリングの終了条件を満たす場合には、このスイッチバック点最適化アルゴリズムを終了させる(ステップ410)。
クーリングの終了条件を満たさない場合には、手順はステップ402に戻り、同様の処理を繰り返す。
つぎに、本実施形態の各実施例について説明する。
本実施例の方法には、大きく分けて「一度生成したスイッチバック点を固定する方法」と「スイッチバック点の追加に伴いスイッチバック点の最適化をやり直す方法」とがある。
図10は、「一度生成したスイッチバック点を固定する方法」を示している。
(一度生成したスイッチバック点を固定する方法)
同図10に示すように、まず、上述の図8のステップ301と同様に、経路生成範囲8、障害物9の境界に沿って車両幅を直径とする円盤を移動させて、ミンコフスキー和を計算する(ステップ501)。
つぎに、スイッチバック点12が必要か否かを判断する。この場合の判断基準は、上述の(スイッチバックの必要性判定)の各判定基準のうち、以下の判断基準により行なう。
a)始点からの移動方向が後進かつ終点到達時の移動方向が前進
b)始点からの移動方向が前進かつ終点到達時の移動方向が後進
(ステップ502)。
よって、入口点11の方向が後進で出口点14の方向が前進であるか、入口点11の方向が前進で出口点14の方向が後進である場合には、スイッチバック点12が必要であると判断し(ステップ502の判断YES)、スイッチバック点12を1箇所挿入する処理を行う。このステップ503の処理は、具体的には、図11に示す「スイッチバック点の挿入フロー」にて行われる。
「スイッチバック点の挿入フロー」では、同図11に示すように、まず、上述の図9のステップ401と同様に、挿入するスイッチバック点12の初期値設定が行われる。ただし、挿入するスイッチバック点12は、1箇所である。スイッチバック点12の1箇所について初期値が定められる(ステップ601)。
つぎに「ループ2」の処理を開始して(ステップ602)、ステップ603〜606の処理を終了条件に至るまで繰り返す(ステップ607)。「ループ2」の終了条件は、ループの回数が上限に達した場合、あるいは所定の収束条件を満足した場合などである。
「ループ2」の処理が開始されると、まず「ループ3」の処理が開始され(ステップ603)、各経路要素毎に、後述する「経路要素の最適化」の処理が行われる(ステップ604)。全ての経路要素について「経路要素の最適化」処理が行われると、「ループ3」の処理を終えて(ステップ605)、つぎのステップ606に移行する。
「ループ3」で処理が行われる「経路要素」は、つぎのように定義される。
すなわち、
1) 入口点11から最初のスイッチバック点12に至る経路
2) n番目のスイッチバック点12から(n+1)番目のスイッチバック点に至る経路
3) 出口点14の手前の最後のスイッチバック点12から出口点14に至る経路
について「ループ3」の処理が行われる。スイッチバック点12が無い状態からスイッチバック点12を1箇所挿入した場合には、経路要素は、「走行経路10の入口点11から最初のスイッチバック点12に至る経路」、「出口点14の手前の最後のスイッチバック点12から出口点14に至る経路」となる。
ステップ604の「経路要素の最適化」の処理は、具体的には図12に示す「経路要素の最適化フロー」にて行われる。
「経路要素の最適化フロー」では、同図12に示すように、まず、上述の図8のステップ302と同様にして、経路要素についての可視グラフが生成される。つまり「走行経路10の入口点11から最初のスイッチバック点12に至る経路」、「出口点14の手前の最後のスイッチバック点12から出口点14に至る経路」についての可視グラフが生成される(ステップ701)。
つぎに、上述の図8のステップ303と同様にして、改良ダイクストラ法を適用して可視グラフ上から最適となる経路候補の辺(補間点候補)が探索される(ステップ702)。
つぎに、上述の補間点候補を通過するようにB−スプライン曲線を用いて補間が行われる(ステップ703)。
つぎに、「ループ6」の処理が開始され(ステップ704)、ループ回数が上限に達するまで「ループ6」の処理が繰り返される(ステップ708)。
「ループ6」の処理が開始されると(ステップ704)、上述の図8のステップ305、306、307、308と同様にして、補間点の位置を補正するための補正量や、補間点を通過する曲線形状を補正するための補正量が計算され(ステップ705)、補間点の位置を補正する処理、補間点を通過する曲線形状を補正する処理が行われる(ステップ706)。
補正処理後、所定条件下で収束すると(ステップ707の判断YES)、「ループ6」の処理を抜けて、この図12の「経路要素の最適化フロー」の全処理を終える。またループ回数が上限に達するまで「ループ6」の処理が繰り返されると(ステップ708)、この図12の「経路要素の最適化フロー」の全処理を終える。
図12に示す「経路要素の最適化フロー」の代わりに、図38に示す「経路要素の最適化フロー」を実行してもよい。図38において、図12と同じ処理には、同じステップ番号(701〜708)を付している。図38に示すフローにおいては、上述のステップ702の処理を行った結果、最適となる経路候補の辺を探索することができた場合、つまり経路が存在する場合には(ステップ709の判断YES)、ステップ703に進み以後図12に示すのと同様の処理が行われるが、最適となる経路候補の辺を探索することできなかった場合、つまり経路が存在しない場合には(ステップ709の判断NO)、経路生成が致命的に失敗に終わったとして処理を終える(ステップ710)。
こうして図11のステップ604に示される「経路要素の最適化」の処理が、全ての経路要素、つまり「走行経路10の入口点11から最初のスイッチバック点12に至る経路」、「出口点14の手前の最後のスイッチバック点12から出口点14に至る経路」について終了すると(ステップ605)、この部分経路上のスイッチバック点12を補正する処理が行われる(ステップ606)。このステップ606におけるスイッチバック点12の補正処理は、上述の図9に示す「スイッチバック点最適化アルゴリズム」にて行われる。
図9に示す「スイッチバック点最適化アルゴリズム」は、前述の終了条件(ステップ409)を満たすまで行われる。そして、「ループ2」の終了条件を満足すると(ステップ607)、この図11に示す「スイッチバック点の挿入フロー」の全処理を終える。
以下、手順は、図10に示すステップ504に移行して、「ループ1」の処理を開始する(ステップ504)。また、ステップ502でスイッチバックが必要ないと判断した場合にも(ステップ502の判断NO)、ステップ504に移行して、「ループ1」の処理を開始する(ステップ504)。
「ループ1」の処理が開始されると、各経路要素毎に、後述する「経路要素間の経路生成」処理が行われる(ステップ505)。この「ループ1」の処理が行われる経路要素は、つぎのように定義される。すなわち、
A)スイッチバックがあるときは、
A−1)入口点11からスイッチバック点12に至る経路
A−2)スイッチバック点12から走行経路10の出口点14に至る経路
B)スイッチバックがないときは、
B−1)入口点11から出口点14に至る経路
経路について「ループ1」の処理が行われる。
つぎに、経路要素毎にその経路の生成が成功したか否かが判断される(ステップ506)。全ての経路要素について「経路要素間の経路生成」処理が行われ(ステップ505)、経路生成が成功したと判断されると(ステップ506の判断YES)、「ループ1」の処理を終える(ステップ507)。これにより最終的に無人車両20が走行すべき走行経路10が取得され、この図10に示す経路生成フローの全処理を終える(ステップ508)。ステップ506で経路生成が失敗したと判断されると(ステップ506の判断NO)、「ループ1」の処理を抜ける。これにより最終的に無人車両20が走行すべき走行経路10が取得されなかったとされ、この図10に示す経路生成フローの全処理を終える(ステップ509)。
ステップ505における「経路要素間の経路生成」処理は、具体的には図13に示す「経路要素間の経路生成フロー」にて行われる。
この「経路要素間の経路生成フロー」では、経路要素毎に、その経路要素の途中にスイッチバック点12の挿入が必要かが判断され、必要に応じてスイッチバック点12が挿入される。
すなわち、図13の「経路要素間の経路生成フロー」では、まず、経路要素について、上述の図12に示す「経路要素の最適化フロー」が実行される(ステップ801)。
つぎに、スイッチバック点12が必要か否かを判断する。この場合の判断基準は、上述の(スイッチバックの必要性判定)の各判定基準のうち、以下の判断基準により行なう。
c)生成された経路が車両拘束条件を満足しない場合、たとえば最小旋回半径を満足しない場合である。
d)生成された経路が幾何学的拘束条件を満足しない場合、たとえば障害物9に干渉するおそれがある場合である。
e)スイッチバック点を導入した方がコスト関数の関数値が小さくなる場合。つまり最適化のためにスイッチバックを挿入した場合と、スイッチバックを挿入しない場合とを対比して、スイッチバックを挿入した方がコスト関数の関数値が小さくなる場合にスイッチバックの必要性があると判断する(ステップ802)。
この結果、上記判断基準を満たしている場合には、スイッチバック点12を挿入すると判断し(ステップ803の判断YES)、ステップ804に移行する。一方、上記判断基準を満たしていない場合には、スイッチバック点12を挿入しないと判断し(ステップ803の判断NO)、ステップ809に移行する。
スイッチバック点12を挿入しないとしてステップ809に移行されると、経路生成の成否が判定される(ステップ809)。この結果、経路の生成が成功したと判断されると(ステップ810の判断YES)、経路生成が成功したとして、この図13に示す「経路要素間の経路生成フロー」の全処理を終える(ステップ811)。一方、経路の生成が失敗したと判断されると(ステップ810の判断NO)、経路生成が失敗したとして、この図13に示す「経路要素間の経路生成フロー」の全処理を終える(ステップ812)。
スイッチバック点12を挿入するとしてステップ804に移行されると、スイッチバック点12を偶数箇所挿入する処理が行われる。これは、経路要素の始点と終点の向きを変えないようにするためである。スイッチバック点12を2点若しくは4点あるいは場合によっては6点以上の偶数箇所挿入すれば、経路要素の始点と終点の向きをスイッチバック点12挿入前と同じ向きにすることができる。
このスイッチバック点12を偶数箇所挿入する処理は、上述の図11に示す「スイッチバック点の挿入フロー」にて行われる。ただし、上述の図11に示す説明では、スイッチバック点12が一点挿入されるものとして説明したが、これを「スイッチバック点12が偶数箇所挿入されたもの」として読み替えて同様の処理を行う(ステップ804)。
図11に示す「スイッチバック点の挿入フロー」の全処理を終えると、手順は、ステップ805に移行して、「ループ4」の処理を開始する(ステップ805)。
「ループ4」の処理が開始されると、各経路要素毎に、この図13に示す「経路要素間の経路生成」処理が行われる(ステップ806)。この「ループ4」の処理が行われる経路要素は、つぎのように定義される。
すなわち、
1) 入口点11から最初のスイッチバック点12に至る経路
2) n番目のスイッチバック点12から(n+1)番目のスイッチバック点に至る経路
3) 出口点14の手前の最後のスイッチバック点12から出口点14に至る経路
について「ループ4」の処理が行われる。
つぎに、経路要素毎にその経路の生成が成功したか否かが判断される(ステップ807)。全ての経路要素について「経路要素間の経路生成」処理が行われ(ステップ806)、経路生成が成功したと判断されると(ステップ807の判断YES)、「ループ4」の処理を終える。そして、経路生成が成功したとして、この図13に示す「経路要素間の経路生成フロー」の全処理を終える(ステップ811)。一方、経路の生成が失敗したと判断されると(ステップ807の判断NO)、「ループ4」を抜け、経路生成が失敗したとして、この図13に示す「経路要素間の経路生成フロー」の全処理を終える(ステップ812)。
図13に示す「経路要素間の経路生成フロー」の代わりに、図39に示す「経路要素間の経路生成フロー」を実行してもよい。図39において、図13と同じ処理には、同じステップ番号(801、803〜812)を付している。
図13に示すフローにおいては、上述のステップ802において、スイッチバック挿入前に予め、スイッチバックを挿入した場合の経路のコストと、スイッチバックを挿入しない場合の経路のコストを対比して、スイッチバックを挿入した方がコスト関数の関数値が小さくなる場合にスイッチバックの必要性があると判断し、その判断結果に従いスイッチバック点を挿入した経路を生成するようにしている。
しかし、図39に示すフローにおいては、スイッチバックを挿入する前の経路のコストと、実際にスイッチバックを挿入した場合の経路のコストを対比して、実際にスイッチバックを挿入した場合の経路のコストが、スイッチバックを挿入する前の経路のコストよりも低ければ、スイッチバックを挿入した経路を採用するが、実際にスイッチバックを挿入した場合の経路のコストが、スイッチバックを挿入する前の経路のコストよりも高くなれば、スイッチバックを挿入する前の経路に戻し、このスイッチバックを挿入する前の経路を採用するようにする。
以下、図13と異なるステップ802´、追加したステップ813、814、815における各処理内容について説明する。
(ステップ802´における処理)
図13のステップ802の代わりにステップ802´の処理が行われる。
ステップ802´においては、スイッチバック点12が必要か否かの判断と、スイッチバック点12を挿入する前の経路のコストを評価する処理が行われる。
まず、スイッチバック点12が必要であるとの判断基準は、以下の判断基準により行なう。
f)新たなスイッチバック点12の挿入によって、追加可能なスイッチバック数の上限値に達しないこと。
g)可視グラフ上での経路が存在しないなどの致命的な経路生成失敗になっていないこと。
h)スイッチバック点12の挿入によってコスト関数の関数値が小さくなる可能性があること。たとえば致命的でない経路生成失敗になっていること、経路上に旋回角180°を超える大きなカーブがある場合などである。
そして、スイッチバック点12を挿入する前の経路のコスト関数の関数値が求められる。つまりスイッチバック点挿入前のコスト評価が行われる。
(ステップ813における処理)
ステップ813においては、実際にスイッチバック点12を挿入した後の経路のコスト関数の関数値が求められる。つまりスイッチバック点挿入後のコスト評価が行われる。
(ステップ814および815における処理)
ステップ814においては、スイッチバック点挿入前のコスト評価で得られたコスト関数の関数値と、スイッチバック点挿入後のコスト評価で得られるコスト関数の関数値とが対比される。この判断の結果、実際にスイッチバック点12を挿入した後の経路のコストが、スイッチバック点12を挿入する前の経路のコストよりも低ければ(ステップ814の判断YES)、スイッチバック点12を挿入した後の経路を採用し、経路生成が成功したとするが(ステップ811)、実際にスイッチバック点12を挿入した後の経路のコストが、スイッチバック点12を挿入する前の経路のコストよりも高くなれば(ステップ814の判断NO)、スイッチバック点12を挿入する前の経路に戻し(ステップ815)、このスイッチバック点12を挿入する前の経路を採用し、経路生成が成功したとする(ステップ811)。
以上のようにして図10に示す経路生成フローの処理が行われる。
つぎに、「スイッチバック点の追加に伴いスイッチバック点の最適化をやり直す方法」について説明する。
図14は、「スイッチバック点の追加に伴いスイッチバック点の最適化をやり直す方法」を示している。
(スイッチバック点の追加に伴いスイッチバック点の最適化をやり直す方法)
同図14に示すように、ステップ901〜903では、図10のステップ501〜503と同様の処理が行われる。
つぎに、「ループ1」に入り(ステップ904)、ステップ905〜908の処理が繰り返し行なわれる。
ステップ905では、図15に示す「経路の最適化フロー」が実行される。
図15に示す「経路の最適化フロー」では、まず「ループ2」に入り(ステップ1001)、「ループ2」の処理が終了条件を満足するまで繰り返し行なわれる。この終了条件は、ループ回数が上限値に達したか、所定の収束条件を満足したかなどである(ステップ1006)。
「ループ2」に入ると、「ループ3」に入り(ステップ1002)、各構成要素毎に、上述の図12に示す「経路要素の最適化フロー」が行われる。この「ループ3」の処理が行われる経路要素は、つぎのように定義される。すなわち、
A)スイッチバックがあるときは、
A−1)入口点11からスイッチバック点12に至る経路
A−2)スイッチバック点12から走行経路10の出口点14に至る経路
B)スイッチバックがないときは、
B−1)入口点11から出口点14に至る経路
経路について「ループ3」の処理が行われる。
全ての経路要素について「経路要素の最適化」処理が行われると、「ループ3」の処理を終える(ステップ1004)。
つぎに、全てのスイッチバック点12について、その位置、方向を補正する処理が行われる(ステップ1005)。
このステップ1005における全てのスイッチバック点12の補正処理は、上述の図9に示す「スイッチバック点最適化アルゴリズム」にて行われる。
図9に示す「スイッチバック点最適化アルゴリズム」は、前述の終了条件(ステップ409)を満たすまで行われる。そして、「ループ2」の終了条件を満足すると(ステップ1006)、この図15に示す「経路の最適化フロー」の全処理を終える。
手順は、図14のステップ906に戻り、スイッチバック点12が必要か否かを判断する。この場合の判断基準は、上述の(スイッチバックの必要性判定)の各判定基準のうち、以下の判断基準により行なう。
c)生成された経路が車両拘束条件を満足しない場合、たとえば最小旋回半径を満足しない場合である。
d)生成された経路が幾何学的拘束条件を満足しない場合、たとえば障害物9に干渉するおそれがある場合である。
e)スイッチバック点を導入した方がコスト関数の関数値が小さくなる場合。つまり最適化のためにスイッチバックを挿入した場合と、スイッチバックを挿入しない場合とを対比して、スイッチバックを挿入した方がコスト関数の関数値が小さくなる場合にスイッチバックの必要性があると判断する(ステップ906)。
この結果、上記判断基準を満たしている場合には、スイッチバック点12を挿入すると判断し(ステップ907の判断YES)、ステップ908に移行する。一方、上記判断基準を満たしていない場合には、スイッチバック点12を挿入しないと判断し(ステップ907の判断NO)、「ループ1」を抜け、この図14に示す「経路生成フロー」の全処理を終える。
スイッチバック点12を挿入するとしてステップ908に移行されると、スイッチバック点12を偶数箇所挿入する処理が行われる。
このスイッチバック点12を偶数箇所挿入する処理は、上述の図11に示す「スイッチバック点の挿入フロー」にて行われる。ただし、上述の図11に示す説明では、スイッチバック点12が一点挿入されるものとして説明したが、これを「スイッチバック点12が偶数箇所挿入されたもの」として読み替えて同様の処理を行う(ステップ908)。
「ループ1」の終了条件が満足されると、この図14に示す「経路生成フロー」の全処理を終える。
以下、上述の実施例で生成された走行経路10の各経路生成例を例示する。
(経路生成例1)
図33(a)は、経路生成例1で与えられる幾何学的条件であり、8aが経路生成範囲8の外形線、9aが障害物9の外形線を示している。入口点11、出口点14、停止点13の各点における方向を矢印にて示している。経路生成例1における停止点13は、排土を行う場所であり、無人車両20は後進状態で停止点13へ到達しなければならない。
図33(b)は、経路生成範囲8の外形線8a、障害物9の外形線9aと円盤とのミンコフスキー和をとったときの経路生成範囲8の外形線8b、障害物9の外形線9bを示す。
図33(c)は、入口点11を原点とする走行距離を横軸として、走行経路10の曲率の分布と最小旋回半径による制限値を示す。図33(c)に示すように、入口点11からスイッチバック点12、スイッチバック点12から停止点13、停止点13から出口点14までは、それぞれ別の曲線で表される。このため、曲線の接続点では、曲率は連続にならない。無人車両20が静止している点においてステアリング操作は理論上は可能であるが、実際には、地面の状態や積み荷重などにより多大な操作ができない場合があることや、タイヤへの負荷が大きくなることから、望ましくない。しかし、式(3.16)に示すコスト関数Eの始点と終点付近で重みを大きくすることや、スイッチバック点算出のためのコスト関数E((3.25)式)においてスイッチバック点12前後の曲率変化を小さくするための関数を用いていることなどから、大きな差はなく、十分に、無人車両20を最小旋回半径以上の旋回半径で走行させることが可能である。
図33(d)は、入口点11を原点とする走行距離を横軸として、理論最大速度Vthを示す。図33(d)において、Vgは、走行経路10の曲率半径ρによる制限であり、
Vg=√(αρ)
により求められる。αは最大許容後進加速度である。また、図33(d)において、Vstは、ステアリング操作量による制限であり、
Vst=β/γ
により求められる。βは、単位時間当たりの最大ステアリング操作量、γは、単位距離当たりのステアリング操作量である。また、図33(d)において、Vmaxは、無人車両20の最大前(後)進速度である。これらの制限の下、最大加(減)速度による加減速のみで理論最大速度Vthが求められる。理論最大速度Vthは、旋回半径やステアリング操作量の影響を受けない速度が望ましい。すなわち、旋回半径が大きく、単位距離当たりのステアリング操作量が少ない走行経路10が望ましい。本実施形態では、これら旋回半径、単位距離当たりのステアリング操作量をコスト要素としてコスト最小となるように走行経路10を求めるようにしたので、図33(d)に示すように妥当な理論最大速度Vthが得られた。
(経路生成例2)
図34(a)、(b)、(c)、(d)は経路生成例2を示す図であり、上述の経路生成例1の図33(a)、(b)、(c)、(d)に対応する図である。
経路生成例2では、無人車両20は停止点13に後進状態で入り、積み込みを行う。本来、スイッチバック点12は、停止点13に近く後進距離が短いことが望ましい。しかし、この経路生成例2では、停止点13付近に障害物9があり、その条件では車両拘束条件を満たすスイッチバック点12が存在しない。本実施形態では、SA(大域探索法)を適用しているため、図34(b)に示すように最適なスイッチバック点12の探索を行うことができる。
(経路生成例3)
図35(a)、(b)、(c)、(d)は経路生成例3を示す図であり、上述の経路生成例1の図33(a)、(b)、(c)、(d)に対応する図である。
経路生成例3では、無人車両20は停止点13に後進状態で入り排土を行う。経路生成例3の経路生成範囲8には、多数の障害物9が存在するが、これら多数の障害物9を回避した最適な走行経路10を生成することができた。
(経路生成例4)
図36(a)、(b)、(c)、(d)は経路生成例4を示す図であり、上述の経路生成例1の図33(a)、(b)、(c)、(d)に対応する図である。
経路生成例4では、無人車両20は停止点13に後進状態で入り排土を行う。経路生成例4では、無人車両20の最小旋回半径を12mとした場合を示している。図36(b)に示すように、走行経路10の全行程を通してスイッチバック点12は一点で済むものの、出口点14に至る経路要素10aにおいては、曲率は最小旋回半径12mに応じた大きな値となる。
(経路生成例5)
図37(a)、(b)、(c)、(d)は経路生成例5を示す図であり、上述の経路生成例1の図33(a)、(b)、(c)、(d)に対応する図である。
経路生成例5の幾何学的条件(図37(a))は、経路生成例4の幾何学的条件(図36 (a))と同一である。
地面のぬかるみや無人車両20の積載量により車両拘束条件は変わる。経路生成例5では、無人車両20の最小旋回半径を20mとし、経路生成例4の最小旋回半径12mよりも大きくした場合を示している。図37(b)に示すように、出口点14に至る経路要素10aにおいてその曲率は経路生成例4のものよりも小さくなっているのがわかる。ただし、走行経路10の全行程を通してスイッチバック点12は三点必要となる。
このように本実施形態によれば、車両拘束条件の変更に対して柔軟かつ的確に走行経路10を生成することができる。
以上説明した実施形態では、図5(d)のステップ231の補間点探索ステップ、つまり無人車両20が走行すべき走行経路10の各補間点を探索するステップを、図8に示すように、
ミンコフスキー和を計算するステップ(ステップ301)と、
可視グラフを生成するステップ(ステップ302)と、
改良ダイクストラ法により最適となる経路候補の辺(補間点候補)を探索するステップ(ステップ303)と
を含むステップで行うものとして説明した。
また、図5(d)のステップ232の補間ステップ、つまり入口点11から各補間点を経由して出口点14に至る経路の各補間点を補間するステップを、図8に示すように、
B−スプライン曲線によリ補間するステップ(ステップ304)
を含むステップで行うものとして説明した。
しかし、これはあくまでも一例であり、他の探索方法を用いて補間点を探索したり、他の補間手法により補間点を補間してもよい。たとえばクロソイド曲線を用いて補間点を補間してもよく、3次関数曲線を用いて補間点を補間してもよく、サイン半波長逓減曲線を用いて補間点を補間してもよい。
また、実施形態では、補間点探索ステップにおいて補間点を探索する際および補間ステップにおいて補間を行う際に、コスト関数の関数値が最小になるように処理を行うようにしている。すなわち、図8のステップ303では、コスト関数の関数値が最小になるように、経路候補の辺の組み合わせ(補間点の候補)を探索しており、図8のステップ307では、コスト関数の関数値が最小となるように方向ベクトルα、βの大きさを調整して補間すべき曲線の曲率を最適なものとしている。しかし、本発明としては、補間点探索ステップにおいて補間点を探索する際のみにコスト関数の関数値が最小になるように処理を行ってもよく、補間ステップにおいて補間を行う際にのみにコスト関数の関数値が最小になるように処理を行ってもよい。