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を読むだけで済む。タイマの本数が多い大型のマイコンならそういうやり方もあり。


0 件のコメント:

コメントを投稿