2026年4月8日水曜日

小ネタ





 セイコーの時刻同期技術により“GNSSの死角”を解消衛星測位に依存しない次世代位置情報基盤「Chrono Locate™」を建設分野で実証 | セイコーソリューションズ株式会社のプレスリリース


https://www.taisei.co.jp/about_us/wn/assets_cms/pdf/10967.pdf

 浚渫工事で実証しているのが面白いな。重力に縛り付けられた人類は水運から逃れることはできないのだ……


https://www.nict.go.jp/publication/shuppan/kihou-journal/houkoku65-2_HTML/2019S-06-01(05-01).pdf

 Chrono LocateのベースになったのがNICTのWi-Wi(wireless two-way interferometry)という時刻同期技術。まあ、名前からして時刻ベースだろうよ。


 最低4箇所の基地局が必要、みたいなことが書いてあるけど、Wi-Wi(時刻交換プロトコル)ベースなら1箇所の基地局との双方向通信と、追加で2箇所の基地局(主局と精密に時刻同期)からの受信だけでも位置決めできるはず。基地局間の時刻決定が面倒という場合でも、3基地局相手に双方向通信を行えば済む話で、4局目が必要な理由がわからない。

 Wi-WiのアクロニムがWIreless two-Way Interferometryの意味(tWo-wayではなく)だとすると、実際のところ1wayとか4wayとかで時刻決定していても、それはWi-Wiになる、という可能性はあるか。1基線の1wayで時刻を決めることはできないけど、4基線の1wayなら4次元時空間を拘束できる(GPSと同じ原理)。

 つまり最低4基地局が必要なChrono Locateは、Wi-Wiベースと言いつつ、実はオリジナルのWi-Wiの2wayではなく、1wayの独自プロトコルを使用している、という可能性。

 ユーザー端末が増えると、2wayでは基地局の負荷が増えるから、ある程度のデバイス数を見込んだ測位用途では1way(放送型)のほうが使いやすい、ということもありそう。あるいは、長距離を飛ばそうとすると無線機器としての取り扱いが面倒になるから、ユーザー機器は受信だけで使えるように(無線機器として登録するのは基地局側だけでいい)、とか。



https://www.riken.jp/press/2026/20260403_1/index.html

 Spring-8の観測データ(27GB/s)をFPGAで前処理し、データセンターで可逆圧縮処理。非圧縮では19PB/weekのデータ量が、2.2TB/weekまで減る。また、伝送帯域の使用効率が改善するので、観測後数日かけて解析していたものを、観測中に(15分程度で)解析できるので、実験中に結果を見ながら調整できるようになった。



 シネマカメラのレビューのYouTuberの発言。「買い替えようと検討しているなら、買い替える必要はない」(意訳)、至言だな。

 買い替えを検討しているということは、すでにそれに相当するものを持っている。買い替える明確な必要性があるなら買い換えればいいが、買い替えるための理由を探しているなら買い替える必要はない。

「機材を買い替えるより、まずは創造性を豊かにしよう」とも。



 Google君さぁ、gmailに届いた、今までも何回もメールを送ってきている相手からの、署名&暗号化がされている、ちゃんとしたメールを迷惑メール扱いするのやめてくんない? あと、プロバイダからの割と重要なメールも迷惑メールフォルダに入ってたし。

 別の例では、昔一瞬だけ遊んだホヨバのゲームで登録していたアドレスに届いた、ホヨバの署名がついてTLS暗号化もされているし、たぶん正しいメールだと思うんだけど、これがGoogle的には個人情報を不正入手するための危険なフィッシングメールである、という判定らしい。で、フィッシングメールであることを解除する(通常の受信フォルダに移動する)ためには、メール全文をGoogleに送って審査してもらう必要があるんだそうだ。面倒くさい世の中になったものだなぁ(Googleに送った時点で(審査されていなくても)自分の受信した分は通常のフォルダに移動するけど)。


 インターネットを使い始めた最初から契約しているプロバイダ、色々なところからメアドが流出して、最近は1日100通くらいの迷惑メールが来ていたけど、プロバイダ側でフィルタリング(送信者アドレス偽装検知)が追加されてからは1日1,2通程度まで減った。まだ来るってことはいい感じに設定すればフィルタを突破できるんだろうから、いたちごっこだろうけど、当面は静かになりそう。



 YouTubeのサイドバーの登録チャンネルの枠で「もっと見る」をクリックすると、格納されていた一覧が展開されるという従来の挙動が変更されて、別のページに遷移して、しかも登録チャンネルの一部しか表示されない(ページ一番下までスクロールすると次のブロックを読み込む)、という改悪。一部しか表示されないとCtrl-Fで文字列検索できないからめちゃくちゃ不便。

 実際には移行先のページでもう一度サイドバーを開けば全件が表示されているので、そこを開き直せばページ内検索ができるけど、遷移先のページが出てくるまでにタイムラグがかなりあるから、操作性はだいぶ悪い。

 冗談目に言ってた「毎週のようにYouTubeが改悪される」という話、だいぶ現実味を帯びてきている。


***


 ある1日に受信したSIFの、7777応答だけを表示したもの

 13時間の間に200回以上の7777応答を受信し、ほとんどすべての機体から受信している。ただ、7777応答を返す機体でも、すべてのタイミングで7777を返しているわけではなくて、受信開始付近または受信終了付近に固まっている。


 一番上のドットが7777応答。一番下の方の斜めに分布しているドットはモードC応答で、高度変化を示している(モードCに割り当てられたコードは高度でソートし、その上に残りをコードでソートして表示している)。

 これを見ると、7777応答は離着陸時の高度が低いときにのみ出ていて、高度が高いときにはあまり出していないことがわかる。

 7777応答はトランスポンダの定常的な誤動作で出しているものだと思っていたけど、実際にはそうではなく、別のメカニズムがありそうだ。それが高度に起因するのか、あるいはインテロゲータの信号強度が強すぎると誤動作するのか、いろいろ考えることはできるが。しかし、特定の機体だけ誤動作するならともかく、旭川空港に離着陸するほぼすべての機体で同様に7777が出るというのは、ちょっと不思議な気がする。

 7777が見えるのは受信側の問題である可能性もあるけど、メカニズムが想像できないんだよな。特に振幅や位相の連続性を満足するような条件を含めると、受信側原因説はかなり旗色が悪い。とはいえ、多くの機体に搭載されているトランスポンダのほぼ全てで同様に変な挙動をする、というのも、考えづらいわけで。


*


 Airspy R2で受信してSIF/モードSをデコードするやつを試作中…… GUIが面倒なので、とりあえずコンソールでデコーダだけ作ってる。一応TCPサーバーもつけているので、外部アプリからSIF/56bit/112bitを取り出して表示したりとかは可能。


 ウチには現在、RasPiで走らせているdump1090(Mode-S ADS-B専用、RTL2832ベース)と、自作のSIF専用受信機(RTLベース)と、今回作ったSIF/M-S受信機(Airspy R2ベース)の3種類の受信機が走っている。RasPi側は多少利得が高いだろうアンテナをつけていて、かつCRCで誤り検出を行っているので、かなり遠くまで見える(高度によっては札幌まで見える)。SIF専用のやつはなぜか北側に極端に利得が高くて、旭川空港を離着陸する機体もかなり低い場所まで見える。R2に接続しているアンテナはあまり感度が高くなく、受信側の閾値も未調整なので、あまり遠くまでは見えないが、西や南はSIF専用よりR2のほうが遠くまで見える。


 デコーダもまだ調整中なので常時受信はしていないけど、雰囲気的にスケルチ通過後のIQファイルは2-5GB/dayくらいかなー、といった程度。SIF専用のやつは200MB/dayくらいなので、1桁多い。サンプリングレートで2.8倍、8bitIQ→16bitIQで2倍、合わせて5.6倍、ゲートの感度を少し敏感に設定して(絶対値指定→相対値指定)、トータルで10倍~、という感じらしい。

 WAVは圧縮効率が悪いので、単純に圧縮すると25%程度しか圧縮できない。おそらくdataチャンクを1回微分すればもう少し稼げると思うんだけど、デコーダを考えるのが面倒。自己展開方式にラップすれば良いんだろうけど、それを作るのもまた面倒。



 SIFを受信したIQファイルの、信号強度の各パーセンタイル値。ブロックサイズは128Kサンプルで、5サンプルの移動平均(インコヒーレント)を取っている。

 ブロックサイズがある程度大きければ、95%程度までは入力信号の影響は受けない(空域の過密度による)。ブロックサイズが小さければ、その分メッセージ長の比率が長くなるから、低いパーセンタイル値にも影響が出てくる。

 キャリアスケルチを自動で設定したいなら、90%あたりを参照して、+9dBあたりでトリガすれば、ある程度の振幅のある信号ならトリガできる。もう少し低い信号まで見つけたいなら、95%+6dBとか。あまり敏感にしすぎるとノイズフロアでトリガしてしまう難しさがあるけど。

 意図的に高いパーセンタイルを設定して、例えば98%とかにすれば、多くのパケットが出ているときは相対的に受信する数を絞る(比較的弱いパケットを破棄する)、みたいな使い方もできるかもしれないけど、とはいえあまり信頼性はなさそう。特に前ブロックのパーセンタイルを次のブロックの閾値に使う、みたいな場合。今回のブロックの振幅を別ブロックにコピーして、先に閾値を決めてからスケルチの処理を行う、みたいな流れなら、ある程度安定して動くかもしれないが。



 縦軸にドップラ(kHz、正負の曖昧さがある)、横軸に信号強度(非正規化)のグラフ

 0kHz付近にパラパラと散らばっているものがある。これは通常のモード1/2/3/A/B/C/D/S応答の形。正しくデコードできないもの(総当りのデコードでSNRが足りないもの)はキャリアスケルチで通ってenergyでプロットしている。ほとんどはSNRが足りないだけで、信号としては1/2/3/A/B/C/D/Sに対応している(全部確認したわけじゃないけど)。


 モードS112bitを見てみると、こんな感じ

 横軸がマイクロ秒、青が信号強度(dB)、橙が位相。大雑把に40usで1回転しているので、逆数で25kHz程度のドップラで、上の図と整合的。位相のノイズが大きいのは、マンチェスタ符号の谷の部分。


 ドップラが4MHzほどある信号

 信号強度は十分に高く(モードSのピークと同じ程度)、2つの山がある。このとき、同時に取得していたRTL2832ベースの受信機では、この信号は見えなかった(ドップラ4MHzはRTLの帯域の外なので、見えなくても当然だが)。ただ、昔これに似た形を見たことがあるので、1090の近くでもこの形を使うことはあるはず。

 受信地点から可視の範囲に十分な空港設備を持っている施設はないので、航空機が発している信号のはず。


 例えば函館空港のVOR/DMEは70Xで、これに対して測距する場合、航空機が1094MHzの質問を発する。

 Wikipediaによると、DMEの質問は2つのパルスペアを使用して、Xチャンネルは12us間隔のパルスを使用するらしい。上の図の2つのコブはちょうど12us程度の差に見える。適当にググって出てきた画像によると、パルス幅はピークの-6dBで3.5usらしいが、上の図のコブもそれくらいの幅に見える。

 このときに25kHz程度のドップラを含むモード3/A/C応答(コードor高度)に一致する機体は、Fr24で見ると函館から200km程度の場所を飛んでいる。このときの高度(FL310)から水平線までの距離を計算すると、函館は十分に可視範囲内だから、函館VOR/DMEを使っていると考えても矛盾はない。

 ということで、この謎の信号は、DMEのものと考えて間違いなさそうな気がする。DMEってどういう信号なんだろうか、とは気になっていたけど、はからずもサンプリングしてしまった……

 あと、だいぶ前に見かけた変な形の波形も、DMEであることが判明した。ただ、そのときはRTLでサンプリングしたので、1090MHzからせいぜい±2MHz程度の範囲のはず。その周波数で質問を行うトランスポンダは、少なくとも北海道の周辺には存在していないはず。A/A TACANみたいなもので使っていた可能性は排除できないけど、とはいえ可能性としてはそう多くないはず。そもそも1030MHzや1090MHz付近は避けて運用しているはずだし。


 DMEの質問も、パルス幅(±1.7usで-6dB)と間隔から、自動で検出はできそう。チャンネルも角速度やパルス間隔から判定できるだろうし。ただ、DME質問を出しながらこの辺りを飛ぶ航空機はあまり多くないはずだから、わざわざ検出してもなぁ……という気はしないでもない。A/A TACANにしたって、全チャンネルのごく一部しか受信できないし。


*


 dump1090の30002ポートからは、信号がないときは1分間隔で*0000;というメッセージが出てくるけど、これって何を意図したメッセージなんだろう? モードSの56bitや112bitでは14文字や28文字の16進数が出てくる。4文字ということは13-16bitのデータを吐くフォーマットなわけだけど、何用なんだろうか。

 今回作ったデコーダは、モードSの56bitや112bitなら14文字や24文字のテキストを出して、SIFの14bit(3bit*4 + X + SPI)は4文字で吐こうとしていた。dump1090の16bitメッセージと衝突する。*0000;は自分のフォーマットに照らすとフレーミングパルスに相当するので、これが衝突するのはちょっと困る(クライアントを作ったときに、dump1090をソースにしてハートビードを受信したときに、フレーミングパルスを受信していると誤認する)。

 SIFはF1/F2も含めて16bit化して、フレーミングパルスは*8002;が出て、*0000;なら無効メッセージ(ハートビート)として扱う、という手もあるが。


 あと、DMEもどうするかなー。そもそもTCPで吐くかどうかも含めて考えなきゃ。


*


 TACAN/DME/VOR/ILSの周波数割当

 たぶんこんな感じだと思う。

 縦横が違うだけで同じ図。

 チャンネルは1から126まで、チャンネルごとにWXYZのサブチャンネルがある。基本はXYだけ、場合によってWZも追加(MLSとか特殊用途用の割当?)。WとX、YとZは同じ周波数を使用。

 TACAN/DMEの機上(インテロゲータ)周波数は全チャンネルでリニア。応答はXとYで別の周波数(±63MHzオフセット)を使用する。オフセットの符号は63と64を境に反転する。

 周波数の代わりにチャンネル番号を使う場合、質問はサブチャンネル(XY)にかかわらず同じ周波数だから、質問周波数を指定したい場合はチャンネル番号だけでいい(例えばチャンネル1で1025MHz)。逆に、応答はサブモードによって周波数が変わるから、応答周波数を指定したい場合はサブチャンネルを含めて指定する(例えばチャンネル1Xで962MHz)。

 VOR/ILSは17-59と70-120はリニア(60-69は抜けて、そこを飛ばして連続)。XとYは50kHz差、XとX、YとYは100kHz差(つまり50kHz間隔でリニア)。17-56は奇数チャンネルがVOR、偶数チャンネルがILS。

 実際にはこれらのチャンネルがすべて使われるわけではなく、例えば1030MHz(チャンネル6)や1090MHz(チャンネル66および3Y)付近はATCRBSで使っているので割り当てず、またGPS L5(1176.45MHz)付近も避けることがあるらしい。L5は89Xと90Xの間だが、帯域幅が広いから、綺麗に抜くなら上下15chくらいを飛ばすことになるはず。

 アメリカで使われているUAT ADS-Bは978MHzで、これはチャンネル17Xに相当する。ビットレートがそこそこ高いから、おそらく帯域幅もDMEから拡大していて、周辺は避けて割り当てるような運用になっているはず(未確認)。



 Airspy R2で1090±4MHzを受信するとすると、62から70まで、1Yから7Yまで、125Yと126Y、あたりが受信できる。Xの応答は範囲外だから、Xを受信したら質問と確定できる。Yは質問と応答の周波数が重なっているが、質問と応答はパルス間隔が異なっているから、識別可能(Xは質問と応答が周波数で分離されているから、質問と応答は同じパルス間隔を使用)。A/A TACANはパルスペアではなくシングルパルスで応答するらしいので、応答を受信するのは難しそう(単パルスのエンベロープでDMEかノイズかを判断しなきゃいけない)。



 DMEは250MHzを超える幅(比帯域幅23%)があるから、これを全部監視しようとするとかなり大変。これくらいになると適当なアナログフロントエンドで増幅とBPFだけ通して、ダイレクトサンプリングで取り込むような形になるのかな。DME/TACANやUAT/1090ESをすべて監視するようなモニタシステムは作れるだろうけど、まあ、そういう需要はあまりないだろうなぁ。

 DME/TACANの全chを監視して嬉しいこともそう無いだろうし、UAT/1090ESを受信したいなら適当な狭帯域受信機(帯域幅数MHz)を2個並べれば済むだけだし。研究機関の電波環境測定みたいな用途なら全体を一気に受信できる機材があれば便利かもしれないけど、そういう場合でも市販の受信機でIQデータを取っておいてあと解析で処理すれば済むだろうし。

 そもそも978/1030/1090MHz以外はDME/TACANでしか使わないから、電波環境のモニタリングとかも不要だろうし。


*


 ついでにTACANについても軽く調べてみて、測角/測距を両立する原理はなんとなく理解った気がする。

 TACAN局は2700パルスペア/秒でパルス列を放送している。このパルス列は、原則としてランダムなタイミングで発信される。

 このパルス列は、15Hzと135Hzの2つの正弦波で振幅変調されている(一つの大きな正弦波が1秒あたり15回転し、その中に小さな正弦波が9個入っている)。この振幅は水平面で回転しているから、どこかで位相の基準を与えなければならない。このために、ランダムな間隔で出ているパルスは、1秒に15回、決められた間隔(X:12us、Y:30us)・個数(X:12個、Y:13個)の連続したパルス列を出力する。また、135Hzの正弦波にも同様の基準パルスを出力する(X:24us6個、Y15us13個、ただし15Hzと同じタイミングの場合は15Hz側が優先)。

 TACANで方位を決める場合、まずこの連続したパルスを探してタイミングを決める。その後、パルス列を振幅変調して位相を復調し、TACANから見た自身の方位を決める。

 測距する場合、機上TACANは質問信号を送信する。これを受信した地上TACANは、応答信号を発する。応答パルスを1回返した地上TACANは、次のランダムなパルスを一つ飛ばす。これによって2700パルスペア/秒を維持する。

 機上TACANは150パルスペア/秒以下(ただし135Hz付近は避ける)のランダムなタイミングで質問を送る。地上TACANからはランダムな2700パルスペア/秒の応答が帰るが、この内のいくつかは自身が送信してから一定時間後に届いている。この一定時間後に届く応答を見つけることで距離を確定する。一旦距離が決まれば、以降は2パルスペア/秒程度で測距値を更新し続ける(DMEインテロゲータは最大30パルスペア/秒まで、通常は25Hz)。

 TACAN/DMEトランスポンダは2700パルスペア/秒を応答できるから、インテロゲータが25パルスペア/秒で質問した場合は108機まで同時に応答できる。150パルスペア/秒も相手にするなら、例えば5機で750パルスペアを使うから、残りの約2000パルス分を配分して80機程度がキャパシティになる。これがDMEの容量。TACANの場合は測距の頻度が低いから、例えば15機のサーチ(2250パルスペア/秒)と225機のトラッキング(450パルスペア/秒)を提供できる。

 TACAN/DMEは2700パルスペア/秒程度で設計されているので、これを超える質問が送られた場合は、受信機の感度を下げて、原則として遠くの機体から順に無視するようになる。

 TACANが、質問がなくても常に2700パルスペア/秒の応答信号をランダムに出力するのは、測角に必要なため。


 A/A TACANは通常のTACANとほぼ同じものだが、XチャンネルもYチャンネルの周波数を使うという違いがある。また、A/A TACANでは2機間で測距する場合、それぞれチャンネルで63の差を設定する。例えば編隊長機は16X、それ以外の編隊機は79X、というような具合。この場合、通常のTACANとは異なり、16Xは1040MHzで送信し1103MHz(16Yの周波数)で受信し、79Xは1103MHzで送信し1040MHz(79Yの周波数)で受信する。自分の送信周波数と相手の受信周波数、相手の送信周波数と自分の受信周波数が同じなので、1組の送受信機で信号をやり取りできる(Xペアの応答周波数を使う場合、飛行機1機辺り2組の送受信機が必要になる)。

 TACANは252チャンネルあるが、A/A TACANでは1組辺り2つのチャンネルを使うので、実効で126チャンネル(X63+Y63)から選ぶ。

 編隊機は相手が単一(隊長機)だから、その機に対する距離を測定することができる。対して、隊長機は相手が複数いる場合、いずれの機に対して測距するかはわからない。特定の編隊機だけ先にA/AをONにして、それにロックしてから他の機もA/AをONにすれば、最初にロックした機体を追尾するが、他の機が同じ距離になった場合に別の機を追尾する可能性は排除できない。

 TACANは最大1000km程度まで届くから、この範囲内で他の機体がA/A TACANを使用していた場合、誤った距離を測定する可能性がある。A/A TACANを使用する場合は相手との距離を推定しておき、誤った相手にロックした場合は手動で再起動する必要がある。地上TACANでも同様だが、原則としては同じチャンネルが近所に設置されることはないはずだから、あまり問題ないはず(移動型のTACANを設置して十分に確認せずに起動した場合などはこの限りではない)。

 A/A TACANでは原則として測距のみを提供する。相手から質問信号(パルスペア)を受信すると、それに応じて応答信号(単一パルス)を返す。測距のアルゴリズムは通常のTACANと同様。サーチして、トラッキング。自分の質問に対する応答と、相手の質問は同じ周波数を使う。A/A TACANでは質問が2パルス、応答が1パルスだから、質問と応答を誤認することはない。

 地上TACANとA/A TACANは、Xチャンネルは応答周波数が異なり、Yチャンネルは質問パルスの形式が異なるため、地上TACANとA/A TACANが混在した環境でも、誤ってロックすることはない(地上TACANとA/A TACANで同じ番号のXチャンネルを使っていた場合、両者は別の周波数で応答する)。

 測距onlyの場合は質問に対して応答を返すだけなので、消費電力はかなり少なくて済む(まあ、尖頭電力はかなりでかいとはいえ、パルス幅はたかだか数マイクロ秒なので、フルスペックのTACANでも綺麗にパルスを出せば大した消費電力ではないはずなのだが)。

 大型の航空機だとA/A TACANでも測角ができるものもある(一部の空中給油機など)。測角を提供する場合、消費電力の問題だけでなく、適切なビームパターンを持ったアンテナ(回転型あるいは電子的に回転できるもの)も必要になるから、アンテナ自体がかなり大きくなる(測距だけなら小さいアンテナ1個で済む)。どちらかといえば物理寸法のほうが問題になりそう。


 A/A TACANに使用する周波数(チャンネル)は任意に設定していいはずだが、とはいえIFFに使用する1030MHz(6や69Y)や1090MHz(66)、その周辺のチャンネル(上下5本程度)は避けたほうが賢明。もっとも、IFFとTACANはパルス波形が違うから、同じ周波数を使っていたとしてもそれで味方として判定されなくなる(敵機判定される)とか、TACANが使えなくなる、というわけではないはずだが。



 1GHz付近の周波数はたぶん第二次大戦中のIFFに端を発して航空機が占有しているんだろうけど、それにしても962MHzから1213MHzまでを占有しているって、ものすごい既得権益というか。しかも周波数間隔1MHzとかだし。現代の過密な電波環境からするとアホみたいに無駄な使い方をしている感がある。/* 帯域幅だけでいえば、テレビだって日本だと470-710MHzまでの広大な範囲を占有しているけど */

 VORも108-118MHzまでの10MHz幅を使っているけど、TACAN/DMEに比べればまだ大人しい方。今の時代にVHFの10MHzを開けたって大したことに使えるとも思えないしな……


*


https://commons.wikimedia.org/wiki/File:DC9_ATC_Transponder.JPG

 JALの博物館に展示されていたDC-9のトランスポンダの写真。

 しれっと「ABCD」とか書いてやがる……


https://www.oncealoft.com/product-page/generic-transponder-1

 DC9のトランスポンダと同じ製品かな? 特に説明は書かれていない。

「黒色の汎用トランスポンダ」だそう。動作保証無しで125ドル。


 ABCDでコードを返せるトランスポンダ、実は結構普及していたんだろうか?

 ABCDノブの下にはALT RPTG(altitude reporting)のスイッチがあるから、おそらくモードCで高度も返せるんだろうけど、ノブでモードCを選んだ場合はどうなるんだろうか。


***


 クイックソート - Wikipedia

 アルゴリズムの動作例で、ピボットの選択、長さ8で左から4個目、長さ6で左から4個目をピボットとして選んでいるけど、これってどういう基準で選んでいるんだろう? 長さ8で左から4なら長さ6で左から3、長さ6で左から4なら長さ8で左から5、を選ぶべきだと思うんだけど。アルゴリズム的にピボットを選んでるわけではなく、天下り的に(説明しやすいように)位置を選んでいる?


 int[]のパーセンタイル値の取得、Google AI曰く「その程度のサンプル数ならソートして取ったほうが楽だよ」とのことだけど、実際のところかなり重いので、クイックセレクトを実装してみた。結果、トータルの処理速度が2倍程度早くなった。ついでに、初回のピボットに、前回のパーセンタイル値をヒントとして渡してやると、さらに1割くらい早くなる。

 書いたコードをGoogle AIに見せると、「テメーのコード非効率だぞ」つってif増やしまくった改善コードを見せてくる。いくら投機的実行を信用しているからとはいえ、明らかに不要なifまで増やすのは無駄だと思うんだけど。。。雑用AIなんて所詮この程度よな。



 今回作ったやつはTCPサーバー機能も実装して、dump1090の30002ポートと似たフォーマット(少なくともADS-Bに関しては互換)だから、今回作ったやつ用のクライアントを作れば、dump1090からもデータを受けることができる。非ブロードキャストメッセージ(CRCがゼロにならない)とかSIF(概ねモード3/AもしくはモードC)に関してはdump1090からは取れないけど。高度やコードはADS-B系メッセージからも取れるはずだから、それに対応しておけばAirspy R2の受信機を走らせていないときでも、RasPiで常時受信しているものを流用できる。

 ということで、次はクライアントの作成かな。これは現行のSIF専用受信機と同じような雰囲気でいいはず。現行のやつはTCPでrtl_tcpに接続してデコードしてコードや高度を表示しているけど、GUIはほぼそのまま使える。モードSだと気圧高度の分解能が改善しているとかの違いはあるけど、そのあたりは適当に丸めて100ft単位で扱うとか。

 せっかくモードSを使うんだからもっと色々表示したいけど、そんな事を考え始めたら決まるものも決まらないのでな。。。


2026年4月1日水曜日

小ネタ



 昨年末に、Frameworkの拡張カードを使ったモジュラーUSBハブがあれば便利なんじゃね、というようなことを書いたけど、実際にそういうのを作っている人がいるらしい。




 ターボプロップエンジンの高圧軸と低圧軸それぞれに電動機を接続するコンセプト。HP/LP双方から発電したり、LPで発電してHPにエネルギーを与えたり、航空機のバッテリで各軸を駆動したり、いろいろな使い方ができるよ、とのこと。

 よほど大電力のバッテリーやモーターを積んでいればそりゃ色々な使い方ができるようになるだろうけど、重量に見合うメリットがあるかなぁ……

 自動車だとターボチャージャーに電動モーターを追加して、アクセルを踏み込んだときの立ち上がり(ターボラグ)を改善する、みたいなコンセプトはあった気がするので、ジェットエンジンも同じように、オンボードのバッテリーからタービンを加速したり、スロットルを絞るときも回生してバッテリーで吸収したりと、レスポンスの悪いタービンエンジンの操作性を改善するみたいなことは可能だろうけど、とはいえ重量が(ry 軽量化圧力の強い航空機で、加減速だってそう多くないし。

 同軸で高圧/低圧軸を用意してそれぞれ発電機をつけて、とかやるくらいなら、ガスジェネ+タービンでカリカリに最適化した発電機を作って、プロペラはそれとLIBでブン回せばいいんじゃないのって気がするけど。でもまあシリーズハイブリッド100%で組むよりはターボプロップのほうが効率は良いんだろうな。発電機だって胴体に埋め込むわけには行かないから、主翼にぶら下げなきゃいけないし、ポッドをぶら下げるならプロペラも一緒においたほうが効率的だし、同じ場所にあるならわざわざ電気を経由しなくたって、高温ガスのまま使ったほうが効率がいいだろうし。

 低圧軸を電動で駆動できるなら、地上滑走中はAPUで発電して電動でプロペラを回して、滑走路に近づいたらメインエンジンのコアに火を入れる、みたいな使い方もできるかもしれないけど。WheelTugみたいに100%デッドウエイトになるわけじゃないから、こういう方式のほうが環境性能は良さそう(APUの熱効率がどれくらいあるのか知らないけど)。


 確かホンダの空飛ぶクルマ的なコンセプトがシリーズハイブリッド的な感じだったような……?? ある程度小さいなら取り回しやスケーリングがしやすいシリーズハイブリッドのほうが便利とか、推力が多少大きくなるとターボプロップのほうが優位とか、もっとデカくなるとターボファンや、さらに進んでギヤードターボファン、みたいな感じで、それぞれの構成ごとに最適な大きさが違うんだろうか。



 LDM #451: Interrogator AN/TPX-54(V) Part 1: Receiver - YouTube

 IFFのインテロゲーターの受信機。受信機ではあるけど、内部で1030MHzも作っているんだそうだ。これをローカルにして、1090MHzから60MHzのIFを作る。あと、変調してテスト信号にもしているのかな?



 FH6のcoast spaceport、ふむ? 沿岸部にある宇宙関係の場所で車で走って面白そうな場所、かつ関東・関西あたりの一帯…… 加えて言えば、同じコンセプトでコンテナヤードとスキーリゾートがあるなら、それとは別のベクトルの場所。メタ的に言えば、FH6で採用するに足る設備であること。うーん、思いつかんなぁ。

 spaceportってアラスカとか共産圏を除けばたいてい沿岸部にあるしなぁ。そらそうやろ、というような情報しかない。平地なら種子島、山岳地なら内之浦、ただし山岳地はスキーリゾートとコンセプト被り。順当に行けば種子島かな。FH6のマップは実際の地理よりもっと広い場所から景観を持ってきているっぽいし、種子島はありそう。コンテナヤードはタイトなコース、スキーリゾートは起伏の激しい場所、と考えれば、主に平坦な場所はありえそうだし。あるいは、臼田宇宙空間観測所になにか架空要素を追加してspaceportと言い張るという可能性もあるけど、でもそこってスキーリゾートでは……



 アメリカで一般消費者向けのルーターが輸入できなくなる、みたいな話で、アメリカ政府が指定したバックドアが入っていない製品は売れなくなる、アメリカ国民の通信の自由の侵害だ、みたいな話、なんだかなぁ、って感じがする。

 彼らは「アメリカ政府のバックドアがあるルーター」と「アメリカ以外の国で作られた自由なルーター」を比べているのかもしれないけど、でも実際には「アメリカ政府のバックドアがあるルーター」と「中国政府のバックドアがあるルーター」の選択なんじゃないの?って気がする。あるいは、中国製のルーターにバックドアなんてあるわけがない、という話なら、じゃあアメリカ製にバックドアがあると考える理由は一体何なのか。アメリカ政府が信用できないというなら、なぜ中国政府は信用できるのか。

 あるいは、ヨーロッパから買えばいいだろ、みたいなことなのかもしれないけど。



 某組織(ほとんど文科省の予算頼り、最近は予算不足でクラファン活用)の、要約すれば「この分野で開発した技術は市民生活に役に立つ部分もある。積極的に(公的)資金を投入してほしい」みたいな発言、裏を返せば「生活に役に立つ可能性がない分野に資金を入れる必要はない」になるし、あなた達の研究分野の大部分は生活に役立たないような分野(むしろいくつかの研究分野では文明的な生活で悪影響を受ける、市民生活を規制しないと成立しない研究)だし、そういうことはあまり大声で言うべきじゃないと思うのだが。

「うちの研究で生まれた技術が一般生活に役立つこともあるよ」とはいっても、おそらく微々たる量だろうし、じゃあおまえらに突っ込んでる予算(年間数百億円規模)を全部別の("実用的"な)研究に突っ込めばもっと便利な社会になるだろ、と言われたら、どう反論するんだろうか。

 海の物とも山の物とも知れぬような実用になるかわからない基礎研究こそが大事なのだ、というのであれば、じゃあ「うちの研究は社会に役立ちます!」とか言ってるのと矛盾するわけで。

 彼らの研究が大事であるということに異論はないけど、アピールの仕方がなんだかなぁ、って。

 彼らの研究の一分も(全体の予算で言えば微々たるものとはいえ)、例えば防衛省ファンディングで予算を取れるような内容もあるはずだし、他の予算(補助金制度)も活用すればもう少しやりようもあるだろうに。彼らは文科省以外の予算は違法である、みたいな考え方だからなぁ。じゃあクラウドファンディングだってどうなんだよ。文科省を通さなくても、民間の営利企業経由で国民から金を受け取るのはいいのかよ? (国が配分する予算を文科省以外から受け取るのが違法である、ということであって、国以外からの金については受け入れるということなんだろうけど)



 YouTubeでサムネのアイコンをクリックするとキューや後で見るリストに追加する機能が削除されて、タイトル横の縦3点リーダーからクリックしないと追加できないの、だいぶ不便になった。YouTube、月に数回くらいのペースで少しずつ不便になっていく。

 政府の規制強化とかを話題にするYouTuber等がゆでガエル(boiling frog)の話をすることがあるけど、なるほどなぁ、って感じ。

/* watch later/キューは数日後にしれっと復活していたけど */


***


 SIFでモード3/A/Cの2種類以外にコード0000も出している機体(3種類のコードが出ている機体)、これ高度計の不具合でコード0が出ているんじゃなくて、実は意図的に出しているんじゃないか、説。

 このあいだ見かけたやつは0000、0520、1200の3種類のコードを出していて、1200はVFR、0520は海抜約600m(未較正、このあたりの標高を差っ引いて対地高度約400m)でレベル、と考えると、陸自のヘリの可能性が出てくる。固定翼機ならもっと高い高度を飛ぶはず(このあたりは山が多いので、理由がなければもう少し高い高度で巡航するはず)。ただし民間のヘリの可能性も残る。

 とすると、モード1やモード2のトランスポンダを搭載していて、トランスポンダはONになっているが、任務識別用のコードは割り当てられておらず、民間機と区別するために、暫定的にモード1のコード00あるいはモード2のコード0000を設定して飛んでいる、という可能性がある。

 ただ、山向こうの民間飛行場でも海抜600m弱の機体が見えることがあるので、例えば個人所有の小型機がこの空港でタッチアンドゴーの訓練をしていて、対地高度400m程度でダウンウインドを飛んでいるところを見ていて、トランスポンダの不具合でコード0000も高い頻度で放送されている、という可能性を除外できない。

 空港にライブカメラがあれば、それを見ればタッチアンドゴー訓練を行っているかどうかはわかるけど、残念ながらこの空港にライブカメラは設置されていない。

 一番確実なのは、目視で自衛隊機を確認したうえで、0000を含む3種類のコードが出ているのを見つけるのが確実なんだけど。もうしばらくしたら暖かくなるし、外を飛んでいる機体を確認しやすい季節にもなるはずだが。


*


 JALのB763

 コード7777がパラパラと出ている。ドップラが正しいからトランスポンダが意図的に出している信号のはずなんだけど、しかしF1パルスがかなり低いのが謎い。

 同じフライト。3777も2回出ている。そのうち1回はF1の前にもパルスがある。

 763に積んであるトランスポンダって、最新の物という訳では無いにしろ、そこそこ良い物のはずなんだけど、なんでこういう信号が出るんだろう? 高性能(プログラマブル)だからこそ、という可能性はあるか。あるいは、受信側の問題という可能性も否定できないわけだが。だからこそR2をはやく……



 別の機体。ADOのB737

 ↑全体。モード3/AでSq2467と、適当なモードCが出ている。上の方にパラパラと3種類の変な信号。

 ↑3777

 ↑4703 with X bit

 ↑7777

 すべてドップラが正しく、信号レベルも安定しているので、トランスポンダが意図的に出している信号のはず。


 また別の機体。JALのB763




 B76xが多いけど、とはいえ単純にこのあたりで飛んでるのが、この機体が多いというだけだと思う。例えばJALのAT46(道内空港間のターボプロップ)でも、たまに7777が出ていたりする。

 同じエアラインで別の機体から同じように7777が出ることもあるし、同じ機体(ICAOアドレスが同じ機体)が別の日に7777を出していることもある。たいてい、変な応答は7777が多い。


***


 原因不明のバグにずーっと悩んでいて、結局わからなくて数時間別のことをやっていると、急にソースコードが頭に浮かんできて「ああ、これが原因じゃん」とピンポイントで原因がわかったりする(実際、そこが原因)。だからプログラミングしている人が暇つぶしみたいなことをしていてもそれは遊びじゃないんだよ…… まあ、めったにあることじゃないけど。。。



 C#の例外を投げるヘルパー関数、場合によっては例外が確実に発生することがコードを解析するだけでわかるのに(例えばconditionにtrueを渡している場合)、コード解析でヘルパーを正常終了すると判断されてコンパイルエラーになるような場合がある。明示的にHogeException.ThrowIf(true,this);throw New Exception();みたいな感じで止めてやればコンパイルエラーは防げるけど、そもそも自分のコードで例外を投げるなら(最適化を阻害するなら)ヘルパーを呼ぶ意味がない、という。


2026年3月25日水曜日

小ネタ



 ロッキード・マーティンの衛星用SAPの動画






 6Gに向けて基地局アンテナの簡素化・省電力化技術を開発~AGCと「機能性ビーム成形レンズアンテナ」を開発、屋外実証に成功~ | 企業・IR | ソフトバンク

 6Gを見据えた「機能性ビーム成形レンズアンテナ」を開発、屋外実証に成功 | ニュース | AGC

 従来方式でビームフォーミング/ステアリングするには2次元的に大量のアンテナアレイが必要で、コストや消費電力(&発熱)が課題。提案方式では1次元的なアンテナアレイを使うことで低コスト化や低消費電力化ができ、発熱も減るのでヒートシンクも小型化できる。

 従来の2次元方式では各アンテナを干渉させてビームフォーミングするけど、この方式はどうやってビームフォーミングするんだろう? メタサーフェスレンズが単に集光を行うだけなら、アンテナ素子1個から電波を放射すればそれを焦点としたペンシルビームを作って、それぞれ独立にビームを作れる、みたいな方式なんだろうか。それとも水平方向のファンビームを作るレンズで、各素子を干渉させてペンシルビームを作るんだろうか。



 都市型データセンターの導入検討に関する実証実験を開始します ~東急線沿線を軸に、次世代デジタルインフラの展開を目指します~|ニュースリリース|東急株式会社

 鉄道の高架下にモジュール型データセンターを設置する案。

 データセンターのストレージラック前で大声を出すとHDDアクセスエラー率が激増する、みたいな話があったよね。かなり昔の話だけど、とはいえHDDも微細化が進む昨今、音響振動がストレージアクセスに影響を与えるというのは有り得そうだが。まあ、そのあたりも含めての検証だろうしな。



 金属3Dプリンタの実用化が加速 DMG森精機とマザックが語るDED方式活用例:FAイベントレポート(1/3 ページ) - MONOist

 両社とも同じようなことやってるな。ということは、信頼できる技術なんだろう。それにしても工程集約の凄まじいことよ。



「笑わない物理学」、見たいけどなぁ。サンシャイン池崎あたりを呼んでさ、相対性理論とかを扱ってさ…… さすがに2時間半は長すぎるのでもう少し短めでお願いしたいが。



 某映画、潜水艦モノの映画じゃなくて、怪獣映画みたいなものだと思って見れば違和感が少ないことに気付いた。軍事的な正確さは重要じゃなくて、アクションや画(CGIやVFX)が優先で、その次に政治があって、それらを引き立てるための軍事行動や、それの舞台装置としての装備品、という感じで。

 前作でプロデューサーが政治やCGのリアリティみたいな部分を積極的にアピールしていたから、前作はその視点で見て、うーん、という感じだった。今作もそのあたりでなにか良くなったとかは思わないけど、見方を変えたら作品全体の評価はだいぶ改善した。



 久しぶりにPCがクラッシュ。このあいだSteamでセールだったので買った某ゲーム(大昔にXbox Oneで遊んでたやつ、結構大規模なオープンワールド)を遊んでいたところ。以前からゲームが落ちることは数回あったのだが、今回はOS丸ごと落ちた。で、ディスクチェックが走ったり、うまく起動しなくて、何回か再起動しておおよそ正常に動作するように回復。

 排熱の問題(特にMBチップセットの過熱)が原因のような気もするけど、再現やストレスを掛けてテストするのも怖いしなぁ。こういう事があるとデータのバックアップ大事だよなーと思いつつ、HDDの値段を見て躊躇する。個人レベルのコールドデータ用の大容量ストレージもうちょっと安くならんかなー。個人で必要なもの(再取得できないもの)だけでも10TB近く溜め込んでる方がおかしいような気もするけど。

 とりあえずOSは起動できたけど、Chromeの個人設定(ブラウザの設定とか、Cookieとか)がいくつか飛んでた。大部分はブラウザへのログインとかで復活したけど、なぜかYouTubeの再生オプションの動画プレビューが何度OFFにしても勝手にONに戻る不具合に苦しめられている。YouTubeさぁ。。。

 おそらく、設定でプレビューをOFFにしても、すでに開いていたページでプレビューがONになっていると、そのページからYouTubeへ何らかのリクエスト(サムネへのマウスオーバーや別動画の再生)が飛んだときに、プレビューがONに上書きされるんだと思う。で、ブラウザがクラッシュしてCookieが消えてプレビューがONになって、タブを復元したときにYouTubeのページが有ると、いくらプレビューをOFFにしても、それらのタブを開くたびに設定が上書きされるんだと思う。


***


 グリペンEの制御則、ALT HOLDモードではラダーペダルがバンク角コマンドになるらしい? ラダーを踏むとそれに応じてバンクして、水平飛行を維持するためにピッチが当たって、進行方向が左右にずれる(離せば水平に戻る)。速度の微調整はスロットルをちょっと動かして、進行方向を変えたいときはラダーだけで済むから、スティックに触らずに巡航ができる。便利そうだ。もしかしたらALT HOLD時はスティックの前後は高度リファレンス変更としてコマンドされるのかな?


 F-35Bには離陸滑走中にボタンを押したら自動で離陸するモードというものがあるらしい。「自働で」というからには、引き起こしくらいは自動でやるのかな? 普通の短距離離陸は先にSTOVLモードに入ってから滑走を始めるはずだけど、それとは別の物のようだ。通常滑走中にSTOVLを押せばそのままSTOVLに移行して離陸する、みたいな機能は考えられるけど、そんな機能を使う理由がわからん。強いて言えば、離陸滑走前にSTOVLモードに入るのを忘れていて、揚陸艦の端ギリギリで離陸速度に足りないことに気づいてSTOVLモードに入り直す、とか? STOVLボタンを押すとすると、スロットルとはいえ、離陸滑走中に手を離すのが嫌な気がするけど、あるいは自動離陸はSTOVLモードとは別で、垂直着陸の減速ボタンとかに割り当てられているんだろうか。


 F-35Cの動画を見ると、カタパルトで発艦するときは左右両手とも手すりを掴んでいるから、このあたりはF/A-18と同じく自動離陸らしい。ただ、F/A-18の場合は右手だけ手すりを掴んでいる? F-35Cも映像によっては右手だけ手すりを掴んでいるものもあるから、ルールとして離さなきゃいけないのはスティックだけで、スロットルは問題ないのかもしれないけど。スロットルは可動範囲が広いし、スティックは多少の荷重でも反応するから、加速度が危険なのはスティック側であって、スロットルはあまり問題ではないのかな。スロットルだって誤って後ろ側に操作が入ると推力が絞られるから危なそうだけどなぁ。


 戦闘機の(オフィシャルな)シミュレーターの動画を見てると、たいていその機のパイロットとかがいろいろ説明してくれるけど、ウケの良いことを言うことも多いから、実用的な機能とか常用している機能なのかが分かりづらい。

 あと、シミュレーターの動画を探そうとすると、MSFSやDCSみたいなゲームの動画が大量に出てくるので、実機の情報を探そうとするとかなり面倒くさい(あるいは、そもそもゲームすら無関係なクリックベイトとかも)。検索アルゴリズムでどうにかしろよ、AIで解析すればいくらでも分類できるだろ、と思うんだけど、プラットフォームとしてはとにかく話題性の強いやつ(クリックベイト動画)を大量に再生してもらったほうが嬉しいんだろうなぁ。こちとらプレミアム会員やぞ、広告収入目的の動画を検索上位に出しても意味ないだろうに。と思ったけど、最近は再生画面のリンクから商品を買わせる動線があるから、そこに引き込めばYouTubeの収益になるのか…… 資本主義クソ喰らえ。。。



 実際に乗客を試乗させて飛んでいる電動飛行機(「生産ライン」から出てきた機体)のスロットルやスティックが、明らかにFFFで造形した積層痕や文字の潰れ方が残っているのを見ると、最近のヒコーキってすげーなー、というような気になるな。ちょっとやそっとじゃ壊れないような強度で作ってるんだろうけど、それにしてもよ。せめてSLSで作れよ、という気になるんだけど。

 動画の中では安全性に関して冗長性とか色々話してるけど、『煙突の上にハイヒール』表題作でMewの説明を受けている主人公の気分になってくる。まあ、航空系の記者に対して説明しているものなので、一般の消費者相手に説明するのとはわけが違うけど。

 フライ・バイ・ワイヤを全面にアピールして、ラダーペダルを廃し、スティックのひねりでラダー入力になると言っているのに、両足のブレーキペダルだけは後生大事にゴツい金属の塊で残しているのがちょっと不思議な気がする。スロットル最スローかつWoWで最適なブレーキ(機体重量、滑走路長と路面状態から)をかけて、停止中ならそのまま停止を維持、離陸中止や着陸時ならならオーバーランせずに燃えない程度にブレーキで止める(or高速離脱誘導路に出られる速度に落とす)、あるいはエルロンやラダー操作でステアリング(差動ブレーキ)コマンドを出す、みたいな機能があったっていいはずなのに、なんでそういうシンプルな機能がないんだろう? FAAとかの規則でブレーキは独立したシステムとして搭載すること、みたいな要件があるんだろうか? スティック系の操作ができない場合(FBWが死んでる場合)はブレーキだけ高信頼で残してたって意味ないだろうに。

 エンジン機ならブレーキをかけたままでスロットルを押してエンジンの立ち上がりを確認するみたいな手順もあるだろうけど、それにしたってパーキングブレーキを使えばいいだろうし、そもそも電動機は信頼性が高い(スロットルを押し込めば確実に立ち上がる)のが売りなんだから、スロットルとブレーキを連動させても問題ないはずなんだけどな。


***


 モード3/A/C/Sの信号強度とドップラ成分のグラフ

 左右はIQファイルの時間が違う(グラフ左端の開始点でおよそ300秒くらいの差)。上2つはファイル時刻系での信号強度と角速度の図。下の図は横軸に信号強度を、縦軸に角速度を取っている。信号強度の単位は非正規化dB、角速度の単位はrad/sample。

 信号強度は非正規化なので、モードA/C/Sでそれぞれ異なる強度になる。70とか80あたりの濃い分布がモードA/C、その上のパラパラと分布しているものが56bit応答や112bit応答の成分だと思う。A/Cは高頻度に、Sは低頻度に、というのが見えているはず。

 下の図では、左側の広い分布はモードA/Cで、パルス(受信電力)が少ないのでノイズが多く、有意な成分は見えない。右側のモードSらしい応答は上下(ドップラの分布)がかなり狭く、有意な信号が見えていると考えられる。恣意的に見れば、左側は+0.04付近、下側は-0.02くらいに分布しているような気もする。 0.03rad/sampleとしてΔf=50kHz程度、速度に直して50kHz/1GHz*c=15km/s、さすがにありえないので、実際のドップラ成分ではなく、見かけ上のもの(例えば受信機の温度変化によるクロックの変動)のはず。

 地上と航空機の相対運動であればΔV=500m/s程度、Δf1.6kHz@1GHz程度のはず。とすると測定値は1mrad/sample程度で、これを計測するのはかなり厳しそう。もう少し長い時間軸で、例えばADS-Bメッセージの始点と終点付近を計測すると1rad/100usくらいになるから、計測できないこともないかな、という気もしてくる。ただ、1kHz/1GHzで6桁くらいの成分を見る必要があるので、1ppm/10minに余裕のあるクロックが必要になる。OCXOでなんとか……くらい? ほんとにADS-Bのドップラで受信機の位置が得られるんだろうか?



 別のタイミングで取ったサンプル

 信号強度vs.角速度ではモードSらしい応答が2グループ存在している(PiAwareによると3機からの放送があるはず)。モードA/Cも信号強度が高い部分(80dBくらいのあたり)では2グループに別れているようにも見える。

 グループ間の角速度は0.15rad/sample程度の差があるので、周波数で800kHz程度の差に相当し、速度で240km/sに相当する。そんな訳はないので、トランスポンダの周波数オフセットが見えているんだと思う(±1MHzあたりが規定のはず)。


 

 SIF/M-S受信機は停滞気味。

 今まで使っていたSIF受信機は、設定項目は閾値だけ、表示は64x64のタイルだけ、というシンプルなもの(IPアドレス/ポート番号や、受信した信号の時間減衰の設定もあるが)。

 M-Sまで含めると表示するデータも膨大な種類に上る(少なくとも、デバッグに支障がない程度には表示する必要がある)。設定も、キャリアスケルチとかで色々と複雑な設定が増えることになる。普段は必要な情報をシンプルに表示して、必要に応じて色々設定を変えられるような、使いやすいGUIを作るのはかなり大変。



 C#のメソッドの引数で[MaybeNullWhen(false)]を使うときに、nullableを渡すと警告が出るの、地味に不便な気がする。例えばtryの中でメソッドを呼んでファイルを開いて、ファイルを開けた場合はその場合のロジックを、ファイルが開けなかった場合はその場合のロジックを実行して、最後にfinallyでhandle?.Dispose()を呼びたい、みたいな場合に、正常系であったとしてもhandleがnullの場合があるから、handleはnullableで定義しておきたい(じゃないとfinallyでnull参照のバグを仕込んでしまう可能性がある)。かといってメソッドの引数をnullableにすると、MaybeNullWhenロジックが正常に動作しない。

 そもそもロジックが間違っている、ということなのかもしれないけど(適当なクラスでラップしろ、とか)。


2026年3月18日水曜日

小ネタ


 95%の宇宙 解明されていない“謎”を読み解く宇宙入門 (SB新書) | 野村 泰紀 | 宇宙学・天文学 | Kindleストア | Amazon

 このタイトルを見たときに、話題として比較的狭い領域(質量で換算できるモノ)の話しか書いてないのかな、と思ったのだけど、かなり広い範囲が出てきた(商品説明に目次が書いてある)。超弦理論やマルチバース、ブラックホールの最近の話はあまり細かくは書かれていないけど。



 NFCカードのスキミング対策でシールドする小袋、全体がアルミ蒸着シートで作られているけど、原理的には外周部のアンテナが入っている場所だけシールドしておけばいいはず。場合によって、目視自体を防ぎたいのか、逆に何が入っているのか明らかな方がいいのかは分かれるだろうけど、シールド袋としては目視できないタイプが圧倒的に多そう。

 クレカだとNFCを使わずに番号を手入力したいという場合は袋から出さずに使えると便利だろうし、あるいはマイナンバーカードみたいな身分証明書はシールドしたうえで、自分が急に意識を失ったりしたときに救急隊員が財布を見てマイナカードを一目で発見できるような状態にしておきたい、みたいなことも考えられる。

 どうしても一部が透明なシールド袋が必要なら、市販の透明なカード袋の上から、アンテナ部だけ覆うようにアルミテープを貼ったりとかで自作することもできるか。どの程度確実にシールドができるかは未知数だけど、そんな事言い始めたら通販で売ってるシールド袋だってな。外部からネルギーを突っ込まないと動かないNFCカードの特性上、ある程度減衰させれば動作しなくなるはずだけど、とはいえ多少減衰した程度なら問題なく使えるように作ってあるだろうしなぁ。



 最近のYouTube、PCサイトのデザインがなんか変。具体的には一番上からスクロールすると途中でコンテンツの読み込みが挟まってサムネがズレるみたいな挙動がある。地味に不便。それと、視聴済みの動画のサムネの下にシークバー(再生済みの割合の長さの棒)が表示される動画と表示されない動画が混在していて使いづらい。未視聴だと思って開いてみたら動画の途中から再生が始まる、とか。シークバーが表示される動画はマウスオーバーでもURLオプションで時間指定がされているけど、シークバーが表示されていない動画はURLオプションも無し。

 あと、Androidアプリ版のYouTubeも、Premiumのレジューム機能が変な挙動をしている。PIPが非表示だが画面の中に配置されているので、画面の四隅をタップすると勝手に動画が再生されることがあるとか。最近のYouTubeは細かいところがどんどん不便になっていってる気がする。

 ただ、最近のYouTubeは英語の文字起こしとそれの翻訳の精度はかなり高くなってる。文脈で固有名詞を理解するみたいなことはできていないけど、英語を聞き流しながら日本語を読んでも、文脈や意味、表示されるタイミングはかなり綺麗。このあたりはAIで最適化されてるんだろうな。逆に、サービスの使いやすさみたいな、人間が調整しなきゃいけないようなところはどんどん悪化している。



 最近インターネットがちょっと不調なことがある。平日の夜とか、休日の昼間とか、下りが5Mbps未満程度しか出ない。そのタイミングでも上りは130Mbpsとか出るから、回線の物理的な問題とかではないはずなんだけど。


***


 興味本位でF-35Bのホバー時の操縦方法を探してみるなど。YouTubeで軽く探した程度だと、オフィシャルに近い情報(メーカー製シミュレータの動画とか)はあまり見当たらないけど。デモンストレーターの映像って古いやつは結構あるけど、最近の映像ってほとんど無い気がする。セキュリティ厳しくなったんかな?

 HOOK/STOVLボタンを押すとSTOVLモードを切り替えて、通常飛行形態でSTOVLモードに入ると60kt前後の低速飛行に移る。この状態ではスロットルで前進速度を、操縦桿で上下(押し込みで下降、引きで上昇)、操縦桿左右でローリング(左右方向の速度)、ラダーで進行方向、という感じで、通常飛行形態と同じ操作系になる。低速時にスロットルの減速ボタンを押すとホバリングする。ホバリング中も、操縦桿前後で上下、スロットルで前後位置、という操縦方法になる。

 ヘリコプターは操縦桿の前後が位置の前後、スロットル(コレクティブレバー)の上下が位置の上下だから、これが左右逆になっている。プロポのモード1とモード2の違いみたいだ。

 STOVL時には仮想HUDの左下に飛行機のアイコンが出て、機体の上の数字がエンジン出力(%)、機体の下の2つの数字がスラストベクター(度)。スラストベクターは前進時なら90未満、減速時(or後進時)は90より大きい数字(最大103度)になる。


 適当な数字でざっくり雰囲気を考えてみると、平時の短距離着陸や垂直着陸の際は(必要かどうかはさておき)、例えば6度のスロープでFPMを滑走路端に置いて進入して、300kt未満でギヤダウン、適当な距離&速度に達したらHOOK/STOVLボタンを押して短距離着陸モードに入り、自動的に60ktくらいまで減速(ベクトルは維持)、そのまま6度のパスで進入を続けて、適当な距離に達したらスロットルの減速ボタンを押すことで、FPMの場所は維持しつつ目標地点上空で静止(高度は減速ボタン押下時の付近を維持)、スロットルの前後と操縦桿の左右で位置を調整、操縦桿の前後で高度を調整、みたいな感じなんだろうか。

 空母に短距離着艦する場合(英国のSRVL運用)は手前の端(通常アレスティングワイヤがあるような位置)にFPMを置いてそのまま60kt程度で突っ込んで、垂直着陸する場合は艦の横(海の上)にFPMを置いて適当な高さで減速・停止、スティック左右とスロットル前後で位置を調整してからスティック前後で降下、とか。

 スロットルが前後位置に対応しているとすると、例えば最スローでホバーに入ると目標地点がどんどん後ろにズレていくみたいな問題があるはずなんだけど、どうやって対応しているんだろうか? 例えば減速ボタンを長押し中はスロットルの制御が外れて、その状態でスロットルを中央に移動すれば前後指示コマンドがエンゲージ、とかなんだろうか。



 F-35Bの垂直着陸は自動で行う…フライトシミュレーターも公開 | レスポンス(Response.jp)

 通常時の操縦棹(サイドスティック)は「前に押すと下降、後方に引くと上昇」だが、これがSTOVLモード時になると「前に押すと前進、後方に引くと後進」に変わる。

 パイロットがシミュレーターで説明してる操作法と違うぞ……


 メディア向けのシミュレーター体験会とかで触る機会はたまにあるはずだけど、いまいちSTOVLをやったみたいな話は見かけない気がする(海外メディア含めても)。大抵は対空戦、ひねくれた人なら対地戦をやってそれで終わり、みたいな感じなんだろうな。

 自衛隊内部向けの情報収集とかでもなければ、一般のメディアが商売する相手は一般市民で、市民が気にするのは空港周辺の飛行経路とか騒音なんだから、真っ先に離着陸のシミュレーションを触らせてもらって、「こういう飛び方をするとどれくらい時間がかかるから、騒音の継続時間はどれくらい」みたいな情報を集めるべきだと思うんだけど。「タッチパネルで敵を選択して発射スイッチを押せば撃墜できる」みたいな話を書いたってねぇ。いくらFBWで素人が普通に操縦できるほど簡単とはいえ、素人が離着陸にかかった時間をそのまま採用するわけにも行かないしな。



 eVTOLもマニュアルで操作できるやつは、垂直離着陸と水平飛行の遷移があるから、その2つの制御則をシームレスに(本能的に)操作できるモードがあるはずなんだけど、メーカー間で操作方法を統一しようみたいな動きはあるんだろうか? そもそもマニュアル操作はプライマリではないし、マニュアルで操作するにしてもセンサで状況を監視しているから危険な操作には入ることはないから、多少の誤操作は許容してメーカー独自の操作方法になっているんだろうか。


 飛行機の操作方法とヘリコプターの操作方法、それぞれのプライマリの形態に合わせて操作しやすくなっている気がするけど、F-35Bはあくまでも飛行機がプライマリであって、ホバリングは過渡的(着陸時のみ)な使用だから、操作のしやすさ(ホバーモードでの複雑な飛行)は犠牲にしたうえで、本能的に操作しやすい感じになっているのかな。

 eVTOLみたいなものは、巡航はオートパイロットがプライマリで、ユーザーが操作するのは離着陸時がほとんどだろうから、ヘリコプターの操作系になりそう。



 別件だけど、最近の戦闘機ってスティックシェイカーみたいな機能ってあるんかしら? フライトシミュ用のジョイスティック(最近の戦闘機モチーフ)で振動機能をアピールしてるやつがあるけど。

 コンピューター制御の最近の戦闘機って、そもそも失速自体発生し得ないから、失速に近づいていることをパイロットに通知するスティックシェイカーも無さそうな気がするけど。

 失速に入らないなら速度を下げるとどうなるかというと、位置エネルギーを速度エネルギーに変換するんだろうけど、それが進むと結局墜落することになるわけで。あと、最近の戦闘機は背面で飛んでても目を閉じれば水平飛行と同じ感覚になるから、しっかり外を監視していないとヤバそう。だからこそわざわざオートスロットル(必要に応じてパイロットの操作をオーバーライドできるアクチュエータ)を積んでまでF-16にAuto-GCASを追加したりとかしてるんだろうけど。



 ヒコーキやドローンを調べていて、久しぶりにラジコン飛行機に触りたい欲が出てきた。まあ、わざわざ違法だと知ったうえでやりたいかと言われれば、そんなこともなく、合法化の手順を踏もうとも思わず。

 自分みたいな方向性の人間(要するに自作の回路とかペイロードを色々積みたい要求)からすると、小型化はかなり難易度が高いのよな。適当にデカくていいなら、例えばウイングスパン2mとかその程度で作っていいなら、わりといろいろ遊びがいがあるんだけど。


***


 小さいネオジム磁石を21個並べるプレートを作ってみた(最中状に2枚、重ねる前の写真)。

 磁石が小さすぎて単体だとほとんど磁力がない。そもそもamazonで100個入りとかで買ったやつだから磁石としてもあまり優秀なものじゃないだろうし。そういう磁石をたくさん並べても、使った数に見合うような効果は無さそうな感じ。strong sideとweak sideで磁力が違うのは明らかに体感できるけど。

 あとは、外周部は磁束が漏れているはずだから、3x3程度だとそもそも効果が薄い、という可能性もある。それに、立方体の磁石とかを使うならともかく、薄い円筒形の磁石だとこの並べ方をしてもきれいに整わない気もするし。


***


 モードSのデコードのやつ。


 モードSの誤り訂正にはCRC-24(1FFF409h)が使用される。ただしCRCには機体IDやインテロゲータIDがXORされている(場合がある)ので、普通にCRC計算を行ってもゼロにはならない(事がある)。

 SSRモードSインテロゲーションにはインテロゲータのIDが含まれているし、インテロゲータは航空機IDを知っているから、これらを含めてCRCを計算することで、正しい結果が得られる。対して、別の航空機からの応答(ICAOコードが異なる)や別のインテロゲータに対する応答(インテロゲータIDが異なる)の場合はCRCエラーになるから、誤った応答を採用することが無い。パケットの中にそれぞれのIDを含める場合、追加で24bit(ICAOコード)+4bit(インテロゲータID)が必要になるが、24bitパリティにこれらをビット加算することで、シンプルな誤り訂正の中で自動的に排除できる。

 ただ、SSRとして使う分には便利な機能だが、バイスタティック的に使うことが難しい。インテロゲーションが既知なら対象の航空機やインテロゲータIDもわかるけど、レスポンスだけ受信する場合は誤り検出を諦めるとか、いくつかの妥協が必要になる。



 とりあえず、試しにブルートフォースでモードSを復調。10MspsのIQファイルから1Mbpsのマンチェスタ符号を手当たり次第に復号して、プリアンブルとCRCが正しいビット列を吐き出す処理。パラパラとパケットが得られて、DownlinkFormatによるとモードS All-Call応答とのこと。2.7秒程度の間隔でAll-Call応答が出ているっぽい。TCAS用かな?

 全サンプルからビットを復元してCRCでチェックするので、キャリアスケルチでトリガする必要がなく、かなり弱い信号でも復号できる。ただ、CRCみたいな誤り検出・訂正コードはビット位置ズレがあっても(例えば1bitズレていても)、CRCで誤りが検出できないことがある。

 プリアンブルのSNRでフィルタする方法(例えば各パルスの差が3dB以上なら破棄とか)も考えられるけど、プリアンブルのSNRとデータのSNRは同じなので、プリアンブルのSNRでフィルタリングすると、データビットのSNRも一定未満は破棄することになる。なるべく低い信号まで探したい場合は、この方法は使いづらい。そもそもSNRの低い(誤りの確率が高い)データなど使うな、という話になるのかもしれないけど。ただ、キャリアスケルチの場合はノイズフロア付近を取らないように高めのトリガレベルを設定する必要があるけど、プリアンブルのレベルは相対的に低い閾値でトリガできる。



 CRCは正しくゼロクリアにならないが、プリアンブルの形が正しく、データビットの波高も正しく、SNRも良いパケット、つまり見た目上はモードS応答として正しい波形もダンプしてみると、CRCは固定値を取り、ダウンリンクフォーマットは4や11が出てくる。航空機とインテロゲータのペアが固定ならCRCは同じ値が出力されるはずで、DF4はモードC応答(モード3/AはDF5)、DF11はComm-B応答だから、メッセージの形としては正しそうな気がする。

 同時にブロードキャストされているモードS(CRCがゼロクリアになり、非ゼロのICAOコードが含まれているもの)のICAOコードのCRCを求めてみると、先に出た非ゼロ固定値が得られた。

 DF4はM-C応答をM-Sで変調しているような感じで、ATC SSRインテロゲータからの質問ならインテロゲータIDが含まれているはずだが、それが無いのが謎い。ATC SSRではなく、ACAS/TCASみたいな機能によるんだろうか? ACAS/TCAS用の質問にはIIコードは無いはずだから、CRCにICAOだけ載せてIIコードが無いのは説明できる気がする。でもその場合は他者が出したACAS/TCAS質問の応答を誤認する可能性がありそうだが。距離が近いモードSトランスポンダに対してはモードSとは別の(ACAS/TCAS側の)プロトコルで識別するとかするんだろうか?



 モードSのCRC(24bit幅)に24bitのデータを入れた場合、入力と出力は1対1で対応する(複数のデータが一つのパリティに重複しない)。なので、データに誤りが無いと仮定すれば、パリティから適当な逆変換(テーブルを引くとか)で24bitIDに戻すことができる。もちろん、伝搬中にビット誤りが発生すれば、それを検出することはできず、誤ったIDを復元することになる(IIコードが乗っている場合もICAOコードは復元できない)。同じIDが複数検出されればそれを正しいコードとして使うとか、ビット列を厳密に判断する(少しでも弱かったり強かったりするビットが含まれていれば破棄する)とか、色々とロジックは組めそうだが。

 トランスポンダの規定としては、モードSの応答はいずれのビットペアでも2dB以内に収めるように、とのことだから。4dB位を見ておけばいいかな。ENRIの資料では3dBで閾値を設定していたはずだけど、受信側は1dBしか余裕がない。もっとも、送信側は大電力を出さなきゃいけないので電気的に厳しいが、受信側はそこまで厳しくない、ということで、2dB+1dBで設定しているのかもしれないけど。


 モード3/A/CやモードSの応答の形をググると綺麗な矩形波列の図が出てくるけど、Airspy R2で見た感じは、もっとヌメッとした感じの振幅が得られる。おそらく帯域幅を制限しているので正規分布的なエンベロープになっているんだろうけど。

 もう少しサンプルレートの高い受信機か…… HackRFとか? 帯域幅が倍で値段は2倍弱。7GHzまで対応しているけど、2.4GHzとか5.8GHzみたいなISMバンドとか、そのあたりで使われている周波数拡散プロトコル(DSSSやFHSS等)を見るには20Mspsだと厳しいのよなぁ。当面はR2の1.7GHz/10Mspsまでで遊ぼう。



 同じような感じでSIFの受信も行おうとした場合、これらの信号はパルス間隔1.45usで規定しているので、10MspsのAirspy R2とは若干相性が悪い。確かENRIのロガーは20Mspsだった気がするけど、帯域幅の話(18MHzくらいのはず)だけでなく、モード3/A/Cのタイミングが整数に入るように、というような選び方をしていたのかもしれない。


 モードC応答で有効なGillhamコードから得られた高度と、モードS DF4で得られた高度を見てみると、ほぼ同じ値(丸め誤差程度の差)が得られている。同様に、モード3/A応答で得た有効なコードと、モードS DF5で得たコードを比較すると、同じ値が得られている。

 DF5のコードはいくつかのビットが追加されているけど、スコークコードについてはSIFと同じ物理配置で並んでいる。Xビットすらもそのまま残っている。ということは、モードSを決めるに当たってXビットも残しておく必要がある、と判断された、ということなんだろうか。やはり大口顧客が使ってるのかな? ほとんど使い捨てみたいなドローンにわざわざモードSトランスポンダなんて乗せるかな……とは思いつつ、でもQF-16位の規模になれば乗せるか。


 一部の説明だと中央のXビットは常にクリアで、セットされている場合は無効な信号として扱う(無視する?)、というような事が書かれている。この場合、空域にターゲットドローンが存在していても、民間用を始めとしたセカンダリレーダーでは把握できない(スクリーンに表示されない)ということになる。そもそもターゲットドローンを民間航空機がいる空域で飛ばすな、という話なので、普通は問題ないんだろうけど。

 自衛隊で海岸近くでターゲットドローンを飛ばしている部隊もあるから、そういうときに1030/1090MHzをサンプリングすれば面白そうだけど、さすがに怪しまれそう。べつにでかいアンテナを立てるとかするわけでもなく、ダッシュボードに置いたモノポールをノートPCでサンプリングする程度で取れるだろうから、外から見て怪しい感じには見えないだろうけども。

2026年3月11日水曜日

小ネタ






 ロビンソン、お前もか…… いや、順当な方向だとは思うけど。

 飛行制御はシコルスキーのシステムだそうで。ってことは、ガワが違うだけで中身(&管理システム)はU-Hawk(UH-60無人化バージョン)と同じってことになるのかな。米軍向けにU-Hawkを売り込んで、同じシステムが使える低コストのソリューションも一緒に売り込もう、みたいなことを考えてるんかしら。

 シコルスキーの強み(他の無人輸送ドローンに無い点)は何十年も作り続けてきた機体がすでにあって、ロジスティクスも確立されているという点。大量生産のノウハウもあるし、製造ラインもある。機体を運用できる環境も熟知しているだろうし、やはり強そう。


 理想的には腹が開いていて、高度5m程度の場所でホバリングしてウインチで荷物を積み下ろしできればいいんだろうけど、ロビンソンの床下は制御系が通っているし、無人化で追加したアクチュエータは床下に入っているだろうから、底面から荷物を出し入れできるような構造は難しいんだろうな。

 ロビンソンはマストが長いから平均的な身長の人ならメインローターに巻き込まれる危険性は低いけど、テールローターに叩かれるような事態はあり得るし、災害時に支援物資を空輸するような用途を考えると、地上作業が必要な形はちょっと大変そうだが。ウインチで自動で荷物を下ろすような機能があると、緊急事態では下に人がいないか確認する程度の安全管理でも運用できるけど、荷物を下ろすための作業が多かったり、テールローターに巻き込まれる可能性があると、送り先に対応できる人間が必要になる。

 あとは、軍の荷物の輸送とかを考えても、自動で荷物を下ろす機能があるなら、適当な広場に自動で着陸して直ちに荷物を下ろしてすぐ飛んで、みたいな運用ができるけど、人間が降ろさなきゃいけない場合は広場でそこそこの時間の作業を行う必要がある。迫撃砲とかで狙われると危ない。まあ、自動で荷物をおろしたって、その場所に照準して拾いに来たところを撃たれたら同じだけど。



 ニデック不正会計問題 “カリスマ経営者”永守重信氏 いったい何が | NHKニュース | 企業・経営、東京証券取引所、京都府



 小型高機能科学衛星「れいめい」の運用終了について | 宇宙科学研究所



 人工衛星の帯電を「光」で検知するシリコンフォトニクスセンサを開発~宇宙開発を悩ませてきた静電気トラブルに新方式で挑む~ - 国立大学法人 岡山大学

 電位に応じて透過率が変わるデバイス。人工衛星を想定したセンサの話だけど、電気の話なので、電位差の意味でΔVが出てくる。

 細い光ファイバ2本を引き回せば好きな場所の電位(デバイスに含まれる電子の数)を測定できるのは、他のセンサ(電気信号を出すようなセンサ)に比べれば、引き回しは便利かもしれないけど、計測点ごとに光源と受光素子を用意しなきゃいけないので、光電変換が面倒そうだ。とはいえ、光源は1個を配分してもいいだろうし、受光は適当なイメージセンサとかに突っ込めばいいと考えれば、比較的小型に作れるのかな? あるいは、サブナノ秒の光源/光量センサがあれば、ファイバの長さを数十cmずつ変えて、ファイバ自身を遅延線として使って、計測点1箇所あたり1本のファイバで時分割測定ができそうだが。

 光(ファイバ)の分岐や結合デバイスってどれくらい研究されているんだろうか? 現在の光通信は基本的に送受信機を1対1で接続して、多対多接続する場合でも基本的には周波数分割だから、一つの波長を均等に分けたり統合したり、みたいなデバイスはあんまりなさそうな気がする。フライ・バイ・ライトの黎明期にはこういうデバイスもいくつか研究していたような気がするけど、そもそもFBL自体それほど研究されていないからな。

 あと、宇宙機内の光ファイバでアナログ量を通す使い方ってどれくらいされているんだろう? 放射線の影響でファイバの損失が大きくなると経年で信頼性が下がりそう。宇宙機内の光ファイバはデジタル通信とかが多そうだが。光ファイバジャイロだと干渉の強さを見るから、ファイバでの損失の影響も受けると考えれば、宇宙でアナログ光量を通すような使い方も実績はあるのかな? FOGは変化の少ないバイアスはSTTで吸収している可能性もあるけど。



 ソニー、PlayStation独占作のPC移植を停止か その理由とは - CNET Japan

 自社ハードを売るために独占タイトルの別ハードへの移植をやめた可能性、という話。

 任天堂は昔から自社ハード専用でしか売ってないから別として、それ以外の勢力(具体的にはプレステ、Xbox、PC)がそれぞれ独占タイトルを売ると、不景気の時代には複数のハードを購入できる資金力のあるプレイヤーはあまり多くなくて、マルチプラットフォームタイトル+どれか1個のハードで遊べる独占タイトルを買うだけになって、独占タイトルを増やす方向は販売本数が減る方向になりそうな気がするけどな。

 あるいは、複数ハードを買い揃えられる(ゲームに使う金額が大きい)層狙いでゲームハード・ソフト共に高価格化するか。その場合も加速度的に売上が減るポジティブフィードバックだと思うが。

 あとは、独占タイトルを数年後に移植しても思ったほど売れない、というのは、最近はゲーム実況を見て、それで遊んだ気になって、わざわざ数年後にフルプライスで買おうと思わない、みたいな理由もある程度あるんじゃないだろうか。かといって配信禁止にすると、話題にならないから売れないし。配信時代だと、ストーリー重視のゲームは厳しそうよね。かといってゲーム性重視だとプレイヤーを選ぶし。集客力の強いストーリーなら配信で見ずに自分でプレイしたい、というユーザーを集められるんだろうけど、よほどのネームバリューがないと難しいだろうし。

 任天堂は「任天堂」という超巨大IPがあるから独自のエコシステムが成立するけど、他のメーカーが後追いで独占タイトルに依存したハードの売り方をやるのはかなりハードな気がする。

 ゲームが売れないというのは、「本が売れない」とか「音楽が売れない」とか、そういうのと同じで、コンテンツが多様化してそれぞれのパイが小さくなっているだけで(スマホゲーで満足する層も多いだろうからそことも食い合いになるし)、小手先の工夫程度じゃどうにもならなそう。最終的には汎用マシン(Windows or Linux)あるいはクラウドゲーミングに収束して、任天堂みたいな特殊な製品を除けばゲーム専用コンソールってのは将来的には無くなりそう。でも四半世紀も売り続けてきたブランドを捨てる判断は難しいだろうなぁ。プレステはやはりメーカーを背負うブランド力があるだろうし。

 α(デジイチ)とかを認知するのはよほどカメラが好きな子供でなければ、大人でも知らない人のほうがほとんどだろうし、テレビメーカーなんて世界中にいくらでもあるけど、PlayStationのブランドは子供の頃から刷り込まれるし、たとえ自分や友だちが持っていなくても名前は知っているという人も多いだろうし、SONY製品としての知名度は抜群だろうからな。


 いくら任天堂が強くたって、将来的に汎用計算機orクラウドゲーミングに収束した場合、わざわざ任天堂のハードに最適化させたゲームソフトを作ろうというインセンティブもなくなるから、そのうち任天堂のハードもなくなるんだろうか? それとも、任天堂の独占タイトルでハードを普及させている限りは、その普及台数を見込んで移植が続けられるんだろうか?

 あるいは、最終的にはLinuxベースのOSを積んで、ARM/Linuxみたいな実行環境になる可能性もあるか。任天堂独占タイトルの実行はハードウェアベースのライセンス管理で他のシステムでは走らないようにしたうえで、他のシステムで走るゲームも実行可能、みたいな。


 Intelがゲームハードを作ったらちょっと面白そうな気はするが。自社で半導体ファブを持っているし、CoreやArcみたいなプロセッサも自社で設計しているし。Steam Machineみたいに別の収入源が無いからゲームハードで稼ぐしかないのがちょっと辛いけど。既存のx86系PCと全く同じアーキテクチャだから、WindowsやLinuxを入れればゲーム以外にも、そこそこの計算リソースを持ったコンパクトな計算機としても売れる。計算能力が中途半端で売りづらそうだが。



 クラウドゲーミングは、StarlinkとかLeoに計算機が乗った宇宙データセンターが作られると数百kmゼロホップで直結できるから、往復10ms未満で通信できて、手元にちょっと描画の早いモニタ(OLEDとか)があればほとんど相殺できる。それにゲームはプレイヤーに紐付いたデータがかなり小さいから、衛星のハンドオーバーでのオーバーヘッドもほとんど無い。と考えると、宇宙データセンターを使ったクラウドゲーミングはかなり優位性が高い。あまりにユーザー密度が高いと計算能力が不足するので、1衛星あたりのユーザー数の少ない過疎地域ほど宇宙ゲームセンターとの相性がいいということになる(逆に人口密度がバカ高いエリアは直近の地上DCで計算するほうが色々と楽)。

 そういう時代になると、世界中のどんな隔絶した場所にいても、空が見えている限り、STBにアンテナと適当な画面、それとゲームパッド(orキーマウ)を接続すれば、映像デコーダだけが乗っている程度のチープな機材で最新のゲームが遊べるようになる。そういう環境の人からどうやってサービス料を徴収するかは別にしても、「ネット環境が弱いからゲームを遊ぶにはゲーミングPC(orコンソール)を買う必要がある」という状況ではなくなる。

 都心部なら地元のデータセンターで、地元にデータセンターがなくても宇宙DCで、クラウドゲーミングが遊べる時代になると、任天堂みたいに自社IP専用ハードを売るモデルはどうなるのか。衛星通信の性能にもよるけど、スマホを直結して高速通信ができる、みたいな話が本当なら、スマホ単体で高品質なゲームが遊べる時代に、手元でレンダリングしなきゃいけない携帯ゲームコンソールは重いだけで画質は悪いし電池の持ちも悪いしと不評になりそう。


*


 英語圏の人のFH6のリアクション動画で時々「バックファイア」というのが出てくるけど、ja.wikipediaだとエキゾーストから出てくるのは「アフターファイア(内燃機関で燃焼室の後(after)に出てくる炎)」であって、バックファイアは燃焼室の前(back、系を戻る)で起きる異常燃焼のことである、みたいなニュアンスの説明が書いてある。でも英語圏の車にそこそこうるさいであろう人が何人もエキゾーストから出る炎を「バックファイア」と言っているということは、やはり車の後ろから出る炎はバックファイアで良いんだろうか?


 バックファイアー - Wikipedia

 Back-fire - Wikipedia

 en.wikipediaを読む限り、エキゾーストパイプで燃えるのがバックファイア(backfire)あるいはアフターバーン(afterburn)、吸気側で燃えるのがアフターファイア(afterfire)あるいはポップバック(popback)、という感じっぽい? 前も後ろもどっちもbackあるいはafterがあるの曖昧すぎるだろ。

 ただ、燃焼室の前後どちらでも鋭い音がして、俗にバックファイアと呼ばれるが、エンジンメカニックによるトラブルシューティングでは、排気システムではバックファイア、吸気システムではポップバック、とより厳密(more strictly)に定義している、と書いてある。

 ja.wikipediaに書いてあるのはen.wikipediaに書いてあることと完全に逆だな。

 日本語の資料だと、バックファイアという用語は明らかに吸気系での異常燃焼を指して使っている。車(自動車)の分野だけでなく、それ以外のエンジン機器、例えば芝刈り機とかプレジャーボートでも同様で、JTSBのレシプロ機のエンジンに由来する事故の報告書でも、注釈で「「バックファイア」とは、(中略)、吸気管内の混合気に着火し、その炎が吸気系統まで逆に伝わることをいう」と書かれている資料がある。


 日本語と英語で全く同じワードなのに意味が真逆になっているんだな。


*


 ロケットの新規開発って、模試無し滑り止め無しの一発受験、天候不良や機材トラブルがあれば数日順延、失敗したら来年再挑戦、みたいな感じなのがねぇ。特に日本の民間開発は観光需要まで含めて予算調達しているから、その方面に迷惑をかけないように、できるだけ期日通りに打上げたいみたいなプレッシャーもあるし。

 あらかじめ模試みたいな感じで、例えば第1段だけ作って上段はダミーウエイトを積むとか、あるいは第1段を省略して第2段を地上から打つとか、そういう感じでいくつかに分けて開発する手順だってあるはずだけど、でもその場合はそのロケットは絶対に宇宙(周回軌道)までは行かないわけだから、観光需要が取り込めなくなる。そうすると観光需要に当て込んだ地元からの投資が得られなくなる。MOMOだって集客できてるんだから、サブオービタルだってある程度の観光需要はあるんだろうけど。

 要素毎の試験を飛ばしていきなり本物の衛星を積んで打上げると、あとはまあ言わずもがな。SpaceXだって同じだろと言われるとぐうの音も出ないが。

 ある程度の資金力があって、すぐに事業化する必要のないところ、具体的にはホンダとかのあたりは着実に一歩一歩やっているんだろうけど、そういうところは基本的に情報は出てこないからあまり話題にはならず。


 あとは、某社に関して言えば、頑なに失敗を認めない企業文化がちょっと違和感あるなー。言葉狩りに近いやり方は危うさを感じる。社内の誰かが怪しい点を発見して「これは失敗に繋がる可能性があるから細かく確認したほうがいいかもしれない」と思ったときに、社長が「失敗という言葉は使うな!」と訓示していると、言い出せなかったり、とか。社内の雰囲気は外からはうかがい知れないから、実際はどうかわからないけど。


 あと、初めてだから安全寄りに、という判断はわからないでもないけど、でもそれでフルスケール機(実機)を何度も落とすくらいなら、むしろペイロードは多少減らしてでも追加の保安系機材で厳重に管理したうえで、オンボードの保安ロジックはルーズに設定して、in flightのデータを確実に取得しつつ試験機の実際の保安系は地上からコマンドする、みたいなコンフィグでやったほうが、実績を積むという点では良かった気がする。そういうコンフィグなら少なくとも1号機や3号機はもっと先までシーケンスが進んでいただろうし。オンボードロジックの誤判断で第1段燃焼中に2回も落としたとなると、次もそのロジックの微修正で打つのか、あるいは根本的に違う方向に行くのか。

 でも、日本の民間企業が使える機材で、コマンドベース(非自立型)の保安系を作るとなると、大変なんだろうな。射点から見える範囲ならJAXAの可搬機材をいくつか借りればシステムとしては組めるだろうけど、地平線を超えたところをカバーできる、海上or空中の通信システムはあまり思いつかない。

 DRTSみたいな衛星があれば、適当な場所に衛星と直結できる地上局を作ってロケットの保安に使うこともできるだろうけど、JDRSでロケットの追尾は厳しいだろうし。種子島や内之浦の敷地を借りてそこから打てば地上RF系はそのまま丸ごと借りて使えるけど、でも和歌山から打つと大々的に謳っている以上はそういう事もできないだろうし。

 結果論だけど、JAXAがTDRSみたいにロケットの追尾もできる中継衛星の保有を続けていて、かつ射点設備も既存の設備を民間に貸し出すようなスキームを用意しておけば、もっと楽に民間ロケットの開発が進んでいたんだろうな。種子島空港は南東向きで人口密集池の上空を通らずに比較的すぐに海に出るような場所にあるから、飛行機形態で離陸する機体の試験もできるだろうし。ロケットを追尾できる中継衛星はJAXAだって持ってれば便利だろうに。打上げ用の重要設備が手が届かない場所にあるのは怖いけど。


***


 重い腰を上げて、AirspyでIFF Mark Xを受信/解析するソフトを作成中。とりあえずキャリアスケルチだけ実装して、信号をWAVファイルに保存。


 ファイルフォーマットとしては、通常の32bitWAV形式で、dataチャンクの中にさらにサブチャンクを追加する形にしている。たとえばdateチャンクでタイムスタンプを保存し、waveチャンクで実際の波形を保存する、といった形。

 IQ信号は16bitなので4byte/サンプル、dateチャンクの中身を4バイトアライメントで保存すれば、サブチャンクのヘッダがゴミに見えるけど、通常のWAVファイルを取り扱うソフトで開くことができる。

 現状はdateとwaveしか保存していないけど、例えばiffxとかjsonみたいなチャンクに解析結果を保存しておけば、後でファイルを開くときにいちいち再解析しなくても済む。ファイルサイズが増えるのと、それほど複雑な信号じゃないからファイルを開いたときに(必要に応じてパラメータを変更しつつ)再解析するほうが便利じゃねって可能性もあるけど。



 スケルチは2段階のレベルを設定して、H1を超えた場合はT1遡って最初にH2に達した場所からT2遡った場所から記録を開始し、一定期間(T3)の間H2を超えなかった場合は、最後にH2を超えた場所からT4経った場所で記録を終了する。



 WAVファイルのwaveチャンクから振幅をグラフ化

 縦軸が振幅、横軸は時間(マイクロ秒)。補助目盛線は、上のふたつが1.45us、下は2us。

 上段は1723でモードCに割当がないのでモード3/A応答。

 中段は3410でモードCに割当があるのでFL153の可能性。

 下段は恐らくモードS応答。全体の長さがプリアンブル(8us)+56bit(56us)=64usと整合的。

 当該の時刻をFr24で確認すると、モード3/A応答は値が確認できる。高度についてはBARO.ALT.で比較的近い値が得られている(上昇フェーズなので多少の時刻差で大きく高度が変わる)。モードSはドキュメントが少なくてデコードが難しい。


 試しにRasPiの30002ポート(dump1090の生ビット列)と同時に保存したIQファイルを読んで、モードSらしい波形を目視でデコードし、30002を保存したファイルでテキスト検索すると、そのビット列が見つかる。ということで、少なくともIQ信号から生ビット列へ変換するのはできそう。10Msps(ビットレート*10、ボーレート*5)なので、マンチェスタ符号の復号もそう面倒ではないはず。



 現在走らせているRTLベースのロガーは、一定の信号強度を検出したらその前後の固定長を保存するだけのもので、12bit応答にSPI分の余裕を見た長さに設定しているから、Mode-S系の信号が入ると正しく保存できない問題があった。RTLの2.76Mspsの場合はMode-Sの復調はできないので実質的に問題はないんだけど、Airspyの10MspsではMode-Sも復調できるから、その信号は正しく保存する必要がある。というかMode-Sを適切に復調したいからAirspyを買ったまであるので、保存できないと本末転倒。

 RTLは2.76MspsIQ8bitで、1日辺り300MB前後の容量になる。Airspyは10MspsIQ16bitで、単純計算で7倍のデータ量になるので、1日あたり2GBを超える可能性がある。1年と少しで1TBですよ…… まあ、そのあたりの心配は追々。



 IFFにはローマ数字でMark IIやMark IVとするものと、experimentalを意味するMark Xや、それの発展型のMark XIIAのように、いろいろな種類がある。Mark XIIA(マーク・エックス・ツー・エー)は「実験用の2つ目の発展型」というようなニュアンスだけど、たまにIFF Mark 12Aというような書き方がされることもある。



 SDR#のベースバンド信号をWAV(32bit)に保存する機能、ファイルサイズが4GiBを超えると自動的に分割されるけど、このときにどうやら最後の1バイトが捨てられているらしい(最大ファイルサイズが2^32-1バイト)。残りの1バイトが次のファイルに引き継がれる、みたいな実装ではない(次のファイルにもWAVヘッダが付いてるんだから当たり前か)。WAVはリトルエンディアンなので、最後の1バイトが捨てられると、例えばゼロ埋めで戻すとかなり大きな誤差が発生することになる。



 C#でif (_hoge is Hoge hoge){}はブロックの外でhogeに触れるのに、while(_hoge is Hoge hoge){}はブロック外でhogeに触れないの、地味に不便。例えばwhile(_hoge is not Hoge hoge){await Task.Delay(10);}みたいに待ち合わせしようとするとHoge?hoge;while((hoge=_hoge)is null){await Task.Delay(10);}みたいにしなきゃいけない。


2026年3月4日水曜日

小ネタ



 TOUGHBOOKとMacBookの中間みたいなデバイスがあったらニッチな場所ではウケそうだけど、数が出るようなものじゃないし、安くはないだろうな。値段が多少高くても計算能力が高くて手荒に扱えるノートPCが欲しいという分野は、エクストリームスポーツのその場編集以外の分野でもいくつかありそうだけど。



 地球との通信に依存しない自律的な宇宙航法へ一歩 | 理化学研究所

 3UキューブでX線パルサー航法の実証。

 現状は50km程度の精度。地球周回軌道だとGPS等に比べれば精度は悪いが、惑星間や恒星間も地球に依存せずにこの精度が出る。

 とはいえ、地球周回軌道は地球の周りを回ることで信号が変調されるから軌道誤差を検出しやすいけど、惑星間や恒星間みたいにほとんど直線で近似できるような軌道だと、今回の手法は使いづらそうな気がする。

 ロックインアンプで位相を決めれば、ミリ秒パルサーなら数千kmくらいの曖昧さになるから、位置誤差を数百km程度におさめておけば発散を防ぐ程度は使えるか。だからこそ光格子時計云々みたいな話も出てくるんだろうし(理研だからってのもあるだろうけど)。


 X線パルサーって、近い将来に人類が到達しうると期待できる範囲(十光年程度)であれば天球上の位置関係はほとんど固定だろうから、強度の強い(かつ天球にできるだけ分散した)X線パルサー5,6個程度を狙い撃つ検出器のアセンブリを使って、相互の位相で4次元時空を拘束するみたいな使い方ってできないんだろうか。キューブサットに積める程度の検出器ならアセンブリにしてもバカみたいに高額なモノにはならないと思うが。

 X線はシンプルなフォトンカウンタで位相の測定だけを担当、対象天体に向けるのは宇宙機側のAOCS(スタートラッカや何らかのトルク源で慣性ロック)で対応。あくまでも4次元座標を拘束するだけのセンサ(角度や角速度は決定しない)の方向性で。2分割とか4分割の受光素子を使えば測角もできないことはないだろうけど、X線のコリメーションの面倒さや画角の狭さを考えると、姿勢決定は可視光付近でやるほうがシステムとしては楽なはず。



 段ボール製ドローンが革命を起こす!?防衛・人命救助に期待のエアカムイで飛行実験しました - YouTube

Q.なんで誰も段ボールでドローンを作ろうとしなかったの?

A.段ボールで飛行機が作れるなんて誰も思わなかったから

 趣味の模型飛行機レベルで言えば、YouTubeで軽く探すだけでも、海外のYouTuberが作った段ボール製の飛行機はいろいろ出てくるんだよなぁ。そもそも日本人が固定翼ドローンを作ろうと(or商品化しようと)していなかっただけじゃねって気がするが。飛びモノの面白そうなアイデアはたいてい海外のYouTuberが作っていると考えて差し支えない。

 日本でも10年くらい前までは、趣味で変なヒコーキを作っている人は多かった気がする。百均で売ってる細長いバットを胴体にしたラジコン飛行機とか、一時期雑誌で特集されてたくさん作ってる人がいたし、他にもそういう変なアイディアを実際に試して、雑誌に投稿して「どや」ってやる文化は日本にも昔からあった。でも、ここ数年の法規制を考えると、日本で趣味で変な飛びモノを作るような人はだいぶ淘汰されただろうな。面白そうなアイデアがあっても、「国交省大臣の許可を取ってね^^」じゃぁ、実現することはそうそう無いだろうし。


*


 大昔にテレビか何かで、畳にウエイトをつけて重心を合わせて、スキーのジャンプ台か何かから滑空させて飛ばしたような実験なかったっけ? 要するに適当な面積と翼面荷重があってバランスが良ければ何でも飛ぶんだよ、という話につなげたいんだけど。

 段ボール製ドローンに限らないけど、いかにも「飛行機らしい」形で作らなくてもいいんじゃないかなぁ、って気はする。売り込むに当たって「これは飛行機ですよ(これはちゃんと飛びますよ)」というのを説明しなくても目で見てわかるというのは強いんだろうけど。

 有限長で切り落とした2次元翼を段ボールで作って、全翼機的な物体を作っても良さそうな気もするけどな。重心を合わせておけばある程度は飛ぶだろうし、たとえ飛ばなくても適当な制御ボードで何個かのサーボを制御すれば飛行制御できるだろうし。プッシャー式なら電装系は全部機体後部にまとめられるから、機体の前方をクラッシャブルゾーンとして使えば、適当な硬いもの(地面なり、鉄板なり)にぶつけて回収できるし。段ボールの値段が1枚数千円、電装系が数十万円、くらいのバランスなら、段ボール(クラッシャブルゾーン)は消耗品扱いでいけるだろうし。プッシャー式だとハンドランチが怖い、というのなら、モーターだけ前において、モーター/ペラは消耗品にするとか。

 2次元翼の全翼機が作れれば、大量の機体をめちゃくちゃコンパクトに格納して、飛ばすときは1枚1枚引っ張り出すだけでいいし、一度に大量に運用したいなら、箱を丸ごとUH-1やC-2から落としてスタティックラインで引き裂いて、出てきたやつが勝手にデタンブリングして飛んでいく、みたいなこともできるだろうし。

 クワッドコプターみたいに既存の航空力学/制御理論と全く別系統のモノが出てきたのに、固定翼は延々何百年も前のデザインを引き継いでいるのがなんかつまんねーんだよな。有人機は莫大なコストを掛けてCCV/RSSで古来の航空理論とは相容れない設計もあるけど、比較的安価な機体ではまだ静的安定に依存した機体が多そうなイメージ。/* RSS機だってX-29みたいな一部を除いてほとんどは古典的な飛行機と同じ見た目だけど */

 ラジコンヘリは本質的にヨー安定が無いので、一般的にジャイロセンサが搭載されている。バーレスもデジタル制御かな。ラジコンヘリのジャイロをラジコン飛行機のロールとかピッチの安定化に使う例は、皆無ではないだろうけど、ほとんど見かけなかった気がする。

/* マルチコプターみたいな空飛ぶクルマ的なやつも制御則が角度制御ループなのも、もうちょっとなんとかならないのかよ、とは思うのだが */



 平板(平らな長方形で板状の構造)を滑空させる例をググってもあまり見当たらないので、試しに試作

 厚紙の前方にウエイトを貼り付けて重心を調整。面白い見た目だ。

 M3x50のボルトを3本貼り付けて、重心位置28%あたりで綺麗に滑空する(もうちょっと前よりのほうが安定するかも)。矩形翼(テーパー比1、後退角0度)は重心位置の計算が楽でいいな。

 静的な安定度が無いのと無制御なので、投げれば斜めに進んで狭い部屋じゃ長距離を飛ばすことはできないけど、とはいえ結構ちゃんと「滑空」する。少なくともヒラヒラ回転したりする感じではない。変なロールも無いし、こういう形状でも実は結構静的安定は強いのかもしれない。

 翼型は無い。投げるときには両端が上がるような形状に持って、前後方向の剛性を得て力を加えている。なので形としては上反角になる。揚力が与えられれば当然中央部が下がるわけだから、飛行中もB787みたいに反り上がった形になるだろうし、それでローリングが始まっても打ち消す方向のトルクが与えられるはず。ヨーイングした場合はヨーの逆方向の端面が出て抗力になるから、ヨーも安定は正かな。ピッチングの安定はあまりなさそうな気がするけど、とはいえこれだけウエイトを積んでいれば、短距離なら慣性モーメントで吸収できそう。

 ということで、こういう形状でも短時間なら無制御で滑空できる、ということは確認できた。

 ウエイトは10g程度かな? 紙も同程度だろうから、トータルで20g程度か。結構重いな。

 ラジコン用の受信機やマイクロサーボ数個で40g程度、電池で25g程度、残り35gで構造、はちょっと厳しそうだな。滑空だけでも、100gに収めるのは難しそう。そりゃまあ、屋外でラジコンを飛ばさせないことを意図した法律だから、簡単にクリアできるようには設定していないだろうけど。



 ちなみに、畳で計算してみると、1枚30kg、重心を合わせるために2倍で60kg、面積が1.7m²として、翼面荷重は35kg/m²くらい。いわゆるセスナ機(172とか)の翼面荷重が70kg/m²程度だそうで、第一次世界大戦頃の機体が40kg/m²程度であることを考えれば、それなりの速度を出せば、畳は全く問題なく飛びそう。相当な速度が必要だろうけど。

 30kgを丸々推進やアビオニクスに割り振るなら、結構な余裕がある気がする。5kg程度のガソリンエンジンに2,3kgの燃料と、適当なラジコン装置を積んで、さらに1,2kgのペイロード(余裕がないならGoProでも)を積んで、遠隔操縦で数十分~数時間飛んでいられる畳、くらいは作れそうだな。操縦翼面が大変ではあるけど、コンパネ切って蝶番で何枚か貼り付けてさ。

 畳が重すぎると言うなら、OSB合板なら重さは半分になるから、もっと簡単に飛ばせるはず。

 しかしまぁ、こんなけったいなラジコン飛行機を現代の日本で飛ばせるかどうか…… 飛行特性が明らかに怪しい(安全性が期待できない)見た目の飛行機を飛ばすのは違法だよ、という考え方を採用すると、畳ドローンは違法ということになりかねない。


 国交省のハンドブックによると「遠隔操作または自動操縦による飛行の制御が著しく困難である無人航空機」は登録を弾かれることになっている。ということは、日本国内で無人RSS機(御役人が静的安定性を有さないと判断するような形状)を作るのは無理そうだ。そういう機体を作りたいなら海外で飛行試験して安全性を確認してから日本に持って来い、みたいなことになるのかな。

 一応、試験飛行届出みたいなフォーマットもあるけど、これで認められるには区域外に出る航空機を網で捕まえられるとか、30m以下の十分な強度の紐で締結するとか、わりとアホみたいな条件が設定されている。とはいえ、30mの紐で最大限飛ばせば直線でも50mくらいは飛べるわけだから、ライトフライヤー号の最初の4回の飛行(32m、37m、53m、61m)に相当する程度には飛行できるんだよな。「網で捕まえられる」というのも、人間が虫取り網みたいなもので捕まえるわけじゃなくて、バッティングセンターみたいな感じで5面を覆っていればそれでいいのかな? でもそれなら屋内扱いで申請無しで試験していいんじゃないのって気もするし。法律難しいね。



 1枚板が飛行機として飛べるなら、ポリカ板で作ったっていい。上や下から見ても推進系とかアビオ類を除けば透明だから、目視での発見がかなり難しい。透明部分は樹脂だからRCSも低いはずだし、わりと嫌な相手になりそう。

 あるいは、ガラス板でも良いのか…… 実用面での利点は全く思いつかないから、完全にYouTube用のネタ枠だけど。模型飛行機用のジェットエンジンとかを積んでかっ飛ぶガラス板。そりゃ面白いだろうよ。全天球カメラを載せたって邪魔になるような構造は一切無いしな。


***


 タイムコードジェネレータ(L0版)、今まではDMAとかで処理していたけど、試しに割り込みで処理するように改造。どちらにしろ色々管理しなきゃいけなくて面倒なのは同じだけど、割り込みで処理するほうが自由度は高い。

 他にタイミングクリティカルな処理があるならDMAのほうが安心な気もするけど、今回の場合はタイムコードに専念すればいいので、割り込み優先度を高くして、各種信号もタイマのプリロードを経由するので、基本的にはタイマ更新に同期して(ソフト処理のジッター無しに)出力できる(IRIG Jもタイマで生成したCTSに同期)。


 10PPSでトリガしてCTS(黄)とIRIG J-2y(紫)

 PPSとCTSは同じタイマから出しているけど、なぜかCTS信号はPPS信号より8ナノ秒ほど早く出ている。CTSの立ち下がりからUSARTの立ち下がりまでは221ナノ秒程度。外付けCMOS発振器の8MHzからコアを32MHzで、USART(APB1)を16MHzで駆動しているので、250ナノ秒で4クロックになる。前回APB1を32MHzで駆動して約125ナノ秒(4クロック相当)だったので、CTS立ち下がりからUSARTのスタートビットまでは4クロックで固定っぽい。

 ただ、前回はクロックエラーで片付けていた若干の時間のズレは、比較的精度の高いクロック(10ppm前後と想定)に変えても、やはり残っている。というか前回は124.7nsで0.2%程度の差だったものが、今回は13%まで増えている(前回はクロックエラーで打ち消していたという可能性もあるけど)。STM32のUARTはコアクロックと完全に同期して(同じエッジで)動作するわけではないのかな?



 現在のところ、1MHz、1kHz、10Hz、1Hzのパルス信号と、IRIG J-xy(12-14, 25-29)を出力できる。時刻コードはUART(115.2kbaud)で設定できるが、タイマの分解能が1msなので、時刻設定分解能もそれになる。タイマのカウンタをリセットしてもう少し精度よく同期することもできるけど、コマンドのパースはソフト処理だからある程度のジッターがある。割り込みとかいろいろ使って追い込むこともできるけど、あんまりやっても使わんしな。問題が出たら考える。



 STM32L0のUSARTのBRR、リファレンスマニュアルにはUEが0の場合にのみ書き換えができる、と書いてあるけど、実際にはUEが1のときに書き換えても反映されるらしい。ボーレートの計算方法の箇所には、BRRへ書き込みを行うと新しい値が使用されるから通信中はBRRを書き換えるな、というような書き方。

 本来の意図としては、通信中にBRRが変わるとデータが破損するから、BRRを書き換えたいならUEが0のときに書きかるのが安全だよ、というような感じなのかな。それにしたって、書き換え後に相手が送信しているタイミングでUE=1にして受信を開始するとビット同期がずれるから、結局は何らかの手段で文字化けを検出するような機能が必要になるはず。

 あとは、UARTを止めるためには送信中のデータがないことや、相手が送信していないことを確認して行うべし、という建前があるので、なら止めないでも通信していないことを確認してBRRを書き換えれば良くね?という気もする。



 前回貼り忘れた、サムホイールスイッチをADCでサンプリングするときの、値の期待値の図

 10箇所の接点を100Ω±5%で分圧して、VDDとGNDの間にも100Ωを入れて、11本の100Ω抵抗が直列に接続され、常に3mAが流れる。ADCではコモンをサンプリングし、スイッチで選択した場所に相当する電圧がサンプリングされる。また、ADCはSTM32内蔵のプルアップ抵抗(45kΩ±45%)を使用して、オープン時(断線orスイッチが浮いている状態)ではVDDが計測される。コモンが地絡した場合も検出できる。

 上の箱ひげ図では、誤差がない場合の値を中央値として、各抵抗のワースト誤差で取りうる値を箱で表現し、誤差無しの値を等分割した範囲をウィスカで表現している。ウィスカの範囲よりも箱が小さいので、1次関数で適当な整数に変換すれば、0から9ならホイールスイッチで選択した値として、0未満なら地絡、10以上ならフロートor天絡として判断できる。


 CubeMXだとADCピンをプルアップすることはできない。GPIOをopen-drain/highで初期化して、ユーザーコードでADCと接続したりすれば、そういう使い方ができる。オープン受けだと地絡/天絡の検出や、プルアップを使用したフロート検出ができない(抵抗を外付けする必要がある)。

 外部の分圧抵抗が十分に小さいので、STM32内蔵抵抗の大きな誤差はほとんど影響が無い。誤差の大部分は分圧抵抗の成分なので、1%品を選べばもっと密に配置できる。とはいえ、16ポジのロータリースイッチとかを使いたいならHEX品を買うほうが楽だろうけども。というか、サムロータリスイッチだって普通はBCDだと思うんだけどな。


 今回は最終的にピンの余りが無いので、スイッチは常に電源に接続され、3mAを消費する。GPIOに余裕があるなら、ADC開始前にスイッチに給電を行い、ADC後に電源断とすることで消費電力を数十分の1まで減らせる(サンプリング周期やデューティ比による)。GPIOで管理するのが面倒なら、TIMのPWMでON/OFFして、別のチャンネルからADCをトリガすれば、ADCサンプリング完了フラグでADCを読むだけで済む。タイマの本数が多い大型のマイコンならそういうやり方もあり。


2026年2月25日水曜日

小ネタ


 先週は風邪でへばっておりました


***



 FH4(UK)だと、走ろうと思えばわりとどこでも走れる自由度があったけど(FH5は未プレイ)、日本マップはその自由度が低そうな感じがするのが若干の懸念点。FH4もそれなりに起伏はあるけど、日本の場合はとにかく崖が多いからな。降りるのはともかくとしても、登るのは大変そうだ。まあ、ドライビングゲームだしちゃんと調整してあるだろうけど。

「クルマですから」と言い訳して空飛ぶクルマを何機か用意しておいて、普通の車では行けないような場所には空から行けるようなシステムがあれば面白そうだけど、さすがにForzaで空は飛べないだろうなぁ。イースターエッグでトヨタの資金が入ったJoby、大穴狙いでHondaJet。eVTOLはどこでも離着陸できるから便利そう。HondaJetはさすがに厳しそうだな。FH6のマップエリア的には空港は少なくとも5箇所程度は配置できるだろうけど、それにしても。過去作だと飛行機とのレースみたいなミッションもあったし、今作は新幹線とのレースもあるらしいから、可能性としてはHondaJetとのレースも排除はできないか? ガンダムが出てくるなら、HondaJetくらい不思議でも何でもないか。


 FH6とACSは地域的にかなり重なってるはずだし、比較とかあっても面白そうだなー。/* YouTubeのUbiの本チャンネル、ACSの動画全部消えてる? */



 PCストレージ大手Western Digital、「今年のHDD供給枠はほぼ完売」。HDDにもAI特需の波 - AUTOMATON

「AI時代のローカルシステムなんて安物(ネットワーク機能と映像デコーダだけ乗ってるスマホorタブレット)で十分だよね? 計算に使えるリソースは全部買い占めちゃうけど問題ないよね」みたいな感じ。ゲームみたいにメモリやら色々必要な場面も、サーバーサイドでレンダリングまでやるようなプラットフォームがそれなりに進化してきたからなぁ。手元に高い計算リソースを置くような使い方は近い内に駆逐されそうな勢い。

 一昔前は@homeみたいな分散コンピューティング(一昔前ならSETI、最近話題になったものだとFolding)があったけど、このままコンシューマー向けノードの高コスト化が進むと10年程度で無くなりそうだな。

 そういう時代になると、ビットコインみたいな非商業的(非プロプライエタリシステム)のブロックチェーンってどうなるんだろうか。マイニング用の機材がどんどん高コスト化して計算アセットが減少していくと、計算量で信用を確保するようなシステムはつらそうだが。そのうち計算ノードが減って多数決が弱くなって、どこか予算力のある組織が安くなったオンライン計算リソースでゴリ押しして掠め取って、バレないうちに現金化して、みたいなこともできたりしないかな。



 ロボットと「Xbox」のコントローラー 冬季五輪の写真の舞台裏を探る - CNN.co.jp

"主要なイベントでは、撮影から処理されるまで30秒以内ということも珍しくない"

"ロボットカメラは会場内やミラノの拠点から操作され、ゲーム機「Xbox」のコントローラーで制御されることが多い"



https://www.jrhokkaido.co.jp/CM/Info/press/pdf/20260224_lavender_engine.pdf

 JR北海道で'25年11月に発生した、車両から発煙した事故の報告。

 エンジン燃料系のコントローラのハンダにクラックが発生し、振動で異常な制御値が出力され、過大な燃料が供給され、エンジンが過回転に至った。

 コントローラー基板の写真もある。こう言っちゃなんだけど、電子工作で作るような基板とほとんど同じだな。SMDは一切無し、金属皮膜抵抗だらけ、背の高い部品はポッティングしてあるのが高信頼向けっぽい感じではあるけど。部品が乗ってない場所に2.54mmグリッドのランドを大量に配置しているあたりとか、いかにも。

 しかし、光学顕微鏡にデジカメを載せたやつを「電子顕微鏡」かぁ。


 他の車両については振動を与えて異常値が出ないことを確認した。コントローラー自体が故障したことで保護が働かなくなっていたので、監視用の機材を追加で搭載する。

 ただ、この手の安全装置は、それ自身が故障していることを検出するのが難しいのが問題な気がする。「気づいたときにはもう遅い」みたいな。フェイルセーフデバイスが安全側に故障しているならまだマシで、危険側に故障していることを、事故が起きてから知った、という事例は多い(明らかにバイアスがあるので当然とはいえ)。

 JR北海道の状況を考えると、ただでさえ採算性の悪い北海道の旅客輸送で、安全装置を追加したこと等によるコストの増加に対して、経営陣(&国)からのコスト削減圧力を受けて、機材の点検・整備の手が抜かれて、結局また別のトラブル(or事故)を起こす、というような流れになるような気もする。

 安全性の向上に一番有力な手段は大規模な予算の投入なんだろう。それで設備の維持や更新を行ったり、コスト意識による圧力(「早く作業を終わらせなければ」という考え方等)を減らして確実に作業を行う。ただ、JR北海道の収益性でそういうことは不可能だろうけれども。

 不景気の何がだめって、人の命が安くなるのが一番だめな気がする。好景気でも各種コストが高騰して相対的に低コスト化圧力が強化されたら意味ないので、バランスの問題なんだろうけど。



 概要 | 鉄道 | 運輸安全委員会

 新幹線の分離の途中経過。

 不規則に開閉動作を繰り返す事象、素人考えだと配線が浮いてノイズが入ったとかを考えるけど、でも「1年以内に調査を終えることが困難であると見込まれる状況」ってことは、そんな簡単な話じゃないんだろうな。



 制御線の単純な接触不良みたいなトラブル、例えば金沢シーサイドラインの事故やボルチモアの貨物船事故みたいな場合だと、1線で1信号を伝送するような従来の方式(アンサーバックのない方式)が弱点になっている感じもする。これがデジタルデータバス(誤り検出や双方向通信)で通信していた場合は、故障検出のロジックが多層的に構成できて便利そう。1553的に冗長化してもトータルで見れば配線本数は減らせるかもしれないし、冗長系やルータで頑張れば断線しても短時間(遅延なく~百ms未満程度?)で復帰できるし。ただ、デジタルデータバスの場合は決定論的な通信が期待できないみたいな欠点もあるし、実際に万博の自動運転バスでそういう不具合があったわけで(本来は適切なFDIRを設計するべきだろって話なんだけど)。このあたりはSDVでどんどん規格を更新していくだろうし、10年20年後には大規模な公共交通機関にも取り入れられるんだろうけど(その時代にその手の輸送の新規設計作業が残っていれば)。



 ハンダのクラックの非破壊検査って、ぐぐるとX線検査みたいなのばっかり出てくるんだけど、原理的にかなり難しそうな気がするのだが、もう少し別のソリューションって無いんだろうか? 例えば超音波みたいなインピーダンス変化を見る手法であれば、割れた面を確実に計測できそうだが。とはいえ固体中で波長が数十um程度の波だから、滅茶苦茶な高周波数が必要になるだろうし、液体につけて波を入れなきゃいけないから、その液体から基板をどうやって保護するか、みたいな問題もありそう。最終的に、X線CTスキャンが一番手軽、って話になるんだろうか。

 どの手法にしろ、明らかな起点がある場合や、亀裂が進展するよりも短い周期で検査する以外には、実際にクラックが発生してからじゃないと検出できないから、結局は適切なFDIRで処理したうえで、BITSで故障箇所を検出する、みたいな感じになるんだろうか。航空宇宙分野だと冗長化で頑張る(札束で殴る)みたいな方向性も可能だけど、地上輸送系でそれは難しそうだな。新幹線くらいまでのスケールだと、適切に緊急停止できる余裕だけ確保しておく、くらいが落とし所か。



 オフィスとかで、イーサネットケーブルをJJコネクタで中継するとスループットが低下するのでNG、みたいな話、実際のところどれくらいの影響があるんだろう? ツイストがほどけたりクロストークやリターンロスが悪化するから、ともっともらしい説明が出てくるけど、でも通ってるのってデジタルデータですよ? 普通は信号が多少劣化したところで問題なく復調できるだろうし、それでも復調できないレベルまで信号が劣化しているなら「スループットが低下する」(ちょっと遅くなる)レベルじゃなくてもっと大きな影響(大量のパケットをロストするとか)が出てくると思うのだが(1000BASEはだいぶアナログっぽいけども)。

「コネクタが抜ける可能性が排除できないから」みたいな理由ならわからないでもないけど、第一義的にスループットの低下を挙げるのはちょっと信用ならないというか。あるいは「延長コネクタが燃えた」とかに関しては、そりゃPoEと組み合わせるやつが悪いだろ、という話だろうし、「後からPoEに流用するかもしれないから」というなら、それを理由にして禁止にしろ、という話だし。



 Apple Siliconみたいなダイをスタックするような半導体を最大限突き詰めた方向性のスマホ(モバイルデバイス)ってどこまで行けるんだろうか、という空想。ストレージもフラッシュメモリで半導体化されて久しいし、表示デバイスもマイクロLEDみたいに半導体で作りやすそうなものもあるし。カメラ(光学デバイス)だって半導体プロセスでメタマテリアルとか開口マスクを作るような感じで作れるだろうし。マイクやら多少のセンサは現状でもMEMSで半導体化されているし、スピーカーもイヤホンみたいな小電力のものはすでにMEMS化が提案されているし。アンテナみたいに高誘電体とか物理寸法が問題になるようなものは工夫が必要そうだけど。

 ディスプレイで発電するみたいなデバイスの提案もあるけど、現状の課題は電力が厳しそう。バッテリーだけ接着剤で貼り合わせて、必要に応じてアンテナも貼り付けて、それ以外は全部ワンチップ(チップレット)に収まったスマホ、みたいなものって作れないんだろうか。カスタマイズ性が最悪なのでよほど製造プロセスを最適化(高柔軟化)させないと厳しいだろうけど。

 設計支援からチップレットまで垂直統合したラピダスみたいなファブで「ワンチップスマホ」を製造できたら面白そうだけどな。細かいネジ等が大量に必要な組み立てコストがゼロだし、機械的な結合がほとんどないから故障リスクも低い。半導体が全部抱え込むことになるけど。


 ぐぐってみると、半導体固体電池というものが研究中らしい(2019年の東芝の特許など)。英語表記だとSemiconductor Solid Batteryで、略称はSSBになるのかな。

 LIBに比べて容量は低いが、単純なキャパシタよりは3桁以上大容量で、半導体プロセスで作れるので、ロジックのバックアップ電源(チップに電源を内蔵できる)等の用途が想定される、みたいな話。

 化学反応で貯蔵するのではなくて、電荷をそのまま貯める。電池というよりキャパシタに近い。現状スパッタリングで作っているけど、塗膜でも作れるらしい。効率や容量が改善すれば、エネルギー変換無しで純粋に電荷を貯めれるので面白そう。半導体全固体電池でも、フラッシュメモリと同じように寿命があるのかもしれないけど。

 化学電池は化学反応である程度安定な電圧が出る利点があるけど、キャパシタとかSSBは充電率と電圧が比例するので、後段で安定化させなきゃいけない手間がな。LIBもDCDCやPOLは必要にしても、電圧が安定していればDCDCの動作幅が狭くていいので、特定の比率の変換に特化して高効率な設計ができる。逆に、SSBは電池内部でのエネルギー変換(ロスや反応による発熱)が無い分で大電流充電ができるとか、充電率と電圧がリニアだから適当な電圧まで定電流で突っ込めばいいとか、過熱保護が必要ないとか、フューエルゲージが必要ないとか、エネルギー管理全体で見れば削れる機能もあるんだろうけど。

 ディスプレイやRF、あるいはスピーカーみたいに大エネルギーを扱う機能はちょっと懸念が残るけど、チップレット単体でスマートフォンを作るのは、原理的にはできそうな感じだな。発電だって光電変換とか熱電変換は半導体でいけるし。


 消費電力が少ないディスプレイと言うと、一番究極なのは反射式の液晶だろう。輝度をまるごと外部に依存する。ただ、完全固体化スマホを空想するうえで、表示デバイスが液晶というのはいただけない。E Inkも同様。有機ELもちょっとなー。最終的に、完全固体化を目標とすると、マイクロLEDしか残らなさそうだ。

 わずかなエネルギーを突っ込むだけで反射率をスイッチングできる半導体素子みたいなものって作れないんだろうか。光の反射が電子によるなら、電子的に反射特性を変えられる素子があっても良さそうだけどな。自由電子が大量に入っていれば高反射率、自由電子を吸い出せば低反射率、みたいな画素。

 Electroreflectance - Wikipedia

https://www.jstage.jst.go.jp/article/electrochemistry/67/11/67_1078/_pdf

 材料系の分野だと、電位を変調してロックインアンプで計測して反射率の変化を計測する、みたいな手法はあるっぽいな(下のPDFでは金を測定する例)。反射率で変調度が浅いから実用的なディスプレイとしては使いづらそうだが。全体が金メッキで文字盤も何も無い腕時計が、よく見ると薄く時刻が表示されている、みたいな時計は、作れなくはないか。いかにも成金趣味っぽいし、今の時代に売れるとも思えないけど。



 飛行機の飛行制御の資料。「B747は飛行中に4発のエンジンが停止しても、また、エンジンの1つが落下しても、いん石などの衝突などで外翼がとんだり落雷などで垂直尾翼が半分とれても、更には水平尾翼やエレベータの一部がなくなっても操縦可能であることが大きな特徴である」とか書いてあってすごい。エンジンが4個ついているから、油圧の冗長系がかなり多い。とはいえ、それでも全系統全損とか起こしてるわけだが(全系統の作動油を喪失することもあるし、エンジン4発全部止まることもあるし)。



 PCのメインモニタの液晶画面の謎のゴミ

 表からこすっても取れないし、表示内容を変えても消えないし。ピクセルのグリッドがあるから表示内容の問題か?とか思っていたら、なんか動いてやんの。これ、液晶パネルの奥、バックライトの手前の隙間に入り込んだ小さな虫らしい。これが「バグ」か……

 液晶パネルってちゃんと密閉されてるものだと思いこんでたけど、結構隙間あるんだな。バックライトを拡散させるために空間が必要、ということなんだろうか。空間があるところを密閉すると不都合だから、適当にベンチレーションを開けておいて、場合によってはそこに虫が入り込む、みたいなこともあり得るわけか。


***


 タイムコードジェネレータのやつ。

 いろいろ書き換えて、アナログ1系統、デジタル4系統から、比較的自由に信号を出せるようになった。デジタル系からアナログ信号(e.g. 振幅変調正弦波)を出せないのは当然としても、そういう部分を除けば、概ね好きに出せる。とはいえ、現状IRIGのマンチェスタは未実装だし、対応しているのはIRIG-A,B,H,JとJJY(40/60kHz)、それから1,10,100PPSと1,10,100kHzの正弦波、といったあたりだけども。JJYは振幅変調で出せるので、近くに(ほとんど容量結合させるような距離に)電波時計をおいておけば、それに時刻を反映させられる。

 計算リソース的には今の3倍くらいは出せそう。重いのはアナログ(1MB/sの波形をコピーしなきゃいけない)なので、デジタル側は空きピンを全部割り当ててもまだ余裕な気がする。

 アナログは、STM32F303K8を使う以上、ボルテージフォロアが1chしかないので、アナログは1系統しか出せない。HiZで良いならDACはもう1本使えるし、全chがHiZでいいならトータルで3ch使えるけど、とはいえメモリ容量(全12+4KiB)の制限があるから、現状ではアナログは1chしか出せない。

 バッファは現状1ms(1kHz) x2で確保しているけど、これを例えば2kHzにすればメモリ使用量は半分になるから、3chのADCでも余裕はある。ただ、計算がだいぶ面倒になるので、やりたくない。

 ということで、当面はアナログ1ch+デジタル4-8ch程度で固定の予定。ちゃんとしたIRIGタイムコードジェネレータとして市販するなら振幅変調は4chくらい無いと話にならないんだろうけど、そんな予定も無く。G474REなら4xLowZ+2xHighZの6chまでアナログ系を出せるはずだが、さすがにQFP64を自分で扱うのは面倒(Nucleoはピンアサインが悪くてアナログ系の制限が強い)。


***


 STM32L010F4で遊んでる。TSOP20で32MHz、Flash16K、RAM2K、という感じのスペック。CubeMX(HAL)で使おうとするといかんせんRAMの少なさがどうしようもない。QFP32(e.g.STM32F303K8)より一回り小さいので、32ピンまではいらないような簡単な用途には便利だし、SOP8みたいに極端な小パッケージ(電源2本とSWD2本以外にGPIOが4本しか使えない)に比べれば使いやすくはあるのだが。


 L101F4のUSART2のCTSを使って、外部トリガに同期してRS232メッセージを出力

 紫がTIM2_CH1のPWM信号、黄がUSART2_TX信号。124.70nsで標準偏差120psくらい(1Gspsなのでオシロ側のジッタも大きい)。もっと盛大にジッタ出るかと思ったけど、かなり安定しているな。両方とも同じクロックで動いているからかな。コアが32MHzで動いているので、4クロックで125nsになる。0.24%程度の差があるけど、これはHSIの精度(3.0V常温動作時1%)の範囲内なので、クロックの誤差が見えているものだと思う。右上のトリガレートも1.0027kHzで、1kHzに対して0.27%高い。値としては若干違うけど、精度としては良さそう(オシロ内蔵のクロックも精度あまり良くない)。


 USARTを適当な信号に同期して出力できることがわかったので、これを利用してIRIG Jシグナルジェネレータを作成。

 機能としては、1PPS、10PPS、IRIG J-xyを出力するだけのシンプルなもの。これは前回の多機能なものは機能が多すぎて動作確認が面倒という反省によるもの。現状、クロックの出力は無し。必要ならMCOで1MHzや8MHzは出せる。手持ち部品の関係で10MHzは出力不可(逓倍器や分周器が基本的に2^nしか設定できないので、10MHzを出したいなら10MHzや20MHzのCMOS出力発振器を外付けする必要があるが、手持ちに無い)。

 IRIG Jはとりあえず12,13,14,25,26,27,28,29に対応。2年ほど前に買って積んでいたサムホイールスイッチを1桁で使って、0-9までを選んで、0と1は無出力、2-4はIRIG J-1y、5-9はIRIG J-2yに割り当てている。


 ただ、今回はTIMでUARTのCTSをトリガしていて、出力モードの切替はUARTやTIMの設定をまとめて変えなきゃいけないので、過渡特性をきれいにしようとするとかなり面倒。

 F3で作っていたときは1MHzのサンプリングクロックでDACとGPIO(BSRR)にまとめてバッファを転送していた(IRIG JもソフトUARTで生成した)から、時刻は決定論的に決めることができていた。今回は10Hzのタイマで時刻を管理したうえで、UARTのバッファを書き換えたりする必要があるので、かなり面倒。


 ピンアサイン

 基本的にすべてのペリフェラルはユーザーコードから直接レジスタを叩いて初期設定やらいろいろやっている(CubeMXで初期化するとハンドルがデカくてRAMに余裕がない)。なのでペリフェラルに割り当てたGPIOは宣言だけしている(CubeMXで宣言しておけばそれ用の初期化コードは書いてくれるし、GPIOの初期化はスタック領域だけで完結する)。

 PA0はHSEに予約、PA9はMCOに予約、PB9はBOOT0に割り当てられているので予約。

 IRIG Jの出力にUSART2_TXを使用していて、このピンアサインだとLPUART1は使えない。ピンを整理すればもしかしたら使えるかも。自由に使えるUARTが無いので、時刻は起動時に1日0時0分0秒0からカウントを開始する以外に設定ができない(反映をIRIG Jで確認するなら、UART2_RXでIRIG Jと同じボーレートで設定することはできるはず)。


 最初はL010F4の20pinはちょっと大きいかな、L021D4(14pin)あたりがあると良さそうだな、と思っていたけど、20ピンでも結構ちょうどいい感じだな。



 STM32F1の汎用タイマはCNT==CCRxの場合にしかSR.CCxIFがセットされないはずなんだけど、STM32L0の汎用タイマはCNT==CCRxの場合だけでなく、ARR<CCRxの場合は常にSR.CCxIFがセットされるらしい。

 TIMよりも長い周期のPWMを出したい場合に、DMAでCCRに転送して、ピンの論理を固定したい場合に、ARR<CCRの値(例えば0xFFFF)を入れる事があるが、その場合にSRが期待した結果を返さなくなる。