ギアとベアリングの一体化で機械部品に新たな進化を、ジェイテクトの「JIGB」:人とくるまのテクノロジー展2025 - MONOist
片側だけ一体化しているけど、将来的に両方とも一体化するような感じになるんだろうか? 組み立てかなり面倒くさくなりそうだけど。それとも長周期の収縮みたいな成分をベアリングの部分で分離できるから一体化はできないのかな。
HAC、衛星使う新着陸方式「LPV」運用開始 国内初、悪天候時の就航率向上
2022年9月14日
HACによると、奥尻空港の滑走路に西北西側(RWY13)から進入する場合、従来の方式では視界不良時に滑走路が視認できない際に対地高度380フィート(約116メートル)までしか進入できなかったが、LPV進入であれば約30%低い257フィート(78メートル)まで進入できる。
(中略)
2025年以降はSBASの配信サービスを提供する準天頂衛星「みちびき」の運用機数が増えることで、「LPV200」と呼ばれる200フィートまで進入できるモードの実用化が見込まれており、ILSの「CAT I(カテゴリーI)」相当の運用が可能になる。
MSASが1機だと制限がつくのはSBAS衛星の故障を許容するためのものだと思うけど、2機に増えてもILS CAT I相当までしか使えないんだな。固定の電波をゴリゴリ出しておくだけでいいILSのロバスト性すごい。微弱なCDMAをコヒーレント積分して浮かせて相互にナノ秒精度で比較して連立方程式を解いて各種補正情報を加算しなきゃいけないGPSの複雑なことよ。まあ、わざわざ何百億もかけて静止衛星を複数機打上げてILS相当のシステムを作ろうとしてるんだから、ILSもちゃんと信頼性を維持して長期間稼働させようとするとめちゃくちゃコストかかるんだろうけど。
親が普段使いしている安物のアナログクォーツが、風防の水滴が目立つようになってきたとのことで、分解。裏蓋はかなり硬かったので、ナイフを突っ込んでガシガシやって開けた。べつに仕事でやるわけじゃないしね。多少の傷は気にしない。
ムーブメントの小さいことよ。ムーブメント自体はJAPAN S.EPSON CORP. NO JEWELS 1 Y121という表記。セイコーエプソン製のY121というモジュールで、宝石無し。
裏蓋にはパッキンがついているけど、竜頭の部分はスカスカな感じ。パッキン入れ忘れの不良個体? 実は入っているのかもしれないけど。汚れのつき方からしても、竜頭の穴から水分が入った感じっぽい気がする。
とりあえずシリカゲルと一緒にジップロックに一晩入れて、風防の水滴も消えたので、そのまま蓋を閉じて返却。
この腕時計自体は日本の会社のブランドらしい。一つの会社でウォッチとクロック合わせて12のブランドを持ってるんだそうだ。
Y121はぐぐると大量に出てくるから、セイコーが小さいムーブメントを大量生産して売って、小さい時計メーカーは量産されたムーブメントを買ってきて、フレームやバンドだけ自分で作って(orさらに買ってきた部品で)オリジナルの時計を売ってるんだろう。
久しぶりにCorsair iCUEを開いたら、「サービス開始に失敗しまいた」という微妙に残念なメッセージが表示されて、ダッシュボードが開けなかった。Corsair関係のサービスが停止していたけど、タスクマネージャーからは起動できず。インストールされているアプリの一覧からiCUEの変更で修復しても改善せず。一旦アンインストールしてから再インストールしたら無事ダッシュボードを開けるようになった。/* iCUE、相変わらずサポート欄には「不一致」があるな */
ダッシュボードを開いたら急にファンの音が大きくなった。温度に応じたフィードバックはPCアプリケーションレベルで実施しているらしいな。低い値でフィードバックが止まると冷却能力が不足した状態で停止する。
時々部屋の中にスズメバチが入っている。どこかに巣があるはずなんだけど、家の周りを歩いても極端にスズメバチが多いような場所も見当たらない。ここ数日は急に寒くなってあんまり飛んでないけど。
2015年に買ったICOMの特小トランシーバ、アンテナ部の樹脂モールドがボロボロに割れて中の金属がむき出しになってるんだけど、樹脂って10年でこんなにボロボロになる物なの? アマチュアとかデジ簡だとアンテナ交換ができるけど、特小は原則としてアンテナ交換は不可だからなぁ。このモデルは同じ本体でアンテナサイズの違う2機種がラインナップされていて、アンテナ自体はY字ネジ1本で固定してあるだけだから、交換部品さえあれば簡単に交換できるんだけど、買えるものでも無いだろうし。
ちょーっと特殊な機材を買いたいなーと思っていて下調べに軽くググってたら、別のモデルを買った人のブログを見つけて、曰く代理店に在庫があるらしいからショップに行って実際に触らせてもらった、とか書いてあって。田舎住みだと一か八かで通販で買わなきゃいけないところを、関東圏が行動範囲に入っている人は実際に触って判断できるの羨ましいなー。
札幌の某家電量販店も売り場面積半分くらいになって店員も減ってて、気軽に手にとって確かめるような場所じゃなくなったんだよなー。特殊な機材ならともかく、普段使いする家電ですら触ってから買うのが難しい北海道。さすがに誰でも買いそうな商品は店頭販売しているけど、とはいえそんなものは店頭で確認しなくたって必要なら買うだろ、というものもあるし。
Add additional Airspy R2 sampling rates. · AlexandreRouma/SDRPlusPlus · Discussion #335 · GitHub
Q.「Airspy R2では2.5Mspsと10Mspsが選択できるけど、それ以外のサンプリングレートはどうやったら設定できるの?」
A.「できない。あきらめろ(意訳)」
そっかぁ……
RTL2832Uも28.8Mspsでサンプリングして必要なサンプリングレートまでデシメーションしているわけだから、Airspy R2等も必要なら各自デシメーションしてねってことなんだろうけど。というかそもそも大抵の変調方式ってサンプリングレートにそこまで敏感じゃないだろうしな。地デジを始めとしたOFDMだとサンプリングレートが指定されているけど、そういうのは変調方式の中でもごく一部だろうし。
10Mspsから8.126984Mspsを得るには結構複雑なサンプリングレート変換が必要になる。一番シンプルに変換すると、10Msps x 256 / 315 = 8.126984Mspsだけど、2.56Gspsを経由するから計算コストがアホみたいに高い。ステージを増やして変換すれば最大spsは減らせるけど、とはいえ処理が増える。R2でフルセグを受信するのは大変そう。
Airspy R2ってSi5351CとかRTCとか、色々乗ってるはずなのに、APIからはそれらがほとんど見えないのが謎なんだよなー。
一応airspy_si5351c_writeみたいな関数はあるけど、それを使って何ができるのかはよくわからない。ダウンコンバート用のLOはR820T2のPLLを使うはずだから、Si5351CはRF周りとは独立して、おそらくLPC4370のADC駆動用を意図して乗せているはずなんだけど、サンプリングレートを設定することはできない。
RTCも、for packet time-stampingと書いてあるけど、それを使う方法がわからない。airspy_start_rxに渡すコールバック関数の引数で得られる構造体には、タイムスタンプみたいなデータは入っていないし、RTCに時刻を設定したりする関数も見当たらない。
当初の計画では将来的なファームウェアアップデートで可変サンプリングレートとかタイムスタンピングに対応する予定だったのかも。ただ、思ったよりも販売数が伸び悩んだので、ベーシックな処理に対応した初期のファームから変更されず……みたいな。さすがに「各自LPCのファームウェアを書いてね」みたいな無責任な話ではないと思うんだけど、現状ではそうでもしないと使えないはず。じゃあ自由度の高いサンプリングレート(Si5351C要求?)やタイムスタンピングを諦めるならAirspy Miniでも良いのか、というと、帯域幅がR2の10MHzに対して、Miniは6MHzまで(エイリアスフリーは9MHzと5MHz)だから、性能的にも若干ミニという。
R2のRTCは、基板上に乗っているわけではなさそうだから、おそらくLPCに内蔵したもののはず。だったら同じLPC4370を乗せたMiniだってRTCを内蔵しているはずだし、そもそもR2もMiniもR820T+LPC4370という同じ構成なんだから、Miniだって9MHzまで見えたっていいはず。MiniはR2に比べてR820T周りに実装してある部品の数が明らかに少ないから、そのあたりで特性の違いが出ているのかもしれないけど。
Miniの解説記事によると、5351が乗っていないことでADCの設定の自由度が低い(少なくとも発売当時は低かった)らしいから、R2のADCが5351に依存していることは間違いない。ということは、airspy_si5351c_writeでPLLの設定を書き換えれば、好きなサンプリングレートを設定できるという可能性はありそう? 今度はIFの帯域幅が問題になるけど、それはairspy_r820t_writeで自分で帯域幅を狭めればいいわけで。とはいえ、5351はある程度の計算をすれば素直にレジスタを設定すればいいだけのはずだけど、820の帯域幅ってどうやって設定するんだろうか。一応rtl-sdr.comにR820T2のレジスタ一覧は公開されているし、あるいは何らかのOSSを見ればそのあたりのコードもあるんだろうけど。
R2で、R820TとSi5351のレジスタ叩いて帯域幅/サンプリングレートを自由に設定できるのであれば、かなり良さそうだよなー。さらに言えば外部クロックとかPPS入出力(フレームに同期したパルスの出力、パルスに同期したフレームの開始点、とか)があればさらに便利なんだけど。5351CはXTALとCLKINを選択できるから、おそらく5351のレジスタを叩けば外部クロックに同期できるはず。CSACとかHMとか、そこまでいかなくてもOCXOとかMEMSとか、確度の高い発振器とか、あるいはSDR受信機に内蔵したTCXO(温度環境厳しめ)ではなく、もう少し安定した温度環境に置いたTCXOをソースにするということもできるし。
R2をGPSクロックにスレーブさせて使う、みたいな使用例はちらほら出てくるから、もしかしたらクロック入力端子に10MHzを入れれば、自動的に選択されるのかもしれないけど。CLKINにクロックが検出されればそれを使用して、検出されなければXTALを使う、みたいな設定なのかな。
Si5351のクロックをADCのトリガにしていて、完全にイベントドリブンで駆動して、DMA転送バッファがフルになった時点でUSB転送をトリガする、みたいな挙動になっていれば、外部からADCサンプリングレートを変えても問題ないだろうけど、実際にはADCのサンプリングレートを10Mspsとかに決め打ちして、周辺の動作もそれに応じた挙動にしている気もする。とすると、API(DLL)経由でレジスタを叩いたところで意味はないはず。どういう実装になっているかは実際に試してみないとわからないけど。ファームウェアのソースを読めばわかるだろ、という話ではあるけど、さすがにやりたくないというか、なんというか。
MiniやR2を買わない理由を探して買わずに済むようにしたいのに、現物を確認しないと除外できない項目が出てきて、結局買わざるを得ない流れになっている気がする。もっと普及した製品なら、軽くググればレジスタを叩いてる人も見つかるんだろうけど、そこまで普及しているわけでもなく。というかそこまで普及していればオフィシャルに対応してくれたんだろうけど。人柱になるべき? 10年も前に発売された製品の??
rtl_tcpからIQを受信して、IQの絶対値が閾値を超えたら、その前後を含めてWAVに保存する、キャリアスケルチみたいな機能を試しに実装中。
場当たり的に実装しているので機能を追加する事に無理が出てくる。まっさらなところから作り直すべきかも。
とりあえず、信号が入ったときだけ保存する機能は動きそうな気配なので、信号の頻度が低い帯域を連続的に記録するよりは、記録メディアに優しい。はず。実環境での動作確認ができてないんだよなー。とりあえず特小をOOKで出してそれっぽく動いているのは確認できるけど、実際の電波信号で良さそうなものが無い。
433あたりっていつでも違法無線がいるイメージだったけど、最近は減った? 433MHz2.4Mspsでスペクトルを表示していてもほとんど動きがない。
C#でループ内の任意の場所でbreak/continueを使えるような機能がほしいんだよなー。例えばvar bar=foo switch{0=>'A',1=>'B',_=>break};とか、var foo=flag1?1:flag2?2:continue;とか。現状だとif...elseで分岐するかswitchで分けるかしか無くて、ちょっとめんどい。switch文だとループを抜けることを目的としたbreakは不可能だし。三項演算子とかswitch式でbreak/continueが使えれば便利だと思うんだけどなー。
breakが任意の場所で使えるようになった場合、邪悪な使い方だと、StreamReader sr;StreamWriter sw;があったとして、while(true){sw.WriteLine(sr.ReadLine()??break);}みたいに書いて、null合体演算子でsr.ReadLine()の戻り値を評価して、第2オペランド(break)が評価されたらループを抜ける、みたいな応用もあり得る。breakは戻り値の型が違うけど、??throw new Exception()が許されるならbreak/continueも許されそうな気もする。今のところはwhile(true){var line=sr.ReadLine();if(line is null){break;}sw.WriteLine(line);}とかstring?line;while((line=sr.ReadLine())is not null){sw.WriteLine(line);}とか、変数を1個噛まさなきゃいけない。
最近のC#はwhile(!sr.EndOfStream){NotNullableFunc(sr.ReadLine());}みたいにすると警告が出るのが、しょうがないとはいえ、使いづらいのよなぁ。
T[]に対してAsSpan(range)があるのにSpan<T>に対してSlice(range)が無いのが地味に不便。Span<T>spanに対してspan[range]すればいいって話なんだろうけど、T[]arrayに対してarray[range]しちゃう怖さがある。
0 件のコメント:
コメントを投稿