2025年12月17日水曜日

小ネタ












 この規模の機体にAIM-120はデカいなぁ。センターラインからオフセットしてあるから2発くらい載せられそうだけど、あるいはノーズギアを避けるためか。とはいえ1発だけじゃ使いづらいだろうし、やはり2発載せられるんだろうか?

 AIM-92を4発くらい載せたほうが良さそうな気もするけど、とはいえ気軽に前線に出せるほど安い機体でもないだろうし、後ろからランチャーとして使いたいのもわからんでもないけど、しかし2,3発程度だと心もとないというか。無人機なら工夫すればRCSも小さくなるだろうけど、現在のデザインだとちょっと大変そう。まあ、今のはコンセプト実証用だしな。

 理想的には120を底面に4発くらい埋め込んでRCSを下げつつランチャーとして使って、必要に応じて空中待機させたり、緊急で対空ミサイルが必要になったら滑走路端に待機させていたやつを上げたり、いろいろ使えそうではあるが。


 地上スタッフが見てるスマホ、テレメか何かを関係者向けにストリーミングしてるのかと思ったら、Webブラウザで表示したFlightradar24でターゲットドローンの軌跡を見ているらしくて。時代というか、お国柄というか。

 Fr24のプレイバックで見るとRAAFウーメラ基地の北西に当該ドローンが写ってることがあった。さすがにMQ-28Aは見当たらない(全期間確認したわけじゃないけど)。




 懐かしガジェット修理シム『リ・ストーリー: 思い出修理屋』発表。実在ゲーム機などを丁寧に分解修理、高価なパーツは“部品取り”でやりくり - AUTOMATON


 ストーリー無しで稀に客が来るようなモードも欲しいな。例えば実時間で30分くらいの間隔で客が来て、客が来ない間はプレイヤーはプレイヤーの作業をやっていて、ゲーム内客対応をするタイミングで自分の作業も一旦中断して少し休憩する、みたいな。いわゆるポモドーロタイマー的に使える機能。ゲーム内でゲームのデモ画面みたいなのを起動してBGM/VGBに使えたりとか。

/* ポモドーロタイマーって作業内容によりけりだから自分はあんまり合わない気がする。勉強とか執筆作業とか、完全に集中できる内容なら定期的な休憩のタイマーは良いだろうけど、遊びプログラミングとかで数分ごとにWebブラウザを開いてググるような作業だと、ブラウザを開いたタイミングでネットの海に遊びに出る気がする。まあ、だから自分は手が遅いんだろうけど */




 WSOとして乗るの? BF3みたいなクソゲーはやめてくれよ??

 空母がフィーチャーされているせいか、F/A-18しか出てこないな。前作はF-22でも空母で運用できたからな…… AC6やAC7ではF-16がデフォ機だったけど、今作ではF/A-18になるんかしら? F-16は最新型を購入機にするとかで。海軍機専用で空軍機は使えないということは無いと思うんだけど。



 A Pilot’s Guide to the HX50 Autopilot System - YouTube

 2軸または4軸のオートパイロットを搭載している。2軸はサイクリック操作を、4軸はそれに加えてコレクティブとペダル(ヨー)も。

 2軸はATTI HOLDみたいな感じかな。ある程度の前進速度があればヨーも安定するだろうし。

 あとは、緊急事態(特にパイロットの体調不良等)で最寄りの空港に緊急着陸するような機能もあるらしい。それと、エンジントラブルの際に自動的にコレクティブを下げて、オートローテーションの安全性を確保する機能も。

 他にも色々な機能があるらしい。ラジコンヘリからドローンみたいな進化の仕方をしてるな。将来的に追加で認証が得られれば自動操縦で飛ぶような機能も売ったりするんだろうか? でかいタッチパネルとかネットワーク機能とかも色々乗ってるし、地図で目的地を選んだらそこに飛んでいってくれるような機能は作れそうだが。



“JAXAと共同研究”リアル月面探索ゲーム『REAL MOON』Steamで無料配信開始 - AUTOMATON

 俺達は月に行ったらまず真っ先に物理法則を確認する。

 重箱ろうと思えばいろいろ気になるところはあるけど、30分とか1時間とか遊ぶくらいなら面白いんじゃないだろうか。



 ルンバのメーカー「アイロボット」連邦破産法第11条の適用申請 | NHKニュース | アメリカ、IT・ネット

 経営難の企業をamazonが買おうとしたらプライバシー云々を理由に規制当局に邪魔されて、結局中国企業に買われるの、はたから見てるとアホとしか言いようがないな。



「アサヒがファイアウォールではなくFAXに救われた事実を考えよ」――キンドリル、サイバーレジリエンスの重要性を強調(クラウド Watch) - Yahoo!ニュース

「日本を代表する大企業のひとつであるアサヒが、ファイアウォールではなくFAXマシンによって救われたという事実を考えてみてほしい。これは『Failure of Resilience』、つまり障害からの復旧力が欠如しているということだ」

 多少業務効率が悪くなったにしろFAXで最低限の事業を継続できてるなら、緊急の代替手段としてはそれでいいと思うけどな(もちろん必要なセキュリティは確保しておくのは大前提として)。サーバーで運用するITシステムとFAXってアーキテクチャが全く別物だから、どれだけ最悪を想定してもサーバーを攻撃されてFAXまで全損という事態は早々発生しないはずだし(FAXまでIP化してたりしたらともかくとして)。

 日本と海外では商習慣もそれを変えるためのコストも全く違うんだから、外資系企業の外人が笑顔で「世界基準に照らせば日本は遅れてるよ」といって自社のソリューションを売り込んでくるのはちょっと眉唾で聞いたほうがいいと思うな。外資のインテグレーターが日本でシステム開発を受注して炎上したりというのもあるし、日本の商習慣というのは海外から見ると異様だろうし、それは攻撃者側からしても同じだろうし。

 うがった見方をすれば、セキュリティ企業ってクラッカーからの攻撃がないと仕事にならないから、日本が「いざとなればFAXでいいよ」と言ってる間はセキュリティ企業も仕事にならないわけだし。



 米海軍がIFFのトラブルを放置&その装置を信頼した結果味方を誤射したとか聞くと、米軍君さぁ、って感じが。御自慢のモード5やデータリンクはどうなってるんだよ。

 トランスポンダの資料とか読むと「IFFは味方と確認できたものを表示するだけだから、IFFで味方と判定できないものに射撃するのは各自(シューター)の責任だよ」みたいな話が口を酸っぱく書いてあるけど、それがどれくらい実践されているかというと。。。

 それに、不具合のある機材を使い続けたのもな。艦長をはじめ指揮権者が把握して放置していたなら怠慢だし、把握していないなら無能だし。

 機材の修理・交換に金がかかるから、といったって、SM-2を1発無駄にして、もう1発で味方戦闘機を撃墜して、いったいいくら無駄にしたんだよ。



 USB Type-Aコネクタ、裏表が分かりづらいとかかさばるとか細々と問題はあるにしろ、デザイン性の高い記録媒体を作れるという点ではかなり優れてるよな。フロッピーディスクとかCDみたいに機能性だけで見た目が決まらない。

 今のところはType-Cでこういうスッキリしたデザインの製品はあまり見当たらないし、たとえType-Cでこういう製品が出たとしても、小さすぎてデザイン的に微妙な気がする。Type-Aはある程度体積のある半導体を入れるのにも十分な大きさだし、大きすぎもしない。

 キオクシアのU366(上画像の製品)、在庫限りと書いてあるからもう生産してないのかな? こういうデザイン好きなのになー。



 オフィス内での調理が電子レンジしか使えないやつ、火災云々とか匂いが残るとかいうより、火災報知器の誤作動のほうが怖そう。

 火災報知器対策ならビニールテントの仮設陰圧室とかを使って排気を窓から出すなりHEPA経由で部屋に出すなりすれば対策できそうだけど、偉い人に認めてもらうのが大変そうだな。絵面もかなり怪しいしな。まるで映画やゲームで出てくる薬物や生物兵器を作ってる現場みたいになりそう。



 ノートPCのバッテリ、amazonで型番を探すとバッテリ単体で売ってて、商品説明に「安心の日本メーカー」とか書いてるんだけど、会社名でググって出てくるチープなホームページによると単なる輸入代理店なんだよな。中国で探してきた安いバッテリーセルに自社のロゴだけ貼って売ってるんだろうけど、どのあたりが「安心」なんだろう? 炎上(物理)しても少なくとも文句を言う相手の日本法人がある、とか?


***


 Airspy R2の拡張端子の割当

 大抵のペリフェラルは必要な端子を満足していないから使用できない。実質的に使えるのはGPIO以外だとUARTが2組(片方はクロックがあるので同期可能、もう片方はDIRがあるので半二重可能)だけ。

 SPIやI2Sはクロックがない。CANはRXがあるからバスモニタ的に使うことはできて、ブロードキャストされるデータを受けることは可能だけど、TXが無いから積極的には使いづらい。

 Ethernet(RMII)もたぶんピンが足りない。RMIIが使えたとしても、20MB/sを流すなら100Mbじゃ足りないし、ARQに耐えられるRAMも無いから、リアルタイムにデータを取れるネットワークSDRアダプタとして使えるものじゃないけど、少なくともPoE1本で比較的離れた場所に配置したり、NTPやPTPでタイムスタンピングしたり、ネットワーク経由でコマンドを打ってUSB接続のストレージに記録したり、FTPでノンリアルタイム転送したりみたいなカスタムファームを作る余地はあったはずだが。


 クロック同期のUSARTを9bitで使ってTXをOD駆動してRXと直結してやれば、I2Cとして使えたりするんだろうか? 定常状態の管理が難しそうだけど、GPIOのモード設定である程度制御できるだろうし。試しにSTM32のUSARTの資料を見てみると、SPIモードとして使えるとは書いてあるけど、I2Cとして使えるとは書いてない。STMはわりとI2C多めだからな……

 LPCのUSARTもSPIとして使えるなら(使えないことは無いだろうし)、少なくともSPIバス1本とGPIO数本は使えるわけだから、その下に適当なブリッジを置けば色々追加できるだろうけど。SPIが使えるならI2CでもCANでもEthernetでもたいていのプロトコルに変換するチップは市販されているし。Ethernetとかで使うにはスループットが低めだけど。



 LPC4370のADCHS、データシートを斜め読みする感じ、800mVppの入力範囲に対して12bit全体が割り当てられているから、適正な電圧範囲を入力すれば、-2048から+2047まで、しっかりフルスイングするはず。しかし、実際にはRAWで見る感じではそれより早い段階で飽和しているように見える。

 ということは、このクランプはADC(LPC)側ではなく、R860側の問題? ただ、rtl-sdr.comに置いてあるR820Tのデータシートによると、IF Output Levelは1VppType, 2VppMaxだから、ADCHSの0.8Vppよりも広いはず。

 ただしR820Tの出力インピーダンスは2kΩある。ADCHSの入力インピーダンスがどの程度かわからないけど、STM32の通常のADCが数kΩ以下であることを考えると、それより早いADCHSはそれより低いインピーダンスのはずだから、R820Tの出力がだいぶん減衰している可能性はありそうな気がする。

 LPC4370のデータシートではADCの前にオペアンプで低インピーダンス化したりする回路が推奨されているけど、R2の基板の写真にはR860とLPC4370の間にはCR類しかないから、直接突っ込んでいるはず。

 ただ、その場合でも波形がクランプされるわけではなく、単に信号レベルが下がるだけのはずだから、ゲインを増やして中途半端な2箇所にピークが出る現象はまた別の原因がありそう。


 ドキュメントの探しやすさはNXPよりSTMのほうが優れている気がする。STM32は商品ページにドキュメント類の一覧があるし、製品を使う上で最低限必要なデータシートやリファレンスマニュアルはログインせずにダウンロードできる。NXPも製品に関連したドキュメントの一覧ページはあるけど、例えばユーザーガイド(レジスタマップ等はこれに書いてある)をダウンロードするにはアカウントを作る必要がある。STMも一部のドキュメントはアカウントが必要だけど、あくまでもtips的な内容であって、必ず読まなきゃいけないというドキュメントではない(たまに役に立つことが書いてあるから読むに越したことはないけど)。あと、日本語しか読めない日本人としては、STMのドキュメントは公式で日本語参考資料があるから読むのが楽なのがありがたい。


*


 方針を転換して、ISDB-Tの復調。

 とりあえず1フレーム約230ms分のコンスタレーション

 だいぶ広がってて汚い感じがする。

 ベランダにつけた小型のテレビアンテナをブースター経由で衛星放送とまとめてから部屋に引き込んで、スプリッタを通してDIGAに突っ込んで、DIGAからの出力をAirspy R2/SDR#でサンプリング。このアンテナ、スペックを確認したら4-5dB程度の利得しかないのな。適正なダイポールよりは多少マシだが……程度でしかない。ちゃんとしたテレビで受信するレベルなら支障はないけど、SDRで受信したりするにはちょっと弱いか。多少バラけてたほうが誤り訂正が効いてきて学習的な意味ではいいかもしれないけど。暖かくなったらもうちょっと利得のあるアンテナに交換したさあるな。

 RTL-SDR blog v3ドングルで受信したときはもっと綺麗に集まったコンスタレーションだったはずだから、ゲインの設定が悪いのか、R2の感度が悪いのか。

 RTL2832って28.8Mspsで取ってデシメーションしているから、出力が8bitだとしても入力感度はかなり高いはず。R2は20Mspsで取って、しかもADCが早い段階で飽和するから、信号の品質は結構悪そうな気がする。RTLはRTLで問題もあるんだけど。



 パイロット(SP)の位相のグラフ

 上から下に向けてOFDMシンボル番号、左から右にかけてキャリア番号。シンボル切り出し位置が正しい場合は水平なグラフになる。

 シンボル切り出し位置が正しくない場合(1マイクロ秒ズレ)

 これだけ線が並んでると分かりづらいけど、パイロット信号の位相が斜めになって、コンスタレーションが周波数軸で回転する。サンプリングレートの誤差があると時間軸で回転するはず。


 パイロット信号からはいくつかの情報を取り出せる。

 周波数軸上の角速度はシンボル窓の時間ズレに相当する。これを1フレーム分204シンボルとか適当な長さでフィッティングして角度を求めると時間の微分、つまり送信機・受信機間のサンプルレートの差が得られる。シンボル窓は60マイクロ秒程度の差までは計測できて、1フレームは230ミリ秒くらいだから、250ppm程度までが計測レンジ。

 時間軸上の角速度はキャリア周波数とローカル周波数の差に相当する。ただしシンボル間の角度が180度で折り返すから計測レンジはシンボル間隔1.134ミリ秒の半分の逆数、440Hz程度までしか計測できず、例えば搬送波周波数が550MHzであれば0.8ppm程度の曖昧さがある。

 Airspy R2はクロック精度0.5ppmを謳っているから、基本的には搬送波のビートだけで決められる。ただ、シンボル窓の微分で得たクロックエラーとビートで得たクロックエラーはそれぞれ-0.32ppmと-0.53ppmで、明らかなズレがある。560MHz付近の0.2ppmは100Hz程度の差だから、無視できるほど小さくはないけど、なかなか取り扱いが難しい大きさではある。


 もう一つ、OFDMのガードインターバルの相関値の位相情報もある。これは有効シンボル長1.008ミリ秒間のキャリアの回転を計測できる。これによると-0.84ppm程度。また突飛な値が出てきた。

 各計測値は現在のところテキトーに書いたコードで得た測定量を最低限単位だけ合わせて(無次元化して6桁移動)出力したものだから、符号にはある程度自由度がある。例えば0.84-0.53=0.31だから、量としては合う。GI相関の位相はFFTの前にサンプルに掛けるから、サブキャリアに影響するのも有り得そうな気がする。



 うまく行くときは上のコンステレーションみたいに比較的綺麗な結果が得られるけど、それでもフルセグの復調には失敗するし、場合によっては

 みたいに悲惨な結果しか得られないこともある。かろうじてQPSKっぽい濃淡は見える気もするけど、TMCC/ACすら見えない。

 昔書いたコードのコピペじゃなくて、ちゃんとデコーダを書かないとダメそうだな。

 R2は帯域幅が広いから複数のドングルで待ち合わせとかやらなくていいので、その辺は楽なんだけど、コンスタレーションが汚すぎて本当に復調できるのかも訝しんでる状況。R820T/RTL2832の組み合わせは広帯域信号(移動受信向けテレビ放送)を受信する前提だから、広帯域信号を突っ込んだときの特性はかなり良いっぽい。R2も探せば広帯域信号の受信に使ってる人はいるだろうけど。


*


 Airspyのファームウェアのビルド、試しにHyper-VでクリーンなWin11を用意して、WSL2のUbuntuで指示通りに全部コマンドを打ったら、一部自分でaptに触ったりする必要があったけど、ちゃんとビルドが通った。

 それで作ったバイナリをホストOSの方にコピーして、airspy_spiflash.exe -wで書いて、リセットして、airspy_infoで読むと、v1.0.0-rc10-6-8と表示された。


 リカバリについても、GitHubのWikiにちゃんと書いてあった。DFUモードで起動してNXPのドライバで接続して、バッチファイルを起動すればOK、とのこと。

 このバッチは通常のファームぅエアアップデートとはちょっと違う手順で、前回書いた通り一旦SRAMにファームウェアを置いたうえで通常のファームウェアアップデートを行うような感じっぽい。

 試してはいないけど、まあ、多分大丈夫だろう。


 ということで、ファームウェアのビルドと書き込みは確認できた。

 今回は仮想環境で試したけど、実機のWindowsでも問題ないはず。ただ、色々入れたりパスを設定したりするので、何か他のことをやりたいとき(orやっていたとき)に競合しそうな怖さはある。パスの設定くらいはどうにでもなるけど、libopencm3をsudo make installでどっかに配置していたりする。



 ホストツールについても、mingw64でビルドしたらそれらしいexeやdllが出てきた。ただ、dllの名前は違うけど(GitHubで配布しているバイナリはairspy.dll、ビルドして出てきたやつはlibairspy.dll)。dumpbin /exportsで見た感じ、一通りの関数は揃っているし、呼び出し側で名前を変えれば(orファイル名を変えれば)使えるはずだが。

 ファームの方もWin環境でビルドしてみようとためしてみたけど、もう少し手順が必要そう。ファームはWSL2で、ホストはMinGWでビルドするのが楽かな。

 ホストとファームの両方のビルドが通ったので、これが動けば、好きなUSBコマンドを追加してC#から叩いたりできるはず(デバッグの手間を無視すれば)。



 試しにHyper-VでAIRSPYをゲストOSに共有してairspy_infoを叩いてみたけど、AIRSPY_ERROR_NOT_FOUNDが出る。GitHubから落としたairspy_infoでも同様。デバイスマネージャーからはAIRSPYが見えているのだが。

 その場合も、ホストOS側で叩いたairspy_infoもNOT_FOUNDが出るが(これはHyper-Vに吸われているから正常)、ゲストOSを切断してAIRSPYの共有を解除すれば、ホストOSでのairspy_infoで正常にデバイスが見える。

 AirspyのサイトからドライバをダウンロードしてゲストOS側に手動で入れてみても効果なし。

 ゲストOSでビルドしたairspy_infoをホストOSにコピーして使えば問題無く見えるから、Hyper-VのUSBデバイスの取り扱いの問題だと思う。



 とりあえず、ホストとファームの両方のビルドが通るのは確認できたから、あとはノートPCとか、壊れてもあまり困らない環境でビルド環境を作れば、カスタムファーム等を作ったりできるようになる。とはいえ、ノートPCはスペックが低いからサクッとビルドが通るかはまた別の問題。


 こういう開発をやるベストプラクティスってどんなものなんだろう。複数のソフトウェアを開発する場合(特にインストールしたライブラリのバージョン等に依存性がある場合)、物理的にPCを分離すれば確実だけど、さすがに現実的じゃない。

 LinuxとかWindowsでも、ユーザーで分離すれば、ドライブ直下とかを使わない限りは問題ないのかな? ライブラリのインストール先にもよるだろうけど、ユーザーディレクトリに入れている分には。MinGWとか、ルートディレクトリとかProgram Files以下に入ったりするようなやつがいるとちょっと困ることになりそう。

 最近はストレージも小さくなってきたし、例えばNVMeを手軽に交換できれば手っ取り早いんだけど。メインのPCでそれはさすがにやりたくないし、ノートPCは底面パネルを開けるのが面倒だし。やっぱりFrameworkの拡張カードにOSを入れて取っ替え引っ替えって感じが一番確実なのかな。あるいは、競合とか気にせず一つのPC(アカウント)で作業して、問題が起きたらその時にどうにかするか。


 Hyper-Vで走ってるOSの中で走ってるWSLが管理しているフォルダをホストOSからサクッと触れれば楽なんだけどな。軽くググったくらいだと、簡単な方法はなさそうな感じ。大抵は実機で走ってるWSLが前提で、explorer.exe .でWindowsからフォルダを開けるよ、みたいな事が書いてある程度。そのフォルダを別のPCに共有するような話は書いてない。普通はそんな変な環境を作ろうとすることもないだろうしな。



 AirspyのPC側ツールで、去年の2月にairspy_calibrate.cというコードが追加されていて、SPIフラッシュに校正値を書いたりするようなものらしい。SPIフラッシュの適当な領域に32bit幅でppbの校正値を書くようだ。

 ただ、Airspy本体側のファームの最新のコミットは4年前で、キャリブレーションに関連しそうな機能は無い。カスタムファーム用の機能が公式のホストツールに入っちゃったとかなのかな?

 機能としては単に校正値を読み書きするだけだから、校正値は別の方法で入手する必要もある。

 この機能ってハードウェア依存はどうなんだろう。例えばSi5351Cだとクロックの細かい(ppm未満の)調整みたいなのは難しいはず。PLLで調整することはできるけど、そうするとジッタとかの問題が出てくる。とすると、やはりDigital Controlled Oscillatorを外付けすることを考えているんだろうか?



 DS28E18 データシートおよび製品情報 | アナログ・デバイセズ

 1-Wireデバイス、SPI/I2Cコントローラー、というブリッジ。曰く寄生給電できるから2線だけでSPI/I2Cデバイスを遠く(最大100m)に配置できるよ、とのこと。SPI/I2Cデバイスの電源ですら寄生給電するんだって。データシートを見ると1-WireコントローラーにFETが入ってるから、寄生給電と言いつつ実際はstrong pullupなんだろうけど。それにしたって最大10mAを間欠的に流すだけだし。まあ、ヒーターが入ってるとか、立ち上がりに時間がかかる&待機電力が大きいセンサを使おうとしない限りは問題ないかな?


***


 トーションバネを使ってセンターリターンするような機構を試作



 両側から挟んでやれば、両側に動かしつつセンターリターンするような構造になる。

 両側のピンの間隔が合わないとセンター付近にトルクがかからない部分があって、中立位置が重要な用途だと厳しい。おそらくゲームコントローラーのジョイスティックも同じような構造だけど、中立位置に遊びがあるのはこういう理由なのかも。ラジコンの送信機で別の機構(引きバネで棒を引っ張って回転軸のDカットに押し付ける)を使っているのは中立付近の遊びを嫌っているのかも。

 そう考えると、ゲームコントローラーのドリフト問題って、ポテンショメーターだから起きるとかホール素子なら起きないとかではなくて、周辺の機構の影響もありそうな気がする。ゲームコントローラーだって電源ONとか適当な頻度で中立点を取り直してるだろうし、たかだか数時間程度でそこまでドリフトするってこともなかなかない気がするんだけど。あるいは、それが起きるから問題なのかもしれないけど。


 最近寒いせいか、印刷品質がかなり高い気がする。プリンタを置いている部屋の気温は10℃を下回っていて、プリンタの推奨温度(15-35℃)の範囲外。大きなものを作ろうとすると収縮が問題になるのかもしれないけど、小さい部品を印刷する場合は適当に寒いほうがよさそう?



 Dカット型

 テコの原理がだいぶ効いてくるので復帰力がかなり弱い。Dフラットの形状(幅や曲率)で特性がかなり変わる。

 Dカットが平坦な場合は最初に動かし始めるためのトルクが大きい。その代わりに中立位置はかなり厳密に出る。Dカットに適当な曲率を与えた場合、動かし始めるときのトルクは小さくなる。その代わりに中立位置が厳密に出ない。

 アームの25mmあたりの位置にフラットを割り当てた場合、フラットの幅が5mmくらいあると距離が20%くらい変わるので、右側に回したときと左側に回したときで明らかにトルク(復元力)が変わる。

 回転軸とフラットの距離や幅で復帰力がかなり変わる。一つのバネで色々設定できるので調整は大変だけど色々なバネを買い揃える手間は省ける。

 あとは、ピンで挟む場合は角度とばね定数が直結するから角度とトルクがある程度比例するけど、Dカットの場合はそこがかなり弱そう(かなり狭い範囲で飽和する)。角度とトルクが比例してほしい場合は挟むほうが安心かも。


*


 ピンバイスにM3タップを入れるスペーサー

 このピンバイスに付属のコレットは3.2mmまでしかつかめないので、シャンク径4mmのM3タップは掴めない。ということで、適当なアダプタを作成。適当な下穴の樹脂(PLA)相手にタップを切るくらいなら問題なさそう。

 それくらいの相手だとちゃんとしたタップハンドルは過剰だし、かといって4mmシャンク直持ちはさすがにつらいし、微妙なところなので、ピンバイスで回せると便利そうな気がする、ということで試作してみた次第。

 探してみるとM3でもストレートシャンクのタップがあるらしいので、それが手元にあるならそれを使うのが確実。中国製の安いやつだと商品説明に明記してないことが多いので、確実にそれを買おうとすると難しそう。


***


 ISDB-Tを受信していたら急に極端に強度が落ちて、なんでだろ、と思いつつテレビを確認したら、こっちも映らず。ということで、暗くなって氷点下の気温の中、アンテナ周りの作業。

 前々から接触不良気味だったケーブルを交換して終了。温かいうちに交換しようと思ってケーブルとコネクタは買っていたのに放置していて、結局極寒の中で作業するハメに。いや、北海道で-5℃はむしろまだギリギリ素手で作業できるし温かい方か。手すりとか、金属を触ると手袋が張り付くけど。


 交換したケーブル

 本来、芯線は2mm突き出すように加工しろと指定されているんだけど、左側のやつは明らかに奥まった場所に入っている。実測で5mm以上足りない。ということで、これが接触不良の原因だろう。微妙な力のかかり具合で接触したりしなかったり、不安定な状態で、だましだまし使えていたらしい。このケーブルの先にブースターや衛星アンテナがついているから、少なくともDCまできっちり通ってはいた。それがなければRFだけ通って問題なく使えていた可能性もあるけど。

 電気屋とかに頼んだわけじゃなく、自分で設置したものだから、十中八九僕が加工したものだけど、とはいえこの手のものを加工するときって、手軽にできる範囲であれば指示を守って作業してきたはずだし、なんでこんな変な加工をしたのか腑に落ちない。10年とまでは行かずとも、何年も前のことだから当時どうやって加工したかなんて覚えちゃいないが。

 屋外で使うコネクタは、本来は自己融着テープでぐるぐる巻きにしてビニールテープでさらに簀巻きにして防水・防湿しなきゃいけないんだけど、コネクタの汚れ具合を見てもわかるように、全く防水加工せずに放置していた(楽な指示は守るが手間のかかる指示はガン無視するのだ)。端子の中の芯線も綺麗な銅色だし、根元で切ったケーブルもシールド含めて綺麗だし、意外と大丈夫そうだな。仕事でやるならともかく、遠くない将来にテレビが中断する&加工し直す覚悟があるのなら、手間のかかる防水処理はやらなくても良さそう。温暖とか台風が頻繁に来るような地域や、あるいは硫化水素や塩分濃度が高い地域だとまた別だろうけど。

 とりあえず、忘れた頃にやってくるテレビが視聴できないトラブルが解決できてよかった。原因も経年劣化でなく施工不良なので、他の箇所で同様の症状が出ることもないだろうし(同じように施工不良してない限りは)。


2025年12月10日水曜日

小ネタ






 QF-16、最終127号機を納入


 QF-16って結構な数作ったんだな。どれくらいの数がミサイルで落とされたんだろう。第4世代ジェット戦闘機で一番被撃墜数が多いのってF-16かしら? 第3世代も含めるとベトナム戦争に参戦したF-4とかがいるので怪しいけど。



 コンピューター側の人間が作ったJSF++周りの動画


 NERVのマグカップやうーぱ(S;G)のぬいぐるみ等が置いてあるあたり、いかにも現代のコンピューターオタクって感じがある。……現代、か? 学生時代に触れたコンテンツと考えるとそう外してもないか。


 GCAPとかF-47ってソースコードどうするんだろう? 今更Adaを使うこともないだろうし、JSF++だって現時点でも20年前のコーディングルールだし、とはいえRustを使おうって話にもならないだろうし。最近だってRustでおざなりに例外処理したコードのせいで世界中がパニックになったしな。

 言語レベルで安全性を重視したからと言って、それを本当に信頼していいかを判断するほどの実績はまだなさそう。それくらいなら何十年も使っているC++(少なくともJSF++だって開発期間も含めれば20年の実績がある)を使おうって話になるだろうし。



 半潜水式の重量物運搬船みたいにフラットな船でSTOL機を運用したら軍事作戦で便利やで、みたいなコンセプト


 9人乗りで滑走距離45mとかアホみたいな短距離離陸能力である。

 日本近海で使ってるイメージのあたり、島嶼部みたいなところでチマチマした人員・物資輸送に使いたいんだろうなぁ。滑走路がなくても多少開けた場所があれば離着陸できるし。とはいえ、このあたりで平らな場所か…… UH-1で良くねって気がする。シリーズハイブリッドの小型高翼機ならUH-60やV-22よりは安価に量産できるだろってことなんだろうけど。



 米軍で戦闘機パイロットだった人たちが「レーダーロックなんて日常茶飯事だよ。ロシアとかイラン相手にもやったし、暇なときは民間機をロックして遊んでたし」とか言って笑っていて、いやぁ、核兵器ぶら下げて相手の鼻先まで行ってた国の人たちは覚悟が決まってるなぁ、って感じが。



 amazonの変なシステムトラブル?に巻き込まれて、その対応でWebサイトをめっちゃたらい回しにされてしまった。なんでamazonって人間相手にもっと簡単に問い合わせできないんだよ。。。スパムの問題とか言ったって、過去に何百回も正常に取引してる相手なら信用して連絡フォームくらい開けてくれよ。

 チャットボットは全く使い物にならず、結局自分の電話番号を入力して向こうからの連絡待ち。5分くらい会話して、対応してくれた人曰く「最近はAIで処理してるからミスることもある」だそうで。結果だけ見ればだいぶ得した気分なので(実際得したので)この件は水に流して終了。

 amazonのカスタマーサービス、最近はちょっと定型から外れた問い合わせをしようとするとたらい回しされて大変だけど、人間相手に話がつくとキッチリ丁寧にしっかり対応してくれて好感持てるのよな。そこにたどり着くまでが大変だけど。そもそも普段はカスタマーサポートに連絡する必要がある事態もそう起きないけど。



 だいぶ前から探していた75Ωの終端抵抗

 雑多に変換コネクタを入れている場所に入ってた。地金のやつはだいぶ紛らわしい。これで50Wくらいのダミーロードだと巨大なヒートシンクが目立つんだけど、1W程度のターミネーターだと全く主張がない。



 サンワサプライのスマホスタンドを買ってみた

https://www.amazon.co.jp/dp/B0843Q5CND

 試しに色々載せてみたけど、かなり汎用性が高くて使いやすい。普通にスマホを置くのはもちろん、ヒンジがかなり硬いので、タブレットとか多少重いものも載せられる。まさか乗らんやろ、と思ってノートPCを載せてみたら、乗っちゃった。かなり軽いモデル(13.3インチ、800g)だから、1kgを超える一般的なノートPCだとさすがに耐えられないと思うけど。あと、画面が共振してさすがに実用的ではないけど。ドキュメントを開いておくサブディスプレイ的な用途なら使えないこともないかな、といった程度。そのくらいの用途ならタブレットで済むからなぁ。

 電卓とか、小袋のお菓子とか、工夫次第で色々載せられるので、机の上に2,3個置いておくと便利そう。

 試しにStream Deck Mk.2を載せてみたら、かなりいい感じ。Mk.2付属のスタンドは角度が固定(orスタンド無しの2段階)だけど、スマホスタンドに乗せれば自由な角度や高さに置けるし、キーボードに多少重なるような配置にもできるから、ホームポジションから押しやすい場所に配置できる。ただ、元がスマホスタンドだから、Stream Deckみたいに多少強く押さなきゃいけないものを乗せると、剛性が足りてない感じが若干ある。

 上面のパネルが水平になるようにすれば小物を置いたりもできるから、工夫次第でわりと何にでも使える。



https://www.jstage.jst.go.jp/article/itej1997/52/3/52_3_277/_pdf

 D-1 VTRの標準化に関して。

 国際規格だから世界中の組織が口出ししてきて、どれがいいかを決めるには実際に作って比較する必要に迫られた。結局他国の提案はあまり実験を行わずに、政治的に主張していたこともあって、実際に比較してみれば日本が主張した方向でまとめることができた。

 前にも全く別の分野で似たような話を見かけたな。どの業界でもあるんだろうな。



https://www.jstage.jst.go.jp/article/itej1978/43/4/43_4_404/_pdf/-char/ja

 1989年。テレビ局の記者が、自宅においてある15年以上前の14インチテレビを37インチに買い替えた時の話。

 かつてのテレビ放送は14インチのテレビで視聴する前提で調整して放送していた。最近になって各社が大型のテレビを販売するようになってきた。実際に制作に関わっている立場から大画面テレビを自宅に置いてみると、色々と気になるようになってきた。



 前回の、NTSCのクロマがなんでセットアップレベルに影響を受けるんだよ、というやつ、コンポーネント信号をIREに変換してから加算するのでなく、コンポジット信号をIREに変換するならすんなり書けるんだな。ただしコンポジット信号はあくまでもYUVの加算であって、IREに変換したあとに基準位相や同期信号を加える。

 今回の実装の場合、YUV段階でIREレベルへ上げてからクランプして加算するから、セットアップレベルが0%以外の場合とは相性が悪い。

 日本の場合、後期の仕様がどの程度だったのかは調べていないけど、初期はセットアップレベルは0%+10%-0%(0% - 10%)で規定していたらしい。なのでアメリカの7.5%±2.5%(5% - 10%)と互換性がある。あくまでも信号の電圧レベルはアメリカの規格を内包しているというだけであって、モニタ側は調整が必要になるけど。とはいえ、日本スペックの端端を入れたら影響を受けるわけだし。

 NTSCのエンコードはもうちょっとちゃんとやりたいんだが、優先度はあまり高くないのですこし先送りの予定。


***


 AORのブラックフライデーセールでAirSpy R2がセールで売ってたので、購入。

 付属のカードに書いてあるURLとパスワードで日本語のクイックスタートガイドと説明書のPDFがダウンロードできるけど、いかんせんバージョンが古いので参考になりそうなことは書いてないな。スクショも古いUIのまま。



 RTL-SDR blog v3ドングルとAirspy R2の基板

 どちらもRFフロントエンドはR860で同じ(R860とR820T2は名前が違うだけで全く同一のチップ)。


 Airspy R2の拡大

 表は主にR860、LPC4370、Si5351Cが乗っている。かなり高密度。

 SMAは端面から少し内側に入っているから、外側のナットを締めすぎると不必要なストレスがかかる。脱落して紛失しない程度にゆるく締めておく程度で良さそう。内側にも平ワッシャなりシム的なものを入れてもいいけど、調整が面倒。そもそもナット自体いらないのではという考え方もある。

 よく見ると下側についてるピンヘッダの高さがそろっていない。うーん。。。一応、拡張用のコネクタは1.27mmピッチに乗っているようだから、ドーターボードを作る場合は困らないようにはなっているはずだが(左下はJTAG)。


 裏面

 水晶は12MHz(LPC用)と25MHz(Si用)の2個。中央の水晶のパッドからハンダが漏れてるのがちょっと嫌な感じだ。クォリティチェック通過だって??

 8ピンパッケージはSPIフラッシュ(LPCのブート用)。マーキングは25Q80DVSIGで、W25Q80DVはWinbondの8Mb3.3V系の製品。ただ、接尾辞SIGはデータシートに記載がない。おそらくW25Q80DVSSIGというやつのはず(SSIGとして売っているやつも商品画像を見るとマーキングはSIGと書いてあるから、カタログの型番とマーキングは取り違えが無い程度に省略しているのかも)。



 SDR#で地デジの帯域を観察

 サンプリングレートが10MHz、SDR#では上下1MHzが非表示で、8MHz範囲が見える。ISDB-Tの5.57MHzも全体が余裕で見える。ch28の一番上のCPが565 928 424Hzに見えていて、本来は565 928 571Hzあたりのはずだから、-0.26ppmくらいかな? スペックは0.5ppmだから、それなりの精度は出てる。ただ、サンプリングを停止して放置して常温に戻してから再びサンプリングすると、結構ずれるから、温度特性はあまり良くないかも。70Hzくらいずれるかな? 常温から熱平衡で約0.15ppm程度の変動という感じ。ま、十分だろう。

 SDR#は相変わらず使いづらいな。最新版は2025年1月1日のやつ。なんでおまえ正月に仕事してるんだよ…… 一部のUIが文字化けしていたり、出力オーディオが壊れていたり、まともに使えない。手元の少し古いリビジョンなら正しく動く。


 R2は外部10MHzを突っ込めばそのまま引き込んでくれるはずだけど、とはいえ0.1ppmより精度のいいクロックをどうやって確保するかという問題がある。10MHzは用途が多いから、例えばSiTimeのSiT5503とか、5ppbで1.8万円くらいのクロックも売ってるけど。1本3000円くらいのRTL系に3万円の50ppbクロックは流石に高すぎだろと思うけど、Airspy R2に1.8万円の5ppbクロックなら、まあ、必要なら買えないこともないか、位の値段に感じられるな(28.8MHzは特殊な周波数だから在庫があるやつは値段が高いし精度も悪い。10MHzなら汎用的だから安くて精度のいい製品の在庫がある)。そもそもそこまで精度のいいサンプリングレートが必要な用途も思いつかないけど。

 5503はI2Cで発振周波数を数ppmとか引っ張れる。例えばR2でGPSを受信して周波数を追従、そのクロックを別のR2に配分すれば、高い周波数確度の受信機を作れる。そこまで極端な安定性が必要ない場合は、1分に1回くらいの頻度で1秒くらいGPSを受信して制御することもできるし、あるいは1時間に1回とかでもいい。時刻も合わせて計測すればUTC(USNO)とかUTC(NICT)に同期することもできる。

 5503は1分間で-11乗くらいの分散らしいから、複数箇所でGPSで時刻&周波数同期して21cm線を受信するVLBI的な遊びもできるはず。最近のインターネットなら登り50MB/s程度なら出ない速度じゃないから、リアルタイムにインターネットで結合したホビーVLBIも作れそう。外付けでRFスイッチが必要だけど、HMC7992をGPIOで制御するとか、どうにかなるはず。

 R2が定価で4万円、5503が2万円、RasPiやGPSアンテナ、21cmアンテナ等の周辺回路を合わせて10万円/拠点くらい、日本全国10箇所くらいに配置して、150万円くらいの設備投資で学習用VLBI観測ネットワークが組める。基線数が多すぎて計算コストが高すぎるって言うなら拠点数を減らして安価に組むこともできる。

/* オンライン教材の会社が小中学生向けのVLBIシステムを作ってるらしいんだけど情報が全く出てこないんだよな。学会での発表の概要はあるからオフラインでは発表してるんだろうけど。小中学生相手にVLBIはうまく説明できれば面白そうだけど、だいぶ端折った説明を求められそうな気もするな*/



 地デジの帯域をWAVに保存して、とりあえず相関処理

 有効シンボル10080、ガードインターバル1260。1フレーム。ちゃんとピークが出る。


 有効シンボルをフーリエ変換

 中央セグメントは位相がそれなりに安定しているけど、それにしてもちょっと変な感じ。


 今のところISDB-Tを復調するモチベは無いので、とりあえずは放置の予定。地デジ放送は(どこかの政党が主張していたのとは反対に)スクランブル放送が行われているから、ISDB-Tのフルセグを復調しても、映像を取り出すことはできない。なのでISDB-TはSDR的にはあまり魅力的ではない。/* 実際はともかく、NHKも公式にはスクランブル放送を行っていないと言っているが*/

 ISDB-TはSPを取り出せば放送局(中継所)の高精度なクロックを仲介して受信機のクロックエラーを計測できるので、そのあたりを見たくなったらまたやるかも。とはいえ500MHzで0.2Hzくらいだから、0.1ppm程度までしか見えないはずだけど。それ以上精度のいいクロックを検証しようとすると、やはりGNSSを使うしかないかな。



 民間機が飛んできたときにSDR#で1030MHzと1090MHzをサンプリング、WAVで保存して、適当に振幅・位相復調


 インテロゲーションではインターモードとモードS、レスポンスはモード3/A/C系とモードS系が得られている。10Mspsなので、質問(0.8us幅)もちゃんと幅が見えている(インパルス信号ではない)し、モードS質問や応答も位相変調やパルス位置変調が正しく見えている。Mark Xの応答は0.45usだから質問よりは狭いけど、それでも多少の幅には見える。



 airspy.dllの練習がてら、C#からAirspy R2のファームウェアバージョンの読み出し。v1.0.0-rc10-0(2016-09-19)だそう。10年近く前のファームウェアだ。GitHubでリリースされているファームウェアはrc10-0(2016年)の次はrc10-6(2020年)だから、一つだけアップデートがある。気が向いたらファームウェアアップデートをやっておこう。しかし、最新のファームウェアアップデートが間4年で5年前か。。。


 とりあえずairspy_start_rxにコールバック関数を渡して、出てくるポインタをファイルに書き出して、SDR#で読み込んで、正しそうな結果は得られた(例えばFMラジオの帯域を受信してWAVに保存して、それをSDR#で読み込めばちゃんとラジオっぽい声が聞こえる)。

 ゲインは3箇所を設定できるけど、すべてR820Tに内蔵されたものなので、R2側(ADC以降)は固定ゲインっぽい。大きな信号が入るとスプリアスが出るので、いい感じに調整してやる必要がある。


 データフォーマットは、S16IQやF32IQを指定すれば、DLLレベルでフォーマット変換を行って適切な形に出力される。そのままWAVへ書き出せば正しく保存される。DLLの中ではIIRやFIRでDCブロックとか色々処理しているっぽい。商品ページに書いてあるIQインバランスやDCオフセットが無いというのは、ソフト的にDLLレベルで除去しているという意味らしい。

 DLLで処理する前の、R2から送られてくるRAW形式は、少なくともDLLのソースには説明が全く無いし、ファームウェアのソースを読むのも面倒なので完全に推測だけど、おそらく平衡IQ4本を1個のADCで20Mspsで順番にサンプリングしている感じらしい(少なくとも、商品説明には12bit ADC@20Mspsと書いてある)。複素平面を90度ずつ順番にサンプリングしているイメージ。

 LPC4370FET100には高速ADC(ADCHS、12bit, 80Msps)が1個しか乗っていないから、それを時分割で平衡IQ4chのサンプリングに使っているらしい。ADCHSは差動入力もできるけど、これは1chしか使えない(負信号が1ピンしか無い)から、ゼロIFを受けるには不適(低IFなら受けれるはずだが)。

 平衡IQ(あるいは平衡Iと平衡Q独立)である程度長い平均を取ると、DCオフセットが見えてくるから、それを差っ引けば一応DCオフセットフリーになる。IQインバランスは、そもそも1個のADCでIQをサンプリングしているから、原理的にはADC以降でゲインエラーが出ることはないはず。


 これを受け取って処理する場合、単に正極はそのまま、負極は符号反転して読み込んだ場合、5MHzの強烈なスペクトルが出る。その代わりにDCオフセットは相殺されるから、単にLPFを通して5MHzの線スペクトル(高調波は見えない(±5MHzに折り返される)から無視していい)を除去するだけでいい。

 正極は直接、負極は 4096-サンプル みたいに計算した場合、強いスペクトルが出る。正極は サンプル-2048 、負極は 2048-サンプル、みたいにしてDC付近に寄せると、わずかなDCオフセットの影響で弱めの5MHzのピークが出る。単純に負極を符号反転した場合に比べればピークは低くなるから、FIRの特性はその分大人しくても良くて、だいぶ楽になるはず。

 もう少し技巧的にやるなら、全サンプル(IQ正負4ch)の長期的な平均を取って正確なDCオフセットを得て、それを基準にすると、5MHzのピークはほとんど消える。

 ただしI軸とQ軸に50nsの時間差があるから、IQ軸が完全には直交しておらず、そのまま複素信号として扱うと0Hzでミラーした形で反対側にスペクトルが漏れる。SDR#で見るとそういう特性は無いから、DLLのフィルタはうまいことミラーを消してるんだと思う。

 このサンプルは、DCオフセットを別にすれば、IQ軸を相互に(正負をうまくハンドリングしつつ)ゼロパディングして、一旦20Mspsのデータにアップサンプリングした後に、適当なLPFに通して高周波成分を捨てつつ、10Mspsにデシメーションすれば、概ね正しい波形が得られる。I軸とQ軸はそれぞれ奇数番目と偶数番目(orその逆)がゼロパディングされるわけだから、20Mspsで作成したFIR係数を奇数番目と偶数番目の2つに分けて、IQ軸に対してそれぞれの係数を実数演算すればいい。ただ、広帯域でフラットな特性を得ようとすると、FIRはかなり係数を長くする必要があると思う。DLLのフィルタはもっと短いから、また違ったテクニックを使っているっぽい。


 RAWで取ったバイナリを一旦ファイルに保存してから、後処理でIQ信号に変換して、WAVファイルに保存

 とりあえず設計通りに動いているはず。

 +3.6MHzと-3.5MHzにFMラジオが2局あって、周波数対称の位置に目立ったスペクトルは出ていないし、通過帯域4.47MHzのLPFも設計通りの特性に見える。

 FIRは普通に実装すると演算コストがかなり高いし、そもそもDLLの変換でも問題ないだろうから、実用上はRAWを読む意味は無いはず。



 R2、ゲインを上げていくと結構早い段階で飽和する気がする。

 適当なアプリを作ってヒストグラムとスペクトル(F32IQ, I16IQだけ)を表示。とりあえず地デジの電波を受信。

 ↑飽和していない状態のヒストグラム

 ↑飽和し始めた状態

 ↑かなり飽和している状態

 飽和するとガードバンドもかなり浮いてきている。


 Rawで読み出し


 Raw状態(ADC出力値?)ですでに飽和している。LPC4370の高速ADCは電圧レンジが狭いらしいから、それが制限になっているのかな?

 Raw形式でデータを受け取るなら、ヒストグラムを見ればレンジを超えているか(or超えそうか)は判断できるから、ゲインにフィードバックするなり、アラートを表示して調整させるなり、対策は考えられる。ただしRAWからの変換が高コスト。

 SDR#等で受信する場合、かなり低い信号レベルでも飽和するから、注意する必要がある。

 4370のADCHSには任意の閾値から出たり入ったりすると割り込みする機能があるらしいから、ADCが飽和しそうになったらPC側に通知を出すみたいなことも、比較的簡単にできそうな気もするが。USBがどれくらい自由にデータを通せるのかはわからないけど、PC側からポーリングして1Hzくらいで監視するとか、PC側から閾値を設定するとか、その程度なら作れそう。



 オンボードにLEDが乗っているので、DLLからGPIOを叩いてLチカしてみた。ちゃんと反応する。ファームウェアから触ろうとするとled_on()とかled_off()みたいな関数が定義してあるからそれを使えばいいんだけど、C#からDLLを叩こうとするとポート番号0、ピン番号12、true、みたいな感じで指定しなきゃいけないので面倒。まあ、このLEDはケースを閉じてしまえば外からは見えないから、使うこともあるまい。なんでこんなところにLEDが付いてるんだよ。ケースの穴加工1,2個くらいケチるなよ。

 同様にタクトスイッチも乗っているけど、これについてはファームウェア側にも定義がない。試しに押してみるとUSBデバイスが切断されるから、単なるリセットスイッチらしい。商品説明の写真見たらちゃんとRESET Buttonって書いてあった。

 その商品説明にはオンボードLEDはRX LEDって書いてある。試しにSDR#で受信したら受信中に点灯した。ちゃんと制御しているのか…… なんで隠してるんだよ。



 C#のDLLラッパー、rtlsdr.dllよりだいぶ簡単に作れた気がする。まあ、単にrtlsdr.dllでDllImportの使い方をある程度学んだから、というのもあるだろうけど。あとは、今回はあまりググらず迷ったらCopilotに丸投げしたのも結構大きい気がする。Think Deeperで質問すればかなり実用的な回答が得られるので便利(GPT-5で質問すると劣化版検索エンジンみたいな性能しか出なくて謎い)。


 C#、Marshal.Copyで構造体にコピーできないのが結構つらいんだよなー。nintで渡されたポインタを(float,float)[]とか(short,short)[]にコピーする場合、一旦byte[]にコピーしてからMemoryMarshal.Castで型を変換して再度コピーしなきゃいけない。メモリ転送が多い。



 Airspy R2ってオンボードで丸々未使用のCortex-M4F 204MHzが乗っているから、いい感じのカスタムファームウェアを入れれば、例えばUSB CDCでADS-Bを吐き出すアダプタとか、あるいはUACでFMラジオを吐き出すアダプタとか、UVCでワンセグ映像を吐き出すアダプタとか、いろいろ作れそうな気がするんだけど、そういう用途ってあんまり見かけない気がする。そもそもAirspy R2の使用例を探したこともないから、あっても知らないだけだけど。

 LPC4370にはSD/MMCペリフェラルが乗ってるけど、R2の拡張ヘッダにはSDカードに必要な端子すべては出ていないはずだから、microSDカードスロットを追加してスタンドアロンでRawデータを保存する、みたいな拡張ボードは作れないはず。SPI端子は出てるからSPIモードでSD/MMCのファイルを読み書きすることはできるだろうけど、10Mspsの12bitパックデータを保存するにはバス帯域で1桁足りないはず。スタンドアロンでRawデータを記録したいならmicroBにOTGでUSBメモリをつなぐほうが早そうだな。

 買っといてなんだけど、Airspy R2ってどういう用途で使えるんだろうか。RTL系の2MHz幅では足りなくて、10MHz、1.7GHzくらいまでなら足りるような用途。うーん……


 試しに430MHz帯をSDR#で覗いてみた。違法無線が2,3組いたので聞いてみたけど、SDR#の狭い画面(最大化すると描画が遅くなる)で8MHz幅から選択しなきゃいけないから、かなり使いづらい。430MHzアマチュア無線に特化した受信ソフトとかがあるなら便利だろうし、あるいはR2は広帯域スペアナとしてしか使わず、実際の受信(&送信)は専用無線機を使うと割り切るならそれなりに使えるだろうけど、Airspy R2 + SDR#の組み合わせで8MHz幅の狭帯域通信を監視&復調しようとすると、あまり使い道はない気がする。

 アメリカならFMラジオが隣接してるから便利かな、という気はするけど、FMラジオを聞くだけならRTL系や普通のポケットラジオを使うほうが安く済むし。R2はカスタムファームを作りたいとか、あるいは専用の受信ソフトを作る(or探す)みたいな感じで、用途に特化した使い方をしないと、あまり利便性を感じない気がする。



 LPC4370のRAM上実行について - 滴了庵日録

 LPC4370は、282kBのRAMを内蔵するかわりFlashを内蔵しておらず、RAM上で実行することを前提としている。204MHzという高速な動作クロックのため、内蔵Flash上の動作では読み出しアクセスがボトルネックになるためである。

 SPIフラッシュからSRAMに読み出して起動するあたりFPGAみがある(理由は違うけど)。


 Airspy R2のリカバリ方法(ファームウェアを破壊した場合の復旧方法)を探してるんだけど、見当たらない。

 Airspyのファームウェアアップデートの手順を読む限り、ケースを開けてジャンパを変えろみたいなことは書いてないから、AirspyのファームウェアからもSPIフラッシュに書き込みはできるはず。実際、AirspyのDLLにはairspy_spiflash_erase, write, read関数があるから、SPIフラッシュの書き換えは好きにできるはず。ただ、これを使ってファームウェアを書き込む場合、USB DFUとは非互換だから、万が一ファームウェアを破壊してしまった場合は、別の方法でUSB DFU経由で書き込む必要があるはず。

 ファームウェアに付属のテキストファイルだとairspy_spiflash.exeにバイナリを渡して書き込め、と書いてあるけど、Wikiにはairspy_flash.batで書き込め、と書いてある。ファームウェアにはdfu_util.exeとかlpcdfu.exeみたいないかにもそれっぽいヤツも付属している。もしかしてバッチの中でうまく分岐してるんか?と思って見てみたら、単にairpsy_spiflash.exeを起動するだけの1行が書いてあるだけだった。。。


 LPC4370は内蔵プログラムROMが無くてSPIフラッシュから起動できるんだから、マイコン自身がSPIフラッシュにアクセスできるんだろうけど、読めるのと書けるのは別だろうからなぁ。それともイレース単位とかって標準化されていて、マイコンで透過的に処理できるんだろうか?

 このあたりはLPCのユーザーマニュアルを読めばいいんだろうけど、NXPマイコンって使ったことないから勘所がわからん(mbedでちょっと遊んだ程度ではLPCを使ったとは言わないし)。

 UM10503 LPC43xx User manual Chapter 5 Boot ROMのFig 16 Boot process for parts without flashを見る感じ、シリアルデバイスとして起動した場合、受け取ったバイナリはSRAMに保存するだけなのかな? その場合、USB DFUでまずSPIフラッシュに触れるプログラムをSRAMに転送して、そいつを起動してSPIフラッシュにファームウェアを書き込む、という二段階の手順が必要なんだろうか? Airspyの場合はUSB DFUでファームウェアのバイナリをSRAMに転送すれば、そのファームウェアが走るはずだし、そいつのairspy_spiflash_writeを叩いてもう一度バイナリを転送すれば、ファームウェアをSPIフラッシュに書き込めるのかも。


 ファームウェアのソースをざっと見た感じ、LPCのペリフェラルはレジスタを直叩きしている感じ(所謂HALみたいなレイヤを経由していない)。

 HALがあったところで、結局はデータシートでレジスタマップを見て、そのレジスタを書き換えるHAL関数を探して、それを実現する引数を探さなきゃいけないから、HALがあっても余計面倒なだけなんだよな。特定のマイコンしか使わないならレジスタを直接叩くほうが圧倒的に早いし楽。

 とはいえ、データシートの読み方すらわからないマイコンだと、レジスタに書いてる内容を調べるだけでも大変。


 試しにLPC4370の評価ボード的なものが無いか探してみたけど、なさそう。10年以上前のマイコンだしな。当時大人気のLPC-Link2もすでに秋月での取り扱いは終了している。一応マルツには在庫があるから、必要ならそれを買うことはできるだろうけど、納期16週間だって。試しにDigiKeyで見てみたら、生産中止で在庫無しだそうだ。じゃあなんでマルツで注文できるんだよ…… NXPのWebサイトではLPC-Link2はステータスがアクティブだから、まだ作ってるはずなんだけどな。

 値段を気にせずLPC4370ボードが必要ならAirspy Miniを買うのが早そう。壊さない限りはSDRドングルとしても使えるし。


 4370にはI2Cペリフェラルが2個乗っているけど、ファームを斜め読みした感じ、片方を5351に、もう片方を860に使っていて、拡張コネクタにはI2Cは出ていないらしい。どうしてもI2Cデバイスをぶら下げたいなら、DLLからGPIOを叩いてめちゃくちゃ遅いソフトI2Cを作るか、あるいはカスタムファームでソフトI2Cを作るか、工夫が必要そうだ。



 Airspyの解説記事

https://airspy.com/downloads/Airspy%20RadioUser%20March%202015.pdf

 シルクによるとAirspy R0だそうで、部品の種類や配置はR2とほぼ同じ。R0の日付は2014年8月でR2は2015年8月だから、1年でR0, R1, R2を作ったのかな? で、その後10年改定無しか……

 2010年代前半のオープンソースソフトウェアorハードウェアって謎の活力があったよな。



 試しにLED用の穴付きのサイドパネルを作ってみた

 LEDのところに穴を開けて、光ファイバで導光している。輝度が低いので明るいところではほとんど見えないけど。ファイバを曲げて効率よくLEDに接続すればもっと明るくなるだろうけど、今回は端面を45度くらいに切り落として光の一部を取り込んでいるだけ。

 リセットスイッチも押せるような機構があるとカスタムファームを作るときに便利そうではあるけど、USBコネクタとかケースの突起を避けながら力の向きを90度曲げなきゃいけないから、ちょっと大変そうだ。

 リセット端子がブートセレクトの2.45mmにも接続されていれば取り扱いが楽でいいんだけど、JTAGとか拡張コネクタとか、ハーフピッチの場所にしか出ていないので外付けスイッチは大変そうだ。かといってオンボードのスイッチもJTAGのハーフピッチの横だから下手に触ると横の端子を折りそうだし。そういう意味では、リセットスイッチを操作できるような機構がサイドパネルについていると便利なんだよな。



 試しにAirspyのファームのビルド環境を作ってみようと思って、とりあえずUbuntuで試してみるか、と思って、USB 3.0のUSBにISOを焼いてみたんだけど、なぜか起動しない。前に焼いたUSB 2.0のメモリからだと、なんかやたら遅い気がするけど、一応起動するから、USBメモリ側の問題のような気がする。

 USBが問題ならNVMeに焼けばいいのかもしれないけど、わざわざWinOS環境消してまで試そうとも思えないしなぁ。ノートPC、NVMe交換するの面倒すぎ。このあたりの手間はFrameworkとかもほぼ同じなんだよな。パームレスト剥がしたら簡単にNVMeが交換できるような構造になってれば便利だろうに。


 AirspyファームのGitHubのWikiを見た感じ、makeを通すのにpythonが必要らしい。大変そうだなー。


2025年12月3日水曜日

小ネタ


 エアバス機に不具合 全日空の国内線95便がきょう欠航 | NHKニュース | 航空、交通・インフラ

 A320 Family precautionary fleet action | Airbus


 2008年頃にA330のインシデントがあって、デバイスの劣化と外部要因の複合現象みたいな感じの原因という説明だったけど、それとはまた別のやつなのかしら?

 カンタス航空72便急降下事故 - Wikipedia



 暗黒物質がついに見えた!? ー天の川銀河のハローから高エネルギーガンマ線放射を発見ー Press Releases - 東京大学 大学院理学系研究科・理学部

「箱の中身は何色だろな」で「箱に手を入れたら何かが手に触れた」位の感じかな。これからもっと撫で回して形を決めていって、この形ならこの色に違いない、といろいろ探していく感じで。最終的には箱から出して実際に眼の前に持ってきて観察するのが究極だけど、まだまだかかりそう。とはいえ、「箱の中に入っているよ」とは言われていたけど手を振り回してもどこにあるのかもわからなかったものが、「ここにありそう」とわかっただけでも大きな進歩。


 しかしまあ、WIMPの対消滅で発生したガンマ線で想定される放射に一致する観測値が得られた、とはいえ、それでプレスリリースのタイトルに「見えた!?」と書くのはちょっと先走りすぎてる気がしないでもない気がする。まあ、そんなこと言ったら、新元素の発見だって崩壊過程を見て予想と一致していれば塊として眼の前に用意しなくたって発見と認められるわけだけど、元素の場合は複数の崩壊過程を経るのに対して、今回の場合は単純にガンマ線を見つけただけなので…… ちゃんと根拠のあるパターンを見つけたんだろうけども。



 リアル月面探索ゲーム『REAL MOON』発表、Steamで無料配信へ。JAXAがゲーム会社と共同研究、精密に再現された月面で自由に動ける - AUTOMATON

 UE開発で実績のある会社が作ったゲームなら、まあ安心かな?

 まるでゲーム開発の実績がない会社が作った宇宙系のゲームに不安があるみたいじゃないですかぁ。いやまさかそんなことはないですよ?


 重箱の隅をつつくようなことを言うと、影のライティングがちょっと暗すぎるよーな気がする。アポロの写真を見ると、月面の反射がかなり強いので、物体の日照の無い面も結構明るいのよな。それの再反射で影の中の月面も結構明るい。そのわりにゲーム中の背景は恒星がかなり目立つし。アポロの写真の場合、影の中がはっきり見えるような明るさでも恒星は全く見えない。実際には写真と肉眼のダイナミックレンジの差の関係もあるので、この比較が正しいかもわからないけど。

 あとは、普通の(地球を舞台にした)ゲームを作っているチームだと、重力のイメージがだいぶ違う部分が影響しそうな気もする。重力が少ない中で歩くとどうなるのか、あるいはどうやって移動するのがいいのか、みたいな部分が特に。とはいえ、まさか1Gでモデル化してるわけは無いだろうしなぁ。なんか、スタスタ歩いてるのが気になるんだよなぁ。



 映画『ジャガーノート』(英1974年)、いつか見たいなーと頭の片隅に置いてあったんだけど、このあいだCSで放送していたので録画して視聴。半世紀前の映画だってよ。そんなに昔なのか…… そりゃ『エアフォースワン』より古い映画だって基準点は持ってたけど。っていうかエアフォースワンって'97年の映画なんだな。結構最近だ。

 内容はWikipediaで結末まで知っていたから、見ていて本来ほどハラハラ・ドキドキするわけでもないけど、とはいえ十分楽しめた。


***


 壁をデータ化して近い経路を探索するような処理を作ってみた。

 このゲームではマップを再利用することができるけど、再利用すると迷路が閉じていることが保証されなくなる。その場合、左手の法則みたいなのだとループに入って抜け出せなくなったりするので、経路の探索が必要。

 1回目は迷路が閉じていることが保証されているから、最初に左手の法則を使ってすべての壁をデータ化して、以降は現在位置とゴールの位置、それから先に取っておいた壁の位置から最短経路を探している。そして移動中に壁が消えたことを検出した場合は、次回以降にその情報を使用する。

 マップを再利用すると、壁が既知というだけでなくて、壁が消えることでより短い経路が発生する可能性がある。なので、何回も繰り返し利用したほうが少しずつ効率が良くなるはず。

 今のところ、最短経路探索の処理がかなり重いので、あんまり早い気はしない。



 300回近くまで再利用するとかなりスカスカになる。ただ、あくまでも自分が通った前後左右しか壁の消失を検出できないから、実際にはショートカットできるのに遠回りする、みたいな状況もある。再探索みたいな処理を挟めば最適経路を見つけられるようになるけど、それはそれで大変そうだ。時間もかかるし。



 Pythonって今まで触ったことなかったけど、あんまり違和感なく使えてる。たまにセミコロンを書いて怒られたりとか、その程度。C#とかに戻ったときにifを()で囲わなくなるのがちょっと罠かな。あとはタプルの分解がx, y = measure()とかでできて若干キモいとか。

 TFWRのインタプリタは三項演算子が使えないのが地味に不便。あと、大きなテーブルを使いたいときに、Pythonではlist = [0] * 1024みたいな書き方ができるらしいんだけど、TFWRではそれができないから、for i in range(1024): list.append(0)みたいな感じで自分で初期化子きゃいけないのが面倒。

 PythonのNone判定はif hoge is None:やif hoge is not None:でやりなさい(Falseや0みたいにFalsyな値をまとめて弾きたい場合は除く)、というコンセンサスがあるらしいんだけど、TFWRでif hoge is None:みたいなコードを書くとシンタックスエラーで弾かれる。

 ちゃんとしたコードを書こうとする(orちゃんとした書き方の勉強に使おうとする)と、TFWRはちょっとびみょいかもなー。


 マイクロマウスみたいな題材、というか迷路を解くようなプログラムって、書いてみたいなーとは思いつつ、いままでやったことがなかった。左手の法則で解くなら閉じた迷路を生成するプログラムを先に書かなきゃいけないし、閉じていない迷路を解くならちゃんと経路を計算しなきゃいけないし。そもそも閉じてない迷路でも生成するのは大変そうだし。

 初めて迷路を解いてみて、しかも触ったことない言語で、ということを考えれば、解くのにそれなりの時間はかかるけど、まあ、ちゃんと動いてるし良い方なんじゃないだろうか。

 これで本物のマイクロマウスだとハードウェア(物理空間)に起因する問題が色々と出てくるんだろうけど。迷路を走らせている合間にVeritasiumの動画を見てたけど、元々は数学的な問題だったのが、最近はロボット工学の問題になってきて、いかに物理空間で特性よく計測・制御するかが問題になってきている、みたいなことを言ってて、さもありなん、という感じ。


 マイクロマウスでマウスのイメージセンサを使うようなやつってないのかな。最近のゲーミングマウス用のイメージセンサだとフレームレートがアホほど早いし滅茶苦茶な加速度にも対応しているから、マイクロマウスの速度・加速度でもある程度正しくトラッキングできそうだが。迷路の床面の材質が厳しそうではあるけど。

 マイクロマウスの場合、移動距離を直接(摩擦力に依存せずに)計測できるセンサはあれば便利だろうけど、とはいえ角分解能(積分してヘディング)が悪いと意味ないからなぁ。マウスのイメージセンサだとその軸は感度が悪い。

 計算量でゴリ押しするなら試走したコースの路面画像と別のセンサで取った座標データを保存しておいて、高速走行中にパターンマッチングで位置決定するみたいなことも考えられそうだけども。推定値はかなりいい精度で持っているから、誤差を補正する程度でいいわけで、計算量はさほど高くないだろうし。積分しなくていいから誤差も増えないし。とはいえ、その程度のことはもうやってそうな気もするが。

 組み込み側の計算能力より、開発用のリソース(ワークステーションとかクラウドとか)の計算コストが圧倒的に下がってきたから、デジタルツインとか機械学習で最適な構造(タイヤの配置とか)をゴリ押しで探索するような方向もそのうち出てきそうだな。



 TFWRの方は、とりあえず迷路は解けたし、ヘビゲームは文字通りエッジケースやコーナーケースの対策が思いつかないのでブルートフォースで書いて放置してるし、ツリーは骨100M以外は解放したし、とりあえず一区切りついた感じ。というか飽きてきた。放置ゲーは放置するところまで進むと放置が義務になるから楽しめないのよなー。


***


https://www.jstage.jst.go.jp/article/itej1978/34/2/34_2_135/_pdf/-char/ja

 1980年。PCMアダプタの話。

 ビデオテープの広帯域特性を使用して、音声データをデジタルデータとして保存する装置が1969年にNHKによって開発・公開された。その後に多様な装置が色々と出てきて、一部のオーディオマニアも使うようになって広まったが、互換性の無さが問題になったので規格を統一しようということでEIAJで作られた規格。

 サンプリングレートの設定理由も書いてある。あくまでもNTSCに合わせて44.0559kHzを選定していて、PLAとの互換性や値の丸めは考えていないっぽい(一番最後に、今後PALやSECAMに対応したいみたいな話は書いてある)。

 テレビ信号としての同期信号(伝送路のAGCに必要)はあるけど、カラー映像信号としてのバースト信号は必要ないわけだから、モノクロの15.75kHzを基準にして44.1kHzにしても良さそうなのに、わざわざカラー放送に合わせて中途半端な値に設定しているのが謎い。NHKが開発したものだと局内のシステムに同期しなきゃいけないからみたいな理由があるのかもしれないけど。


 データは14bit/Wが6ワード(ステレオで3ワードずつ)、誤り訂正が2ワード、誤り検出が16bitで、合わせて128bitが水平走査線1本に入る。誤り訂正によって6W中2Wの誤りを訂正できる。各ワードはインターリブして記録されているから、最大で32Hまでのバースト誤りに対応できる。



https://www.jstage.jst.go.jp/article/biophys1961/26/6/26_6_291/_pdf

 1986年。PCMアダプタを改造して生理学実験に流用する提案。主にAC結合のオーディオ機器をDC結合に改造したり、フィルタ周りを変更したりとか。PCMアダプタは映像信号しか使わないので、VTRのオーディオ信号も使えば、デジタルPCMが2chとアナログ信号が2chの合わせて4chを記録・再生できる。



https://www.jstage.jst.go.jp/article/itej1978/39/4/39_4_338/_pdf

 1985年。業務用PCM録音機。

 音声データの編集方法で、テープを手動で切ったりつなげたりして編集する方法があるらしい。デジタルデータだとインターリーブで時間方向にデータが広がっていたり、独特の課題もあるらしい。あとは、複数のヘッドでそれぞれのトラックを書き込むようなシステムだと、トラックごとに時間軸でズレているというものもある。

 例えば映画フィルムなら目で見てわかるから手切り編集もそんなに難しくなさそうな気がするけど、磁気テープってどうやってタイミングを決めるんだろう? 「ここ!」って場所で再生を止めて、その時のヘッドの位置で切る、とか?

 アナログ磁気テープだとダビングするたびに音質が劣化していくから、磁気テープを物理的に切り貼りして編集するのは劣化防止である程度有効な気もするけど、デジタルデータの場合はダビングしても音質が劣化しないのが特徴だから、わざわざ手切りしなくてもなぁ、という気がするのだが。最初の頃は編集機材のコストが高いから、従来のアナログテープと同様の方法で編集したかった、ということなのかな。



https://www.jstage.jst.go.jp/article/itej1997/52/8/52_8_1179/_pdf/-char/en

 ソニーでCDの開発に関わった人の話。

 ベータマックス用PCMアダプタをなかば不完全な状態で発売して膨大なクレーム処理に追われ、そのおかげでデジタルデータの誤り訂正を評価するのに必要なデータを得て、CDに活かした、という感じらしい。付け焼き刃のソニーの技術陣はフィリップスの足元にも及ばないレベルだったが、誤り訂正用のシミュレーションだけはソニーの強みだった、と。



https://www.jstage.jst.go.jp/article/itej1978/33/1/33_1_2/_pdf/-char/ja

 1978年。PCM録音の説明。

 最初に従来のテープレコーダーとの違いやPCMの特徴について。磁気テープは磁気特有のひずみやアナログ特有の情報の劣化がある。デジタルデータならそれを除いたクリアな信号が得られる。

 低振幅の信号を入れたときの説明とかも。振幅が1bitの正弦波を突っ込むとデジタルデータ上では矩形波になるから大量の高調波が生じる、みたいな話。

 中盤に符号化やデータ圧縮の話。エントロピーとかの解説が色々。ただしPCM録音はどんな波形が入ってくるかわからないから、圧縮率は稼げない(アーカイブデータなら統計的に圧縮できる)。

 シャノン限界に軽く触れて、VTRなら理論的には30Mbpsで保存できる、PCM記録なら40-60チャンネル、圧縮を併用すれば150チャンネルを記録できる、と。現状は1桁低いのでまだまだ改善の余地がある。

 PCMは走行系のジッターが消える(バッファメモリで吸収できる)から、そのあたりがアナログ記録と差別化できる。手切り編集が難しいという声があるが、コピーによる劣化がないから、コンピュータが発達すればより高度な編集が容易になるはず。

 アナログ録音は技術的に飽和していて、今後の大幅な低価格化も望めない。デジタルは集積度の向上(小型化)や低価格化がしばらくは続くはず。将来的には家庭にもデジタル化した音が届くようになる。半導体メモリや磁気バルブの小型化・低価格化傾向を考えると、遠くない未来には「固体デジタルレコーダー」「固体レコード」が出現する可能性もある。


 固体化レコード、そもそもレコードは固体だろうという気もするけど(ひねくれた考え方をすればレコードやCDみたいな高分子材料は液体であるということを否定できない可能性はあるけど)、ここで言う固体化というのは機械的な可動部を含まない、ソリッドステートな半導体を指しているんだろう(大抵の文脈ではそういう意味だろうけど)。iPodも最初はメカニカルドライブを内蔵していたし、完全に固体化したのは結構時代が下ってからという感じがするな。iPodの前にも数十MB程度の固体化オーディオプレイヤーが市販されていたとはいえ、競争力を持って普及していたかというと微妙な気がするし。



https://www.jstage.jst.go.jp/article/itej1978/33/1/33_1_32/_pdf

 1978年。PCM録音に関する座談会の文字起こし。


 歴史的な背景。

 SPレコードは3分から5分くらいで、演奏を直接レコード盤に記録するダイレクトカッティングをやっていた。このくらいの時間なら奏者や技師への負担も少ないが、LPレコードの片面15分(両面30分)くらい録音できるやつが出てくると、失敗が許されないダイレクトカッティングの負担が大きくなった。

 同時期にテープレコーダーが開発されたので、一旦これに収録し、編集などを行ってからレコード盤をカットする方式が生まれた。LPレコードというのはテープレコーダーが生まれたから実用化できた。

 ただ、そのうちにレコード盤を聞いてもテープレコーダーの特性が聞こえるようになってきた。テープレコーダーの音質が悪いので、レコードもそれでリミットされる。試しにLPにダイレクトカッティングをやってみると音質は素晴らしいんだが、なにせ録音が大変で実用にならない。

 ちょうどその頃にNHKのPCMレコーダ開発が一段落したので、試しにその機材で録音してレコードを切ってみると、かなりいい音がする。これがレコード盤にPCM録音が使われたきっかけではないか。


 そもそものPCMのきっかけ。FM放送を実験放送から本放送に切り替える際に、音質劣化の原因探しが行われた。やはりテープレコーダーが問題ということがわかり、その対策が必要になった。テープレコーダー自体の改良と並行してPCM録音の開発も行われた。

 PCMを担当した人はオーディオテープの前はビデオテープもやっていて、テープの品質についてもある程度知っていた。結局、エラー対策を重点的に開発することになった。音質の評価というのはえてしてバラバラな結果が得られるが、PCMでは珍しく一致した意見が出て、開発を進めることになった。

 将来的には録音から編集、中継、放送、再生までエンドツーエンドでオールデジタル化を目指していた(結局、日本のラジオ放送のオールデジタル化が現実的に実現したのはradikoとかが出てくるまで時間がかかったな。アナログ放送も(そろそろ廃止が始まるとはいえ)まだ現役だし。デジタル放送の規格としてはISDB-T SBとかもあったけど、普及しなかったし)。


 ヨーロッパにPCM機材を持っていって録音したときに、現地のエンジニアはPCM(映像信号の同期の隙間にデータを入れる)を理解してくれない。向こうはオーディオ屋はオーディオ専門だから、テレビ技術がわからない。日本の会社は一人が色々な分野に動いて、技術の流用がやりやすいのかも。

 FM放送にPCMを使う実験を行った。東京でも音質向上は明らかだが、特に地方への影響が大きい。中継回線で音質が劣化するから、距離で劣化しないPCMで放送すると明らかに良くなる。夜間のテレビ放送を行っていない時間帯に回線を借りてPCMビデオ信号を伝送すれば、地方でも1日8時間くらいはPCMを放送できるはずだ。放送側はDACだけあればいい(ADCはいらない)から、機材の価格は半分で済む。


 将来構想の話が面白いな。バブルメモリが安くなればこれで行けるんじゃないかとか。さらに未来で信号処理系はものすごく小さくなって、巨大なスピーカーだけになるんじゃないかとか。21世紀になるとデジタルになるだろうけど、またその次にアナログが来るんじゃないかとか。

 デジタル技術は3年くらいで形になる。アナログ技術は10年はかかる。ノウハウも色々必要になる。技術者としてはデジタルよりアナログのほうが面白い。

 PCMはテープレコーダーの特性の悪さから逃げた結果。テープレコーダーの特性が改善されればまたアナログに戻るのではないか。

 というところで終了している。


 カセットテープは(まだ生きながらえているとはいえ)ある程度衰退して、デジタルのCDもほとんど衰退して、残ったのは完全に固体化したサブスクとアナログのレコードという状況の現代から見ると、半世紀前の話も面白いな。結構当たってるところもあるし、外しているところもある。当時は大容量の固体メモリといえば磁気バブルメモリしかなかっただろうし、フラッシュメモリとか、あるいはユーザーに対して1本1本回線を引いて要求されたデータをリアルタイムに飛ばすなんて夢のまた夢だろうし。/* サブスクの向こう側はまだまだHDDとか、機械的に記録している媒体だろうから、完全に固体化してると断言していいのかはともかく */



 Digital audio needed videotape to be possible - and the early days were wild! - YouTube

 家電とかの仕組みを解説しているチャンネルの人がソニーのPCMアダプタを説明している動画。

 海外の人が日本で作られた技術の詳細を探そうとすると結構大変なんだな。Google Patentsで特許情報を探すとかしないと見つからないらしい。日本人が探そうと思えばjstageで適当に探すなり、あるいはGoogleでPDFファイルを指定して検索すれば結構色々出てくるけど。まあ、我々も英語圏で開発された技術を探そうとすると苦労するからな。言語が違う場所で生まれた情報を探すのは大変よな。


「なぜこのような製品が存在しているのかわからない。ラジオを録音するには明らかに過剰だし、その他の用途にしてもカセットテープで十分なはずだ」(意訳)

 確かに。そう言われると民生用でわざわざ統一規格まで作って商品化した理由って何だったんだろう? PCMオーディオが書き込まれたビデオテープのプログラムが発売されていたとかならわからないでもないけど。あるいは、だから普及しなかったのかもしれないけど。


 面白いコメントがあった。かつて放送局のエンジニアでこの手の機械を使っていた人だそう。デジタルオーディオは映像チャンネルに記録されているが、オーディオチャンネルにも同じ音声を入れておけば、PCMアダプタが無い環境でもそのビデオテープに保存されている音声を聞くことができる。うまくやればPCMアダプタ無し(通常のビデオ編集環境)でもデジタルオーディオの編集作業ができたらしい。

 あるいは、コンサートを録音する際に、演者側の音をデジタルで記録し、観客側の音(歓声とか)をアナログで記録する、というような使い方もあったらしい。

 多くの登録者数を抱えているチャンネルが古い技術にフォーカスした動画を作ると実際に使っていた人たちがどんどん湧いて出てくるから面白いな。



 元々PCMレコーダは、アナログ方式のマスターデータがレコードの音質を制限するようになってきて、マスターデータを高音質で管理するために作られたんだそうだ。ってことはアナログレコードも結局はデジタルデータなんだな。後年はともかく、初期は48kHz16bitを使っていたっぽいし、結局アナログレコードってCDをレコードに焼いただけってことになりそう(当時も業務用PCMはもうちょっとsps高いらしいけど)。あるいは、CDはアナログレコードに焼く前のマスターデータをそのまま販売しているということになる。なんか気づいちゃいけない世界の真実を見つけた気分だ。



 PCMアダプタの信号がビデオ信号の形ならfl2kで生成もできるだろうし、44.1kHz16bit2chのWAVデータをPCM用のデータに変換するのも容易だろうけど、今の時代にPCMアダプタの存在自体がな…… 古い家電(オーディオ機器)のコレクションをしている人なら自分で持ってるPCMアダプタでアナデジ変換すれば済むし。中間にアナログを含まない完全なデジタルのオーディオファイルを作りたい場合はPC側で作れれば便利かもしれんが。

 ビデオ信号とはいえ映像信号ほど厳密に処理する必要もないから、STM32F4くらいでもデコードできそうだけどな。ADCでPCMフォーマットをI2Sに変換するアダプタくらいなら作れそう。じゃあWAVを直接I2Sで出せばいいだろう、という話ではあるけど。


***


 前回のNTSC映像信号で色がくすんでいたやつ、クロマの振幅がかなり低かったのが原因だったので、適正な振幅へ設定。


 適当な写真を変調。IQはそれぞれ1.5MHzのVBSと0.5MHzのAM。



 FIRの遅れがあるので、それに合わせて表示エリアを左にオフセットしている。

 色合いが若干違うのと、まだ褪せた感じになる。ただ、画質は「そうそう、NTSCってこんな感じだよね」に近くなった。LPFを外すと輪郭がパキッとしすぎる。左右端はフィルタのリンギングが若干出ている。水平同期のブランキングエリアはちょうどぴったり、垂直同期は下が少し狭くて上がかなり狭い、という感じ。おそらく16:9用に調整しているんだと思う。


 実数空間で計算するならSystem.NumericsのVector3やMatrix4x4で処理したり、ベクトル積の水平加算は内積で計算できるから、それを使うと便利。複素空間で処理しようとするとだいぶ面倒だけど。

 Matrix4x4、左上から右側に並ぶんじゃなくて左上から下側に並んでるのがちょっとキモい気がする。単に不慣れだからなのかもしれないけど。



 YIQのFIRの周波数特性

 Yは左右非対称のVBS(-0.5 - +3.5 MHz)、Iも左右非対称のVBS(-1.5 - +0.5 MHz)、Qは左右対称のAM(0.5MHz)、といった感じ。FIRの後でIQは33度傾けてUV平面に回転したあとに、fscをかけて+3.58MHzの位置に持ち上げる。もうちょっと急峻なフィルタを作っておいたほうが良さそうな気もするな。

 FIRは複素フィルタ3本だから計算コストが結構きつい。仕様が固まってガッツリ最適化することになれば並列で回すとかもできるけど、今はシングルスレッド処理だからそこそこ時間がかかる。時間がかかると、デバッグが不便。。。



 適当なテスト画像が欲しいんだけど、いまいち良い方法が思いつかない。色的にも空間的にも広いスペクトルを持った画像ってなかなか無い。


 NTSCの映像としては最低限見れるようになって、少なくとも色相が90度ずれているというほどではないけど、いまいちちゃんとした色合いにならない。もうちょっと根本的に理解してからコードを書き直したほうが良さそう。


 試しにベクトルスコープのレチクルを作成。なんか前にもやった気がするなぁ。確かSTM32F4でNTSCのサンプリング(1フィールドのキャプチャ)とかだった気がする。

 少しずれるけど、おおよそいい感じの位置関係は得られている。ということで、この画像を作成するための計算式を理解して、RGBをNTSCに変換するコードを考えるのが、次の作業。

 バーストには75%と100%に2個ずつドットを打ってある。片方はセットアップレベル7.5%(アメリカ仕様)、もう片方は0%(日本仕様)の位置。7.5%の方が近い。fscの変調レベルって白-黒レベルに合わせなきゃいけないんか? なんでそんな七面倒臭いことを。。。



https://www.jstage.jst.go.jp/article/itej1954/9/3/9_3_100/_pdf/-char/ja

https://www.jstage.jst.go.jp/article/itej1954/9/4/9_4_130/_pdf/-char/ja

 NTSCの色信号について、上が理論寄り、下が実際の機器の話題。

 色は2次元空間で、極座標で表現すれば色相と彩度がある(実際の色情報は輝度を含めた3次元空間)。ただし人間の目は対象物の物理的な大きさ(視直径)によって色の2次元平面を見分ける感度が変わる。十分に大きな物体は2次元的に分解できるが、どんどん小さくなると応答が楕円形に潰れて、2次元でなく1次元にしか色を分解できなくなり、さらに小さくすると0次元に、つまり色を分解できなくなる。

 NTSCでは小さいものまで分解できる方向(赤・シアン軸)をI軸に、ある程度の大きさで分解できなくなる方向(青・緑軸)をQ軸に割り当てて、それぞれ異なる帯域幅で変調する。これがIQ平面。あと、直交変調するときに両方が単側波帯(残留側波帯?)だと分離できないから、片方は両側波帯で送る必要がある、という理由もあるらしい。

 このIQ軸はRGB空間では直交性が悪いので、放送する際はR-YとB-Yで直交する座標(比較的簡単な回路でRGBが得られる軸配置)に変換する。これがUV平面。結局は座標回転でしかないけど、とはいえ33度の遅延素子を各テレビに入れてそれぞれを調整させるよりは、放送側で作るほうが安く済むんだろう。


https://www.jstage.jst.go.jp/article/itej1954/29/10/29_10_760/_pdf

 1975年。色々なテレビ信号の仕様とか。かなり細かく列挙されてる。主に映像信号だけど、AFやRFにも軽く触れてる。


https://www.jstage.jst.go.jp/article/nictkenkyuhoukoku/22/118/22_135/_pdf

 1976年。RRLの放送衛星を使用した時刻比較の提案。

 標準電波を使用した場合は1ms程度の精度。それ以上は伝搬特性の不安定さで制限される。

 放送衛星は日本国内の大部分で大電力で受信でき、受信装置も全国各地に配備された装置で可能(この当時はまだ直接放送衛星は打上げられていないはず。たとえばBSE(ゆり、本州で1.6m程度のアンテナで受信できる)の打上げは'78年)。

 衛星との位置関係が問題になるのはGOESタイムコードと同様(GOES TCは'74年あたりから運用が始まったGOES(米静止気象衛星)を経由して時刻を配信したシステム)。衛星位置と地上2地点の距離差の計算式も書いてある。

 GOES TCは地上から上げた不定期な時刻(平均的な伝搬時間は補正済みのはず)を必要に応じて受信側で補正する方式のはずだけど、RRL方式は衛星放送で配信されている時刻をRRL鹿島で受信し、その時刻を引き込んでいくようなフィードバックで、受信側は距離差分を補正して時刻を決める。

 鹿島を基準にすると、稚内や沖縄では2,3ms程度の時間差があるが、テレビのフレーム周期は33ms程度なので、アンビギュイティ無しに時刻を決定できる。10us程度は比較的簡単に達成できる見込みかな。もう少し手間を掛ければ0.5us程度までは行ける。

 やはりというか、アメリカ(GOES TC)のほうが一日の長があるな、という感じはする。こういうシステムって実際のところ運用されたんだろうか? それともその前にNNSSとかGNSSとかが出てきたんだろうか。放送衛星の場合、放送に影響を与えないようなシステムであるとか、あるいは放送法との兼ね合いもあるから、あまり自由にデータを乗せることはできない。GOES TCはDCPインテロゲーションを使っているから、DCPIを使うユーザに対してそれを受信できるシステムを構築させる必要はあるけど、とはいえ比較的自由にいろいろ情報を載せられるから、最初にしっかり規格を作って普及させてしまえばあとは好きに運用できる利点はありそう。DCPIだってうまく互換性を持たせておけばそれ以前の機器でも読み捨てれるようなパケットは作れるだろうしな。



 RS-170A NTSC映像信号のカラー化される前の規格って何と言う名前だったんだろう、と気になってたんだけど、これはRS-170というらしい。オリジナルの白黒映像がRS-170で、それをカラー化したものがRS-170A。ただしA版はあくまでも暫定仕様であって、正式なものではない。正式なカラー信号はEIA/RSではなく、CCIR System-Mとして国際規格で指定されている。

 10年以上前に電子工作をやっていた人間だとRS-232Cは結構馴染み深いはずだけど、どちらもEIAのRecommended Standard仕様。


 Help me find a copy of the original EIA-170/RS-170 and RS-170a (NTSC video) standard documents : r/VIDEOENGINEERING

 1,2年前にRS-170のオリジナルのドキュメントを探している人のスレ。技術史的に重要な仕様書なのに、オリジナルは著作権がかかっていて有料で販売されていたからオンラインのアーカイブにも残っておらず、監理団体(EIA)もすでに解散しているから正規ルートで購入することもできない。だれかスキャンしたPDFを持ってない? というような話。

 技術史として重要なのにドキュメントが残ってないものってのはたくさんあるんだろうなぁ。


2025年11月26日水曜日

小ネタ


 白っぽいルナのデザインいいなー。色合いが変わったせいかだいぶ雰囲気が変わった気がする。

 はたから見てると運営型ゲームは一人のキャラクターでもいろいろなデザインが出てくるから面白いな。自分で遊んで課金して入手しようとすると大変だろうけど。


 ルナって公式プロフィールだとハッカーと紹介されてるけど、あんまりイメージがないな。クローやギズモは明らかにハッカーだろうという見た目だけど。コンパウンドボウを普段使いしていたり、アウトドア寄りなイメージ。薄暗い部屋でパソコンをカタカタしてるようなステレオタイプなハッカーの雰囲気ではない。




「ロケットの打上げに成功しても、ペイロードの分離に失敗したら、それはロケットを軌道投入しただけ」

 いい表現だな。



 A Complete Guide to Customising Your HX50 - YouTube

 底面には3x3=9箇所のマウントがあって、色々吊れるんだそうだ。カーゴフックをつけたり、緊急用のフロートをつけたり、もちろんカメラやLiDAR、スプレー(農薬散布とか?)みたいな普通の外付けペイロードも可能。カーゴフックを追加するとモニタリング用のカメラも追加されて、メインモニタに表示できるようになるそうだ。

 あと、ローターの折りたたみ機構もあるらしい。ブレード1枚が固定、2枚がフォールディング可能、という構成かな? パイロットが自身で5-10分程度で動かせるとのこと(整備士に頼まなくていい)。

 Hx50って単なる移動手段を作ってるんだと思ってたんだけど、色々使えるように作ってるんだな。

 撮影用のジンバルやらカメラを吊った状態で140ktで飛べるとも思えないけど、とはいえ普通のモータースポーツならそれより十分に遅い速度がほとんどだろうし、空撮みたいな業務でも普及するのかもな。あるいは機体が普及すれば、通常のヘリよりは早いけど固定翼機ほどのパワーは無い、こういう機体用に空力を考えたポッドが開発されるのか。マウンティングポイントが複数箇所あるなら、一番前にカメラを付けて、後ろの方にダウンリンク用のジンバルをつけて、みたいなことも容易だろうし。スプレーをつけれるならある程度横に張り出してもいいだろうから、衛星リンクとかも伸ばせるだろうし。外付けが増えればその分速力は下がるけども。あんまり高さに余裕がないから大きなジンバルを吊るすとカメラを地面に叩きつける怖さがあるけど、かといって横に伸ばすと撮影の自由度が下がるしなぁ。

 現代に新設計したヘリとして色々通信機能も乗ってるんだろうけど、さすがにStarlinkとかは乗っていないはず…… どうだろ、載せようと思えば載せれそうだな。キャビンやテールブームも全部炭素繊維だろうし、スキンも構造として使っているだろうし、ユーザーが改造しようとすると結構面倒かも。それこそローター折りたたみ用のサポートが入っている蓋を改造するとかすればいけるかもしれないけど。安全に使いたいならメーカーオプションに期待かな。

 Starlink側としては、現在のところヘリコプター向けの純正オプション(書類仕事の簡略化とか?)は用意していないけど、「載せたいならMiniが便利だと思うよ」とのこと。Cirrusの中でStarlink Miniを使っている動画はあったけど、R44とかに載せている動画は見当たらなかった。外皮はアルミだろうし、機内に乗せるのは難しそうだ。かといってダウンウォッシュをもろに浴びる場所に平面アンテナを乗せるのも大変だろうしな。



 石神、「ゲームが下手です」とか自己紹介してるくせに、最近のダッコフ見てるとどんどん上手くなってきてるな。見下ろし型PvEだから精神的に余裕があるとかもあるのかもしれないけど。バイオで終盤を再走したときも上手かったし、初見じゃなければ上手い。

 たぶんPvPでもちゃんと勉強したうえで慣れて余裕が出てくれば強いんだろうけど、APEXのときみたいにフィーリングで上手い人と組むとちょっと難しそうな気もする。タルコフとかやってるの見たいけど、でもタルコフって他のゲームと比較にならないくらい覚えることが多そうだからなー。



 フライトシム専用コントローラー「Echo Aviation Controller」発表。ゲームパッドにギュッと凝縮、スロットルもペダルも“全部載せ” - AUTOMATON

 デザインはセスナスカイホークを意識したような感じかな。

 左上のハットスイッチ(メキシコのソンブレロと呼ばれる帽子に形が似ていることから「ハットスイッチ」と呼ばれる)は、個人的にはトリムスイッチに使いたい感じがするけど、視点移動用のアナログスイッチらしい。エレベータートリムは右側にホイールがついてる。普通のジョイスティック(机において使うようなやつ)は視点操作用のアナログ入力が無いことがほとんどだから、それ用のアナログスティックがあるのは便利そうだ。操縦と視点が競合しているのが操作しづらそうではあるけど、DCSとかで使うのでなく、MSFSで遊覧飛行するくらいなら問題ないのかな。


 ラジコン飛行機とかドローンの欧米の操作系が右スティックでピッチ・ロールを制御する原則に従えば、この手のコントローラーも右側にピッチ・ロールがあって、左側にその他の制御や視点操作があっても良さそうだけどな。と思ったけど、スカイホークとかで片側に操縦桿があるコンフィグって、パイロットは左席で、左手で操縦桿、右手でその他の操作、なのか。大型の航空機でも機長は左側。

 右手で操縦桿を持って左手でスロットルを操作する、って、ヘリコプターとか、戦闘機とか、意外と少ないのかもな。

 とすると、モード2は実機に合わせた操作系だ、という説明は、ヘリコプター(含ドローン)に対してはある程度正しいけど、航空機全般でいえば、あまり正しくないのか。2人で操作できる航空機の場合は右側に座れば右手で操縦桿を握ることになるとはいえ。あるいは、もう一回り小型の機体、例えばパイパーカブみたいな前後配置だと右手で操縦桿、左手でスロットル、みたいな感じになるか。


 パイパーカブって1947年に生産終了してるんだな。もっと最近まで作ってたものだと思ってた。10年間で2万機も作ったのかよ。



 Ubisoftが生成AI実験プロジェクト「Teammates」を発表。AIチームメイトと“四人五脚”でともに戦うFPS、音声コミュニケーションにも対応 - AUTOMATON

 シナリオ・ソロプレイのFPS/TPSが好きな僕としては期待したい技術ではある。とはいえ、声で指示ってのは結構難しい気がする。一人で遊ぶのが好きな人が遊ぶゲームじゃなくて、普段からボイチャを繋いでマルチプレイを遊んでいる人をソロプレイ側に引き込むゲームのような感じ。でも結局AIに指示するより友達とボイチャつなげて遊んだほうがマシ、PvEをやるよりPvP(or PvPvE)のほうが楽しい、みたいな感じになって廃れそうな気がする。



 Loose Wire on Containership Dali Leads to Blackouts and Contact with Baltimore’s Francis Scott Key Bridge

 昨年3月のボルチモアでのコンテナ船が橋に衝突した事故の報告。電線へのマークチューブの挿入が不適切で、それが原因で端子台へ適切に挿入されず、経年劣化で抜けたことにより推進と操舵の制御が失われた、という感じ。

 巨大なコンテナ船からすればマークチューブ一つなんてほとんど存在感のないようなものだけど、そんなものでも一つ間違えたら大惨事になるという実例。



 Amazon.co.jp: ペリー提督日本遠征記 上 (角川ソフィア文庫) eBook : M・C・ペリー, F・L・ホークス, 宮崎 壽子: Kindleストア

 Amazon.co.jp: ペリー提督日本遠征記 下 (角川ソフィア文庫) eBook : M・C・ペリー, F・L・ホークス, 宮崎 壽子: Kindleストア

 キリスト教国が捕鯨船の拠点となる植民地を欲して、現地法を大砲で破壊して回った記録なので、読んでてあまり気持ちの良いものでもないけど。まあ、帝国主義なんてそんなものよな。

 最後の解説で、当時は戦争で土地を得るか植民地化して支配下に置くのが常識だから、直接的に武力を使用せずに条約を交渉した日本は珍しい、みたいなことは書いてあるけど。

 文章量はかなり多いし、たまにセールでも売ってるので、内容を気にせず読むものが欲しいという場合はコスパはめちゃくちゃいい。文章量が多すぎて読み直す気にならないから、2周目以降も楽しみたいって場合はコスパは悪いかもしれんが。まあ、つまらない内容の1周しか読まないやつに比べればコスパは良い。


 下巻ではKindle PWのバグ?で挿絵が全部ブランクページになっていたのを気が付かず、やけにブランクページが多い本だなー、とか思いながら読んでた。解説とかも全部読み終わってから試しにシークしてみたら画像が表示されるようになった。


 交渉周りの話はともかく、冒険譚みたいなところは『宇宙のランデヴー』っぽい感じがある。軍隊が組織としてゴリゴリ進んでいく感じが似ているのかな。





 Python風のコードを書いてドローンを制御して農作業を自動化する感じのゲーム。

 基本的には放置ゲー。


 迷路を解いて遊んだりとか

 といっても、とりあえず左手法をガリガリ書いただけなので、処理効率はかなり悪いけど。

 リファレンスを見た感じ、配列やスタック等ある程度の機能はあるっぽいから、マッピングしたりして効率的に迷路を解くようなコードも書けそう。とはいえエディタの使いづらさがネック。


 コードは %userprofile%\AppData\LocalLow\TheFarmerWasReplaced\TheFarmerWasReplaced\Saves\Save0 に.pyで保存されているから、それを見ればゲーム内で書いたコードを見れる。外部のエディタで書き換えたい場合は、ゲームのオプションからファイルウォッチャーを有効にすれば、わずかなタイムラグでゲーム内に反映される。ただしオートセーブが無効になるのと、外部で書き換えても結局実行はゲーム内で指示する必要がある。

 どういう原理かわからないけど、VS Codeで開くとゲーム内の定義も補完できるようになるし、ドキュメントもオーバーレイされる(英語だけど)。謎い。ゲーム内だとまとめてインデントを変えるのができないけど、VS Codeならそういう作業は問題なく可能だから、ループのネストを変えたいときとかに便利。ゲーム内インタプリタは複数行コメント(三連引用符とか)を認識してくれないけど、VS Codeとかなら複数行にまとめて#を突っ込んだりもできるし。quick_printに辞書を入れたらちゃんと出力してくれるし、JavaScript的な雰囲気(外部のエディタで書いてブラウザを再読込してデバッグ表示を読んで、みたいな感じ)だと考えればわりと開発しやすい気もする。操作性はあまり良くないけど、ブレークポイントで止めて変数の値を見たりとか、デバッグ用の機能も最低限あるし。

 ある程度ツリーを解放していくと複数のドローンを使えるようになるけど、インスタンス化する際に関数ポインタを渡す必要があるから、そのドローンに引数を渡すような操作はできない。引数のバリエーションが少ないならラッパーを被せるとかでもいいのかもしれないけど。せめてプロセス間通信が欲しいなーという感じがある。並列処理が結構難しい。


 このゲーム、結構ナメてたけど、スキルツリーをある程度解放しようとするとちゃんと効率的なアルゴリズムを考えたり書いたりする必要があって、だいぶ教育的。ただ、僕はC#で多少なりともプログラミングの経験があるからそれなりに最低限動く程度のコードは書けるけど、全くプログラミングに触れたことがない人がこのゲームを初めて自分でアルゴリズムを考えたり、あるいはプログラミングが上達するかというと、微妙な気もする。かといってこのゲームを題材にしたプログラミング入門の本を書いたとしても、写経するだけになるだろうしなぁ。


 そういえば、DJI Telloって昨年末に再販してたような気がするんだけど、今見たら日本からは買えないっぽい? その時期を指定してググっても全く記事が出てこないのだが、そもそも再販してない?



 海外で売ってるストゼロ、アメリカでも-196°Cって書いてあるのはなにかブランド戦略があるんだろうか? -320℉のほうがキリが良いんじゃねって気がするけど。セルシウス度のほうが海外から入ってきたモノってわかりやすいからみたいな理由があるんだろうか。



 数十年前くらいの庶民の間では手書き文字が基本だった時代は、漢字を好き勝手に改変したり作ったりが容易だっただろうけど、オリジナル漢字を作っていた人ってどれくらいいたんだろう? 最近はUTF-8に含まれている漢字しか使えないみたいな場合が多いし、UTF-8に含まれていてもフォントに含まれているかどうかという問題もあるし、気軽な創作漢字は難しそうだ。一応Unicodeもいくつかの文字を組み合わせたりとかはできるけど、任意の場所に配置したりはできないからな。

 むしろUnicode(UTF-8)で自由に文字を組み合わせられる命令系統が作られると面白そうな気もする。特定の文字のXY座標とXYスケール、あとは回転もあると便利か。特定の文字コードで組み合わせる文字数を指定して、それに続くコードでXYUVRと文字コードを指定して、それを組み立てて1文字として表示する、みたいな機能。

 創作漢字以外にも、1文字だけそれに入れて上付き文字や下付き文字を作るとか、あるいは㌖みたいな文字を好きに作れるし、わりと便利な気もする。キロメートルだと6文字に対してXYUVRが追加されるからデータ容量はかなり増えるけど、とはいえ今どきバイト数で数えて切り詰めなきゃいけないなんて状況もほとんどないだろうし。


 試しに適当なアプリを試作

 とりあえず、感嘆符で囲った範囲を組み文字用のスクリプトとして認識して、5文字で座標・回転・スケールを指定する感じにしてみた。調整の必要あり。今のところすべて手打ちする必要があるので面倒くさいけど、わりと楽しい。大きさの指定は1/Nなのでかなり自由度が低い。あとは、文字の太さが自動調整されるから字面がちょっと。

 ただ、あくまでも既存の文字を組み合わせるだけだから、その枠に収まらない漢字を創作しようとすると機能が足りない。

 今回は固定長命令セット(部品1文字を6文字で表現)で組んだけど、それにこだわらないなら、例えば5次元を実数で指定すればもっと自由に設定できる。

 適当なスマホ向けアプリでピンチ操作とかで好きな場所に文字を配置できるようなアプリとかがあると面白そうだ。あとは指で書いた形に近い文字を探す機能とか。そういうアプリは探せばありそうだ。



 Glyphica Typing Survival、DPS系以外の実績は全解除。3言語は結構解除率低いかと思ったら、それでも0.4%なんだな。ヨーロッパあたりだと解除しやすいとかあるのかな(自分は日本語+英語+英語(UK)で解除)。解除した中で率0.1%の実績は2つともプレイ時間で解除できるタイプのもの(例えば総計5万単語の入力)だから、難易度はあまり関係ない。それらを除くと、3言語が一番率が低いのかな? 各武器のDPS達成もたぶん達成率低いと思う。どうやったらDPSを稼げるのか全く想像がつかない。セントリーは要求500に対して現状452.3だから1割ちょっと増やせれば達成できるけど、それが難しい。低難易度で長時間やって途中で拾えるアップグレードを稼ぐか、高難易度で最初のアップグレードを入れてDPSを稼ぐか。



 あんまり大きな声で言うと部外者がガタガタ言ってんじゃねーぞと怒られるのでぼかして言うけど、某ロボコンの地方大会、最高得点を出したチームは300点台を出して、それ以外のチームは最低限の移動ができれば得られる10点とかで決勝進出をかけてるの、はたから見たら面白くねーなー、って。やってる人たち(学生)からすれば参加に向けてチームで頑張ることに意味があって結果は重要ではないのだ、ということなのかもしれないけど、だったらちゃんと動くものを作るほうがチームワークを育むうえで重要なんじゃない?って気もするし。

 今大会のルールでは最初に得られる15点の次が200点とか300点で、線形性が悪すぎる(そもそもルールが悪い)って部分も大きそうだけど。移動したら何点、物を掴んだら何点、物を置いたら何点、ミッションを達成したら何点、みたいに細かく点数が刻んであったほうが見てて面白そうな気がする。それを数える審判や実況する方は大変だろうけど。運営がルールを作って審判を集めて自分たちで実況するから、得点計算や実況が楽なルールを作るインセンティブはありそうだな。

/* NHKの某改造番組も、出場者の「外から見てるだけのやつがガタガタ言ってんじゃねーぞ」を聞いてから見なくなっちゃったなー。まあ、最初からMC陣が騒いでいるのが好きじゃなかったというのもあるけど */



 NTSCクロック系のオーディオシステムって無いんか?と思ってぐぐってみたら、44.1kHzってアナログテレビ放送(モノクロ)に由来してるんだな。

 白黒映像の水平同期周波数(fH)15.75kHzに対して、15.75*14/5=44.1の関係。ただしこの映像信号をカラー化したNTSCではfHが約15.7343kHzと0.1%低く変更されたから、それに合わせて約44.056kHz系もあったらしい。もっとも、後には44.1kHzに統一されたようだが。

 44.056kHzの音声信号を例えば14.318182MHz(4fsc)にするには単純に325倍すればいい。これが1fscとか2fscだともうちょっと複雑なことになる。44.1kHzをこれに入れると再生速度が0.1%低くなる。



http://www.nahitech.com/nahitafu/mame/mame6/voltage.html

 ビデオ信号の伝送路、ビデオアンプから75Ωで出力して、0.1uFでAC結合して同軸ケーブルを経由し、また0.1uFでAC結合して75Ωで終端。同軸ケーブルの中が電気的に浮いているけど、この部分の帯電とかって問題にならないんだろうか?

 そういうのが問題になるような用途なら1MΩとか10MΩで引いておくし、そういうのが問題にならない用途なら浮かせたままだし、みたいなことなのかな。


 Ethernetのパルストランスも、中間点を引っ張ってはいるけど、4ペアをそれぞれ75Ωでまとめているだけで、GNDに対しては1nFでAC結合しているから、Ethernetケーブルも通常は浮いているはず。Ethernetの場合は機器間でGNDをループさせないように意図的に浮かせているんだろうけど。

 それで言うとPHY側も中点をGNDにAC結合だから、チップ側も浮いているはず。もっとも、PHY側は差動をGND付近(特に負電圧)で受け取らないように適当なインピーダンスで中間電圧に釣ってあるはずだが。

 MIL-STD-1553のコントローラーだと3.3V単電源でトランスの中点をGNDに固定していたりするから、チップ側でうまいこと工夫すれば単電源でも負電圧は問題ないのかもしれないけど。あるいは、飛行機用の半導体じゃないと許容できないくらい高コストな可能性もあるけど。



https://www.jstage.jst.go.jp/article/itej1978/34/4/34_4_269/_pdf

 FMラジオとテレビ放送の、それぞれのステレオ放送の規格の説明とか。


 アナログテレビ放送の音声信号って普通のFM放送と近しいものだと思ってたけど、結構違うらしい。基本的に各国のテレビ放送で互換性はなくて、それぞれに独自の方式を開発。ただしアメリカはFMステレオ放送と同じような方式を採用しているらしいが。

 日本のアナログテレビ放送(映像信号)がアメリカのそれとほぼ互換なのはアメリカが決めた仕様を容易に日本で再使用するために設定されたわけだけど、カラー放送はともかくとして、その後になるとだんだん日本の独自技術を使うようになってきたらしい。そもそも音声多重化(ステレオ多重or副音声多重)は世界に数年先駆けて日本が早期に実用化したものだそうで。

 元々の音声多重化放送は、様々な言語が話されている欧州で生まれたものらしい。日本では東京オリンピックの時に、選手村で使いたいということだったようだ。おそらく日本語と英語とかを多重化したかったのだろう。ただ、東京五輪には間に合わず、デモンストレーションというか実験的に運用したのみ。その後、大阪万博で使いたいということで実験等を行っていたようだ(当然だが、ここで言う東京五輪とか大阪万博はここ数年のものではなく、数十年前のやつ)。


 日本のFM-FM方式の場合、ステレオ多重の場合はL+RとL-Rを、副音声多重の場合は主音声と副音声を放送していたようだ。音声多重化に非対応の受像機で受信した場合(もしくは普通のFMラジオで受信した場合)、ステレオ多重時はL+R信号が聞こえ、副音声多重時は主音声のみが聞こえる。識別する回路が必要だし、2種類の多重化方式に対応した受信回路が必要だけど、とはいえ受信側の利便性を考えるとそうせざるを得ないんだろうな。

 副搬送波は2fH、制御チャンネルは3.5fHで多重化して、制御チャンネルに特定の周波数の正弦波が入ると、ステレオ多重または副音声多重を識別できる(それぞれ別の周波数)。制御信号を検出できない場合はモノラルとして復調する。



https://www.jstage.jst.go.jp/article/bplus/2009/11/2009_11_11_60/_pdf/-char/ja

 '64年の東京五輪で使ったテレビ衛星中継設備の話。

 日本から米西海岸へ衛星経由で中継し、カナダやヨーロッパへはアメリカから空輸。競技から遅くとも1日で世界中で放送できるようになった。

 映像信号は同期信号が負極性だが、これを2MHzの正極性に変えてダイナミックレンジを広くしたんだそう(1.4倍改善する)。副搬送波に2MHzを使うので、カラー映像は送れない。その他の工夫も合わせて画質を改善。

 当時用意したアンテナは建設期間短縮のために油圧or電動のAz/El駆動機器が無くて、手動で操作する必要があった(天頂から水平まで1時間かかる)。機器の排熱の中で上半身裸で作業したそうだ。で、いつの間にか「奴隷船」と呼ばれるようになっていたらしい。キャプスタンをぐるぐる回すイメージってこの時代からあったんだな。

 送信用の10mアンテナ、カセグレンだけど、副鏡が左右非対称の3本足だ。この種の配置、某SF作品のネトフリ版で巨大なやつが出てきてたけど、実際に使われてるのって初めて見た気がする。



 古い資料を読んでいると時々遭遇する独特の誤字、たぶん手書きを文字起こししたときに起きるんだろうけど、いまいち自信のないヤツもある。例えば文脈的にRだと思うけどSと書いてある、みたいなのとか。RとSは似てないこともないような気がしないでもないけど、ペンの動き方は結構違う気がするから、崩して書いても結構違う気がする。

 手書きからの文字起こしでよく起きる誤字のデータセット、みたいなものってないんだろうか。OCRの分野とかだとわりと重宝されそうだけどな。とはいえ、読んだ文字を機械で勝手に"修正"していいのかって話もあるだろうし、プリントされた文書をOCRするならそのまま読むべきな気もするし。


***


 ある日の1090MHz

 1200で飛んでいる機体、Mode-S系は無し、Fr24に機影無し。

 M-3/Aで1200やM-CでFL28-33くらいの高度が出ているが、同時にブラケット応答も出ている。


***


 試しに1030MHzを2Mspsで受信して振幅復調、キャリアスケルチで有意信号のみ取り出し。縦軸は任意の単位(今回はADC直読み)、横軸はマイクロ秒。



 2Mspsなのであまり綺麗には受信できない。IFF MK Xの質問パルス幅は0.8usだから、少なくとも4Msps程度は無いとパルスの高さを正しく認識できない。

 このときはFr24には民間機(A320)1機しか表示されていない。結構いろいろなパターンが有る。

 5050付近はモードSインテロゲーションかな。M-S質問は4Mbaud BPSKなので2Mspsでは正しく読むことはできない。/* ダウンリンクは2Mbaud BPPMだから本来は2Mspsで読むこともできないはずなんだけど、ADS-Bデコーダは黒魔術で復調してる */

 5250付近にはパルスが3個出ている。1つ目と2つ目は21us間隔、2つ目と3つ目は2us間隔。モードCとモードSのトランスポンダの両方から応答を得られるインターモードという質問信号らしい。

 5450付近には単発のパルスしか出ていないのが謎い。


 一応、1030MHzを見ていれば、M-CやM-Sのインテロゲーションが出ているのはわかるから、ACAS搭載義務クラスの航空機が飛んでいれば、少なくともそれが存在していることは把握できる。ただ、ACAS質問には自身の情報は含まれていないから、コードや高度を知るには1090MHzの受信が必要。

 1030MHzを2Mspsで受信した場合、インテロゲーションはインパルス信号に見えるから、わざわざ復調せず、単に振幅復調して閾値を超えたらそれを表示する、みたいなシンプルなロジックで処理できるのは利点。雷みたいな自然現象も通知してしまうけど。ACASは1Hz程度で送信を行っているから、例えば10秒間で5個以上のインテロゲーションを受信したら通知する(50マイクロ秒以内のパルスペアは1個としてカウント)、みたいなロジックは作れる。

 ただ、そのためにドングルを1本占有させるのもなぁ……という気もする。


 ACASの動作には、最低限片側がACASに対応していれば、もう一方はM-C応答を返せるトランスポンダを載せているだけでいいので、田舎の空港を拠点にしている小型機(例えば個人所有の機体)はインテロゲーションを出していない可能性が高い。ということで、1030のモニタリングはあまり使えないような気がする。


***


 試しにfl2kでNTSC信号を出力。

 fl2k→ショートスタブでオシロに接続→NTSC2HDMIアダプタ→HDMIキャプチャアダプタという感じにいろいろカスケードで接続されている。


 fl2kからは4fscで出力。


 上がNTSCをキャプチャした映像、下が元の画像。外側のオレンジの部分がブランキング領域(水平方向は1usずれてる)。色はあんまり綺麗に出せてないけど、とりあえず色相は正しい。4fsc8bitで173IREを出しているから飽和度の分解能も低い感じがする。

 上が結構切れてる。このキャプチャアダプタは垂直ブランキングがかなり広そう(下は正しそう)。

 FL2000はVGA用の0.7Vppだけど、NTSCは1.24Vpp程度が必要になる。だいぶレベルが低いけど、今回の場合は黒も白も綺麗に出ている(ちょっと白が飛んでる感じはある)。マトモなNTSCレシーバーなら6dB程度の差であればいい感じに増幅・減衰させてくれるはず。


 今回は試しにYUVのクランプ範囲を1フレーム分テーブル化してみた。それに突っ込む画像はブランキング領域を含むもので、例えば同期パルスはYが-40、UVが0に固定されたり、バーストサイクルではYVが0、Uが-20に固定されたりする。通常の映像領域ではYが0-100、UVが-33 - +33に制限される。こうしておくと、ブランキング領域を分岐で処理したりする必要がなくて、1フィールド分を一重のループで処理できる。

 ただし1重ループでfloatで持っておくと24byte/point、トータルで11MiBくらいの大きさになるので、ジャグ配列を使って同じリミットの場所は配列を再利用している。二重ループが必要になるけど、ブランキングや同期を細かく作り込む必要がない。スルーレートもあらかじめリミットに傾斜を与えておけばいいから、ループの内側で細かい計算をやる必要もない。

 今回の場合、水平走査線は9種類に分けてあるから、192KiB程度と、約60分の1まで削減できる。


 SMPTE75%カラーバー

 ↑元画像

 75%の7本と100%の白だけ。RGBで画像を作ってから渡しているので、I, Q, PLUGEは無し。今回のアルゴリズムでテスト信号を作りたい場合は何か方法を考えなきゃいけない。RGBで受ける以外にYIQやYUVで受けるモードを作ればいいんだろうけども。


 ↑NTSCをキャプチャした画像
 色の並びは正しいけど、やはりくすんでいる。

 ↑NTSCの波形

 あきらかにおかしい。


 RGBを行列演算でYIQに変換して、IQを33度傾けてUVに変換しているけど、このあたりはちゃんと真面目に資料を探したほうが良さそう。とはいえ、半世紀前とか、下手すると'50年代の資料を探さなきゃいけないのでなぁ。。。