2025年3月5日水曜日


 TOBはいわば公開ラブレター、ニデックが経緯と見解を改めて表明:製造マネジメントニュース - MONOist

 相手が嫌がっても札束で殴って逃げ道塞ぐタイプのラブレターは笑えない。



 バーチャルISS内で球形ロボット操り、実機と比較検証。KDDI×スペースデータ | TECH+(テックプラス)

 スペースデータのISSシミュ、実機と比較するまでもなく、物理エンジンとしてだいぶひどい実装だというのは1分も触れば十分わかると思うんだけど、一体何を比較するんだろう? もしかして更新入ったのかな?と思ってアップデートしてみても相変わらずだし。

 宇宙に興味はあるけど詳しくはない、みたいな人にSteam経由で遊ばせるならともかく、こんなクソみたいなエンジンをありがたがって使うって、日本の宇宙開発のレベルはそこまで低くないと思いたいんだけど、実は結構ヤバいんか? それとも、Steam版は「素人向け」であって、実際に使っているやつはもっとマシなんだろうか? じゃあそれを公開してくれよ、と思うのだが。Int-Ballの推力だとまともに動けないから、とかなら推力等のパラメータだけ調整すればいいわけで、なんでわざわざオイラー角で演算したりロール軸を拘束したりするねん。新入社員の研修用に自分でググらせて書かせたコードじゃねーんだぞ。



 Steam:ステラーコード

 体験版が公開されたよ(製品版のリリースは8月の予定)。

 ざっくり最後まで遊んでみたけど、面白かった。

 ストーリーの進み方が冗長(説明が多い)だったり急展開(途中をすっ飛ばしたり)といった印象があるけど、ゲームとして作ろうとするとどうしてもしょうがない部分なのかな、という感じ。未知のビットストリーム(2値x2次元空間)の解析とかいちいち全部手順追って説明してたらそれだけで飽きられるだろうしな。

 あとは誤っている点とか、あるいは誤っているというほどではないけど適切ではないような点がいくつか。体験版プレイ後アンケートで「宇宙開発や理論物理を専攻している人に協力してほしいからそういう人は連絡先ちょうだい」みたいな記入欄があるから、設定考証はこれから作業するのかな。今から作業したらストーリーの根幹部とかはさわれないだろうし、表面的な部分だけ直して終わりって感じになりそうだけど。



 今まで使っていたキーボードは65%キーボードみたいな感じで、Enterキーの下に矢印キーがあった。テキスト入力中に矢印キーを使いたいときに、手の移動をあまりしなてくても矢印キーに届くのが利点。新しいキーボードはEnterの外側に矢印キーがあるのでちょっと遠い。

 新しいキーボードはキーピッチが8%近く大きいのと、Enterの右側に矢印キーがあるので、キーボードの幅も今まで使っていたものに比べて27%ほど大きい。普通に作業する分には特に問題ないけど、FPSとか、マウスを広く使いたいときは邪魔。

 今まで使っていたキーボードはZキーの下にWinキーがあるけど、新しいキーボードはZキーより左側(今までのキーボードではFnキーが有る場所)にWinキーがついている。自分のブラウザの使い方として、新しいウインドウを開いてから検索ワードを入力して、読み込んでいる間にWin-矢印で画面の適当な場所に配置する、という操作が多いんだけど、今までWinキーだった場所がAltキーになっているので、ウインドウを左に移動しようとしてWin-←を入力したつもりがAlt-←を入力していて、ホーム画面に戻ってしまう、という挙動が度々発生する。結構不便。

 ゲーミングキーボードは普段遣いには向かないよね、という当たり前の結論が得られそう。

 あと、HMIデバイスを通販で買ってはいけない、という、HMIを買うたびに実感しているやつを再確認。まあ、実店舗で買うと交通費で値段がほぼ倍になるから、半額で買えたと考えれば。。。

 適当な台をパームレスト代わりに使うと、一見楽なようで、実は文字入力速度が結構遅いような気がする。手を浮かせて入力するより、むしろ机につけて入力したほうがいいかも。というか、立って入力する高さだと、かなり文字入力しやすい気がする。座って文字入力するより誤入力が少ない気がする。実際、立った状態で寿司打をやるとスコアが結構上がる。とはいえ前のキーボードでガチってた頃よりは落ちるけど。

 そういえば、このキーボード、根本がType-Cなので、C-Cケーブルを使えば(OTG変換とかを使わず)スマホに直結できる。パソコンがなくてもどこでも寿司打が遊べるぞ! こんなクソ重いもの持ち運べんが。。。



 SELENE(’07年10月に月軌道投入)のホイールアンローディング、定常運用中は1日2回、RW1基故障(’08年7月)以降は1日4回行っていたらしいけど、地球周回衛星に比べてやたらと高頻度な気がする。地球(LEO)だとそもそも外乱トルクの平均値を吸収できるようにMTQを設定しているからRCSアンローディング自体が不要という可能性もありそだけど。1周120分として、アンローディングは6周毎くらい。月重力場の解析とかをやるためにはある程度長い安定した軌道があったほうが便利だろうけど、この程度でも十分なのかな。

 2008年10月上旬までは南極上空でアンローディング運用。高電圧を使用する機器(e.g. LALT)はアンローディング直前からある程度の時間は使用できないから、南極付近に観測頻度が低い範囲が発生する。’08年10月以降は北極でアンローディングすることで、南極付近の観測が増えた。

 人工衛星のアンローディングの頻度って情報ほとんど見当たらないような気がする。情報公開に消極的な準天頂衛星が数少ないアンローディング周期の情報源。アンローディングに由来するΔVは測位精度やサービス可用性の悪化に直結するので、QZS-1で評価が行われていて、それによるとアンローディングの頻度は実績値平均92日間隔とのこと。静止衛星だとスロットの維持でΔVを吹く機会が多いとか、そのついでにアンローディングも行うとか、色々違いはあるだろうけど。

 ASTRO-HはEOB伸展が2月28日、通信異常が3月26日で、この間1ヶ月はMTQでアンローディングを行い、RCSを吹いていない。科学衛星だから姿勢変更もある程度多めに想定していて、ホイールの容量が大きいというのもあるだろうし。特殊な例だとMUSES-Cとかはや2はIESをジンバリングできるので、加速中の2軸はそれでアンローディングできる。残りの1軸はRCSでのアンローディングが必要だし、小惑星ランデブ中はRCSで安定化させる必要があるとしても。



 NOVA衛星のドラッグフリー制御の名前がDISCOSなの、もしかして衛星内で浮かせた金属球をミラーボール(英語でdisco ball)に見立ててつけた名前ってことなのかな? ボールの位置計測とかは光学的にやっているわけではないと思うので(検出は静電容量のはず)、ミラーボールみたいに光を反射するようなものではないはずだけど。

 見た目的にも機能的にもミラーボールっぽいのはEGSとか。EGSは太陽光を反射するために普通の鏡(平面ではなく多少のR)を貼ってあるけど、それ以外のSLR用ターゲット衛星、たとえばLAGEOSなんかはCCRしか貼ってないので、ミラーボールみたいな反射はしない。ECHOみたいな風船はたぶん一定輝度で反射していて、ミラーボールみたいにキラキラするわけではないはず。



 キューブサットの放出機構、例えば3Uだと長軸方向に速度をつけて放出するけど、角運動量を与えて放出してくれるポッドってないんだろうか。3Uなら長軸の両端で持っておいて、片方のラッチを外してバネで跳ね起こして、立ち上がったら反対端のラッチが外れてそのまま運動量が与えられて分離する、みたいな。3U程度の大きさなら姿勢安定化を(能動にしろ受動にしろ)行わない衛星もあるだろうし、どっちを向くか(スピン軸がどうなるか)わからないくらいなら、多少のスピン安定を与えて分離してくれたほうが便利な場合もありそう。後で外れる方のラッチの設計が難しそうだが。

 軌道面が回転するとスピン軸と軌道面の関係も変わるけど、スラスタを1個積んでおけば修正できるから、3軸制御(最低4器のスラスタ)に比べればかなりシンプルな構成になる。電力配線の通し方次第でトルクが出てスピン軸とか周期が変わりそうだから、長期的には不安定な安定化方式なのが難点。スピン周期を変えるなら2器のスラスタが必要になる。MTQで打ち消すなら気にならないけど、それなら最初から3軸安定で設計しろって話になるし。

 やっぱり分離機構の機械的な複雑さが嫌がられるのかな。あるいはキューブサットの放出機構はもう規格化されているから、みたいな理由もありそう。スピン放出の場合、ポッドにいれる必要がないから、少なくとも大面積3面+小面積1面は比較的自由に突起物を作れるという利点がある。例えばスピン軸と同軸にアンテナ素子を突き出しておけば、展開機構無しに安定した通信ができる(無指向性ゆえのデータレートの低さはさておき)。Dawn/Duskのrolling-wheelなら回転軸方向に太陽があるから、うまく作れば3Uで30x30cmくらいの発電面が作れそう。




 電子基準点の南側10m位の場所で取ったサンプルの再解析

 前回、サニャック効果を含めるのを忘れていた。それを含めると基準点の真南13m位の場所に中心がある分散になる。ということで、東側にズレて出ていたのはこれが原因。上にずれる原因は不明だが、VDOPの問題かな?



 適当なサンプルデータが欲しくて、アンテナを持って外で取ってみたんだけど、うまく復調できない。クイックルックでもスペクトル全体が時系列で暴れるので変な発振が起きてたっぽい。前回移動中にサンプリングした組み合わせなのであんまり問題はないはずなんだけどな。前回は車の屋根にマグネットで貼り付けて、今回は手で持っていたので、GNDの有無が問題なのかな? 何回かサンプリングしてみたんだけど、なかなか安定して受信できない。この時期はまだ寒すぎて外でアンテナとノートPCを持ってサンプリングするのは結構きつい。寒いというか痛い。

 amazonで数千円で売ってるポールマウントのGPSアンテナ(船用想定?)ってGND無しでサクッと使えるようなものなんだろうか。ポールマウントってことはその下に金属プレートをいれるような想定ではないはずなんだけど。ある程度大きさがあるから開口面積もありそうだけど、中国製の安物だとセラミックアンテナとか車載用のアンテナをケースに突っ込んだだけって可能性も捨てきれないのがなぁ。。。



 rtl-sdrで設定できるサンプリングレート(1kHz分解能)と、2^13と2^14で割った値

 1.6Msps以下であれば2^13ptsで200Hz未満の周波数分解能が得られる。1.8Mspsより高いサンプリングレートの場合は2^14ptsFFTが必要になる。FFT窓が2倍になると同じ範囲をスキャンするのに2倍のIFFTが必要になるし、FFT自体の計算量も増える。2^13と2^14ではスキャンに必要な時間がだいぶ違う。

 2.4Mspsをドロップ無しでサンプリングできたとして、それを単純に(CICとかFIR無しに)2分の1にデシメーションして2^13ptsでスキャンしたりってできるんだろうか。あるいは2点の単純加算でLPF特性とか。

 ただ、FFTで畳み込んでからコヒーレント積分する場合、FFT窓が狭くなるとその分SNRが落ちるデメリットが有る。窓が狭くなって計算が早くなる利点がデカいので、とりあえず端から端までスキャンして、一番相関値が高いところを長い窓でもう一度相関取って、みたいな処理にしてもいい。



 相関器のロスト判定ってどうやってやるのがいいんだろうか。現状はサブフレームを受信したタイミングでパリティチェックを行ってエラーでロスト判定を行っているけど、最悪6秒の遅れがあるし、その間に相関器がフリーランするから位置誤差が急激に発散する。Early,Prompt,Lateを一定程度(0.5秒程度?)平均化したうえで、最大値と最小値の比が一定以下になったらロストと判断する、みたいなロジックとか?



 GPSの相関器に入っているDLL、今どきのシリアルバスだと必要ないだろうし、GPSに名前を残すだけの古の回路なのかな、と思っていたけど、どうやらDDR-SDRAMにもDLLが入っているらしい。DDR5の資料にもDLLの字面は出てくるから、最近のメモリにも入っているようだ。ただ、あくまでもクロックとデータのズレを吸収するのが目的であって、32bitとか64bitのデータバス全体にDLLが入っているわけではない? データバスは等長配線で頑張って、それとは独立に引き回すクロックはDLLでズレを吸収する、というようなことなのかな。

 CDRにもDLLが入っているらしいけど、ググってもいまいち出てこない。CDRは用途(プロトコル)によっても実装はまちまちだろうし。


2025年2月26日水曜日

小ネタ


 Amazon Musicで天月, 狂蘭メロコ, 八雲べに & ライトのNocturnal Night Feverを再生する

 サブスク各社で配信開始された模様



 学術会議法案は撤回を、歴代会長が声明 処理水〝沈黙〟に元会長「議論の余地あったかも」 - 産経ニュース

 大学は軍事研究には一切関わりたくないが、軍事研究の内容の評価は行う、みたいな話。自分が知らない分野をどうやって評価する気なんだろう。君たち、影響力を持った素人から「お前の研究なんか無駄だからやめろ」とか言われたら猛反発するだろに。

 国と分離すると軍事研究を強要されるって文脈が謎い。むしろ国の下にいたほうがそういう要求されるものなんじゃないの。



 NHKの『ザ・バックヤード』、エンドクレジットで差し込んである映像を見ると、放送されてないシーンで面白そうな話がたくさんありそうなんだよなー。地上波の本放送では枠が足りないから放送できないとしても、YouTubeとか、ある程度大きな配信サイトで拡大版というか、「バックヤードの裏側」みたいなコンテンツを配信してくれたら面白いだろうに。もちろんナレーションとかいう余計なものはつけず。それぞれの研究者が自分の専門分野を語るだけのコンテンツ。素人相手だから噛み砕いて説明してるだろうし。



 Kindle PWは端末の検索画面から検索すると、ライブラリにある本の本文からも検索して、その本の中でそのワードが何回出現したかを表示する機能がある(もちろん出現箇所にも飛べる)。ただ、PWはe-inkに応じたプロセッサしか入っていないからレスポンスが悪いのが欠点。あと、1冊の中の検索画面に入ると、ライブラリの検索画面に戻ることができないから、いちいち検索画面に入力する手間がかかる。

 Fire TabletのKindleアプリ(Android版Kindleアプリ)は検索画面から本文検索ができないのが欠点。

「前にKindleで読んだはずなんだけど、どの本か覚えてないんだよなぁ」を検索したい場合、PWでライブラリ検索して出てきた本をFireタブで開いて書籍内検索する、ってあたりが落としどころかな? もっとも、検索性能はあまり良くないので、直交性の高いキーワードをズバリ思い出しておく必要はある。



 ゲーミングキーボードを衝動買いしてみた。国内OA機器メーカーのゲーミングブランド。デザインで選んで流通在庫(生産終了品)を購入。ガチのゲーミングブランドの製品に比べると安価な製品。

 動機としてはDelta Forceを遊んでいるときに明らかにWASD周りで追加のキー入力が認識されてないな、という挙動があったので、組み合わせ制限の緩いゲーミングキーボードがほしいな、と思ったのはあるけど、最近はDelta Forceを遊ばなくなってしまったのでな。普通のゲームならそこまで同時押しを求められることもないし。強いて言えば、今使っているキーボードのShiftが若干認識されづらくなって、ChromeでCtrl-Shift-Tabがうまく使えないのが不便、というくらい(以前はマウスのサイドボタンに割り当てていた操作)。

 キーボードとしてはそう変なものではない。全キー同時押しとかRGBライトとかがついているのが普通のキーボードとは違うところ。あとはよく言えば重量感がある。悪く言えばクソ重い。

 今まで使っていたキーボードは普通のものだと思ってたけど、大きさが結構違う。実測でキーピッチ17.8mmくらいかな。買ったやつは実測19.2mmなので、7.8%くらい大きくなった。結構違和感ある。指が届かないというほどではないにしても。

 ここ10年くらいはずーっとパンタグラフ式を使っていたので、高さのあるキーボードは変な感じ。パームレストがないので腕を浮かせる感じで使っている。ストロークに対して閾値が浅いので、少しでも力を入れると入力される。結局腕から指先まで浮かせて使うので、タブレットのソフトキーボードに入力しているような気分になる。20mmとか1インチとかそれくらいのパームレストがあると良さそう。20x20の押出材をおいてみたけど、高さ的にはちょうどいいかな? 冷たいのが難点。。。

 全体的に違和感が大きいけど、大部分は慣れかな。寿司打で軽く遊んだ感じ前のキーボードと大して違いのないスコアだし。

 今まで使っていたやつはBluetooth接続なので、数分操作していないとスリープに入って、再接続に1秒とかかかるので、操作性が少し悪かった。今回買ったのは有線なので、あらゆるタイミングでレスポンスがいいのが快適。ただ、机の周りが狭いので、キーボードを片付けようとするといちいちUSBを抜かないといけないのが面倒。もっと軽ければ適当に物の上に置けばいいんだけど、重量感があるのでそういうわけにもいかず、手間がかかる。



https://www.jstage.jst.go.jp/article/conf/35/0/35_107/_pdf

 2022年。船舶を想定した天文航法の自動化の研究。スタートラッカのアルゴリズムと通じるような内容。ただし視野角が広めでロバスト性高め(雲等の掩体を想定)がSTTと違うところかな。

 星の距離(離角)をカタログ化して探すようなアルゴリズム。ペアの数を2個、3個、4個と変えてモンテカルロシミュレーションで検証。

 あくまでも特定の星ペアの同定しか行っていないのかな。カタログを投影して姿勢をイテレーションするみたいな処理はしていないと思う。そのあたりは次の年の人に任せる、って感じか。まあ、大学の論文ならそんなものか。

 この段階でのモンテカルロシミュレーションだと、恒星ペアを誤認すると、そのパラーメタ(アルゴリズム)は使えない、という判断になるけど、実際には視野内の輝点とカタログを比較してマッチ率が低ければ棄却する、みたいな処理ができるから、実際にSTTを作るのであれば星の同定で誤認率が多少あっても全く問題はない(多少処理速度にペナルティがあるとしても)。院生が1,2年で作業できる範囲に絞ると特定の星を数学的に同定する手法を開発する、みたいな範囲しかできないんだろうけど、実用化を考えるともう少し広い範囲で作業したほうがいいだろうなー、って気がする。STTはわりと簡単に作れる(作れた)し、民間企業なら1,2年もあれば実際に船に乗せて運用テストとかまで行けそう。



https://www.jstage.jst.go.jp/article/jacc/67/0/67_19/_pdf/-char/ja

 太陽位置を使用した位置推定の研究。偏光カメラを使うことで太陽が雲に隠れていても方位・仰角が得られる、みたいなやつだと思う。ヴァイキングのサンストーンの逸話を現代化したって感じかな。

 航空機でGNSSが使用できないときにINSと組み合わせて、INSが発散しないようにする、というような使い方を想定しているんだと思うけど、ちょっと誤差が大きそう。2,3桁改善すれば、信頼性とかコストによっては民間機のバックアップには使えそうだけど、とはいえ偏光カメラか……

 空中衝突(異常接近)はTCASで回避するとして、あくまでもGNSSが無くなったときに紛争地域(or情勢が悪い国)の近くに行かないように、位であれば10kmオーダーの精度があれば使えそう。その程度の精度があれば着陸時はVORに引き継げるだろうし。

 誤差の要因がエアロゾルだとすると、高高度を飛行する航空機であればもう少し良い精度が得られるのかな? 太陽を使うので昼間しか測位できないという問題はあるけど、夜間は恒星を使えばいいだけだし。太陽観測だと低仰角まで見える偏光カメラ、恒星観測だと天頂狙いの挟視野角・高感度カメラが必要になるけど。



 アメリカでの国からの研究資金の提供で、研究補助金は伝統的に軍事研究に限られていて、民間の研究に対して国が補助金を出すことは避けていた(民間の研究は民間で競争させて、国が歪めるようなことはしない)、みたいな話を見かけたんだけど、本当なんだろうか。あと、同じような文脈で、ベトナム戦争後の厭戦気分で軍事研究に対する否定的な意見だけでなく、国からの研究資金自体が自由な研究に対する脅威である、みたいな話もあったらしい。前者が事実だとして、後者の発言も実際にあったものだとすると、つまり国の研究資金というのは軍事的な成果を得るためのものであって、それ以外の研究ができないから、国からの研究資金はだめだ、みたいな話なんだろうか。

 フェルミ加速器研究所の初代所長の「国防に資する施設ではないが、守るに値する国になるために必要なものだ」(意訳)的な発言を考えると、「軍事研究目的の予算」といっても、結構幅広い分野で認められるのかな。まあ、軍の研究予算で折り紙の研究をする国だしな。軍事予算の幅も広そうだが。

 アメリカでは軍事と民間の境界がキッチリ分けられていて、軍事的な組織と民間の組織もかなり分離していたらしい。例えばF-2の共同開発では、MHIがボーイングの旅客機部品を製造していることを理由に、日本に戦闘機技術を渡すとそれが民間航空機部門に流用されて、ひいてはアメリカの民間航空機企業への脅威になる、みたいな考え方。FAA(連邦航空局)も、民間航空機の安全運行を目的としたシステムにGPS(米軍が作ったシステム)を使うことに否定的だった。

 ただ、コンピューターが出てくると軍と民間の分離なんてことは言ってられなくなって、ARPAの資金で民間の研究開発を支援したり、というような状況になってきた。軍の装備品はライフサイクルが非常に長くて、近代化改修を入れても数十年毎になる。複数機種を含めても、せいぜい10年に1回とかの頻度でしか開発ができない。F-14に積んだフライトコンピュータは当時の民間のプロセッサより高性能な計算機が使われていたが、その後は民間の半導体技術(の中でも更に枯れた技術)が軍に採用されるようになった。

 米軍がデュアルユースとかCOTSとかを本格的に使い始めて、アメリカで軍と民間の境界が曖昧になったのは、1980年から2000年あたりのことなのかな。F-14の初飛行が’70年。湾岸戦争で軍用GPSが足りなくなって民生用GPSを大量購入したのが’90年。タイコンデロガにWindowsを乗せたのが’97年だから、民生用コンピュータがある程度普及してから結構時間がかかっている。大型のドンガラにCOTSハードウェアを乗せるようになったのは、パーソナルコンピュータが普及してからかな。

 ただ、このあたりの話を読みたくてググってもいまいちそれらしい資料が見当たらない。大抵は防衛装備庁の補助金制度以降の倫理観とかの議論が大量に出てくる。日本の状況を考えると、数十年くらい前までの、民間と軍事をキッチリと分離したアメリカの予算制度とかは結構参考になりそうな気もするんだけど。なぜアメリカは軍と民間を分離して成長させたのか(国内でクリーンルーム設計を行う非効率性を許容するだけの理由があるはず)、なぜその境界線が薄まったのか、その結果どうなったのか、等。日本の補助金制度の是非はともかくとして、アメリカの制度がどうなったのかを理解するのは意味がありそうだが。日本では防衛装備庁の補助金に対する反対意見(あるいは少なくとも問題提起の形を取ったもの)が非常に多くて、結論ありきで書かれている論文が多い印象。少なくとも、軽くググって出てくる大部分はそういう内容。もっとも、タイコンデロガからまだ30年も経ってないわけで、歴史を振り返るというほどの歴史にはなっていないような気もするが。


***


 波形のSinc補間

 橙が補間前の波形、青が補間後(32倍)の波形。Sincの長さは128(-64~+63)。Sincをそのまま使っているので振動が強い。

 SincをBlackmanで末端処理。振動がだいぶ減る。

 拡大すると、補間前と補間後のサンプルが重なっていて、かつある程度正しそうに補間できていそうな事がわかる。


 畳み込むSincの波形(8倍補間の0と1の波形、Blackman)

 Sincの波形は帯域幅が1のSincのそれで、最初の波形は中央が1のインパルス、それ以外は非対称の波形になる。


 Sincの畳み込み処理はFIRフィルタと全く同じ処理だから、例えば32倍に補間するならFIRを32個並べて、一つのサンプルを順番にFIRに入れていくと、補間した波形が得られる。

 やっていることはただのインターポレーションなので、1個のFIRに長い係数を設定しているのと同じ。ただし長いFIRだと計算量がかなり多いと思う。SincでN倍にするならN個のFIRを並べたほうが計算コストが桁違いに低いはず。感覚的には、FIRインターポレーションでは途中に0を大量に挿入して、それに対しても係数の掛け合わせが発生する。帯域幅1のSincフィルタを複数個並べた場合、0挿入は行わないから、その分で計算量を減らせる。おそらくこれがいわゆるポリフェーズフィルタというやつだと思う。

 さらに言えば0番目のFIRはインパルス応答だから、これをFIRでなく遅延線で処理すればFIR1個分計算リソースを減らせる。FIRで実装するなら全部FIRで処理したほうが楽だろうけど、ポリフェーズフィルタとして実装するならその辺は好きに処理すればいい。


***


 若干遠出する用事があったので、GPSのサンプリング

 ところどころドロップしている。1.92Mspsでも落ちるときは落ちる。

 3区間で前後が移動中(50km/h前後?)、途中が停止中、のはず。移動中はSNRがかなり悪い。相関器のチューニングの問題だと思うけど、停止中のアンテナで取ったサンプルしか使っていないので、移動すると性能がかなり悪化するらしい。

 別PRN

 だいぶSNRが安定している。単に視線速度の問題かもしれないけど。


 相関器を25msブロックで走らせて、40Hzで測位演算。NMEA 0183形式で出力。

 Google EarthでNMEA 0183を読み込む場合、最低限GPGGAとGPZDAが必要。GGAで4次元空間を拘束できるが、GGAには年月日が無いので1日の曖昧さがある。それを解決するためにZDAの日時情報が必要。RMCは年月日があるけど高度がないので4次元を表現するには不便(船舶みたいにジオイド面に張り付いている前提なら問題ないんだろうけど)。

 0183のセンテンス、基本的なフォーマットだと垂直速度(3次元速度ベクトル)の出力はできないのかな。船舶で垂直速度が問題になるような状況なんてないからということなんだろうか。どうしても必要なら$PECEFでISO 8601に続けて位置と速度を出力するようなセンテンスを勝手に作ればいいんだろうけど。

 0183のデータフォーマットが度分秒じゃなくて度分なの、ずっと不思議だったんだけど、これってもしかして海里の近似ってこと? いや、そんな緯度にしか使えないテクニックを採用するわけが…… 経度にしても適当なスケーリング(緯度45度なら3割引)で海里として読めないこともないけど、ちょっと不便。秒で表示されるよりはわかりやすい気もしないでもないが。

 0183はインターネットが普及するより前に機材が普及しているはずだから、それ以前の規格(0180~0182?)はググっても情報がほとんど出てこない。以前の規格はLORAN-C受信機で使っていたフォーマットらしい。主に船舶を想定していた機材だろうし、そもそもNMEA自体が海洋向けの規格化団体だから、最小単位を分に設定して海里に合わせたという可能性は無いとは言えなそう。



 適当な時間範囲の測位結果をGoogle Earthで表示すると、擬似距離で測位演算した場合は誤差がかなり大きくて、水平10m、垂直50m程度の楕円で暴れる感じ。

 ドップラを使うと受信機の移動速度を推定できるけど、これはかなりいい精度で得られる。初期値だけ擬似距離で得た位置を使用して、その後は速度を積分すると、実際に通った距離をかなり高い精度で推定できるし、ノイズ成分(高周波成分)もほとんどない。速度の積分でこんなにきれいに位置が得られるとは思わなかった。ただ、衛星のロックが外れたタイミング?で距離が飛ぶ時がある。速度推定に使う衛星の組み合わせが変わると推定値のバイアスもステップ状に変わるんだと思う。あとは、それなりに精度がいいとはいえ、積分する以上は多少の誤差は防げないわけだし、速度積分だけで長時間の位置推定は厳しいとしても。適当な係数を設定して、位置=(擬似距離位置*k)+((前回位置+速度*計測間隔)*(1-k))みたいな感じで組み合わせると、高周波ノイズをあまり含まず、積分誤差もあまり増えない位置情報が得られる。本来は運動モデルを想定してカルマンフィルタとかを作るべきなんだろうけど。



 NMEA 0183は楕円体高ではなく標高で出力する必要があるので、何らかのジオイドモデルを使う必要がある。

 国土地理院のジオイド2024(ベータ版)を計算してみた(正式に公開されるのは4月1日の予定で、現在のデータセットは正式な計算には使用できない)。

 データセットは一定の間隔(緯度1分角、経度1.5分角)でジオイドの値が固定長文字列で入っているシンプルなデータ。ただ、素直にテキストファイルからfloat配列に読み出すと0.4秒くらいかかる(Releaseビルドだともっと早いかも?)。float配列のバイナリに適当なヘッダ(オフセットとか間隔とか)を含めて保存しておくと、20ミリ秒とか、デバッガの分解能程度の短時間で読み出せる。gzipで圧縮すると読み込みに70ms程度かかるけど、それでもテキストをパースするより圧倒的に早い。テキストファイルは未圧縮で35MB、圧縮しても11MB程度ある。バイナリで書き出すと13MB弱、gzip圧縮で10MBくらいまで小さくなる。

 任意の地点のジオイドを計算する場合、周辺4点から線形補間するような感じで使うらしい。そういうふうに実装して、付属しているexeで計算した乱数列と比較すると、十分な精度(exeで出力される分解能(0.1mm)以下)で得られるから、正しく計算できているはず。オンラインの地理院のジオイド計算機と比較すると多少(数十cm程度)差があるけど、モデルの精度の問題だと思う。補間せずに一番近い点を使うと最大で0.5m(大部分は0.1m以下)程度の誤差になる。ジオイドって結構勾配あるんだな。



 以前電子基準点付近で取ったサンプルから擬似距離で測位演算

 約30秒間のデータを40Hzで出力。サンプルは電子基準点の南側に10mくらい離れた場所で取っている。少し東寄りで上に上がった場所に、上下方向に広く分散している感じ。断面積が一番細い部分では直径10m程度かな。

 このサンプル、2.4Mspsで取っていたので時々ドロップしている。一番長いところで13分くらい連続している。13分間のNMEAでも最小断面積の場所で15m程度かな。単独測位でも水平方向はそれなりに安定している。



「GPSのしくみと応用技術」32pの図1-6「GPS衛星に搭載されている送信系のシステム」の図、出典はどこなんだろう。少なくともIS-GPS-200にはこういう図は見当たらないと思うだが(見逃してるだけかもしれないけど)。


 GPSの搬送波、L1,2,3,5はシンプルな整数比なのに、L4(1378.9133..)だけ10.23*1214/9という分数比になっているのはなんでだろう? 1381.05MHzとかじゃだめなんだろうか。他の割当との関係とかなのかな。


https://www.echiba.org/wp-content/uploads/2022/12/kenrenshi_054_2.pdf

 1999年頃? 千葉県の遺跡のデータベース化に関する話。

 途中にNMEA 0182の簡単な説明がある。「NMEA 0183で細かいデータが得られるが、詳細なデータは必要ないからNMEA 0182で十分」みたいな感じで選んだらしい。

 0182も度分で表現するのは0183と同じ。度と分のそれぞれにDと'がついているので、桁区切りの曖昧さが無いのが便利そうだ。



***


 C#でclassからrecordに派生できない制限、地味に不便な気がする。例えばrecord HogeEventArgs(int Index):EventArgs;的なことができなくて、class HogeEventArgs(int index):EventArgs{public int Index=>index;}みたいに書かなきゃいけない。


 C#のswitchのパターンマッチでcase TypeA a: case TypeB b: case TypeC c:みたいに複数型を列挙して、マッチしなかった形にはnullが入る、みたいな処理が欲しいような気がする(現在は全変数で未初期化エラーが出る)。

 結局変数のnullチェックが必要になるから、ifとかで分岐するくらいなら内側でもう一回switchでパターンマッチしたほうがいいとかなのかもしれないけど。


2025年2月19日水曜日

小ネタ


 ニデックが2度目の質問状に回答、「企図するシナジーの定量化は困難」:製造マネジメントニュース - MONOist

 我が社(ニデック側)が欲しいから買う、牧野側への利点は特には無い、株主には牧野独立では得られない利益を与えるんだから文句を言うな、みたいな雰囲気。


 フォトカプラを使って商用電源の周波数を捉えるプローブを作製する:電力ブラックアウトを予測する(2)(2/3 ページ) - MONOist

 普通のフォトカプラをRだけでAC100Vに接続するのってやっちゃだめじゃね? このフォトカプラの発光部の逆電圧(絶対定格)は5Vだから、AC100Vだと数十倍オーバーしてる。AC100Vをフォトカプラに突っ込むならAC対応型のフォトカプラを使うか、あるいはフォトカプラと並列に逆電圧を逃がすためのダイオードをいれる必要があるはず。

 ブラックアウトって周波数で予想できるのかな? 最近のブラックアウトってトラブル(発電所の停止とか運用ミスとか)で突発的に起きてる印象。周波数の監視って10年くらい前に話題になってた気がする。この人の記事、話題が10年くらい前の雰囲気がある。


 高知に宇宙港を。「スペースポート高知」発足、目標は'29年ロケット打ち上げ | TECH+(テックプラス)

 イメージ図、生成AIで作ったものとはいえ、なんだかなぁ。



 Delta Forceで遊んでたらいきなりOSが落ちてびっくり。しかもOSが起動できなくなって、電源長押しで落としてから再起動したらWindowsの修復が走った。以前遊んでいたゲームではOSが落ちるのはよくあることだったけど、DFでは初めて。今シーズンはour system detected irregular data activityでゲームが落ちる頻度も高いし、なんか調子悪そう。とはいえ、irregular data activityはアンチチートの誤検知としても、OS巻き込んでクラッシュはちょっとやることが大きすぎるというか。

 誤検知で落とされるのもプレイのモチベーションにかなり悪影響が大きいし、最近はウォーフェアで猛者がモサモサしてるマッチに入れられてリスキルされまくったり、DF遊んでて楽しくなくなってきた。そろそろ潮時かなー。



 自分は遊んだことのない某PvPメインのゲームジャンルを興味本位でぐぐってみたら「初心者だから勝てないとか言ってる暇があったら基礎的な部分を学んでからゲームをやれ」みたいなことを大手ネットメディアが書いてて、うーん、厳しい世界、って感じ。自分で座学をやってガチってからじゃないと入門すらできない世界ってあっという間に衰退しそうだが。


***


https://jjy.nict.go.jp/QandA/reference/Proceeding/sympo-pro6.pdf

 JJYを使った高安定クロック。-11乗くらいの安定性。Rbを内蔵しているので数時間程度の停波でも安定。国家標準の周波数に同期できる。感度の高いアンテナに接続する必要がある。いつ頃の話かわからないけど、2005年前後あたり? もう少し前かも。


https://www.jstage.jst.go.jp/article/jinnavib/62/0/62_KJ00004995621/_pdf

 1979年。NAVSTAR/GPSに関する解説。Block Iの時代。

 我が国では最近、小型の漁船にまでNNSSの受信機が普及をして、衛星航法が非常に身近なものとなってきている。(後略

 NNSS、そんなに普及してたのか。

 PコードとC/Aコード。C/Aについては「Clear/Acquisition(明瞭/捕捉)」という説明。

 CMDAの原理とか色々。

 軍用のPコード受信機。2周波4chを受信する。

 民間用のC/A信号受信機。1周波1chの受信機で4衛星を時分割受信。「なお、C/A信号のみの受信機の価格は、量産の個数にもよるが15000~25000ドルと言われている」すげー値段だ。1980年から2025年のインフレ調整を行って現在のレートで940~1600万円くらい。半世紀経って、高性能化したうえで3,4桁安くなっている。電子技術の発達ってすごいんだな。


https://www.jstage.jst.go.jp/article/itej1978/41/4/41_4_334/_pdf

 1987年。衛星航法の説明とか。

 NNSS。改良型のNOVAの仕組み。衛星の中に金属球を浮かせ、それを一定の位置に維持するようにスラスタで制御を行う。これにより空気抵抗による減速を除去する。ドラッグフリー制御をやっていたらしい。

 その他のシステムの解説とか。GPS(米軍)、GEOSTAR(米民)、GLONASS(露)、NAVSAT(欧)、GRANAS(西独)。


https://www.jstage.jst.go.jp/article/jinnavib/67/0/67_KJ00004995745/_pdf/-char/ja

 1981年。NOVAの解説。NNSSの精度改善に必要な事項など。

 ドラッグフリー制御(DISCOS; Disturbance Compensation System)の説明。内径40mmの空間に直径22mmの合金球を浮かべ、その位置変化を衛星の軌道制御にフィードバックする。合金は非磁性と質量の要求から、金70%、プラチナ30%の合金で、重さは111g(衛星全質量の0.13%、水との比重でほぼ20)。軌道制御は小型のイオンエンジンを使うらしい。最初は3次元で、以降は1次元で軌道修正を行う(進行方向のドラッグが支配的らしい)。衛星のイラストに「テフロン推進器」というのがあるけど、これがDISCOSのスラスタかな。

 衛星にコンピュータを乗せて、衛星側でいろいろな計算を行う試み。

 スペクトラム拡散の追加。コード周期19.66ms(NNSSの航法メッセージの1bitに相当する時間)の拡散符号を使用して時刻同期を行う。ドップラとレンジングを併用したDOPRANという手法で測距したり、USNOとNBS(現NIST)で時刻比較の実験を行ったり。


https://www.jstage.jst.go.jp/article/zogakusi/665/0/665_KJ00001777323/_pdf

 1984年。GNSSの解説とか。

 NNSS。米軍が使用している受信機のマニュアルを実費で販売することになり、様々な組織で受信機が作られるようになった。測位の原理等。NOVAの改良点。受信機の概観。受信機は28社が製造し、中23社の集計で、’83年までの累計で5万台程度が販売されている。その中1周波型が93%を占め、全体の中で軍用は400台程度。GPS運用開始後5年後(’94年頃想定)まではNNSSとNOVAをそれぞれ2基ずつ運用する計画。

 NAVSTAR GPS。NNSSの欠点を解消できるように計画。原理とか色々な解説。当初計画で24個の衛星が、予算的な問題から18個(+予備3個)へ削減。予備無し(18個)では1日に2回、測位ができなくなる地点が発生する。予備を含めた21個でも1日に1,2回測位精度の劣化が発生する。受信機の試作。4-5chの受信機を使用し、航空機等に搭載するもの。1chを1秒程度ずつ切り替えて使う、低速な乗り物に使用するもの。1chを小型軽量化しマンパック形にしたもの。C/Aコードを使用する1chの受信機で、輸送機等に使用(後に民間用へ変更)。1chだけだとメッセージの受信にそれぞれ30秒ずつ受信する必要があるから、2chのモデルがあったり、あるいは1bit区間で複数の衛星を切り替えて1chで受信できるモデルだったり、いろいろ提案されている。フェーズドアレイアンテナの提案も。’83年の大韓航空機撃墜事件の後、大統領がGPSを民間航空機で使用する決定を行ったが、軍用システムであることから民間機で使用することに対する根強い反対がある(この頃のアメリカはデュアルユースに対してかなり否定的)。事件前には議会はGPSユーザーから使用料を徴収しようとしていたが、事件後は態度を軟化させ、無料で使えるようにする方針。ただしC/Aコードでも測位精度が高いため、意図的に精度を劣化させる措置を行う。

 ソ連のシステム。NNSSと同様のCicada(Tsikada)と、GPSと同様のGLONASS。Cicadaをイギリスが解析した報告。GLONASSについては詳細は不明。

 欧州が提案する民間用の測位衛星NAVSAT。衛星に原子時計を搭載せず、ベントパイプで放送する。3軌道面8個ずつ24衛星。DSSS(10Mcps程度) or CWを予定。DSSSは測距しやすく、CWはドップラ解析しやすい。データ133ms+ガードタイム17ms(1周期150ms)のTDMA形式。地球の裏側にいる衛星とはフレームを共有できるので、12フレーム(1.8秒周期)で1巡。

 IMOでの検討。今のところGPSが唯一のシステムだが、軍用(デュアルユース)への拒否感がある。米民間が構想しているGEOSTARもあるが、これは静止軌道上のトランスポンダを使用した地域測位システムであって、IMOが求める全地球規模で測位する能力はない。GPSかNAVSATかどちらを使うか、という感じ。

 最後に「(前略)最終的には腕時計程度の大きさの利用者装置による個人用の衛星航法装置が実現される可能性も考えられている。21世紀の前半のある時期にはそのような時代が来るであろう」とのこと。GPSを内蔵した世界初の腕時計とされるのがカシオのPROTREK PRT-1GPJで、発売が1999年。15年後、20世紀の末にはすでに実現していた。



https://www.hitachi.co.jp/New/cnews/month/2009/02/0218.pdf

 2009年。IMES送信機の試作例。かなり小さい。

 L1 C/Aの送信ってどんな感じでやるんだろうか。変調方式を工夫して少リソース化したみたいなことが書いてあるから、本来はある程度複雑な演算が必要なんだろうけど。しかし、GHz帯とはいえWiFiやBluetoothよりは低い周波数だし、BPSKだし。そこまで複雑になるものかな。


https://www.jstage.jst.go.jp/article/sicejl1962/20/2/20_2_236/_pdf/-char/ja

 1981年。m系列に関する数学的な解説とかが色々。

 単に乱数としての特性を求めている感じ。100bitのレジスタで乱数を発生させれば1Gbpsで出力しても地球の年齢の8000倍くらいの長さの乱数が得られる、とか。

 デジタル回路(フリップフロップとかXOR素子)でm系列を作る場合、200Mbps程度で頭打ちで、将来的にもさほど改善はしないだろう、という予測。遅延線を使うと700Mbps程度で出力できた報告がある。


https://www.jstage.jst.go.jp/article/safety/31/2/31_117/_pdf/-char/ja

 1992年。土木工事で発破作業を行うときに、起爆タイミングをm系列で遅延させればスペクトルのピークを下げられて、低周波音の問題(窓のガタツキとか)を減らせるのではないか、という提案。ググってもあまり出てこないので本格的に導入するほどの効果は無いんだろうけど。共振が問題なら各段で遅延時間を増す(or減らす)シンプルなチャープ変調で良さそうな気がするが。


https://www.jstage.jst.go.jp/article/jasj/53/6/53_KJ00003054009/_pdf/-char/en

 1997年。エアコンのファンを等間隔でなくm系列に従った間隔で配置することで、ノイズのスペクトルを分散させる提案。


***


 rtlsdrblog v.1.3.4のrtl_tcp.exe経由でサンプリングした1575.42MHzの特定の衛星に対する時刻差

 やっぱりドロップする。バージョンの問題ではないのか。


 受信時のクイックルック画面

 1575.42MHzを2.4Mspsで受信中(切断しているのでbias teeのチェックが外れているが、どちらもB-T ONで受信)。ゲインはテーブルから28を設定している。ppmの設定をリセットするの忘れてるけど、5ppm程度なら誤差ということで。

 一番下が周波数スペクトル、その上がサンプルのヒストグラム。左が1.3.4、右が1.3.6で受信(同じドングルに対してrtl_tcp.exeを切り替えて受信)。1.3.4に比べて1.3.6はヒストグラムが広く、スペクトルも高めに出ている。1.3.5でLバンドの感度が改善したそうだが、ちゃんと効果はありそう。まあ、この図だけだとノイズが増えただけという可能性も捨てきれないが……


 rtl_tcpでなく、rtl_sdrで直接ファイルに保存

 やっぱりだめっぽい。

 rtl_sdr、オプションでBias-Teeを指定できないのがつらい。運が良いとrtl_tcpとかで有効にしたBias-Teeが残っているけど、残る条件がよくわからない。結局10分とかサンプリングしたあとに解析してみないとわからないので、作業効率が著しく悪い。毎回rtl_eepromでBT強制有効化とかするのも嫌だしな。


 rtlsdrblog版でなく、フォーク元のosmocom版のrtl_tcp経由でサンプリング

 やっぱりドロップする。rtlsdrblogがフォークしたのが6年前だから、それより前からあるバグなんだな。


 PCの処理能力の問題かと思って、SDRのサーバーとして同軸ケーブルを引き込んでいる場所においてあるNUC(N5105)から、ノートPC(core i5 gen2 M)に変えてみたけど、相変わらずドロップする。i5とはいえ10世代以上前だし、N5100のほうが早そうな気がしないでも。。。とにかく、悪化も改善もしないから、PCの問題(含USBの帯域幅等)ではなさそうというのがわかっただけでも収穫。


 サンプリングレートに2.4Mspsを設定したのは、帯域幅が広いほうが良かろうみたいな理由もあるけど、もう一つはサンプル数が多いほうが相対的にノイズを減らせる(信号はコヒーレントだがノイズはインコヒーレントだから、コヒーレント積分すれば信号はN倍になるがノイズは√N倍になるはず)みたいな理由もある。



 NUCのrtl_tcp経由でいくつかのサンプリングレートで取得

 1.024Mspsと1.44Mspsを除いて、2.048Msps以下はドロップしていない。2.304Mspsや2.4Msps、2.56Mspsは高い頻度でドロップする。

 0.96MspsはC/Aコードのチップレート(1.023Mcps)よりも帯域幅が狭いが、それでも一応コードの追尾やメッセージの復調はできる。

 それぞれのサンプルを15分ほど記録しているので、0.96Mcpsと2.56Mcpsでは3時間以上の時間差があって、衛星の配置や伝播状況も違うだろうから、単純な比較はできないとしても、やはり帯域幅が広くなればそれだけSNRが改善する傾向は見て取れる。1.28Mspsの500秒付近とか、1.6Mspsの300秒前後とか、1.8Mspsの500秒付近とか、相関値がかなり低下した部分でもメッセージの復調が行えている。ここまでロバストだとは思わなかった。BPSKの多数決ってすごいんだな。

 途中、メッセージの復調率が極端に低下する事があった。そういう場合、TOWは適当な値(今回は144972)に固定されて、メッセージは6秒(サブフレーム)毎ではなく、30秒(ページ)毎に復調された。おそらくSF1,2,3のどこかに偶然プリアンブルが出てきて、しかもそれらの前後で正しいパリティのビット列が生成されてしまったんだと思う。LNAVメッセージって偶然にプリアンブルやパリティが出てくることは防げないっぽい。あくまでも1ページ毎の繰り返しなので、例えばサブフレームを挟んで2箇所のプリアンブルをチェックするとかで、誤った位置にロックすることができる。正しいプリアンブルは必ず300bit周期で出てくるが、偶然なプリアンブルが300bit離れた場所に出現して、しかもその周囲のパリティも正しくなるという確率はかなり低いはず。絶対に有り得ないかと言うと、わからないけど。念を入れるなら例えば1ページ30秒のビット列を持っておいて、プリアンブル5個とサブフレームIDの連続性を確認する、みたいな手法は考えられるけど、計算量とか、メモリ使用量とか、実装の手間とか、色々高コスト。一番大きいのはTTFFがその分遅くなる点。まあ、同期ができた時点で1ページ丸ごとメモリに入っているから、その時点でエフェメリスとか必要な情報は全部持っている、という利点はある。うまく実装できればこっちのほうが楽な可能性もあるな。PCで処理する前提ならPRN1個毎に3.6万ポイント(int型複素数なら約300kB)は問題になるような量じゃないし。


 RTL-SDR Blog V4ドングルならなにか変わるかな?と思ったけど、これダウンコンバータが変わっただけでADC以降はRTL2832Uのままだから、サンプリング周りは変わらないのか。


 別のタイミングでサンプリング

 今度は2.048Msps以上はすべてドロップしているが、1.92Msps以下は問題ない。


 ドロップしたサンプリングレートを捨てて別のサンプルを取り直す

 ↑2回戦。1.28Mspsと1.536Mspsが脱落。

 ↑3回戦。脱落者なし。

 ↑4回戦。うーん、落ちない。。。。。。

 その後、第5回戦、6回戦でも脱落者なし。第7回戦でようやく1.8Mspsが脱落。もっと高頻度にドロップするような印象があったけど、なかなか落ちないな。


 1.92Mspsで4フルフレーム分サンプリング

 2800秒あたりで途切れてる

 ドロップした場合はある程度高い相関値から急激に落ちるけど、落ち方がゆっくりしている。衛星が障害物に隠れたみたいな感じ。急に高い相関値で現れているけど、これは相関器をリセットして再同期したため。別のPRNを指定すると途切れずに復調できるので、データのドロップではない。

 この時の衛星の方向には立木(松)が1本あって、この日は雪が降っていたので、木に積もった雪がLバンドをブロックしていた可能性は無きにしもあらず。とはいえ、GPS衛星の軌道速度(2.3万km先で4km/s)でこんなに動くものかな。100秒で1度くらいしか動かないはずだが。回折とか反射で干渉したみたいなことなんだろうか。

 1.92Mspsは結構優秀かも。ほとんどドロップしないし、サンプリングレートは高いし。



 逆に、超低SPSでサンプリング

 0.3Msps、C/Aのチップレートの29%の速度。短時間のサンプルで、最後の方はデコードに失敗しているし、Early/Late/PromptのMagnitudeの差が無くてなんで追尾できているのかわからないけど、それなりにメッセージの復調ができている。取得したTOWも受信時刻に対して整合的。復調処理も高spsに対してかなり早い(データ量が1桁少ないんだから、1桁早い)。ただまあ、復調の性能はかなり悪いと思う。



 やはりワンセグチューナー(RTL2832U)系のSDR受信機は安定性にネックがある、ということなのかな。もう少し上のグレードの受信機がほしいけど、とはいえHackRF Oneとかだとちょっと大げさじゃね、と思いつつ、でもそれ以外の選択肢ってあんまりなさそう。Airspy MiniとかR2はプロプライエタリな感じっぽい。libusbデバイスのはずだからWin32で叩けばアクセスはできるんだろうけど。HackRF OneはWindowsのツール郡の入手性が悪そう。最近はWindows版バイナリは配布されていないっぽい? Ubuntuが推奨環境だそうだ。HRO本体が4万円~、それを叩くためのUbuntuの実機を買うのに中古のノートなり安いNUCを買うなりで3-5万円~、気軽に買える値段じゃない。SDR#でHROの受信に対応しているらしいから、IQバイナリを数秒取る程度ならWinでもサクッと行けそうだけど、長時間(4GB以上)とかリアルタイムに処理したいとか中途半端なサンプリングレート(8.127Mspsとか、16.254Mspsとか)を設定したいとかだと困りそう。



 試しにPコードを生成してみた。first 12 chipsを見る限りは多分正しく生成できている。Pコードは約1.5秒のコードを繋げていくので、せめて数十秒くらい確認しないと本当に正しいかはわからないけど。

 Pコードって頭の数十チップは全PRNで共通なんだな(PRN番号が低い方ほど共通部が短い)。時間にすれば数マイクロ秒程度だけど。C/Aコードに比べれば複雑ではあるけど、リアルタイムに生成するのが前提のコードだから、極端に複雑というものでもない。

 P(Y)コードってPコードだけで逆拡散したらどんなスペクトルになるんだろうか。幅500kHzくらいのSinc型に見えるんだろうか? 20Mspsくらいの受信機か……


 GPSのWコードってどうにか解析できないんだろうか? 何らかの法規制でP(Y)コードを使う機器がアメリカで販売できないとしても、例えば中国で作って国内で使う分にはどうなんだろうか。DJIのRTKキットでWコードを解析してドローンとPコードでRTKを行う、みたいな。

 アメリカのDJIに対する規制ってどうなったんだろうか。あんまり規制しすぎるとアメリカ市場を完全に分離して、中国国内でGPSの機密コードを積極的に活用するような方向に行きそうな気もするが。それともYコードはそう簡単に解析できるようなものじゃないのかな。



 amazonで先月22日に注文したU.FL-SMA変換コネクタがようやく届いた。当初予定だと1週間くらい前には届いていたはずなんだけど、春節にぶつかった感じ。

 小さなGPSアンテナをSDRドングルに接続できる。ただそれだけ。窓際に置いてサンプリングしてみたけど、1個も相関強度でなかった。まあ、アンテナがこの大きさだしね。。。暖かくなったら(その時に覚えていたら)外でサンプリングしてみよう。

 一応、Bias-TeeをONにすればヒストグラムが広がるので、DCは通るし、Lバンドも通っているはず。アンテナ自体はNEO-6Mに接続して野外で受信できたから、問題ないはず。SDRと組み合わせたときの感度が十分かはまた別の話。


2025年2月12日水曜日

小ネタ


 なんか最近Delta Forceラグいなーと思ったら、Visual Studioが複数起動していると、デバッグ中じゃなくても、PCのリソースがそっちに食われるのな。いくつかVS閉じたらだいぶ軽くなった。



 #にじ若手女子マイクラ - YouTube

 本鯖はスプロール現象の見本みたいな状況で、いでぃおすもみんな遠くに拠点を作ったから交流が少ないとか、やはり歴史のある鯖なりの欠点もあるし。若手鯖は更地から期間限定で始めたから、アクティブな人数も多いし、拠点が近いから交流も盛んだし。

 主に七瀬すず菜視点で見ているけど、年上の新人の距離感が結構好き。

 にじさんじ、30代くらいの新人入ってこないかなー。兄貴姉御枠。ある程度人生経験のある人が入ってくると最近の新人と違う方向性で面白くなりそう。最近の若い新人との距離感が難しそうではあるけど。



https://www.jstage.jst.go.jp/article/itej1978/46/5/46_5_559/_pdf

 1992年。赤外線カメラに関する話。

 実用化された画素だと三菱電機が1987年に作った512x512が実用的なものとしては最初のものらしい。カタログスペック。640x480とか1040x1040の製品、60fpsの製品とか。

 この時代にはセンサやコントローラを一体化した8kgの製品があって、Heスターリングサイクルを使った80K冷却器を採用。撮影した画像等の例。

 天文観測用の赤外線カメラ。可視光はすでに固体化が進んでいる。赤外線はダストの影響を受けづらいため、新しい知見が得られると期待している。デュワー内を液体N2で冷却し、センサを固体N2で60Kに冷却。ノイズ対策の話とか。このあたりになるとトランジスタの発光現象なんてものも問題になるらしい。LEDだってPN接合だし、トランジスタでも光くらい出すか…… ググっても出てこないので普通の用途で問題になるようなレベルではないんだろうけど(あるいは、画素メーカーが対策のノウハウを企業秘密として報告していないだけか)。

 今後の展望とか。


https://www.jstage.jst.go.jp/article/sicetr1965/27/11/27_11_1199/_pdf

 1991年

https://www.jstage.jst.go.jp/article/sicetr1965/30/10/30_10_1151/_pdf

 1994年

 上は製鉄所で使うためのレベル計の試作。下はそれを地中レーダに応用した例。

 m系列を使用し、アナログ系の処理でパルス圧縮を行うための手法の提案。127チップから1023チップ程度のm系列を使ってパルス圧縮を行う。LFSRを2つ並べてクロックに微妙な差を与えることで、クロック差に応じて応答信号を時間方向に拡大(今回の例では4万倍程度)できるので、見かけ上の掃引時間を長くできる。例えばレンジ1.5mでは20ns程度の時間を処理する必要があるが、4万倍に拡大すると400us程度の時間になる。送信用のLFSRと受信用のLFSRの周期がわずかに違うから、送信と受信で位相差ができて、それが距離方向の掃引となる。

 地中レーダは表面から照射して往復させる場合と、細い穴2本にゾンデを入れてその間を画像化する。ゾンデはアンテナの直前でO/E変換、E/O変換を行って、電源は外付け。かなり細い穴で良さそう。

 スペクトラムアナライザの掃引みたいに目的のウインドウ(上記方式の場合は距離ゲート)以外の情報は捨てているから、使用可能な情報を漏れなく使うような方式ではないけど、大きな情報を遅延線なりデジタルメモリに保存しておく必要がないのが利点。特に近距離の電磁波伝搬みたいに短時間の現象を小リソースで引き伸ばすことができる。


https://www.jstage.jst.go.jp/article/jsmst/7/2/7_2_1/_pdf/-char/ja

 1995年。海底の地殻変動を観測することを目的とした、音響測距技術に関する話題。数kmで1cm程度の精度がほしい。バーストでも指向性のトランスデューサを使えば実現できそう。パルス圧縮の方式がいくつか。海底対海底と、海底対水面の方式。GPSを使う方法の説明で、Pコードのキネマティック観測みたいな話が出てくる。


https://www.eri.u-tokyo.ac.jp/GIHOU/archive/05_065-073.pdf

 1999年。日本で開発中の水中測距の機材。m系列よりFMチャープのほうが精度が高い、とのこと。アップチャープとダウンチャープで送受信を分離するんだそうだ。


***


 夜中にワンセグドングルでダイレクトサンプリングしてフーリエ変換

 0.5MHz2.4Mspsで-0.7MHzから+1.7MHzの範囲が見えている。2^22ポイントなのでコヒーレント長約1.7秒、それを32回インコヒーレント積分している。0Hzと500kHzのピークはDCオフセット成分。500-1600kHzあたりに色々入ってそう。


 一部を拡大

 左側の一部だけでも、567kHz札幌100kW、585kHz釧路10kW、596kHz東京300kW、612kHz福岡100kW、621kHz旭川3kW、666kHz大阪100kW、693kW東京500kW、702kHz北見10kW、747kHz札幌500kW、774kHz秋田500kW、828kHz大阪300kW、864kHz旭川3kHz/室蘭3kHz/遠別1kHz、891kHz不明、900kHz函館5kW、945kHz室蘭3kW、等々、ラジオ放送は色々ある帯域だけど、とはいえ屋内のマグネチックループアンテナをダイレクトサンプリングして、搬送波だけとはいえこんなに受信できるものかな? 1kHzの整数倍のスプリアスなんてどっからでも入ってきそうだしなぁ。

 試しに747とか774とか828をSDR#で再生してみたら、いかにもNHK R2っぽい内容(中国語講座的な内容)が聞こえてきた。うーん、じゃあ受信できてるのか……


 試しに40kHz付近を拡大してみたり、SDR#で40kHzをCWで聴いてみても、何もなさそう。さすがに無理か。波長が1桁長い分でアンテナ利得も下がるし、rtl sdr blogドングルはbias-teeが入っているからDC付近では電源に吸い込まれるという点もあるし。


 久しぶりにSDR#(以前ダウンロードした、最新版よりは少し前のやつ)を使ったけど、やっぱりこのUIめちゃくちゃ使いづらいなー。機能的にも不便だし。


***


 13.333kHzの搬送波を振幅変調したWAVファイルを作成。電波時計に聞かせてみたらちゃんと同期した。AGC含め4分かかった(AGCは15秒くらいなので3分20秒程度あれば受信できる)。JJYタイムコードは時分にはパリティがあるけど、それ以外(年日曜等)にはパリティはないから、自分が持っている時刻と明らかに違う時刻を受信したときは、多数決を取って誤り訂正するようなアルゴリズムになっているんだと思う。普段の時刻の修正が1フレーム(1分)で済むのは、自分が持っている日付と同じなら無視するだけで良いみたいな処理なんだろう。同じ日付で数分ズレ程度でも3フレーム必要だから、誤差の範囲(数秒程度)を超えると多数決を取るのかな。

 最初、イヤホンを近づけてみたんだけど、全く受信しなかった。信号強度のアイコンが周期の長い(30秒程度の)フェージングみたいな変化の仕方だったけど、これはWAVの再生を止めても同じような傾向があったので、本物のJJYを受信していたんだと思う。逆に言えば、イヤホンからは本物のJJYより弱い強さでしか漏れないらしい。そもそもコイルが小さいから磁束が小さいのかな。スピーカーだとコイル径が大きいから磁束もそれなりに大きそう。イヤホンとスピーカーじゃ音量が全く違うから、電力(=磁力強度)にも大きな差があるだろうし。

 時刻信号は任意に設定できるので、1月7日8時40分頃のLS1,LS2を適当に設定したデータを作成。LS1=LS2=1でうるう秒(60秒)の挿入、LS1=1,LS2=0でうるう秒(59秒)の削除、となるが、前回の腕時計およびカシオの置き時計のどちらも、うるう秒の表示には非対応だった。安物の腕時計はともかく、家庭用とはいえカシオの置き時計でもうるう秒は非対応なんだな。うるう秒に対応した電波時計って結構レアな存在?

 腕時計はAGC除いて3分(3フレーム)で受信を完了する。カシオの時計はそれより大幅に長い時間が必要。感度が悪いのか、多数決でより多くのサンプルを集めているのか。コイルが大きい分、勾配の大きい電磁場だと感度が悪くなる、みたいな可能性はありそうだけど。


 今回使用したスピーカーはUSBで電源を取るタイプ。めちゃくちゃノイズが大きい。試しに電源をUSBハブからモバイルバッテリーに変えたら、ノイズがほとんど消えた。やっぱりUSBって電源ガタガタなんだろうな。


 電波時計の「うるう秒」対応について | CASIO

 うるう秒挿入以降、時計は1秒進むことになりますが、その後強制受信や自動受信に成功すれば正しい時刻に合わせることができます。

 GPSハイブリッド電波時計も同様に、強制受信や自動受信に成功すれば正しい時刻に合わせることができます。

 要するに自動的に調整はしてくれないらしい。JJYもGPSもうるう秒の予定は放送してるのに、使ってないんだな。

 最近のカシオのGPS電波時計については、毎年6月と12月にGPSのうるう秒挿入予定を受信することで、うるう秒を処理できるらしい。ただ、「うるう秒の情報を受信するには最大13分かかる」と書かれているのが不自然。時計がリセットされたあとにGPS時刻とUTCのオフセット(うるう秒の発生回数)を受信する必要はないんだろうか? うるう秒の挿入を見逃さなければその間は問題ないから、EEPROMに焼いておけばOK、みたいなことなんだろうか。うるう秒を1月と7月にいれるのは慣例的にそうしているというだけであって、地球の自転速度が極端に変化した場合は他の月にも挿入するだろうから、そういう場合はカシオのGPS電波時計は困りそう。まあ、あと10年の間に1年に3回とか4回とかうるう秒をいれるような事態も起きるまいし、実用上は問題ないだろうけど。


***


 GPSのアルマナックってどれくらいの精度があるんだろうか。200N 20.3.3.5.2.1によると通常900m、短期的に3.6km、長期的に300km、みたいに書いてあるけど、軌道要素が300kmずれるって相当な時間が必要なはずでは。long-termってどれくらいの時間を想定しているんだろうか。

 アルマナックの精度がaf0/af1含めてトータルで100m程度に収まっているのであれば、直接C/Aコードを捕捉できそうだけど、ちょっと精度が足りない? 無闇矢鱈に探索するよりはマシなのかもしれないけど。時間領域で探索するなら1msの中の数usをスキャンすればいいだろうから百倍くらい早くなりそう。周波数領域で探索するならコード位相は任意の位置を検出できるから、0.5us程度の精度がないと高速化には使えないはず。


 GPSの電離圏補正、太陽高度の季節変動(地球自転軸成分)ってどういう扱いになっているんだろうか。


 試しに電離圏補正の量を画像化




 6時間毎に、方位0度 仰角90度で各地点の遅延量をヒートマップで表示している。

 なーんか違和感あるんだよなぁ。

 そもそも電離圏モデルって有効期間どれくらいあるんだろう? 振幅(AMP)と周期(PER)は時間の3次関数でモデル化しているから、時間が離れれば2乗とか3乗の成分が強く効いてくる。一つの係数はあまり長時間使うことはできないのかも? というか、AMP/PERってなんで3次でモデル化してるんだろうか。電離層ってそんなに変な動き方をするのかな。

 この係数はQZSから受信したものだから、日本周辺以外はうまくモデル化できていないという可能性もある。


 GPSから受信した電離圏補正値

 QZSに比べて緯度方向で平均的な感じがする。ただし東経180度と西経180度が不連続なのは同様。計算方法ミスってるのかな。

 なお、GPSで18ページ(SF4 SvId56 電離圏補正値)狙いで受信したところ、QZSからはSF4 SvId51が受信された(GPSではSvId51はSF5の内容)。QZSはSF4/5で送る内容がGPSから変更されているけど、電離圏補正を出すタイミングも変わってるのか。QZSからは電離圏補正は1分秒周期で出されているから、GPSの12.5分周期とはズレるんだろうけど、地味に不便。



 GPSのフルフレームの区切りの一覧

 左側にフルフレームの開始時刻を、右側に各フルフレームでのページの内容を書いている。

 任意の内容(e.g. 電離圏補正)を受信したい場合は、現在の時刻以降に始まるフルフレームを探して、そこに目的のページの時間を加算し、それに余裕を持った時刻から記録を開始し、開始時刻から30秒+余裕を見て記録を停止する。時刻の加算がちょっと面倒。



 GPSの復調で時々全衛星を一気にロストすることがある。IQファイルの開始位置をずらせばその分ロスト位置もずれるから、デコーダ側の問題じゃなくてIQファイルの問題(途中で1マイクロ秒以上データがドロップしたとか)だと思うんだけど、とはいえrtl_tcpから送られてくるバイト列をファイルに書き出しているだけだし、rtl_tcp側もエラーログとかは出してないし、問題ないはずなんだけどなぁ。


 GPS系時刻とファイル系時刻の差を、開始時を原点としてグラフ化

 ノイズの多いグラフはDLLの相関値(コヒーレント長25ms)を、破線は時間差(ミリ秒)を示している。時間差が傾いているのはドップラ成分のはず。トラッキングのロストとか再捕捉の処理は作っていないので、30秒を1組としてDLLの同期やメッセージの復調を行っている。

 相関値が高く出ている部分は正しく復調できていると考えられる部分。200秒付近の2箇所や1200秒付近の2箇所、1800秒付近の相関値が落ち込んでいる部分が衛星をロストした部分。

 相関値が下がった部分で時間差が不連続になっている。やはりファイルが不連続になっているのが衛星ロストの原因っぽい。じゃあファイルが不連続になる原因は何だ、という話になるけど。


 SDR#からUSB接続でサンプリング

 こっちはバージョンが古くて2GiB未満しかサンプリングできないので2.4Mspsだと450秒(7.5分)程度しかサンプリングできないけど、不連続無く受信できているっぽい。あるいは確率の問題かもしれないけど。


 rtl_tcp経由で、1920kspsでサンプリング(以前は2.4Msps)

 とりあえず15分程度ではドロップはなさそう。2048kspsだと10分で1回ドロップしたっぽいので、ビットレートが高くなるとバッファの書き込みが追いつかなくなるのかな?


 なんとなく、rtl_tcp.exe(rtlsdrblog,v1.3.6)ないしそれに使っているライブラリのバグっぽい感じなのかな?

 ISDB-Tで遊んでいたときはIQファイルの不連続性は全く気にならなかったはずなんだが。Mode 3の1フレームが約1msとしても、フィードバックは1フレーム毎に1サンプル分(約0.5us)シークする程度の処理だったはずだから、10usとかズレたら吸収しきれないはずだし、おそらくIQサンプルのドロップは発生していなかったはず。 

 ISDB-Tはちょうど1年前(’24年2月)頃まで遊んでいたはずだから、その当時はrtlsdrblog版のrtl_sdr.exe系はv1.3.4が最新版。1.3.5でレジスタの設定を変更したらしいので、そのあたりでなにかやらかしているのかも。今週は時間切れなので、次はバージョンを戻して試してみよう。

 あるいは、ISDB-Tは約2.03Mspsなので、かろうじてバッファが間に合っていた、という可能性もあるが。


***


 C#関連の愚痴など。


 span.Fillで構造体の適当な値を指定したときに、その値がゼロの場合、Clearを推奨されるの、まあわからないでもないけど、とはいえ、わざわざ構造体で指定しているんだから、Clearに変えるとあとあと構造体の中身を変えたときに困りそうな気がする。あとから構造体の中身変えるなよ、という話ではあるんだけど。


 C#のインクリメントって読み出したり書き込んだりのタイミングってどうなってるんだろうか。f(a++);でfの中から呼ばれるイベントでaを書き換えたら、一応期待通りの挙動(インクリメントする前の値を書き換えて、書き換えたあとにインクリメント)をしているけど、こういう挙動って使っていいんだろうか。CとかC++だとこういう挙動って避けたほうがいいとされているはずだけど、C#ならあんまり気にせず、期待した通りに動いているならそのまま使っちゃっていいのかな。


 LINQでvar a=foo.Where(a=>a.Flag);if(a.Any()){ aを使う処理; }みたいに、Whereの結果が1個以上を保証したいときに、一旦変数を作ってAnyを呼ぶのが地味に面倒なの、どうにかならないものかな。

 一応、拡張メソッドでpublic static bool WhereAny<T>(this IEnumerable<T> a,Func<T,bool>b,out IEnumerable<T>c)=>(c=a.Where(b)).Any();みたいなのを作ると、if(foo.WhereAny(a=>a.Flag,out var a)){ aを使う処理; }みたいに書ける。varに突っ込む1行を減らせる程度でしかないから、1,2箇所で使う程度なら拡張メソッドを書く分面倒だが。


 レコードのプライマリコンストラクタをprivateとかprotectedにアクセス制限したい。プライマリコンストラクタを書かず、public Type Hoge{get;private init;}とかで定義して、Deconstructも定義すればほしい挙動は作れるけど、面倒くさい。プライマリコンストラクタが無いとDeconstructで出てくる要素が見えないから困る、みたいな話はありそうだけど。


 readonly record structのプロパティがpublic initなの、withで書き換えることができるのが便利そうだけど、書き換えられると困るような中身が入っていると不便な気がする。自分でpublic Hoge Fuga{get;private init;}とか書けばwithで書き換えることはできないけど、面倒。Deconstructも書かなくちゃいけなくなるし。


 派生クラスの機能を基底クラスからしか呼べないようにする、みたいなことってできないんだろうか? 基底クラスの機能を派生クラスからしか呼べないようにするにはprotectedをつければいいけど、その逆をやりたい。

 生データのパーサーを書くときに、基底クラスのTryParseを呼び出して、フォーマットに応じて派生クラスのParseを呼ぶが、外部からは派生クラスのParseを直接呼べないようにする、みたいな状況。派生クラスからはさらに派生クラスがあって、基底クラスは派生型の派生型は知らなくても良い、みたいな実装にしたい。こんな処理いくらでもあるだろうし、C#で対応してないってことは別のやり方があるんだろうけど。基底クラスが派生クラスをすべて把握してなきゃいけない、ってのは設計的に問題がありそうだし。


 Addの無いコレクション(StackとかQueueとか)をスプレッド演算子で初期化できないのが地味に不便。拡張メソッドでAddを追加してやればスプレッド演算子で初期化できるけど、今度は普通のコードからもAddが見えるようになる。PushとかEnqueueの代わりにAddを呼んで特に不便があるわけではないけど。AddにObsoleteをつけるとスプレッド演算子にも警告が出る。第2引数をtrueにするとコンパイルエラーになる。その機能を使わせたくないわけだから、スプレッド演算子経由でも警告やエラーになるのは理解できるが。


 Windowsの端末ってConsole.Write($"\e[38;2;{r};{g};{b}m");で文字色を24bitで設定できるんだな。38じゃなくて48を指定すれば背景色を設定できるし、\e[mで書式をリセットできる。C#13でエスケープシーケンスを\eで書けるようになったので色の指定とかがだいぶ楽になってる。

 グラデーションを表示してスクショしてカラーピッカーで取ったら1文字毎に1変化するから、ちゃんと24bitで表示されているっぽい。

 Formを作るまでもないからConsoleで作りたいけどちょっとしたプログレスバーを表示したり、サチりそうなときはオレンジで、サチったときは赤く表示したい、みたいなときに便利そう。そこまでやるならFormで作れよ、という気もしないでもないけど。


2025年2月5日水曜日

小ネタ









 ハンティングライフルの銃身。ステンレスの銃身の外側をアイソグリッド的に削って、その上にチタンのスリーブを被せる。振動減衰性が良くて軽い、というのがウリ。

 バレルとスリーブはたぶん接合してなくて、せいぜい片端でねじ込む程度の固定だと思う。減衰性はどうなんだろう? 振動しそうだけど。グリッドの上からCFRPを直巻きしたほうが良さそうだが。

 しかし、こんなに細長い棒の側面を切削するのかぁ。適当な範囲に分割して治具で掴んで削ってるんだろうけど。なかなか加工コストが高そう。精度が必要な加工ではないからあまり気にしなくてもいいのかもしれないけど。




 銃身に穴を開けて周りにスリーブを付けるタイプのサプレッサー。16"とか法的に必要な長さの銃身にサプをつけてもそれより長くならないのが利点。

 普通のサプは前方に向かって進むガスを捕まえて押し戻すようなメカニズムだからバッフルが後ろ向きの円錐になっているのは理解できるけど、このタイプの銃身の側面から吹き出すようなガスに対しても円錐型のバッフルって効果があるんだろうか? 内面と外面の熱交換器として表面積を最大化させるような方向で頑張ったほうが効果がありそうな気がするけど。



 カシオ、バービーの世界観を表現したG-SHOCK「GMA-S110BE」 | マイナビニュース

 レンがつけてそうな見た目だな。レンって腕時計つけてなかったっけ? ぱっと見た感じだとつけてないっぽいな。細かい装備品が多いと作画コストが高くなるからな。SJだとスキャン端末で時間を確認してるっぽいし。現代っ子め。



「重力波の研究者」(実験機器の開発とかやってた人)が書いた本で、「宇宙に打上げられるロケットが脱出速度(11km/s)を超えていることは言うまでもない」みたいな話が出てきて、うーん、って感じ。重力波は(今のところは)地上の実験がメインだから、宇宙開発分野の知識は求められてないとはいえ、せめて断定的に書くならちゃんとしたことを書いてほしいなぁ。

 著者は東大で修論を書くときにISASにいたらしい。ISASの人でも皆が宇宙技術について詳しい訳では無い、という話。まあ、二足のわらじでISASに在籍している学生くらいだとロケットとか衛星に興味のない人もいるか。と思ったら、著者は後にDECIGOの提案メンバーの一人らしくて、うーん。。。DECIGOを脱出速度で放り投げたら太陽系の彼方に飛んでいっちまうぜ……

「宇宙に打上げられるロケット」というのは結構曖昧な表現で、例えばカーマンライン(e.g. 80km)を超えるサブオービタルへの打上げでも、「宇宙に打上げた」という表現ができる。重力だけを考えた場合(空気抵抗を無視した場合)、地表から真上に1.25km/sで射出すると80kmを超えた高さまで上昇する。


 相対論が出てくる本を読んでるとたいてい「測位衛星に必須の理論」みたいな話が出てくるけど、それ以上の説明が全く見当たらないんだよなー。相対性理論が考案されていない世界では測位衛星は作れないんだろうか? そんなことはなさそうな気がするけど。相対論が無くても、高安定のクロックを打上げてみて、時計がずれるのが実測されたら、それを高度/速度でフィッティングして補正項を作ることはできそうな気がする。宇宙に持ち出した時計がズレたら温度とか磁場とか色々影響がありそうだけど、相関値が低い項を除外して、最終的に残るのが高度と速度で、その段階になって初めて相対性理論が提案されるとしても、その前にすでに影響を打ち消して測位衛星としてのサービスを行うことはできるはず。

 そもそも、例えばGPSのクロックがズレたとして、どんな問題があるんだろう? 「GPSの時刻が1マイクロ秒ずれると300mの誤差になる」とはいえ、その伝搬時間を計測するための基準時刻だってGPS衛星から受信するわけだから、すべての衛星が同じズレ(同じ軌道高度・速度)であれば、相対論はキャンセルされるはず。実際のところはすべての衛星の相対論効果が同じではないから色々と誤差が出てくるだろうけど。



 小さいハーフミラーを買いたいんだけど、数年前にamazonで2千円台前半で売ってた大きさが、最近は5千円台前半になってて、結構値上がりしてる。あと、amazonで取り扱いが終わってるので、別の通販サイトに登録して買わなきゃいけないのがめんどい(一応モノタロウでも大きさを指定して注文はできる)。

 マジックミラーとして売っている製品、蒸着面の反射率が52%、非膜面の反射率が48%だから、ガラスの往復で4%が吸収されるらしい。透過率は8%とのこと。表面に照射した場合、52%が反射して、8%が透過して、2%がガラスで吸収されるから、残りの38%が蒸着面に吸収されるのかな? マジックミラーって結構吸収率高いんだな。


***


 amazonで3千円台前半で売ってるソーラー電波腕時計の中身

 裏面のパネルを剥がすとメインのモジュールが入ってて、表示面に太陽電池セルが入っている。電池はコイン電池で、充電機能は無し(ソーラー電卓と同じ)。電池交換はモジュールを分解せずに可能。

 モジュールを分解するとこんな感じ。裏面にはテストポイントが大量にある。水晶の調整とかで使うのかな。インダクタが2個乗ってるけど、片方はELバックライト駆動用だと思う。もう1個はなんだろう?

 表側。Xtalが3個、COBが2個、TrやCR類。Xtalは下が32.768kHz、上は40kHzと60kHzだと思う。上のCOBがJJYデコーダで、下のCOBが時計かな。ワンチップでJJY受信機と時計が作れるわけではないんだな。JJYはRF(アナログ)、ロジックはデジタルだからプロセスが違う、みたいなことなのかな? あるいは、JJYは同じ機能でとにかく大量に売れるから別で作ってるってことなんだろうか。

 コイルがめちゃくちゃ小さい。自室では全く受信できない。カシオの掛け時計はちゃんと電波を受信しているので、やはりコイルの大きさの問題なんだろう。田舎の野外なら数分で補正できる。受信を開始したら最初にAGCセトリング待ちで数秒必要で、その後1分間のフレーム一つを受信し終わったら、マーカーを見つけた時点で時刻を設定して受信完了、という感じ。タイミングが良ければ80秒位で受信できるかな。ただ、NTP(NICT JST Clockとか)に比べて少し(0.5秒程度)遅い。

 表示は月日と曜日(ドットマトリクスの漢字)、大きな時分と小さな秒がメイン。時の左側にはAM/PMのセグメントがあって、24時間表示だとスカスカな印象になる。その他の機能としてはストップウォッチ、カウントダウン、デュアルタイム、等、デジタル時計としては一通りの機能が入っている。中途半端な明るさだとバックライトが見づらいけど、明るい場所ならコントラストは十分だし、暗い場所ならバックライトも問題はない。

 軽く使った感じだと寒い場所で結露することもないし。耐久性は不明だけど、10BARの生活防水だし、安物だし、あまり気にしてもね。



https://www.jstage.jst.go.jp/article/micromechatronics/62/219/62_39/_pdf

 主にJJYを受信する腕時計の解説記事。

 電波の受信方式。水晶フィルタ経由でストレート受信(包絡線検波)する方式は、周波数ごとに水晶フィルタが必要になる欠点がある。スーパーヘテロダイン方式であればVCOの制御だけでマルチバンド化が可能。VCOの基準クロックは32.768kHzを使う。結局IF用のフィルタは必要だから、時計用とIF用で水晶が2個必要なわけで、回路の複雑化とか考えるとあまり利点はなさそう。ググってもスーパーヘテロダイン方式のJJY長波受信機はほとんど出てこないし、直接水晶に突っ込む方式が主流っぽいのかな。


https://www.jstage.jst.go.jp/article/micromechatronics/49/193/49_KJ00003979055/_pdf

 JJYをダイレクトサンプリングして直交検波する提案。オールデジタルADC(TAD; Time Analog to Digital converter)を使ってJJYをサンプリングする。プリアンプを除けばCMOSデジタル回路で作れるから、時計回路とワンチップ化できるし、外部部品も不要。ADCのダイナミックレンジが広いのでAGCも不要。直交検波なのでサンプリングクロック由来の誤差も位相回転として検出できる。

 TADはインバータを重ねてパルスを回す。インバータの遅延は電圧で決まるから、電圧→周波数変換ができる。パルス数を数えれば電圧を計測できる。アナデジ変換ができる。

 ロジックにJJY受信機能を追加すると、ロジックを変えるたびにJJY受信機も変えることになる(少なくともJJY分のフォトマスクを作る必要がある)から、コスト的にちょっと不利になりそう。別のダイに乗っていればJJY受信機は掛け時計・置き時計や腕時計などすべてで共通して長く使えるから、とにかく大量に生産できる。実装面積とか実装コストが増える欠点はあるけれども、トータルでは安くなるんじゃないかな。


 複素数の絶対値の計算の近似式。ベクトルの絶対値はsqrt(x*x+y*y)で得られるけど、積や二乗根が入るので演算負荷が高い。|x|+|y|+max(|x|,|y|)で計算すれば、絶対値の計算が2回と条件分岐が1回と和が3回なので、計算が早い。

 最近のCPUだと二乗根はハードウェアで積んであったり、積和の速度が同じだったり、条件分岐させるとパイプラインハザードを起こしたりで、近似式ではなくsqrtで計算したほうが早そうな気もするけど、ハードウェア(専用回路)で実装するなら加算回路だけで作れる近似のほうが早そう。絶対値の回路はそれなりにコスト高そうな雰囲気がありそうだけど、まあ、平方根とか積むよりはマシか。

 適当な乱数で計算

 左のグラフは横軸sqrt、縦軸近似式。右のグラフは横軸が角度(atan2(y,x))、縦軸が近似式/sqrt。角度依存の誤差があるけど、だいたい2.18倍くらいのスケールで計算できている。包絡線検波の後に適当な閾値で2値化するような用途の場合、多少の振幅の計算誤差は無視できるから、これでも問題なさそう。


 電波時計 - Wikipedia

 標準電波の情報を利用するため、夏時間(サマータイム)や閏秒によるずれも自動的に修正される。ただしこれは時刻のずれを後から修正するというだけであり、夏時間の切り替え直後は(そのタイミングで受信しない限り)時刻はずれたままになる。閏秒という制度についても、それに対応している(○時59分60秒といった表示を行える)訳でもない。

 JJYではうるう秒の実施予定の放送を行っているから、対応している時計なら表示できるはずだが。というか○時ってなんぞ。8時じゃないの?

 JJYは夏時間は対応していないけど、そもそも日本では夏時間が採用されていないから規定されていないだけで。規定されていないから採用できないという可能性もあるけど。一応、予備ビットを使用して6日以内に時刻を動かすことを通知する方法が提案されているから、対応している時計であれば、予め通知されているときは毎正時に受信を行って素早く(最短19秒または40秒程度で)適用するという挙動は作れる。常識的に考えれば時刻の移動はほとんどの人が寝静まった時間帯に行われるはずだから、数分程度の遅れは許容できるはず。動かす長さや方向は任意に設定できるから、20分や2時間の夏時間や、あるいは冬に時間を遅らせるとかも設定できる。ただ、電波時計がクロックソースとしてある程度普及している現状を考えると、下手に夏時間とか冬時間を放送すると、それにぶら下がったシステムがどうなるかという怖さはあるんだよな。さすがに高信頼性が求められる商取引等(金融機関とか)でJJYに依存しているということは無いだろうけど、だからといって影響がないとは言い切れない。そういうのもあって夏時間の導入に及び腰なんだろう。


 JJYでは年は下2桁を送っているけど、1900年代と2000年代の曖昧さって問題になったことはないのかな? 40kHzが1997年放送開始、60kHzが2001年から、だから、少なくとも60kHz専用については問題なさそう。40kHz型の時計も発売開始から長くて3年で問題が起きそうな気配はあるわけだから、元々ちゃんと想定していたのかな。そもそも年が問題になるのは閏年の計算だけど、1997年から2000年の間には閏年は入らないから、例えば98を2098年として処理しても問題ないのかな(曜日は曜日で送られるから、自分で計算する必要はない)。

 JJYでは年2桁と通日の他に曜日も放送しているから、計算リソースに余裕があるなら年日から計算した曜日と受信した曜日を比較することで、上位桁の曖昧さは解決できるはず。この機能を内蔵しておけば、例えば2000年代と2100年代とか、2100年代と2200年代の曖昧さも解決できるはずだから、当面の間はプロトコルの変更は必要なさそう?

 100年毎に1月1日の曜日を調べてみると、例えば2000年が土曜日、2100年が金曜日、2200年が水曜日、2300年が月曜日、2400年が土曜日、2500年が金曜日、というように、400年で土月金水を循環する(閏年で一番大きな数字が400年だから、400年で1周するなら閏年の影響は受けない)。つまり、年の下2桁と曜日の組み合わせは400年で1巡するから、例えば2000年代と2400年代を区別することができない。JJYを受信する電波時計で、数百年間使うことを想定している場合は、要注意かも。設計寿命が200年程度であれば、曖昧さは解決できる。


 BIPM Circular-Tのグラフ。ファイルフォーマットの関係で2003年頃から。

 すべての機関だと数が多すぎるので、CRL, NAOJ, NICT, NIST, NRL, OP, USNOを表示(CRLは2004年度からNICTに変わった)。

 この中ではNAOJの誤差が極端に大きくて、特に2018年以降はかなり誤差が大きい。ここ2年は時刻差の修正も行っていなくて、あと数ヶ月もすれば2マイクロ秒くらいの誤差になる。VERAとかどうやって運用してるんだろう? 誤差が既知なら相関処理で除ける、って運用なのかしら。あるいは、他のVERA局と同様に、VERAで専用のクロック(HM+GPSとか)を持っているから、NAOJ水沢クロックは観測には使われておらず放置している、ということなのかな。水沢って結構最近まで中央標準時の生成を行っていたはずなんだけど、昔からかなり安定度が悪い。CRL/NICTに比べてほぼ桁違いに精度が悪い。本当にこれが日本の標準時に使われていたの?

 アメリカはNISTが国家の時刻を作っているはずだけど、他にもNRL(海軍研究所)やUSNO(海軍天文台)など、色々時計がある。アメリカ海軍だけで2個もクロックがある。NRLはちょこちょこ誤差が出てる(GPSに使っているのはUSNOの方)。

 縦軸を変更。USNOは昔から安定性がかなり高い。さすが。

 OP(パリ天文台)は2013年頃から安定度が高くなっている。BIPMのお膝元だけある。

 NICTは2022年頃から安定性が高くなってきた(NICTは2021年からSr光格子時計をUTCの生成に併用するようになった)。

 すべての局を表示するとこんな感じ。数十マイクロ秒程度のズレがある機関もある。

 縦軸を10usに拡大。結構な数のクロックが発散していて、適当な範囲(数us程度)でゼロに戻すような運用を行っている。セシウムクロックを導入はしたけど、調整は行っていない、みたいな運用。

 BIPMの都市名はほとんど一意に決定できるけど、組織名を調べるのが結構大変。BIPMの略称は最大4文字制限があるらしくて、例えば略称が5文字の組織は4文字で表示されるから、ググってもヒットしない。


***


https://www.jstage.jst.go.jp/article/jacc/67/0/67_1257/_pdf/-char/ja

 チップスケール原子時計(CSAC)が普及した場合、スマホ等に搭載されて大量に運用されることが想定される。CSACは時刻標準のための原子時計に比べて精度は劣るが、数が多いので、全体を統計的に処理すれば高い精度を有する。ただし発散するので、UTCに引き込む必要がある。そのためのアルゴリズムの提案。

 複数のスマホ等に乗ったCSACでアンサンブルを作る場合、すれちがい通信みたいな感じで、それぞれに独立して持っている時計を低い頻度で比較していくような感じになると思うんだけど、相手の精度が未知のはずだから、比較するのも大変そう。それでどれくらいの精度が出るんだろうか。GPSの時刻信号は精度が悪くて使えない、ということは、1nsオーダーを想定しているんだろうけど。スマホに1nsオーダーの時計が乗っていたとして、それを何に使えるかって話もあるし。


https://www.jstage.jst.go.jp/article/ipntj/2/2/2_2_13/_pdf

 GPSの週数ロールオーバーの曖昧さを解決する方法の提案。あんまり実用的な感じはしないけど。何に使うことを想定していたんだろう?



 GPSのWコード、1週間後とか1ヶ月後とか、一定期間後に過去のシーケンス列のバイナリファイルを一般に配布する、みたいな措置があったら面白そうだなー、という空想。帯域幅20MspsとかのIQファイルを記録しておいて、後処理で高い精度で測位できる。測量とか測地で便利そう。リアルタイムの高精度測位はできないから、安全保障分野の脅威は少ない。大量のコードを公開すると生成アルゴリズムが解析されるみたいな可能性はありそうだけど、とはいえ軍の研究所とかが本気で解析すればWコードは簡単に抜けるだろうしなぁ。

 結局はアメリカの国益になるかどうかという問題なんだろうけど、アメリカ本土でGPSを使った非リアルタイムの精密測位が重要になる分野ってあるんだろうか。日本だと活火山のモニタリングとかプレート運動の計測とか、精密測位ができれば嬉しい分野は色々あるだろうけど。アメリカも太平洋プレートと北アメリカプレートの境がある西海岸に活火山が多いから、GPSを使ったモニタリングとかは需要はありそうな気がするけど。

 日本の防災分野で使いたいだけなら、QZSSで10.23Mcpsのコードを放送すればいいんだけど、そういう計画ってないんだろうか。L1/2/5のマルチバンドで10.23Mcpsとか20.46Mcpsとかの電波を出したら色々便利そうだけど。QZSSはSLASとかCLASで頑張ってるからな。政治面とかで色々面倒そうな高帯域幅の電波は当面は出さなそう。

 Wコードのリアルタイム解析ってできるんだろうか? できなくはなさそうな気がする。Wコードはせいぜい1kbps未満のデータ量だから、リアルタイムに解析したWコードを適当な無線通信で放送するような機材は作れそうな気がする。たぶん受信アンテナにそれなりの大きさが必要だから運用性は悪そうだけど、とはいえアメリカの敵対国が前線でWコードをリアルタイムに解析してそれを放送して、自国の兵器の誘導に使う、みたいなことはできそう。解析や通信に数秒程度のタイムラグが発生するとはいえ、そういうプラットフォームはINSくらい積んでるだろうし。まあ、そういう物が必要そうな国は例えばロシアとか中国とか、一応自国で衛星測位システムを持っているから、わざわざWコードを抜いて使うみたいな需要はなさそうだけど。北朝鮮みたいに独自の測位システムは持ってないけど長射程兵器(BM/CM)は持っている、みたいな国は、こういう技術は興味がありそう。


2025年1月29日水曜日

小ネタ


 ダブル主人公と「発見」を促す探索システムで多様なゲームプレイを実現 『アサシン クリード シャドウズ』プレビュー

 面白そうだなー。

 過去に遊んだゲームだと、例えばGRBPではファストトラベルのための拠点(キャンプ地)を自分で発見して移動範囲を広げていく必要があったけど、ドローンを使えば高高度から描画範囲の外までファストトラベル点をアンロックできたので、探索がほとんど無くてつまらなかったんだよな。現地に行かないと詳細がわからないみたいなシステムは不便ではあるけど、快適すぎてもつまらないし。せっかく発売を延期して調整してるんだから、ちゃんと面白くなっていてほしいな。

 とはいえ、最近の大型ゲームは発売後のアプデが前提みたいなところもあるし、最初の半年とか1年くらいはある程度不便なのは覚悟しておかないと。



 牧野フライス製作所へのTOB、ニデック首脳陣は何を語ったか:工作機械(1/2 ページ) - MONOist

 工作機械の入手性が悪い、ニデック傘下に置けば自社が欲しいときに必要なだけ入手できる、みたいな話。要するに景気が良くなってニデック製品(減速機とか)の需要が増えたときに、生産ラインを拡充しようとしても(他の企業も工作機械の注文を増やすから)、ニデックが工作機械を入手できない。工作機械メーカー自体を傘下に置くことで優先的に工作機械を入手できる、みたいなことらしい。ニデックは必要なときに優先的に機械を購入できるようになるとして、それの割りを食う他の会社はどうするんだろ? 「必要なときに機械を入手できないかもしれない」というのは、工作機械を他社に振り替える十分な理由になりそうだけど。その上で製品ラインナップは増やさせる、みたいな話は、単に製品の品質低下を招きそうだが。



 C-17貨物室前方左側のroll-on comm panel。ググっても解像度の高い(&合焦した)写真が見当たらないんだけど、胴体外部の各所に配置された各種アンテナの接続があるらしい。あとは通信機で使う電源とかも引き出せるらしい。機体上面はGPSと衛星通信用のHI/LOWのアンテナがあって、胴体底面にはUHFとかのアンテナがあるらしい。これらのアンテナって機内の通信機に接続されているわけではないんだな。機体としては汎用的に使える(&後から追加するのが面倒な)アンテナだけつけておいて、必要になったら通信機を貨物室に置く、みたいな設計思想なのかな。





 データナイフのスリットって貫通してるんだな。オムニ特性が必要ならそりゃそうか。しかし、データナイフ、あちこちに入れてるな。背中側だったり、拳銃のホルスターの横だったり、チェストリグだったり。設定の揺れよ……

 それぞれのオペレーターってある程度独立したものだと思っていたけど、実際は分隊みたいな感じで仲良さそうな雰囲気なんだな。よきかなよきかな。そのうちコミックとかアニメで公式二次創作というか外伝みたいなのやってくれないかなー。


 実写のほうが……いや、なんでもない。


 Delta Forceの「軍用サテライト通信機」、場合によっては通常ダムでも拾えるやつ、見た目がミサイルのRFシーカーっぽい。開口面はKh-35(露製対艦ミサイル)ぽいかな。ジンバル機構の見やすい写真が無いので根元のあたりは判断しかねるけど、Kh-35のジンバル機構とはだいぶ違う気がする。別のモデルがあるのかな。インドのミサイルが近そう? 直線偏波で衛星通信はちょっと面倒そうだ。スカパーのデータ通信やテレビ放送で直線偏波を使っている例はあるし、データ通信はポータブルの地上局でも直線偏波を使っているから、ないわけじゃないけど、円偏波のほうが使いやすそうな気がする。Starlink地上局はちょっと有名になりすぎた感があるし、軍用通信機というからには特殊な見た目がほしいだろうし、そうするとミサイルのRFシーカーみたいな直線偏波のスロットアレイパネルアンテナみたいなモデルのほうがいいのかな。

 空中投下の物資はCrew Dragonみたいな見た目。スラスタがあるのでCargo Dragonではない。かなり小さいけど。あと変な構造物が付いてるけど。パラシュートで降りてきて、地表付近でスラスタを吹いて減速する。Dragon 2のオリジナルの計画はスラスタで地上に着陸させるから、ゲーム内のカプセルはそれに結構近いのかな。ただ、Dragon 2のパラシュートはバックアップみたいな用途だったらしいから、そこはちょっと違うか。しかし、あれだけ大量にロケットを打ってるとはいえ、ロケットで物資投下かぁ。

 米軍みたいに世界規模で展開して資金力もそれなりにある組織だとロケットで地球の裏側まで迅速に配達したいみたいな需要はあるし、米空軍のヴァンガード計画とか、数年前に計画は発表されていたが(かつての米海陸軍のヴァンガード計画とは別)。計画としてはStarshipでC-17程度の貨物(100トン弱)を任意の場所に1時間で配送する、という感じの、まあ、そりゃそうだろうな、という内容。Starshipを送り返すなら中身がカラとしてもある程度のブースター(&発射/回収設備)が必要だろうし、任意の場所をPoint to Pointで結ぶ、みたいな計画は厳しそうな気もするけど。といはいえ大型インフラ施設(ある程度大きな貨物船が入れる港位の規模)をロケットで結ぶだけでも、船便で数週間(あるいは飛行機で10時間とか)かかるような場所を1時間で輸送できるわけだからな。そこから先はC-17なりC-130なりに積み替えて運ぶにしても、落とすにしても、あるいは車で運ぶにしても、ロケット自体が安ければ利点は大きくなるだろうし。



 ウォーフェアで撃ってから命中音まで結構時間かかって弾速がかなり遅い印象だけど、これって単にサーバー側で命中判定して折り返してSE出してるから時間がかかってるってだけなのかな。

 こっちが先に撃ってるのにこっちからはせいぜい1発当たればいい方で確実にキル取られるの、納得がいかない。あまりにも多すぎてそろそろレイテンシを疑いだしてる。ping値は時間帯によるけど40-70ms程度。コマンドプロンプトでgoogle.comにpingを打ってみると23ms程度で安定しているから、DFは20-50msくらい追加でかかっている。サーバーまでの経路の問題なのかな?

 DFの命中判定ってどんな処理でやってるんだろう? VALOの解説記事だと過去の座標を持っておいて、クライアントのレイテンシに合わせて画面に表示された座標を参照する、みたいな処理をやっていたような気がする。対人FPSみたいに時間管理が厳密なゲームを考えると相対論じみてくるな。あるいは、レイテンシが大きい場合、「こっちが先に撃った」自体が破綻するから、こっちが撃った時点で自分はもう死んでいる、という可能性もあるのか。うーん、量子論じみた話も出てきた……

 極稀にウォーフェアでいい感じにキル取れることがある。とはいえ、0.6程度だけど。少なくとも、撃ち合いになってこっちから1発も当てられずに死ぬ、という程ではない。こういうときはオペレーションでプレイヤーに会ってもそれなりに撃ち合える。こころなしかping値低いかな、という気もする。といっても38程度だけど。やっぱりPvPはpingが重要なのかな。ぐぐってみると、FPSに必要なのは15ms以下、10ms以下が理想、とからしい。まあ、そうよなー。

 プロバイダの影響もあるだろうけど、物理距離の影響も多少なりともありそう。ゲームでスコアを稼ぐのは難しいけど、言い訳にはなる。「俺が下手なのは田舎住みだからだ」 ラノベのタイトルでありそう。「俺が弱いのは始まりの街に住んでいるから」 うーん、逆はありそうだけど……

 500マイル以上先に電子メールを送れない、みたいなトラブルもあるし、インターネットで世界中が接続された時代でも、物理的な距離は依然として距離なんだよなー。やはり未来は超光速ニュートリノを使用した超低レイテンシ通信の時代よな。というのはさておき、超光速でなくても、ニュートリノは地球を貫通して通信できるから、地球の裏と通信するなら伝搬速度で言えば数倍くらいは早くできる。変復調がめちゃくちゃ面倒とかバックグラウンドノイズが凄まじいという問題はあるにしろ。


 そう遠くない先に、Starlinkがon-orbit computing machine powerを切り売りするような時代が来るんだろうな。例えばSAR衛星みたいに冗長な観測量が得られる小型衛星で、観測データを直接Starlink衛星に丸投げして、Starlinkの計算能力で画像化したうえで、Starlinkのデータ通信を経由して必要な場所に解析結果を下ろす。

 例えばASNAROが被災地域を観測したSARデータを直ちにダウンリンクして、被災地域に持ち込んだ地上局で解析を行うというコンセプトを提案していたけど、似たようなことを小型衛星でできるし、データ解析は途中で行うから地上には画像を表示できる程度のパソコンとStarlink地上局があればいい。この程度であれば手荷物1個で輸送できるから持ち込みも簡単(ASNARO地上局はアンテナも含めて大型トラックの規模)。

 あるいは、Starlinkに適当なストレージを積んでおいて、観測結果(SAR生データとか)を別の場所に移すこともできる。適当なレイテンシ(数十分から数時間)を許容できるのであれば、インターネットやStarlinkのノードを経由することなく(つまり通信経路に負荷をかけることなく)、大容量のデータを遠隔地に輸送できる。これはコールドデータの遠隔地バックアップにも使える。さらにいえば、Starlinkの衛星間レーザ通信の開口を応用して、地上と量子鍵配送を行うこともできるはず。解読不可能な鍵で暗号化したデータを、インターネットやStarlinkネットワークを経由することなく、一つの衛星の移動だけで大容量データを移動できるから、セキュアで巨大なデータを比較的安全に輸送できる(イーロン・マスクを全面的に信頼できるのであれば、という但し書きがつくが)。

 そういうふうに軌道上計算能力がある程度普及すれば、それを別の分野、例えばPvPゲームに応用することだってできる。今のStarlinkはレイテンシが大きいけど、これは経路が長いのが問題なのであって、Starlink衛星自体にゲームサーバーが乗っていれば、衛星間通信を2,3段飛ぶだけでゲームサーバーに直結できる。ただまあ、いくら物理的なホップ数が少なくて済むとはいえ、最低でも衛星軌道には上がらなきゃいけないから、通信路は少なくとも片道500kmとか、1段飛んで1000kmとか、その程度が必要になるんだよな。往復2500kmとしてそれだけで10ms程度のレイテンシになる。ゲームサーバーに物理的に近い都市部なら普通のインターネット回線で直結しても大して変わらない。物理的に離れた場所に住んでいる田舎ゲーマーにはレイテンシが下がるのは嬉しいけど、サービス対象として問題になるほどの人口はいないだろうなぁ。



 久しぶりにG-SHOCKを使ってみた。やっぱり数分で風防が曇るので使いづらい。室温から-5℃程度に5分程度晒して結露するって熱容量どんだけ低いんだ。っていうかなんでそんなに水分が入ってるんだよ。

 あと、しばらく使っていなかったので、時間も数分程度進んでいた。アナデジのモデルだけど、デジタルとアナログは同期していないので、個別に時刻合わせが必要になる。デジタルは2,3分の誤差なら簡単に設定できるけど、アナログの設定はかなり面倒くさい。時計は基本的に「待ち合わせに遅れるよりは早くつくほうがマシ」みたいな思想なので、全体的に見れば誤差は進む方向にバイアスされている。今回も時間は進んでいた。ところで、このモデルは、アナログ時計は「ボタンを1回押すと針が1/3分進む」という方法で設定する。つまり、時計が少し進んでいた場合、ほぼ12時間分進める必要がある。長押しすればある程度早く進むとはいえ、ボタンが硬いし押しづらいので長押しも大変。機構的に逆回転が無理だとしても、「ボタンを1回押したら針が進むのを1回止める」みたいな感じになっていれば進んだ針を戻すのが非常に楽だったのに。アナデジ時計だから、デジタルが時刻モードならボタンを押したら針を進める、ストップウォッチモードならボタンを押したときに針を止める(ストップウォッチで停止時間を表示)、みたいなモードがあれば便利そう。



 対空レーダーってモノパルス測角を使っているイメージがあるけど、マリンレーダはモノパルス測角を使っているイメージがない。大抵は1本のスロットアレイアンテナで、アンテナのビーム幅が測角精度な印象。単にコストの問題(受信回路が2個必要)なんだろうか? あるいは、シークラッタとかSNRの問題なんだろうか。どちらにしろ最近の固体化レーダや半導体の低コスト化を考えれば、モノパルス測角に対応したマリンレーダがあっても良さそうな気がするけど。

  実際問題として、ビームパターンで測角する場合でも、近い目標は十分な測角精度が得られるし、遠くの目標は精度が低くてもさほど問題はない、みたいな理由もあるのかもしれない。とはいえ、港湾に設置する監視レーダみたいな用途だとモノパルス測角があっても良さそうな気がするのだが。隣接した遠くの目標を分解するにはビームを細くするしかないから、その過程で測角精度も十分に得られる、みたいなことなんだろうか。確かに船は航路沿いに隣接することもあるだろうし、飛行機は十分な安全距離を取るから、レーダから見れば見かけ上の間隔が全く異なる、みたいな理由はありそう。飛行機みたいに遠距離まで見えるレーダだと、ビーム幅で分解するのは開口サイズ的に現実的じゃなく、マリンレーダは地平線が近いからビーム幅でも測角できる、みたいなこともあるんだろうか。

 Mode-Sでモノパルス測角が必要になったのは、ほぼ1対1での通信が必要だから、距離の近い複数機の位置を知るには複数回のパルスが必要で、Mode-3/A/CよりPRFが下がるので、パルス間での強度比較だと方位精度が低下するから、みたいな理由らしい。固体化マリンレーダはトランスポンダではなくレーダだから1対1で通信する必要はなくて、PRFを従来通りに維持できるから、角分解能も従来通りの値が得られる、みたいなことなのかな。


2025年1月22日水曜日

小ネタ


 マルチ対応・異世界銃撃ラーメン店経営シム『Dino Ramen Express』正式発表。ラーメン配達のためには時を超え、仮想世界にも向かう - AUTOMATON

 すげー世界観だ。


 ニデック、牧野フライス側に回答 TOB巡り「誤った認識」 - 日本経済新聞

 日本企業が日本企業を買収する上で、相手企業から反発された手続きについて「海外では少なくない」という言い訳をするのはなんだかなぁ。

 元々MHIの工作機械部門を買ったのって、自社製品を作るための機械自体を自社で作りたいみたいな話だったはずなんだけど。まあ、その製品自体売上がボロボロだし、その製品の売上に期待できなくなった以上、工作機械部門は分離して売り払うか、あるいは他のメーカーも取り込んで工作機械部門で稼げるようにするか、みたいな話になったんだろうか。とはいえ、単に買収を仕掛けて工作機械部門の売上を増やすにしても、いろいろな会社を買収してそれぞれ独立した状態で存続させたってなぁ。最終的に、本業は工作機械部門に投資できるほど稼げず、それぞれに維持した会社は開発能力が低下して、結局それぞれの会社が存続できなくなって、日本の工作機械メーカーの多くが吸収された挙げ句潰される、みたいな結果になりそうな気もする。あるいは企業価値が落ちたところで中国かどこかに売り飛ばされるか。


【レビュー】プレーヤーに恋したら、禁断の“DAC交換沼”にハマった - AV Watch

 交換した端から1ヶ月と持たずDACが死んでいく、という症状。「愛着があるから何度でも交換し続けられる」みたいなこと書いてあるけど、そこまで愛着あるならちゃんと修理しろよ、という気がするのだが。特定のチップを様々な経路で買ったのに交換した端からどんどん壊れるって、そのチップが原因じゃないような気がする。例えば電源系が劣化してチップにストレスを掛けている、とか。

 他のライターの記事しかり、AV Watchって時々変な記事がある気がする。はたから見るとオカルト雑誌みたいな雰囲気だったりするし、それがさも当たり前のように書いてある。

 DIPとかSOPみたいにピンが並んでいるチップを剥がすならホットエアーよりホットピンセットのほうが作業しやすそう。ホットエアーだと周囲を巻き込んで加熱するから周辺に電解コンデンサとかがあると劣化させてしまう。ホットピンセットに幅広のアタッチメントをつければ特定のチップのピンだけを選択的に加熱できる。周囲を劣化させる心配がないし、マスキング等が必要ないから作業も楽になる。



 17億年前の原子炉: 核宇宙化学の最前線 (ブルーバックス 720) | 黒田 和夫 |本 | 通販 | Amazon

 久しぶりに紙の本を読んだ気がする。

「オクロ現象」を理論的に予言した人の自伝みたいな内容。1988(昭和63)年に出版された本。裏表紙を見ると内容の簡単な説明があるけど、バーコードがないのがちょっと違和感(ISBNは書いてある)。

 東大大学院で核(特に放射能泉)を研究している間に第二次世界大戦を迎え、その後は米国に渡って研究を行っていた人。ただ、いわゆる「オクロ現象」とか、タイトルの「17億年前の原子炉」に関する話題はほとんど出てこない。前書きにも書いてあるとおり、このタイトルは編集部の意向が強いので、内容にはあまり関係はない(理論の話はあまり出てこないという程度であって、どうやって考えてこういう理論を作ったかと言うような話は出てくる)。4章まではラノベみたいなペースでサクサク読める。古い本だけど古臭い感じはほとんどしない。5章は著者が提案している仮説の説明で表や数字が多い。

 日本への核投下は台風の影響で数日遅れていた。トリニティ実験で発生した放射能を含む雲は広島への投下前に日本へ到達していたから、日本の科学技術が十分にあれば、核兵器の投下前に核兵器の実験成功を把握することができ、投下される前に降伏することが可能だったはずだ。日本は軍事力だけでなく科学技術力でもアメリカに負けていた。というような話が最初の方に書いてある。/* トリニティ実験は長崎に投下されたインプロージョン型の起爆実験なので、広島に投下されたガンバレル型の核兵器とは構造が違い、ガンバレル型は構造がシンプルなため事前実験が必要なかった。もしアメリカが構造のシンプルなガンバレル型のみを作っていた場合、事前に核実験を行う必要はなく、その場合は日本から放射性物質を検出することは不可能だったから、原子核分野の科学技術力が十分にあったとしても、事前に把握できるかは五分五分。あるいは、ガンバレル型だけを作っていたら、その起爆実験を行ったのかもしれないけど */

 大学院を出たあとはアメリカへ渡ったが、当時日本はGHQ占領下にあって、日本はいまだ敵国という扱い。アメリカは敵国の人間であっても優秀な人材には永住権を与え、将来的には米国籍を与えることを想定していたようだ。それが移民国家としてのアメリカの強み。ただ、その後は人種問題や、あるいは安価な日本製品が輸入されることでアメリカの製造業が破壊されるとして、研究者としての立場も厳しくなってきた。


***


 Delta ForceのアプデをSteamで入れようとすると90%くらいで止まって、インストール先(E\:)のアクセスはほぼ0%、C\:のアクセスは書き込みでほぼ100%でレイテンシ1secとかになる不具合が発生。とりあえずWindows再起してC\:とE\:の両方のファイルを削除して、Steamからファイル破損検知が出るので一旦アンインストールしてから、再インストールをしようとすると、インストール先(E)の空き容量不足のエラー。最初の不具合もこれが原因かな? アップデートってインストール先の空き容量とか気にせず始まるのな。で、書き込みできなくて変な処理が走って(エラーログの出力とか?)Cドライブに大量の書き込みが発生するらしい。

 Steamの仕様なのかDelta Forceが特殊なのかわからないけど、一旦更新を始めると中断ができない。キャンセルもできないし、Steamを起動したら勝手にインストールが始まるから、また90%に達した段階でCへ大量の書き込みが始まる。Steamからアンインストールの操作もできなくなるから、更新を中断するにはOSから関連するファイルを丸ごと削除するしかない。


 今シーズンはロケットや衛星みたいなイラストが多いね。言いたいことはいくつかあるけど。衛星落とすのそんなに簡単じゃねーよとか。とはいえ、LEOの軍事衛星を想定しているのであれば、軌道維持のための燃料は大量を積んであるだろうし、比推力の良いスラスタも積んでるだろうから、ある程度残燃料が残ってれば、あとはクラッキングさえできれば簡単に落とせるようなものなのかな。軍事衛星は墜落地点をある程度コントロールしたいだろうし(敵国近くに落としたくない、できれば海のど真ん中に落としたい、等)、コントロールドリエントリも最初から想定しているのであれば、落とすのは簡単かも。昔のKHだって国旗や写真フィルムを特定の場所に落として回収していたわけだし(小さいカプセル程度とはいえ)。近未来の世界観なら軍事衛星の軌道維持は電気推進がメインになっていそうな気もするけど、緊急観測用の軌道操作(衛星寿命をある程度犠牲にしてでも解像度を稼ぐために高度を下げたい)とか、あるいはリエントリ用に化学推進も積んでいるはず。落ちてくる塊がでかすぎじゃねみたいな気はするけど、とはいえ大型のロケットが実用化されれば軍事衛星だってデカくなるだろうしな。というか今でも軍事衛星って結構でかいし。

 ロケットは、地上系(タワーとか)はStarship/Superheavyっぽいけど、ロケットはNew Glennっぽいし、フェアリングをつけたまま回収するのはRocket Lab'sのNeutronっぽい感じ。

 上昇中(わりと高高度)で爆発したロケットの残骸がそのまま落ちてくるのはちょっと違和感がある。例えばCrew DragonのIn-Flight Abort Testを見てみると、爆発した炎は上向きの円錐形になる。液体燃料は爆発地点で最大の火炎ができて、残りが上昇しながら燃えるので、上向きの円錐。反対に、固体燃料を積んでいると破裂した燃料が燃えながら拡散しつつ上昇していくから、下向きの円錐になる(例えばDelta IIロケットの動画)。上昇速度が遅い領域で爆発した場合は、例えばCygnus Orb-3の例があるが、液体燃料はその場で爆発するが、高温になったガスが上昇するので、どちらかといえば上向きの爆発になる。全体として、ロケットが爆発した場合、直ちに火の玉が降り注ぐわけではなく、ある程度上向きの運動量を維持した爆発になる。


***


 GARMIN foretrex 401のバンドを固定するラグがボロボロ(インサートで割れてる)なのと、バンドのベルクロが劣化しているので、どうにかしないとな、と思って、試しに外側のブラケットを試作。

 裏面のUSBポートや電池カバーのあたりは切り欠きにしてあるから、ネジを外さずにアクセスできる。

 全体的にかなり大きくなる。あとボタンが押しづらい。この案は却下かなー。


 内側

 裏側のケースが剥がせるならそれを作り直したほうがいいかな、と思ったけど、裏側のパネルに全体が張り付いている感じの設計。まあ、そりゃそうよな。電池とか全部裏面に付いてるし。

 GPSアンテナ、ちっせーのな。Garminの製品だし当たり前だけど、ちゃんとトリミングしてある。


 401を買ったのが2015年夏頃なので、そろそろ10年か。当時2.4万円で買ったもの。

 最新機種だと801の正規品が4万ちょっと、901の並行輸入が13万くらい。901は弾道計算機がついてる(スマホ依存?)。801の正規品は日本語表示できる。

 401はもう十分元は取ってるから買い替えてもいいとは思いつつ、新しい機種は割と良い値段するしなぁ。あと、やっぱりCoD4 MWとか遊んでた世代としては401以前の丸っこい見た目が好き。それを言い始めるとXGAのTOUGHBOOKとかも欲しくなるけど。10年前は結構あちこち出歩いてたけど、最近はほとんど遠出しなくなってるから、今更GPSロガーを買ってもなー、というところもある。

 ただ、401って文字盤がでかいデジタル腕時計にGPSロガーがついて付加情報も色々見れる、という感じで結構便利だったんだよな。401無しで散歩してみると結構不便。時刻が見たいなら腕時計を持っていけばいいじゃないか、という話なんだけど、例えばG-SHOCKは寒い場所だと文字盤が曇って読めなくなるので、冬の北海道だと使い物にならない。時刻を知りたいだけならF-91Wに乾燥窒素を入れておくとか、あるいはoil mod的な改造でも良さそう(そもそも薄いからG-SHOCKほど冷えなさそうだし)。とはいえ、当たり前だけど401はGPSで時刻合わせしてくれるので、使うのに手間がないのよな。電池は時々交換する必要があるけど、コンパスのキャリブレとかしないなら大した手間は無いし。電波ソーラー腕時計でも安いやつだと5000円未満で売ってるし、持ち歩きできるある程度精度のある時計が必要なら、それを買うのが一番手っ取り早そう。


 401を活かす方向で考えると、warrior garmin wrist caseみたいなサードパーティー製の腕につけるケースもあるけど、結構でかそう。アメリカ人のサイズなので腕が細いと使いづらそう。

 割れたラグは根本から削り落として、新しく作ったラグを接着して、市販のバンドを取り付ける、あたりが落としどころかな。ただ、バンドの入手がネック。腕時計用の細いピンで固定するようなバンドだと強度的に心配。もっとゴツいバンドってどういう分野で入手できるんだろうか。


*


 気まぐれでamazonでポチった安いGPSモジュール

 アンテナがすごく小さい。小さいアンテナの製品を探してポチったから当たり前だけど。GPS受信チップもアンテナも小さいのに、周辺回路で面積大きいのがちょっともったいない。両面実装すれば半分近くまで小さくできそうだけど、この価格帯だと厳しいんだろうな。

 u-bloxのNEO-6M、データシートのリビジョンは1が2009年だから16年前の製品か。


 試しに使ってみようと思ったんだけど、USB-UART変換が見つからね。あれだけ大量に買ってるのに1個も出てこないってどういうこと。。。STM32でブリッジを作るのも面倒だし。

 ここ数年は電子工作的な遊びも全くやってないし、部屋に積まれてる部品等(大半が電子部品、機械部品もいくつか)が結構邪魔なのよなー。とはいえ総額ではそこそこの金額になるから捨てるのも忍びないし。どうしたものか。


 色々探したら、FT232が乗ったXBee変換基板が出てきた。XBeeって10年くらい前に使ったのが最後じゃないのか…… 適当に配線して、PCへ接続。

 窓際に置いても、時刻(数秒進み)が表示される程度で測位されないので、外に出てみたら割とすぐ受信できた。やっぱりアンテナが小さいので感度は低そう。野外で天頂に向けたら問題ないとはいえ。

 起動時のファームウェア情報っぽい部分に2011年の日付が出てくる。表示される時刻は3秒進んでいるから、2009年1月から2012年7月の間に初期値が設定されてるっぽいな。やはり’11年にビルドされたファームだろう。10分くらい受信してれば閏秒を更新してFlashかRAMかどっかに入れるはずだから、次回以降は数十ミリ秒程度の精度(衛星1個の場合)で時刻が出てくるはず。

 やっぱりこういう小物を外に持ち出してテストしたいみたいなときに、x86系ラップトップがあると楽なんだよなー。探しておかなければ。


***


 GPSの周波数・時間空間のコード探索、周波数空間(FFT)で畳み込んで、floatで処理しているけど、意外と簡単にfloatの表現範囲を超えてしまうっぽい。FFTのサイズ(例えば2^14)とかレプリカ長(2.4Mspsで2400)で10^7.6、コヒーレント積分のために4乗して10^30.4、Magnitudeを求めるのに2乗して10^61、コヒーレント積分で10ポイント重ねれば更に1増えて、という感じ。floatは10^38くらいまでなので、余裕でオーバーする。doubleは10^308程度まで行けるので、全部doubleで処理すれば問題ないんだけど、計算途中をfloat配列に突っ込んだりすると、一発でサチる。巨大な数になるのは4乗とか8乗とかになる部分が問題なので、FFTのあたりまではfloatでも問題ないけど。



 GPSのドップラスキャン。周波数方向。

 横軸が周波数(kHz)、左軸(青)が信号強度、右軸(緑)がドップラ周波数推定値。強度は片側1kHzの位置にヌル点があるSinc型になる。本来緑の周波数推定値は水平線になってほしいんだけど、わりと複雑な曲線になる。コードのドップラがあると直線状の傾斜が発生して、ノイズがあると非線形(Sincの逆数っぽい感じ)の曲線になるらしい。

 今回は2^16ptsで処理しているので、周波数分解能は36.6Hz/lagくらい。実際に使うときは2^14ptsで146.5Hz/lagあたりかな。ドップラ推定値の初期値として100Hz以上のズレは結構でかいので、コード角速度から細かい部分を推定して数Hzくらいの精度で得られるなら、使わない手はない。

 信号強度は1LSB相当にスケーリングできているはず(簡易的に、振幅mの波(IQ)に拡散符号を乗じて突っ込んだら振幅mに近い数値が得られる)。ということで、GPSの信号は1LSB程度の強度で受信できているということになる。IQ信号の信号強度のスペクトルの外側が32LSBとかそのあたりだから、GPS信号が1LSBってのはオーダーとしては正しそうな気がする。


 時間方向

 2.4Mspsでチップの小数部分のズレがあるとピークが小さくなるので(最大で3割くらい落ちる)、簡易的に線形補間している。2.4Mspsだと両側の傾斜を取るにはサンプル数が十分ではないので、片側の傾斜を反対側にも適用して交点を求めている。理想的には強度はSinc型になって、サイドローブの外側はゼロ付近に落ち込むんだけど、ノイズ分で浮き上がってる。

 線形補間は信号強度の推定が目的ではなくて、コード位相の推定が主目的。