モチベーション
それが、学生たちからのモチベーションでした。では、技術的なモチベーションを確認してみましょう!
軌道追従は自律走行に欠かせない要素のひとつで、車両の横方向と縦方向の動きを制御して、あらかじめ設定された軌道をたどることが目標になります。例えば、フォーミュラ・スチューデント・ドライバーレス競技では、車両は最初の1周で進路の計画と追跡を同時に行う必要があります。
さらに、その後の周回では、車両は最適化された軌道をより高速で追跡します。そのため、軌道からの大きな逸脱を避けるために、コントローラーの追従精度を高くする必要があります。
現在、
軌道追従問題に対処するための複数の制御戦略が存在しますが、このブログでは、以下の3つの軌道追従コントローラに焦点を当てます:
- 純粋追跡コントローラー
- スタンレーコントローラー
- モデル予測コントローラ(MPC)
これからのセクションを要約すると、まず参照軌道を生成します。次に、車両モデルを構築します。最後に、車両の縦方向と横方向の動きを制御するために、上記の3つの制御戦略をいかに簡単に実装できるかを紹介します。
参照軌跡
車両の姿勢データが既に記録されている場合は、この手順を省略できます。 ただし、参照軌跡を生成する場合は、
Driving Scenario Designerアプリを使用できます。 このアプリを使用すると、自動運転システムをテストするための合成運転シナリオを設計できます。 この場合、事前に作成されたシナリオに存在する米国の高速道路シーンのセクションを利用しました。 次に、車両とその軌跡を指定し、軌跡データを MAT fileに出力しました。
車両モデル
以降のセクションでは、すべてのコントローラー モデルに同じビークル ダイナミクス モデルを使用しました。これらのコントローラーは、必要なステアリング角度、加速、減速コマンドを生成することを目的としています。
基本的な縦方向および横方向のビークル ダイナミクス モデルから始めるには、次のビデオ チュートリアルをご覧ください。
コントローラー
単純追跡コントローラー(Pure Pursuit Controller)
制御ストラテジーを実装する最初の選択肢として、私たちは単純追跡コントローラを進めました。簡単に言うと、ある地点から別の地点に車両を移動させるために軌道の曲率を計算する軌道追跡アルゴリズムです。定式化の通り、基準軌道をたどるために車両の車輪の舵角を計算することができます。
操舵角の定式化でわかるように、変数の1つはルックアヘッドディスタンスです。一般的には、角速度指令を計算するために、車両が現在地から軌道に沿ってどの程度の距離を見るべきかを表します。これは、コントローラのトラッキング精度を確保するための重要な調整要因の1つです。ルックアヘッドディスタンスが小さいと、振動的な軌道になり、正確なトラッキングができません。一方、ルックアヘッドディスタンスが大きいと、振動的な軌道は少なくなりますが、トラッキングがうまくいかないことがあります。
さて、単純追跡型コントローラについて簡単に紹介しましたが、下の画像はSimulinkでの実装を示したものです。
実装には、
姿勢(Pose)と参照軌道(Waypoints)の2つの入力ポートから目標方向角度(TargetDir)を計算する
Pure Pursuitブロックを使用しました。このブロックでは、ルックアヘッドディスタンスを設定することで、コントローラを調整することができます。さらに、上記の式に基づき、必要な車輪の操舵角を求めることで、下図のような軌道に車両を追従させることができます。
スタンレーコントローラー(Stanley Controller)
次に、スタンフォードレーシングチームがDARPAグランドチャレンジで実装したスタンレーコントローラーを紹介します。スタンレーコントローラは、DARPAグランドチャレンジでスタンフォードレーシングチームが実装したもので、基準軌道に対する前輪の交差軌道誤差と方位角を最小化する
非線形制御則を用いています。これにより、車両の現在の姿勢を基準姿勢に合わせる操舵角コマンドを計算します。
Simulink でコントローラーをモデル化するために、
Lateral Controller Stanley ブロックを使用しました。 ブロックは、上記の式に基づいてステアリング角度を計算します。 興味深いのは、コントローラーの設定を使用して車両モデルのタイプを選択できることです。 たとえば、駐車場などの低速追跡にはkinematic bicycle modelを使用できますが、レース カーなどの高速追跡にはdynamic bicycle modelを使用することをお勧めします。 さらに、位置、ヨー レート、およびステアリング ゲインを調整して、コントローラーの精度を向上させることができます。
単純追跡コントローラーモデルと同様に、スタンレーコントローラーを使用して車両軌道追跡モデルを構築しました。 車両モデルと参照軌道は同じままです。 モデルをシミュレーションすると、高速環境で車両が目的の軌道をうまく追跡し、最大速度 30 m/s を達成していることが分かります。
モデル予測コントローラ (Model Predictive Controller (MPC))
最後に、Simulink でのパス トラッキング アプリケーション用の MPC の実装を確認しましょう。 MPC はオンライン最適化アルゴリズムを解いて、予測出力を基準に導く最適な制御アクションを見つけます。これにより、入力と出力の間に相互作用がある可能性のある多入力多出力システムと 入力と出力の制約も処理できますが、計算コストが高いというデメリットがあります。
日本人向けには「
モデル予測制御(MPC)」のタイトルで MATLABビデオ シリーズが既にあるため、このセクションでは詳しく説明しません。 ビデオを見て、MPC がどのように機能するかを学び、この多変数制御技術の利点も発見できます。
MPC コントローラーを実装するために、最初は汎用の
MPC Controllerブロックから始めました。 ただし、
Path Following Control System ブロックは、軌道を追跡するためのより優れた代替手段です。 一般に、ブロックは、設定された速度を追跡し、先行車両からの安全な距離を維持しながら、自車両が直線または曲線道路の中心に沿って走行し続けることを目的としています。 ただし、設定速度をビークルの基準速度に設定し、距離ベースの曲率を曲率ポートに設定することで、軌跡をたどるように実装しました。 さらに、ブロックの出力は縦方向の加速度であるため、ペダル マップを接続して、必要な加速と減速のコマンドを取得しました。
最後に、予測範囲、制御範囲などの適切な設計パラメーターを選択した後、モデルをシミュレートし、車両が軌道を完全に追跡していることを確認できます。
独自のモデルを構築する時が来ました
このブログでは、上記のコントローラーの技術的な詳細をすべて取り上げているわけではありませんが、これらのコントローラーを MATLAB および Simulink に実装する方法の概要を説明しています。 軌道追跡モデルを使い始めるのに十分な背景とリソースを提供できれば幸いです。これらのリソースを参考に、次はより困難な軌道に対して車を走らせてみませんか?
댓글
댓글을 남기려면 링크 를 클릭하여 MathWorks 계정에 로그인하거나 계정을 새로 만드십시오.