virt_flyのブログ -15ページ目

virt_flyのブログ

フライトシミュレーターソフトのFlightGearで仮想飛行を楽しむブログです。

↑購入した1TB内蔵用SSDとエンクロージャー(外付け用ケース)ー写真はセット済

 

バックアップのコピー用に

 

 HDDの復元が必要に 

 

USBハブとパソコンのコネクターは、なんて接続が不安定なんでしょう。USBデバイスが認識されないことがしょっちゅうです。昔はこんなことはまずなかったのに(注1)

 

ついに今回は、USBハブに挿したUSBメモリーからパソコンに外付けされたバックアップ用HDDにファイルをコピーしようとしていて、途中でUSBメモリーが認識されなくなって転送がストップ。結果、あろうことかHDDに保存してあったファイルが消えて一切読みだせなくなるという、悲惨な目にあいました。

 

消えてしまったHDDの中身は、自身にとっては大事な長年の保存ファイル。幸いなことに複数のUSBメモリーにジャンル別にしてほぼほぼ保存してありましたので、HDDは再フォーマットしてファイルをすべてコピーしなおせばおおよそ元に戻せます。

 

 バックアップは1つでは心許ない 

 

今回の一件でバックアップ用HDDが一つでは心許ないことを思い知り、念のためにもう1台ストレージデバイスを増やすことにしました。

 

個人的には何年分もの様々なファイルといえども、保存に必要な容量は1TBもあれば事足りると考え、中古のHDDをAmazonで探してみたのですが、2年前と違い他の容量ならあっても1TBは見つけられません。

 

Raspberry Pi 5がSSDブートに対応するくらいですから、ご時世だと思い1TBのSSDの購入を検討することにしました。

 

安くなったとはいえHDDと比べればまだ高額のSSDですが、読み書きが速く、何よりも軽くて衝撃に強いとなれば、日常使いに良さそうに思えます。ただし、上書きができないSSDの特性から、日常使いにはHDDを用いた方が良いとする考えもあるようです(注2)。寿命に悪影響が及ばない方が良いのですが、どちらがましかいまいちわからず、流行りに乗っかることにしました。

 

 購入したSSDとエンクロージャー 

 

ちょうどAmazonの年度末セールでSSDが値引きされていましたので、1TBの内蔵用SDDと外付けに必要なエンクロージャー(外付け用ケース)を、合わせて1万円余りで購入しました。

 

購入したものは次のとおりです。

 

・SSD

KIOXIA EXCERIA G2 SSD 内蔵 SSD 1TB NVMe M.2 Type 2280 PCIe Gen 3.0×4 国産BiCS FLASH TLC 搭載 読み込み:2,100MB/s、書き込み:1,700MB/s

 

・エンクロージャー(外付け用ケース)

ORICO M.2 SSD ENCLOSURE TCM2₋SV TYPE-C M-Key/B&M Key (Nvmeのみ) USB3.1 Gen2 10Gbps UASP Trim対応 2230/2242/2260/2280 SSD対応 透明

 

 SSDのセッティング 

 

エンクロージャー(外付け用ケース)へのSSDのセットは、説明書の絵をよく見てSSDのボードを挿し込み、反対の端を正しくねじ止めして固定すれば、あとはカバーでふたするだけで終わりです。

 

至極簡単なのですが、私の場合は説明書の図が小さく文章も中国語と英語だったもので、ねじと対になるナットがわりの金属製の円筒形の部品の使い方をよく理解しないままねじ止して、カバーがしまらないばかりか、ボードを無理に湾曲させて危うく壊しかねないところでした。

 

正しくは、円筒形の金属部品には一周する溝があって、SSDのボードの半月形の切り込み部分を溝に挿し込むようにしてねじ止め、固定します。

 

 初期化が必要 

 

SSDはエンクロージャーにセットできましたので、後はすっかりパソコンにUSBケーブルで接続すれば使えるものと思っていたのですが、HDDと違ってSSD内を覗くことができません。

 

あわててググって見ると、どうやら初期化とやらを実行し、フォーマットをしてやらねばならないようです。

 

今回は、Windows10上で行いました。

 

SSDを使えるように初期化するには、Windowsで「ディスクの管理」を開かなければなりませんが、[スタート]の右クリックから開いたメニュー中の[ディスクの管理]を直接指定して開いた場面では、何をしても「初期化」を実行することができませんでした。

 

「初期化」を実行するには、[スタート]から開いたメニュー中の[コンピューターの管理]を選び、次に開いた「コンピューターの管理」画面の左そでにある[ディスクの管理]をクリックすることで開いた「ディスクの管理」の画面ではじめて「初期化」が可能になります。

 

画面下半分にパソコンのSSDが「ディスク0」と表示され、その右側にドライブが帯状に示されています。外付けSSDはその下に「ディスク1」と表示され、白抜きで矢印の書かれた赤丸が頭につき、下に「初期化されて…」の文字が記されており、ドライブを示す帯には「未割り当て」と書かれています。これをクリックすると、「初期化」用の画面が開きます。

 

「ディスクの初期化」画面では、「選択したディスクに次のパーティションスタイルを使用する」では「MBR(マスターブートレコード)」のラジオボタンがチェックされた状態のままで[OK]です。

 

「ディスクの管理」の画面に戻ったら、「未割り当て」の部分をクリックし、[新しいシンプルボリュ―ム]を指定、開いた画面で「新しいシンプルボリューム ウィザード」を開始します。

 

「ボリュームサイズの指定」では最大サイズのまま、次の「ドライブ文字またはパスの割り当て」ではここも「次のドライブ文字を割り当てる」のデフォルトのままで、「パーティションのフォーマット」では「このボリュームを次の設定でフォーマットする」のラジオボタンをクリックし、「ファイルシステム」を指定します。今回は「exFAT」を指定しました。

 

↑Windows10 の「ディスクの管理」画面 外付けSSDがここではEXCERIA_G2と表示されています。

 

以上で、初期化、フォーマットは完了です。今回、最後の「ボリューム」のところで「EXCERIA_G2」と入力しましたので、スクリーンショットでは「ディスクの管理」画面の「ディスク1」には「EXCERIA_G2」が表示されています。

 

外付けSSDが準備できましたので、さっそくこれを使ってバックアップのコピーを作成しました。

 

注1)考えてみると、パソコンのUSBポートに直挿しのマウスのドングルやUSBメモリと違って、少しかさばり中途半端な長さのケーブルでパソコンにぶら下がるUSBハブは、手が触れやすく力のモーメントが働きコネクター部分が揺さぶられるのでしょう。そこに、近頃のUSBハブやパソコンのコネクターの出来があまりにもお粗末とくれば、接触不良が起きようというもの。

 

注2)SDDもフラッシュメモリーの一種であり、磁気ディスクと異なりデータの上書きができないため、空き容量に新しいデータを書き込み、前のデータを消すという動作を行うそうです。このことがSSDの寿命に大きく影響し、また、また使い込むと遅くなる原因にも関わるといいます。すなわち、空き領域が減ると使用不可領域を消去して空き領域を作る作業が増えてSSDが遅くなります。また空き領域が減って同じ領域が頻繁に作業に使われるようになれば局部的に一層劣化がすすむ箇所もでてきます。使用時間が長くなるほど劣化するというのはトンネル酸化膜のことでしょうか。近年広まってきているTLCタイプのSSDでは、1セル当たりの書き込み回数は1千回とされます。そこで、SSDの読み書き軽減のために、HDDと併用し適した使い分けを行うのがこのましいとか。

HDDは機械部分が多く故障しやすくSSDより寿命が短いという見解とは、何か真逆に聞こえるのですが。

 

↑飛び交うカモメ

 

春の海ひねもすのたりのたりかな

 

AI機をかつてのように旋回飛行ができるようにしたくて、FlightGearの方針に逆らい、性懲りもなくAIシナリオを使った方法をなんとか見つけ出したことは、前回のブログに書いた通りです。

 

その際に思い出したのが、フライトシミュレーターのFlightGearにカモメの飛び交う様子を再現したAIシナリオがあったことでした。

 

FlightGear用に自作した水上機に、着水中は潮騒とカモメの鳴き声が流れるようにするくらい、船や港の雰囲気が好きな私のことですから、水上機やヨットの周囲を飛び交うカモメは大のお気に入りでした。

 

いつの間にやら、牛や馬、羊、象などとともにどこかにいなくなっていてびっくり。かつてFlightGearにあった機能やシナリオで今はないものには、こんなものもあったのですね。

 

リアルさを売りにしていると言っても、シーナリーはまだまだ開発途上。フライトシミュレーターとしてのリアルさに加え、将来の高精細なシーナリーの実現を展望した場合、今では古臭く桎梏となりかねないものは一掃すべしということなのでしょうか。そうであれば歓迎すべきことですが、一抹の寂しさがあります。

 

シナリオの出所は?

 

当該カモメのシナリオについては、当ブログでもとりあげておりその記述をたよりに調べたところ、FlightGearの2012年4月のNewsletterにカモメのアニメーションが利用可能になるとの記事があって、どうやらFlightGear2.8.0あたりに実装されたことをうかがわせます。

 

ちょうど手元に残してあったポータブル化したFlightGearがバージョン2.12.1で、今はないFaunaフォルダーがありデフォルトのものかわからないもののカモメの3Dモデルとxmlファイルが含まれていました。これを使って、現行のFlightGearでも動くのか試してみることにしました。

 

※現行のFlightGear2020.3.0でも、直下にあるSceneryフォルダーの中のModelsフォルダーにFaunaフォルダーがあり、カモメの関連ファイルが含まれています。FlightGearでは、直下のModelsフォルダーとSceneryフォルダー内のModelsフォルダーに似たようなフォルダーが含まれていて、私も若干混乱してしまいましたので、訂正します。

 

インストールと使い方は?

 

Faunaフォルダーにあった関連ファイルは、カモメの3DモデルであるSeaGull_Origin.acとSeagull_Flying.ac、の2つのacファイル、ならびに4羽分のxmlファイルと4羽を1グループにするSeaGull_Origin.xmlの計5つのxmlファイルです。

 

Faunaフォルダーごと現行のFlightGear2020.3.0のルート下にあるModelsフォルダー内にコピペし、カモメの群れを配置するために作成していたAIシナリオを同じくAIフォルダー内にコピペ。FlightGearを立ち上げたらこのAIシナリオを指定して実行します。

 

関連ファイルは、FlightGearにデフォルトで同梱されており、インストールの必要はありません。カモメの3Ⅾモデルである3つのacファイル、ならびに4羽分のxmlファイルと4羽を1つの群れにするxmlファイルが2つです。

 

カモメの群れを配置するために作成したAIシナリオをAIフォルダー内にコピペし、FlightGearを立ち上げたらこのAIシナリオを指定して実行します。

 

結果は、冒頭の画像が示す通りです。「春の海ひねもすのたりのたりかな」と、くつろいだ感じがして素敵です。波間に揺れるヨットをNasalプログラムで再現すれば、もういつまでも見続けていられます。

 

仕組みは?

 

基本的な仕組みについては、カモメよりも以前に自身でガチョウを模した水鳥を作って飛ばせた―旋回ではなく渡り鳥らしく直線飛行―ことがあったのでおおよそ想像がつきます。

 

翼の上下に見合った2つの3Dモデルを、<type>タグでtimedに指定し、<duration-sec>タグで表示時間を与えて交互に表示させれば、羽ばたきを再現して見せることができます。パラパラアニメの要領です。では

イメージ 1
↑10年前のgifアニメ 容量ギリギリでギクシャクしています
 

羽ばたくとしばらく滑空、また羽ばたくたびにカモメの体が上下し、いかにもというところがいいですね。

 

問題は、カモメをどうやって旋回させているのかです。それらしく思えるタグの値を変えたり削除すれば何らかの変化が起こりそうなものですが、これがさっぱりなし。旋回のもととなるファクターが見つけられません。何か見落としているのでしょうが…。

 

旋回半径や方向を変えれないようではどうしようもありません。AI機の旋回飛行に利用するのを諦めた理由でもあります。

 

 

↑Bombable対応化したYak-3は、Ju EF 128の機関砲が当たれば黒煙をひく様になった

 

<search-order>タグのPREFER_AIって?

 

フライトシミュレーターのFlightGearでは、AIのスクリプト化の動きの中で、AI機の飛行はAIシナリオを使ったのでは表示できなくなったはず。なのに、Bombable add-onにおいては、AIシナリオを使ってコンバットフライトシミュレーションを実現できているのは何故?

 

確かに、例外はあって空母での発着や編隊飛行の他、ヨット、それにグライダーの牽引もそうでしょうか。かなりAIシナリオの種類は減りはしましたが、Bommbableもそうした例外の一つのようです。

 

例外かどうかは、AIシナリオ中の〈type〉タグに書かれた文字列で識別し、Aircaftなら機体の描画を拒否しているのかなと疑うのですが、一概にはいえません。わかれば、AI機を飛ばす抜け道になるのではと探ってきました。

 

ようやく、Bombable add-onを確かめてみる段になったら、案の定AI機は正常に描画され、しかもAIシナリオが使われていることもわかったのです。ここはAIシナリオを調べてみる価値があるというものです。

 

旧バージョンとAIシナリオに違い

 

↑AI機のYak-3の反撃を受け火を噴くJu EF 128ーBombable add-onのおかげでFlightGearで空戦が可能に

 

手に入った旧バージョンのBombable add-onは、5.0の一つ前の4.6の他、一番古いものは3.0pでした。

 

現行のバージョン5.0と、他の旧バージョンとでは、AIシナリオに明らかな違いがあります。4.6や3.0pにはない<search-order>タグが5.0では使われ、PREFER_AIと書き込まれています。
 
ちなみに<type>タグは変わらずAircraftでしたから、AI機にもかかわらず描画されるたとなれば、この記述以外に理由が考えられません。「検索順」「AI優先」て何のことかわからないものの、ひょっとして、AI機を上空で旋回飛行させるAIシナリオに使えるのでは⁉

 

さっそく、以前のAIシナリオに<search-order>PREFER_AI</search-order>を書き込んで試してみることにしました。

 

みごとAI機が旋回!

 

↑旋回するAI機ーYak-3(前方)とBF-109G(後方)

 

スムースにはいかず試行錯誤の繰り返しの末、ようやくかつてのようにAI機が旋回するようになりました。

 

なぜ<type>タグがaircraftなのに機体が描画されるかは不明のままなので、とりあえず旋回用に使用したAIシナリオを後に掲げることにします。

 

旋回は、<bank>タグに代え<roll>タグを使うことで実現できました。また、Bombable add-onのAIシナリオを参考にしましたが、Bombable add-onを使用しようがしまいが関係なく実現できます。

 

なお、AI機は、$FG ROOT直下のAIディレクトリ(Ubuntu)、FG/data/AI(Windows)に置くのが無難なようです。

 

また、Bombable add-onを使用する場合は、旋回させたいAI機はBombable非対応にしておく必要があります。さもないと、旋回を途中でやめて勝手にどこかへ飛んでいってしまいます。

 

 

【例:AI機の旋回飛行用テストAIシナリオ】

 

 <?xml version="1.0"?>
 <PropertyList>
     <scenario>
         <name> (RJBB) Yak-3 turn</name>
         <description>
     </description>

        <entry>
            <search-order>PREFER_AI</search-order>
            <type>aircraft</type>
            <callsign>virt_fly</callsign>
            <name>Yak-3-1</name>
            <model type="string">Aircraft/yak3/Models/Yak-3-ai.xml</model>
            <latitude type="double">34.4313</latitude>
           <longitude type="double">135.2522</longitude>
           <altitude type="double">200</altitude>
           <speed>84</speed>
           <roll type="double">30</roll>
           <heading type="double">280.0</heading>
        </entry>

     </scenario>
 </PropertyList>

 

 

後ろめたさがある

 

かつてできたことができないのはどうにも悔しく、意地になってAI機の旋回を実現しましたが、手放しには喜べません。なんらNasalスクリプトは使っていませんから。

 

AIのスクリプト化の方向からして、推奨されていないAIシナリオの使用で目的を実現しようとするのは、流れに棹さす行為。正々堂々、Nasalプログラムを書いてりゃ、後ろめたさを感じずに済むのでしょうが…。