試験に出るミサイルの基本「 ミサイルの基本の「き」 」
さて、シリーズ試験に出るミサイルの基本。
今までもほったらかしのシリーズがいっぱいありますが、これもそのうちほったらかしになってしまいそう。
ロボット兵器運用はちょっと待っていただきたい!
さて、ミサイルの基本の「き」から基本の「ん」を越えて、ゆくゆくは皆さんの中から将来、三菱重工( 電機 )でミサイルの制御プログラムを書くような方が表れることを願っているこのシリーズ。
ミサイルとはなんでしょう。
知っている方も多いでしょうが、意外に奥が深いのです。
ミサイルとは、ロケットと、やっぱり違うのです。
厳密な定義はありませんが、一般的には
・ミサイル - 誘導機能を持った投射体
・ロケット - 誘導機能を持たない投射体
という風に言われています。
さて、ミサイルの基本構成は二つ。それは
誘導機能 と 推進機能
です。
さて、このどちらもが奥深いミサイル。
これから数回にわたっては誘導機能を紹介していきましょう。
推進機能については後ほど。基本的にはロケットエンジンです。
さて、推進機能と一口に言いましてもさらにその中には分類があり、その一つ一つがさらに奥深い。
ざっとご紹介まで。
索敵機能
中間誘導機能
終末誘導機能
大きくこの3分野に分かれます。
索敵機能とは、すなわちロックオン。普通はあまり深く考えずに、シューティングゲームでも当たり前のようにロックオンしていませんか?
さて、何をロックオンすべきか。
敵です。敵の航空機です。
では航空機とそうでないものはどうやって見分けるのか。
鳥と航空機はどのように見分けるのか。
この方法にはいろいろあって、一般的には高速飛行する高熱源体は航空機です。
また、アクティブレーダによってスキャンされたもののうち、或る一定量以上の電波反射を行う物体は航空機です。大きさが違いますからね。
さて、航空機と鳥の区別はつきました。では、敵と味方は?
基本的にはIFF( Idefication Friend or Foe )、敵味方識別装置というもので行います。
味方の航空機からは味方だよーという暗号コードが発信されますが、敵の航空機からは発信されません。
と言うわけで、反応のない奴は敵です。
…おいおい、反応する装置が壊れてたらどうするんだよ、とお思いでしょうが、そのときは、ほら、イラクでもIFFの故障により撃墜されたアパッチヘリコプターがありましたね。その通りです。
航空自衛隊ではIFFに代わりSIFというシステムを使っています。基本は代わらないでしょう。
さて、敵に目星をつけたらいよいよWeapon Releaseです。
ここからは中間誘導装置、終末誘導装置の出番です。
中間誘導装置は基本的に長射程( 数十から数百km級 )のミサイルに搭載されます。
この装置を簡単に説明するとミサイル発射から着弾までの前半部分を担当する装置です。
ちなみに短射程の空対空ミサイルなどはこの装置が働く前に着弾フェイズになってしまいますので、ついていません。
この装置は、慣性誘導装置、地形照合装置、天測装置の三種類があります。
慣性誘導装置は、中にジャイロが入っていて、向きと加速度を積分積分して位置を割り出し、修正をかけます。
地形照合装置はカメラで地形を読み取り、そのデータを元に修正をかけます。どうやって照合するかは秘密です。なんとかエネルギー関数とか、そういう話になります。
天測は星を見ます。北半球だと北斗七星だったかな。星を見て、形から星座を認識し、角度を使って位置を割り出します。
さて、長射程ミサイルは以上のような装置で目標付近へ到達。
短射程から中射程ミサイルはいきなり最終フェーズへ突入です。
終末誘導装置には様々なものがあります。その一例。
リモコン
基本です。世界初のミサイルはリモコン誘導でした。つまり、誘導システムに人間を使うわけです。有線誘導って奴です。
レーダー誘導
空対空ミサイルでは一般的です。アクティブ、セミアクティブ、パッシブの三種類があります。
アクティブは自分からレーダーを発信して、敵を捕捉します。
セミアクティブは発射母機がレーダーを発信し、その反射波をミサイルが捕らえます。
パッシブはミサイル自身は何も出さず、目標が出す何かを頼りに追尾します。
GPS誘導
GPSを頼りに誘導します。固定目標で使われる方式で、トマホークなんかが使っています。
光学誘導
例えば赤外線誘導。航空機は高熱源体なので、赤外線をたっぷり出しています。と言うわけでその発射源を追いかければ敵に命中するのです。前は太陽に飛んでいったりしましたが、今では、例えばシーカを冷却して感度を上げたり、形を認識したり、赤外線の波長を分析したりといろいろ工夫を凝らしています。
有名なサイドワインダーミサイルの最新版は赤外線誘導に画像認識システムを搭載しています。
ミサイル経由追尾
例えば自衛隊の96式多目的誘導弾システムなんかが採用している方式です。パトリオットも使っています。
ミサイルからのデータを地上で受け取って誘導手が誘導を行います。リモコン方式ですが、上のリモコン方式は、初期の方法で、リアルタイム画像伝送もなければ無線通信も出来ませんでした。最近では光ファイバーもありますし、無線通信も高速なので、実用化できたようです。
ざっとこんなところです。はい、命中(SPLASH)。
現代のミサイル技術は格段に進んでいて、もはやミサイルをよけることはとても難しいことになってきています。よける側も知恵を絞るわけです。
さて、ざっと簡単に紹介してみました。この程度なら知っている方も多いのではないでしょうか。
でも、例えばスキャンするって、どういう風にスキャンするのか。
ミサイルってどんな方法で追尾をするのか。レーダを使うって、レーダをどうやって使うのか。
上にはまだまだそういったことが書かれていません。
と言うわけでこのシリーズ。最初は基本の「き」を紹介してみました。
次回はおそらく「短空対空ミサイルその1・ピュア・パーシュート」になると思います。
Resignation の説
森鴎外です。
短いので、簡単に読めます。
森鴎外もやっぱり苦労してるんだなあ…。
参考リンク:
http://www.aozora.gr.jp/cards/000129/files/45272_19217.html : Resignation の説 in 青空文庫
webLog
ウェブログのシステムを基幹に据えてWWWの運用をしているところも増えてきました。
細分化されたトピックに適当な属性をはっつけて整理したりする機能としてはウェブログが一番普及しているからでしょう。Wikiという手もありますが。
さて、通常のウェブログサービス、つまりこのAmebloとか、So-net blogとかlivedoor blogとかですが( livedoor blogは嫌いです。だってアダルトトラックバック攻撃ばっかりなんだもん )、これらは更新、メンテナンス作業をすべてウェブブラウザ上で行います。
ウェブブラウザ上で行うメリットは、どこでも同じ環境が提供できること。
サービス自体はウェブログサービス会社のサーバ上で走っていますので、ウェブブラウザはそのインタフェースにすぎない。つまり、インタフェースさえあれば実行環境を問わないのです。
これが最大のメリットでしょう。
さて、欠点はなんでしょう。
簡単。速度です。
ADSLが普及して、スピードが上がってもスループットは上がらないのです。
このあたり、普通の感覚では難しいかもしれませんが、スピードが40倍になったからと言って反応速度が40倍になるわけではないのです。詳しくはネットワーク通信の本をお読みください。フーリエ変換を理解していれば尚良し。
ウェブログサービスは基本的に、通常のhttpとおなじ、htmlを通信するだけですので、そんなに太い回線は本質的に必要ありません。
で、回線がボトルネックになってくる。
おまけに、通常のウェブブラウザはウェブログサービスを前提に設計されていませんので、安定しないことが多いのです。
…つまり言いたいのは、1時間、2時間かけて書いた記事が例えば、ボタンの二度押し、例えば、通信タイムアウトで消えてしまうと言うことです。
つまりウェブログサービスを前提にウェブブラウザが設計されていればいいのですが、ぶっちゃけ、そんなブラウザ普通に使うには使いづらそうです。
というわけで、Windowsネイティブなウェブログ更新ソフトが欲しい。
ウィンドウズネイティブならば、通信環境に左右されません。
どこに依存するかの問題なので、結局一番近いOSに頼るのが安心なのです。
( クロスプラットフォームなら尚良し )
それに、ウェブサービスのレスポンスの遅さは、例えばこのブログ。
300本近い記事がありますが、整理が面倒なのです。
テーマを間違えて送信したときはわざわざ記事編集画面へ戻ってテーマだけ変えて、保存して、承認しなければ変えられない。
Windowsネイティブならば、プルダウンメニューで切り替えるだけ。
記事の本数が多くなればなるほど、ウェブベースのレスポンスと操作性の悪さが浮き彫りになります。
送信ボタンを押すと自動的に記事はローカルに保存されて、エンコードされたhtmlが圧縮送信される。
で、送信に失敗したら自動リトライ、わざわざユーザ認証をIDとPASSでやらなくても、マシン固有データ( プログラマブルIDとか )でやればセキュリティの問題もクリアです。
…さて、こんな便利アプリを作ってくれるウェブログサービスがあるのでしょうか。
無いだろうなあ…。作ってくれたらそこに移るけどなあ…。
// ぶっちゃけもう記事が消されるのは嫌なのです。保存ボタンを押すのが怖いのです。
航空機の運動方程式・番外編2
Direct3Dの設計…というか、左手座標系。何で左手…。
右手座標系で素直に…。
あと迎角計算がおかしいらしい。
aoa : 1.#QNAN0,b : -1.#IND00
aoa : 1.#QNAN0,b : 1.#QNAN0
aoa : 1.#QNAN0,b : 1.#QNAN0
aoa : 1.#QNAN0,b : 1.#QNAN0
aoa : 1.#QNAN0,b : 1.#QNAN0
なんだこれ?( デバッグモニタより )
航空機の運動方程式・3
目が覚めたら分かりました。
解けるようになりました。
今までのあらすじがブログを読んだだけでは書いている本人も分からないので、整理してみましょう。
航空機の運動を記述するにはどんなパラメータが必要か。
まず、飛行機に座標を固定します。とくに理由はありませんが、原点は飛行機の重心にとりましょう。
この座標系は右手直交座標系です。つまり、右手の親指、人差し指、中指がそれぞれ直交しあうようにします( 例の法則のあれです )。
親指、人差し指、中指がそれぞれX、Y、Z軸です。
X軸が戦闘機の首、Z軸が戦闘機の地面で言う上下、Y軸は翼の外の方向へ伸びます。
さて、飛行機の運動を記述するには、まず飛行機の速度を表すベクトルが必要です。
そして、姿勢を表すために地面座標系に対するそれぞれの軸の傾き角度がいります。
そして、その傾き角度の角加速度もいります。
本当は速度ベクトルに対する加速度ベクトルも考えられますが、省略します。
というわけで、
速度:(u,v,w)
角度:(φ,θ,ψ)
加速度:(p,q,r)
これらを連立して解くためには方程式が9ついります。
9つの内、3つはすでにおわかりの通り
∫p dt = φ
以下同じ。これで三つ。
あとは安定微係数がどうのという小難しい式が8つあります。解くと6つになります( これが昨日から言っている常偏微分方程式になります )。
これで、解けましたので、あとはフライトシミュレータにするために飛行機の位置を求めましょう。つまり、
速度- 積分 ->位置
してやればいいわけです。
ですが、ここでちょっと待った。
速度ベクトルは飛行機固定座標系の速度ベクトルです。
そのまま積分しても意味がない。
と言うわけで一ひねり。
速度- 変換 - 積分 ->位置
と言うわけです。
金子氏のページから抜粋。
オイラー角では、3つのひねり角で機体の向きを表します。機体座標からワールド座標への変換を行うには、まずピッチ方向にひねり、ロール方向にひねり、地面垂直方向にひねります。
ですので、機体のロール角がa、ピッチ角がb、機首方位がcの場合、機体座標→ワールド座標の変換行列要素は
{
y00 = cos(b) * cos(c) - sin(a) * sin(c) * sin(b);
y01 = -cos(b) * sin(c) - sin(a) * cos(c) * sin(b);
y02 = -sin(b) * cos(a);
y10 = cos(a) * sin(c);
y11 = cos(a) * cos(c);
y12 = -sin(a);
y20 = sin(b) * cos(c) + sin(a) * sin(c) * cos(b);
y21 = -sin(b) * sin(c) + sin(a) * cos(c) * cos(b);
y22 = cos(b) * cos(a);
}
となり、実際に座標変換するには、
void change3d3(double x, double y, double z, double* x1, double* y1, double* z1)
{
*x1 = x * y00 + y * y01 + z * y02;
*y1 = x * y10 + y * y11 + z * y12;
*z1 = x * y20 + y * y21 + z * y22;
}
となります。
( quote from NekoFlight関連のプログラマ向けページ http://homepage1.nifty.com/kaneko/nflightm.htm )
です。
実際には、ジンバルロックの危険性がありますので、座標を変換ごとに正規化するか、もしくは前から考えているとおり四元数で処理するかです。
四元数処理の法が実装が楽で正規化の面倒がないので、そうしましょう。そうしましょう。
// 実は速度は( u,v, w )ではなくて、X速度uと迎角α、横滑り角βで表しているため、迎角、横滑り角からv,w速度を求め直さなければなりません。昨日から躓いていたのはそこでした。あうぅ
航空機の運動方程式・番外編1
コンピュータに積分をやらせようといろいろな方法があるわけだが、今回はRunge-Kutta方をご紹介。
これで貴方も今日から計算機数値積分フリークだ!
Runge-Kutta法とは、Rungeが考案しその後Kuttaが改良を加えた数値積分アルゴリズムで、
要はオイラー法が数値積分したい関数の1次積分近似であったのを高次の項まで含んで積分しようという話である。
式を見てみると分かるが、早い話がかの有名な平均値の定理の応用である。
y( x + h ) - y ( x ) = ∫( x for x+h ) f(x,y)dx = hf( x + Δx , y + Δy )
が必ず成り立つΔx,Δyが存在するというのが平均値の定理である。
さて、コードを示そう。
kx1 = f(x)*h;
kx2 = f(x+kx1/2)*h;
kx3 = f(x+kx2/2)*h;
kx4 = f(x+kx3)*h;
x += (kx1+2*(kx2+kx3)+kx4)/6;
この通り。つまり重み付き平均である。
ハミルトニアンを積分したときにオイラー法では発散してしまうが、ルンゲクッタでは発散しないらしい。
さて、ここに示したコードは誰でもかける程度のものなので、貴方も今日から数値積分にじゃんじゃん使っていただきたい。
航空機の運動方程式・2
頭がおかしくなりそうだ。ただ、これさえ解ければ少なくとも航空機の飛行経路を得ることが出来る。
そいつを地面固定座標系に落とせば完成。
口で言うのは簡単だが、地面固定座標系への変換は行列をかけてかけてだし、そもそもその運動方程式を解いて得られた答えが、どういう単位か、もはや分からなくなっては本を繰り、もう無茶苦茶。
航空機データの読み取り・2
読み込みルーチンの実装を完了。
航空機の運動方程式の実装開始。
…どうでもいいが、世の中では前進翼というものが少々誤解されているような気がしてならない。
前進翼機は空力的にとても不安定であるのに、なぜか、どこもかしこも前進翼機には水平尾翼も垂直尾翼もない。
ローリングモーメントをどうやって打ち消すつもりなのか。横静安定はどうやって確保するのか。
