本シリーズでは、実際に車やロボットの自動運転を行うために必要な制御工学の情報を紹介していきます。
今回は、本シリーズで取り扱う問題と制御の全体像を紹介していきます。
問題:自動運転車を制御する
本シリーズでは、上の図のように与えられた指令軌跡(青の点線)に沿うように車を制御する方法を考えます。
軌跡は、下の表のように離散的な点(青の✕)で与えられた場合を考えます。
$$ \begin{eqnarray} \begin{array}{c|c} X-axis & Y-axis \\ \hline 0 & 0 \\ 0 & 2 \\ 2 & 4 \\ 4 & 4 \\ 5 & 2 \\ 7 & 2 \\ 8 & 4 \\ \vdots & \vdots \\ \end{array} \end{eqnarray} $$
本シリーズでは、この様に離散的に与えられた指令点に沿うように車を制御する方法を紹介していきます。
ちなみに、このシリーズで紹介する方法は、車に限定した制御方法でありません。
他のロボットを扱う場合も、今回の方法を用いることで制御することが可能になります。
制御の流れ
今回の自動運転車の制御を行うために、制御システム全体のブロック線図を下図のように定義します。
基本的な制御システムの考え方は、入力として与えられた目標軌跡と現在値を比較して、その誤差によって制御信号を計算し、制御対象に送ることで車の制御を行います。
下記にて、制御システム内に含まれる各ブロックについて紹介します。
それぞれのブロックの詳しい求め方は、それぞれのリンクから各記事にて確認してください。
制御対象
今回のシステムで制御対象は車です。
この車の機械モデルを運動学を用いることで算出します。
機械モデルを用いることで、入力として速度やハンドル(ステアリング)の角度が与えられた場合の車の位置を求めることが出来ます。
実際に車の機械モデルを算出する方法は、こちらの記事で紹介します。
誤差算出
車を指令された軌跡に沿って走らせるということは、車の位置が目標の軌跡の上に存在するように制御するということです。
そのためには、車の位置と与えられた目標の軌跡から現時点での誤差を求める必要があります。
この誤差を三角関数やベクトルの知識を使って求めることが出来ます。
実際に車の現在位置と目標軌跡との誤差を算出する方法は、こちらの記事で紹介します。
コントローラー
コントローラーでは、算出した誤差(位置や角度)を基に、車を目標軌跡に近づけるために必要となる制御量を算出していきます。
今回の自動運転車のコントローラーを単純に説明すると、
- 車が目標軌跡から右にずれている ⇒ ハンドルを左に切る
- 車が目標軌跡から左にずれている ⇒ ハンドルを右に切る
という、シンプルなものを扱います。
また、車の位置と指令軌跡との誤差が大きければ、その誤差を減らすために大きくハンドルを動かし、誤差が小さければ少しだけハンドルを動かします。
実際に車の現在位置と目標軌跡との誤差から制御値としてハンドルの角度を算出する方法は、こちらの記事で紹介します。
まとめ
今回は、本シリーズで取り扱う自動運転車の実現の導入部として、この問題の全体像を紹介しました。
次回からは、本記事でも紹介した制御システム内の各ブロックについて、実際に制御を実現するために必要となる詳細な情報を紹介していきたいと思います。