目次
はじめに
以前、最適制御の手法として有名な
線形二次レギュレータ(LQR)の概要を説明しましたが、
先日、中国の検索エンジン会社バイドゥが公開した
自動運転ソフトウェアApolloにおいて、
このLQRをステアリング制御に使用していました。
Baidu自動運転ソフトApolloを軽く読んでみたけど、今のところローカリはRTKGPS+IMU、制御は進行方向はPID、ステアリングは逐次LQRだった:An open autonomous driving platform https://t.co/1EB7VSxrsQ
— Atsushi Sakai (@Atsushi_twi) 2017年7月5日
そこで今回、このLQRを使ったステアリング型ロボットの
経路追従の技術概要と
簡単なPythonサンプルコードを紹介したいと思います。
LQRを使ったステアリング制御
LQRの基礎的な部分に関しては、
下記の記事を参照ください。
前述のApolloのコードでは、
車両の横方向のモデルとして
Dynamicモデルを使用していましたが、
今回のシミュレーションでは、
線形のKinematicモデルを使います。
車両モデルの詳細については下記を参照ください。
LQRを使ったステアリング制御Pythonサンプルコード
下記のGitHubリポジトリに
LQRを使ったステアリング制御の
Pythonサンプルコードを公開しました。
上記のシミュレーションでは、
アクセルブレーキ制御はPID
ステアリング制御はLQRを使っています。
また事前のコース生成には3次スプライン
シミュレーションのgif動画作成には、
下記の記事の手法を使用しました。
下記がシミュレーション動画です。
綺麗にトラッキングしているのがわかります。
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。