理系的な戯れ

理工学系とくにロボットやドローンに関する計算・プログラミング等の話題を扱って、そのようなことに興味がある人たちのお役に立てればと思っております。

ミサイルの誘導法対決

f:id:kouhei_ito:20200320143443p:plain

はじめに

こんにちは、こうへいです。

今日はミサイルの誘導法について取り組みたいと思います。

ゲームとかでミサイル実装するのに役立つかな。

単純追尾航法 PPN(Pure Pursuit Navigation)

f:id:kouhei_ito:20200320153801p:plain
単純追尾航法

見えている方向に追いかけていく方法です。子供が鬼ごっこしているときがこんな感じになっているかもしれません。 単純に言えば角度制御です。

追尾軌跡を犬が何かを追いかける軌跡に似ていることから「犬追い曲線」と言います。

何かを追いかけることを考えたときに最初に思いつく方法だと思います。

比例航法 PN (Proportional Navigation)

f:id:kouhei_ito:20200320153855p:plain
比例航法

見えている方向角(LOS角)が動く速度に比例して、ミサイルの旋回速度を変化させる方法です。

例えば、真っ直ぐお尻を追いかけていて見えている方向が変化しなければミサイルは旋回せずに真っ直ぐ飛べば命中しますが、 ターゲットが動いて、見えている方向が動けば、それに応じて旋回の加速度を大きくするという方法です。単純に言えば角速度制御。

ミサイルの運動のしくみ

f:id:kouhei_ito:20200320181112p:plain

ミサイルを誘導する法則は上で述べたとうりですが、実際は上の図の様に旋回させたいほうに加速度を発生します。 また、加速度の向きはターゲットの見えている方向に垂直に発生します。

以下でシミュレーションしますが

単純追尾航法

単純追尾航法ではミサイルの飛翔方向がターゲットが見えている方向に一致するまで 横方向の加速度を発生します。その際の大きさは、角度の誤差に比例する様にしました。(比例航法と間違わないでください。)

比例航法

比例航法では以下の様な式で加速度を発生します。見えている方向の変化率が\dot{\lambda}、 ミサイルとターゲット近づく速度がV_c、必要の加速度がn_cです。

\displaystyle{
n_c = N^{'} v_c \dot{\lambda}\\
}

N^{'}は有効航法定数と呼ばれています。

単純追尾航法 対 比例航法 シミュレーション対決

違う航法同士のミサイルの撃ち合いをするわけではなく、それぞれシミュレーションして結果を比較してみます。

単純追尾航法

単純追尾航法はミサイルとターゲットの速度比(ミサイル÷ターゲット)が結果に影響を与えます。 具体的位は速度比が2を境にして挙動が変わる事が知られています。

速度比が2より小さい場合が以下です。

f:id:kouhei_ito:20200320181921p:plain
PPNのミサイルの軌跡(青)、ターゲットの軌跡(オレンジ)、速度比1.5
f:id:kouhei_ito:20200320182340p:plain
誘導のための加速度、速度比1.5

単純追尾後方はターゲットをお尻から追いかける形になります。ちなみに物理量が適当なので単位の記述はなしにしています。

つぎに速度比が2を超えて3の場合が以下です。

f:id:kouhei_ito:20200320182931p:plain
PPNのミサイルの軌跡(青)、ターゲットの軌跡(オレンジ)、速度比3

f:id:kouhei_ito:20200320183256p:plain
ミサイルの必要加速度、速度比3

以上の様に速度比が2を超えると必要な加速度が命中に近づくにつれて発散傾向になります。これは本物のミサイルでは途中で加速度に耐えきれず、へし折れてしまいます。また、飛翔時間も長くなる傾向がありあまり良い性能とは言えません。

比例航法

じつは有効航法定数が3の時が最適解だと解析的にわかっているので3にした場合の結果を以下に示します。

f:id:kouhei_ito:20200320184402p:plain
比例航法の軌跡、青:ミサイル、オレンジ:ターゲット

f:id:kouhei_ito:20200320184453p:plain
比例航法の必要加速度

比例航法は優秀で加速度も大きすぎず、徐々に加速度が減る方向に働きます。 比例航法は相手の速度に合わせて先回りする航法であり、会合前には直線に近い飛翔経路をとります。 単純追尾航法と比べて、飛翔時間が短い傾向があります。

結論

比例航法の勝ち!

まあ、わかっていたのですが・・・

数学的な詳しい説明は省略してしまいました。 汚いソースコードを参照できる様におきました。

github.com

ミサイル以外に比例航法を実装してみた

比例航法は ミサイルの開発をしていた時は実際に実装を考えていましたが、シャバではそれはできないので、 移動ロボットに実装して使った事があります。

屋外自律移動ロボット

この雪ウサギロボットは自己位置推定情報と目標位置情報とを用いて比例航法で目標位置にロボットを誘導しました。 目標位置は近づいたら切り替えます。切り替えまで目標は動きません。

自己位置推定はDGPSで行い緯度経度を取得します。目標地点は予め緯度経度を求めておき、走行経路のリスト(ウエイポイントリスト)として保持しました。

マイクロマウス

こちらのマイクロマウスはオドメトリで自己位置を推定して、仮想のラインを仮想のターゲットを移動させて比例航法で追いかけてみました。 オドメトリは以下の写真の様に、底にオドメトリ用の計測輪がある変わったマイクロマウス です。

f:id:kouhei_ito:20200320192439j:plain
マイクロマウス  3式改

おわりに

ミサイルの誘導と言う需要の低そうな話題でしたが、如何だったでしょうか。

上の様に、地上を走行する移動ロボットにも応用してみるのは如何でしょうか?

自分の姿勢を知らなくても点としての座標を推定できると誘導できるところが良いところだと思っています。

では、また!

参考文献

ミサイルの誘導制御の話が載っている、おそらく唯一の和書

僕のバイブル