MyEnigmaスマートフォン用の表示で見るMyEnigmaとあるエンジニアのブログです。Problem)という問題があります。これは、2つの状態量(二次元平面では、ロボットの位置x,y,そして方位yaw)が与えられた時に、障害物は考慮せず、その2つの状態量を結ぶパスを生成するという問題です。pathがありますが、myenigma.hatenablog.com両方とも、非常にシンプルなモデルを使用していたり、パスが最大曲率の円と直線で構成されているなど、いくつか技術的な課題がありました。Generationという技術を紹介しようと思います。Generation(MPTG)は、ロボットのパスプランニング問題の一つである境界問題を解くアルゴリズムです。宇宙ロボットのパスプランニングのアルゴリズムとして使用されています。challengeの優勝チームであるCMUの自動運転車両BossもこのMPTGをパスプランニングアルゴリズムとして使っていました。車両の時系列入力プロファイルを最適化によってもとめます。入力プロファイルをスプライン曲線などで近似し、モデルパラメータを最適化によって計算します。最適化計算の高速化と安定性向上を実現できます。非線形のモデルをそのまま最適化します。前述の入力モデルパラメータを最適化するのです。入力プロファイルと運動モデルから計算されたパスの最終位置の誤差が最小になるように入力モデルパラメータを最適化します。逐次線形化し推定する手法が使われます。最適化の結果が、局所解に陥ることがあります。目標ゴールに近いパスを生成できる初期入力パラメータを推定するデータベースを事前に準備しておく手法が一般的なようです。詳細は下記の論文を参照ください。よる2状態空間のパス生成Pythonプログラム下記のコードは、MPTGを利用した2状態空間の間のパス生成Pythonプログラムです。Modelを使用しています。速度は一定速度とし、ステアリング入力は2次スプラインを使用しています。終端ステアリング角kfの3つになります。非線形最適化の境界条件として利用します。下記は、上記のコードを使ったパスプランニングのシミュレーション動画です。矢印が目標状態で、赤線が各最適化ループにおけるパスです。目標ゴールが異なっていても最適化によってパスが生成できていることがわかります。初期ステアリング角度が右に切れている場合のパス最適化の結果です。下記の結果の通り、初期ステアリング角度が異なっていてもパスが生成できていることがわかります。Tableを生成するPythonサンプルプログラムです。github.com2次元空間上のx,y,yawを等間隔にサンプリングし、それぞれのゴールに対して、上記のパス最適化を利用し、パスを生成しています。tableの中から、最も目標ゴールに近いものを選択し、そのゴールに対応した、制御パラメータを最適化の際の初期値としています。Tableのデータを元に各Tableの制御パラメータを元にパスを生成したものです。Tableから最も近いゴールのパスの制御パラメータを初期値とすることで、パスの最適化を高速化&安定化することができます。Supportersもしこの記事が参考になり、ブログをサポートしたいと思われた方は、こちらからよろしくお願いします。はてなブログProとあるエンジニアのブログです。Page月別アーカイブスポンサーリンクスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。