(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
[第1項]
実施形態に係る自律走行車両は、コントローラと、前記自律走行車両の回頭角を計測するセンサと、を備える。前記コントローラは、前記自律走行車両の回頭角と仮想的な参照車両の回頭角との差である回頭角偏差に対する非線形化処理を実行する。前記コントローラは、非線形化処理された前記回頭角偏差に基づいて、前記参照車両に追従するように、前記自律走行車両の走行を制御する制御処理と、を実行する。前記非線形化処理は、前記回頭角偏差の絶対値が所定値よりも小さい場合には、前記回頭角偏差の絶対値を小さくする処理である。回頭角偏差の絶対値が所定値よりも小さい場合には、前記回頭角偏差の絶対値を小さくすることで、回頭角の計測誤差が生じたとしても、自律走行の精度低下を抑制することができる。
【0013】
[第2項]
前記制御処理は、逆最適制御によって走行を制御する処理であるのが好ましい。逆最適制御は、不整地を車両が走行する場合に生じる外乱に対してロバスト性を有する。
【0014】
[第3項]
前記コントローラは、非線形化処理された前記回頭角偏差の変換処理を更に実行するよう構成され、前記変換処理は、非線形化処理された前記回頭角偏差と、前記自律走行車両の位置と前記参照車両の位置との左右方向における差である横偏差の関数の値と、を加算して、変換された回頭角偏差を求め、前記制御処理は、変換された前記回頭角偏差に基づいて実行されるのが好ましい。この場合、変換された回頭角偏差は、横偏差及び回頭角偏差の関数となる。
【0015】
[第4項]
前記関数は、h(z)=Az/(1+Bz
2)であるのが好ましい。ここで、h(z)は、zh(z)>0,∀z≠0,かつh(0)=0を満たす関数であり、A,Bは、正の値をとる設定パラメータであり、z=e
2vであり、e
2は、横偏差であり、vは、前記自律走行車両の速度である。この場合、コントローラの調整が容易となる。
【0016】
[第5項]
実施形態に係るコントローラは、前記自律走行車両の回頭角と仮想的な参照車両の回頭角との差である回頭角偏差に対する非線形化処理と、非線形化処理された前記回頭角偏差に基づいて、前記参照車両に追従するように、前記自律走行車両の走行を制御する制御処理と、を実行するよう構成されている。前記非線形化処理は、前記回頭角偏差の絶対値が所定値よりも小さい場合には、前記回頭角偏差の絶対値を小さくする処理である。
【0017】
[第6項]
実施形態に係るコンピュータプログラムは、コンピュータに、自律走行車両の回頭角と仮想的な参照車両の回頭角との差である回頭角偏差に対する非線形化処理と、非線形化処理された前記回頭角偏差に基づいて、前記参照車両に追従するように、前記自律走行車両の走行を制御する制御処理と、を実行させる。
【0018】
[第7項]
実施形態に係る自律走行車両の制御方法は、前記自律走行車両の回頭角と仮想的な参照車両の回頭角との差である回頭角偏差に対する非線形化処理をすること、非線形化処理された前記回頭角偏差に基づいて、前記参照車両に追従するように、前記自律走行車両の走行を制御することを含む。前記非線形化処理は、前記回頭角偏差の絶対値が所定値よりも小さい場合には、前記回頭角偏差の絶対値を小さくする処理である。
【0021】
図1は、車両100を示している。車両100は、コントローラ10によって自律走行する。車両100は、走行する装置であり、例えば、ロボットトラクタである。ロボットトラクタは、自律走行するトラクタである。車両100は、ロボットトラクタに限られず、他の種類の車両であってもよい。
【0022】
車両100は、コントローラ10を備える。コントローラ10は、プロセッサ11及びメモリ12を有するコンピュータを備える。メモリ12にはプロセッサ11によって実行されるコンピュータプログラムが格納されている。プロセッサ11がコンピュータプログラムを実行することで、コンピュータがコントローラ10として機能する。
【0023】
車両100は、車両の状態を計測するセンサ21,22を備える。センサ21は、車両100の回頭角θを計測する。回頭角θは、方位角として検出される。センサ21は、例えば、磁気方位を計測する磁気センサである。計測された回頭角θは、コントローラ10に与えられる。センサ22は、車両100の位置を計測する。車両100の位置は、位置座標(x,y)として検出される。センサ22は、例えば、全地球衛星測位システム(GNSS)受信機である。計測された位置(x,y)は、コントローラ10に与えられる。
【0024】
コントローラ10は、制御対象である車両100への制御入力として、車両100の舵角φを出力する。ただし、以下の説明では、コントローラ10は、制御入力として速度v及び旋回角速度ωを扱う。本実施形態の車両100は、舵角φが変化することにより旋回するため、コントローラ10は、速度v及び角速度ωを舵角φに変換して出力する。この変換については後述する。
【0025】
コントローラ10は、舵角φに応じて、車両の舵角を調整するアクチュエータ30を制御する。アクチュエータ30は、コントローラ10からの指令に応じて、操舵輪を動かし、車両100の回頭角を変化させる。コントローラ10は、車両100への制御入力として車両100の速度vを出力してもよい。
【0026】
[2.2 経路追従制御]
コントローラ10は、経路追従(Path Following)制御によって車両100を自律走行させる。
図2に示すように、経路追従制御では、仮想的な参照車両200が用いられる。経路追従制御においては、実車両である車両100は、参照車両200に参照入力を与えたときに参照車両200が描く参照軌道に追従する。
図2に示すように、経路追従制御では、車両100は、参照車両200の真横に位置して、参照車両200に追従する。参照軌道は、車両100が自律走行する場合の望ましい軌道である。
【0027】
車両100の状態をq=[x,y,θ]
T、参照車両の状態をq
r=[x
r,y
r,θ
r]
Tとすると、それらの運動学モデルは、以下のように表される。
【数1】
【数2】
【0028】
ここで、x,yは、xy座標系における車両100の位置を示し、θは、車両100の回頭角である。x
r,y
rは、xy座標系における参照車両200の位置を示し、θ
rは、参照車両200の回頭角である。v,ωは、車両100の速度と角速度であり、v
r,ω
rは、参照車両200の速度と角速度である。
【0029】
車両100と参照車両200の相対誤差は、以下のように定義される。
【数3】
【0030】
誤差e
1は、車両100と参照車両200との前後方向位置の差である。以下では、誤差e
1を、前後偏差という。誤差e
2は、車両100と参照車両200との左右方向位置の差である。以下では、誤差e
2を、横偏差という。誤差e
3は、車両100の回頭角θと参照車両200の回頭角θ
rとの差である。以下では、誤差e
3を、回頭角偏差という。
【0031】
ある初期条件のもと、制御入力としての速度v及び旋回角速度ωを次のように選ぶと、偏差e
1,e
2,e
3は0へ収束する。
【数4】
【数5】
【0032】
ただし、K
1,K
2,K
3は設定パラメータであり、正の定数である。
【0033】
式(3)で示される相対誤差を時間微分することにより、次の式(6)が得られる。
【数6】
【0034】
追従制御を行う場合には、車両100と参照車両200との前後方向の位置の差は考えなくてもよいため、制御入力の進行方向成分vには任意の速度を与え、e
1=0,e
1の時間微分=0とすると、式(6)から、参照車両200の速度v
rが以下のように決定される。
【数7】
【0035】
ここで、旋回の曲率をρとすると、参照車両200の速度v
r,角速度ω
rは、車両100の速度vに応じ、以下のようになる。
【数8】
【数9】
【0036】
よって、e
2,e
3を0に収束させる入力は、式(5)によって決定されるωのみとなり、このとき、式(6)は、以下のように書き換えられる。
【数10】
【0037】
[2.3 コントローラによる制御則]
【0038】
[2.3.1 逆最適制御]
車両100が、舗装された道路ではなく、農地のような不整地を走行する場合、地面の凹凸やすべりによる外乱を受ける。車両100がトラクタである場合、トラクタが牽引する作業機による振動や抵抗による外乱も受ける。車両100の経年劣化などによって、モデルの変化及び不確かさによるモデル化誤差も大きくなる。本実施形態では、外乱及びモデル化誤差に対応したロバストな制御則として、逆最適制御法を採用する。コントローラ10は、逆最適制御によって、車両100の走行を制御する。
【0039】
最適制御問題は、システム
【数12】
に対して、以下の条件を満足する制御入力u(x)を設計することである。
【0040】
1.u(x)は系を目標状態に漸近収束させる。
2.u(x)は以下の評価関数Jを最小化する。
【数13】
【0041】
しかし、この最適制御問題を解くには、Hamilton-Jacobi-Bellman方程式を解く必要がある。そこで、本実施形態では、より容易である以下の逆最適化のアプローチをとる。
1.まずフィードバック則を設計する。
2.その後、式(13)のような評価関数に対して最適であることが示される。
【0042】
[2.3.2 Sontagの形式による制御]
次式で示されるアフィンシステムを考える。
【数14】
【0043】
ここで、fは、n次元のベクトル、gはn×m行列である。このとき、以下の条件を満たす関数をControl Lyapunov Function(CLF)と定義する。
【0044】
(定義:Control Lyapunov Function)すべてのx≠0に対して、次の関係を満足する、なめらかで正定かつ放射状に非有界な関数V(x)は、式(14)のシステムに対するControl Lyapunov Function(CLF)と呼ばれる。
【数15】
このとき、次の定理が成立することが明らかとなっている。
【0045】
(定理:CLFからの逆最適制御)
a(x),b(x),p(x)が以下の式で定義されるとき、
【数16】
【数17】
【数18】
Sontagの形式による次の入力
【数19】
は、システムを漸近安定化し、かつ次の評価関数を最小化する。
【数20】
【0046】
この最適性によって、求められたコントローラは、sectormargin(1/2,∞)とよばれる安定上の利点を持つ。
【0047】
[2.3.3 逆最適経路追従制御]
本実施形態のコントローラ10は、経路追従制御を逆最適制御によって行う。以下では、経路追従制御のための逆最適コントローラ10を説明する。
【0048】
まず、以下の関数を定義する。ただし、A,Bは設定パラメータであり、正の値である。
【数21】
ここで、h(z)は、zh(z)>0,∀z≠0,かつh(0)=0の条件を満たす関数である。h(z)は、かかる条件を満たす関数であればよく、式(21)の形式に限定されない。
【数22】
【0049】
以下の式(23)によって、コントローラ10は、回頭角偏差e
3を変換する変換処理を行う。実施形態において、変換処理は、回頭角偏差e
3に、式(21)に示す関数hの値を加算して、変換された回頭角偏差e
~3を求める処理である。ここでは、式(21)において、z=e
2vであり、hは、横偏差e
2の関数となっている。
【数23】
【0050】
CLFからの逆最適制御では、式(15)を満たす必要があるが、回頭角偏差e
3は、単独では、式(15)の関係を満たさない。しかし、zh(z)>0となる関数h(z)を、回頭角偏差e
3に加算すると、式(15)を満たすことができる。式(23)に示すように、変換された回頭角偏差e
~3は、横偏差e
2と回頭角偏差e
3の関数として表される。
【0051】
式(21)によれば、e
2vの絶対値が大きい場合には、e
2vが、式(23)に示す回頭角偏差e
~3に反映される度合は小さくなる。一方、e
2vの絶対値が小さい場合には、e
2vは、その大きさに応じた値がe
~3に反映される。
【0052】
式(10)及び式(23)より、次式が得られる。
【数24】
【0053】
式(24)に基づくと、以下で示されるV
iは、Control Lyapunov Function(CLF)となる。
【数25】
ここで、K
i2,K
i3は正定数である。K
i2はe
2に対するゲインであり、K
i3はe
~3に対するゲインである。
【0054】
仮に、式(25)において、e
~3がe
3である場合には、e
2,e
3に対するゲインK
i2,K
i3を別々に設定することで、e
2,e
3に対するゲインを個別に調整でき問題はない。しかし、V
iがControl Lyapunov Function(CLF)であるためには、式(25)において、e
~3が採用されている必要がある。e
~3は、e
2とe
3の関数であるため、ゲインK
i2,K
i3を別々に設定しただけでは、e
2,e
3に対するゲインを個別に調整するのは必ずしも容易ではない。
【0055】
例えば、経路追従制御では、回頭角偏差e
3が生じたために横偏差e
2が大きくなった場合に、その回頭角偏差e
3を小さくしようとすると、横偏差e
2を小さくすることができない。一方、横偏差e
2を小さくしようとすると、却って回頭角偏差e
3が大きくなる。経路追従制御では、横偏差e
2と回頭角偏差e
3とにはトレードオフがある。したがって、e
2とe
3の関数であるe
~3を、単一のゲインK
i3で適切に調整するのは必ずしも容易ではない。
【0056】
これに対して、本実施形態では、式(21)の関数hが有する設定パラメータA,Bを調整することで、変換された回頭角偏差e
~3に、横偏差e
2をどの程度反映させるかを調整でき、コントローラ10を適切に調整するのが容易となる。ここで、式(21)では、設定パラメータAは、関数hの値の大きさを決定し、設定パラメータBは、e
~3にe
2vの大きさに応じた値が反映されるe
2vの範囲を決定する。
【0057】
さて、式(25)で示されるV
iが、Control Lyapunov Function(CLF)であるとき、
【数26】
【数27】
である。
【0058】
式(26)(27)を、式(19)の制御入力を出力するコントローラ10に適用することで、横偏差e
2及び回頭角偏差e
3を0に収束させる角速度ωが決定される。ただし、速度v
rが有界であるには、e
3≠π/2かつe
2ωが有界でなければならない。
【0059】
[2.3.4 入力の変換]
式(19)の制御入力は、車両100の速度vと旋回角速度ωであるが、実際の車両100は、操舵輪である前輪の舵角φが変化することにより旋回する。舵角φと、速度v及び旋回確度ωとの関係は、以下のとおりである。ここで、Lは、車両100の前後輪の距離である。
【数28】
【0060】
コントローラ10は、決定された角速度ωを式(28)で舵角φに変換し、舵角φに応じてアクチュエータ30を制御する。
【0061】
[2.3.5 回頭角偏差e
3の非線形化]
回頭角偏差e
3は、計測される方位角(回頭角)θの計測誤差の影響を受けて、実際の回頭角偏差よりも大きくなることがある。実際よりも大きい回頭角偏差e
3に基づいて制御すると、横偏差e
2を収束させ難くなる。この場合、制御入力を求める場合の回頭角偏差e
3に対するゲインを小さくすれば、その分、方位角θの計測誤差の影響も小さくできる。しかし、単に、回頭角偏差e
3に対するゲインを小さくすると、回頭角偏差e
3が本当に大きい場合に、横偏差e
2を収束させるのがやはり困難になる。
【0062】
本実施形態では、計測誤差の影響を低減するため、コントローラ10は、回頭角偏差e
3の非線形化処理を行う。回頭角偏差e
3の非線形化処理のための関数i(e
3)は、例えば、以下のように定義される。以下では、関数i(e
3)の値を、非線形化回頭角偏差という。
【数29】
ここで、aは、関数i(e
3)の原点での傾き、εは非線形化を行う範囲を表し、例えば、以下の条件を満たすように決定される。
【数30】
【数31】
【0063】
関数i(e
3)による非線形化処理は、回頭角偏差e
3の絶対値が所定値εよりも小さい場合には、回頭角偏差の絶対値を小さくする処理である。
図3における実線は、関数i(e
3)の例を示す。ここでは,a=0.1,ε=0.020に決定した。なお、
図3における点線は、傾き1の直線である。
【0064】
非線形化処理においては、回頭角偏差e
3の絶対値が所定値εよりも小さい範囲、すなわち−ε≦e
3≦εの範囲においては、関数iは非線形関数となっており、
図3に示すように、非線形化回頭角偏差i(e
3)の絶対値が、回頭角偏差e
3の絶対値よりも小さくなる非線形化が行われる。回頭角偏差e
3の絶対値が小さい範囲では、計測誤差の影響が相対的に大きくなるため、非線形化処理により、回頭角偏差e
3の絶対値を小さくして回頭角偏差e
3を重視しないようにして、計測誤差の影響を小さくする。これにより、横偏差e
2を収束させるのが容易となる。
【0065】
一方、回頭角偏差e
3の絶対値が所定値εよりも大きい範囲、すなわち、−ε>e
3,e
3<εの範囲では、関数iは線形関数であり、i(e
3)=e
3となる。つまり、回頭角偏差e
3の絶対値が所定値εよりも大きい場合には、非線形化回頭角偏差i(e
3)は、非線形化処理前の回頭角偏差e
3の値を維持する。回頭角偏差e
3の絶対値が大きい範囲では、計測誤差の影響が相対的に小さくなるため、回頭角偏差e
3の絶対値を小さくすることなく制御入力の決定に用いることで、回頭角偏差e
3が本当に大きい場合に、横偏差e
2を収束させるのが容易となる。
【0066】
傾きaは、計測誤差の大きさに応じて適宜設定される。計測誤差が小さい場合には、傾きaを上記の範囲で大きくすることで、−ε≦e
3≦εの範囲の関数i(e
3)が、回頭角偏差e
3の絶対値を小さくする度合が小さくなる。逆に、計測誤差が大きい場合には、傾きaを上記の範囲で小さくすることで、−ε≦e
3≦εの範囲の関数i(e
3)が、回頭角偏差e
3の絶対値を小さくする度合が大きくなる。
【0067】
コントローラ10は、傾きaとして予め設定された値を用いても良いし、計測誤差の大きさに応じて傾きaを動的に変更してもよい。計測誤差の大きさは、例えば、コントローラ10が、カルマンフィルタを用いて推定できる。
【0068】
非線形化範囲εも、計測誤差の大きさに応じて適宜設定される。計測誤差が小さい場合には、非線形化範囲εを上記の範囲で小さくして、非線形化処理の範囲を絞ることができる。逆に、計測誤差の大きさが大きい場合には、非線形化範囲εを上記の範囲で大きくして、非線形化処理の範囲を広げることができる。
【0069】
コントローラ10は、非線形化範囲εとして予め設定された値を用いても良いし、計測誤差の大きさに応じて非線形化範囲εを動的に変更してもよい。前述のように、計測誤差の大きさは、例えば、コントローラ10が、カルマンフィルタを用いて推定できる。
【0070】
実施形態において、−ε≦e
3≦εの範囲におけるi(e
3)は、−ε>e
3,e
3<εの範囲におけるi(e
3)=e
3に対してなめらかに連続する関数として設定されている。−ε≦e
3≦εの範囲における関数i(e
3)と、−ε>e
3,e
3<εの範囲における関数i(e
3)と、がなめらかに連続するものであることで、制御が安定化する。
【0071】
式(29)を用いると、式(23)は以下のように書き換えられる。
【数32】
【0072】
これにより、式(24)と同様に次式が得られる。
【数33】
【0073】
式(33)に基づくと、先の式(25)で示されるV
iは、Control Lyapunov Function(CLF)となる。このとき、
【数34】
【数35】
である。
【0074】
式(34)(35)を、式(19)の制御入力を出力するコントローラ10に適用することで、横偏差e
2及び回頭角偏差e
3を0に収束させる角速度ωが決定される。ただし、速度v
rが有界であるには、e
3≠π/2かつe
2ωが有界でなければならない。
【0075】
[2.4 コントローラによる処理手順]
図4は、経路追従制御を逆最適制御によって行うコントローラ10による処理手順を示している。ステップS1において、コントローラ10は、横偏差e
2と回頭角偏差e
3を算出する。横偏差e
2は、センサ22によって計測された位置(x,y)と、参照車両200の位置(x
r,y
r)と、参照車両200の回頭角θ
rと、から算出される(式(3)参照)。回頭角偏差e
3は、センサ21によって計測された回頭角θと、参照車両200の回頭角θrと、から、回頭角偏差e
3も算出する(式(3)参照)。
【0076】
ステップS2において、コントローラ10は、回頭角偏差e
3に対して、非線形化処理を行って、非線形化回頭角偏差i(e
3)を求める。非線形化処理のための関数iは、コントローラ10のメモリ12に、非線形化処理用のデータ121として記憶されている。プロセッサ11は、非線形化処理用のデータ121を読み出して非線形化処理を行う。回頭角偏差e
3に対して非線形化処理が行われるため、前述のように、センサ21によって計測された回頭角θに計測誤差が含まれていても、その影響が低減される。
【0077】
ステップS3において、コントローラ10は、非線形化回頭角偏差i(e
3)に対して、式(32)に従った変換処理を行う。変換処理では、非線形化回頭角偏差i(e
3)と、横偏差e
2の関数h(e
2v)の値と、を加算して、変換された非線形化回頭角偏差e
~3が求められる。変換処理のための設定パラメータA,B(式(21)参照)は、コントローラ10のメモリ12にパラメータ値122及びパラメータ値123として設定されている。プロセッサ11は、パラメータ値122,123を設定パラメータA,Bとして読み出して、変換処理を行う。設定パラメータA,Bがあるため、変換された非線形化回頭角偏差e
~3が適切になる。設定パラメータA,Bは、ユーザ入力により調整されてもよいし、コントローラ10自らが、車両100の走行環境等に応じて調整してもよい。
【0078】
ステップS4において、コントローラ10は、横偏差e
2及び変換された非線形化回頭角偏差e
~3に基づき、逆最適制御によりe
2及びe
~3を収束させる角速度ωを決定する。コントローラ10は、角速度ωから、式(28)に基づいて、舵角φを求め、アクチュエータ30を制御する。
【0080】
[2.5.1 非線形化処理]
図5A,5B,6A,6Bは、回頭角θの計測誤差がある場合において、回頭角偏差e
3に対する非線形化処理の有無による車両100の状態の違いをシミュレーションした結果を示す。
図5Aは、非線形化処理を行った場合の横偏差e
2及び回頭角偏差e
3を示し、
図5Bは、非線形化処理を行わない場合の横偏差e
2及び回頭角偏差e
3を示す。
図6Aは、非線形化処理を行った場合の舵角φを示し、
図6Bは、非線形化処理を行わない場合の舵角φを示す。
【0081】
図5Bに示すように、非線形化処理を行わない場合の横偏差e
2は、0.1m程度であったのに対して、
図5Aに示すように、非線形化処理を行った場合の横偏差e
2は、0.04〜0.05m程度に低減される。シミュレーションにより、回頭角θの計測誤差があっても、非線形化処理を行うことで、横偏差e
2を抑制できることが確認された。
【0082】
[2.5.2 設定パラメータA,B]
図7A,7B、8A,8B,9A,9Bは、式(21)のパラメータA,Bを調整した場合の横偏差e
2,回頭角偏差e
3,舵角φを示す。
図7A,7Bは、A=1,B=1に設定した場合であり、この場合、横偏差e
2は、0.04m程度である。
図8A,8Bは、A=1,B=30に設定した場合であり、この場合、横偏差e
2は、0.025m程度である。
図9A,9Bは、A=1,B=15に設定した場合であり、この場合、横偏差e
2は、0.023m程度である。このように、パラメータA、B、特に、パラメータBを適切に調整することにより、横偏差e
2を容易に小さくすることができる。
【0083】
なお、本発明は、上記実施形態に限定されるものではなく、様々な変形が可能である。